/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
define(['N/record','N/currentRecord','N/search',"N/ui/message"],
function(record,currentRecord,search,message) {
function pageInit(scriptContext) {
}
/******************************************************************************
* Function to create sales order record from SPR record
******************************************************************************/
function converttoSO() {
try {
jQuery('#custpage_sobutton').prop('disabled', true);
var currentSPR = currentRecord.get().id
console.log("rec id", currentSPR);
var objRecord = record.load({
type: 'customrecord_jj_spr_custom',
id: currentSPR,
isDynamic: true,
});
//get details from SPR Record
var customer = objRecord.getValue({
fieldId: 'custrecord_jj_cust_name'
});
var expDate = objRecord.getValue({
fieldId: 'custrecord_jj_expdate'
});
var docNum = objRecord.getValue({
fieldId: 'name'
});
var line_count = objRecord.getLineCount({
sublistId: 'recmachcustrecordjj_parent'
});
//get item sublist values
var itemArray = []
for (var i = 0; i < line_count; i++) {
var itemObj = {}
var lineNum = objRecord.selectLine({
sublistId: 'recmachcustrecordjj_parent',
line: i
});
itemObj.itemName = objRecord.getCurrentSublistValue({
sublistId: 'recmachcustrecordjj_parent',
fieldId: 'custrecordjj_item',
});
itemObj.itemQty = objRecord.getCurrentSublistValue({
sublistId: 'recmachcustrecordjj_parent',
fieldId: 'custrecord_jj_qty',
});
itemObj.sprCost = objRecord.getCurrentSublistValue({
sublistId: 'recmachcustrecordjj_parent',
fieldId: 'custrecordjj_spr_cost',
});
itemObj.itemRate = objRecord.getCurrentSublistValue({
sublistId: 'recmachcustrecordjj_parent',
fieldId: 'custrecord_jj_price_level',
});
itemArray.push(itemObj);
}
// create sales order record from SPR
var soRecord = record.create({
type: record.Type.SALES_ORDER,
isDynamic: true,
defaultValues: {
entity: customer
}
});
soRecord.setValue({
fieldId: 'duedate',
value: expDate
});
//set item sublist values
if(itemArray.length>0){
for(var j = 0; j< itemArray.length; j++) {
soRecord.selectNewLine({
sublistId: 'item'
});
soRecord.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'item',
value: itemArray[j].itemName
});
soRecord.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'quantity',
value: itemArray[j].itemQty
});
// set custom price level
soRecord.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'price',
value: -1
});
soRecord.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'rate',
value: itemArray[j].itemRate
});
soRecord.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'custcol_jj_spr_cost',
value: itemArray[j].sprCost
});
soRecord.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'custcol_jj_spr_hash',
value: docNum
});
soRecord.commitLine({
sublistId: 'item'
});
}
}
soRecord.setValue({
fieldId:'custbody_jj_spr_reference',
value:currentSPR
});
var recId=soRecord.save({
relatedRecords:currentSPR,
enableSourcing: true,
ignoreMandatoryFields: true
});
console.log("recId",recId);
if(recId){
var fieldLookUp = search.lookupFields({
type: search.Type.SALES_ORDER,
id: recId,
columns: ['tranid']
});
var salesDocNum= fieldLookUp.tranid
alert("Sales Order record Sales Order #"+salesDocNum+" is created successfully")
var existValues= objRecord.getValue({
fieldId:'custrecord_jj_createdfrom_quote'
})
// setting the related transactions on the multiselect field
var recIdArray=[]
for(var i=0; i<existValues.length; i++){
recIdArray.push(existValues[i])
}
console.log("recIdArray",recIdArray)
recIdArray.push(JSON.stringify(recId))
console.log("recIdArray",recIdArray)
objRecord.setValue({
fieldId: 'custrecord_jj_createdfrom_quote',
value:recIdArray
});
objRecord.save({
enableSourcing: true,
ignoreMandatoryFields: true
});
window.onbeforeunload = function () { };
location.reload();
}
} catch (e) {
console.log("error@converttoSO",e)
alert("Sales Order record is not created due to the following error: " +e)
}
}
return {
converttoSO:converttoSO,
pageInit: pageInit
};
});