Использование SuiteScript для заполнения порядка передачи - PullRequest
0 голосов
/ 07 мая 2018

В настоящее время я не могу зафиксировать позицию.Нужно ли добавлять дополнительные поля, даже если элемент является единственным обязательным?

function OLDcreateTO() //(request, response)
{
    for ( var i = 1; i < lines + 1 ; i++ )
    {
        nlapiLogExecution('DEBUG','<Before Load Script> type: '+type,"line # " + i);
        arrayName[i] = PORecord.getLineItemValue('item', 'item', i ); 
        nlapiLogExecution('DEBUG','<Before Load Script> type: '+type, arrayName[i]);
    }

    nlapiLogExecution('DEBUG','<Before Load Script> type: '+type, lines + ' lines');


    var TOrecord = nlapiCreateRecord ('transferorder');
    var TOrecordID = TOrecord.getId();
    TOrecord.setFieldValue('customform',128);
    //subsidiaries CC bedford id is 2
    TOrecord.setFieldValue('subsidiary',2);
    //testing for location and transfer location, 144 & 145
    TOrecord.setFieldValue('location',144);
    TOrecord.setFieldValue('transferlocation',145);

    nlapiLogExecution('DEBUG','<Before Load Script> type: '+type, 'break 4');
    // add new lines to a sublist
    nlapiSelectNewLineItem('item');
    // set the item and location values on the currently selected line
    nlapiSetCurrentLineItemValue('item', 'item', arrayName[1]);
    nlapiSetCurrentLineItemValue('item', 'location', 6);
    // commit the line to the database
    nlapiCommitLineItem('item');
    nlapiLogExecution('DEBUG','<Before Load Script> type: '+type, 'break 5');

    var TOResult = nlapiSubmitRecord(TOrecord, true, true);
    var TOTranID= nlapiLookupField('transferorder', TOResult, 'tranid');
     nlapiLogExecution('DEBUG','<Before Load Script> type: '+type, 'break 6');
    var poURL = nlapiResolveURL('RECORD', 'transferorder', TOResult);

    nlapiSetRedirectURL('RECORD','transferorder', TOResult);


     }

Поэтому я пытаюсь, чтобы элементы заказа на покупку заполняли поле элементов в новом заказе на перемещение с помощью кнопки наПО.После этого пользователь может внести любые изменения в запись до того, как отправить ее и создать TO.Основная проблема в том, что я не знаю, как заполнить пустое TO из сценария.У меня он там перенаправляется через строку URL, но я уверен, что есть лучший способ сделать это.

В итоге.

- Пользователь нажимает кнопку "создать TO" на PO

- переводит пользователя на страницу «создать TO», где все элементы (и некоторая различная информация) предварительно заполняются в зависимости от заказа.

- Пользователь редактирует запись и затем отправляет ее.

suitescript 1.0 // create_to_button

var newId ;
var newType ;
function beforeload(type)
{
    if(nlapiGetContext().getRole() == '3')
    {
        if(type =='view' || type == 'edit')
        {
            newId = nlapiGetRecordId();
            newType = nlapiGetRecordType();

                if(newType == 'purchaseorder')
                {

                    var strURL = "https://system.na2.netsuite.com/app/accounting/transactions/trnfrord.nl"
                    var scriptbutton = 'window.open(' + String.fromCharCode(39) + strURL + String.fromCharCode(39) + ')' ;
                    //nlapiLogExecution('DEBUG','<Before Load Script> type: '+type, 'URL: '+strURL + '&id=' + newId);
                    form.addButton('custpage_createpo', 'Create TO', scriptbutton);

                }

        }
    }
}

function loadTO() //(request, response)
{
    nlapiLogExecution('DEBUG','<Before Load Script> type: '+type, 'hello');
     nlapiLoadRecord(newType, newId);
}

Любые идеи или советы приветствуются.-Brandon

1 Ответ

0 голосов
/ 07 мая 2018

Если вы знаете, что TO будет сохранено, вы откроете Suitelet, который заполнит TO. Сохраните его и перенаправьте на новое TO, используя nlapiSetRedirect с URL-адресом из nlapiResolveURL.

Если TO не может быть сохранено, добавьте некоторые параметры в URL ссылки на задачу, который вы уже используете, и добавьте свою логику заполнения в функцию инициализации клиентской части TO. Возможно, вам потребуется добавить некоторые пользовательские поля в TO с помощью пользовательского сценария события beforeLoad, чтобы предоставить информацию, необходимую клиентскому сценарию. (Ваш клиентский скрипт также может просматривать параметры строки запроса, но в зависимости от того, что вы делаете, поиск на стороне сервера может выполняться быстрее).

...