Я использую consobyte PHP SDK для QuickBooks Desktop, и когда я пытаюсь добавить элемент Non Inventory, он выдает ошибку-0x80040400: QuickBooks обнаружил ошибку при анализе предоставленного текстового потока XML.
<?xml version="1.0" encoding="utf-8"?> <?qbxml version="13.0"?> <QBXML> <QBXMLMsgsRq onError="stopOnError"> <ItemNonInventoryAddRq requestID="38"> <ItemNonInventoryAdd> <Name>46428</Name> <SalesAndPurchase> <SalesDesc>Apple Watch (not Sport)</SalesDesc> <SalesPrice>50.00</SalesPrice> <IncomeAccountRef> <FullName>Merchandise Sales</FullName> </IncomeAccountRef> <PurchaseDesc>Apple Watch (not Sport)</PurchaseDesc> <PurchaseDesc>50.00</PurchaseDesc> <ExpenseAccountRef> <FullName>Repairs and Maintenance</FullName> </ExpenseAccountRef> </SalesAndPurchase> </ItemNonInventoryAdd> </ItemNonInventoryAddRq> </QBXMLMsgsRq> </QBXML>
Почини это:
<PurchaseDesc>Apple Watch (not Sport)</PurchaseDesc> <PurchaseDesc>50.00</PurchaseDesc>
Каждый раз, когда вы получаете это сообщение об ошибке:
0x80040400: QuickBooks обнаружил ошибку при анализе предоставленного текстового потока XML.
Первое, что вам нужно сделать, – внимательно посмотреть на свой XML. А затем запустите его через инструмент XML Validator
, включенный в пакет QuickBooks SDK. Он говорит вам, что именно не так:
Line: 15 LinePos: 25 Src Text: <PurchaseDesc>50.00</PurchaseDesc> Reason: Element content is invalid according to the DTD/Schema. Expecting: PurchaseCost, PurchaseTaxCodeRef, ExpenseAccountRef, PrefVendorRef.