In this case while we try to extend ‘Case.Model’ we will get ‘Case.Model’ not found error so we can use this solution to solve those problems.
Javascript:
Entrypoint
define(
'JJ.CaseRecord.Domain'
, [
'Case.Create.View', 'Utils','Configuration'
]
, function (
CaseCreateView, Utils, Configuration
)
{
'use strict';
CaseCreateView.CaseCreateView.prototype.saveForm = function (e) {
try {
e.preventDefault();
var cases = Configuration.get('cases').defaultValues
var domainId = Configuration.get('DomainsTab').domainId
var object = {
cases: cases,
title: $('#title').val(),
category: $('#category').val(),
message: $('#message').val(),
domain: domainId,
email: $('#email').val(),
}
var url = Utils.getAbsoluteUrl(
getExtensionAssetsPath("services/Domain.Service.ss"))
$.post(url, JSON.stringify(object))
.done(function (data) {
if (data) {
$('.case-list-confirm-message').show();
setTimeout(() => {
Backbone.history.navigate('cases', { trigger: true });
$('.case-list-confirm-message').hide();
}, 800);
}
}
);
} catch (e) {
console.log(e);
}
}
return CaseCreateView
});
SuiteScript:
ServiceController:
define("JJ.CaseRecord.Domain.ServiceController", ["ServiceController", 'JJ.CaseRecord.Domain'], function(
ServiceController, DomainCaseRecordModel
) {
"use strict";
return ServiceController.extend({
name: "JJ.CaseRecord.Domain.ServiceController",
// The values in this object are the validation needed for the current service.
options: {
common: {}
},
get: function get() {
return JSON.stringify({
message: "Hello World I'm an Extension using a Service!"
});
},
post: function post() {
try{
console.error('data @ case record SC', this.data);
var response = DomainCaseRecordModel.create(nlapiGetUser() + '', this.data);
}
catch(e){
return JSON.stringify({
message: "Error"
})
}
return response;
},
put: function put() {
// not implemented
},
delete: function() {
// not implemented
}
});
});
Model
// JJ.CaseRecord.Domain.js
// Load all your starter dependencies in backend for your extension here
// ----------------
define('JJ.CaseRecord.Domain'
, [
'JJ.CaseRecord.Domain.ServiceController', 'SC.Model' , 'Utils', 'underscore'
]
, function (
DomainServiceController, SCModel, Utils, _
)
{
'use strict';
return SCModel.extend({
create: function(customerId, data) {
try {
console.error('data @ Case record after parse', data);
customerId = customerId || nlapiGetUser() + '';
const newCaseRecord = nlapiCreateRecord('supportcase');
data.title && newCaseRecord.setFieldValue('title', Utils.sanitizeString(data.title));
data.message &&
newCaseRecord.setFieldValue('incomingmessage', Utils.sanitizeString(data.message));
data.category && newCaseRecord.setFieldValue('category', data.category);
data.email && newCaseRecord.setFieldValue('email', data.email);
customerId && newCaseRecord.setFieldValue('company', customerId);
newCaseRecord.setFieldValue('custevent_jj_domain', data.domain)
const default_values = data.cases;
newCaseRecord.setFieldValue('status', default_values.statusStart.id); // Not Started
newCaseRecord.setFieldValue('origin', default_values.origin.id); // Web
return nlapiSubmitRecord(newCaseRecord);
} catch (e) {
console.error(e);
}
},
});
});