0

我指的是SDK的v3版本(2.2.1)。我试图弄清楚我需要做什么来创建发票。我的问题不是任何错误或连接问题,只是文档看起来很差,没有例子。所以,我有什么是:如何使用QuickBooks在线Java SDK创建发票实体

BatchOperation batch= new BatchOperation(); 
Invoice invoice = new Invoice(); 
invoice.set... 
... 
batch.addEntity(invoice, OperationEnum.CREATE, "bID"); 

的问题是,我只是不知道如何为Invoice实体许多 setter方法将对应于一个普通发票例如身份证,客户身份证等。

如果有人以前做过这件事,可以给我一个我可能想用于通用发票的设置器的例子。我在这里的主要问题是,在JavaDoc所有Invoice制定者的解释(和getter方法)就像:

setAllowIPNPayment(Boolean value) 
     Sets the value of the allowIPNPayment property. 

......和他们都一样,例如Sets the value of the [X] property

回答

1

PFB一个样本有效载荷。

请求

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <Invoice xmlns="http://schema.intuit.com/finance/v3"> 
     <Line> 
      <Amount>15</Amount> 
      <DetailType>SalesItemLineDetail</DetailType> 
      <SalesItemLineDetail> 
       <ItemRef name="Hours">2</ItemRef> 
      </SalesItemLineDetail> 
     </Line> 
     <CustomerRef name="Hours">2</CustomerRef> 
    </Invoice> 

响应

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2014-04-30T07:35:49.705-07:00"> 
    <Invoice domain="QBO" sparse="false"> 
     <Id>16</Id> 
     <SyncToken>0</SyncToken> 
     <MetaData> 
      <CreateTime>2014-04-30T07:35:49-07:00</CreateTime> 
      <LastUpdatedTime>2014-04-30T07:35:49-07:00</LastUpdatedTime> 
     </MetaData> 
     <DocNumber>1003</DocNumber> 
     <TxnDate>2014-04-30</TxnDate> 
     <CurrencyRef name="Australian Dollar">AUD</CurrencyRef> 
     <Line> 
      <Id>1</Id> 
      <LineNum>1</LineNum> 
      <Amount>15.00</Amount> 
      <DetailType>SalesItemLineDetail</DetailType> 
      <SalesItemLineDetail> 
       <ItemRef name="Hours">2</ItemRef> 
      </SalesItemLineDetail> 
     </Line> 
     <Line> 
      <Amount>15.00</Amount> 
      <DetailType>SubTotalLineDetail</DetailType> 
      <SubTotalLineDetail/> 
     </Line> 
     <CustomerRef name="abc">2</CustomerRef> 
     <DueDate>2014-05-30</DueDate> 
     <GlobalTaxCalculation>NotApplicable</GlobalTaxCalculation> 
     <TotalAmt>15.00</TotalAmt> 
     <PrintStatus>NeedToPrint</PrintStatus> 
     <EmailStatus>NotSet</EmailStatus> 
     <Balance>15.00</Balance> 
     <Deposit>0</Deposit> 
     <AllowIPNPayment>false</AllowIPNPayment> 
     <AllowOnlinePayment>false</AllowOnlinePayment> 
     <AllowOnlineCreditCardPayment>false</AllowOnlineCreditCardPayment> 
     <AllowOnlineACHPayment>false</AllowOnlineACHPayment> 
    </Invoice> 
</IntuitResponse> 

您可以使用使用Java SDK的上述二传手。它将创建一个有效的发票。 请使用有效引用的对象(项目及客户)

参考文件的标识 - https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/030_entity_services_reference/invoice

更新

void createInvoice() { 
    try { 

     Invoice invoice = new Invoice(); 
     ReferenceType customerReferenceType = new ReferenceType(); 
     customerReferenceType.setName("abc"); 
     customerReferenceType.setValue("2"); 
     invoice.setCustomerRef(customerReferenceType); 
     Line line = new Line(); 
     line.setAmount(new BigDecimal(15)); 
     line.setDetailType(LineDetailTypeEnum.SALES_ITEM_LINE_DETAIL); 

     SalesItemLineDetail salesItemLineDetail = new SalesItemLineDetail(); 
     ReferenceType referenceType = customerReferenceType; 
     referenceType.setName("Hours"); 
     referenceType.setValue("2"); 
     salesItemLineDetail.setItemRef(referenceType); 
     line.setSalesItemLineDetail(salesItemLineDetail); 

     List linesList = new ArrayList<Line>(); 
     linesList.add(line); 
     invoice.setLine(linesList); 

     this.service.add(invoice); 
    } catch (FMSException e) { 
     e.printStackTrace(); 
    } 

感谢

+0

这看起来太好了,谢谢。 – RTF

+0

你能告诉我什么字符串“2”代表'ReferenceType'的setValue。此外,如果客户中不存在客户,请求会失败,即您需要创建客户实体,然后才能为该客户创建发票?如果系统尚不存在,系统是否不会根据发票创建新客户? – RTF

+1

- 2是您在使用API​​创建客户时获得的customerId。在这种情况下,创建上述发票后,服务返回16作为InvoiceId。 - 是的,customerId是强制性的(您正在为客户创建发票)(请参阅文档)。 - 如果客户不存在,任何系统都不会创建客户。您需要先打电话来创建客户,然后您需要在发票创建有效内容中传递customerId(您将作为响应的一部分获得)。谢谢 –