Нужна помощь в понимании того, как добавить экземпляр существующего элемента в счет - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть сценарий SSP, который пытается создать счет для существующего клиента с оплатой, определяемой тем, за что он подал заявку.Я настроил элементы оплаты за неинвентарные позиции, и у меня есть запрос, который успешно получает внутренний идентификатор нужного элемента.Затем скрипт пытается создать счет-фактуру, и при этом я пытаюсь добавить существующий элемент, используя найденный мной внутренний идентификатор.Проблема в том, что я не могу понять, как это связано, браузер схемы показывает поле с именем itemlist, имеющее тип InvoiceItemlist, которое состоит из invoiceItems.

Я понимаю, что это означает, что яРабота с подсписком, но нет типа подсписка invoiceitem, поэтому я предполагаю, что я работаю с элементами.Итак, я пробовал разные способы создания новой записи подсписка, но большинство примеров, которые я могу найти, - это как создать новую запись подсписка, где я просто хочу создать экземпляр одного из существующих элементов.Я включил фрагмент кода с моей текущей попыткой, которая не работает.

var recNewInvoice = nlapiCreateRecord('invoice', {recordmode:'dynamic'});
        recNewInvoice.setFieldValue('customform', '104');
        recNewInvoice.setFieldValue('entity', stCustId);
        // Add Item to invoice
        _AddItem(recNewInvoice, stFeeId);
        if (stDiscountId) {
            _AddItem(recNewInvoice, stDiscountId);
        }
        try {
            objDataResponse.Invoice.Id = nlapiSubmitRecord(recNewInvoice, true, true);
        }
        catch (ex) {
            throw nlapiCreateError('WRITE_FAILED','nlapiSubmitRecord for invoice failed.' + ex.message);
        }

// further down I define the function

function _AddItem(recInvoice, ItemID){
    recInvoice.selectNewLineItem('item');
    recInvoice.setCurrentLineItemValue('item','item',ItemID);
    recInvoice.setCurrentLineItemValue('item','quantity',1);
    recInvoice.commitLineItem('item', false);    
};

Я использую функцию для _AddItem, потому что я могу добавлять скидку, а также плату иЯ считаю, что они обрабатываются одинаково.Когда я запускаю код с контрольным примером, который возвращает действительный stFeeId, я получаю следующую ошибку в журнале выполнения SSP:

nlapiSubmitRecord для неоплаченного счета. Пожалуйста, выберите элемент для добавления

* editдобавлена ​​ошибка

* edit: я обновил часть кода, чтобы показать изменения, которые я сделал, основываясь на разных ресурсах, которые я нашел.Исходная ошибка не генерируется, но я получаю эту новую ошибку:

nlapiSubmitRecord для счета-фактуры не удалось. Элементы, которые вы запросили в записи, были удалены с момента получения формы

1 Ответ

0 голосов
/ 28 февраля 2019

Когда я сталкиваюсь с проблемой, подобной этой, я обычно пытаюсь создать ту же запись, которую пытаюсь создать, используя скрипт с точно такими же значениями и устанавливая поля точно в том же порядке, что и скрипты.

Я делаю это, потому что, как и в вашем случае здесь, порядок имеет решающее значение: при создании счета-фактуры установка объекта будет влиять на то, что вы можете использовать в других полях, включая товары: так что если это возможночто вы пытаетесь использовать Item1 с EntityX, и Item1 не может быть выбран для этого EntityX, поэтому поле элемента останется пустым, и вы получите эту ошибку.

Поэтому попробуйте создать Счет-фактуру из пользовательского интерфейса иПосмотрите, сможете ли вы выбрать свой товар после выбора объекта: если нет, то вы должны исправить свою конфигурацию, и как только вы сможете полностью создать свой счет из пользовательского интерфейса, вы сможете сделать это из скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...