To display Sale Price, Amount & GP on Requisition & PO on button click
define(['N/record', 'N/search', 'N/currentRecord', 'N/url'], function (record, search, currentRecord, url) {
function pageInit() {
}
/**
* @description Function to check value
* @param {*} parameter
* @returns boolean
*/
function checkForParameter(parameter) {
if (parameter !== "" && parameter !== null && parameter !== undefined && parameter !== false && parameter !== "null" && parameter !== "undefined" && parameter !== " " && parameter !== 'false') {
return true;
} else {
return false;
}
}
/**
* @description Function to update GP
* @param {*} recId
* @param {*} typeOfRec
*/
function updateGPFields(recId, typeOfRec, path) {
try {
var rec;
// console.log("recId", recId)
// console.log("path", path)
// console.log("typeOfRec", typeOfRec)
rec = record.load({
type: typeOfRec,
id: recId,
isDynamic: true,
});
//console.log("rec", rec)
var lineCount = rec.getLineCount({ sublistId: 'item' });
//console.log("lineCount", lineCount)
for (var i = 0; i < lineCount; i++) {
rec.selectLine({ sublistId: 'item', line: i });
var requestKey = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_mhi_ibs_request_key',
line: i
});
if (!requestKey) {
console.log('No request key on line ${i}');
continue;
}
//console.log('Fetching data for requestKey: ${requestKey}');
var soData = fetchSalesOrderData(requestKey);
//console.log("soData-----------", soData)
if (!checkForParameter(soData)) {
//console.log('No data found for requestKey: ${requestKey}');
alert('No Sales Order Data for line!');
break;
}
else {
//console.log('Sales Order Data for line ${i}:', soData);
var soQty;
soQty = soData.quantity;
//console.log('soQty', soQty);
if (checkForParameter(soQty)) {
var altSaleAmt = soData.rate;
var allocationQty = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_mhi_ibs_request_qty',
line: i
});
//console.log('allocationQty', allocationQty);
var estGP = (altSaleAmt / soQty) * allocationQty;
//console.log('estGP', estGP);
}
if (checkForParameter(soData.price)) {
rec.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'custcol_req_po_so_sale_price',
value: soData.price
});
}
if (checkForParameter(soData.amount)) {
rec.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'custcol_req_po_so_sale_amount',
value: soData.amount
});
}
if (checkForParameter(soData.currency)) {
rec.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'custcol_req_po_so_sale_currency',
value: soData.currency
});
}
if (checkForParameter(estGP)) {
rec.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'custcol_req_po_so_est_gp',
value: estGP
});
}
rec.commitLine({ sublistId: 'item' });
//console.log('Updated line ${i} with calculated GP: ${estGP}');
}
rec.save({
enableSourcing: true,
ignoreMandatoryFields: true,
});
alert('Gross Profit fields updated successfully!');
var parent = window.parent;
//console.log("recId================",recId)
parent.location.href = getRecURL(recId, path);
}
} catch (e) {
console.error('Error updating GP fields:', e);
alert('An error occurred while updating GP fields. Check the logs for details.');
}
}
/**
* @description Function to reload record
* @param {*} recId
* @param {*} path
* @returns string
*/
function getRecURL(recId, path) {
try {
var recURL = url.format({
domain: path,
params: {
id: recId,
whence: '',
}
});
window.parent.location.href = recURL;
return recURL;
}
catch (e) {
log.error("error@getIFURL", e);
}
}
/**
* @description Sales Order search
* @param {*} requestKey
* @returns object
*/
function fetchSalesOrderData(requestKey) {
var salesorderSearchObj = search.create({
type: "salesorder",
filters: [
["type", "anyof", "SalesOrd"],
"AND",
["custcol_mhi_ibs_request_key", "is", requestKey],
"AND",
["taxline", "is", "F"],
"AND",
["mainline", "is", "F"],
"AND",
["cogs", "is", "F"],
"AND",
["shipping", "is", "F"]
],
columns: [
search.createColumn({ name: "internalid", label: "Internal Id" }),
search.createColumn({ name: "custcol_mhi_ibs_entity_price", label: "Entity Price" }),
search.createColumn({ name: "amount", label: "Amount" }),
search.createColumn({ name: "currency", label: "Currency" }),
search.createColumn({ name: "rate", label: "Base Price" }),
search.createColumn({ name: "quantity", label: "Sale Qty" }),
search.createColumn({ name: "fxestgrossprofit", label: "Est. Gross Profit (Line) (Foreign Currency)" })
]
});
var obj = {};
salesorderSearchObj.run().each(function (result) {
obj.intId = result.getValue({ name: "internalid" });
obj.price = result.getValue({ name: "custcol_mhi_ibs_entity_price" });
obj.amount = result.getValue({ name: "amount" });
obj.currency = result.getValue({ name: "currency" });
obj.rate = result.getValue({ name: "fxestgrossprofit" });
obj.quantity = result.getValue({ name: "quantity" });
return false;
});
//console.log("obj=====================", obj);
return obj;
}
return {
updateGPFields: updateGPFields,
pageInit: pageInit
};
});