First transaction screen

Jira Code: TRS-2:

Description:

First transaction screen is the creation of a journal, based on the subsidiary.
Create a suitelet page, by using this page we create two custom journals. That uses subsidiary fields – “subsidiaryfrom” and “subsidiaryto”.

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
/** Script Description
* .
******************************************************************************************************
 TRUST BRIDGE GLOBAL
 CREATE CUSTOM JOURNAL FORM
******************************************************************************************************
* Date: 11/06/2019
* 
* Author: Jobin & Jismi IT Services LLP 
* 
* Revision 1.0  Anju Babu 11/06/2019

*****************************************************************************************************/
var urlArray = [{
        "Name": "CREATE",
        "SuitletId": "customscript_trus73_sl_create_je_entry",
        "DeploymentId": "customdeploy_trus73_sl_create_je_entry",
        "Link": ""
    },
    {
        "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/runtime'],

    function(record, search, serverWidget, url, 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
         */
        function onRequest(context) {

            try {
                for (var i = 0; i < urlArray.length; i++) {
                    urlArray[i]['Link'] = url.resolveScript({
                        scriptId: urlArray[i]['SuitletId'],
                        deploymentId: urlArray[i]['DeploymentId'],
                        returnExternalUrl: false
                    });


                }


                // to create form

                if (context.request.method == 'GET') {


                    var form = serverWidget.createForm({
                        title: ' Subsidiary Journal '
                    });
                    form.clientScriptFileId = 667;
                    var date = form.addField({
                        id: "date",
                        type: serverWidget.FieldType.DATE,
                        label: 'Date'

                    });

                    date.isMandatory = true;
                    var subsidiaryFrom = form.addField({
                        id: "subsidiary_from",
                        type: serverWidget.FieldType.SELECT,
                        label: 'Subsidiary From',
                        source: "subsidiary"

                    });

                    subsidiaryFrom.isMandatory = true;
                    var subsidiaryTo = form.addField({
                        id: "subsidiary_to",
                        type: serverWidget.FieldType.SELECT,
                        label: 'Subsidiary To',
                        source: "subsidiary"

                    });

                    subsidiaryTo.isMandatory = true;
                    if (subsidiaryFrom === subsidiaryTo) {
                        alert("Please select different subsidiary.");
                        subsidiaryFrom.defaultValue = ' ';
                        subsidiaryTo.defaultValue = ' ';
                    }
                    var currency = form.addField({
                        id: "currency",
                        type: serverWidget.FieldType.SELECT,
                        label: 'Currency',
                        source: "currency"

                    });


                    currency.isMandatory = true;
                    var amount = form.addField({
                        id: "amount",
                        type: serverWidget.FieldType.CURRENCY,
                        label: 'Amount'

                    });

                    amount.isMandatory = true;
                    var headerMemo = form.addField({
                        id: "header_memo",
                        type: serverWidget.FieldType.TEXT,
                        label: 'Header Memo'

                    });

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

                    });

                    var fundNumber = form.addField({
                        id: "fund_number",
                        type: serverWidget.FieldType.SELECT,
                        label: 'Fund Number',
                        source: "customrecord_cseg5"

                    });
                    var fundNumberTgf = form.addField({
                        id: "fund_send",
                        type: serverWidget.FieldType.SELECT,
                        label: 'Fund Number Send/TGF',
                        source: "customrecord_cseg5"

                    });
                    fundNumberTgf.isMandatory = true;
                    fundNumber.isMandatory = true;


                    form.addSubmitButton({
                        id: 'buttonid',
                        label: 'Create '
                    });
                    form.addButton({
                        id: 'buttonid',
                        label: 'LIST',
                        functionName: 'backAction'

                    });
                    context.response.writePage(form);
                }
                if (context.request.method == 'POST') {
                    // to get the user 
                    var userObj = runtime.getCurrentUser();
                    log.debug({
                        title: 'user',
                        details: userObj
                    });
                    var userId = userObj.id;
                    // to get the details...
                    var dateOfJE = context.request.parameters.date;
                    var subsidiaryOfFrom = context.request.parameters.subsidiary_from;
                    var subsidiaryOfTo = context.request.parameters.subsidiary_to;
                    var currencyOfJE = context.request.parameters.currency;
                    log.debug('currencyOfJE', currencyOfJE);
                    var amountOfJE = context.request.parameters.amount;
                    var headerMemoOfJE = context.request.parameters.header_memo;
                    var lineMemoOfJE = context.request.parameters.line_memo;
                    var fundNumberJE = context.request.parameters.fund_number;
                    var fundNumberTGF = context.request.parameters.fund_send;
                    if (lineMemoOfJE == null || lineMemoOfJE == undefined || lineMemoOfJE == "" || lineMemoOfJE == " ")
                        lineMemoOfJE = null;
                    var virtualAccount;
                    var accountSearchObj = search.create({
                        type: "account",
                        filters: [
                            ["custrecord_virtual_currency", "anyof", currencyOfJE]
                        ],
                        columns: [
                            search.createColumn({ name: "internalid", label: "Internal ID" }),

                            search.createColumn({
                                name: "name",
                                sort: search.Sort.ASC,
                                label: "Name"
                            }),
                            search.createColumn({ name: "type", label: "Account Type" }),
                            search.createColumn({ name: "description", label: "Description" }),
                            search.createColumn({ name: "balance", label: "Balance" }),
                            search.createColumn({ name: "custrecord_virtual_currency", label: "Virtual Currency" }),
                            search.createColumn({ name: "cseg5", label: "Fund Number" })
                        ]
                    });
                    var searchResultCount = accountSearchObj.runPaged().count;
                    log.debug("accountSearchObj result count", searchResultCount);
                    accountSearchObj.run().each(function(result) {
                        virtualAccount = result.getValue({
                            name: "internalid",
                            label: "Internal ID"
                        })

                    });
                    var jornalID;
                    if (searchResultCount > 0) {
                        if (subsidiaryOfFrom != subsidiaryOfTo) {
                            if (subsidiaryOfFrom) {


                                //Fromsubsidiary creation 
                                var journalEntryRecord = record.create({
                                    type: 'journalentry',
                                    isDynamic: true
                                });

                                // to set the body fields

                                journalEntryRecord.setText({
                                    fieldId: 'trandate',
                                    text: dateOfJE
                                })
                                journalEntryRecord.setValue({
                                    fieldId: 'subsidiary',
                                    value: subsidiaryOfFrom
                                })
                                journalEntryRecord.setValue({
                                    fieldId: 'currency',
                                    value: currencyOfJE
                                })
                                journalEntryRecord.setValue({
                                    fieldId: 'memo',
                                    value: headerMemoOfJE
                                })
                                journalEntryRecord.setValue({
                                    fieldId: 'custbody_fund_num_send',
                                    value: fundNumberJE
                                })
                                journalEntryRecord.setValue({
                                    fieldId: 'custbody_jj_created_by',
                                    value: userId
                                })


                                // to set line values

                                //debit
                                var AccountFrom = ["266", "293", virtualAccount, virtualAccount, "293", "266"]; //346;
                                log.debug("subsidiaryOfFrom", subsidiaryOfFrom);
                                var subnettingValue = searchSubnetting(subsidiaryOfFrom);
                                var fundNumFrom = [fundNumberJE, fundNumberTGF, fundNumberTGF, fundNumberJE, subnettingValue, subnettingValue];
                                //var creditAccountFrom = [293, currencyAccnt, 266]; //286;

                                for (var k = 0; k < AccountFrom.length - 3; k++) {
                                    log.debug('debit', AccountFrom[(2 * k)])
                                    log.debug('credit', AccountFrom[(2 * k) + 1])
                                    var selectLine = journalEntryRecord.selectNewLine({
                                        sublistId: 'line'
                                    });
                                    //Debit line field Values
                                    journalEntryRecord.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: AccountFrom[(2 * k)], //Debit Account Id
                                        fieldId: 'account'
                                    });
                                    journalEntryRecord.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: amountOfJE, //Amount of checque
                                        fieldId: 'debit'
                                    });
                                    // memo
                                    journalEntryRecord.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: lineMemoOfJE, //Amount of checque
                                        fieldId: 'memo'
                                    });
                                    //cseg5
                                    journalEntryRecord.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: fundNumFrom[(2 * k)], //Amount of checque
                                        fieldId: 'cseg5'
                                    });
                                    journalEntryRecord.commitLine({ sublistId: 'line' });

                                    // virtual account


                                    var selectLine = journalEntryRecord.selectNewLine({
                                        sublistId: 'line'
                                    });
                                    //Credit line field Values
                                    journalEntryRecord.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: AccountFrom[(2 * k) + 1], //Credit Account Id
                                        fieldId: 'account'
                                    });
                                    journalEntryRecord.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: amountOfJE, //Amount of checque
                                        fieldId: 'credit'
                                    });
                                    // memo
                                    journalEntryRecord.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: lineMemoOfJE, //Amount of checque
                                        fieldId: 'memo'
                                    });
                                    //cseg5
                                    journalEntryRecord.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: fundNumFrom[(2 * k) + 1], //Amount of checque
                                        fieldId: 'cseg5'
                                    });
                                    journalEntryRecord.commitLine({ sublistId: 'line' });


                                }

                                log.debug('journalEntryRecord', journalEntryRecord);


                                // to set the User created By
                                journalEntryRecord.setValue({
                                    fieldId: 'custbody_jj_created_by',
                                    value: userId
                                })


                                jornalID = journalEntryRecord.save({
                                    ignoreMandatoryFields: true
                                });
                                log.debug('jornalID', jornalID);




                            }


                            if (subsidiaryOfTo) {

                                //Tosubsidiary joournal creation
                                var journalEntryRecordTo = record.create({
                                    type: 'journalentry',
                                    isDynamic: true
                                });

                                // to set the body fields

                                journalEntryRecordTo.setText({
                                    fieldId: 'trandate',
                                    text: dateOfJE
                                })
                                journalEntryRecordTo.setValue({
                                    fieldId: 'subsidiary',
                                    value: subsidiaryOfTo
                                })
                                journalEntryRecordTo.setValue({
                                    fieldId: 'currency',
                                    value: currencyOfJE
                                })
                                journalEntryRecordTo.setValue({
                                    fieldId: 'memo',
                                    value: headerMemoOfJE
                                })
                                journalEntryRecordTo.setValue({
                                    fieldId: 'custbody_fund_num_send',
                                    value: fundNumberJE
                                })
                                // to set the User created By
                                journalEntryRecordTo.setValue({
                                    fieldId: 'custbody_jj_created_by',
                                    value: userId
                                })

journalEntryRecord.setValue({
                                    fieldId: 'custbody_jj_created_by',
                                    value: userId
                                })
                                // journalEntryRecord.setValue({
                                //     fieldId: 'custbody_fund_num_send',
                                //     value: fundNumberSendOfJE
                                // })



                                // to set line values

                                //debit

                                var AccountTo = [virtualAccount, virtualAccount, "266", "293"]; //286;
                                var fundNumTo = [fundNumberJE, "393", "393", fundNumberJE];

                                for (var n = 0; n < AccountTo.length - 2; n++) {
                                    var selectLine = journalEntryRecordTo.selectNewLine({
                                        sublistId: 'line'
                                    });
                                    //Debit line field Values
                                    journalEntryRecordTo.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: AccountTo[(2 * n)], //Debit Account Id
                                        fieldId: 'account'
                                    });
                                    journalEntryRecordTo.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: amountOfJE, //Amount of checque
                                        fieldId: 'debit'
                                    });
                                    // memo
                                    journalEntryRecordTo.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: lineMemoOfJE, //Amount of checque
                                        fieldId: 'memo'
                                    });
                                    //cseg5
                                    journalEntryRecordTo.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: fundNumTo[(2 * n)], //Amount of checque
                                        fieldId: 'cseg5'
                                    });
                                    journalEntryRecordTo.commitLine({ sublistId: 'line' });

                                    // virtual account


                                    var selectLine = journalEntryRecordTo.selectNewLine({ sublistId: 'line' });
                                    //Credit line field Values
                                    journalEntryRecordTo.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: AccountTo[(2 * n) + 1], //Credit Account Id
                                        fieldId: 'account'
                                    });
                                    journalEntryRecordTo.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: amountOfJE, //Amount of checque
                                        fieldId: 'credit'
                                    });
                                    // memo
                                    journalEntryRecordTo.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: lineMemoOfJE, //Amount of checque
                                        fieldId: 'memo'
                                    });
                                    //cseg5
                                    journalEntryRecordTo.setCurrentSublistValue({
                                        sublistId: 'line',
                                        value: fundNumTo[(2 * n) + 1], //Amount of checque
                                        fieldId: 'cseg5'
                                    });
                                    journalEntryRecordTo.commitLine({ sublistId: 'line' });
                                }

                                jornalIDTo = journalEntryRecordTo.save({
                                    ignoreMandatoryFields: true
                                });

                            }
                            // to get the URl
                            if (jornalIDTo && jornalID) {
                                var JE_RECORD = record.load({
                                    type: "journalentry",
                                    id: jornalID,
                                    isDynamic: false,
                                });
                                JE_RECORD.setValue({
                                    fieldId: 'custbody_jj_child_destination',
                                    value: jornalIDTo
                                })
                                var JE_JOURNAL_FROM = JE_RECORD.save({
                                    ignoreMandatoryFields: true
                                });

                                var JE_RECORD_TO = record.load({
                                    type: "journalentry",
                                    id: jornalIDTo,
                                    isDynamic: false,
                                });
                                JE_RECORD_TO.setValue({
                                    fieldId: 'custbody_jj_source_of_origin',
                                    value: jornalID
                                })
                                var JE_JOURNAL_TO = JE_RECORD_TO.save({
                                    ignoreMandatoryFields: true
                                });

                                var htmlCode = '<html><head></head><body><script>confirm("Success fully created Journal Entry. Internal ID of Journal entries are ' + JE_JOURNAL_TO + ' & ' + JE_JOURNAL_FROM + '");window.location.href ="' + urlArray[1]['Link'] + '"</script></body></html>';
                            } else
                                var htmlCode = '<html><head></head><body><script>confirm("Sorry we could not create Journal Entry ")window.location.href ="' + urlArray[0]['Link'] + '"</script></body></html>';
                            context.response.write(htmlCode);
                        } else {


                            var htmlCode = '<html><head></head><body><script>confirm("Please enter different subsidiaries ");window.location.href ="' + urlArray[0]['Link'] + '"</script></body></html>';
                            context.response.write(htmlCode);
                        }


                    } else {


                        var htmlCodeFRom = '<html><head></head><body><script>confirm("Sorry we could not create Journal Entry due to no virtual account for the selected currency ");window.location.href ="' + urlArray[0]['Link'] + '"</script></body></html>';
                        log.debug("else inn", htmlCodeFRom)
                        context.response.write(htmlCodeFRom);
                    }




                }

            } catch (e) {
                log.debug("Err@ onRequest FN ", e);
                log.error("Err@ onRequest FN ", e);
                //console.log("Err@ FN =",e);
            }

        }

        function searchSubnetting(subsidiaryOfFrom) {
            log.debug("subsidiaryOfFrom", subsidiaryOfFrom);
            var customrecord_cseg5SearchObj = search.create({
                type: "customrecord_cseg5",
                filters: [
                    ["custrecord_fund_subsidiary", "anyof", subsidiaryOfFrom]
                ],
                columns: [
                    search.createColumn({ name: "internalid", label: "Internal ID" }),
                    search.createColumn({
                        name: "name",
                        sort: search.Sort.ASC,
                        label: "Name"
                    }),
                    search.createColumn({ name: "custrecord_fund_subsidiary", label: "Fund Subsidiary" })
                ]
            });
            var searchResultCount = customrecord_cseg5SearchObj.runPaged().count;
            log.debug("customrecord_cseg5SearchObj result count", searchResultCount);
            var subnetting;
            customrecord_cseg5SearchObj.run().each(function(result) {
                // .run().each has a limit of 4,000 results
                subnetting = result.getValue(customrecord_cseg5SearchObj.columns[0]);
                return true;
            });
            log.debug("subnetting", subnetting);
            return subnetting;
        }

        return {
            onRequest: onRequest
        };

    });
            
           

Leave a comment

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