Как установить дату выставления счета в счете Quickbooks? - PullRequest
0 голосов
/ 27 мая 2020

Я использую quickbooks , и я хочу установить дату выставления счета так, как я хочу. Я использую этот код.

Если я установлю его в поле TxnDate, это выдаст мне ошибку. Итак, как я могу установить invStartDate?

const createInvoiceObj = {
    DocNumber: docNumber,
    Line: [
      {
        Id: "1",
        LineNum: 1,
        Description: `The description`,
        Amount: 1232,
        DetailType: "SalesItemLineDetail",
        SalesItemLineDetail: {
          ItemRef: {
            value: "19",
            name: "Service"
          },
          UnitPrice: 1232,
          Qty: "1"
        }
      }
    ],
    CustomerRef: {
      value: "1"
    },
    CustomerMemo: {
      value: "Thank you for your business and have a great day!"
    },
    TotalAmt: totalAmount,
    TxnDate: moment(order.createdAt).format("YYYY-MM-DD")  // TxnDate: '2020-05-22'
  };

enter image description here

Ошибка, которую я получаю при использовании TxnDate

{
  "Fault": {
    "Error": [
      {
        "Message": "Transaction date is prior to start date for inventory item",
        "Detail": "Transactions with inventory (QOH) products cant be dated earlier than the Inventory Start Date for the product",
        "code": "6270",
        "element": ""
      }
    ],
    "type": "ValidationFault"
  },
  "time": "2020-05-27T05:26:58.217-07:00"
}

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Правильное поле для установки даты счета - TxnDate.

Пример:

{
  "Invoice": {
    "TxnDate": "2014-09-19", 
...

Это хорошо документировано здесь:

Если вы получили это сообщение об ошибке:

"Error": [
      {
        "Message": "Transaction date is prior to start date for inventory item",
        "Detail": "Transactions with inventory (QOH) products cant be dated earlier than the Inventory Start Date for the product",
        "code": "6270",
        "element": ""
      }
    ],

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

You have 0 widgets in inventory 
You try to sell 5 items (you can't, you have zero items in inventory)
You start carrying and stocking widgets in inventory 

Дата выставления счета должна быть после даты, когда вы создали / начали переносить элемент / продукт. .

Измените дату счета-фактуры так, чтобы он был датирован после , которое вы указали при перевозке предмета / продукта.

0 голосов
/ 24 августа 2020
$dateTime = new \DateTime('NOW');

$i = 1;

while (1) {
    $ccp = new IPPCreditCardPaymentTxn();
    $ccp->TxnData = $dateTime;

    $BankAccountRef = new IPPReferenceType();
    $BankAccountRef->value = "35";
    $BankAccountRef->name = "null";
    $ccp->BankAccountRef = $BankAccountRef;

    $CreditCardAccountRef = new IPPReferenceType();
    $CreditCardAccountRef->value = "41";
    $CreditCardAccountRef->name = "null";
    $ccp->CreditCardAccountRef = $CreditCardAccountRef;
    $ccp->Amount = 10;

    $result = $dataService->add($ccp);

    echo "<br> Result id is: " .$result->Id . "<br><br>";
    $error = $dataService->getLastError();

    if ($error) {
        echo "The Status: " . $error->getHttpStatusCode() . "<br><br>";
        echo "The Helper: " . $error->getOAuthHelperError() . "<br><br>";
        echo "The Response: " . $error->getResponseBody() . "<br><br>";
    } else {
        var_dump($result);
    }
    exit;
}

Чтение: https://github.com/intuit/QuickBooks-V3-PHP-SDK/blob/master/src/_Samples/CreditCardPaymentCreate.php

Вы можете изменить данные, которые вам нужно ввести.

...