How to add domain name to case record while we get ‘Case.Model’ not found error in extending Case.Model suitescript.

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);
			}
        },
	});
});

Leave a comment

Your email address will not be published. Required fields are marked *