View Journal

Jira Code: TRS-122

Description:
We can view the loaded journal 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 journal. And we can show the GL impact using GL Impact button.

Suitelet

/**
 *@NApiVersion 2.x
 *@NScriptType Suitelet
 */
/** Script Description
* .
******************************************************************************************************
 TRUST BRIDGE GLOBAL
 View the journal page for the id 
******************************************************************************************************
* Date: 29/06/2019
* 
* Author: Jobin & Jismi IT Services LLP 
* 
* Revision 1.0  Anju Babu 29/06/2019
*****************************************************************************************************/
var urlArray = [{
        "Name": "LIST",
        "SuitletId": "customscript_trs116_sl_creat_list_for_je",
        "DeploymentId": "customdeploy_trs116_sl_creat_list_for_je",
        "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;
                    if (recId) {
                        log.debug('recId', recId);
                        var journalRecList = main.getData(recId);
                        log.debug('journalRecList', journalRecList);
                        if (journalRecList != false) {
                            log.debug('journalRecList', journalRecList);

                            var form = serverWidget.createForm({
                                title: 'Journal' + '  ' + '#' + journalRecList[0].tranid
                            });
                            form.clientScriptFileId = 667;
                            var date = form.addField({
                                id: "date",
                                type: serverWidget.FieldType.DATE,
                                label: 'Date'

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


                            var subsidiary = form.addField({
                                id: "subsidiary",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Subsidiary',
                                source: "subsidiary"

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

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

                            });
                            exchangerate.defaultValue = journalRecList[0].exchangerate;
                            exchangerate.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });
                            var amount = form.addField({
                                id: "amount",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Amount'

                            });
                            amount.defaultValue = journalRecList[0].Amount;
                            amount.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });
                            var headerMemo = form.addField({
                                id: "header_memo",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Header Memo'

                            });
                            headerMemo.defaultValue = journalRecList[0].Header;
                            headerMemo.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });

                            var lineMemo = form.addField({
                                id: "line_memo",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Line Memo'

                            });
                            lineMemo.defaultValue = journalRecList[0].Line;
                            lineMemo.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });
                            var fundNumberSend = form.addField({
                                id: "fund_send",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Fund Number Send',
                                source: "customrecord_cseg5"

                            });
                            fundNumberSend.defaultValue = journalRecList[0].fund;
                            fundNumberSend.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });
                            var fundNumberReceived = form.addField({
                                id: "fund_received",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Fund Number Received',
                                source: "customrecord_cseg5"

                            });
                            fundNumberReceived.defaultValue = journalRecList[0].fund1;
                            if ((journalRecList[0].source) || ((journalRecList[0].destination).length > 0)) {
                                fundNumberReceived.updateDisplayType({
                                    displayType: serverWidget.FieldDisplayType.HIDDEN
                                });
                            } else {
                                fundNumberReceived.updateDisplayType({
                                    displayType: serverWidget.FieldDisplayType.DISABLED
                                });
                            }
                            var screen = form.addField({
                                id: "custom_screen",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Screen Source'
                                

                            });


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

                            var source = form.addField({
                                id: "source_received",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Source',
                                source: "customrecord_cseg5"

                            });


                            //source.isMandatory = true;
                            source.defaultValue = journalRecList[0].source;
                            source.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });
                            var destination = form.addField({
                                id: "destination_received",
                                type: serverWidget.FieldType.TEXT,
                                label: 'Destination',
                                source: "customrecord_cseg5"

                            });


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

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

                            });


                            //source.isMandatory = true;
                            createdBy.defaultValue = journalRecList[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"

                            });


                            //source.isMandatory = true;
                            modifiedBy.defaultValue = journalRecList[0].modifiedBy;
                            modifiedBy.updateDisplayType({
                                displayType: serverWidget.FieldDisplayType.DISABLED
                            });
                            //updated on 4.07.19 sublist "LINE" from the JE
                            var sublist = form.addSublist({
                                id: 'custpage_table',
                                type: serverWidget.SublistType.STATICLIST,
                                label: 'LINES'
                            });


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

                            sublist.addField({
                                id: 'custpage_jedebit',
                                label: 'Debit',
                                type: serverWidget.FieldType.TEXT
                            });
                            sublist.addField({
                                id: 'custpage_jecredit',
                                label: 'Credit ',
                                type: serverWidget.FieldType.TEXT
                            });
                            sublist.addField({
                                id: 'custpage_jefund',
                                label: 'Fund Number ',
                                type: serverWidget.FieldType.TEXT
                            });
                            sublist.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: 'backAction'

                            });
                            // To edit the current journal ,click the button 
                            var edit = form.addButton({
                                id: 'buttonEditid',
                                label: 'EDIT',
                                functionName: 'editAction'
                            });
                            var glImpact = form.addButton({
                                id: 'buttonid_glimpact',
                                label: 'GL Impact',
                                functionName: 'glImpact'
                            });
                            log.debug('outfor', journalRecList[1].accnt)
                            if (journalRecList.length > 1) {

                                for (var i = 1; i < journalRecList.length; i++) {
                                    log.debug('infor', journalRecList[i].accnt)
                                    sublist.setSublistValue({
                                        id: 'custpage_jeaacount',
                                        line: i - 1,
                                        value: journalRecList[i].accnt || 'null'
                                    });
                                    journalRecList
                                    sublist.setSublistValue({
                                        id: 'custpage_jedebit',
                                        line: i - 1,
                                        value: journalRecList[i].debit || 'null'
                                    });
                                    sublist.setSublistValue({
                                        id: 'custpage_jecredit',
                                        line: i - 1,
                                        value: journalRecList[i].credit || 'null'
                                    });
                                    sublist.setSublistValue({
                                        id: 'custpage_jefund',
                                        line: i - 1,
                                        value: journalRecList[i].fundNum || 'null'
                                    });
                                    sublist.setSublistValue({
                                        id: 'custpage_jememo',
                                        line: i - 1,
                                        value: journalRecList[i].Line || 'null'
                                    });

                                }

                            }

                            context.response.writePage(form);

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

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


                }
            },

            getData: function(recId) {
                try {
                    var journalArr = [];
                    var journalRec = record.load({
                        type: "journalentry",
                        id: recId,
                        isDynamic: true,
                    });
                    log.debug('journalRec', journalRec)
                    var date = journalRec.getValue({
                        fieldId: 'trandate'
                    });

                    var Subsidiary = journalRec.getText({
                        fieldId: 'subsidiary'
                    });

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

                    var Header = journalRec.getValue({
                        fieldId: 'memo'
                    });

                    var fundSnd = journalRec.getText({
                        fieldId: 'custbody_fund_num_send'
                    });
                    var fundRec = journalRec.getText({
                        fieldId: 'custbody_fund_num_recvd'
                    });
                    var source = journalRec.getText({
                        fieldId: 'custbody_jj_source_of_origin'
                    });
                    var destination = journalRec.getText({
                        fieldId: 'custbody_jj_child_destination'
                    });
                    var exchangerate = journalRec.getText({
                        fieldId: 'exchangerate'
                    });

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




                    var Line = journalRec.getSublistText({
                        sublistId: 'line',
                        fieldId: 'memo',
                        line: 0
                    });
                    var debit = journalRec.getSublistText({
                        sublistId: 'line',
                        fieldId: 'debit',
                        line: 0
                    });
                    var credit = journalRec.getSublistText({
                        sublistId: 'line',
                        fieldId: 'credit',
                        line: 0
                    });

                    log.debug('credit', credit);
                    log.debug('debit', debit);
                    if (debit)
                        journalArr.push({
                            'date': date,
                            'Subsidiary': Subsidiary,
                            'Currency': Currency,
                            'Header': Header,
                            'fund': fundSnd,
                            'fund1': fundRec,
                            'Line': Line,
                            'Amount': journalRec.getSublistText({
                                sublistId: 'line',
                                fieldId: 'debit',
                                line: 0
                            }),
                            'tranid': journalRec.getValue({ fieldId: 'tranid' }),
                            'screen': journalRec.getText({ fieldId: 'custbody_jj_screen_source' }),
                            'source': source,
                            'destination': destination,

                            'modifiedBy': journalRec.getText({ fieldId: 'custbody_last_modifiedby' }),

                            'createdby': journalRec.getText({ fieldId: 'custbody_jj_created_by' }),
                            'exchangerate': exchangerate
                        });
                    else
                        journalArr.push({
                            'date': date,
                            'Subsidiary': Subsidiary,
                            'Currency': Currency,
                            'Header': Header,
                            'fund': fundSnd,
                            'fund1': fundRec,
                            'Line': Line,
                            'Amount': journalRec.getSublistText({
                                sublistId: 'line',
                                fieldId: 'credit',
                                line: 0
                            }),
                            'tranid': journalRec.getValue({ fieldId: 'tranid' }),
                            'screen': journalRec.getText({ fieldId: 'custbody_jj_screen_source' }),
                            'source': source,
                            'destination': destination,

                            'modifiedBy': journalRec.getText({ fieldId: 'custbody_last_modifiedby' }),

                            'createdby': journalRec.getText({ fieldId: 'custbody_jj_created_by' }),
                            'exchangerate': exchangerate
                        });
                    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
                            });

                            log.debug('lineItem', lineItem);

                            journalArr.push(lineItem);
                            lineItem = {};
                            log.debug('journalArrinside', journalArr);
                        }
                    }

                    log.debug('journalArr', journalArr);
                    return journalArr;

                } catch (e) {
                    return false

                }
            }

        }
        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 journal
 ******************************************************************************************************
 * Date: 29/06/2019
 * 
 * Author: Jobin & Jismi IT Services LLP 
 * 
 * Revision 1.0  Anju Babu 29/06/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;
        var currentRec = context.currentRecord;

        
        if (fieldIdSub == 'subsidiary_from' || fieldIdSub == 'subsidiary_to') {
            log.debug('currentRec', currentRec);
            var fieldTo = currentRec.getValue({
                fieldId: 'subsidiary_to'

            });
            var fieldFrom = currentRec.getValue({
                fieldId: 'subsidiary_from'

            });

            if (fieldTo == fieldFrom) {
                alert('Please enter different subsidiary');
                currentRec.setValue({
                    fieldId: fieldIdSub,
                    value: ''

                });
            }

        }

    }

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

        window.location.href = (urlOfScript);

    }

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

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

    }

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

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

        var http = 'https://';
        var urlComponents = '/app/accounting/transactions/impact.nl?trantype=journal&searchid=-36&Transaction_INTERNALID=' + JEId + '&Transaction_INTERNALIDtype=ANYOF&label=Journal'
        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,
        backAction: backAction,
        editAction: editAction,
        glImpact: glImpact,
        fieldChanged: fieldChanged
    }
});

Leave a comment

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