我正在尝试将以下XML发布到QB桌面SDK。如果我不包含QuantityOnHand或PurchaseCost节点,则调用成功,但当包含这些节点中的任何一个或两个时,调用将失败。这是我正在生成的XML:
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="12.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<ItemInventoryAddRq>
<ItemInventoryAdd>
<Name>11200</Name>
<IsActive>1</IsActive>
<SalesDesc>R/C Glider.</SalesDesc>
<SalesPrice>149.99000</SalesPrice>
<PurchaseCost>124.99000</PurchaseCost>
<QuantityOnHand>35</QuantityOnHand>
<IncomeAccountRef>
<FullName>Construction Income:Materials Income</FullName>
</IncomeAccountRef>
<COGSAccountRef>
<FullName>Cost of Goods Sold</FullName>
</COGSAccountRef>
<AssetAccountRef>
<FullName>Inventory Asset</FullName>
</AssetAccountRef>
</ItemInventoryAdd>
</ItemInventoryAddRq>
</QBXMLMsgsRq>
</QBXML>
答案 0 :(得分:1)
使用qbXML,XML节点的顺序是重要的。
因此,如果Intuit XSD / QuickBooks OSR告诉您节点的顺序应该是:
<SalesDesc >STRTYPE</SalesDesc> <!-- optional -->
<SalesPrice >PRICETYPE</SalesPrice> <!-- optional -->
<IncomeAccountRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</IncomeAccountRef>
<PurchaseDesc >STRTYPE</PurchaseDesc> <!-- optional -->
<PurchaseCost >PRICETYPE</PurchaseCost> <!-- optional -->
<COGSAccountRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</COGSAccountRef>
<PrefVendorRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</PrefVendorRef>
<AssetAccountRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</AssetAccountRef>
<ReorderPoint >QUANTYPE</ReorderPoint> <!-- optional -->
<QuantityOnHand >QUANTYPE</QuantityOnHand> <!-- optional -->
然后你必须按顺序提供节点。
在您的情况下,您将在IncomeAccountRef,COGSAccountRef等之前发送QuantityOnHand,这将被拒绝。另请注意,PurchaseCost位于IncomeAccountRef节点之后。
我们的QuickBooks integration wiki - FAQ section和QuickBooks wiki in general还有更多信息。
希望有所帮助!