@Nissaya

Почему QuickBooks desktop выдает ошибку «Неверное значение поля amount»?

Задача - оплачивать invoices из deposites автоматически для всех customers. Для этого создаю приложение, которое при нажатии на кнопку все сделает. Решил, что правильно будет создавать customer payment, который будет оплачивать все открытые invoices. Работаю через qbXML и C# sdk. XML запрос выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="13.0"?>
<QBXML>
    <QBXMLMsgsRq onError="stopOnError">
        <ReceivePaymentAddRq>
            <ReceivePaymentAdd>
                <CustomerRef>
                    <FullName>#1 ASAP Transport Inc</FullName>
                </CustomerRef>
                <RefNumber>LS-2-39</RefNumber>
                <TotalAmount>1000.00</TotalAmount>
                <AppliedToTxnAdd>
                    <TxnID>399DB-1582033551</TxnID>
                    <SetCredit>
                        <CreditTxnID>39A01-1582087066</CreditTxnID>
                        <AppliedAmount>0.00</AppliedAmount>
                    </SetCredit>
                </AppliedToTxnAdd>
            </ReceivePaymentAdd>
        </ReceivePaymentAddRq>
    </QBXMLMsgsRq>
</QBXML>


В ответ получаю сообщение:

<?xml version="1.0" ?>
<QBXML>
    <QBXMLMsgsRs>
        <ReceivePaymentAddRs statusCode="3210" statusSeverity="Error" statusMessage="The 
           &quot;receive payment total amount&quot; field has an invalid value &quot;1000.00&quot;.  
           QuickBooks error message: This field contains an invalid character." />
    </QBXMLMsgsRs>
</QBXML>


Пробовал менять точку на запятую, убирать десятичные числа в принципе. Тогда ошибка 3040: There was an error when converting the amount "1000" in the field "TotalAmount".

Также пробовал вставить аналогичный пример xml из документации, но в итоге та же ошибка. При попытке добавить Receive Payment через c# объекты из примера для c# - те же номера ошибок. Аналогичная проблема и при других операциях, где я указываю суммы (Например, создание invoice или изменение суммы в нем)

Использую QuickBooks Enterprise Solutions 20.0
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
@Nissaya Автор вопроса
Проблема решена. Дело было в том, что сам quickbooks подстроился под местную локаль и воспринимал числа с разделителем в виде запятой. А sdk и все, что связано с qbxml имеют четкие требования к формату числа, которые не меняются в зависимости от региона. Таким образом, передавая число с точкой, sdk его нормально воспринимал и отправлял дальше в quickbooks, а тот не понимал этот формат и возвращал ошибку. А число с запятой не понимал сам sdk. Решение состоит в том, чтобы в настройках windows изменить регион на США
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы