Skip to content

Commit 84be1f2

Browse files
Updated deserializer for recurring transactions
1 parent ff62c9a commit 84be1f2

File tree

11 files changed

+144
-85
lines changed

11 files changed

+144
-85
lines changed

ipp-v3-java-data/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.intuit.quickbooks-online</groupId>
66
<artifactId>ipp-v3-java-devkit-pom</artifactId>
7-
<version>6.0.7</version>
7+
<version>6.0.8</version>
88
</parent>
99

1010
<artifactId>ipp-v3-java-data</artifactId>

ipp-v3-java-devkit/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<artifactId>ipp-v3-java-devkit-pom</artifactId>
66
<groupId>com.intuit.quickbooks-online</groupId>
7-
<version>6.0.7</version>
7+
<version>6.0.8</version>
88
</parent>
99

1010
<artifactId>ipp-v3-java-devkit</artifactId>
@@ -22,7 +22,7 @@
2222
<dependency>
2323
<groupId>com.intuit.quickbooks-online</groupId>
2424
<artifactId>ipp-v3-java-data</artifactId>
25-
<version>6.0.7</version>
25+
<version>6.0.8</version>
2626
</dependency>
2727
<dependency>
2828
<groupId>cglib</groupId>

ipp-v3-java-devkit/src/main/java/com/intuit/ipp/serialization/JsonResourceTypeLocator.java

Lines changed: 3 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -15,80 +15,11 @@
1515
*******************************************************************************/
1616
package com.intuit.ipp.serialization;
1717

18+
import java.lang.Class;
1819
import java.util.HashMap;
1920
import java.util.Map;
2021

21-
import com.intuit.ipp.data.Account;
22-
import com.intuit.ipp.data.Attachable;
23-
import com.intuit.ipp.data.AttachableResponse;
24-
import com.intuit.ipp.data.BatchItemResponse;
25-
import com.intuit.ipp.data.Bill;
26-
import com.intuit.ipp.data.BillPayment;
27-
import com.intuit.ipp.data.Budget;
28-
import com.intuit.ipp.data.Company;
29-
import com.intuit.ipp.data.CompanyCurrency;
30-
import com.intuit.ipp.data.CompanyInfo;
31-
import com.intuit.ipp.data.CreditCardPaymentTxn;
32-
import com.intuit.ipp.data.CreditMemo;
33-
import com.intuit.ipp.data.Currency;
34-
import com.intuit.ipp.data.CustomField;
35-
import com.intuit.ipp.data.CustomFieldDefinition;
36-
import com.intuit.ipp.data.Customer;
37-
import com.intuit.ipp.data.CustomerMsg;
38-
import com.intuit.ipp.data.CustomerType;
39-
import com.intuit.ipp.data.Department;
40-
import com.intuit.ipp.data.Deposit;
41-
import com.intuit.ipp.data.Employee;
42-
import com.intuit.ipp.data.Estimate;
43-
import com.intuit.ipp.data.ExchangeRate;
44-
import com.intuit.ipp.data.FixedAsset;
45-
import com.intuit.ipp.data.InventorySite;
46-
import com.intuit.ipp.data.Invoice;
47-
import com.intuit.ipp.data.Item;
48-
import com.intuit.ipp.data.JobType;
49-
import com.intuit.ipp.data.JournalCode;
50-
import com.intuit.ipp.data.JournalEntry;
51-
import com.intuit.ipp.data.Money;
52-
import com.intuit.ipp.data.OLBStatus;
53-
import com.intuit.ipp.data.OLBTransaction;
54-
import com.intuit.ipp.data.OtherName;
55-
import com.intuit.ipp.data.Payment;
56-
import com.intuit.ipp.data.PaymentMethod;
57-
import com.intuit.ipp.data.Preferences;
58-
import com.intuit.ipp.data.PriceLevel;
59-
import com.intuit.ipp.data.PriceLevelPerItem;
60-
import com.intuit.ipp.data.Purchase;
61-
import com.intuit.ipp.data.PurchaseOrder;
62-
import com.intuit.ipp.data.QueryResponse;
63-
import com.intuit.ipp.data.RefundReceipt;
64-
import com.intuit.ipp.data.SalesOrder;
65-
import com.intuit.ipp.data.SalesReceipt;
66-
import com.intuit.ipp.data.SalesRep;
67-
import com.intuit.ipp.data.ShipMethod;
68-
import com.intuit.ipp.data.StatementCharge;
69-
import com.intuit.ipp.data.Status;
70-
import com.intuit.ipp.data.SyncActivity;
71-
import com.intuit.ipp.data.SyncError;
72-
import com.intuit.ipp.data.SyncErrorResponse;
73-
import com.intuit.ipp.data.SyncObject;
74-
import com.intuit.ipp.data.Task;
75-
import com.intuit.ipp.data.TaxAgency;
76-
import com.intuit.ipp.data.TaxClassification;
77-
import com.intuit.ipp.data.TaxCode;
78-
import com.intuit.ipp.data.TaxPayment;
79-
import com.intuit.ipp.data.TaxRate;
80-
import com.intuit.ipp.data.TaxService;
81-
import com.intuit.ipp.data.TemplateName;
82-
import com.intuit.ipp.data.Term;
83-
import com.intuit.ipp.data.TimeActivity;
84-
import com.intuit.ipp.data.Transaction;
85-
import com.intuit.ipp.data.Transfer;
86-
import com.intuit.ipp.data.UOM;
87-
import com.intuit.ipp.data.User;
88-
import com.intuit.ipp.data.UserAlert;
89-
import com.intuit.ipp.data.Vendor;
90-
import com.intuit.ipp.data.VendorCredit;
91-
import com.intuit.ipp.data.VendorType;
22+
import com.intuit.ipp.data.*;
9223

9324
/**
9425
* Class to hold the resource type locators for JSON to deserialize
@@ -150,6 +81,7 @@ private JsonResourceTypeLocator() {
15081
put("OLBTransaction", OLBTransaction.class);
15182
put("OtherName", OtherName.class);
15283
put("QueryResponse", QueryResponse.class);
84+
put("RecurringTransaction", RecurringTransaction.class);
15385
put("RefundReceipt", RefundReceipt.class);
15486
put("SalesOrder", SalesOrder.class);
15587
put("SalesReceipt", SalesReceipt.class);

ipp-v3-java-devkit/src/main/java/com/intuit/ipp/serialization/QueryResponseDeserializer.java

Lines changed: 54 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,7 @@
3434
import com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair;
3535
import com.fasterxml.jackson.databind.DeserializationFeature;
3636

37-
import com.intuit.ipp.data.CustomFieldDefinition;
38-
import com.intuit.ipp.data.Fault;
39-
import com.intuit.ipp.data.IntuitEntity;
40-
import com.intuit.ipp.data.ObjectFactory;
41-
import com.intuit.ipp.data.QueryResponse;
37+
import com.intuit.ipp.data.*;
4238
import com.intuit.ipp.util.Logger;
4339

4440
/**
@@ -76,6 +72,11 @@ public class QueryResponseDeserializer extends JsonDeserializer<QueryResponse> {
7672
* variable TOTALCOUNT
7773
*/
7874
private static final String TOTALCOUNT = "totalCount";
75+
76+
/**
77+
* variable RECURRINGTXN
78+
*/
79+
private static final String RECURRINGTXN = "RecurringTransaction";
7980

8081
/**
8182
* variable objFactory
@@ -116,6 +117,54 @@ public QueryResponse deserialize(JsonParser jp, DeserializationContext desContex
116117
qr.setMaxResults(jn.get(MAXRESULTS).intValue());
117118
} else if (key.equals(TOTALCOUNT)) {
118119
qr.setTotalCount(jn.get(TOTALCOUNT).intValue());
120+
} else if (key.equals(RECURRINGTXN)) {
121+
if (JsonResourceTypeLocator.lookupType(key) != null) {
122+
JsonNode jn1 = jn.get(key);
123+
if (jn1.isArray()) {
124+
Iterator<JsonNode> iteJson = jn1.iterator();
125+
126+
// read the recurring transactions array
127+
while (iteJson.hasNext()) {
128+
129+
RecurringTransaction rt = new RecurringTransaction();
130+
JsonNode jn2 = iteJson.next();
131+
Iterator<JsonNode> iteJson2 = jn2.iterator();
132+
133+
// read the underlying IntuitObject transaction
134+
while (iteJson2.hasNext()) {
135+
Iterator<String> s = jn2.fieldNames();
136+
String rtKey = s.next();
137+
LOG.debug("RecurringTransaction : " + rtKey);
138+
139+
JsonNode jn3 = iteJson2.next();
140+
141+
// set the CustomFieldDefinition deserializer
142+
registerModulesForCustomFieldDef(mapper);
143+
144+
//Force the data to be casted to its type
145+
Object intuitType = mapper.treeToValue(jn3, JsonResourceTypeLocator.lookupType(rtKey));
146+
//Double check
147+
if (intuitType instanceof IntuitEntity) {
148+
intuitResponseDeserializerHelper.updateBigDecimalScale((IntuitEntity) intuitType);
149+
JAXBElement<? extends IntuitEntity> intuitObject = objFactory.createIntuitObject((IntuitEntity) intuitType);
150+
rt.setIntuitObject(intuitObject);
151+
}
152+
}
153+
154+
// set the CustomFieldDefinition deserializer
155+
registerModulesForCustomFieldDef(mapper);
156+
157+
// set the query response object to be the recurring transaction
158+
Object intuitType = rt;
159+
//Double check
160+
if (intuitType instanceof IntuitEntity) {
161+
intuitResponseDeserializerHelper.updateBigDecimalScale((IntuitEntity) intuitType);
162+
JAXBElement<? extends IntuitEntity> intuitObject = objFactory.createIntuitObject((IntuitEntity) intuitType);
163+
qr.getIntuitObject().add(intuitObject);
164+
}
165+
}
166+
}
167+
}
119168
} else {
120169
// It has to be an IntuitEntity
121170
//Check if the entity is in the resource locator

ipp-v3-java-devkit/src/main/resources/ippdevkit.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Devkit Version
44
# This version has to be updated according to the pom version
5-
version = 6.0.7
5+
version = 6.0.8
66

77
# This is to have the request source to be sent to IDS request header
88
request.source = V3JavaSDK
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package com.intuit.ipp.services;
2+
3+
import com.intuit.ipp.core.Context;
4+
import com.intuit.ipp.core.ServiceType;
5+
import com.intuit.ipp.data.*;
6+
import com.intuit.ipp.data.Error;
7+
import com.intuit.ipp.exception.FMSException;
8+
import com.intuit.ipp.security.OAuth2Authorizer;
9+
import com.intuit.ipp.security.OAuthAuthorizer;
10+
import com.intuit.ipp.util.Logger;
11+
12+
import javax.xml.bind.JAXBElement;
13+
import java.text.ParseException;
14+
import java.util.List;
15+
16+
public class ShwetaTest {
17+
18+
protected static DataService service = null;
19+
private static final org.slf4j.Logger LOG = Logger.getLogger();
20+
private static String bearerToken = "eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..nPVI8fVzNjf6c7FNX1Xrwg.N0UN-P48eRDceYBj37-FiOKQ2pI2KfXvB_lsMhE7VUnvff6gzeIsohv-3CXsyGeJnhKbVALX2DX0yjw0xXPjywllqUqNjr_3jc2QLZ4WKsofcFp7lpsC6RFuWH6ducycr5cjhLP4XIqYu1FhtFLoTaNZq-T39ynBv7lY0uERZ6aQjnzfI59WgJTbkNf-3olJggJi8IOJSKN-nOJbpsR6VVbNHwkuwH2GtwWn6rtGKZhLKzApbI3m-Px-L6wdll03Wk-_n3F-VOCIwLv_lUk_VgfD3a3MNbHUk8qyIgDQtg3yCgopYMerV44yzIi0xVKq9mr0rItT8gnWECaLtW4ZwzBssOINKf-ONWOSjUlaAEYmuA7w9FREbee_moQUpiWXEZhVPrALMYpB0iULVJOC86TBavjiFOnVu2Ue3CwxSOCUFCf7yMAMqlGTnaDfEheogAo0AlxFUA3LYgKk9PSldxhgoROJst-BCsFeRIS2EhLgqIUf-CfLHeO3O62Mp7XHF_ZiKKiyGzcjyvlA5US3_d1s7S402VJGT8LVgDseS-3CytIJP1i69hmNGS8tagPBVVnI9I1TJ3GZaa8IrbDP1-WKv1XwJOZOf5cIvxFmtceS_GcMA0C1scumsgDiKTB78NmqL2NAvt0KTZgNKNzxRIWy1BKeSIalxSFg6wEGtXg7LcuqLwzC6uUvr8jbV9grM6PTH4uZ3WzmvQjoh7lrFb_4q0unDgLzBT9dYcXvuX1d9EcYwWxRj_mQU7bHTzBcjfmrozdpYw6Pf4XIaYXl2w5U99UTfG-xO3nX52aqxIc.KDp822XhLM26GFAk4vzJqg";
21+
private static String companyID = "123146217387174";
22+
23+
public static void main(String[] args) {
24+
25+
try {
26+
OAuth2Authorizer oauth = new OAuth2Authorizer(bearerToken);
27+
Context context = new Context(oauth, ServiceType.QBO, companyID);
28+
service = new DataService(context);
29+
30+
queryRecurringTxn();
31+
} catch (Exception e) {
32+
LOG.error("", e.getMessage());
33+
LOG.error("Error during CRUD", e.getCause());
34+
}
35+
}
36+
37+
38+
public static void queryRecurringTxn() throws Exception {
39+
40+
//
41+
try {
42+
43+
String sql = "select * from RecurringTransaction";
44+
// String sql = "select * from Invoice maxresults 2";
45+
46+
QueryResult queryResult = service.executeQuery(sql);
47+
int count = queryResult.getEntities().size();
48+
49+
50+
RecurringTransaction txn = (RecurringTransaction)queryResult.getEntities().get(0);
51+
52+
LOG.info("Transaction: " + txn.getIntuitObject().getValue());
53+
54+
55+
//Invoice txn = (Invoice)queryResult.getEntities().get(0);
56+
// LOG.info("RecurringTransaction " + txn);
57+
// LOG.info("RecurringTransaction " + txn.getIntuitObject().getName());
58+
// LOG.info("RecurringTransaction " + txn.getIntuitObject().getDeclaredType());
59+
// LOG.info("RecurringTransaction " + txn.getIntuitObject().getValue());
60+
//
61+
//
62+
// Invoice i = (Invoice)txn.getIntuitObject().getValue();
63+
// IntuitEntity i2 = (IntuitEntity)txn.getIntuitObject().getValue();
64+
65+
66+
67+
LOG.info("Invoice " + txn.getId());
68+
69+
}
70+
71+
catch (FMSException e) {
72+
LOG.error("FMSException: " + e.getMessage() , e.getMessage());
73+
}
74+
catch (Exception e) {
75+
LOG.error("Exception: " + e.getMessage() , e.getMessage());
76+
}
77+
}
78+
}

oauth2-platform-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<parent>
2121
<artifactId>ipp-v3-java-devkit-pom</artifactId>
2222
<groupId>com.intuit.quickbooks-online</groupId>
23-
<version>6.0.7</version>
23+
<version>6.0.8</version>
2424
</parent>
2525
<artifactId>oauth2-platform-api</artifactId>
2626
<name>Quickbooks API Helper for OAuth2</name>

oauth2-platform-api/src/main/resources/oauthclient.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ EMAIL=email
3434
INTUIT_NAME=intuit_name
3535

3636
#Version
37-
version=6.0.7
37+
version=6.0.8
3838

3939
#MIGRATION SERVICE URL
4040
OAUTH_MIGRATION_URL_PRODUCTION=https://developer.api.intuit.com/v2/oauth2/tokens/migrate

payments-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<parent>
2020
<artifactId>ipp-v3-java-devkit-pom</artifactId>
2121
<groupId>com.intuit.quickbooks-online</groupId>
22-
<version>6.0.7</version>
22+
<version>6.0.8</version>
2323
</parent>
2424
<artifactId>payments-api</artifactId>
2525
<name>Payments API SDK</name>

payments-api/src/main/resources/payment.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ PAYMENTS_BASE_URL_PRODUCTION=https://api.intuit.com/quickbooks/v4/payments/
1818
PAYMENTS_BASE_URL_SANDBOX=https://sandbox.api.intuit.com/quickbooks/v4/payments/
1919

2020
#Version
21-
version=6.0.7
21+
version=6.0.8
2222

2323
#TLS Version
2424
TLS_VERSION=TLSv1.2

0 commit comments

Comments
 (0)