QuickBooks始终为同一客户创建在线Java SDK发票

时间:2014-05-04 16:46:57

标签: java quickbooks intuit-partner-platform quickbooks-online intuit

我指的是使用Java SDK(v2.2.1)的API的v3版本。我正在使用试用帐户进行测试,我有6个客户存储。我创建的第一个客户名为'Abe Lincoln'。每当我尝试使用相关的客户ID(通过查询显示名称从API检索)为客户创建发票时,发票都会成功创建,但每个发票都与客户'Abe Lincoln'相关联!!

这是发票创建代码。我用硬编码的值运行它只是为了确定:

Invoice invoice = new Invoice();
invoice.setDocNumber("DocNum");

ReferenceType customerRef = new ReferenceType();
customerRef.setValue("4");  // display name = 'Joe Bloggs'
invoice.setCustomerRef(customerRef);

Line line = new Line();
line.setAmount( new BigDecimal(50) );
line.setDetailType(LineDetailTypeEnum.SALES_ITEM_LINE_DETAIL);

SalesItemLineDetail salesItemLineDetail = new SalesItemLineDetail();
ReferenceType itemRef = customerRef;

itemRef.setName("ProductName");
itemRef.setValue("1");
salesItemLineDetail.setItemRef(itemRef);
line.setSalesItemLineDetail(salesItemLineDetail);

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

invoice.setPrivateNote("PrivateNote");
batch.addEntity(invoice, OperationEnum.CREATE, idx + "");

...运行此操作后,会在我的帐户中为客户'Abe Lincoln'创建发票。 ID为“4”的客户的显示名称实际上是“Joe Bloggs”。我已尝试使用值2到6(这些都对其他客户有效),但无论结果如何都是相同的。有谁能建议这里发生了什么?

2 个答案:

答案 0 :(得分:2)

你在以后的部分用1覆盖值。

ReferenceType itemRef = customerRef;

itemRef.setName("ProductName");
itemRef.setValue("1");

在这里创建一个新的ReferenceType对象......

ReferenceType itemRef = new ReferenceType();`

答案 1 :(得分:1)

您可以将java devkit配置为调试模式,如以下文档中所述。 https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0201_ipp_java_devkit_3.0/0006_logging#SDK_Logs

您可以通过捕获和调查原始请求/响应XML轻松调试问题。

Othewise,您可以通过apiExplorer工具查询客户实体(“Abe Lincoln”和“Joe Bloggs”)。请查看您是否具有一致的DisplayName(因为有多个名称相关属性)和Id。

https://developer.intuit.com/apiexplorer?apiname=V3QBO#Customer

由于