diff --git a/pom.xml b/pom.xml
index c5306f0..51a1f2d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,12 +7,12 @@
com.intuit.quickbooks-online
ipp-v3-java-devkit
- 6.1.1
+ 6.4.1
com.intuit.quickbooks-online
ipp-v3-java-data
- 6.1.1
+ 6.4.1
diff --git a/src/main/java/com/intuit/developer/sampleapp/crud/entities/inventoryadjustment/InventoryAdjustmentCreate.java b/src/main/java/com/intuit/developer/sampleapp/crud/entities/inventoryadjustment/InventoryAdjustmentCreate.java
new file mode 100644
index 0000000..2242954
--- /dev/null
+++ b/src/main/java/com/intuit/developer/sampleapp/crud/entities/inventoryadjustment/InventoryAdjustmentCreate.java
@@ -0,0 +1,51 @@
+package com.intuit.developer.sampleapp.crud.entities.inventoryadjustment;
+
+import com.intuit.developer.sampleapp.crud.helper.InventoryAdjustmentHelper;
+import com.intuit.developer.sampleapp.crud.qbo.DataServiceFactory;
+import com.intuit.ipp.data.Error;
+import com.intuit.ipp.data.InventoryAdjustment;
+import com.intuit.ipp.exception.FMSException;
+import com.intuit.ipp.services.DataService;
+import com.intuit.ipp.util.Logger;
+
+import java.util.List;
+
+/**
+ * Demonstrates methods to create inventory adjustment
+ * 1. Using mandatory fields
+ * 2. Using all fields
+ *
+ * @author sramadass
+ *
+ */
+public class InventoryAdjustmentCreate {
+
+ private static final org.slf4j.Logger LOG = Logger.getLogger();
+
+ public static void main(String[] args) {
+ try {
+ createInventoryAdjustment();
+ } catch (Exception e) {
+ LOG.error("Error during CRUD", e.getCause());
+ }
+ }
+
+ public static void createInventoryAdjustment() throws Exception {
+
+ try {
+
+ DataService service = DataServiceFactory.getDataService();
+
+ // add Inventory Adjustment
+ InventoryAdjustment inventoryAdjustment = InventoryAdjustmentHelper.getInvAdjFields(service);
+ InventoryAdjustment savedInventoryAdjustment = service.add(inventoryAdjustment);
+ LOG.info("Inventory Adjustment created: " + savedInventoryAdjustment.getId());
+
+ } catch (FMSException e) {
+ List list = e.getErrorList();
+ list.forEach(error -> LOG.error("Error while calling entity add:: " + error.getMessage()));
+ }
+
+ }
+
+}
diff --git a/src/main/java/com/intuit/developer/sampleapp/crud/entities/inventoryadjustment/InventoryAdjustmentDelete.java b/src/main/java/com/intuit/developer/sampleapp/crud/entities/inventoryadjustment/InventoryAdjustmentDelete.java
new file mode 100644
index 0000000..954e17f
--- /dev/null
+++ b/src/main/java/com/intuit/developer/sampleapp/crud/entities/inventoryadjustment/InventoryAdjustmentDelete.java
@@ -0,0 +1,53 @@
+package com.intuit.developer.sampleapp.crud.entities.inventoryadjustment;
+
+import com.intuit.developer.sampleapp.crud.helper.InventoryAdjustmentHelper;
+import com.intuit.developer.sampleapp.crud.qbo.DataServiceFactory;
+import com.intuit.ipp.data.Error;
+import com.intuit.ipp.data.InventoryAdjustment;
+import com.intuit.ipp.exception.FMSException;
+import com.intuit.ipp.services.DataService;
+import com.intuit.ipp.util.Logger;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * Demonstrates methods to delete inventory adjustment
+ * Note: We'll create an entity first and then delete the same
+ *
+ * @author sramadass
+ *
+ */
+public class InventoryAdjustmentDelete {
+
+ private static final org.slf4j.Logger LOG = Logger.getLogger();
+
+ public static void main(String[] args) {
+ try {
+ deleteInventoryAdjustment();
+ } catch (Exception e) {
+ LOG.error("Error during CRUD", e.getCause());
+ }
+ }
+
+ public static void deleteInventoryAdjustment() throws ParseException {
+
+ try {
+ DataService service = DataServiceFactory.getDataService();
+
+ // add Inventory Adjustment
+ InventoryAdjustment inventoryAdjustment = InventoryAdjustmentHelper.getInvAdjFields(service);
+ InventoryAdjustment savedInventoryAdjustment = service.add(inventoryAdjustment);
+ LOG.info("Inventory Adjustment created: " + savedInventoryAdjustment.getId());
+
+ // delete Inventory Adjustment
+ InventoryAdjustment deletedInventoryAdjustment = service.delete(savedInventoryAdjustment);
+ LOG.info("Inventory Adjustment deleted : " + deletedInventoryAdjustment.getId() + " status ::: " + deletedInventoryAdjustment.getStatus());
+
+ } catch (FMSException e) {
+ List list = e.getErrorList();
+ list.forEach(error -> LOG.error("Error while deleting entity :: " + error.getMessage()));
+ }
+ }
+
+}
diff --git a/src/main/java/com/intuit/developer/sampleapp/crud/entities/inventoryadjustment/InventoryAdjustmentRead.java b/src/main/java/com/intuit/developer/sampleapp/crud/entities/inventoryadjustment/InventoryAdjustmentRead.java
new file mode 100644
index 0000000..251d3a5
--- /dev/null
+++ b/src/main/java/com/intuit/developer/sampleapp/crud/entities/inventoryadjustment/InventoryAdjustmentRead.java
@@ -0,0 +1,53 @@
+package com.intuit.developer.sampleapp.crud.entities.inventoryadjustment;
+
+import com.intuit.developer.sampleapp.crud.helper.InventoryAdjustmentHelper;
+import com.intuit.developer.sampleapp.crud.qbo.DataServiceFactory;
+import com.intuit.ipp.data.Error;
+import com.intuit.ipp.data.InventoryAdjustment;
+import com.intuit.ipp.exception.FMSException;
+import com.intuit.ipp.services.DataService;
+import com.intuit.ipp.util.Logger;
+
+import java.util.List;
+
+/**
+ * Demonstrates methods to read InventoryAdjustment using Inventory Adjustment id
+ * Note: We'll create an entity first and then read the same
+ *
+ * @author sramadass
+ *
+ */
+public class InventoryAdjustmentRead {
+
+ private static final org.slf4j.Logger LOG = Logger.getLogger();
+
+ public static void main(String[] args) {
+ try {
+ getInventoryAdjustment();
+ } catch (Exception e) {
+ LOG.error("Error during CRUD", e.getCause());
+ }
+ }
+
+ public static void getInventoryAdjustment() {
+
+ try {
+
+ DataService service = DataServiceFactory.getDataService();
+
+ // add Inventory Adjustment
+ InventoryAdjustment inventoryAdjustment = InventoryAdjustmentHelper.getInvAdjFields(service);
+ InventoryAdjustment savedInventoryAdjustment = service.add(inventoryAdjustment);
+ LOG.info("Inventory Adjustment created: " + savedInventoryAdjustment.getId());
+
+ InventoryAdjustment inventoryAdjustmentOut = service.findById(savedInventoryAdjustment);
+ LOG.info("Inventory Adjustment ID: " + inventoryAdjustmentOut.getId());
+
+ } catch (FMSException e) {
+ List list = e.getErrorList();
+ list.forEach(error -> LOG.error("Error while calling entity findById:: " + error.getMessage()));
+ }
+
+ }
+
+}
diff --git a/src/main/java/com/intuit/developer/sampleapp/crud/entities/inventoryadjustment/InventoryAdjustmentUpdate.java b/src/main/java/com/intuit/developer/sampleapp/crud/entities/inventoryadjustment/InventoryAdjustmentUpdate.java
new file mode 100644
index 0000000..bd5c0f1
--- /dev/null
+++ b/src/main/java/com/intuit/developer/sampleapp/crud/entities/inventoryadjustment/InventoryAdjustmentUpdate.java
@@ -0,0 +1,56 @@
+package com.intuit.developer.sampleapp.crud.entities.inventoryadjustment;
+
+import com.intuit.developer.sampleapp.crud.helper.InventoryAdjustmentHelper;
+import com.intuit.developer.sampleapp.crud.qbo.DataServiceFactory;
+import com.intuit.ipp.data.Error;
+import com.intuit.ipp.data.InventoryAdjustment;
+import com.intuit.ipp.exception.FMSException;
+import com.intuit.ipp.services.DataService;
+import com.intuit.ipp.util.Logger;
+
+import java.util.List;
+
+/**
+ * Demonstrates methods to update inventory adjustment
+ * Sparse update with limited fields
+ *
+ * @author sramadass
+ *
+ */
+public class InventoryAdjustmentUpdate {
+
+ private static final org.slf4j.Logger LOG = Logger.getLogger();
+
+ public static void main(String[] args) {
+ try {
+ updateInventoryAdjustment();
+ } catch (Exception e) {
+ LOG.error("Error during CRUD", e.getCause());
+ }
+ }
+
+ public static void updateInventoryAdjustment() {
+
+ try {
+
+ DataService service = DataServiceFactory.getDataService();
+
+ // create Inventory Adjustment
+ InventoryAdjustment inventoryAdjustment = InventoryAdjustmentHelper.getInvAdjFields(service);
+ InventoryAdjustment savedInventoryAdjustment = service.add(inventoryAdjustment);
+ LOG.info("Inventory Adjustment created: " + savedInventoryAdjustment.getId() + " private note ::: " + savedInventoryAdjustment.getPrivateNote());
+
+ // sparse update Inventory Adjustment
+ savedInventoryAdjustment.setSparse(true);
+ savedInventoryAdjustment.setPrivateNote("Update Note");
+ InventoryAdjustment updatedInventoryAdjustment = service.update(savedInventoryAdjustment);
+ LOG.info("Inventory Adjustment sparse updated: " + updatedInventoryAdjustment.getId() + " private note ::: " + updatedInventoryAdjustment.getPrivateNote());
+
+ } catch (FMSException e) {
+ List list = e.getErrorList();
+ list.forEach(error -> LOG.error("Error while calling entity update:: " + error.getMessage()));
+ }
+
+ }
+
+}
diff --git a/src/main/java/com/intuit/developer/sampleapp/crud/helper/InventoryAdjustmentHelper.java b/src/main/java/com/intuit/developer/sampleapp/crud/helper/InventoryAdjustmentHelper.java
new file mode 100644
index 0000000..298164e
--- /dev/null
+++ b/src/main/java/com/intuit/developer/sampleapp/crud/helper/InventoryAdjustmentHelper.java
@@ -0,0 +1,46 @@
+package com.intuit.developer.sampleapp.crud.helper;
+
+import com.intuit.ipp.data.*;
+import com.intuit.ipp.exception.FMSException;
+import com.intuit.ipp.services.DataService;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author sramadass
+ *
+ */
+public final class InventoryAdjustmentHelper {
+
+ private InventoryAdjustmentHelper() {
+
+ }
+
+ public static InventoryAdjustment getInvAdjFields(DataService service) throws FMSException {
+
+ InventoryAdjustment inventoryAdjustment = new InventoryAdjustment();
+
+ Account account = AccountHelper.getAssetAccount(service);
+ inventoryAdjustment.setAdjustAccountRef(AccountHelper.getAccountRef(account));
+
+ inventoryAdjustment.setPrivateNote("Memo 1");
+
+ List invLine = new ArrayList();
+ Line line = new Line();
+ line.setDetailType(LineDetailTypeEnum.ITEM_ADJUSTMENT_LINE_DETAIL);
+
+ ItemAdjustmentLineDetail itemAdjustmentLineDetail = new ItemAdjustmentLineDetail();
+ itemAdjustmentLineDetail.setQtyDiff(new BigDecimal(3));
+
+ Item invItem = ItemHelper.getInventoryItem(service);
+ itemAdjustmentLineDetail.setItemRef(ItemHelper.getItemRef(invItem));
+ line.setItemAdjustmentLineDetail(itemAdjustmentLineDetail);
+ invLine.add(line);
+ inventoryAdjustment.setLine(invLine);
+
+ return inventoryAdjustment;
+ }
+
+}
diff --git a/src/main/java/com/intuit/developer/sampleapp/crud/helper/ItemHelper.java b/src/main/java/com/intuit/developer/sampleapp/crud/helper/ItemHelper.java
index ab0e12a..9e964fb 100644
--- a/src/main/java/com/intuit/developer/sampleapp/crud/helper/ItemHelper.java
+++ b/src/main/java/com/intuit/developer/sampleapp/crud/helper/ItemHelper.java
@@ -1,8 +1,10 @@
package com.intuit.developer.sampleapp.crud.helper;
import java.math.BigDecimal;
+import java.util.Date;
import java.util.List;
+import com.intuit.ipp.services.QueryResult;
import org.apache.commons.lang.RandomStringUtils;
import com.intuit.ipp.data.Account;
@@ -11,6 +13,7 @@
import com.intuit.ipp.data.ReferenceType;
import com.intuit.ipp.exception.FMSException;
import com.intuit.ipp.services.DataService;
+import org.apache.commons.lang.StringUtils;
/**
* @author dderose
@@ -19,7 +22,7 @@
public final class ItemHelper {
private ItemHelper() {
-
+
}
public static Item getItemFields(DataService service) throws FMSException {
@@ -43,18 +46,58 @@ public static Item getItemFields(DataService service) throws FMSException {
return item;
}
+ public static Item getInvItemFields(DataService service) throws FMSException {
+
+ Item invItem = new Item();
+ invItem.setName("Item" + RandomStringUtils.randomAlphanumeric(5));
+ invItem.setActive(true);
+ invItem.setType(ItemTypeEnum.INVENTORY);
+ invItem.setQtyOnHand(new BigDecimal(100));
+ invItem.setTrackQtyOnHand(true);
+ invItem.setInvStartDate(new Date());
+
+ String sql = "select * from account where Name = 'Cost of sales'";
+ QueryResult queryResult = service.executeQuery(sql);
+ Account account = (Account) queryResult.getEntities().get(0);
+ invItem.setExpenseAccountRef(AccountHelper.getAccountRef(account));
+
+ sql = "select * from account where Name = 'Sales of product income'";
+ queryResult = service.executeQuery(sql);
+ account = (Account) queryResult.getEntities().get(0);
+ invItem.setIncomeAccountRef(AccountHelper.getAccountRef(account));
+
+ invItem.setPurchaseCost(new BigDecimal("300"));
+
+ List accounts = (List) service.findAll(new Account());
+ for(int i=0; i<=accounts.size();i++) {
+ if(StringUtils.equals(accounts.get(i).getName(), "Inventory Asset")){
+ invItem.setAssetAccountRef(AccountHelper.getAccountRef(accounts.get(i)));
+ break;
+ }
+ }
+ return invItem;
+ }
+
public static Item getItem(DataService service) throws FMSException {
List- items = (List
- ) service.findAll(new Item());
- if (!items.isEmpty()) {
- return items.get(0);
+ if (!items.isEmpty()) {
+ return items.get(0);
}
return createItem(service);
}
+ public static Item getInventoryItem(DataService service) throws FMSException {
+ return createInventoryItem(service);
+ }
+
private static Item createItem(DataService service) throws FMSException {
return service.add(getItemFields(service));
}
+ private static Item createInventoryItem(DataService service) throws FMSException {
+ return service.add(getInvItemFields(service));
+ }
+
public static ReferenceType getItemRef(Item item) {
ReferenceType itemRef = new ReferenceType();
itemRef.setName(item.getName());