Convert ItemFulfillment to Invoice

Jira Code: VMNT-1

This script converts item fulfillment to invoice, trigger on after submit

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 * @NModuleScope SameAccount
 */
/**
 * Script Description
 * This script converts itemfulfillment to invoice, trigger on aftersubmit
 * 
 * Created on 30-Nov-2018 
 */
/*******************************************************************************
 * 
 * **************************************************************************
 * 
 * 
 * Author:  Jobin & Jismi IT Services LLP
 * 
 * REVISION HISTORY
 * 
 * 
 ******************************************************************************/

/**
 *  SCRIPT ID : customscriptvmnt_1_jj_ue_itemfulfillment (491)
 *  
 *  DEPLOYMENT ID :  customdeployvmnt_1_jj_ue_itemfulfillment (807)
 *  
 */
define(['N/error','N/record','N/search', 'N/log'],


    function(error, record, search, log) {


        function afterSubmit(scriptContext) {
            try {
                if (scriptContext.type == scriptContext.UserEventType.CREATE) {

                    var Items = new Object();
                    var newRec = scriptContext.newRecord;
                    var id = newRec.id; // item fulfillemet id
                    var salesOrderId = newRec.getValue({ // Here we are getting the sales order id to use in the transform function
                        fieldId: 'createdfrom'
                    }); // sales order id 

                    // Transform the Sales Order into an Invoice
                    var invoiceRecord = record.transform({
                        fromType: record.Type.SALES_ORDER,
                        fromId: salesOrderId,
                        toType: record.Type.INVOICE
                    });
                    log.debug({
                        title: 'invoiceRecord',
                        details: invoiceRecord
                    });

                    var lineCountItemSublist = newRec.getLineCount({ sublistId: 'item' });
                    for (var i = 0; i < lineCountItemSublist; i++) {
                        try {

                            var itemId = newRec.getSublistValue({
                                sublistId: 'item',
                                fieldId: 'item',
                                line: i
                            });

                            var itemQuatity = newRec.getSublistValue({
                                sublistId: 'item',
                                fieldId: 'quantity',
                                line: i
                            });

                            Items[itemId] = itemQuatity;



                        } catch (e) {
                            log.debug('err@lineCountItemSublist', e.message);
                        }
                    }

                    var InvoiceLine = invoiceRecord.getLineCount({ sublistId: 'item' });

                    for (var i = 0; i < InvoiceLine; i++) {
                        try {
                            var itemId = invoiceRecord.getSublistValue({
                                sublistId: 'item',
                                fieldId: 'item',
                                line: i
                            });
                            if (Items[itemId] != null || Items[itemId] != undefined)
                                var itemQuatity = invoiceRecord.setSublistValue({
                                    sublistId: 'item',
                                    fieldId: 'quantity',
                                    line: i,
                                    value: Items[itemId]
                                });



                        } catch (e) {
                            log.debug('err@InvoiceLine', e.message);
                        }
                    }

                    for (var i = 0; i < InvoiceLine; i++) { // to delete items excluded in fulfillment
                        try {
                            var itemId = invoiceRecord.getSublistValue({
                                sublistId: 'item',
                                fieldId: 'item',
                                line: i
                            });
                            if (Items[itemId] == null || Items[itemId] == undefined || Items[itemId] == "") {
                                invoiceRecord.removeLine({
                                    sublistId: 'item',
                                    line: i,
                                    ignoreRecalc: true
                                });
                            }
                        } catch (e) { log.debug("e", e); }

                    }


                    log.debug('Items', Items);
                    //Submit the record
                    var saveInv = invoiceRecord.save();
                    log.debug('Saved Invoice', saveInv);
                }
            } catch (e) {
                log.debug('err@afterSubmit', e.message);
            }
        }

        return {
            // beforeLoad: beforeLoad,
            // beforeSubmit: beforeSubmit,
            afterSubmit: afterSubmit
        };

    });

Leave a comment

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