View cash sale

Jira Code: TRS-149

Description:
We can view the loaded CASH SALE using a NetSuite custom page. We redirect to the list page using a ‘list button’ and an ‘edit button’ is used to edit the current CASH SALE. And we can show the GL impact using ‘GL Impact’ button.

SUITE LET

/**
 *@NApiVersion 2.x
 *@NScriptType Suitelet
 */
/** Script Description
* .
******************************************************************************************************
 TRUST BRIDGE GLOBAL
 View the CASH SALE page for the id 
******************************************************************************************************
* Date: 09/07/2019
* 
* Author: Jobin & Jismi IT Services LLP 
* 
* Revision 1.0  Anju Babu 09/07/2019
*****************************************************************************************************/
var urlArray = [{
    "Name": "LIST",
    "SuitletId": "customscript_trs151_sl_list_of_cs",
    "DeploymentId": "customdeploy_trs151_sl_list_of_cs",
    "Link": ""
}];

define(['N/record', 'N/search', 'N/ui/serverWidget', 'N/url', 'N/https', 'N/http', 'N/runtime'],

    function(record, search, serverWidget, url, https, http, runtime) {

        /**
         * Definition of the Suitelet script trigger point.
         *
         * @param {Object} context
         * @param {ServerRequest} context.request - Encapsulation of the incoming request
         * @param {ServerResponse} context.response - Encapsulation of the Suitelet response
         * @Since 2015.2
         */
        //Common Try-Catch function
        function applyTryCatch(DATA_OBJ, NAME) {
            function tryCatch(myfunction, key) {
                return function() {
                    try {
                        return myfunction.apply(this, arguments);
                    } catch (e) {
                        log.error("error in " + key, e);
                        log.debug("error in " + key, e);
                        return false;
                    }
                };
            }
            for (var key in DATA_OBJ) {
                if (typeof DATA_OBJ[key] === "function") {
                    DATA_OBJ[key] = tryCatch(DATA_OBJ[key], NAME + "." + key);
                }
            }
        }
        var main = {
            onRequest: function(context) {
                for (var i = 0; i < urlArray.length; i++) {
                    urlArray[i]['Link'] = url.resolveScript({
                        scriptId: urlArray[i]['SuitletId'],
                        deploymentId: urlArray[i]['DeploymentId'],
                        returnExternalUrl: false
                    });


                }

                // this.context = context;
                if (context.request.method == 'GET') {
                    log.debug('context', context);
                    var recId = context.request.parameters.recid; //'692';
                    log.debug('recId', recId);
                    var cashRecList = main.getData(recId);
                    if (cashRecList != false) {
                        /*log.debug('cashRecList', cashRecList);*/
                        for (var key in cashRecList) {
                            var cashArrRec = cashRecList['cashRec'];
                            var journalArr = cashRecList['journal'];

                            var form = serverWidget.createForm({
                                title: 'CASH SALE #' + cashArrRec[0].tranid + ' |' + cashArrRec[0].customer
                            });
                            form.clientScriptFileId = 685;
                            var date = form.addField({
                                id: "date",
                                type: serverWidget.FieldType.DATE,
                                label: 'Date'

                            });
                            date.defaultValue = cashArrRec[0].date;
                            date.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });
                            var customer = form.addField({
                                id: "customer",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Customer',
                                source: "customer"

                            });
                            customer.defaultValue = cashArrRec[0].customer;
                            customer.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });
                            var currency = form.addField({
                                id: "currency",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Currency',
                                source: "currency"

                            });
                            currency.defaultValue = cashArrRec[0].Currency;
                            currency.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });

                            

                            var CustomerfundNumber = form.addField({
                                id: "customer_fund_num",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Customer Fund Number',
                                source: "customrecord_cseg5"

                            });

                            CustomerfundNumber.defaultValue = cashArrRec[0].cusFund;
                            CustomerfundNumber.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });
                            var account = form.addField({
                                id: "account",
                                type: serverWidget.FieldType.TEXT,
                                label: ' Account'

                            });
                            account.defaultValue = cashArrRec[0].account;
                            account.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });

                            var amount = form.addField({
                                id: "amount",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Amount'

                            });
                            amount.defaultValue = cashArrRec[0].Amount;
                            amount.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });

                            var journalId = form.addField({
                                id: "journalid",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Related journal'

                            });
                            journalId.defaultValue = cashArrRec[0].journalId[0];
                            journalId.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });


                            if ((cashArrRec[0].journalId).length > 0) {
                                log.debug('test', 'test');
                                var headerMemo = form.addField({
                                    id: "header_memo",
                                    type: serverWidget.FieldType.TEXT,
                                    label: ' Memo from journal'

                                });
                                headerMemo.defaultValue = journalArr[0].memo;
                                headerMemo.updateDisplayType({
                                    displayType: serverWidget.FieldDisplayType.DISABLED
                                });
                                var fundNumber = form.addField({
                                id: "fund_num",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Fund Number ',
                                source: "customrecord_cseg5"

                            });
                            fundNumber.defaultValue = journalArr[0].fund;
                            fundNumber.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });

                                var fundAssessmentExpenses = form.addField({
                                    id: "fund_assessment",
                                    type: serverWidget.FieldType.TEXT,
                                    label: 'Fund Assessment Expenses'

                                });
                                fundAssessmentExpenses.defaultValue = journalArr[0].fundAssessmentExpenses;
                                fundAssessmentExpenses.updateDisplayType({
                                    displayType: serverWidget.FieldDisplayType.DISABLED
                                });
                                var fundAssessmentRevenue = form.addField({
                                    id: "fund_revenue",
                                    type: serverWidget.FieldType.TEXT,
                                    label: 'Fund Assessment Revenue'

                                });
                                fundAssessmentRevenue.defaultValue = journalArr[0].fundAssessmentRevenue;
                                fundAssessmentRevenue.updateDisplayType({
                                    displayType: serverWidget.FieldDisplayType.DISABLED
                                });
                            }

                            var createdBy = form.addField({
                                id: "createdby_received",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Created By',
                                source: "customrecord_cseg5"

                            });


                            createdBy.defaultValue = cashArrRec[0].createdby;
                            createdBy.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });

                            var modifiedBy = form.addField({
                                id: "modifiedby_received",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Last Modified By',
                                source: "customrecord_cseg5"

                            });

                            modifiedBy.defaultValue = cashArrRec[0].modifiedBy;
                            modifiedBy.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });
                            var screen = form.addField({
                                id: "custom_screen",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Screen Source'
                                

                            });


                            //source.isMandatory = true;
                            screen.defaultValue = cashArrRec[0].screen;
                            screen.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });


                            //Showing Cash sale itemlines
                            var sublistCash = form.addSublist({
                                id: 'custpage_table',
                                type: serverWidget.SublistType.STATICLIST,
                                label: 'Items'
                            });


                            sublistCash.addField({
                                id: 'custpage_csitem',
                                label: 'Item',
                                type: serverWidget.FieldType.TEXT
                            });

                            sublistCash.addField({
                                id: 'custpage_csqty',
                                label: 'Quantity ',
                                type: serverWidget.FieldType.TEXT
                            });

                            sublistCash.addField({
                                id: 'custpage_csamount',
                                label: 'Amount',
                                type: serverWidget.FieldType.TEXT
                            });



                            //Journal lines show
                            var sublistJournal = form.addSublist({
                                id: 'custpage_table1',
                                type: serverWidget.SublistType.STATICLIST,
                                label: 'Related Journal Lines'
                            });


                            sublistJournal.addField({
                                id: 'custpage_jeaacount',
                                label: 'Account',
                                type: serverWidget.FieldType.TEXT
                            });

                            sublistJournal.addField({
                                id: 'custpage_jedebit',
                                label: 'Debit',
                                type: serverWidget.FieldType.TEXT
                            });
                            sublistJournal.addField({
                                id: 'custpage_jecredit',
                                label: 'Credit ',
                                type: serverWidget.FieldType.TEXT
                            });
                            sublistJournal.addField({
                                id: 'custpage_jefund',
                                label: 'Fund Number ',
                                type: serverWidget.FieldType.TEXT
                            });
                            sublistJournal.addField({
                                id: 'custpage_jememo',
                                label: 'Memo',
                                type: serverWidget.FieldType.TEXT
                            });



                            // To see the list of journal ,click the button 
                            var back = form.addButton({
                                id: 'buttonid',
                                label: 'LIST',
                                functionName: 'listofCashsale'

                            });
                            // To edit the current journal ,click the button 
                            var edit = form.addButton({
                                id: 'buttoneditid',
                                label: 'EDIT',
                                functionName: 'cashEdit'
                            });
                            var glImpact = form.addButton({
                                id: 'buttonid_glimpact',
                                label: 'GL Impact',
                                functionName: 'cashglImpact'
                            });
                            //cash item lines

                            var cashitemArr = cashRecList['cashitem'];
                            /*log.debug('cashArrRec', cashArrRec);*/
                            log.debug('cashitemArr', cashitemArr);
                            log.debug('outfor', cashitemArr[0].item)

                            log.debug('cashitemArr.length', cashitemArr.length)

                            if (cashitemArr.length > 0) {

                                for (var k = 0; k < cashitemArr.length; k++) {
                                    log.debug('k', k);
                                    sublistCash.setSublistValue({
                                        id: 'custpage_csitem',
                                        line: k,
                                        value: cashitemArr[k].item //|| 'null'
                                    });
                                    log.debug('infor', cashitemArr[k].item)
                                    sublistCash.setSublistValue({
                                        id: 'custpage_csqty',
                                        line: k,
                                        value: cashitemArr[k].quantity //|| 'null'
                                    });

                                    sublistCash.setSublistValue({
                                        id: 'custpage_csamount',
                                        line: k,
                                        value: cashitemArr[k].amount //|| 'null'
                                    });


                                }

                            }
                            //end cash item lines


                            //start journal lines


                            if (journalArr.length > 0) {
                                log.debug('outfor', journalArr[1].accnt);
                                for (var i = 1; i < journalArr.length; i++) {
                                    log.debug('infor', journalArr[i].accnt)
                                    sublistJournal.setSublistValue({
                                        id: 'custpage_jeaacount',
                                        line: i - 1,
                                        value: journalArr[i].accnt || 'null'
                                    });

                                    sublistJournal.setSublistValue({
                                        id: 'custpage_jedebit',
                                        line: i - 1,
                                        value: journalArr[i].debit || 'null'
                                    });
                                    sublistJournal.setSublistValue({
                                        id: 'custpage_jecredit',
                                        line: i - 1,
                                        value: journalArr[i].credit || 'null'
                                    });
                                    sublistJournal.setSublistValue({
                                        id: 'custpage_jefund',
                                        line: i - 1,
                                        value: journalArr[i].fundNum || 'null'
                                    });
                                    sublistJournal.setSublistValue({
                                        id: 'custpage_jememo',
                                        line: i - 1,
                                        value: journalArr[i].Line || 'null'
                                    });

                                }

                            }

                            //end of journal lines

                        }

                        context.response.writePage(form);
                    } else {

                        var htmlCode = '<html><head></head><body><script>confirm("Sorry we could not find cashsale ");window.location.href ="' + urlArray[0]['Link'] + '"</script></body></html>';
                        context.response.write(htmlCode);
                    }


                }
            },

            getData: function(recId) {
                var cashArr = {};
                var recArr = []
                var cashRec = record.load({
                    type: "cashsale",
                    id: recId,
                    isDynamic: true,
                });

                var fundNum = '';

                var date = cashRec.getValue({
                    fieldId: 'trandate'
                });

                var customer = cashRec.getText({
                    fieldId: 'entity'
                });

                var Currency = cashRec.getText({
                    fieldId: 'currency'
                });

                /*var fundnumber = cashRec.getText({
                    fieldId: 'cseg5'
                });*/
                var account = cashRec.getText({
                    fieldId: 'account'
                });
                var amount = cashRec.getSublistText({
                    sublistId: 'item',
                    fieldId: 'amount',
                    line: 0
                });

                var journalId = cashRec.getText({
                    fieldId: 'custbody_jj_child_destination'
                });


                //To get customer fund number
                var customerId = cashRec.getValue({
                    fieldId: 'entity'
                });

                var cusfundnumber = search.lookupFields({
                    type: 'customer', //The intended record type
                    id: customerId, //Record ID
                    columns: ['cseg5'] //Desired joined field referenced_record.desired_field
                });

                fundNum = cusfundnumber.cseg5;
                log.debug(fundNum, fundNum)

                //source and destination
                /*var source = cashRec.getText({
                    fieldId: 'custbody_jj_source_of_origin'
                });
                var destination = cashRec.getText({
                    fieldId: 'custbody_jj_child_destination'
                });*/
                if (fundNum.length > 0) {
                    fundNum = fundNum[0].text;
                } else {
                    fundNum = fundNum;
                }

                recArr.push({
                    'date': date,
                    'customer': customer,
                    'Currency': Currency,

                   
                    'account': account,
                    'Amount': amount,
                    'journalId': journalId,
                    'cusFund': fundNum,
                    'tranid': cashRec.getValue({ fieldId: 'tranid' }),
                    /*'source': source,
                    'destination': destination,*/
                    'modifiedBy': cashRec.getText({ fieldId: 'custbody_last_modifiedby' }),
                    'createdby': cashRec.getText({ fieldId: 'custbody_jj_created_by' }),
                    'screen': cashRec.getText({ fieldId: 'custbody_jj_screen_source' })
                });
                cashArr['cashRec'] = recArr;
                var lineItemCash = {};
                var numLinesCash = cashRec.getLineCount({
                    sublistId: 'item'
                });
                var itemArr = [];

                if (numLinesCash > 0) {
                    for (var m = 0; m < numLinesCash; m++) {

                        lineItemCash.item = cashRec.getSublistText({
                            sublistId: 'item',
                            fieldId: 'item',
                            line: m
                        });
                        lineItemCash.quantity = cashRec.getSublistText({
                            sublistId: 'item',
                            fieldId: 'quantity',
                            line: m
                        });
                        lineItemCash.amount = cashRec.getSublistText({
                            sublistId: 'item',
                            fieldId: 'amount',
                            line: m
                        });



                        itemArr.push(lineItemCash);
                        lineItemCash = {};
                        log.debug('lineItemCash', itemArr);
                    }
                }
                cashArr['cashitem'] = itemArr;

                var journalIdNum = cashRec.getValue({
                    fieldId: 'custbody_jj_child_destination'
                });
                log.debug('journalIdNum', journalIdNum[0])
                var journalArr = [];
                //To get memo and journal lines
                if (journalIdNum.length > 0) {
                    var journalRec = record.load({
                        type: "journalentry",
                        id: journalIdNum[0],
                        isDynamic: true,
                    });



                    var memo = journalRec.getText({
                        fieldId: 'memo'
                    });
                    var fundnumber= journalRec.getSublistText({
                        sublistId: 'line',
                        fieldId: 'cseg5',
                        line: 0
                    });
                    var fundAssessmentExpenses = journalRec.getSublistText({
                        sublistId: 'line',
                        fieldId: 'account',
                        line: 2
                    });
                    var fundAssessmentRevenue = journalRec.getSublistText({
                        sublistId: 'line',
                        fieldId: 'account',
                        line: 5
                    });
                    //memo from the journalentry
                    journalArr.push({
                        'memo': memo,
                         'fund': fundnumber,
                        'fundAssessmentExpenses': fundAssessmentExpenses,
                        'fundAssessmentRevenue': fundAssessmentRevenue
                    });


                    var lineItem = {};
                    var numLines = journalRec.getLineCount({
                        sublistId: 'line'
                    });

                    if (numLines > 0) {
                        for (var j = 0; j < numLines; j++) {

                            lineItem.accnt = journalRec.getSublistText({
                                sublistId: 'line',
                                fieldId: 'account',
                                line: j
                            });
                            lineItem.debit = journalRec.getSublistText({
                                sublistId: 'line',
                                fieldId: 'debit',
                                line: j
                            });
                            lineItem.credit = journalRec.getSublistText({
                                sublistId: 'line',
                                fieldId: 'credit',
                                line: j
                            });
                            lineItem.fundNum = journalRec.getSublistText({
                                sublistId: 'line',
                                fieldId: 'cseg5',
                                line: j
                            });
                            lineItem.Line = journalRec.getSublistText({
                                sublistId: 'line',
                                fieldId: 'memo',
                                line: j
                            });



                            journalArr.push(lineItem);
                            lineItem = {};
                            /*log.debug('journalArrinside', journalArr);*/
                        }
                    }
                }
                cashArr['journal'] = journalArr;


                /*log.debug('cashArrjournal', cashArr['journal']);*/
                log.debug('cashArr', cashArr);
                return cashArr;

            }

        }
        applyTryCatch(main, "main");
        return main;
    });

CLIENT SCRIPT

/**
 *@NApiVersion 2.x
 *@NScriptType ClientScript
 */
/** Script Description
 * .
 ******************************************************************************************************
  TRUST BRIDGE GLOBAL
  The link for list and edit pages for cash sale
 ******************************************************************************************************
 * Date: 10/07/2019
 * 
 * Author: Jobin & Jismi IT Services LLP 
 * 
 * Revision 1.0  Anju Babu 10/07/2019
 *****************************************************************************************************/

define(['N/currentRecord', 'N/url', 'N/https', 'N/http'], function(currentRecord, url, https, http) {

    function pageInit(context) {
        /*alert('ClientScript pageInit triggered')*/
    }
function fieldChanged(context) {
        //To avoid the subsidiaries become equal
        var fieldIdSub = context.fieldId;
        

        
        if (fieldIdSub == 'journalid' ) {
            log.debug('currentRec', currentRec);
            var journal = currentRec.getValue({
                fieldId: 'journalid'

            });
            

            if (journal == null) {
                alert('Sorry we could not find related journal for this cash sale ');
                
            }

        }

    }

    function listofCashsale(context) {
        // Load the list page
        var urlOfScript = url.resolveScript({
            scriptId: 'customscript_trs151_sl_list_of_cs',
            deploymentId: 'customdeploy_trs151_sl_list_of_cs',
            returnExternalUrl: false
        });

        window.location.href = (urlOfScript);

    }

    function cashEdit(context) {
        log.debug('context', context);

        var Id = getParameterByName('recid'); // '39' 
        var urlOfScript = url.resolveScript({
            scriptId: 'customscript_trs150_jj_sl_editofcs',
            deploymentId: 'customdeploy_trs150',
            returnExternalUrl: false
        });
        window.location.href = (urlOfScript) + '&recid=' + Id;

    }

    function cashglImpact(context) {
        log.debug('context', context);

        var cashId = getParameterByName('recid');
        var conpanyid = '5432341_SB1'

        var http = 'https://';

        var urlComponents = '/app/accounting/transactions/impact.nl?trantype=cashsale&searchid=-36&Transaction_INTERNALID=' + cashId + '&Transaction_INTERNALIDtype=ANYOF&label=Cash+Sale'
        var accountIdPart = url.resolveDomain({
            hostType: url.HostType.APPLICATION,
            accountId: conpanyid
        });

        var glURL = http + accountIdPart + urlComponents;
        console.log('glURL', glURL);

        window.open(glURL);

    }

    function getParameterByName(name, url) {
        if (!url)
            url = window.location.href;
        name = name.replace(/[\[\]]/g, "\\$&");
        var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
            results = regex
            .exec(url);
        if (!results)
            return null;
        if (!results[2])
            return ' ';
        return decodeURIComponent(results[2].replace(/\+/g, " "));
    }


    return {
        pageInit: pageInit,
        listofCashsale: listofCashsale,
        cashEdit: cashEdit,
        cashglImpact: cashglImpact,
        //fieldChanged: fieldChanged
    }
});

Leave a comment

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