Sample Financial Connectivity Parser Plugin

/**

 * @NApiVersion 2.1

 * @NScriptType fiParserPlugin

 */

define([‘N/format’, ‘N/runtime’],

    function (format, runtime) {

        function parseData(context) {

            try {

                log.debug(“parseData”, “========== STARTS EXECUTION ==========”);

                log.debug(“Context”, context);

                let rawData = JSON.parse(context.inputData.getContents());

                log.debug(“Data in db context.inputData.getContents”, rawData);

                for (let i = 0; i < rawData.length; i++) {

                    let statementArray = rawData[i].svStmtServiceRS.company[0].statement;

                    statementArray.forEach(function (statement) {

                        log.debug(“Statement”, statement);

                        let transactionData = statement.Transactions.TransactionData;

                        log.debug(“Transactions in a Statement”, transactionData);

                        // Create account data for each statement

                        if (transactionData) {

                            var accountData = context.createAccountData({

                                accountId: statement.acERPcode,

                                dataAsOfDate: statement.Transactions.ReceiptTime.split(“T”)[0],

                                openingBalance: transactionData && transactionData.OpeningBalance && transactionData.OpeningBalance.Amount,

                                closingBalance: transactionData && transactionData.ClosingBalance && transactionData.ClosingBalance.Amount,

                                currentBalance: transactionData && transactionData.ClosingAvailableBalance && transactionData.ClosingAvailableBalance.Amount,

                                dueBalance: transactionData && transactionData.ClosingBalance && transactionData.ClosingBalance.Amount

                            });

                        }

                        log.debug(“Account Data Processed”, accountData);

                        // Processing each transaction within the statement

                        let transactionDetailArray = transactionData.TransactionDetails;

                        log.debug(“transactionDetailArray”, transactionDetailArray);

                        if (transactionDetailArray.length > 0) {

                            transactionDetailArray.forEach(function (transaction) {

                                // log.debug(“Transaction”, transaction);

                                let valueDate = transaction.ValueDate;

                                let year = “20” + valueDate.substring(0, 2); // Assuming years are 20XX

                                let month = valueDate.substring(2, 4);

                                let day = valueDate.substring(4, 6);

                                // Creating a new Date object

                                let formattedDate = new Date(year, parseInt(month) 1, day); // Month needs to be zero-based (0-11)

                                // Formatting the date to YYYY-MM-DD

                                let formattedDateString = formattedDate.getFullYear() + “-“ + (formattedDate.getMonth() + 1).toString().padStart(2, ‘0’) + “-“ + formattedDate.getDate().toString().padStart(2, ‘0’);

                                accountData.createNewTransaction({

                                    date: formattedDateString,

                                    amount: transaction.Amount,

                                    transactionTypeCode: transaction.TransactionType,

                                    uniqueId: transaction.BankReference,

                                    payee: transaction.AccountOwnerReference,

                                    memo: transaction.Description,

                                    currency: transactionData.OpeningBalance.Currency

                                });

                            });

                        }

                        log.debug(“Transaction”, “created”)

                    });

                }

                log.debug(“Governance”, runtime.getCurrentScript().getRemainingUsage());

            }

            catch (e) {

                log.error(‘Error @ parseData’, e);

            }

        }

        function getStandardTransactionCodes(context) {

            log.debug(“Inside “, “getStandardTransactionCodes”)

            context.createNewStandardTransactionCode({

                transactionCode: ‘CHARGE’,

                transactionType: ‘PAYMENT’

            });

        }

        function getExpenseCodes(context) {

            // context.createNewExpenseCode({

            //     code: ‘CC’,

            //     description: ‘Customer Credit’

            // });

        }

        return {

            parseData: parseData,

            getStandardTransactionCodes: getStandardTransactionCodes,

            getExpenseCodes: getExpenseCodes

        };

    });

Leave a comment

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