2014-08-28 115 views
1

我使用IPP的PHP API創建發票。我使用下面的代碼創建發票:添加發票時出錯

public function create_invoice($data) { 

    $this->_getClientByID($data['clientId']); 
    $invoice = new IPPInvoice(); 

    $invoice->AllowIPNPayment = "false"; 
    $invoice->AllowOnlinePayment = "false"; 
    $invoice->AllowOnlineCreditCardPayment = "false"; 
    $invoice->AllowOnlineACHPayment = "false"; 
    $invoice->ApplyTaxAfterDiscount = "false"; 
    $invoice->CustomerRef = $data['clientId']; 
    $invoice->BillAddr = $this->_client[0]->BillAddr; 
    $invoice->ShipAddr = $this->_client[0]->ShipAddr; 
    $invoice->DueDate = Date('Y-m-d'); 
    $invoice->PrintStatus = "NotSet"; 
    $invoice->EmailStatus = "EmailSent"; 
    $invoice->BillEmail = array('id'=>'', 'address'=>$data['email'],'default'=>'','tag'=>''); 
    $invoice->TxnDate = Date('Y-m-d'); 
    $invoice->CurrencyRef = "USD"; 

    $lineItems = array(); 

    $invoiceTotal = 0; 

    foreach ($data['invoice_items'] as $line) { 
     $lineItem = new IPPLine(); 
     $invoiceTotal = $invoiceTotal + $line->amount; 
     $lineItem->Description = $line->service_name; 
     $lineItem->Amount = $line->amount; 

     $salesLineItem = new IPPSalesItemLineDetail(); 
     $salesLineItem->ItemRef = 1; 
     $salesLineItem->UnitPrice = $line->amount; 
     $salesLineItem->Qty = 1; 

     $lineItem->DetailType = "SalesItemLineDetail"; 
     $lineItem->SalesItemLineDetail = $salesLineItem; 

     $lineItems[] = $lineItem; 
    } 

    $lineItem = new IPPLine(); 
    $lineItem->DetailType = "SubTotalLineDetail"; 
    $lineItem->Amount = $invoiceTotal; 

    $lineItems[] = $lineItem; 

    $invoice->Line = $lineItems; 
    $invoice->TotalAmt = $invoiceTotal; 
    $invoice->Balance = $invoiceTotal; 


    $result = $this->_dataService->Add($invoice); 

} 

其中,對於我的例子產生下面的數據:

{ 
    Deposit:"", 
    AllowIPNPayment:"false", 
    AllowOnlinePayment:"false", 
    AllowOnlineCreditCardPayment:"false", 
    AllowOnlineACHPayment:"false", 
    EInvoiceStatus:"", 
    ECloudStatusTimeStamp:"", 
    InvoiceEx:"", 
    AutoDocNumber:"", 
    CustomerRef:"889", 
    CustomerMemo:"", 
    BillAddr:{ 
     Id:"5438", 
     Line1:"2021E Pulasky Highway", 
     Line2:"", 
     Line3:"", 
     Line4:"", 
     Line5:"", 
     City:"Havre de Grace", 
     Country:"US", 
     CountryCode:"", 
     CountrySubDivisionCode:"MD", 
     PostalCode:"21078", 
     PostalCodeSuffix:"", 
     Lat:"", 
     Long:"", 
     Tag:"", 
     Note:"" 
    }, 
    ShipAddr:{ 
     Id:"5438", 
     Line1:"2021E Pulasky Highway", 
     Line2:"", 
     Line3:"", 
     Line4:"", 
     Line5:"", 
     City:"Havre de Grace", 
     Country:"US", 
     CountryCode:"", 
     CountrySubDivisionCode:"MD", 
     PostalCode:"21078", 
     PostalCodeSuffix:"", 
     Lat:"", 
     Long:"", 
     Tag:"", 
     Note:"" 
    }, 
    RemitToRef:"", 
    ClassRef:"", 
    SalesTermRef:"", 
    DueDate:"2014-08-28", 
    SalesRepRef:"", 
    PONumber:"", 
    FOB:"", 
    ShipMethodRef:"", 
    ShipDate:"", 
    TrackingNum:"", 
    GlobalTaxCalculation:"", 
    TotalAmt:"44.85", 
    HomeTotalAmt:"", 
    ApplyTaxAfterDiscount:"false", 
    TemplateRef:"", 
    PrintStatus:"NotSet", 
    EmailStatus:"EmailSent", 
    BillEmail:{ 
     id:"", 
     address:"", 
     default:"", 
     tag:"" 
    }, 
    ARAccountRef:"", 
    Balance:"44.85", 
    FinanceCharge:"", 
    PaymentMethodRef:"", 
    PaymentRefNum:"", 
    PaymentType:"", 
    CheckPayment:"", 
    CreditCardPayment:"", 
    DepositToAccountRef:"", 
    DeliveryInfo:"", 
    DocNumber:"", 
    TxnDate:"2014-08-28", 
    DepartmentRef:"", 
    CurrencyRef:"USD", 
    ExchangeRate:"", 
    PrivateNote:"", 
    TxnStatus:"", 
    LinkedTxn:"", 
    Line:{ 
     0:{ 
     Id:"", 
     LineNum:"", 
     Description:"Hosting - Standard", 
     Amount:"14.95", 
     LinkedTxn:"", 
     DetailType:"SalesItemLineDetail", 
     PaymentLineDetail:"", 
     DiscountLineDetail:"", 
     TaxLineDetail:"", 
     SalesItemLineDetail:{ 
      ServiceDate:"", 
      TaxInclusiveAmt:"", 
      SalesItemLineDetailEx:"", 
      ItemRef:"1", 
      ClassRef:"", 
      UnitPrice:"14.95", 
      RatePercent:"", 
      PriceLevelRef:"", 
      MarkupInfo:"", 
      Qty:"1", 
      UOMRef:"", 
      ItemAccountRef:"", 
      InventorySiteRef:"", 
      TaxCodeRef:"" 
     }, 
     DescriptionLineDetail:"", 
     ItemBasedExpenseLineDetail:"", 
     AccountBasedExpenseLineDetail:"", 
     DepositLineDetail:"", 
     PurchaseOrderItemLineDetail:"", 
     SalesOrderItemLineDetail:"", 
     ItemReceiptLineDetail:"", 
     JournalEntryLineDetail:"", 
     GroupLineDetail:"", 
     SubTotalLineDetail:"", 
     CustomField:"", 
     LineEx:"" 
     }, 
     1:{ 
     Id:"", 
     LineNum:"", 
     Description:"Hosting - Standard", 
     Amount:"14.95", 
     LinkedTxn:"", 
     DetailType:"SalesItemLineDetail", 
     PaymentLineDetail:"", 
     DiscountLineDetail:"", 
     TaxLineDetail:"", 
     SalesItemLineDetail:{ 
      ServiceDate:"", 
      TaxInclusiveAmt:"", 
      SalesItemLineDetailEx:"", 
      ItemRef:"1", 
      ClassRef:"", 
      UnitPrice:"14.95", 
      RatePercent:"", 
      PriceLevelRef:"", 
      MarkupInfo:"", 
      Qty:"1", 
      UOMRef:"", 
      ItemAccountRef:"", 
      InventorySiteRef:"", 
      TaxCodeRef:"" 
     }, 
     DescriptionLineDetail:"", 
     ItemBasedExpenseLineDetail:"", 
     AccountBasedExpenseLineDetail:"", 
     DepositLineDetail:"", 
     PurchaseOrderItemLineDetail:"", 
     SalesOrderItemLineDetail:"", 
     ItemReceiptLineDetail:"", 
     JournalEntryLineDetail:"", 
     GroupLineDetail:"", 
     SubTotalLineDetail:"", 
     CustomField:"", 
     LineEx:"" 
     }, 
     2:{ 
     Id:"", 
     LineNum:"", 
     Description:"Hosting - Standard", 
     Amount:"14.95", 
     LinkedTxn:"", 
     DetailType:"SalesItemLineDetail", 
     PaymentLineDetail:"", 
     DiscountLineDetail:"", 
     TaxLineDetail:"", 
     SalesItemLineDetail:{ 
      ServiceDate:"", 
      TaxInclusiveAmt:"", 
      SalesItemLineDetailEx:"", 
      ItemRef:"1", 
      ClassRef:"", 
      UnitPrice:"14.95", 
      RatePercent:"", 
      PriceLevelRef:"", 
      MarkupInfo:"", 
      Qty:"1", 
      UOMRef:"", 
      ItemAccountRef:"", 
      InventorySiteRef:"", 
      TaxCodeRef:"" 
     }, 
     DescriptionLineDetail:"", 
     ItemBasedExpenseLineDetail:"", 
     AccountBasedExpenseLineDetail:"", 
     DepositLineDetail:"", 
     PurchaseOrderItemLineDetail:"", 
     SalesOrderItemLineDetail:"", 
     ItemReceiptLineDetail:"", 
     JournalEntryLineDetail:"", 
     GroupLineDetail:"", 
     SubTotalLineDetail:"", 
     CustomField:"", 
     LineEx:"" 
     }, 
     3:{ 
     Id:"", 
     LineNum:"", 
     Description:"", 
     Amount:"44.85", 
     LinkedTxn:"", 
     DetailType:"SubTotalLineDetail", 
     PaymentLineDetail:"", 
     DiscountLineDetail:"", 
     TaxLineDetail:"", 
     SalesItemLineDetail:"", 
     DescriptionLineDetail:"", 
     ItemBasedExpenseLineDetail:"", 
     AccountBasedExpenseLineDetail:"", 
     DepositLineDetail:"", 
     PurchaseOrderItemLineDetail:"", 
     SalesOrderItemLineDetail:"", 
     ItemReceiptLineDetail:"", 
     JournalEntryLineDetail:"", 
     GroupLineDetail:"", 
     SubTotalLineDetail:"", 
     CustomField:"", 
     LineEx:"" 
     } 
    }, 
    TxnTaxDetail:"", 
    TxnSource:"", 
    Id:"", 
    SyncToken:"", 
    MetaData:"", 
    CustomField:"", 
    AttachableRef:"", 
    domain:"", 
    status:"", 
    sparse:"" 
} 

但是,我的代碼運行時,它失敗的$result = $this->_dataService->Add($invoice);線,併產生以下錯誤。

Fatal error: Uncaught IdsException: [0]: 2014-08-28 13:24:33 - /var/www/emoxie.com/vendor/emoxie/quickbooks-sdk/src/DataService/DataService.php - 335 - CheckNullResponseAndThrowException - Response Null or Empty thrown in /var/www/emoxie.com/vendor/emoxie/quickbooks-sdk/src/Core/CoreHelper.php on line 95 

DataService.php線335 CoreHelper :: CheckNullResponseAndThrowException($ responseBody);

有沒有人遇到過這個問題,並有解決?

+0

做'''echo $ data ['clientId'];''''什麼都返回? – 2014-09-05 09:59:06

+0

我假設你正在嘗試與Quickbook在線交互。您可以請您分享創建DataServices對象的代碼片段(使用上下文對象)。請確保您使用的是正確的服務類型(例如QBO),除非您的apptoken適用於(QBO和QBD)。謝謝 – 2014-09-07 17:50:32

回答

1

以下是美國公司發票的示例。請對this.-

<Invoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schema.intuit.com/finance/v3"> 
    <DocNumber>96</DocNumber> 
    <TxnDate>2014-08-21</TxnDate> 
    <CurrencyRef name="Angolan Kwanza">AOA</CurrencyRef> 
    <ExchangeRate>1</ExchangeRate> 
    <Line> 
    <Id>1</Id> 
    <LineNum>1</LineNum> 
    <Amount>23.00</Amount> 
    <DetailType>SalesItemLineDetail</DetailType> 
    <SalesItemLineDetail> 
     <ItemRef name="bat">3</ItemRef> 
     <UnitPrice>23</UnitPrice> 
     <Qty>1</Qty> 
     <TaxCodeRef>10</TaxCodeRef> 
    </SalesItemLineDetail> 
    </Line> 
    <Line> 
    <Amount>23.00</Amount> 
    <DetailType>SubTotalLineDetail</DetailType> 
    <SubTotalLineDetail /> 
    </Line> 
    <Line> 
    <Amount>0.46</Amount> 
    <DetailType>DiscountLineDetail</DetailType> 
    <DiscountLineDetail> 
     <PercentBased>true</PercentBased> 
     <DiscountPercent>2</DiscountPercent> 
     <DiscountAccountRef name="Discounts given">74</DiscountAccountRef> 
    </DiscountLineDetail> 
    </Line> 
    <TxnTaxDetail> 
    <TotalTax>2.25</TotalTax> 
    <TaxLine> 
     <Amount>2.25</Amount> 
     <DetailType>TaxLineDetail</DetailType> 
     <TaxLineDetail> 
     <TaxRateRef>20</TaxRateRef> 
     <PercentBased>true</PercentBased> 
     <TaxPercent>10</TaxPercent> 
     <NetAmountTaxable>22.54</NetAmountTaxable> 
     </TaxLineDetail> 
    </TaxLine> 
    </TxnTaxDetail> 
    <CustomerRef name="gg">3</CustomerRef> 
    <SalesTermRef>3</SalesTermRef> 
    <DueDate>2014-09-20</DueDate> 
    <GlobalTaxCalculation>TaxExcluded</GlobalTaxCalculation> 
    <TotalAmt>24.79</TotalAmt> 
    <HomeTotalAmt>24.79</HomeTotalAmt> 
    <PrintStatus>NotSet</PrintStatus> 
    <EmailStatus>NotSet</EmailStatus> 
    <BillEmail> 
    <Address>[email protected]</Address> 
    </BillEmail> 
    <Balance>24.79</Balance> 
    <Deposit>0</Deposit> 
    <AllowIPNPayment>false</AllowIPNPayment> 
    <AllowOnlinePayment>false</AllowOnlinePayment> 
    <AllowOnlineCreditCardPayment>false</AllowOnlineCreditCardPayment> 
    <AllowOnlineACHPayment>false</AllowOnlineACHPayment> 
</Invoice> 



<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2014-08-20T23:23:07.692-07:00"> 
    <Invoice domain="QBO" sparse="false"> 
<Id>14</Id> 
<SyncToken>0</SyncToken> 
<MetaData> 
    <CreateTime>2014-08-20T23:23:07-07:00</CreateTime> 
    <LastUpdatedTime>2014-08-20T23:23:07-07:00</LastUpdatedTime> 
</MetaData> 
<DocNumber>96</DocNumber> 
<TxnDate>2014-08-21</TxnDate> 
<CurrencyRef name="Angolan Kwanza">AOA</CurrencyRef> 
<ExchangeRate>1</ExchangeRate> 
<Line> 
    <Id>1</Id> 
    <LineNum>1</LineNum> 
    <Amount>23.00</Amount> 
    <DetailType>SalesItemLineDetail</DetailType> 
    <SalesItemLineDetail> 
    <ItemRef name="bat">3</ItemRef> 
    <UnitPrice>23</UnitPrice> 
    <Qty>1</Qty> 
    <TaxCodeRef>10</TaxCodeRef> 
    </SalesItemLineDetail> 
</Line> 
<Line> 
    <Amount>23.00</Amount> 
    <DetailType>SubTotalLineDetail</DetailType> 
    <SubTotalLineDetail /> 
</Line> 
<Line> 
    <Amount>0.46</Amount> 
    <DetailType>DiscountLineDetail</DetailType> 
    <DiscountLineDetail> 
    <PercentBased>true</PercentBased> 
    <DiscountPercent>2</DiscountPercent> 
    <DiscountAccountRef name="Discounts given">74</DiscountAccountRef> 
    </DiscountLineDetail> 
</Line> 
<TxnTaxDetail> 
    <TotalTax>2.25</TotalTax> 
    <TaxLine> 
    <Amount>2.25</Amount> 
    <DetailType>TaxLineDetail</DetailType> 
    <TaxLineDetail> 
     <TaxRateRef>20</TaxRateRef> 
     <PercentBased>true</PercentBased> 
     <TaxPercent>10</TaxPercent> 
     <NetAmountTaxable>22.54</NetAmountTaxable> 
    </TaxLineDetail> 
    </TaxLine> 
</TxnTaxDetail> 
<CustomerRef name="gg">3</CustomerRef> 
<SalesTermRef>3</SalesTermRef> 
<DueDate>2014-09-20</DueDate> 
<GlobalTaxCalculation>TaxExcluded</GlobalTaxCalculation> 
<TotalAmt>24.79</TotalAmt> 
<HomeTotalAmt>24.79</HomeTotalAmt> 
<PrintStatus>NotSet</PrintStatus> 
<EmailStatus>NotSet</EmailStatus> 
<BillEmail> 
    <Address>[email protected]</Address> 
</BillEmail> 
<Balance>24.79</Balance> 
<Deposit>0</Deposit> 
<AllowIPNPayment>false</AllowIPNPayment> 
<AllowOnlinePayment>false</AllowOnlinePayment> 
<AllowOnlineCreditCardPayment>false</AllowOnlineCreditCardPayment> 
<AllowOnlineACHPayment>false</AllowOnlineACHPayment> 

您還需要發送SalesItemLineDetail在您的線路匹配您的發票。請參閱這些文檔以獲取需要發送的樣本發票和基本標籤。 https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/030_entity_services_reference/invoice

轉寄此理解所有數據類型和關鍵概念 - https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/020_key_concepts/0700_other_topics https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services

或者創建UI的發票,然後使用API​​資源管理器讀取它。與您的xml請求進行比較。您將瞭解正確的有效負載應該如何。

+0

根據您的答案編輯我的原始問題,並提供新的詳細信息。 – Jeremy1026 2014-08-28 17:22:45

+0

不知道這是否有幫助,但在這裏檢查JSON示例 - 請參閱您的ref標籤,如CustomerRef或ItmeRef已直接編號分配,但在示例中創建json在這裏 - https://developer.intuit.com/docs/0025_quickbooksapi/ 0050_data_services/030_entity_services_reference/invoice,CustomerRef具有Id的值。 – 2014-09-05 16:49:32

+0

對所有ref標籤都做同樣的事情。 – 2014-09-05 16:49:49