Jira code: UMAR-9
This script is for Setting buttons and their actions in the main job custom record.
Set ‘Select Vendors’, ‘Acknowledgement’, ‘ExpectingAdditionalInfo’, ‘Order Lost’, ‘Cancel / Unable to quote’, ‘Invoice’, ‘Credit Memo’, ‘Bills’, ‘Vendor Credit’, ‘Cancel’ in the Main Job record’s View mode. Also disabling the tabs and buttons on specific conditions. The client script will validate the data in the main job.
User Event Script
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
* @NModuleScope SameAccount
* @author Jobin and Jismi IT services LLP
*/
/**
* Script Description: This script for Setting buttons in main job
* setting a button 'Select Vendors', 'Acknowledgement', 'ExpectingAdditionalInfo',
* 'Order Lost', 'Cancel / Unable to quote', 'Invoice', 'Credit Memo', 'Bills',
* 'Vendor Credit', 'Cancel' in the Main Job record's View mode.
*/
/*******************************************************************************
* * UMAR WSR * *
* **************************************************************************
* Date:10/2/18
* Script name: NetU UE Main Job
* Script id: customscript_netu_ue_main_job
* Deployment id: customdeploy_netu_ue_main_job
* Applied to: MainJob Record
*
******************************************************************************/
define(['N/record','N/search','N/runtime'],
function(record,search,runtime) {
/*
* Function to search the sub job with required sub job status
*/
function searchForSubjob(recId,st) {
var flag=false;
var customrecord_netu_main_jobSearchObj = search.create({
type: "customrecord_netu_main_job",
filters: [
["internalidnumber","equalto",recId],
"AND",
["custrecord_netu_main_job.custrecord_netu_subjob_status","anyof",st]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC
}),
search.createColumn({
name: "name",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "internalid",
join: "CUSTRECORD_NETU_MAIN_JOB"
})
]
});
var searchResultCount = customrecord_netu_main_jobSearchObj.runPaged().count;
if(searchResultCount>0){
flag=true;
}
return flag;
}
/**
* Function definition to be triggered before record is loaded.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {string} scriptContext.type - Trigger type
* @param {Form} scriptContext.form - Current form
* @Since 2015.2
*/
function beforeLoad(scriptContext) {
try {
// jQuery('#custom88_wrapper').css('pointer-events', 'none');
var form = scriptContext.form;
var recId=scriptContext.newRecord.id;
//Getting the sub job status
var RecDtls = search.lookupFields({
type: 'customrecord_netu_sub_job',
id: recId,
columns: ['custrecord_netu_subjob_status']
});
var st=null;
if(RecDtls.custrecord_netu_subjob_status!=null){
st=RecDtls.custrecord_netu_subjob_status[0].value;
}
if(scriptContext.type=='view'){
form.clientScriptFileId = 1605;
var selcetVendors=form.addButton({
id: 'custpage_vendor_selection',
label: 'Select Vendors',
functionName:'openSelectVendorForm'
});
//Acknowledgement button
form.addButton({
id:'custpage_acknowledgement_btn',
label:'Acknowledgement',
functionName:'sendEmail'
});
//Expecting Additional Info button
// form.addButton({
// id:'custpage_additionalinfo_btn',
// label:'Expecting Additional Info',
// functionName:'additionalInfo'
// });
if((st>=17) && (st!=22) && (st!=23))
{
//Invoice button
var createInvoice=form.addButton({
id:'custpage_create_invoice',
label:'Invoice',
functionName:'createinvoices'
});
//Credit Memo button
var creditMemo=form.addButton({
id:'custpage_credit_memo',
label:'Credit Memo',
functionName:'creditmemo'
});
//Bills button
var enterBills=form.addButton({
id:'custpage_bill',
label:'Bills',
functionName:'enterbills'
});
//Vendor Credits button
var vendorCredit=form.addButton({
id:'custpage_vendor_credit',
label:'Vendor Credits',
functionName:'vendercredit'
});
}
//Cancel Job button
var cancel_button=form.addButton({
id:'custpage_cancel_job',
label:'Cancel',
functionName:'cancel'
});
var recordid=scriptContext.newRecord.id;
var main_job_search = search.create({
type: "customrecord_netu_main_job",
filters: [
["internalidnumber","equalto",recordid]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC
}),
"custrecord_netu_vessel",
search.createColumn({
name: "name",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "internalid",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "custrecord_netu_subjob_status",
join: "CUSTRECORD_NETU_MAIN_JOB"
})
]
});
var result = main_job_search.run().getRange({
start : 0,
end : 1000
});
// var flag=true;
var resultLength=result.length;
if(resultLength>0){
for(var i=0;i<resultLength;i++){
var subjob_status=result[i].getValue({
name: "custrecord_netu_subjob_status",
join: "CUSTRECORD_NETU_MAIN_JOB"
});
if((subjob_status>=11) && (subjob_status!=22)){
flag=false;
}
}
}
var recId=scriptContext.newRecord.id;
log.debug({
title: 'recId',
details: recId
});
var sta = search.lookupFields({
type: 'customrecord_netu_main_job',
id: recId,
columns: ['custrecord_netu_job_status']
});
var status=sta.custrecord_netu_job_status[0].value;
log.debug({
title: 'status',
details: status
});
//order lost button
var orderLostBtn=form.addButton({
id:'custpage_order_lost_btn',
label:'Order Lost',
functionName:'ChangeStatustoLostOrder'
});
var userRole = runtime.getCurrentUser().role;
log.debug("Internal ID of current user role: " + userRole);
//disabling the sub tabs if the status is order lost or cancel and Not Administrator Role.
if(((status==5)||(status==4)) && (userRole != 3) ){
var jobField = form.addField({
id:'custpage_jobid',
type: 'INLINEHTML',
label: 'Job Id'
});
//var html = "<script>console.log(jQuery('.bdtabblock'));jQuery( document ).ready(function() { jQuery('.bdtabblock').css('pointer-events', 'none'); });alert('af')</script>"
var html = "<script>jQuery( document ).ready(function() { jQuery('#custom88_wrapper').css('pointer-events', 'none'); });" +
"jQuery( document ).ready(function() { jQuery('#custom90_wrapper').css('pointer-events', 'none'); });" +
"jQuery( document ).ready(function() { jQuery('#main_form').css('pointer-events', 'none'); });" +
"jQuery( document ).ready(function() { jQuery('.subtabblock').css('pointer-events', 'none'); });" +
"jQuery( document ).ready(function() { jQuery('.uir-secondary-buttons').css('pointer-events', 'none'); });" +
"jQuery( document ).ready(function() { jQuery('#custom79_wrapper').css('pointer-events', 'none'); });" +
"jQuery( document ).ready(function() { jQuery('#div_CREATENEW_d1').css('pointer-events', 'none'); });" +
"jQuery( document ).ready(function() { jQuery('#edit').remove(); });" +
"jQuery( document ).ready(function() { jQuery('#secondaryedit').remove(); });" +
"jQuery( document ).ready(function() { jQuery('#custom_wrapper').css('pointer-events', 'none'); });" +
"jQuery( document ).ready(function() { jQuery('#div_ACTIONMENU_d1').css('pointer-events', 'none'); });" +
"jQuery( document ).ready(function() { jQuery('#div_secondaryCREATENEW_d1').css('pointer-events', 'none'); });" +
"jQuery( document ).ready(function() { jQuery('#div_secondaryACTIONMENU_d1').css('pointer-events', 'none'); });</script>";
//.ac_div
jobField.defaultValue=html;
subtabblock
}
//unable to quote button
var unableQuoteBtn=form.addButton({
id:'custpage_cancel_unable_btn',
label:'Cancel / Unable to quote',
functionName:'Opensuitelet'
});
if(status==5 || status==4)
{
selcetVendors.isDisabled = true;
unableQuoteBtn.isDisabled = true;
createInvoice.isDisabled = true;
creditMemo.isDisabled = true;
enterBills.isDisabled = true;
vendorCredit.isDisabled = true;
cancel_button.isDisabled = true;
orderLostBtn.isDisabled = true;
var jobField1 = form.addField({
id:'custpage_jobid1',
type: 'INLINEHTML',
label: 'Job Id'
});
var html = "<script>jQuery( document ).ready(function() { jQuery('#tr_custpageworkflow15').css('opacity', '0.5').css('pointer-events', 'none'); });"+
"jQuery( document ).ready(function() { jQuery('#tr_secondarycustpageworkflow15').css('opacity', '0.5').css('pointer-events', 'none'); });</script>";
jobField1.defaultValue=html;
}
}
} catch (e) {
log.debug({
title: 'error',
details: e.message
});
}
}
/**
* Function definition to be triggered before record is loaded.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {Record} scriptContext.oldRecord - Old record
* @param {string} scriptContext.type - Trigger type
* @Since 2015.2
*/
function afterSubmit(scriptContext) {
try {
if(scriptContext.type=='create'){
var id=scriptContext.newRecord.id;
var jobName = search.lookupFields({
type: 'customrecord_netu_main_job',
id: id,
columns: ['custrecord_netu_subsidiary']
});
log.debug({
title: 'jobName',
details: jobName.name
});
var subsidiary=null;
if(jobName.custrecord_netu_subsidiary[0] != null){
subsidiary=jobName.custrecord_netu_subsidiary[0].value;
}
//Fetching values from parameter table
var customrecord_netu_parameter_tableSearchObj = search.create({
type: "customrecord_netu_parameter_table",
filters:
[
["custrecord_netu_subsidiary_par","anyof",subsidiary]
],
columns:
[
search.createColumn({name: "custrecord_netu_subsidiary_par", label: "Subsidiary"}),
search.createColumn({name: "custrecord_netu_main_job_folder", label: "Main Job Folder"}),
search.createColumn({name: "custrecord_netu_send_requisition_folder", label: "Send Requisition Folder"})
]
});
var searchResultCountPara = customrecord_netu_parameter_tableSearchObj.runPaged().count;
log.debug("customrecord_netu_parameter_tableSearchObj",customrecord_netu_parameter_tableSearchObj);
if(searchResultCountPara>0) {
var pararmeterResult = customrecord_netu_parameter_tableSearchObj.run().getRange({
start:0,
end:1
});
log.debug("pararmeterResult",pararmeterResult[0]);
mainjobFold= pararmeterResult[0].getValue({
name: "custrecord_netu_main_job_folder"
});
sendreqFold= pararmeterResult[0].getValue({
name: "custrecord_netu_send_requisition_folder"
});
//console.log("ENCODED",encodeURIComponent(mainjobFold));
var mainjobFolder = mainjobFold.split("\\");
var mainjobFo = mainjobFolder[0];
log.debug('mainjobFolder',mainjobFo);
var customerRequestFolder = sendreqFold.split("\\");
var reqFol_leg=customerRequestFolder.length;
log.debug('reqFol_leg',customerRequestFolder[reqFol_leg-1]);
}
//Creating Mainjob folder
var folder = record.create({
type: record.Type.FOLDER,
isDynamic: true
});
folder.setText({
fieldId: 'parent',
text: mainjobFo,
ignoreFieldChange: true
});
folder.setValue({
fieldId: 'name',
value: id+''
});
var folId=folder.save();
log.debug({
title: 'Folder Created',
details: folId
});
//Creating Customer Request folder
var folder = record.create({
type: record.Type.FOLDER,
isDynamic: true
});
folder.setValue({
fieldId: 'parent',
value: folId,
ignoreFieldChange: true
});
folder.setValue({
fieldId: 'name',
value: customerRequestFolder[reqFol_leg-1]
});
var folId=folder.save();
log.debug({
title: 'Folder Created',
details: folId
});
}
} catch (e) {
log.debug({
title: 'error',
details: e.message
});
}
}
return {
beforeLoad: beforeLoad,
searchForSubjob: searchForSubjob,
afterSubmit: afterSubmit
};
});
Client Script
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
/**
* Script Description:
* Customer Reference validation
* Customer Second Reference validation
* Open select vender form
* Open an Email Widget.
* Open a sub job selection form
*/
/*******************************************************************************
* * UMAR WSR * *
* **************************************************************************
* Date:9/2/18
* Script name: NetU CS Main Job
* Script id: customscript_netu_cs_main_job
* Deployment id: customdeploy_netu_cs_main_job
* Applied to: Main Job
* Revised @ 29 May 18 //Customer reference validation(Based on Customer and vessel)
*
******************************************************************************/
define(['N/currentRecord', 'N/record', 'N/url', 'N/https', 'N/search', 'N/ui/dialog', 'N/error', 'N/runtime'],
function(currentRecord, record, url, https, search, dialog, e, runtime) {
/**
* Function to be executed after page is initialized.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.mode - The mode in which the record is being accessed (create, copy, or edit)
*
* @since 2015.2
*/
function pageInit(scriptContext) {
try {
var currentReco = scriptContext.currentRecord;
var status = currentReco.getValue({
fieldId: 'custrecord_netu_job_status'
});
var user = runtime.getCurrentUser().id;
console.log('status', user);
if (status == 5) {
jQuery('#custom88_wrapper').css('pointer-events', 'none');
}
var empDep = search.lookupFields({
type: record.Type.EMPLOYEE,
id: user,
columns: ['department']
});
console.log('user',user+','+empDep);
if (empDep.department[0].value != null) {
var departmnt = empDep.department[0].value;
currentReco.setValue({
fieldId: 'custrecord_netu_department',
value: departmnt,
ignoreFieldChange: true
});
}
} catch (e) {
console.log(e.message);
}
}
/**
* Function to be executed when field is changed.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.sublistId - Sublist name
* @param {string} scriptContext.fieldId - Field name
* @param {number} scriptContext.lineNum - Line number. Will be undefined if not a sublist or matrix field
* @param {number} scriptContext.columnNum - Line number. Will be undefined if not a matrix field
*
* @since 2015.2
*/
/*
* JJ Starts
*/
function fieldChanged(scriptContext) {
try {
var currentRecord = scriptContext.currentRecord;
var recId = currentRecord.id;
var fieldId = scriptContext.fieldId;
//Setting the Subsidiary and Location when selecting a customer
if (fieldId == 'custrecord_netu_customer') {
var customerId = currentRecord.getValue({
fieldId: fieldId
});
console.log("customerId", customerId);
//Getting the subsidiary of customer
var customerDtls = search.lookupFields({
type: search.Type.CUSTOMER,
id: customerId,
columns: ['subsidiary', 'custentity_netu_location']
});
var subsidiaryCS = customerDtls.subsidiary[0].value;
console.log("subsidiaryCS", subsidiaryCS);
var locationCS = null;
if (customerDtls.custentity_netu_location[0] != null) {
locationCS = customerDtls.custentity_netu_location[0].value;
}
console.log("locationCS", locationCS);
//Setting the subsidiary
currentRecord.setValue({
fieldId: 'custrecord_netu_subsidiary',
value: subsidiaryCS
});
//Setting the subsidiary
currentRecord.setValue({
fieldId: 'custrecord_netu_location',
value: locationCS
});
}
//Setting the superintended,cust contact, cust contact cc
if (fieldId == 'custrecord_netu_vessel') {
var vesselId = currentRecord.getValue({
fieldId: fieldId
});
var superint = null;
var custCont = null;
var custContCC = null;
//Getting the subsidiary of customer
var vesselDtls = search.lookupFields({
type: 'customrecord_netu_vessel',
id: vesselId,
columns: ['custrecord_netu_vessel_superintended', 'custrecord_netu_vessel_customer_contact','custrecord_netu_vessel_cust_contact_cc']
});
if (vesselDtls.custrecord_netu_vessel_superintended[0] != null) {
superint = vesselDtls.custrecord_netu_vessel_superintended[0].value;
}
if (vesselDtls.custrecord_netu_vessel_customer_contact[0] != null) {
custCont = vesselDtls.custrecord_netu_vessel_customer_contact[0].value;
}
if (vesselDtls.custrecord_netu_vessel_cust_contact_cc[0] != null) {
custContCC = vesselDtls.custrecord_netu_vessel_cust_contact_cc[0].value;
}
//Setting the superintended
currentRecord.setValue({
fieldId: 'custrecord_netu_mainjob_customer_superin',
value: superint
});
//Setting the customer contact
currentRecord.setValue({
fieldId: 'custrecord_netu_mainjob_customer_contact',
value: custCont
});
//Setting the customer contact cc
currentRecord.setValue({
fieldId: 'custrecord_netu_mainjob_cust_contact_cc',
value: custContCC
});
}
if (fieldId == 'custrecord_netu_department') {
var departmentId = currentRecord.getValue({
fieldId: 'custrecord_netu_department'
});
var departmentName = currentRecord.getText({
fieldId: 'custrecord_netu_department'
});
console.log("departmentId", departmentId);
if (departmentId != "") {
var subsidiaryId = currentRecord.getValue({
fieldId: 'custrecord_netu_subsidiary'
});
var subsidiaryName = currentRecord.getText({
fieldId: 'custrecord_netu_subsidiary'
});
var departmentSearchObj = search.create({
type: "department",
filters: [
["internalid", "anyof", departmentId],
"AND",
["subsidiary", "anyof", subsidiaryId]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
}),
search.createColumn({ name: "internalid", label: "Internal ID" })
]
});
var searchResultCount = departmentSearchObj.runPaged().count;
console.log("departmentSearchObj result count", searchResultCount);
if (searchResultCount <= 0) {
alert('Invalid department "' + departmentName + '" for subsidiary "' + subsidiaryName + '"');
currentRecord.setValue({
fieldId: 'custrecord_netu_department',
value: ""
});
}
}
}
if (fieldId == 'custrecord_netu_job_class') {
var classId = currentRecord.getValue({
fieldId: 'custrecord_netu_job_class'
});
var className = currentRecord.getText({
fieldId: 'custrecord_netu_job_class'
});
console.log("classId", classId);
if (classId != "") {
var subsidiaryId = currentRecord.getValue({
fieldId: 'custrecord_netu_subsidiary'
});
var subsidiaryName = currentRecord.getText({
fieldId: 'custrecord_netu_subsidiary'
});
var classificationSearchObj = search.create({
type: "classification",
filters: [
["internalidnumber", "equalto", classId],
"AND",
["subsidiary", "anyof", subsidiaryId]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
})
]
});
var searchResultCount1 = classificationSearchObj.runPaged().count;
console.log("classificationSearchObj result count", searchResultCount1);
if (searchResultCount1 <= 0) {
alert('Invalid class "' + className + '" for subsidiary "' + subsidiaryName + '"');
currentRecord.setValue({
fieldId: 'custrecord_netu_job_class',
value: ""
});
}
}
}
} catch (e) {
console.log(e.message);
}
}
function validateField(scriptContext) {
try {
var currentRecord = scriptContext.currentRecord;
var recId = currentRecord.id;
if (scriptContext.fieldId == 'custrecord_netu_customer_reference') {
var customerRef = currentRecord.getValue({
fieldId: 'custrecord_netu_customer_reference'
});
var customerSecdRef = currentRecord.getValue({
fieldId: 'custrecord_netu_2nd_reference'
});
customerRef = customerRef.replace(/(^\s*)|(\s*$)/gi, "");
customerRef = customerRef.replace(/[ ]{2,}/gi, " ");
customerRef = customerRef.replace(/\n /, "\n");
if (customerSecdRef == '' || customerSecdRef == null || customerSecdRef == undefined) {} else {
if (customerRef.toUpperCase() == customerSecdRef.toUpperCase()) {
console.log('customerRef.toUppe' + ',' + customerRef.toUpperCase() + ',' + customerSecdRef.toUpperCase());
alert('Customer Reference Already Exists in current record');
currentRecord.setValue({
fieldId: 'custrecord_netu_customer_reference',
value: null,
ignoreFieldChange: false
});
return false;
}
}
var customer = currentRecord.getValue({
fieldId: 'custrecord_netu_customer'
});
var vessel = currentRecord.getValue({
fieldId: 'custrecord_netu_vessel'
});
var vesselNames = getJobsWithCustomerReference(customerRef, recId, customer, vessel);
console.log('vesselNames',vesselNames);
if (vesselNames == '' || vesselNames == null || vesselNames == undefined || vesselNames == 'false') {} else {
alert('Customer Reference Already Exists in '+vesselNames);
currentRecord.setValue({
fieldId: 'custrecord_netu_customer_reference',
value: null,
ignoreFieldChange: true
});
return false;
}
}
if (scriptContext.fieldId == 'custrecord_netu_2nd_reference') {
var customerRefN = currentRecord.getValue({
fieldId: 'custrecord_netu_customer_reference'
});
var customerSecdRefN = currentRecord.getValue({
fieldId: 'custrecord_netu_2nd_reference'
});
customerSecdRefN = customerSecdRefN.replace(/(^\s*)|(\s*$)/gi, "");
customerSecdRefN = customerSecdRefN.replace(/[ ]{2,}/gi, " ");
customerSecdRefN = customerSecdRefN.replace(/\n /, "\n");
if (customerRefN == '' || customerRefN == null || customerRefN == undefined) {} else {
if (customerSecdRefN.toUpperCase() == customerRefN.toUpperCase()) {
console.log('customerRef.toUppe' + ',' + customerSecdRefN.toUpperCase() + ',' + customerRefN.toUpperCase());
alert('Customer Reference Already Exists in current record');
currentRecord.setValue({
fieldId: 'custrecord_netu_2nd_reference',
value: null,
ignoreFieldChange: true
});
return false;
}
}
var customer = currentRecord.getValue({
fieldId: 'custrecord_netu_customer'
});
var vessel = currentRecord.getValue({
fieldId: 'custrecord_netu_vessel'
});
var vesselNames = getJobsWithCustomerReference(customerSecdRefN, recId, customer, vessel);
/*console.log('vesselNames');*/
console.log('vesselNames',vesselNames);
if (vesselNames == '' || vesselNames == null || vesselNames == undefined || vesselNames == 'false') {} else {
alert('Customer Reference Already Exists in '+vesselNames);
currentRecord.setValue({
fieldId: 'custrecord_netu_2nd_reference',
value: null,
ignoreFieldChange: true
});
return false;
}
}
return true;
} catch (e) {
console.log(e.message);
}
}
/*
* Function to open the Select vendor form
*/
function openSelectVendorForm() {
try {
var currRecord = currentRecord.get();
var params = {};
params['custpage_jobid'] = currRecord.id;
var vendorSelectUrl = url.resolveScript({
scriptId: 'customscript_netu_vendor_select',
deploymentId: 'customdeploy_netu_vendor_select',
returnExternalUrl: false,
params: params
});
window.location = vendorSelectUrl;
} catch (e) {
console.log(e.message);
}
}
function createMainJobParams() {
try {
var currRecord = currentRecord.get();
var fieldArray = ['name', 'custrecord_netu_customer', 'custrecord_netu_customer_reference', 'custrecord_netu_vessel',
'custrecord_netu_job_class', 'custrecord_netu_loa', 'custrecord_netu_beam'
];
var filterObj = {};
var fieldArrayLength = fieldArray.length;
for (var i = 0; i < fieldArrayLength; i++) {
var fieldId = fieldArray[i];
filterObj[fieldId] = currRecord.getValue({
fieldId: fieldId
});
}
console.log(filterObj);
return JSON.stringify(filterObj);
} catch (e) {
console.log(e.message);
}
}
/**
* Validation function to be executed when record is saved.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @returns {boolean} Return true if record is valid
*
* @since 2015.2
*/
function saveRecord(scriptContext) {
try {
var currRecord = scriptContext.currentRecord;
var recId = currRecord.id;
var classNm = currRecord.getValue({
fieldId: 'custrecord_netu_job_class'
});
var flag = true;
if ((classNm == "") || (classNm == null) || (classNm == undefined)) {
flag = false;
alert('Class is missing');
}
return flag;
} catch (e) {
console.log(e.message);
}
}
/*
* Function to change sub-job status to 'Expecting Additional Information'
* Opening an Email widget
*/
function additionalInfo() {
try {
//Getting current record id
var currentRec = currentRecord.get();
console.log(currentRec);
var id = currentRec.id;
console.log(id);
record.submitFields({
type: 'customrecord_netu_main_job',
id: id,
values: {
custrecord_netu_job_status: '2'
},
options: {
enableSourcing: false,
ignoreMandatoryFields: true
}
});
window.location.reload(true);
//Setting the url of the suitelet script
var output = url.resolveScript({
scriptId: 'customscript_sl_emailtemplate',
deploymentId: 'customdeploy_sl_emailtemplate',
returnExternalUrl: false,
}) + '&additionalinfo=0&recId=' + id;
//Opens url on a new Window
newWindow = window.open(output, 'netsuite', 'menubar=1,resizable=1,width=740,height=800');
} catch (e) {
console.log(e.message);
}
}
//For checking customer reference and customer second reference are already exist or not in any main job,subjob,quote
function getJobsWithCustomerReference(customerRef, recId, customer, vessel) {
try {
//console.log('customerRef, recId, customer, vessel',customerRef+', '+recId+', '+customer+', '+vessel);
var isExists = false;
// var isExistsFlag=0;
if (recId == '') {
recId = 0;
}
if (customer == '') {
customer = 0;
}
if (vessel == '') {
vessel = 0;
}
//Check for Existence only if the Reference field is not empty
if (customerRef != '') {
var jobSearch = search.create({
type: "customrecord_netu_main_job",
filters: [
[
["internalidnumber", "notequalto", recId], "AND", ["custrecord_netu_customer", "anyof", customer], "AND", ["custrecord_netu_vessel", "anyof", vessel]
],
"AND",
[
["custrecord_netu_customer_reference", "is", customerRef], "OR", ["custrecord_netu_2nd_reference", "is", customerRef]
]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "ID"
}),
search.createColumn({ name: "custrecord_netu_vessel", label: "Vessel" })
/*,
search.createColumn({name: "custrecord_netu_subjob_vendor", label: "Vendor"})*/
]
});
var jobResults = jobSearch.run().getRange({
start: 0,
end: 10
});
isExists = false;
if (jobResults != null) {
if (jobResults.length > 0) {
var ref=jobResults[0].getValue({
name: "name"
});
ref='Main Job# '+ref;
isExists = true;
return ref;
}
}
var jobSearch = search.create({
type: "customrecord_netu_sub_job",
filters: [
[
["custrecord_netu_subjob_customer", "anyof", customer], "AND", ["custrecord_netu_subjob_vessel", "anyof", vessel]
],
"AND",
["custrecord_netu_main_job.internalidnumber","notequalto",recId],
"AND",
[
["custrecord_netu_subjob_customer_ref", "is", customerRef], "OR", ["custrecord_netu_subjob_cust_2nd_ref", "is", customerRef]
]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "ID"
}),
search.createColumn({ name: "custrecord_netu_subjob_vessel", label: "Vessel" })
/*,
search.createColumn({name: "custrecord_netu_subjob_vendor", label: "Vendor"})*/
]
});
var jobResults = jobSearch.run().getRange({
start: 0,
end: 10
});
isExists = false;
if (jobResults != null) {
if (jobResults.length > 0) {
var ref=jobResults[0].getValue({
name: "name"
});
ref='Sub Job# '+ref;
isExists = true;
return ref;
}
}
var jobSearch = search.create({
type: "estimate",
filters: [
["type", "anyof", "Estimate"],
"AND",
["custbody_netu_customer", "anyof", customer],
"AND",
["custbody_netu_vessel", "anyof", vessel],
"AND",
["custbody_netu_main_job.internalidnumber","notequalto",recId],
"AND",
[
["custbody_netu_customer_reference", "is", customerRef],
"OR",
["custbody_netu_customer_2nd_ref", "is", customerRef]
]
],
columns: [
search.createColumn({
name: "tranid",
sort: search.Sort.ASC,
label: "ID"
}),
search.createColumn({ name: "custbody_netu_vessel", label: "Vessel" }),
//search.createColumn({name: "custrecord_netu_subjob_vendor", label: "Vendor"})
]
});
var jobResults = jobSearch.run().getRange({
start: 0,
end: 10
});
console.log('jobResults', jobResults.length);
isExists = false;
if (jobResults != null) {
console.log('in');
if (jobResults.length > 0) {
var ref=jobResults[0].getValue({
name: "tranid"
});
ref='Quotation# '+ref;
isExist = true;
return ref;
}
}
}
return isExists;
} catch (e) {
console.log(e.message);
}
}
/*
* Function to Opening an Email widget on Acknowledgement button click
*/
function sendEmail() {
console.log('gettfunction');
try {
//Getting current record id
var currentRec = currentRecord.get();
console.log(currentRec);
var id = currentRec.id;
console.log(id);
var customerContact = null;
var customerContactCCEmail = null;
var mainJobLookupFields = search.lookupFields({
type: 'customrecord_netu_main_job',
id: id,
columns: ['custrecord_netu_mainjob_customer_contact',
'custrecord_netu_mainjob_cust_contact_cc'
]
});
if (mainJobLookupFields.custrecord_netu_mainjob_customer_contact[0] != null) {
customerContact = mainJobLookupFields.custrecord_netu_mainjob_customer_contact[0].value;
}
if (mainJobLookupFields.custrecord_netu_mainjob_cust_contact_cc[0] != null) {
var customerContactCC = mainJobLookupFields.custrecord_netu_mainjob_cust_contact_cc[0].value;
console.log(customerContactCC);
if (customerContactCC) {
var customerContactCCLookupFields = search.lookupFields({
type: search.Type.CONTACT,
id: customerContactCC,
columns: ['email']
});
if (customerContactCCLookupFields.email)
customerContactCCEmail = customerContactCCLookupFields.email;
}
}
//Setting the url of the suitelet script
var output = url.resolveScript({
scriptId: 'customscript_netu_sl_send_req_email',
deploymentId: 'customdeploy_netu_sl_send_req_email',
returnExternalUrl: false,
}) + '&recId=' + id + '&emailId=' + customerContact + '&emailIdCC=' + customerContactCCEmail + '&temp=7' + '&typename=1';
//Opens url on a new Window
//newWindow = window.open('https://system.eu2.netsuite.com/app/crm/common/crmmessage.nl?entitytype=custjob&entity=124&l=T&templatetype=EMAIL');
newWindow = window.open(output, 'netsuite', 'menubar=1,resizable=1,width=740,height=800');
var timer = setInterval(function() {
if (newWindow.closed) {
// console.log('Reload');
clearInterval(timer);
window.location.reload(true);
}
}, 1000);
} catch (e) {
console.log(e.message);
}
}
/*
* Function to open a suitelet for sub job selection
*/
function Opensuitelet() {
try {
//Getting current record id
var currentRec = currentRecord.get();
var id = currentRec.id;
console.log('id', id);
//Fetching the sub-jobs in a main job using a Main Job Search
var customrecord_netu_main_jobSearchObj = search.create({
type: "customrecord_netu_main_job",
filters: [
["internalidnumber", "equalto", id],
"AND",
["custrecord_netu_main_job.internalidnumber", "isnotempty", ""],
"AND",
["custrecord_netu_main_job.custrecord_netu_subjob_status", "noneof", "20", "4"]
],
columns: [
search.createColumn({
name: "name",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "internalid",
join: "CUSTRECORD_NETU_MAIN_JOB",
sort: search.Sort.ASC
}),
]
});
var searchResultCount = customrecord_netu_main_jobSearchObj.runPaged().count;
if (searchResultCount <= 0) {
alert('No Subjob available for "Cancel" Or "Unable To Quote"');
return false;
}
//Setting the url of the suitelet script
var output = url.resolveScript({
scriptId: 'customscript_netu_sl_subjob_select',
deploymentId: 'customdeploy_netu_sl_subjob_select',
returnExternalUrl: false,
}) + '&recId=' + id + '&type=1';
//Opens url on a new Window
newWindow = window.open(output, 'netsuite', 'menubar=1,resizable=1,width=1200,height=800');
} catch (e) {
console.log(e.message);
}
}
/*
* Function to close opened suitelet for sub job selection
*/
function Closesuitelet() {
try {
//Close suitelet Window
newWindow = window.close();
} catch (e) {
console.log(e.message);
}
}
/*
* Function to change the sub job status in all related records
*/
function changeStatus(subjobId, st) {
try {
//Setting the url of the suitelet script
var output = url.resolveScript({
scriptId: 'customscript_netu_sl_change_status',
deploymentId: 'customdeploy_netu_sl_change_status',
returnExternalUrl: false,
}) + '&subJobId=' + subjobId + '&statusNo=' + st;
console.log('SL:', output);
https.get({
url: output
});
} catch (e) {
console.log(e.message);
}
}
/*
* Function to change selected sub-job status to Cancelled
*/
function ChangeToCancel() {
try {
var st = '20';
cancelorunabletoquote(st);
} catch (e) {
console.log(e.message);
}
}
/*
* Function to change selected sub-job status to Unable To Quote
*/
function ChangeToQuoteUnable() {
try {
var sta = '4';
cancelorunabletoquote(sta);
} catch (e) {
console.log(e.message);
}
}
function cancelorunabletoquote(st) {
try {
document.getElementById("custpage_unable_to_quote").disabled = true;
document.getElementById("custpage_cancel").disabled = true;
//document.getElementById("custpage_load_img").style.visibility ='visible';
var subjobRecord = currentRecord.get();
var numLines = subjobRecord.getLineCount({
sublistId: 'custpage_subjob_sublist'
});
console.log(numLines);
var flag = 0;
var sel = 0;
var subjobId = null;
var subjobno = numLines;
var count = 0;
var resp = 0;
for (var j = 0; j < numLines; j++) {
//getting value from checked box
var check = subjobRecord.getSublistValue({
fieldId: 'custpage_subjob_select',
sublistId: 'custpage_subjob_sublist',
line: j
});
if (check) {
count++;
}
}
if (count == 0) {
alert('Please select atleast one subjob');
//jQuery(".uir-page-title").append('<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"><div class="w3-light-grey" style="width:50%;margin-left:25%;border-radius: 25px;"> <div id="myBar" class="w3-container w3-blue" style="height:16px;width:1%;border-radius: 25px;display:none;"></div> </div><br>')
} else {
jQuery(".uir-page-title").append('<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"><div class="w3-light-grey" style="width:50%;margin-left:25%;border-radius: 25px;"> <div id="myBar" class="w3-container w3-blue" style="height:16px;width:1%;border-radius: 25px;"></div> </div><br>')
}
var elem = document.getElementById("myBar");
var width = 1;
for (var i = 0; i < numLines; i++) {
//getting value from checked box
var check = subjobRecord.getSublistValue({
fieldId: 'custpage_subjob_select',
sublistId: 'custpage_subjob_sublist',
line: i
});
var subjob = subjobRecord.getSublistValue({
fieldId: 'custpage_subjob_internal_id',
sublistId: 'custpage_subjob_sublist',
line: i
});
console.log(subjob);
if ((check) && ((subjob != "") && (subjob != null) && (subjob != undefined))) {
console.log('Enterc');
sel = sel + 1;
flag = 1;
subjobId = subjobRecord.getSublistValue({
fieldId: 'custpage_subjob_internal_id',
sublistId: 'custpage_subjob_sublist',
line: i
});
subjobReason = subjobRecord.getSublistValue({
fieldId: 'custpage_subjob_reason',
sublistId: 'custpage_subjob_sublist',
line: i
});
width++;
//Change the Sub job status to Cancel
var submitFieldsPromise = record.submitFields.promise({
type: 'customrecord_netu_sub_job',
id: subjobId,
values: {
'custrecord_netu_subjob_status': st,
'custrecord_netu_subjob_reason_code': subjobReason
}
});
submitFieldsPromise.then(function(subjobId) {
console.log((width * 30) + '%');
elem.style.width = (width * 20) + '%';
//Setting the url of the suitelet script
var output = url.resolveScript({
scriptId: 'customscript_netu_sl_change_status',
deploymentId: 'customdeploy_netu_sl_change_status',
returnExternalUrl: false,
}) + '&subJobId=' + subjobId + '&statusNo=' + st;
console.log('SL:', output);
https.get.promise({
url: output
}).then(function(response) {
console.log(response.body);
if (response.body == "success") { resp++; }
if (resp == count) {
if (window.onbeforeunload) {
window.onbeforeunload = function() {
null;
};
};
newWindow = window.close();
window.location.reload(true);
}
})
.catch(function onRejected(reason) {
console.log(reason)
})
}, function(e) {
log.error({
title: e.name,
details: e.message
});
});
} else if ((check) && ((subjob == "") || (subjob == null) || (subjob == undefined))) {
subjobno = subjobno - 1;
}
}
//If all subjob status are selected then also change status in main job
if (sel == subjobno) {
var jobDtls = search.lookupFields({
type: 'customrecord_netu_sub_job',
id: subjobId,
columns: ['custrecord_netu_main_job']
});
var jodId = jobDtls.custrecord_netu_main_job[0].value;
console.log(jodId);
record.submitFields({
type: 'customrecord_netu_main_job',
id: jodId,
values: {
'custrecord_netu_job_status': '4'
}
});
}
if (window.opener != null && !window.opener.closed) {
window.opener.location.reload(true);
}
setTimeout(function() { document.getElementById("custpage_cancel").disabled = false; }, 100);
setTimeout(function() { document.getElementById("custpage_unable_to_quote").disabled = false; }, 100);
} catch (e) {
console.log(e.message);
}
}
/*
* Function defining the action of Order Lost button
*/
function ChangeStatustoLostOrder() {
try {
document.getElementById("custpage_order_lost_btn").disabled = true;
var cnfm = confirm("Do you want to continue with Order Lost?");
if (cnfm == true) {
console.log("True");
//Getting current record id
var currentRec = currentRecord.get();
var jobId = currentRec.id;
var jobRecId = record.submitFields({
type: 'customrecord_netu_main_job',
id: jobId,
values: {
'custrecord_netu_job_status': '5'
}
});
console.log(jobRecId);
//document.getElementById("custpage_order_lost_btn").disabled = false;
window.location.reload(true);
//Fetching the sub-jobs with status Quotation in a main job using a Main Job Search
var customrecord_netu_main_jobSearchObj = search.create({
type: "customrecord_netu_main_job",
filters: [
["internalidnumber", "equalto", jobId],
"AND",
["custrecord_netu_main_job.internalidnumber", "isnotempty", ""]
/*"AND",
["custrecord_netu_main_job.custrecord_netu_subjob_status","anyof","5"]*/
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC
}),
search.createColumn({
name: "internalid",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "name",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "custrecord_netu_subjob_status",
join: "CUSTRECORD_NETU_MAIN_JOB"
})
]
});
var searchResultCount = customrecord_netu_main_jobSearchObj.runPaged().count;
var subjobResults = customrecord_netu_main_jobSearchObj.run().getRange({
start: 0,
end: 1000
});
console.log(searchResultCount);
for (var i = 0; i < searchResultCount; i++) {
var subjobId = subjobResults[i].getValue({
name: 'internalid',
join: 'CUSTRECORD_NETU_MAIN_JOB'
});
//Change the sub job status to Order lost
var subRecId = record.submitFields({
type: 'customrecord_netu_sub_job',
id: subjobId,
values: {
'custrecord_netu_subjob_status': '10'
}
});
console.log('subjobId', subRecId);
var st = '10';
changeStatus(subjobId, st);
}
}
setTimeout(function() { document.getElementById("custpage_order_lost_btn").disabled = false; }, 100);
} catch (e) {
console.log(e.message);
}
}
/*
* AM Ends
*/
/*
* AMJ Starts
*/
/*
* Direct to Invoice Record
*/
function createinvoices() {
try {
window.open('/app/accounting/transactions/custinvc.nl?whence=', '_blank');
} catch (e) {
console.log(e.message);
}
}
/*
* Direct to Credit Memo
*/
function creditmemo() {
try {
window.open('/app/accounting/transactions/custcred.nl?whence=', '_blank');
} catch (e) {
console.log(e.message);
}
}
/*
* Direct to Bills
*/
function enterbills() {
try {
window.open('/app/accounting/transactions/vendbill.nl?whence=', '_blank');
} catch (e) {
console.log(e.message);
}
}
/*
* Direct to Vendor Credit
*/
function vendercredit() {
try {
window.open('/app/accounting/transactions/vendcred.nl?whence=', '_blank');
} catch (e) {
console.log(e.message);
}
}
/*
* Function to change the sub job status to cancel
*/
function cancel() {
try {
document.getElementById("custpage_cancel_job").disabled = true;
var cnfim = confirm("Do you want to continue with Cancel?");
if (cnfim == true) {
var currentRec = currentRecord.get();
var recordid = currentRec.id;
record.submitFields({
type: 'customrecord_netu_main_job',
id: recordid,
values: {
'custrecord_netu_job_status': '4'
}
});
var main_job_search = search.create({
type: "customrecord_netu_main_job",
filters: [
["internalidnumber", "equalto", recordid],
"AND",
["custrecord_netu_main_job.internalidnumber", "isnotempty", ""]
],
columns: [
search.createColumn({
name: "name",
sort: search.Sort.ASC
}),
"custrecord_netu_vessel",
search.createColumn({
name: "name",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "internalid",
join: "CUSTRECORD_NETU_MAIN_JOB"
}),
search.createColumn({
name: "custrecord_netu_subjob_status",
join: "CUSTRECORD_NETU_MAIN_JOB"
})
]
});
var result = main_job_search.run().getRange({
start: 0,
end: 1000
});
var resultLength = result.length;
console.log("result.length", resultLength);
if (resultLength > 0) {
for (var i = 0; i < resultLength; i++) {
var subjob_id = result[i].getValue({
name: "internalid",
join: "CUSTRECORD_NETU_MAIN_JOB"
});
record.submitFields({
type: 'customrecord_netu_sub_job',
id: subjob_id,
values: {
'custrecord_netu_subjob_status': '20'
}
});
var st = '20';
changeStatus(subjob_id, st);
}
}
window.location.reload(true);
}
setTimeout(function() { document.getElementById("custpage_cancel_job").disabled = false; }, 100);
} catch (e) {
console.log("error", e.message);
}
}
/*
* AMJ Ends
*/
return {
pageInit: pageInit,
validateField: validateField,
openSelectVendorForm: openSelectVendorForm,
fieldChanged: fieldChanged,
sendEmail: sendEmail,
//additionalInfo: additionalInfo,
Opensuitelet: Opensuitelet,
changeStatus: changeStatus,
Closesuitelet: Closesuitelet,
ChangeToCancel: ChangeToCancel,
ChangeToQuoteUnable: ChangeToQuoteUnable,
ChangeStatustoLostOrder: ChangeStatustoLostOrder,
createinvoices: createinvoices,
creditmemo: creditmemo,
enterbills: enterbills,
vendercredit: vendercredit,
cancel: cancel,
saveRecord: saveRecord
};
});