#php #sdk #quickbooks-online
#php #sdk #quickbooks-онлайн
Вопрос:
Я работал над онлайн-интеграцией quickbook с использованием quick book php sdk.Когда я хотел попробовать создать счет-фактуру, возникла следующая ошибка. Я получаю сообщение об ошибке при добавлении записи счета-фактуры в моем приложении. Это сработало, когда я добавил клиента таким же образом.
Исключение:
v3-php-sdk-2.4.1/DataService/DataService.php — 587 — checknullresponseandthrow исключение — ответ нулевой или пустой.
Ниже приведен мой код:
$invoiceObj = new IPPInvoice();
$invoiceObj->Deposit = '0';
$invoiceObj->AllowIPNPayment = 'false';
$invoiceObj->AllowOnlinePayment = 'false';
$invoiceObj->AllowOnlineCreditCardPayment = 'false';
$invoiceObj->AllowOnlineACHPayment = 'false';
$invoiceObj->DocNumber = '1045';
$invoiceObj->TxnDate = "2016-10-19";
$invoiceObj->Balance = '250.0';
$invoiceObj->CustomerRef = '4';
$invoiceObj->CustomerMemo = 'Thank you for your business and have a great day!';
$billAddr = new IPPPhysicalAddress();
$billAddr->Id = '2';
$billAddr->Line1 = '4581 Banani St.';
$billAddr->City = 'Dhaka';
$invoiceObj->BillAddr = $billAddr;
$billEmailAddr = new IPPEmailAddress();
$billEmailAddr->Address = 'test'.rand(0,100).'@gmail.com';
$invoiceObj->BillEmail = $billEmailAddr;
$invoiceObj->CurrencyRef = 'USD';
$invoiceObj->Id = '198';
$invoiceObj->DueDate = date(strtotime(' 5 days'));
$invoiceObj->TotalAmt = '250.0';
$invoiceObj->ApplyTaxAfterDiscount = 'false';
$invoiceObj->PrintStatus = 'NeedToPrint';
$invoiceObj->EmailStatus = 'NotSet';
$txnTaxDetail = new IPPTxnTaxDetail();
$txnTaxDetail->TotalTax = '0';
$invoiceObj->TxnTaxDetail = $txnTaxDetail;
$invoiceObj->SyncToken = '0';
$customField = new IPPCustomField();
$customField->DefinitionId = '1';
$customField->Name = 'Crew #';
$customField->Type = 'StringType';
$invoiceObj->CustomField = $customField;
try
{
$resultingInvoiceObj = $dataService->Add($invoiceObj);
echo "Created Invoice Id={$resultingInvoiceObj->Id}";
}
catch (Exception $e)
{
echo $e->getMessage();
}
Ответ №1:
I have solved this problem. Missing following required params:
at least one Line record
Line.DetailType
Line.Amount
Line.Description
at least one Line.SalesItemLineDetail
Line.SalesItemLineDetail.ItemRef
Line.SalesItemLineDetail.Quantity
Line.SalesItemLineDetail.UnitPrice
**Now final code :**
$invoiceObj = new IPPInvoice();
$invoiceObj->Deposit = '0';
$invoiceObj->AllowIPNPayment = 'false';
$invoiceObj->AllowOnlinePayment = 'false';
$invoiceObj->AllowOnlineCreditCardPayment = 'false';
$invoiceObj->AllowOnlineACHPayment = 'false';
$invoiceObj->DocNumber = '1045';
$invoiceObj->TxnDate = "2016-10-19";
$invoiceObj->Balance = '250.0';
$invoiceObj->CustomerRef = '4';
$invoiceObj->CustomerMemo = 'Thank you for your business and have a great day!';
$billAddr = new IPPPhysicalAddress();
$billAddr->Id = '2';
$billAddr->Line1 = '4581 Banani St.';
$billAddr->City = 'Dhaka';
$invoiceObj->BillAddr = $billAddr;
$billEmailAddr = new IPPEmailAddress();
$billEmailAddr->Address = 'test'.rand(0,100).'@gmail.com';
$invoiceObj->BillEmail = $billEmailAddr;
$invoiceObj->CurrencyRef = 'USD';
$invoiceObj->DueDate = date(strtotime(' 5 days'));
$invoiceObj->TotalAmt = '250.0';
$invoiceObj->ApplyTaxAfterDiscount = 'false';
$invoiceObj->PrintStatus = 'NeedToPrint';
$invoiceObj->EmailStatus = 'NotSet';
$Line = new IPPline();
$Line->Amount = 15;
$Line->DetailType = 'SalesItemLineDetail';
$Line->Description = 'Tst Product';
$saleItemLineDetail = new IPPSalesItemLineDetail();
$saleItemLineDetail->ItemRef = '1';
$saleItemLineDetail->Quantity = 2;
$saleItemLineDetail->UnitPrice = 50;
$Line->SalesItemLineDetail = $saleItemLineDetail;
$invoiceObj->Line = $Line;
$txnTaxDetail = new IPPTxnTaxDetail();
$txnTaxDetail->TotalTax = '0';
$invoiceObj->TxnTaxDetail = $txnTaxDetail;
$invoiceObj->SyncToken = '0';
$customField = new IPPCustomField();
$customField->DefinitionId = '1';
$customField->Name = 'Crew #';
$customField->Type = 'StringType';
$invoiceObj->CustomField = $customField;
try {
$resultingInvoiceObj = $dataService->Add($invoiceObj);
echo "Created Invoice Id={$resultingInvoiceObj->Id}";
} catch (Exception $e) {
echo $e->getMessage();
}