【发布时间】:2022-08-03 00:23:19
【问题描述】:
我的预定脚本在循环中创建customerpayment 对象并将其应用于选定的发票。
预期:客户付款记录保存后,客户付款应应用准确的发票。
问题:客户付款记录保存后,我打开客户付款并应用不同的发票。
创建客户付款的代码:
if (paydata != null) {
paymentfee = paydata.paymentFee;
for (var y = 0; y < paydata.payments.length; y++) {
var paymentrec = null;
log.debug(\'entity\', paydata.payments[y].customerRef);
paymentrec = record.create({
type: \'customerpayment\',
defaultValues: {
\'entity\': paydata.payments[y].customerRef
}
});
paymentrec.setValue({
fieldId: \'subsidiary\',
value: paydata.subsidiaryId
});
// when we create the payment with account - it\'s automatically deposited
paymentrec.setValue({
fieldId: \'account\',
value: paydata.account
});
// adding support for custom form functionality
if (paydata.payments[y].customform) {
paymentrec.setValue({
fieldId: \'customform\',
value: paydata.payments[y].customform
});
log.debug(\'Custom form applied\', paydata.payments[y].customform);
}
paymentrec.setValue({
fieldId: \'memo\',
value: paydata.payments[y].note
});
paymentrec.setValue({
fieldId: \'payment\',
value: paydata.payments[y].paymentAmount
});
// // debugging the auto-application on the invoices
// paymentrec.setValue({
// fieldId: \'autoapply\',
// value: false
// })
paymentrec.setValue({
fieldId: \'custbody_peakflo_payref\',
value: paydata.peakfloPaymentRef
});
paymentrec.setValue({
fieldId: \'custbody_peakflo_payacct\',
value: paydata.account
});
paymentrec.setValue({
fieldId: \'custbody_peakflo_payfee\',
value: paydata.paymentFee
});
paymentrec.setText({
fieldId: \'currency\',
value: paydata.currency
});
for (var z = 0; z < paydata.payments[y].invoiceLines.length; z++) {
if (paydata.payments[y].invoiceLines[z].NetSuiteInvoiceInternalId != \'\' && paydata.payments[y].invoiceLines[z].NetSuiteInvoiceInternalId != null) {
log.debug(\'count\', paymentrec.getLineCount({
sublistId: \'apply\'
}));
for (var al = 0; al < paymentrec.getLineCount({sublistId: \'apply\'}); al++) {
log.debug(\'comparison data\', JSON.stringify(
{
recordInternalId: paymentrec.getSublistValue({
sublistId: \'apply\',
fieldId: \'internalid\',
line: al
}),
payloadInvoiceId: paydata.payments[y].invoiceLines[z].NetSuiteInvoiceInternalId,
isEqual: paymentrec.getSublistValue({
sublistId: \'apply\',
fieldId: \'internalid\',
line: al
}) == paydata.payments[y].invoiceLines[z].NetSuiteInvoiceInternalId
}));
if (paymentrec.getSublistValue({
sublistId: \'apply\',
fieldId: \'internalid\',
line: al
}) == paydata.payments[y].invoiceLines[z].NetSuiteInvoiceInternalId) {
paymentrec.setSublistValue({
sublistId: \'apply\',
fieldId: \'apply\',
line: al,
value: true
});
paymentrec.setSublistValue({
sublistId: \'apply\',
fieldId: \'amount\',
line: al,
value: paydata.payments[y].invoiceLines[z].PaymentAmount
});
var inv_qm = record.create({type: \'customrecord_peakflo_history_qm\'});
inv_qm.setValue({fieldId: \'custrecord_pf_hqm_dg_pri\', value: \'2\'});
inv_qm.setValue({
fieldId: \'custrecord_pf_hqm_recsub\',
value: paymentrec.getValue({fieldId: \'subsidiary\'})
});
inv_qm.setValue({
fieldId: \'custrecord_pf_hqm_rectype\',
value: \'transaction\'
});
inv_qm.setValue({
fieldId: \'custrecord_pf_hqm_recid\',
value: paydata.payments[y].invoiceLines[z].NetSuiteInvoiceInternalId
});
var inv_qmid = inv_qm.save();
log.debug(\'payment amt\', paydata.payments[y].invoiceLines[z].PaymentAmount);
log.debug(\'HQM created id\', inv_qmid);
}
log.debug(\'Selected\', paymentrec.getSublistValue({
sublistId: \'apply\',
fieldId: \'apply\',
line: al
}));
}
}
}
var paymentrecid = paymentrec.save({
ignoreMandatoryFields: true,
enableSourcing: true
});
record.submitFields({
type:\'customrecord_peakflo_qm\',
id:pfp_s_res[x].id,
values:{
custrecord_pf_processed:true
}
});
log.debug(\'payment id\', paymentrecid);
if (paymentrecid) {
paymentref.push(paymentrecid);
}
}
}
根据日志,customerpayment 应应用发票 9236675。
但是,当我打开 customerpayment 时,它显示已应用发票 9236677。
我可以在客户端实例中重现它,但它似乎在我自己的实例中正常工作。这背后的原因是什么?