我到处搜索,但找不到任何像样的参考资料,如何使用 SuiteTalk API 在 NetSuite 中获取发票的付款和未付金额。
文档不存在,示例也不存在,所以我在这里摸索。
当使用 get 方法检索发票时,我希望指定这些(字段
amountPaid
和 amountRemaining
),但事实并非如此。
不幸的是,下一个停靠点是搜索已应用于目标发票的客户付款。搜索有效,但更糟糕的是,每笔付款都被退回而没有任何申请详细信息,因此需要额外致电以获取所有申请详细信息并计算出应用于发票的总付款金额。
这是真的唯一的方法吗?
(我可能必须考虑存款和存款申请,因为它们是单独的记录类型。叹气)
如有任何帮助,我们将不胜感激
更新:工作代码示例
long internalInvoiceId = 42;
TransactionSearchAdvanced tsa = new TransactionSearchAdvanced()
{
columns = new TransactionSearchRow()
{
basic = new TransactionSearchRowBasic()
{
total = new SearchColumnDoubleField[] { new SearchColumnDoubleField() },
amount = new SearchColumnDoubleField[] { new SearchColumnDoubleField() },
amountPaid = new SearchColumnDoubleField[] { new SearchColumnDoubleField() },
amountRemaining = new SearchColumnDoubleField[] { new SearchColumnDoubleField() }
}
},
criteria = new TransactionSearch()
{
basic = new TransactionSearchBasic()
{
mainLine = new SearchBooleanField()
{
searchValue = true,
searchValueSpecified = true
},
type = new SearchEnumMultiSelectField()
{
@operator = SearchEnumMultiSelectFieldOperator.anyOf,
operatorSpecified = true,
searchValue = new string[] { "_invoice" }
},
internalIdNumber = new SearchLongField()
{
@operator = SearchLongFieldOperator.equalTo,
operatorSpecified = true,
searchValue = internalInvoiceId,
searchValueSpecified = true
}
}
}
};
SearchResult sr = nss.search(tsa);
进行交易搜索。
标准:
主线:是
类型:发票
(可选)内部 ID:“您发票的内部 ID”
结果/列:
支付金额
剩余金额
将上面的内容翻译成SuiteTalk API (TransactionSearchAdvanced),你应该能够得到你想要的。
这是一个使用 NetSuite ruby 绑定的函数,用于检索发票上剩余(到期)的金额:
def amount_due_for_invoice(ns_invoice)
search = NetSuite::Records::Invoice.search(
criteria: {
basic: [
{
field: 'type',
operator: 'anyOf',
value: %w(_invoice)
},
{
field: 'mainLine',
value: true
},
{
field: 'internalIdNumber',
operator: 'equalTo',
value: ns_invoice.internal_id
}
]
},
columns: {
'tranSales:basic' => {
'platformCommon:internalId/' => {},
'platformCommon:amountRemaining' => {}
}
}
)
if search.results.size > 1
fail "invoice search on internalId should never return more than a single result"
end
search.results.first.attributes[:amount_remaining].to_f
end
此处的另一种解决方案是创建一个自定义交易主体公式字段,该字段提取发票的
amountremainingtotalbox
字段的值。
有做过这方面工作的人可以帮忙吗?这是我根据客户 ID 获取发票的代码。结果返回,但即使发票有剩余金额(到期),剩余金额也始终为 0。
string customerid = 12345;
TransactionSearchAdvanced tsa = new TransactionSearchAdvanced();
TransactionSearch ts = new TransactionSearch();
TransactionSearchBasic tsb = new TransactionSearchBasic();
tsb.mainLine = new SearchBooleanField();
tsb.mainLine.searchValueSpecified = true;
tsb.mainLine.searchValue = true;
tsb.type = new SearchEnumMultiSelectField();
tsb.type.@operator = SearchEnumMultiSelectFieldOperator.anyOf;
tsb.type.operatorSpecified = true;
tsb.type.searchValue = new string[] { "_invoice" };
tsb.entity = new SearchMultiSelectField();
tsb.entity.@operator = SearchMultiSelectFieldOperator.anyOf;
tsb.entity.operatorSpecified = true;
tsb.entity.searchValue = new RecordRef[1];
tsb.entity.searchValue[0] = new RecordRef();
tsb.entity.searchValue[0].type = RecordType.customer;
tsb.entity.searchValue[0].typeSpecified = true;
tsb.entity.searchValue[0].internalId = customerid;
ts.basic = tsb;
tsa.criteria = ts;
_service.tokenPassport = CreateTokenPassport();
SearchResult response = _service.search(obj);