Luis
10/30/2024, 9:00 AMLuis
10/30/2024, 9:00 AM/**
 * @NApiVersion 2.x
 * @NScriptType MapReduceScript
 */
 define(['N/record', 'N/search', 'N/runtime'], function (record, search, runtime) {
    function getInputData() {
        
        var savedSearchId = runtime.getCurrentScript().getParameter({ name: 'custscript_saved_search' });
        log.debug('savedSearchId', savedSearchId);
        var locationId = runtime.getCurrentScript().getParameter({ name: 'custscript_location' });
        log.debug('locationId', locationId);
        
        return search.load({ id: savedSearchId });
    }
    function map(context) {
        var result = JSON.parse(context.value);
        log.debug('Map: result', result);
        
        var journalEntryId = result.id; 
        log.debug('Map: journalEntryId', journalEntryId);
        
        var lineId = result.values.line; 
        log.debug('Map: lineId', lineId);
        
        context.write({
            key: journalEntryId,
            value: lineId 
        });
    }
    function reduce(context) {
        var journalEntryId = context.key; 
        log.debug('Reduce: journalEntryId', journalEntryId);
        var locationId = runtime.getCurrentScript().getParameter({ name: 'custscript_location' });
        log.debug('Reduce: locationId', locationId);
        
        var journalEntry = record.load({
            type: record.Type.ADV_INTER_COMPANY_JOURNAL_ENTRY,
            id: journalEntryId,
            isDynamic: true
        });
        log.debug('Reduce: journalEntry', journalEntry);
        var lineIdsToUpdate = context.values;
        log.debug('Reduce: lineIdsToUpdate', lineIdsToUpdate);
        var jeLineCount = journalEntry.getLineCount({ sublistId: 'line' });
        log.debug('Reduce: jeLineCount', jeLineCount);
        for (var i = 0; i < jeLineCount; i++) {
            var currentLineId = journalEntry.getSublistValue({
                sublistId: 'line',
                fieldId: 'line',
                line: i
            });
            log.debug('Reduce: currentLineId', currentLineId);
            if (lineIdsToUpdate.includes(currentLineId.toString())) {
                journalEntry.setSublistValue({
                    sublistId: 'line',
                    fieldId: 'location',
                    line: i,
                    value: locationId
                });
                log.debug('Reduce: Updated line', currentLineId);
            }
        }
        journalEntry.save();
    }
    function summarize(summary) {
        log.audit({
            title: 'Summary',
            details: 'Processed ' + summary.inputSummary.totalKeys
        });
        if (summary.errors) {
            log.error({
                title: 'Errors',
                details: JSON.stringify(summary.errors)
            });
        }
    }
    return {
        getInputData: getInputData,
        map: map,
        reduce: reduce,
        summarize: summarize
    };
});battk
10/30/2024, 12:02 PMLuis
10/30/2024, 12:58 PM