Populate Credit Applied transaction data into PDF

User Event

function beforLoad(){
try{
                            if (scriptContext.type == 'view') {

                                    var currentRec = scriptContext.newRecord;
                                    log.debug('current record',currentRec);
                                    var recFieldObj ={}
                                    var arDocType = currentRec.getValue({
                                            fieldId:'custbody_scg_ar_doctype'
                                    });
                                    recFieldObj.arDocType = arDocType;

                                    var printLine = currentRec.getValue({
                                            fieldId:'custbody_scg_print1line'
                                    });
                                    recFieldObj.printLine = printLine;
                                    var paymentAppliedAmount = currentRec.getValue({
                                            fieldId:'applied'
                                    });
                                    log.debug('applied amount',paymentAppliedAmount);
                                    var appliedToCount = currentRec.getLineCount({
                                            sublistId: 'apply'
                                    });
                                    log.debug('appliedToCount',appliedToCount);

                                    var creditAppliedObj2 ={}
                                    var discTakenAmtObj ={}
                                    var discTakenTotal =0;

                                    //Get the Disc Take Amount from transaction applied on the payment record
                                    var appliedArr =[]
                                    if(appliedToCount >0){
                                            for (var j = 0; j < appliedToCount; j++){
                                                    var appliedObj ={}
                                                    var tranId = currentRec.getSublistValue({
                                                            sublistId: 'apply',
                                                            fieldId: 'internalid',
                                                            line: j,
                                                    });
                                                    var refNo = currentRec.getSublistValue({
                                                            sublistId: 'apply',
                                                            fieldId: 'refnum',
                                                            line: j,
                                                    });

                                                    var appliedPayment = currentRec.getSublistValue({
                                                            sublistId: 'apply',
                                                            fieldId: 'amount',
                                                            line: j,
                                                    });
                                                    appliedObj.tranId =tranId;
                                                    appliedObj.refNo =refNo;
                                                    appliedObj.appliedPayment =appliedPayment;
                                                    appliedArr.push(appliedObj)
                                                    var discTakenAmt = currentRec.getSublistValue({
                                                            sublistId: 'apply',
                                                            fieldId: 'disc',
                                                            line: j,
                                                    });
                                                    log.debug('discTakenAmt',discTakenAmt)
                                                    discTakenTotal += Number(discTakenAmt)

                                            }
                                    }
                                    log.debug('appliedArr',appliedArr)
                                    //started getting credit sublist

                                    var numLines = currentRec.getLineCount({
                                            sublistId: 'credit'
                                    });
                                    log.debug('credit lines',numLines);

                                    var creditAppliedArr =[]

                                    if(numLines > 0){

                                            for (var line = 0; line < numLines; line++){
                                                    var creditAppliedObj ={}

                                                    var appliedTranId = currentRec.getSublistValue({
                                                            sublistId: 'credit',
                                                            fieldId: 'internalid',
                                                            line: line,
                                                    });
                                                    log.debug('credit appliedTranId',appliedTranId);
                                                    var appliedAmount = currentRec.getSublistValue({
                                                            sublistId: 'credit',
                                                            fieldId: 'amount',
                                                            line: line,
                                                    });
                                                    log.debug('credit appliedAmount',appliedAmount);
                                                    var appliedDoc = currentRec.getSublistValue({
                                                            sublistId: 'credit',
                                                            fieldId: 'refnum',
                                                            line: line,
                                                    });
                                                    log.debug('credit sublistFieldValue document number',appliedDoc);
                                                    creditAppliedObj.appliedTranId = appliedTranId
                                                    creditAppliedObj.appliedDoc = appliedDoc
                                                    creditAppliedObj.appliedAmount = appliedAmount;
                                                    creditAppliedObj.creditAppliedTransaction = 0
                                                    creditAppliedArr.push(creditAppliedObj)
                                            }
                                    }


                                    discTakenAmtObj.discTakenTotal = discTakenTotal;
                                    creditAppliedArr.push(discTakenAmtObj);
                                    creditAppliedObj2.paymentAppliedAmount = paymentAppliedAmount;
                                    creditAppliedArr.push(creditAppliedObj2);

                                    log.debug('creditAppliedArr', creditAppliedArr);

                                    scriptContext.form.addButton({
                                            id: 'custpage_receipt_button',
                                            label: 'Receipt',
                                            functionName: 'printReceipt(' + JSON.stringify(creditAppliedArr) +',' + JSON.stringify(appliedArr) +' ,'+ JSON.stringify(recFieldObj) +')'//function triggered on button click
                                    });

                                    scriptContext.form.clientScriptFileId = 33775;//File Cabinet internal ID of CS
                            }
                    }catch (e){
                            log.debug({
                                    title: e.name,
                                    details: e.message
                            });
                    }
}

Client Script

 function printReceipt(creditAppliedObj,appliedArr,recFieldObj) {
            try {

                var record = currentRecord.get();
                var recId = record.id;
                var recType = record.type;
                console.log('record id',recId);
                console.log('arDocType',recFieldObj.arDocType);

                //map to Suitelet
                if(recFieldObj.arDocType == 7 || recFieldObj.arDocType == 1){
                    var suiteletURL = url.resolveScript({
                        scriptId: "customscript417",
                        deploymentId: "customdeploy1",
                        params: {
                            recId:recId,
                            creditApplied: JSON.stringify(creditAppliedObj),
                            appliedObj : JSON.stringify(appliedArr),
                            recFieldObj : JSON.stringify(recFieldObj)
                        }
                    });
                    console.log('url',suiteletURL);
                    //Open the suiteletURL in new page
                    window.open(suiteletURL);
                }
                else {
                    alert('Choose AR Document Type either ใบเสร็จรับเงิน - AR or ใบกำกับภาษี/ใบเสร็จรับเงิน - AR.');
                }

            }catch (e) {
                log.error({
                    title: e.name,
                    details: e.message
                });
            }
        }

Suitelet

function displayAppliedTransaction(){
var appliedTransactions = request.parameters.appliedObj;
            appliedTransactions = JSON.parse(appliedTransactions)
            log.debug('appliedTransactions', appliedTransactions);

            if(appliedTransactions.length >0){
                for(var tranLine =0; tranLine < appliedTransactions.length; tranLine++){
                    var receiptLineObj ={}
                    var tranId = appliedTransactions[tranLine].tranId;
                    var docNo = appliedTransactions[tranLine].refNo;
                    var appliedAmount = appliedTransactions[tranLine].appliedPayment;
                    var appliedWithholdAmt = appliedTranWithholdObj[tranId];
                    var appliedPayment = Number(appliedAmount)+Number(appliedWithholdAmt);

                    if(appliedPayment){
                        RECEIPT_TOTAL += appliedPayment
                    }



                    receiptLineObj.docNo = docNo;
                    receiptLineObj.appliedPayment = appliedPayment;
                    receiptLineObj.appliedTransaction = 0
                    if(receiptLineObj.docNo){
                        receiptLineArr.push(receiptLineObj)
                    }



                }
            }


            var creditApplied = request.parameters.creditApplied;
            creditApplied = JSON.parse(creditApplied)
            log.debug('creditApplied', creditApplied);
            if(creditApplied.length >0){
                for(var creditApply =0;creditApply< creditApplied.length;creditApply++){
                    var receiptLineObj2 ={}
                    var docNo2 = creditApplied[creditApply].appliedDoc
                    var appliedPayment2 = creditApplied[creditApply].appliedAmount

                    if(appliedPayment2){
                        RECEIPT_TOTAL -= Number(appliedPayment2)
                    }

                    receiptLineObj2.docNo = docNo2;
                    receiptLineObj2.appliedPayment = appliedPayment2;
                    receiptLineObj2.appliedTransaction = 1
                    if(receiptLineObj2.docNo){
                        receiptLineArr.push(receiptLineObj2)
                    }


                    if(creditApplied[creditApply].appliedTranId){
                        APPLIED_TRAN_IDS.push(creditApplied[creditApply].appliedTranId)
                    }

                    // DISC_TAKEN_TOTAL = creditApplied[creditApplied.length - 1].discTakenTotal;
                    // log.debug('creditApplied.discTakenTotal',creditApplied[creditApply].discTakenTotal)

                }
            }
}

Leave a comment

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