QBXML создать InvoiceLineДобавить элементы по запросу

Можно ли создать счет-фактуру с одноразовыми позициями или генерировать отсутствующие позиции по запросу, не анализируя возвращаемое значение QBXMLMsgsRs?

Я пытаюсь передать счета в QuickBooks через веб-коннектор QuickBooks, но не могу убедиться, что элементы уже существуют. Я знал, что QuickBooks сам может создавать элементы по запросу.

Я получу следующее ответное сообщение:

QBXMLMsgsRs:

Недопустимая ссылка на элемент QuickBooks «1000000000» в строке «Счет». Сообщение об ошибке QuickBooks: неверный аргумент. Указанная запись не существует в списке.

В качестве запасного варианта я бы проанализировал возвращаемое значение, создал элемент и снова отправил счет, но я ищу существующую реализацию. Я уже проверил Экранный справочник (InvoiceAdd), без любая полезная информация.

Вот пример моего QBXML:

<?xml version="1.0" encoding="us-ascii"?>
<?qbxml version="13.0"?>
<QBXML>
    <QBXMLMsgsRq onError="stopOnError">
        <InvoiceAddRq requestID="bd4a0a4d-81ea-4f95-ae09-150f15a12423">
            <InvoiceAdd>
                <CustomerRef>
                    <ListID>80000004-1434444973</ListID>
                    <FullName>University of North Carolina</FullName>
                </CustomerRef>
                <TxnDate>1999-01-21</TxnDate>
                <RefNumber>9668</RefNumber>
                <BillAddress>
                    <Addr1>University of North Carolina</Addr1>
                    <Addr2>University City Blvd</Addr2>
                    <Addr3 />
                    <City>Charlotte</City>
                    <State>NC</State>
                    <PostalCode>9201</PostalCode>
                    <Country>United States</Country>
                </BillAddress>
                <InvoiceLineAdd>
                    <ItemRef>
                        <FullName>1000000000</FullName>
                    </ItemRef>
                    <Desc>Item 1 Description Goes Here</Desc>
                    <Quantity>1</Quantity>
                    <Rate>295</Rate>
                </InvoiceLineAdd>
                <InvoiceLineAdd>
                    <ItemRef>
                        <FullName>1000000001</FullName>
                    </ItemRef>
                    <Desc>Item 2 Description Goes Here</Desc>
                    <Quantity>5</Quantity>
                    <Rate>25</Rate>
                </InvoiceLineAdd>
            </InvoiceAdd>
        </InvoiceAddRq>
    </QBXMLMsgsRq>
</QBXML>

person Andre Hofmeister    schedule 29.06.2015    source источник


Ответы (1)


Можно ли создать счет-фактуру с разовыми позициями или генерировать недостающие позиции по запросу,

No.

Я не могу гарантировать, что элементы уже существуют.

Почему бы нет? Все остальные делают...

Я знал, что QuickBooks сам может создавать элементы по запросу.

Это неверно, QuickBooks не может создавать элементы по требованию. Графический интерфейс предлагает вам создать его вручную, если элемент не существует, и вы пытаетесь ввести его в список.

В качестве запасного варианта я бы проанализировал возвращаемое значение, создал элемент и снова отправил счет, но я ищу существующую реализацию.

Другой вариант — группировать запросы и всегда пытаться создать элементы, чтобы гарантировать их существование.

Например:

<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="7.0"?>
<QBXML>
    <QBXMLMsgsRq onError="continueOnError">
        <ItemNonInventoryAdd>
            ... your item data here ...
        </ItemNonInventoryAdd>
        <InvoiceAdd> 
            ... your invoice data here ...
        </InvoiceAdd>
    </QBXMLMsgsRq>
</QBXML>

Еще примеры:

При этом элемент будет создан до выставления счета, если он еще не существует. Если элемент существует, QuickBooks пропустит эту часть запроса и перейдет к следующей.

person Keith Palmer Jr.    schedule 29.06.2015
comment
@ keith-palmer-consolibyte С уважением, вы 2-й пункт: Конечно, это возможно, но в моем случае возникает много накладных расходов (однократно было бы здорово). 3-й: Да, ты прав, я неправильно выразился. 4-й: Я тоже думал об этом, наверное, я буду придерживаться этого. Спасибо за Ваш ответ. Я просто хочу убедиться, что нет более простой реализации. - person Andre Hofmeister; 29.06.2015