Я довольно новичок в suitescript и хотел бы создать сценарий, который запускается по регулярному расписанию и только счета-фактуры, основанные на выполнении элемента (т. Е. Существует связь один к одному между счетом и выполнением элемента, но потенциально один ко многим связь между заказом на продажу и выполнением счета / товара).
Я могу успешно запустить сценарий, который преобразует заказ на продажу в целом в счет-фактуру - однако он включает в себя все позиции в заказе на продажу, а не только те, которые были выполнены (в нашем бизнесе есть много ситуаций, в которых только происходит частичное выполнение, и затем заказ должен быть закрыт). На данный момент из моего исследования я не могу найти другие примеры успешного создания этого сценария. Моя первоначальная идея состоит в том, чтобы каким-то образом сохранить 'qtyfulfilled' в заказе на продажу в массиве с товарами и как-то создать счет с этим. Однако мне кажется, что функция преобразования - это лучший способ сохранить связь между заказом на продажу и счетом.
var invoice = record.transform({
fromType: record.Type.SALES_ORDER,
fromID: salesOrderId,
toType: record.Type.INVOICE,
isDynamic: true
});
Возвращает счет-фактуру со всеми товарами из заказа клиента, а не только с выполненными.
EDIT:
Я реализовал предложенную версию кода, в которой я просто перебираю строки заказа на продажу и заменяю количество каждой строки в счете-фактуре на «выполненное количество» - однако я понял, что при нулевом количестве счет-фактура, похоже, все еще хранится эта линия с нулевым значением.
Вниз по течению от сценария счета-фактуры Я передаю запись счета-фактуры нашему поставщику EDI через интеграцию NS. Счета-фактуры, созданные с помощью моей карты сценариев, в EDI 810 (запись счета-фактуры) с 0 строками количества для выполненных позиций, которые привели к ошибкам в файле EDI.
Я написал следующее для перебора строк счета-фактуры после количества и удаления строк нулевого количества, но получаю следующую ошибку: "name": "USER_ERROR", "message": "Пожалуйста, выберите элемент для добавления" -
for (var k = 0; k < lineCount; k++) {
var currentInvoiceLineQuantity = newInvoice.getSublistValue ({
sublistId: 'item',
fieldId: 'quantity',
line: k
});
if(currentInvoiceLineQuantity === 0){
newInvoice.removeSublistSubrecord({
sublistId: 'item',
fieldid: 'item',
line: k
});
k--;
lineCount--;
}
}