Scenario: Automatically create fixed assets from Bills/Journals when these records are created in Netsuite
Solution:
When a vendor bill/journal creates corresponding fixed asset records will be created automatically if the line count is less than 10.
//JJ UE FA Automation QG-118.js
/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
*/
define(['N/error', 'N/record', 'N/search','N/format'],
/**
* @param{error} error
* @param{record} record
* @param{search} search
* @param{format} format
*/
(error, record, search,format) => {
/**
* Defines the function definition that is executed before record is loaded.
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {string} scriptContext.type - Trigger type; use values from the context.UserEventType enum
* @param {Form} scriptContext.form - Current form
* @param {ServletRequest} scriptContext.request - HTTP request information sent from the browser for a client action only.
* @since 2015.2
*/
const beforeLoad = (scriptContext) => {
try{
//For restricting values of custom fields in Make a copy context
if(scriptContext.type == 'copy'){
var rec = scriptContext.newRecord
var recType = rec.type
//FOR VENDOR BILL
if(recType == 'vendorbill'){
var ex = rec.getLineCount({
sublistId: 'expense'
})
var item = rec.getLineCount({
sublistId: 'item'
})
if(ex>0){
for(var i=0;i<ex;i++){
rec.setSublistValue({
sublistId: 'expense',
fieldId: 'custcol_far_trn_relatedasset',
value: '',
line: i
})
}
}
if(item>0){
for(var i=0;i<item;i++){
rec.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_far_trn_relatedasset',
value: '',
line: i
})
}
}
}// end of vendor section
//FOR JOURNAL ENTRY
if(recType == 'journalentry') {
var jLineCount = rec.getLineCount({
sublistId: 'line'
})
if (jLineCount > 0) {
for (var i=0;i<jLineCount;i++) {
rec.setSublistValue({
sublistId: 'line',
fieldId: 'custcol_far_trn_relatedasset',
value: '',
line: i
})
}
}
}// End of journal section
}
}
catch (e) {
log.debug("Error @ Before load: ",e.name+" : "+e.message)
}
}
/**
* Function to convert date to dateString format.
* @param {Date} iDate - Date fieldValue
* @returns {string} res - converted DateString
* @since 2015.2
*/
function convertDate(iDate){
try {
var d = new Date(iDate).getDate()
switch (d) {
case '01' : d = '1'; break;
case '02' : d = '2'; break;
case '03' : d = '3'; break;
case '04' : d = '4'; break;
case '05' : d = '5'; break;
case '06' : d = '6'; break;
case '07' : d = '7'; break;
case '08' : d = '8'; break;
case '09' : d = '9'; break;
default: break;
}
var m = new Date(iDate).getMonth()+1
var y = new Date(iDate).getFullYear()
var res = d+'/'+m+'/'+y
return res;
}
catch (e) {
log.debug("Error in Date function: ",e.name+': ',e.message)
}
}
/**
* Function to check whether the field has an empty value or not.
*
* @param {parameter} parameter - fieldValue
* @returns {boolean} true - if the value is not empty
* @returns {boolean} false - if the value is empty
*
* @since 2015.2
*/
function checkForParameter(parameter) {
try{
if (parameter != "" && parameter != null && parameter != undefined && parameter != "null" && parameter != "undefined" && parameter != " " && parameter != false) {
return true;
}
else {
log.debug("Empty Value found");
return false;
}
}
catch (e) {
log.debug("Error @ empty check Function: ",e.name+' : '+e.message)
}
}
/**
* Function to convert dateString to date 'd/m/yyyy' format.
* @returns {Date} convertedDate - converted Date
* @since 2015.2
*/
function dateCreator(){
try{
//Date operations
var d= new Date();
var m;
if(d.getMonth() == 11){
m= '1'
}
else{
m= d.getMonth()+2
}
var y = (d.getMonth()==11) ? (d.getFullYear()+1) : d.getFullYear()
var dt = '1'+'/'+m+'/'+y
var convertedDate = format.parse({
value: dt,
type: format.Type.DATE
});
return convertedDate
}
catch (e) {
log.debug("Error @ date Creator function: ",e.name+' : '+e.message)
}
}
/**
* Function to list vendor bills / journals which has pending FA lines.
*
* @param {string} id - record ID
* @returns {string} cnt - Count of lines in each record which has no related Records. ie; lines which hasn't Fixed asset
*
* @since 2015.2
*/
function transactionSearch(id) {
var transactionSearchObj = search.create({
type: "transaction",
filters:
[
["internalid","anyof",id],
"AND",
["type","anyof","VendBill","Journal"],
"AND",
["custcol_far_trn_relatedasset","anyof","@NONE@"],
"AND",
[["custcol_far_asset_type","noneof","@NONE@"],"OR",["custcol_far_asset_types","noneof","@NONE@"]],
"AND",
// ["custcol_far_exclude_asset_type","is","F"],
// "AND",
["creditamount","isempty",""]
],
columns:
[
search.createColumn({
name: "internalid",
summary: "GROUP",
label: "Internal ID"
}),
search.createColumn({
name: "lineuniquekey",
summary: "COUNT",
label: "Line Unique Key"
})
]
});
var searchResultCount = transactionSearchObj.runPaged().count;
log.debug("transactionSearch result count",searchResultCount);
var cnt;
transactionSearchObj.run().each(function(result){
// .run().each has a limit of 4,000 results
cnt = result.getValue({
name: "lineuniquekey",
summary: "COUNT",
})
return true;
});
log.debug("cnt: ",cnt)
return cnt;
}
/**
* Defines the function definition that is executed after record is submitted.
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {Record} scriptContext.oldRecord - Old record
* @param {string} scriptContext.type - Trigger type; use values from the context.UserEventType enum
* @since 2015.2
*/
const afterSubmit = (scriptContext) => {
try{
log.debug("Context: ",scriptContext.type)
var rec = scriptContext.newRecord
var recId = rec.id
var recType = rec.type
//VENDOR BILL SECTION
if(recType == 'vendorbill'){
var totalCount = transactionSearch(recId);
log.debug("totalCount: ",totalCount)
//Edit context
if(scriptContext.type == 'edit'){
var expenseCount = rec.getLineCount({
sublistId: 'expense'
});
var itemCount = rec.getLineCount({
sublistId: 'item'
});
if (totalCount<10) {
//EXPENSE LINE
if (expenseCount > 0) {
var subsidary = rec.getValue({
fieldId: 'subsidiary'
})
var transDate = rec.getValue({
fieldId: 'trandate'
})
var vendorName = rec.getValue({
fieldId: 'entity'
})
var initialFormattedDateString = convertDate(transDate);
var parsedDateStringAsRawDateObject = format.parse({
value: initialFormattedDateString,
type: format.Type.DATE
});
var convertedDate = dateCreator()
for (var i = 0; i < expenseCount; i++) {
var relRec = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_far_trn_relatedasset',
line: i
})
var exAcc = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'account',
line: i
})
var exAsset = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_far_asset_type',
line: i
})
var excludeCheck = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_far_exclude_asset_type',
line: i
})
var exMemo = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'memo',
line: i
})
var exAmount = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'amount',
line: i
})
var exEmployee = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_far_employee',
line: i
})
if(checkForParameter(exEmployee)==true) {
var exDepartment = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_assettype_department',
line: i
})
var exClass = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_assettype_class',
line: i
})
var exLocation = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_assettype_location',
line: i
})
}
var exQty = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_expense_quantity',
line: i
})
var exPurchaseOrder = rec.getSublistValue({
sublistId: 'purchaseorders',
fieldId: 'poid',
line: i
})
log.debug("Related PURCHASE ORDER: ",exPurchaseOrder)
//Account Record
var accountRec = record.load({
type: record.Type.ACCOUNT,
id: exAcc,
isDynamic: true
})
var accType = accountRec.getValue({
fieldId: 'accttype'
})
log.debug("exAsset: ",exAsset)
if (accType == 'FixedAsset') { //if account type is Fixed asset
if (checkForParameter(exAsset)==true) { //asset type not empty
// if (checkForParameter(relRec) == false && Boolean(excludeCheck) == false) { //won't have relatedRecord and not checked exclude FA checkbox
if (checkForParameter(relRec) == false){
log.debug("No REl Records")
//Asset type Record
var assettypeRec = record.load({
type: 'customrecord_ncfar_assettype',
id: exAsset,
isDynamic: true
})
log.debug("exAsset: ",exAsset)
log.debug("assettypeRec: ",assettypeRec)
var assetDepreciationPeriod = assettypeRec.getValue({
fieldId: 'custrecord_assttype_dep_next_period'
})
var accountingMethod = assettypeRec.getValue({
fieldId: 'custrecord_assettypeaccmethod'
})
if (totalCount < 10) { //
//Creation of Fixed Asset
var FArecord = record.create({
type: 'customrecord_ncfar_asset',
isDynamic: true
})
//NAME
FArecord.setValue({
fieldId: 'altname',
value: exMemo ? exMemo : 'Auto Generated Asset'
})
//ASSET DESCRIPTION
FArecord.setValue({
fieldId: 'custrecord_assetdescr',
value: exMemo ? exMemo : 'Auto Generated Asset'
})
//ASSET TYPE
FArecord.setValue({
fieldId: 'custrecord_assettype',
value: exAsset
})
//ASSET ORIGINAL COST
FArecord.setValue({
fieldId: 'custrecord_assetcost',
value: exAmount
})
//ASSET CURRENT COST
FArecord.setValue({
fieldId: 'custrecord_assetcurrentcost',
value: exAmount
})
//CUSTODIAN
FArecord.setValue({
fieldId: 'custrecord_assetcaretaker',
value: exEmployee
})
//DEPARTMENT
FArecord.setValue({
fieldId: 'custrecord_employee_department',
value: exDepartment
})
//CLASS
FArecord.setValue({
fieldId: 'custrecord_employee_class',
value: exClass
})
//LOCATION
FArecord.setValue({
fieldId: 'custrecord_employee_location',
value: exLocation
})
//QUANTITY
FArecord.setValue({
fieldId: 'custrecord_ncfar_quantity',
value: exQty ? exQty : 1
})
//SUBSIDIARY
FArecord.setValue({
fieldId: 'custrecord_assetsubsidiary',
value: subsidary
})
//PURCHASE DATE
FArecord.setValue({
fieldId: 'custrecord_assetpurchasedate',
value: parsedDateStringAsRawDateObject
})
//DEPRECIATION START DATE
log.debug("assetDepreciationPeriod: ",assetDepreciationPeriod)
if (assetDepreciationPeriod == false) {
FArecord.setValue({
fieldId: 'custrecord_assetdeprstartdate',
value: parsedDateStringAsRawDateObject
});
}
if (Boolean(assetDepreciationPeriod) == true) {
FArecord.setValue({
fieldId: 'custrecord_assetdeprstartdate',
value: convertedDate
})
}
//SUPPLIER
FArecord.setValue({
fieldId: 'custrecord_assetsupplier',
value: vendorName
})
//PURCHASE ORDER
FArecord.setValue({
fieldId: 'custrecord_assetpurchaseorder',
value: checkForParameter(exPurchaseOrder) == true ? exPurchaseOrder : ''
})
//PARENT TRANSACTION
FArecord.setValue({
fieldId: 'custrecord_assetsourcetrn',
value: recId
})
//PARENT TRANSACTION LINE
FArecord.setValue({
fieldId: 'custrecord_assetsourcetrnline',
value: i + 1
})
//RESIDUAL VALUE
FArecord.setValue({
fieldId: 'custrecord_assetresidualvalue',
value: 0.00
})
//DEPRECIATION METHOD
FArecord.setValue({
fieldId: 'custrecord_assetaccmethod',
value: accountingMethod ? accountingMethod : 3
})
//Saving Record
var saved = FArecord.save()
log.debug("Saved: ", saved)
//Setting Related Assets
const a = record.load({
type: 'vendorbill',
id: recId,
isDynamic: true
})
a.selectLine({
sublistId: 'expense',
line: i
})
a.setCurrentSublistValue({
sublistId: 'expense',
fieldId: 'custcol_far_trn_relatedasset',
value: saved,
line: i
})
a.commitLine({
sublistId: 'expense'
})
var z = a.save();
log.debug("sd: ", z)
}
}
}
}
}
}
//ITEM LINE
if (itemCount > 0) {
for (var i = 0; i < itemCount; i++) {
var itmRelRec = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_far_trn_relatedasset',
line: i
})
var itmItem = rec.getSublistValue({
sublistId: 'item',
fieldId: 'item',
line: i
})
var itmDescription = rec.getSublistValue({
sublistId: 'item',
fieldId: 'description',
line: i
})
var itmAssetType = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_far_asset_types',
line: i
})
var itmAmount = rec.getSublistValue({
sublistId: 'item',
fieldId: 'amount',
line: i
})
var itmExcludeCheckvalue = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_far_exclude_asset_type',
line: i
})
var itmEmployee = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_far_employee',
line: i
})
var itmDepartment = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_assettype_department',
line: i
})
var itmClass = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_assettype_class',
line: i
})
var itmLocation = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_assettype_location',
line: i
})
var itmQty = rec.getSublistValue({
sublistId: 'item',
fieldId: 'quantity',
line: i
})
log.debug("itmQty: ",itmQty)
var itmPurchaseOrder = rec.getSublistValue({
sublistId: 'purchaseorders',
fieldId: 'poid',
line: i
})
log.debug("Related PURCHASE ORDER: ",itmPurchaseOrder)
if (checkForParameter(itmAssetType) == true) { // check whether the asset type is null ie; checking the account type is Fixed asset
// if (Boolean(itmExcludeCheckvalue) == false && checkForParameter(itmRelRec) == false) {// check whether the exclude check is not checked and no related asset
if(checkForParameter(itmRelRec) == false){
log.debug("No REl Records in Item")
//Asset Type record
var assettypeRec = record.load({
type: 'customrecord_ncfar_assettype',
id: itmAssetType,
isDynamic: true
})
var assetDepreciationPeriod = assettypeRec.getValue({
fieldId: 'custrecord_assttype_dep_next_period'
})
var accountingMethod = assettypeRec.getValue({
fieldId: 'custrecord_assettypeaccmethod'
})
//Creation of Fixed Asset
var FArecord = record.create({
type: 'customrecord_ncfar_asset',
isDynamic: true
})
//NAME
FArecord.setValue({
fieldId: 'altname',
value: itmDescription ? itmDescription : 'Auto Generated Asset'
})
//ASSET DESCRIPTION
FArecord.setValue({
fieldId: 'custrecord_assetdescr',
value: itmDescription ? itmDescription : 'Auto Generated Asset'
})
//ASSET TYPE
FArecord.setValue({
fieldId: 'custrecord_assettype',
value: itmAssetType
})
//ASSET ORIGINAL COST
FArecord.setValue({
fieldId: 'custrecord_assetcost',
value: itmAmount
})
//ASSET CURRENT COST
FArecord.setValue({
fieldId: 'custrecord_assetcurrentcost',
value: itmAmount
})
//CUSTODIAN
FArecord.setValue({
fieldId: 'custrecord_assetcaretaker',
value: itmEmployee
})
//DEPARTMENT
FArecord.setValue({
fieldId: 'custrecord_employee_department',
value: itmDepartment
})
//CLASS
FArecord.setValue({
fieldId: 'custrecord_employee_class',
value: itmClass
})
//LOCATION
FArecord.setValue({
fieldId: 'custrecord_employee_location',
value: itmLocation
})
//QUANTITY
FArecord.setValue({
fieldId: 'custrecord_ncfar_quantity',
value: itmQty ? itmQty : 1
})
//SUBSIDIARY
FArecord.setValue({
fieldId: 'custrecord_assetsubsidiary',
value: subsidary
})
//PURCHASE DATE
FArecord.setValue({
fieldId: 'custrecord_assetpurchasedate',
value: parsedDateStringAsRawDateObject
})
//DEPRECIATION START DATE
if (Boolean(assetDepreciationPeriod) == false) {
FArecord.setValue({
fieldId: 'custrecord_assetdeprstartdate',
value: parsedDateStringAsRawDateObject
});
}
if (Boolean(assetDepreciationPeriod) == true) {
FArecord.setValue({
fieldId: 'custrecord_assetdeprstartdate',
value: convertedDate
})
}
//SUPPLIER
FArecord.setValue({
fieldId: 'custrecord_assetsupplier',
value: vendorName
})
//PURCHASE ORDER
FArecord.setValue({
fieldId: 'custrecord_assetpurchaseorder',
value: itmPurchaseOrder ? itmPurchaseOrder: ''
})
//PARENT TRANSACTION
FArecord.setValue({
fieldId: 'custrecord_assetsourcetrn',
value: recId
})
//PARENT TRANSACTION LINE
FArecord.setValue({
fieldId: 'custrecord_assetsourcetrnline',
value: i + 1
})
//RESIDUAL VALUE
FArecord.setValue({
fieldId: 'custrecord_assetresidualvalue',
value: 0.00
})
//DEPRECIATION METHOD
FArecord.setValue({
fieldId: 'custrecord_assetaccmethod',
value: accountingMethod ? accountingMethod : 3
})
//Saving Record
var saved = FArecord.save()
log.debug("Item FA Saved: ", saved)
//Setting Related Assets
const a = record.load({
type: 'vendorbill',
id: recId,
isDynamic: true
})
a.selectLine({
sublistId: 'item',
line: i
})
a.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'custcol_far_trn_relatedasset',
value: saved,
line: i
})
a.commitLine({
sublistId: 'item'
})
var z = a.save();
log.debug("Linesd: ", z)
}
}
}
}
}
}
//Create Context
if(scriptContext.type == 'create') {
var ex = rec.getLineCount({
sublistId: 'expense'
})
var item = rec.getLineCount({
sublistId: 'item'
})
if (totalCount<10) {
var subsidary = rec.getValue({
fieldId: 'subsidiary'
})
var transDate = rec.getValue({
fieldId: 'trandate'
})
var vendorName = rec.getValue({
fieldId: 'entity'
})
var initialFormattedDateString = convertDate(transDate);
var parsedDateStringAsRawDateObject = format.parse({
value: initialFormattedDateString,
type: format.Type.DATE
});
var convertedDate = dateCreator()
//Sublist Section
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> EXPENSE LINE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<//
if (ex > 0) {
for (var i = 0; i < ex; i++) {
var exAcc = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'account',
line: i
})
var exAsset = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_far_asset_type',
line: i
})
var excludeCheck = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_far_exclude_asset_type',
line: i
})
var exMemo = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'memo',
line: i
})
var exAmount = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'amount',
line: i
})
var exEmployee = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_far_employee',
line: i
})
if(checkForParameter(exEmployee)==true) {
var exDepartment = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_assettype_department',
line: i
})
var exClass = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_assettype_class',
line: i
})
var exLocation = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_assettype_location',
line: i
})
}
var exQty = rec.getSublistValue({
sublistId: 'expense',
fieldId: 'custcol_expense_quantity',
line: i
})
var exPurchaseOrder = rec.getSublistValue({
sublistId: 'purchaseorders',
fieldId: 'poid',
line: i
})
log.debug("Related PURCHASE ORDER: ",exPurchaseOrder)
//Account Record
var accountRec = record.load({
type: record.Type.ACCOUNT,
id: exAcc,
isDynamic: true
})
var accType = accountRec.getValue({
fieldId: 'accttype'
})
if (accType == 'FixedAsset') { // if the account type is Fixed Asset
// if ((checkForParameter(exAsset)) && (Boolean(excludeCheck) == false)) { // if asset type is not null, So the check value can be either true or false. It doesn't matter for the creation of fixed asset record
if(checkForParameter(exAsset) == true){
//Asset type Record
var assettypeRec = record.load({
type: 'customrecord_ncfar_assettype',
id: exAsset,
isDynamic: true
})
var assetDepreciationPeriod = assettypeRec.getValue({
fieldId: 'custrecord_assttype_dep_next_period'
})
var accountingMethod = assettypeRec.getValue({
fieldId: 'custrecord_assettypeaccmethod'
})
//Creation of Fixed Asset
var FArecord = record.create({
type: 'customrecord_ncfar_asset',
isDynamic: true
})
//NAME
FArecord.setValue({
fieldId: 'altname',
value: exMemo ? exMemo : 'Auto Generated Asset'
})
//ASSET DESCRIPTION
FArecord.setValue({
fieldId: 'custrecord_assetdescr',
value: exMemo ? exMemo : 'Auto Generated Asset'
})
//ASSET TYPE
FArecord.setValue({
fieldId: 'custrecord_assettype',
value: exAsset
})
//ASSET ORIGINAL COST
FArecord.setValue({
fieldId: 'custrecord_assetcost',
value: exAmount
})
//ASSET CURRENT COST
FArecord.setValue({
fieldId: 'custrecord_assetcurrentcost',
value: exAmount
})
//CUSTODIAN
FArecord.setValue({
fieldId: 'custrecord_assetcaretaker',
value: exEmployee
})
//DEPARTMENT
FArecord.setValue({
fieldId: 'custrecord_employee_department',
value: exDepartment
})
//CLASS
FArecord.setValue({
fieldId: 'custrecord_employee_class',
value: exClass
})
//LOCATION
FArecord.setValue({
fieldId: 'custrecord_employee_location',
value: exLocation
})
//QUANTITY
FArecord.setValue({
fieldId: 'custrecord_ncfar_quantity',
value: exQty ? exQty : 1
})
//SUBSIDIARY
FArecord.setValue({
fieldId: 'custrecord_assetsubsidiary',
value: subsidary
})
//PURCHASE DATE
FArecord.setValue({
fieldId: 'custrecord_assetpurchasedate',
value: parsedDateStringAsRawDateObject
})
//DEPRECIATION START DATE
if (assetDepreciationPeriod == false) {
FArecord.setValue({
fieldId: 'custrecord_assetdeprstartdate',
value: parsedDateStringAsRawDateObject
});
}
if (Boolean(assetDepreciationPeriod) == true) {
FArecord.setValue({
fieldId: 'custrecord_assetdeprstartdate',
value: convertedDate
})
}
//SUPPLIER
FArecord.setValue({
fieldId: 'custrecord_assetsupplier',
value: vendorName
})
//PURCHASE ORDER
FArecord.setValue({
fieldId: 'custrecord_assetpurchaseorder',
value: checkForParameter(exPurchaseOrder) == true ? exPurchaseOrder: ''
})
//PARENT TRANSACTION
FArecord.setValue({
fieldId: 'custrecord_assetsourcetrn',
value: recId
})
//PARENT TRANSACTION LINE
FArecord.setValue({
fieldId: 'custrecord_assetsourcetrnline',
value: i + 1
})
//RESIDUAL VALUE
FArecord.setValue({
fieldId: 'custrecord_assetresidualvalue',
value: 0.00
})
//DEPRECIATION METHOD
FArecord.setValue({
fieldId: 'custrecord_assetaccmethod',
value: accountingMethod ? accountingMethod : 3
})
//Saving Record
var saved = FArecord.save()
log.debug("Saved: ", saved)
//Setting Related Assets
const a = record.load({
type: 'vendorbill',
id: recId,
isDynamic: true
})
a.selectLine({
sublistId: 'expense',
line: i
})
a.setCurrentSublistValue({
sublistId: 'expense',
fieldId: 'custcol_far_trn_relatedasset',
value: saved,
line: i
})
a.commitLine({
sublistId: 'expense'
})
var z = a.save();
log.debug("sd: ", z)
}
}
}
}// End of if(ex>0)
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<//
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ITEM LINE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<//
if (item > 0) {
for (var i = 0; i < item; i++) {
var itmItem = rec.getSublistValue({
sublistId: 'item',
fieldId: 'item',
line: i
})
var itmDescription = rec.getSublistValue({
sublistId: 'item',
fieldId: 'description',
line: i
})
var itmAssetType = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_far_asset_types',
line: i
})
var itmAmount = rec.getSublistValue({
sublistId: 'item',
fieldId: 'amount',
line: i
})
var itmExcludeCheckvalue = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_far_exclude_asset_type',
line: i
})
var itmEmployee = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_far_employee',
line: i
})
if(checkForParameter(itmEmployee)==true) {
var itmDepartment = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_assettype_department',
line: i
})
var itmClass = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_assettype_class',
line: i
})
var itmLocation = rec.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_assettype_location',
line: i
})
var itmQty = rec.getSublistValue({
sublistId: 'item',
fieldId: 'quantity',
line: i
})
log.debug("itmQty: ",itmQty)
var itmPurchaseOrder = rec.getSublistValue({
sublistId: 'purchaseorders',
fieldId: 'poid',
line: i
})
log.debug("Related PURCHASE ORDER: ",itmPurchaseOrder)
}
// if (checkForParameter(itmAssetType) && (Boolean(itmExcludeCheckvalue) == false)) { // check whether the asset type is null ie; checking the account type is Fixed asset
if(checkForParameter(itmAssetType)){
// if (Boolean(itmExcludeCheckvalue) == false) {
//Asset Type record
var assettypeRec = record.load({
type: 'customrecord_ncfar_assettype',
id: itmAssetType,
isDynamic: true
})
var assetDepreciationPeriod = assettypeRec.getValue({
fieldId: 'custrecord_assttype_dep_next_period'
})
var accountingMethod = assettypeRec.getValue({
fieldId: 'custrecord_assettypeaccmethod'
})
//Creation of Fixed Asset
var FArecord = record.create({
type: 'customrecord_ncfar_asset',
isDynamic: true
})
//NAME
FArecord.setValue({
fieldId: 'altname',
value: itmDescription ? itmDescription : 'Auto Generated Asset'
})
//ASSET DESCRIPTION
FArecord.setValue({
fieldId: 'custrecord_assetdescr',
value: itmDescription ? itmDescription : 'Auto Generated Asset'
})
//ASSET TYPE
FArecord.setValue({
fieldId: 'custrecord_assettype',
value: itmAssetType
})
//ASSET ORIGINAL COST
FArecord.setValue({
fieldId: 'custrecord_assetcost',
value: itmAmount
})
//ASSET CURRENT COST
FArecord.setValue({
fieldId: 'custrecord_assetcurrentcost',
value: itmAmount
})
//CUSTODIAN
FArecord.setValue({
fieldId: 'custrecord_assetcaretaker',
value: itmEmployee
})
//DEPARTMENT
FArecord.setValue({
fieldId: 'custrecord_employee_department',
value: itmDepartment
})
//CLASS
FArecord.setValue({
fieldId: 'custrecord_employee_class',
value: itmClass
})
//LOCATION
FArecord.setValue({
fieldId: 'custrecord_employee_location',
value: itmLocation
})
//QUANTITY
FArecord.setValue({
fieldId: 'custrecord_ncfar_quantity',
value: itmQty ? itmQty : 1
})
//SUBSIDIARY
FArecord.setValue({
fieldId: 'custrecord_assetsubsidiary',
value: subsidary
})
//PURCHASE DATE
FArecord.setValue({
fieldId: 'custrecord_assetpurchasedate',
value: parsedDateStringAsRawDateObject
})
//DEPRECIATION START DATE
if (Boolean(assetDepreciationPeriod) == false) {
FArecord.setValue({
fieldId: 'custrecord_assetdeprstartdate',
value: parsedDateStringAsRawDateObject
});
}
if (Boolean(assetDepreciationPeriod) == true) {
FArecord.setValue({
fieldId: 'custrecord_assetdeprstartdate',
value: convertedDate
})
}
//SUPPLIER
FArecord.setValue({
fieldId: 'custrecord_assetsupplier',
value: vendorName
})
//PURCHASE ORDER
FArecord.setValue({
fieldId: 'custrecord_assetpurchaseorder',
value: itmPurchaseOrder? itmPurchaseOrder: ''
})
//PARENT TRANSACTION
FArecord.setValue({
fieldId: 'custrecord_assetsourcetrn',
value: recId
})
//PARENT TRANSACTION LINE
FArecord.setValue({
fieldId: 'custrecord_assetsourcetrnline',
value: i + 1
})
//RESIDUAL VALUE
FArecord.setValue({
fieldId: 'custrecord_assetresidualvalue',
value: 0.00
})
//DEPRECIATION METHOD
FArecord.setValue({
fieldId: 'custrecord_assetaccmethod',
value: accountingMethod ? accountingMethod : 3
})
//Saving Record
var saved = FArecord.save()
log.debug("Item FA Saved: ", saved)
//Setting Related Assets
const a = record.load({
type: 'vendorbill',
id: recId,
isDynamic: true
})
a.selectLine({
sublistId: 'item',
line: i
})
a.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'custcol_far_trn_relatedasset',
value: saved,
line: i
})
a.commitLine({
sublistId: 'item'
})
var z = a.save();
log.debug("Linesd: ", z)
// }
}
}// End of for loop
} // End of if(item>0)
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<//
}
}// End of if(context == create)
}
//JOURNAL SECTION
if(recType == 'journalentry'){
let totalCount = transactionSearch(recId)
//edit context
if(scriptContext.type == 'edit'){
var journalCount = rec.getLineCount({
sublistId: 'line'
})
if(totalCount<10) {
var subsidary = rec.getValue({
fieldId: 'subsidiary'
})
var transDate = rec.getValue({
fieldId: 'trandate'
})
var initialFormattedDateString = convertDate(transDate);
var parsedDateStringAsRawDateObject = format.parse({
value: initialFormattedDateString,
type: format.Type.DATE
});
var convertedDate = dateCreator()
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> JOURNAL LINE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<//
if (journalCount > 0) {
for (var i = 0; i < journalCount; i++) {
var jRelRec = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_far_trn_relatedasset',
line: i
})
var jAcc = rec.getSublistValue({
sublistId: 'line',
fieldId: 'account',
line: i
})
var jAsset = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_far_asset_type',
line: i
})
var excludeCheck = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_far_exclude_asset_type',
line: i
})
var jMemo = rec.getSublistValue({
sublistId: 'line',
fieldId: 'memo',
line: i
})
var jAmount = rec.getSublistValue({
sublistId: 'line',
fieldId: 'debit',
line: i
})
var jEmployee = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_far_employee',
line: i
})
if(checkForParameter(jEmployee)==true) {
var jDepartment = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_assettype_department',
line: i
})
var jClass = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_assettype_class',
line: i
})
var jLocation = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_assettype_location',
line: i
})
}
//Account Record
var accountRec = record.load({
type: record.Type.ACCOUNT,
id: jAcc,
isDynamic: true
})
var accType = accountRec.getValue({
fieldId: 'accttype'
})
if (accType == 'FixedAsset') { // if the account type is Fixed Asset
if (checkForParameter(jAsset) == true && checkForParameter(jAmount)==true) { // if asset type is not null
// if (Boolean(excludeCheck) == false && checkForParameter(jRelRec) == false) { // check whether exclude FA checkbox is not checked and related asset are empty
if(checkForParameter(jRelRec) == false){
log.debug("INSIDE CONDITION")
log.debug("No REl Records in Journal")
//Asset type Record
var assettypeRec = record.load({
type: 'customrecord_ncfar_assettype',
id: jAsset,
isDynamic: true
})
if(checkForParameter(assettypeRec)==true) {
var assetDepreciationPeriod = assettypeRec.getValue({
fieldId: 'custrecord_assttype_dep_next_period'
})
var accountingMethod = assettypeRec.getValue({
fieldId: 'custrecord_assettypeaccmethod'
})
}
//Creation of Fixed Asset
var FArecord = record.create({
type: 'customrecord_ncfar_asset',
isDynamic: true
})
//NAME
FArecord.setValue({
fieldId: 'altname',
value: jMemo ? jMemo : 'Auto Generated Asset'
})
//ASSET DESCRIPTION
FArecord.setValue({
fieldId: 'custrecord_assetdescr',
value: jMemo ? jMemo : 'Auto Generated Asset'
})
//ASSET TYPE
FArecord.setValue({
fieldId: 'custrecord_assettype',
value: jAsset
})
//ASSET ORIGINAL COST
FArecord.setValue({
fieldId: 'custrecord_assetcost',
value: jAmount
})
//ASSET CURRENT COST
FArecord.setValue({
fieldId: 'custrecord_assetcurrentcost',
value: jAmount
})
//CUSTODIAN
FArecord.setValue({
fieldId: 'custrecord_assetcaretaker',
value: jEmployee
})
//DEPARTMENT
FArecord.setValue({
fieldId: 'custrecord_employee_department',
value: jDepartment
})
//CLASS
FArecord.setValue({
fieldId: 'custrecord_employee_class',
value: jClass
})
//LOCATION
FArecord.setValue({
fieldId: 'custrecord_employee_location',
value: jLocation
})
//SUBSIDIARY
FArecord.setValue({
fieldId: 'custrecord_assetsubsidiary',
value: subsidary
})
//PURCHASE DATE
FArecord.setValue({
fieldId: 'custrecord_assetpurchasedate',
value: parsedDateStringAsRawDateObject
})
//DEPRECIATION START DATE
if (Boolean(assetDepreciationPeriod) == false) {
FArecord.setValue({
fieldId: 'custrecord_assetdeprstartdate',
value: parsedDateStringAsRawDateObject
});
}
if (Boolean(assetDepreciationPeriod) == true) {
FArecord.setValue({
fieldId: 'custrecord_assetdeprstartdate',
value: convertedDate
})
}
//PARENT TRANSACTION
FArecord.setValue({
fieldId: 'custrecord_assetsourcetrn',
value: recId
})
//PARENT TRANSACTION LINE
FArecord.setValue({
fieldId: 'custrecord_assetsourcetrnline',
value: i + 1
})
//RESIDUAL VALUE
FArecord.setValue({
fieldId: 'custrecord_assetresidualvalue',
value: 0.00
})
//DEPRECIATION METHOD
FArecord.setValue({
fieldId: 'custrecord_assetaccmethod',
value: accountingMethod ? accountingMethod : 3
})
//Saving Record
var saved = FArecord.save()
log.debug("jSaved: ", saved)
//Setting Related Assets
const a = record.load({
type: 'journalentry',
id: recId,
isDynamic: true
})
a.selectLine({
sublistId: 'line',
line: i
})
a.setCurrentSublistValue({
sublistId: 'line',
fieldId: 'custcol_far_trn_relatedasset',
value: saved,
line: i
})
a.commitLine({
sublistId: 'line'
})
var z = a.save();
log.debug("Jsd: ", z)
}
}
}
}
}// End of if(journalCount>0)
}// end of count<100
}
//create context
if(scriptContext.type == 'create'){
var journalCount = rec.getLineCount({
sublistId: 'line'
})
if(totalCount<10) {
var subsidary = rec.getValue({
fieldId: 'subsidiary'
})
var transDate = rec.getValue({
fieldId: 'trandate'
})
var initialFormattedDateString = convertDate(transDate);
var parsedDateStringAsRawDateObject = format.parse({
value: initialFormattedDateString,
type: format.Type.DATE
});
var convertedDate = dateCreator()
//>>>>>>>>>>>>>>>>>>>>>>>>>>>> JOURNAL LINE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<//
if (journalCount > 0) {
for (var i = 0; i < journalCount; i++) {
var jAcc = rec.getSublistValue({
sublistId: 'line',
fieldId: 'account',
line: i
})
var jAsset = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_far_asset_type',
line: i
})
var excludeCheck = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_far_exclude_asset_type',
line: i
})
var jMemo = rec.getSublistValue({
sublistId: 'line',
fieldId: 'memo',
line: i
})
var jAmount = rec.getSublistValue({
sublistId: 'line',
fieldId: 'debit',
line: i
})
var jEmployee = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_far_employee',
line: i
})
if(checkForParameter(jEmployee)==true) {
var jDepartment = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_assettype_department',
line: i
})
var jClass = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_assettype_class',
line: i
})
var jLocation = rec.getSublistValue({
sublistId: 'line',
fieldId: 'custcol_assettype_location',
line: i
})
}
//Account Record
var accountRec = record.load({
type: record.Type.ACCOUNT,
id: jAcc,
isDynamic: true
})
var accType = accountRec.getValue({
fieldId: 'accttype'
})
if (accType == 'FixedAsset') { // if the account type is Fixed Asset
if (checkForParameter(jAsset) == true && checkForParameter(jAmount)==true) { // if asset type is not null
// if (Boolean(excludeCheck) == false && checkForParameter(jRelRec) == false) { // check whether exclude FA checkbox is not checked and related asset are empty
if(checkForParameter(jRelRec) == false){
log.debug("No REl Records in Journals")
//Asset type Record
var assettypeRec = record.load({
type: 'customrecord_ncfar_assettype',
id: jAsset,
isDynamic: true
})
var assetDepreciationPeriod = assettypeRec.getValue({
fieldId: 'custrecord_assttype_dep_next_period'
})
var accountingMethod = assettypeRec.getValue({
fieldId: 'custrecord_assettypeaccmethod'
})
//Creation of Fixed Asset
var FArecord = record.create({
type: 'customrecord_ncfar_asset',
isDynamic: true
})
//NAME
FArecord.setValue({
fieldId: 'altname',
value: jMemo ? jMemo : 'Auto Generated Asset'
})
//ASSET DESCRIPTION
FArecord.setValue({
fieldId: 'custrecord_assetdescr',
value: jMemo ? jMemo : 'Auto Generated Asset'
})
//ASSET TYPE
FArecord.setValue({
fieldId: 'custrecord_assettype',
value: jAsset
})
//ASSET ORIGINAL COST
FArecord.setValue({
fieldId: 'custrecord_assetcost',
value: jAmount
})
//ASSET CURRENT COST
FArecord.setValue({
fieldId: 'custrecord_assetcurrentcost',
value: jAmount
})
//CUSTODIAN
FArecord.setValue({
fieldId: 'custrecord_assetcaretaker',
value: jEmployee
})
//DEPARTMENT
FArecord.setValue({
fieldId: 'custrecord_employee_department',
value: jDepartment
})
//CLASS
FArecord.setValue({
fieldId: 'custrecord_employee_class',
value: jClass
})
//LOCATION
FArecord.setValue({
fieldId: 'custrecord_employee_location',
value: jLocation
})
//SUBSIDIARY
FArecord.setValue({
fieldId: 'custrecord_assetsubsidiary',
value: subsidary
})
//PURCHASE DATE
FArecord.setValue({
fieldId: 'custrecord_assetpurchasedate',
value: parsedDateStringAsRawDateObject
})
//DEPRECIATION START DATE
if (Boolean(assetDepreciationPeriod) == false) {
FArecord.setValue({
fieldId: 'custrecord_assetdeprstartdate',
value: parsedDateStringAsRawDateObject
});
}
if (Boolean(assetDepreciationPeriod) == true) {
FArecord.setValue({
fieldId: 'custrecord_assetdeprstartdate',
value: convertedDate
})
}
//PARENT TRANSACTION
FArecord.setValue({
fieldId: 'custrecord_assetsourcetrn',
value: recId
})
//PARENT TRANSACTION LINE
FArecord.setValue({
fieldId: 'custrecord_assetsourcetrnline',
value: i + 1
})
//RESIDUAL VALUE
FArecord.setValue({
fieldId: 'custrecord_assetresidualvalue',
value: 0.00
})
//DEPRECIATION METHOD
FArecord.setValue({
fieldId: 'custrecord_assetaccmethod',
value: accountingMethod ? accountingMethod : 3
})
//Saving Record
var saved = FArecord.save()
log.debug("jSaved: ", saved)
//Setting Related Assets
const a = record.load({
type: 'journalentry',
id: recId,
isDynamic: true
})
a.selectLine({
sublistId: 'line',
line: i
})
a.setCurrentSublistValue({
sublistId: 'line',
fieldId: 'custcol_far_trn_relatedasset',
value: saved,
line: i
})
a.commitLine({
sublistId: 'line'
})
var z = a.save();
}
}
}
}
}// End of if(journalCount>0)
}
}
}
}
catch (e) {
log.debug("Error @ ",e.name+" : "+e.message)
}
}
return {beforeLoad, afterSubmit}
});
//JJ CS Validations for FA Creation QG-119.js
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
define(['N/currentRecord', 'N/record', 'N/search'],
/**
* @param{currentRecord} currentRecord
* @param{record} record
* @param{search} search
*/
function(currentRecord, record, search) {
/**
* Function to check whether the field has an empty value or not.
* @param {parameter} parameter - fieldValue
* @returns {boolean} true - if the value is not empty
* @returns {boolean} false - if the value is empty
*/
function checkForParameter(parameter) {
try{
if (parameter != "" && parameter != null && parameter != undefined && parameter != "null" && parameter != "undefined" && parameter != " " && parameter != false) {
return true;
}
else {
console.log("Empty Value found");
return false;
}
}
catch (e) {
console.log("Error @ empty check Function: ",e.name+' : '+e.message)
}
}
/**
* Function to be executed when field is slaved.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.sublistId - Sublist name
* @param {string} scriptContext.fieldId - Field name
*
* @since 2015.2
*/
// function postSourcing(scriptContext) {
// try{
// var rec = scriptContext.currentRecord
// if(scriptContext.sublistId == 'expense' || scriptContext.sublistId == 'item' || scriptContext.sublistId == 'line'){
// rec.setCurrentSublistValue({
// sublistId: scriptContext.sublistId,
// fieldId: 'custcol_far_trn_relatedasset',
// value: null
// })
// return true
// }
// }
// catch (e) {
// console.log("Error @ postSourcing : ",e.name+" : "+e.message)
// }
// }
/**
* Validation function to be executed when sublist line is committed.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.sublistId - Sublist name
*
* @returns {boolean} Return true if sublist line is valid
*
* @since 2015.2
*/
function validateLine(scriptContext) {
try{
var rec = scriptContext.currentRecord
var recSubsidary = rec.getValue({
fieldId: 'subsidiary'
})
var checkValue = rec.getCurrentSublistValue({
sublistId: scriptContext.sublistId,
fieldId: 'custcol_far_exclude_asset_type'
})
var relatedAsset = rec.getCurrentSublistValue({
sublistId: scriptContext.sublistId,
fieldId: 'custcol_far_trn_relatedasset'
})
if(checkForParameter(relatedAsset)==true){
alert("You can't Edit or Copy a line which has Already Fixed Asset")
return false
}
var employee = rec.getCurrentSublistValue({
sublistId: scriptContext.sublistId,
fieldId: 'custcol_far_employee'
})
console.log("Employee: ",employee)
if(checkForParameter(employee)==true){
var empRec = record.load({
type: record.Type.EMPLOYEE,
id: employee,
isDynamic: true
})
var empDep = empRec.getValue({
fieldId: 'department'
})
console.log("empDep: ",empDep)
var empClass = empRec.getValue({
fieldId: 'class'
})
console.log("empClass: ",empClass)
if(checkForParameter(empDep)==true) {
var depRec = record.load({
type: record.Type.DEPARTMENT,
id: empDep,
isDynamic: true
})
var depInactive = depRec.getValue({
fieldId: 'isinactive'
})
console.log("INACTIVE: ", depInactive)
if (depInactive == true) {
alert("Selected Employee has an inactive Department. Please choose another Employee")
return false;
}
else{
return true
}
}
if(checkForParameter(empDep)==false){
return true;
}
if(checkForParameter(empClass)==true){
var classRec = record.load({
type: record.Type.CLASSIFICATION,
id: empClass,
isDynamic: true
})
var classInactive = classRec.getValue({
fieldId: 'isinactive'
})
console.log("classInactive: ", classInactive)
if (classInactive == true) {
alert("Selected Employee has an inactive Class. Please choose another Employee")
return false;
}
else{
return true
}
}
if(checkForParameter(empClass)==false){
return true;
}
}
var assetType;
//For Vendor Bill
if(scriptContext.sublistId == 'expense'){
var exAcc = rec.getCurrentSublistValue({
sublistId: 'expense',
fieldId: 'account'
})
console.log('exAcc: ',exAcc)
if(checkForParameter(exAcc)==true){
var accRec = record.load({
type: 'account',
id: exAcc,
isDynamic: true
})
var accType = accRec.getValue({
fieldId: 'accttype'
})
console.log('accType: ',accType)
if(accType != 'FixedAsset'){
alert("Selected Account is not a Fixed Asset Type Account. So You can't create Fixed Asset from this account")
// return true;
}
}
}
if(scriptContext.sublistId == 'expense' || 'item'){
var amount = rec.getCurrentSublistValue({
sublistId: scriptContext.sublistId,
fieldId: 'amount'
})
console.log("amount: ",amount)
if(checkForParameter(amount)==true) {
if (Number(amount) < 0) {
alert("You can't provide an amount less than zero")
return false;
}
}
}
if(scriptContext.sublistId == 'line'){
var debit = rec.getCurrentSublistValue({
sublistId: scriptContext.sublistId,
fieldId: 'debit'
})
if(checkForParameter(debit)) {
if (Number(debit) < 0) {
alert("You can't provide an amount less than zero to a debit entry")
return false;
}
}
var credit = rec.getCurrentSublistValue({
sublistId: scriptContext.sublistId,
fieldId: 'credit'
})
if(checkForParameter(credit)) {
if (Number(credit) < 0) {
alert("You can't provide an amount less than zero to a credit entry")
return false;
}
}
}
if(scriptContext.sublistId == 'expense' || 'line'){
assetType = rec.getCurrentSublistValue({
sublistId: scriptContext.sublistId,
fieldId: 'custcol_far_asset_type'
})
if(checkForParameter(assetType)== true){
var atRec = record.load({
type: 'customrecord_ncfar_assettype',
id: assetType,
isDynamic: true
})
var atSubsidary = atRec.getValue({
fieldId: 'custrecord_assettype_subsidiary'
})
if(atSubsidary.includes(recSubsidary)==true){
return true;
}
else{
alert("Subsidiary of Asset type and Bill/Journal should be the same")
return false;
}
}
var jAcc = rec.getCurrentSublistValue({
sublistId: scriptContext.sublistId,
fieldId: 'account'
})
if(checkForParameter(jAcc)==true){
//Account Record
var accountRec = record.load({
type: record.Type.ACCOUNT,
id: jAcc,
isDynamic: true
})
var accType = accountRec.getValue({
fieldId: 'accttype'
})
if(accType == 'FixedAsset'){
// if((checkForParameter(assetType) == false) && (Boolean(checkValue) == false)){
if(checkForParameter(assetType) == false){
// alert(" Invalid Choose. If you want to exclude Fixed Asset please check the Exclude Fixed Asset Checkbox or please provide valid Asset type ")
alert("Invalid Choose. Please Select an Asset type. You can't create Fixed asset without Asset Type")
return false
}
else {
return true
}
}
else{
return true
}
}
}
if(scriptContext.sublistId == 'item'){
assetType = rec.getCurrentSublistValue({
sublistId: scriptContext.sublistId,
fieldId: 'custcol_far_asset_types'
})
if(checkForParameter(assetType)== true){
var atRec = record.load({
type: 'customrecord_ncfar_assettype',
id: assetType,
isDynamic: true
})
var atSubsidary = atRec.getValue({
fieldId: 'custrecord_assettype_subsidiary'
})
if(atSubsidary.includes(recSubsidary)==true){
return true;
}
else{
alert("Subsidiary of Asset type and Bill should be the same")
return false;
}
}
// if((checkForParameter(assetType) == false) && (Boolean(checkValue) == false)){
if(checkForParameter(assetType) == false){
// alert(" Invalid Choose. If you want to exclude Fixed Asset please check the Exclude Fixed Asset Checkbox or please provide valid Asset type ")
alert("Invalid Choose. Please Select an Asset type. You can't create Fixed asset without Asset Type")
return false
}
else {
return true
}
}
}
catch (e) {
console.log("Error @ valiadte Line: ",e.name+" : "+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{
console.log("in Save")
return true
}
catch (e) {
console.log("Error @ Save : ",e.name+" : "+e.message)
}
}
return {
// postSourcing: postSourcing,
validateLine: validateLine,
saveRecord: saveRecord
};
});
Vendor bill Example: