我指的是使用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(这些都对其他客户有效),但无论结果如何都是相同的。有谁能建议这里发生了什么?
答案 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
由于