SuiteScript 2.0: получение значений параметров, переданных из заказа на продажу в пакет, с помощью getParameter

Я новичок в Suitelet. Моя цель - перенаправить заказ на продажу в форму Suitelet. Я создаю файл.js для перенаправления из сценария userevent в пакет.

function afterSubmit(scriptContext) {

  if (scriptContext.type != 'delete') {

   var salesOrder = scriptContext.newRecord;

   var orderId = salesOrder.getValue('tranid');
   var customer = salesOrder.getValue('entity');
   var date = salesOrder.getValue('trandate');
   var total = salesOrder.getValue('total');
   var financePrice = salesOrder
     .getValue('custbody_rmb_financing_price');
   var internalid = salesOrder.id;

   var arrParams = {
    custparam_orderid : orderId,
    custparam_customer : customer,
    custparam_date : date,
    custparam_total : total,
    custparam_financeprice : financePrice,
    custparam_id : internalid
   };
   salesOrder.save({
    ignoreMandatoryFields : true
   });

   redirect.toSuitelet({
    scriptId : 'customscript_rmb_salesorderfinance_suite',
    deploymentId : 'customdeploy_rmb_salesorderfinance_suite',
    params : arrParams
   });

  }

 }
Я создаю другой файл для перенаправления и отображения данных заказа клиента.

function(serverWidget, http, runtime, record) {

   /**
    * Definition of the Suitelet script trigger point.
    * 
    * @param {Object}
    *            context
    * @param {ServerRequest}
    *            context.request - Encapsulation of the incoming
    *            request
    * @param {ServerResponse}
    *            context.response - Encapsulation of the Suitelet
    *            response
    * @Since 2015.2
    */
   function processSalesOrderFinancing(context) {

    if (context.request.method == 'GET') {

     var form = serverWidget.createForm('Sales Order Financing');

     form
       .addField({
        id : 'custpage__sdr_financing_help',
        type : 'help',
        label : 'Please assign a price to the financing of this sales order, then click Submit Financing'
       });
     var scriptObj = runtime.getCurrentScript();

      var stOrder =
      scriptObj.getParameter("custparam_orderid");
     var stCustomer =  scriptObj.getParameter("custparam_customer");

     var stDate = scriptObj.getParameter("custparam_date");
     var stTotal = scriptObj.getParameter("custparam_total");

     var orderid = form.addField({
      id : 'custpage_rmb_order',
      type : 'text',
      label : 'order#'
     });

     form.updateDefaultValues({
      custpage_rmb_order : stOrder
     });

     orderid.updateDisplayType({
      displayType : serverWidget.FieldDisplayType.INLINE
     });
     var customer = form.addField({
      id : 'custpage_rmb_customer',
      type : 'text',
      label : 'Customer:Project'
     });

     form.updateDefaultValues({
      custpage_rmb_customer : stCustomer
     });

     customer.updateDisplayType({
      displayType : serverWidget.FieldDisplayType.INLINE
     });
     var date = form.addField({
      id : 'custpage_rmb_date',
      type : 'date',
      label : 'Date'
     });

     date.updateDisplayType({
      displayType : serverWidget.FieldDisplayType.INLINE
     });

     form.updateDefaultValues({
      custpage_rmb_date : stDate
     });

     var total = form.addField({
      id : 'custpage_rmb_total',
      type : 'currency',
      label : 'Total'
     });

     form.updateDefaultValues({
      custpage_rmb_total : stTotal
     });

     total.updateDisplayType({
      displayType : serverWidget.FieldDisplayType.INLINE
     });

     var financeprice = form.addField({
      id : 'custpage_rmb_fprice',
      type : 'currency',
      label : 'Finance Price'
     });

     var salesID = form.addField({
      id : 'custpage_rmb_orderid',
      type : 'text',
      label : 'LABEL'
     });

     salesID.updateDisplayType({
      displayType : serverWidget.FieldDisplayType.HIDDEN
     });

     form.addSubmitButton('Submit Financing RMB');

     context.response.writePage({
      pageObject : form
     });
    } }
После этого кода я не получаю данные заказа на продажу в форме. Я не получаю желаемый результат. getParameter return null введите описание изображения здесь. Если у вас есть идеи, чтобы помочь мне, я буду благодарен

1 ответ

Когда вы используете runtime.getCurrentScript().getParameter() функция, вы пытаетесь получить параметры, которые определены в записи развертывания скрипта.

Когда вы используете redirect.toSuitelet() функционировать и передать в params Это добавит эти параметры в конец URL. Для доступа к параметрам оттуда в вашем Suitlet, вы должны использовать

var stCustomer = context.request.parameters['custparam_customer'];

РЕДАКТИРОВАТЬ, чтобы добавить полный пример:

Сценарий пользовательских событий

define(['N/log', 'N/redirect'], function (log, redirect) {
    function afterSubmit() {
        var arrParams = {
            custparam_customer: 1234
        };

        redirect.toSuitelet({
            scriptId: 'customscript_suitelet_test',
            deploymentId: 'customdeploy_suitelet_test',
            parameters: arrParams
        });
    }

    return {
        afterSubmit: afterSubmit
    };
});

Suitelet

define(['N/log', 'N/ui/serverWidget'], function (log, ui) {
    function onRequest(context) {
        if (context.request.method === 'GET') {
            var form = buildForm();


            context.response.writePage(form);
        }

        function buildForm() {
            var form = ui.createForm({title: 'Test Params'});
            var customerField = form.addField({
                id: 'custpage_customer',
                type: 'text',
                label: 'Customer Param'
            }).updateDisplayType({ displayType: ui.FieldDisplayType.INLINE });

            customerField.defaultValue = context.request.parameters['custparam_customer'];

            return form;
        }
    }

    return {
        onRequest: onRequest
    };
});

Результаты в:

Привет, пожалуйста, найдите код ниже:

Пользовательское событие:

define(['N/record','N/redirect'],

function(record,redirect) {

function afterSubmit(scriptContext) {

   if (scriptContext.type != 'delete') {

            var salesOrder = scriptContext.newRecord;

            var orderId = salesOrder.getValue('tranid');
            var customer = salesOrder.getValue('entity');
            var date = salesOrder.getValue('trandate');
            var total = salesOrder.getValue('total');
            var financePrice = salesOrder.getValue('custbody_rmb_financing_price');
            var internalid = salesOrder.id;

            var arrParams = {
                custparam_orderid : orderId,
                custparam_customer : customer,
                custparam_date : date,
                custparam_total : total,
                custparam_financeprice : financePrice,
                custparam_id : internalid
            };
        /*  salesOrder.save({
                ignoreMandatoryFields : true
            }); */

            redirect.toSuitelet({
                scriptId : 'customscript_sut_so_test',
                deploymentId : 'customdeploy_sut_so_test',
                parameters :  {
                'custparam_orderid' : orderId,
                'custparam_customer' : customer,
                'custparam_date' : date,
                'custparam_total' : total,
                custparam_financeprice : financePrice,
                'custparam_id' : internalid
            }
            });


        }
    }


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

});

Люкс:

define(['N/record', 'N/runtime', 'N/search', 'N/ui/serverWidget'],

function(record, runtime, search, serverWidget) {

    function onRequest(context) {

                if (context.request.method == 'GET') {

                    var form = serverWidget.createForm('Sales Order Financing');

                    form.addField({
                                id : 'custpage__sdr_financing_help',
                                type : 'help',
                                label : 'Please assign a price to the financing of this sales order, then click Submit Financing'
                            });
                    var scriptObj = context.request.parameters;

                    var stOrder = scriptObj.custparam_orderid;
                    var stCustomer =  scriptObj.custparam_customer;
                    var stDate = scriptObj.custparam_date;
                    var stTotal = scriptObj.custparam_total;

                    var orderid = form.addField({
                        id : 'custpage_rmb_order',
                        type : 'text',
                        label : 'order#'
                    });

                    form.updateDefaultValues({
                        custpage_rmb_order : stOrder
                    });

                    orderid.updateDisplayType({
                        displayType : serverWidget.FieldDisplayType.INLINE
                    });
                    var customer = form.addField({
                        id : 'custpage_rmb_customer',
                        type : 'text',
                        label : 'Customer:Project'
                    });

                    form.updateDefaultValues({
                        custpage_rmb_customer : stCustomer
                    });

                    customer.updateDisplayType({
                        displayType : serverWidget.FieldDisplayType.INLINE
                    });
                    var date = form.addField({
                        id : 'custpage_rmb_date',
                        type : 'text',
                        label : 'Date'
                    });

                    date.updateDisplayType({
                        displayType : serverWidget.FieldDisplayType.INLINE
                    });

                    form.updateDefaultValues({
                        custpage_rmb_date : stDate
                    });

                    var total = form.addField({
                        id : 'custpage_rmb_total',
                        type : 'currency',
                        label : 'Total'
                    });

                    form.updateDefaultValues({
                        custpage_rmb_total : stTotal
                    });

                    total.updateDisplayType({
                        displayType : serverWidget.FieldDisplayType.INLINE
                    });

                    var financeprice = form.addField({
                        id : 'custpage_rmb_fprice',
                        type : 'currency',
                        label : 'Finance Price'
                    });

                    var salesID = form.addField({
                        id : 'custpage_rmb_orderid',
                        type : 'text',
                        label : 'LABEL'
                    });

                    salesID.updateDisplayType({
                        displayType : serverWidget.FieldDisplayType.HIDDEN
                    });

                }
                context.response.writePage(form);

            }

            return {
                onRequest: onRequest
            };

        });
Другие вопросы по тегам