Automatically creates Fixed Assets from Vendor bill/ Journal

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:

Leave a comment

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