如何通过QBXML解除QuickBooks中ReceivePayment与发票的关联
QuickBooks Desktop收款与发票解除关联操作方案
你参考的基础聚合类清空规则仅适用于地址、联系人信息这类普通属性聚合,不适用于AppliedToTxnMod这类交易关联类聚合,不能直接传入空标签触发清空,需要按以下规则配置参数:
方法1:指定待解绑发票重置关联金额为0
你需要先从之前ReceivePaymentQueryRS返回的AppliedToTxnRet中,获取原关联发票的TxnID,在ReceivePaymentMod中添加完整的AppliedToTxnMod节点,将关联金额设置为0即可解除绑定:
正确的QBXML示例如下:
<ReceivePaymentModRq> <ReceivePaymentMod> <TxnID>612-1631305229</TxnID> <EditSequence>1631418450</EditSequence> <CustomerRef> <ListID>80000089-1613077827</ListID> </CustomerRef> <ARAccountRef> <ListID>8000001B-1578805288</ListID> </ARAccountRef> <TxnDate>2021-09-04</TxnDate> <RefNumber>cash11</RefNumber> <TotalAmount>11.00</TotalAmount> <PaymentMethodRef> <ListID>80000001-1578006261</ListID> </PaymentMethodRef> <Memo/> <DepositToAccountRef> <ListID>80000021-1620340635</ListID> </DepositToAccountRef> <!-- 替换原空标签的完整关联修改节点 --> <AppliedToTxnMod> <TxnID>xxxx-xxxxxxx</TxnID> <!-- 替换为原关联发票的实际TxnID --> <AppliedAmount>0.00</AppliedAmount> <DiscountApplied>0.00</DiscountApplied> <!-- 原关联存在折扣时添加 --> </AppliedToTxnMod> </ReceivePaymentMod> </ReceivePaymentModRq>
提交请求后,QuickBooks会自动解除该笔收款和对应发票的关联,收款金额会转为未应用状态。
方法2:删除原收款记录重新创建
如果无法获取原关联发票的TxnID,可以先调用ReceivePaymentQueryRq获取该收款最新的EditSequence值,调用ReceivePaymentDelRq删除原记录,再用ReceivePaymentAddRq重新创建一笔无关联发票的收款记录,最终效果完全一致。
注意:所有修改操作都需要先查询获取最新的
EditSequence值,避免出现并发修改冲突报错。
内容的提问来源于stack exchange,提问作者jbobbins
相关产品推荐
相关产品推荐

