Hello all, We connected CRM platform to NS API to...
# suitescript
t
Hello all, We connected CRM platform to NS API to do some tasks for us. One of them was PDF stream to CRM platform. We successfully achieved the file upload to sharepoint, but PDF template had missing Subsidiary logo. I read that script needs to laod Subsidiary records for it to have logo's correctly. When we add the subsidiary load part in to the script it returns _error": { "code": "INSUFFICIENT_PERMISSION"_ i have checked all subsidiary and/or company related permissions and all are set to "Full". Just wondering if anyone had similar issue before? Below script started to return permission error
Copy code
var subsidiaryRecord = file.load({
					type:'subsidiary',
					id:salesorder.getValue({fieldId:'subsidiary'})
			});
		salesorderRenderer.addRecord({
			templateName:'subsidiary',
			record: subsidiaryRecord
		});
Thanks You
b
you dont use N/file to load a subsidiary, you would use N/record
t
Thanks for your help, maybe it will help if i post the script
Copy code
/**
 *@NApiVersion 2.x
 *@NScriptType restlet
 */

define(['N/render', 'N/file', 'N/encode', 'N/record', 'N/log'], function (render, file, encode, record, log) {
    var exports = {
        get: getSalesOrderPDF
    };

    function getSalesOrderPDF(requestParams){
        log.audit({title: "getSalesOrderPDF"});

        var salesorderId = requestParams.salesorderId;
        var salesorder = fetchSalesOrder(salesorderId);

        if (!salesorder) {
            return { error: "There is no sales order with id " + salesorderId };
        }

        var salesorderPDFString = generateSalesOrderPDFString(salesorder);

        var base64EncodedSalesOrderPdfString = encode.convert({
            string: salesorderPDFString,
            inputEncoding: encode.Encoding.UTF_8,
            outputEncoding: encode.Encoding.BASE_64
        });

        return {
            data64: salesorderPDFString
        }
    }

    function fetchSalesOrder(salesorderId){
        log.audit({title: "fetchSalesOrder"});

        try {
            log.debug({
                title: "fetchSalesOrder",
                details: "fetchSalesOrder with SalesOrderId: "+salesorderId
            });
            return record.load({
                type: record.Type.SALES_ORDER,
                id: salesorderId
            })
        } catch (e) {
            log.error({
                title: "Error fetching Sales Order",
                details: e.message
            });
        }
    }

    function generateSalesOrderPDFString(salesorder){
        log.audit({title: "generateSalesOrderPDFString"});

        var salesorderId = salesorder.getValue({fieldId: 'id'});
        log.audit({
                title: "salesorderId",
                details: "SalesOrderId: "+salesorderId
            });
       var subsidiaryContent = salesorder.getValue({fieldId: 'subsidiary'});
        log.audit({
                title: "subsidiary",
                details: "subsidiary: "+subsidiaryContent
            });
        var salesorderRenderer = render.create();
        var xmlTemplateFile = file.load({
            id: '9568' // ID of Custom Template for the SalesOrders
        });
        salesorderRenderer.templateContent = xmlTemplateFile.getContents();

        salesorderRenderer.addRecord({
            templateName: 'record',
            record: salesorder
        });
log.audit({
                title: "subsidiaryRecord00",
                details: "subsidiaryRecord00: "
            });
      var subsidiaryRecord = file.load({
					type: record.Type.SUBSIDIARY,
                    isDynamic: true,
					id:5
			});
      log.audit({
                title: "subsidiaryRecord111",
                details: "subsidiaryRecord111: "+subsidiaryRecord
            });
		salesorderRenderer.addRecord({
			templateName:'subsidiary',
			record: subsidiaryRecord
		});
      
        var pdfFile = salesorderRenderer.renderAsPdf();

        return pdfFile.getContents();
    }

    return exports;
});
b
look closer at which module you are trying to use to load the subsidiary
t
I am assuming you are talking about this part
Copy code
var subsidiaryRecord = file.load
when i change it to
Copy code
var subsidiaryRecord = Record.load
it returns error \"Record\" is not defined i am not good at the scripting thing, would you able to help out by pointing out the exact issue within the script and how it should be thank you
b
you are going to need to learn about how variables and amd modules work