Сообщение об ошибке QuickBooks: Ожидалось наличие строки / полки, но сайт инвентаря был выбран
Я использую QuickBooks SDK версии 12 для подключения к QuickBooks Enterprise 2013. Я пытаюсь добавить квитанцию об элементе через API, используя запрос xml ниже.
Я включил подробное ведение журнала и уловил эту ошибку:
Невозможно установить неназначенный RSB в позиции (позициях) транзакции. Сообщение об ошибке QuickBooks: Ожидалось наличие строки / полки, но сайт инвентаря был выбран. Источник: .\ Src \ ItemReceiptStorage.cpp строка #591 HRESULT=0x80043973
Пользователь QuickBooks включил расширенную инвентаризацию, но затем отключил ее. Насколько я понимаю, QuickBooks сохраняет все данные Advanced Inventory, но скрывает их от пользователя. Похоже, что API QuickBooks предполагает, что Advanced Inventory все еще используется, и пытается установить поля, которые больше не применяются. Можно ли что-нибудь сделать, чтобы заставить API понять, что Advanced Inventory больше не используется?
Заранее спасибо,
отметка
Запрос XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?qbxml version="12.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<ItemReceiptAddRq requestID="0">
<ItemReceiptAdd>
<VendorRef>
<FullName>Nodac Tech</FullName>
</VendorRef>
<APAccountRef>
<FullName>Accounts Payable</FullName>
</APAccountRef>
<TxnDate>2013-10-11</TxnDate>
<RefNumber>1742</RefNumber>
<Memo>PO #1742, Packing Slip: 1742</Memo>
<ItemLineAdd>
<ItemRef>
<FullName>OCB-PS-18DC-30</FullName>
</ItemRef>
<Desc>Power Supply 18 CH 12 DC, 30 AMP</Desc>
<Quantity>1.00</Quantity>
<Amount>67.00</Amount>
<ClassRef>
<FullName>Phone</FullName>
</ClassRef>
</ItemLineAdd>
</ItemReceiptAdd>
</ItemReceiptAddRq>
</QBXMLMsgsRq>
</QBXML>
1 ответ
Если кто-то приходит сюда из-за этой ошибки, но в отличие от OP вы указали корзину или местоположение - это может помочь.
вам нужно указать местоположение с помощью InventorySiteRef, а затем указать bin с помощью InventorySiteLocationRef. когда вы указываете bin - кажется, что вам нужно указать местоположение и bin (при использовании хотя бы полного имени), как они будут отображаться в быстрых книгах.
с использованием QBFC это будет выглядеть так (C#):
IInventoryAdjustmentLineAdd InventoryAdjustmentLineAdd1 = adj.InventoryAdjustmentLineAddList.Append();
adj.InventorySiteRef.FullName.SetValue(location);
InventoryAdjustmentLineAdd1.ORTypeAdjustment.QuantityAdjustment.InventorySiteLocationRef.FullName.SetValue($"{location}:{bin}");
"location" - это локальная переменная, определяющая местоположение, а "bin" - локальная переменная, определяющая bin. В зависимости от того, что вы делаете, есть несколько других обязательных значений. Это просто показывает, как мне удалось исправить ошибку, изложенную в этом посте, установив значение bin на самом деле : bin.
надеюсь, это поможет кому-то.