При использовании SuiteScript 1.0 у меня возникают некоторые трудности с получением клиентского депозита для применения к счету.
Пара замечаний к предисловию:
- Депозит может быть привязан к дочернему клиенту, а счет - к родителю. Я не могу изменить этот процесс по определенным причинам.
- Залог не та же сумма, что и в счете.
invoicerec
- фактическая запись счета , только что созданная предыдущим сценарием.
depositid
- внутренний идентификатор клиентской депозитной записи
invoiceid
- внутренний идентификатор записи счета
amounttoapply
- это сумма , оставшаяся , не примененная к клиентскому депозиту.
Код, который я пробовал:
var invoiceamount = invoicerec.getFieldValue('amountremaining');
var amounttoapply = 0;
if (depositleft > invoiceamount) amounttoapply = invoiceamount;
else amounttoapply = depositleft;
if (amounttoapply > 0) {
var payment = nlapiTransformRecord('invoice', invoiceid, 'customerpayment');
var invrefnum = invoicerec.getFieldValue('tranid');
payment.setFieldValue('amount',0);
payment.setFieldValue('autoapply','T');
var applylines = payment.getLineItemCount('apply');
var depositlines = payment.getLineItemCount('deposit');
for (var i=1; i < depositlines; i++) {
var lineid = payment.getLineItemValue('deposit', 'internalid', i);
log ('Compare Dep Line Trans ID#'+lineid+' with the Deposit Trans ID#'+depositid )
if (lineid == depositid ){
payment.setLineItemValue('deposit', 'amount', i, amounttoapply );
}
}
for (var i=1; i<applylines; i++) {
var lineid = payment.getLineItemValue('apply', 'internalid', i);
if (lineid == invoiceid ){
payment.setLineItemValue('apply', 'amount', i, amounttoapply );
}
}
var paymentid = nlapiSubmitRecord(payment);
Проблема: я могу получить платеж, который необходимо создать, однако он хочет применить всю сумму счета, а не взять сумму депозита клиента.
Чувствую, что упускаю что-то очень очень прямо вперед.
Ценю любую помощь.