1DanielLee9

InputSalesOrderController

Apr 7th, 2021
253
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  *
  3.  */
  4. package org.jleaf.erp.sls.web.controller.salesorder;
  5.  
  6. import java.io.IOException;
  7. import java.io.Serializable;
  8. import java.util.ArrayList;
  9. import java.util.Collections;
  10. import java.util.Comparator;
  11. import java.util.Iterator;
  12. import java.util.List;
  13. import java.util.Map;
  14.  
  15. import javax.faces.context.FacesContext;
  16. import javax.faces.event.AjaxBehaviorEvent;
  17.  
  18. import org.jleaf.core.GeneralConstants;
  19. import org.jleaf.erp.sls.api.SalesApi;
  20. import org.jleaf.erp.sls.api.SalesHumanTask;
  21. import org.jleaf.erp.sls.web.PageInputConstants;
  22. import org.jleaf.erp.sls.web.SalesWebConstants;
  23. import org.jleaf.erp.sls.web.controller.GlobalSalesCombo;
  24. import org.jleaf.util.DateUtil;
  25. import org.jleaf.util.JSONObjectUtil;
  26. import org.jleaf.util.StringUtil;
  27. import org.jleaf.web.helper.MessageHelper;
  28. import org.jleaf.web.helper.ServiceResult;
  29. import org.jleaf.web.jsf.FacesUtils;
  30. import org.jleaf.web.jsf.WebJsfConstants;
  31. import org.jleaf.web.jsf.template.AbstractInputWithApprovalController;
  32. import org.jleaf.web.jsf.util.MessageUtil;
  33. import org.jleaf.web.model.ComboItem;
  34. import org.jleaf.web.report.server.ReportServerProvider;
  35. import org.json.simple.JSONObject;
  36. import org.primefaces.context.RequestContext;
  37. import org.primefaces.event.SelectEvent;
  38. import org.slf4j.Logger;
  39. import org.slf4j.LoggerFactory;
  40. import org.springframework.beans.factory.annotation.Autowired;
  41. import org.springframework.context.annotation.Scope;
  42. import org.springframework.stereotype.Controller;
  43.  
  44. /**
  45.  * @author Ali Irawan
  46.  *
  47.  */
  48. @SuppressWarnings("serial")
  49. @Controller
  50. @Scope("view")
  51. public class InputSalesOrderController extends AbstractInputWithApprovalController implements SalesApi, Serializable {
  52.     private static final Logger log = LoggerFactory.getLogger(InputSalesOrderController.class);
  53.     private static Comparator<JSONObject> GRID_ITEM_COMPARATOR = new Comparator<JSONObject>() {
  54.         public int compare(JSONObject o1, JSONObject o2) {
  55.             return Long.valueOf(o1.get("lineNo").toString()).compareTo(Long.valueOf(o2.get("lineNo").toString()));
  56.         }
  57.     };
  58.     @Autowired
  59.     private ReportServerProvider reportServerProvider;
  60.  
  61.     private JSONObject selectedItem = new JSONObject();
  62.     private JSONObject customerInfo = new JSONObject();
  63.     private JSONObject customerShipToAddressInfo = new JSONObject();
  64.  
  65.     private JSONObject customerBillToInfo = new JSONObject();
  66.  
  67.     private JSONObject customerCpInfo = new JSONObject();
  68.     private JSONObject cpWorkOrderInfo = new JSONObject();
  69.     private JSONObject customerShipCpInfo = new JSONObject();
  70.     private JSONObject purchasingInfo = new JSONObject();
  71.     private JSONObject inputPartnerCp = new JSONObject();
  72.     private JSONObject inputPartnerForAddPartnerCp = new JSONObject();
  73.     private JSONObject activityWorkOrder = new JSONObject();
  74.     private List<JSONObject> activityWorkOrderList = new ArrayList<JSONObject>();
  75.  
  76.     private JSONObject customerShipAddressInfo = new JSONObject();
  77.     private JSONObject inputExternalCommission;
  78.     private boolean editModeExternalCommission = false;
  79.     private JSONObject externalCommissionToBeDelete = new JSONObject();
  80.     private JSONObject itemPurchaseToBeDelete = new JSONObject();
  81.  
  82.     private JSONObject itemSellPriceProduct = new JSONObject();
  83.  
  84.     private Long lastLineNo = Long.valueOf(0L);
  85.     private List<JSONObject> summaryTaxList = new ArrayList<JSONObject>();
  86.     private JSONObject summary = new JSONObject();
  87.     private List<JSONObject> partnerRelationListForBilling;
  88.     private List<JSONObject> partnerAddressListForShipping;
  89.     private List<JSONObject> partnerCpList;
  90.     private List<JSONObject> productUomList = new ArrayList<JSONObject>();
  91.     private List<JSONObject> currencyList = new ArrayList<JSONObject>();
  92.     private List<JSONObject> taxList = new ArrayList<JSONObject>();
  93.     private List<JSONObject> externalCommissionList = new ArrayList<JSONObject>();
  94.     private List<JSONObject> salesOrderFinanceList = new ArrayList<JSONObject>();
  95.     private JSONObject itemToBeDeleted;
  96.  
  97.     private JSONObject latestPurchaseOrderItemInfo = new JSONObject();
  98.     private JSONObject latestSalesOrderItemInfo = new JSONObject();
  99.    
  100.    
  101.  
  102.     public List<JSONObject> getExternalCommissionList() {
  103.         return externalCommissionList;
  104.     }
  105.  
  106.     public void setExternalCommissionList(List<JSONObject> externalCommissionList) {
  107.         this.externalCommissionList = externalCommissionList;
  108.     }
  109.  
  110.     private List<JSONObject> subCategoryProductList;
  111.     private JSONObject filterAddMoreItems = new JSONObject();
  112.     private JSONObject[] selectedProductBalanceStockList;
  113.     private JSONObject selectedProductBalanceStock;
  114.     private List<JSONObject> productBalanceStockList;
  115.     private JSONObject digitDecimalCurrency = new JSONObject();
  116.     private JSONObject roundingParameter = new JSONObject();
  117.  
  118.     private List<JSONObject> partnerShipCpList = null;
  119.  
  120.     private String systemConfig = new String();
  121.     private boolean enableDiscount = false;
  122.     private boolean editDiscount = false;
  123.     private boolean topTypeCodeCash = true;
  124.     private String flagDropship = new String();
  125.    
  126.     @Autowired
  127.     private GlobalSalesCombo combo;
  128.  
  129.     @SuppressWarnings("unchecked")
  130.     protected void preInit() {
  131.         this.currencyList = this.combo.getCurrencyList();
  132.  
  133.         // proforma inv no
  134.         JSONObject proformaInvoice = new JSONObject();
  135.         proformaInvoice.put("proformaInvoiceNo", GeneralConstants.EMPTY_VALUE);
  136.         getReportUserParametersDefault().put("FormProformaInvoice", proformaInvoice);
  137.     }
  138.    
  139.     @Override
  140.     protected void init() {
  141.         super.init();
  142.         checkSystemConfig();
  143.         // panggil load default value flagDropship
  144.         loadDefaultFlgDropship();
  145.     }
  146.     public void checkSystemConfig() {
  147.         log.debug("checkSystemConfig");
  148.  
  149.         JSONObject inputJson = new JSONObject();
  150.         try {
  151.             JSONObject output = this.serviceContext.executeService(FIND_SYSTEM_CONFIG_REGULAR_DISCOUNT, inputJson);
  152.             JSONObject result = JSONObjectUtil.getResult(output);
  153.             if (ServiceResult.isOk(output)) {
  154.                 this.systemConfig = (String) result.get("value");
  155.                 if (GeneralConstants.YES.equals(systemConfig)) {
  156.                     enableDiscount = true;
  157.                 } else {
  158.                     enableDiscount = false;
  159.                 }
  160.                
  161.                 log.debug("systemConfig : " + this.systemConfig);
  162.             } else if (ServiceResult.isFail(output)) {
  163.                 this.systemConfig = new String();
  164.             }
  165.         } catch (Exception e) {
  166.             e.printStackTrace();
  167.             MessageHelper.displayError(e.getMessage());
  168.         }
  169.        
  170.     }
  171.  
  172.     // buat function load untuk ambil default flagDropship
  173.     @SuppressWarnings("unchecked")
  174.     public void loadDefaultFlgDropship(){
  175.         log.debug("\n\n Load Default Flag Dropship \n\n");
  176.        
  177.         JSONObject inputJson = new JSONObject();       
  178.         inputJson.put("parameterCode", SalesWebConstants.PARAM_CODE_DEFAULT_FLG_DROPSHIP);
  179.         try {
  180.             JSONObject output = this.serviceContext.executeService(FIND_SYSTEM_CONFIG_BY_PARAM_CODE, inputJson);
  181.             JSONObject result = JSONObjectUtil.getResult(output);
  182.             if (ServiceResult.isOk(output)) {
  183.                 flagDropship = result.get("value").toString();
  184.                 header.put("flagDropship",flagDropship);
  185.                 log.debug("flagDropship : " + this.flagDropship);
  186.             } else if (ServiceResult.isFail(output)) {
  187.                 MessageHelper.displayError(result);
  188.             }
  189.         } catch (Exception e) {
  190.             e.printStackTrace();
  191.             MessageHelper.displayError(e.getMessage());
  192.         }
  193.     }
  194.    
  195.     @SuppressWarnings("unchecked")
  196.     public void prepareAdd(Map<String, Object> parameter) {
  197.         log.debug("prepareAdd " + parameter.toString());
  198.         JSONObject ou = (JSONObject) parameter.get("ou");
  199.  
  200.         getHeader().put("ouId", ou.get("id"));
  201.         getHeader().put("ouName", ou.get("name"));
  202.         getHeader().put("flgDelivery", GeneralConstants.YES);
  203.         getHeader().put("docDate", DateUtil.dateNow());
  204.         getHeader().put("dueDate", DateUtil.dateNow());
  205.         getHeader().put("extDocDate", parameter.get("extDocDate") !=null ? parameter.get("extDocDate") :DateUtil.dateNow());
  206.         getHeader().put("docNo", GeneralConstants.EMPTY_VALUE);
  207.         getHeader().put("extDocNo", parameter.get("extDocNo") !=null ? parameter.get("extDocNo") :GeneralConstants.EMPTY_VALUE);
  208.         getHeader().put("remark", GeneralConstants.EMPTY_VALUE);
  209.         getHeader().put("currency", new ComboItem("code", SalesWebConstants.DEFAULT_CURRENCY_CODE));
  210.         getHeader().put("currCode", SalesWebConstants.DEFAULT_CURRENCY_CODE);
  211.         getHeader().put("flgWorkOrder", GeneralConstants.YES);
  212.         getHeader().put("flagDropship", flagDropship); //--> ambil global variable yang sudah di set diatas (flagDropship)
  213.  
  214.         getHeader().put("paymentMethod", new ComboItem("code", SalesWebConstants.TOP_TYPE_CASH));
  215.         getHeader().put("flgTopType", SalesWebConstants.TOP_TYPE_CASH);
  216.         getHeader().put("flgNeedPrepareChange", GeneralConstants.NO);
  217.         getHeader().put("flgWithDownPaymentAgreement", GeneralConstants.NO);
  218.         getHeader().put("flgShowTax", GeneralConstants.YES);
  219.         getHeader().put("regularDiscountPercentage", new Double(0));
  220.         getHeader().put("refDocNo", parameter.get("refDocNo") !=null ? parameter.get("refDocNo") : GeneralConstants.EMPTY_VALUE);
  221.         getHeader().put("refDocDate", parameter.get("refDocDate") !=null ? parameter.get("refDocDate") : GeneralConstants.EMPTY_VALUE);
  222.         getHeader().put("refId", parameter.get("refId") !=null ? Long.valueOf(parameter.get("refId").toString()) : GeneralConstants.NULL_REF_VALUE_LONG);
  223.         getHeader().put("refDocTypeId", parameter.get("refDocTypeId") !=null ? Long.valueOf(parameter.get("refDocTypeId").toString()) : GeneralConstants.NULL_REF_VALUE_LONG);
  224.         getHeader().put("salesmanId", parameter.get("salesmanId") !=null ? Long.valueOf(parameter.get("salesmanId").toString()) : GeneralConstants.NULL_REF_VALUE_LONG);
  225.         getHeader().put("partnerId", parameter.get("partnerId") !=null ? Long.valueOf(parameter.get("partnerId").toString()) : GeneralConstants.NULL_REF_VALUE_LONG);
  226.         getHeader().put("flgFromWebpos", parameter.get("flgFromWebpos") !=null ? parameter.get("flgFromWebpos") : GeneralConstants.NO);
  227.         // getHeader().put("partner", new ComboItem("id",
  228.         // GeneralConstants.NULL_REF_VALUE_LONG));
  229.  
  230.         if(parameter.get("salesmanId") !=null ){
  231.             loadSalesman(Long.valueOf(parameter.get("salesmanId").toString()));
  232.         }
  233.  
  234.         if(parameter.get("partnerId") !=null){
  235.             loadCustomer(Long.valueOf(parameter.get("partnerId").toString()));
  236.         }
  237.        
  238.         this.details = (List<JSONObject>) parameter.get("salesOrderItemList");
  239.         if ((this.details == null) || (this.details.isEmpty())) {
  240.             MessageHelper.displayError("so.item.at.least.one");
  241.             return;
  242.         }
  243.  
  244.         loadOu();
  245.  
  246.         this.lastLineNo = Long.valueOf(0L);
  247.         for (JSONObject item : this.details) {
  248.             item.put("lineNo", this.lastLineNo = Long.valueOf(this.lastLineNo.longValue() + 1L));
  249.             // item.put("currCode", defaultCurrency.get("code"));
  250.             // item.put("currPropKey", defaultCurrency.get("propKey"));
  251.             item.put("productId", item.get("productId") !=null ? Long.valueOf(item.get("productId").toString()) : GeneralConstants.NULL_REF_VALUE_LONG);
  252.             item.put("grossSellPrice", item.get("grossSellPrice") !=null ? Double.valueOf(item.get("grossSellPrice").toString()) : Double.valueOf(0.0D));
  253.             item.put("flgDiscountType", SalesWebConstants.PERCENTAGE);
  254.             item.put("discountAmount", Double.valueOf(0.0D));
  255.             item.put("discountPercentage", Double.valueOf(0.0D));
  256.             item.put("nettSellPrice", Double.valueOf(0.0D));
  257.             item.put("taxPrice", Double.valueOf(0.0D));
  258.             item.put("taxAmount", Double.valueOf(0.0D));
  259.             item.put("taxPercentage", item.get("taxPercentage") !=null ? Double.valueOf(item.get("taxPercentage").toString()) : Double.valueOf(0.0D));
  260.             item.put("toleranceDlvQty", Double.valueOf(0.0D));
  261.             item.put("flgTaxAmount", item.get("flgTaxAmount") !=null ? item.get("flgTaxAmount") : GeneralConstants.NO);
  262.             item.put("taxId", item.get("taxId") !=null ? Long.valueOf(item.get("taxId").toString()) : GeneralConstants.NULL_REF_VALUE_LONG);
  263.             item.put("eta", DateUtil.dateNow());
  264.             item.put("etaDay", GeneralConstants.EMPTY_VALUE);
  265.             item.put("currency", new ComboItem("code", SalesWebConstants.DEFAULT_CURRENCY_CODE));
  266.             item.put("currCode", SalesWebConstants.DEFAULT_CURRENCY_CODE);
  267.             item.put("nettItemAmount", Double.valueOf(0.0D));
  268.         }
  269.     }
  270.  
  271.     @SuppressWarnings("unchecked")
  272.     public void prepareEdit(Map<String, Object> parameter) {
  273.         Object id = parameter.get("id"); // From draft page
  274.         Object docId = parameter.get("docId"); // From approval page
  275.         if (id != null || docId != null) {
  276.             header.put("id", id == null ? docId.toString() : id.toString());
  277.             loadSalesOrder();
  278.             loadSalesOrderItems();
  279.             loadSalesOrderExternalCommissions();
  280.             loadSalesOrderFinance();
  281.             log.debug("\n\n START Prepare Edit Call Load Sales Order Ext \n\n");
  282.             loadSalesOrderExt();
  283.             log.debug("\n\n END Prepare Edit Call Load Sales Order Ext \n\n");
  284.             loadSummaryTaxList();
  285.             loadSummary();
  286.             loadTOPEditMode(Long.valueOf(header.get("id").toString()));
  287.         }
  288.     }
  289.  
  290.     public String getViewName() {
  291.         return PageInputConstants.INPUT_SALES_ORDER;
  292.     }
  293.  
  294.     public String deleteTaskName() {
  295.         return REMOVE_SALES_ORDER;
  296.     }
  297.  
  298.     public String cancelTaskName() {
  299.         return CANCEL_SALES_ORDER;
  300.     }
  301.  
  302.     public String approveTaskName() {
  303.         return APPROVE_SALES_ORDER;
  304.     }
  305.  
  306.     public String rejectTaskName() {
  307.         return REJECT_SALES_ORDER;
  308.     }
  309.  
  310.     public String requestChangesTaskName() {
  311.         return REQUEST_CHANGES_SALES_ORDER;
  312.     }
  313.  
  314.     public String updateTaskName() {
  315.         return UPDATE_SALES_ORDER;
  316.     }
  317.  
  318.     public String submitTaskName() {
  319.         return SUBMIT_SALES_ORDER;
  320.     }
  321.  
  322.     public void onActionSuccess(String action, JSONObject result) {
  323.         if (action.equals(WebJsfConstants.ACTION_DELETE)) {
  324.             RequestContext context = RequestContext.getCurrentInstance();
  325.             context.execute("document.location='createSalesOrder.jsf'");
  326.         } else {
  327.             loadSalesOrder();
  328.             loadSalesOrderItems();
  329.             loadSalesOrderExternalCommissions();
  330.             loadSalesOrderFinance();
  331.             loadSummaryTaxList();
  332.             log.debug("\n\n START On Action Success Call Load Sales Order Ext \n\n");
  333.             loadSalesOrderExt();
  334.             log.debug("\n\n END On Action Success Call Load Sales Order Ext \n\n");
  335.             loadSummary();
  336.         }
  337.     }
  338.  
  339.     public void onActionFail(String action, JSONObject result) {
  340.         MessageHelper.displayError(result);
  341.     }
  342.  
  343.     public String getDocStatusTaskName() {
  344.         return GET_SALES_ORDER_STATUS_BY_USER_ROLE_AND_DOC_ID;
  345.     }
  346.  
  347.     @SuppressWarnings("unchecked")
  348.     protected void addDocument() {
  349.         Object tempValue;
  350.  
  351.         Long salesmanId = GeneralConstants.NULL_REF_VALUE_LONG;
  352.         Long partnerId = GeneralConstants.NULL_REF_VALUE_LONG;
  353.         Long partnerShipToId = GeneralConstants.NULL_REF_VALUE_LONG;
  354.         Long partnerShipAddressId = GeneralConstants.NULL_REF_VALUE_LONG;
  355.         Long partnerShipCpId = GeneralConstants.NULL_REF_VALUE_LONG;
  356.         String flgTopType = SalesWebConstants.TOP_TYPE_CASH;
  357.         Long topCash = new Long(0);
  358.        
  359.         log.debug("Header addDocument()"+header.toString());
  360.         log.info("Header addDocument()"+header.toString());
  361.  
  362.         JSONObject salesman = (JSONObject) header.get("salesman");
  363.         JSONObject partner = (JSONObject) header.get("partner");
  364.         JSONObject partnerShipTo = (JSONObject) header.get("partnerShipTo");
  365.         JSONObject partnerShipAddress = (JSONObject) header.get("partnerShipAddress");
  366.         JSONObject partnerShipCp = (JSONObject) header.get("partnerShipCp");
  367.         JSONObject currency = (JSONObject) header.get("currency");
  368.         JSONObject paymentMethod = (JSONObject) header.get("paymentMethod");
  369.  
  370.         if (paymentMethod != null) {
  371.             flgTopType = paymentMethod.get("code").toString();
  372.         }
  373.  
  374.         if (salesman != null) {
  375.             log.debug("Salesman: " + salesman);
  376.             salesmanId = Long.valueOf(String.valueOf(salesman.get("id")));
  377.         }
  378.         if (partner != null) {
  379.             log.debug("Partner: " + partner);
  380.             partnerId = Long.valueOf(String.valueOf(partner.get("id")));
  381.         }
  382.         if (partnerShipTo != null && partnerShipTo.get("partnerShipToId") != null) {
  383.             partnerShipToId = Long.valueOf(partnerShipTo.get("partnerShipToId").toString());
  384.         }
  385.  
  386.         if (partnerShipAddress != null && partnerShipAddress.get("partnerAddressId") != null) {
  387.             partnerShipAddressId = Long.valueOf(partnerShipAddress.get("partnerAddressId").toString());
  388.         }
  389.  
  390.         if (partnerShipCp != null && partnerShipCp.get("id") != null) {
  391.             partnerShipCpId = Long.valueOf(partnerShipCp.get("id").toString());
  392.         }
  393.  
  394.         JSONObject input = new JSONObject();
  395.         input.put("docNo", header.get("docNo"));
  396.         input.put("docDate", header.get("docDate"));
  397.         input.put("ouId", header.get("ouId"));
  398.         input.put("extDocNo", header.get("extDocNo"));
  399.         input.put("extDocDate", header.get("extDocDate"));
  400.         input.put("dueDate", header.get("dueDate"));
  401.         input.put("remark", header.get("remark"));
  402.         input.put("salesmanId", salesmanId);
  403.         input.put("partnerId", partnerId);
  404.         input.put("partnerBillToId", (tempValue = header.get("partnerBillToId")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : tempValue);
  405.         input.put("partnerCpId", (tempValue = header.get("partnerCpId")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : tempValue);
  406.         input.put("partnerShipToId", partnerShipToId);
  407.         input.put("partnerShipCpId", partnerShipCpId);
  408.         input.put("partnerShipAddressId", partnerShipAddressId);
  409.         input.put("flgDelivery", header.get("flgDelivery"));
  410.         input.put("currCode", currency.get("code"));
  411.         input.put("refId", header.get("refId"));
  412.         input.put("refDocTypeId", header.get("refDocTypeId"));
  413.  
  414.         input.put("flgTopType", flgTopType);
  415.         input.put("flgWorkOrder", header.get("flgWorkOrder"));
  416.         input.put("flgShowInvTax", header.get("flgShowTax"));
  417.         input.put("regularDiscountPercentage", header.get("regularDiscountPercentage"));
  418.         input.put("termOfPayment", topCash.intValue());
  419.         input.put("flagDropship", header.get("flagDropship"));
  420. //      input.put("termOfPayment", Integer.valueOf(header.get("custPaymentDuePaymentDays").toString()));
  421.  
  422.         List<JSONObject> itemList = new ArrayList<JSONObject>();
  423.         List<JSONObject> salesOrderFinanceList = new ArrayList<JSONObject>();
  424.  
  425.         if (details != null && !details.isEmpty()) {
  426.             for (JSONObject item : details) {
  427.  
  428.                 JSONObject inputItem = new JSONObject();
  429.                 inputItem.put("productId", item.get("productId"));
  430.                 inputItem.put("productName", item.get("productName"));
  431.                 inputItem.put("lineNo", item.get("lineNo"));
  432.                 inputItem.put("partnerShipToId", (tempValue = item.get("partnerShipToId")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : tempValue);
  433.                 inputItem.put("partnerShipAddressId", (tempValue = item.get("partnerShipAddressId")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : tempValue);
  434.                 inputItem.put("qtySo", (tempValue = item.get("qtySo")) == null ? 0d : tempValue);
  435.                 inputItem.put("soUomId", (tempValue = item.get("soUomId")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : tempValue);
  436.                 inputItem.put("qtyInt", (tempValue = item.get("qtyInt")) == null ? 0d : tempValue);
  437.                 inputItem.put("grossSellPrice", (tempValue = item.get("grossSellPrice")) == null ? 0d : tempValue);
  438.                 inputItem.put("flgTaxAmount", item.get("flgTaxAmount"));
  439.                 inputItem.put("taxId", (tempValue = item.get("taxId")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : tempValue);
  440.                 inputItem.put("refId", item.get("refId") !=null ? Long.valueOf(item.get("refId").toString()) : GeneralConstants.NULL_REF_VALUE_LONG);
  441.                 inputItem.put("refDocTypeId", item.get("refDocTypeId") !=null ? Long.valueOf(item.get("refDocTypeId").toString()) : GeneralConstants.NULL_REF_VALUE_LONG);
  442.                 inputItem.put("eta", item.get("eta"));
  443.                 inputItem.put("etaDay", item.get("etaDay"));
  444.                 inputItem.put("toleranceDlvQty", (tempValue = item.get("toleranceDlvQty")) == null ? 0d : tempValue);
  445.                 inputItem.put("flgDiscountType", (GeneralConstants.NO.equals(systemConfig)) ? GeneralConstants.NO : item.get("flgDiscountType"));
  446.                 inputItem.put("discountAmount", (tempValue = item.get("discountAmount")) == null ? 0d : tempValue);
  447.                 inputItem.put("discountPercentage", (tempValue = item.get("discountPercentage")) == null ? 0d : tempValue);
  448.                 itemList.add(inputItem);
  449.             }
  450.         }
  451.  
  452.         input.put("salesOrderItemList", itemList);
  453.         input.put("salesOrderFinanceList", salesOrderFinanceList);
  454.  
  455.         log.debug("\n\n input salesOrderForHeader : " + input.toString()+"\n\n");
  456.         log.debug("salesOrderForItem " + itemList.toString());     
  457.        
  458.         try {
  459.             JSONObject output = serviceContext.executeService(ADD_SALES_ORDER, input);
  460.             JSONObject result = JSONObjectUtil.getResult(output);
  461.             if (ServiceResult.isOk(output)) {
  462.                 MessageHelper.displayInfo("org.jleaf.erp.sls.web.dataSuccessSave");
  463.                 header.put("id", result.get("id"));
  464.                 loadSalesOrder();              
  465.                 loadSalesOrderItems();
  466.                 log.debug("\n\n START Add Document Call Load Sales Order Ext \n\n");
  467.                 loadSalesOrderExt();
  468.                 log.debug("\n\n END Add Document Call Load Sales Order Ext \n\n");
  469.                 loadSummaryTaxList();
  470.                 loadSalesOrderFinance();
  471.                 loadSummary();
  472.                
  473.                 editMode = true;
  474.                 loadDocumentStatus();
  475.  
  476.                 // Sort list by line no
  477.                 Collections.sort(details, GRID_ITEM_COMPARATOR);
  478.                 lastLineNo = Long.valueOf(details.get(details.size() - 1).get("lineNo").toString());
  479.  
  480.             } else if (ServiceResult.isFail(output)) {
  481.                 MessageHelper.displayError(result);
  482.                 errorHolder.putError("org.jleaf.erp.sls.web", result);
  483.             }
  484.         } catch (Exception e) {
  485.             log.error("Error on add sales order along with its items", e);
  486.             MessageHelper.displayError(e.getMessage());
  487.         }
  488.  
  489.     }
  490.  
  491.     @SuppressWarnings("unchecked")
  492.     protected void editDocument() {
  493.         JSONObject itemModel;
  494.         Object tempValue;
  495.  
  496.         Long salesmanId = GeneralConstants.NULL_REF_VALUE_LONG;
  497.         Long partnerShipToId = GeneralConstants.NULL_REF_VALUE_LONG;
  498.         Long partnerShipAddressId = GeneralConstants.NULL_REF_VALUE_LONG;
  499.         Long partnerShipCpId = GeneralConstants.NULL_REF_VALUE_LONG;
  500.         String flgTopType = SalesWebConstants.TOP_TYPE_CASH;
  501.  
  502.         JSONObject salesman = (JSONObject) header.get("salesman");
  503.         JSONObject partnerShipTo = (JSONObject) header.get("partnerShipTo");
  504.         JSONObject partnerShipAddress = (JSONObject) header.get("partnerShipAddress");
  505.         JSONObject partnerShipCp = (JSONObject) header.get("partnerShipCp");
  506.         JSONObject paymentMethod = (JSONObject) header.get("paymentMethod");
  507.  
  508.         if (paymentMethod != null) {
  509.             flgTopType = paymentMethod.get("code").toString();
  510.         }
  511.  
  512.         if (salesman != null) {
  513.             salesmanId = Long.valueOf(String.valueOf(salesman.get("id")));
  514.         }
  515.  
  516.         if (partnerShipTo != null && partnerShipTo.get("partnerShipToId") != null) {
  517.             partnerShipToId = Long.valueOf(partnerShipTo.get("partnerShipToId").toString());
  518.         }
  519.  
  520.         if (partnerShipAddress != null && partnerShipAddress.get("partnerAddressId") != null) {
  521.             partnerShipAddressId = Long.valueOf(partnerShipAddress.get("partnerAddressId").toString());
  522.         }
  523.  
  524.         if (partnerShipCp != null && partnerShipCp.get("id") != null) {
  525.             partnerShipCpId = Long.valueOf(partnerShipCp.get("id").toString());
  526.         }
  527.  
  528.         JSONObject input = new JSONObject();
  529.         input.put("id", header.get("id"));
  530.         input.put("docNo", header.get("docNo"));
  531.         input.put("docDate", header.get("docDate"));
  532.         input.put("ouId", header.get("ouId"));
  533.         input.put("extDocNo", header.get("extDocNo"));
  534.         input.put("extDocDate", header.get("extDocDate"));
  535.         input.put("dueDate", header.get("dueDate"));
  536.         input.put("remark", header.get("remark"));
  537.  
  538.         input.put("salesmanId", salesmanId);
  539.         input.put("partnerId", (itemModel = (JSONObject) header.get("partner")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : itemModel.get("id"));
  540.         input.put("partnerBillToId", (tempValue = header.get("partnerBillToId")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : tempValue);
  541.         input.put("partnerCpId", (tempValue = header.get("partnerCpId")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : tempValue);
  542.         input.put("flgDelivery", header.get("flgDelivery"));
  543.         input.put("currCode", header.get("currCode"));
  544.         input.put("version", header.get("version"));
  545.  
  546.         input.put("partnerShipToId", partnerShipToId);
  547.         input.put("partnerShipAddressId", partnerShipAddressId);
  548.         input.put("partnerShipCpId", partnerShipCpId);
  549.  
  550.         input.put("flgTopType", flgTopType);
  551.         input.put("flgWorkOrder", header.get("flgWorkOrder"));
  552.         input.put("flgShowInvTax", header.get("flgShowTax"));
  553.         input.put("flagDropship", header.get("flagDropship"));
  554.        
  555.         input.put("regularDiscountPercentage", header.get("regularDiscountPercentage"));
  556.         input.put("termOfPayment", Integer.valueOf(header.get("custPaymentDuePaymentDays").toString()));
  557.  
  558.         List<JSONObject> salesOrderFinanceTempList = new ArrayList<JSONObject>();
  559.  
  560.         if (GeneralConstants.YES.equals(header.get("flgNeedPrepareChange"))) {
  561.             // validate if prepare change must be input
  562.             // flgCollection, dueDate, currCode, amount, trxCurrCode, trxAmount,
  563.             // remark
  564.             JSONObject currCode = (JSONObject) header.get("financeCurrCodeCod");
  565.  
  566.             JSONObject financeData = new JSONObject();
  567.             financeData.put("id", GeneralConstants.NULL_REF_VALUE_LONG);
  568.             financeData.put("version", GeneralConstants.NULL_REF_VALUE_LONG);
  569.             financeData.put("flgCollection", SalesWebConstants.FLG_COLLECTION_CHANGE);
  570.             financeData.put("dueDate", GeneralConstants.EMPTY_VALUE);
  571.             financeData.put("currCode", currCode.get("code"));
  572.             financeData.put("amount", header.get("financeAmountCod") == null ? 0d : header.get("financeAmountCod"));
  573.             financeData.put("trxCurrCode", header.get("currCode"));
  574.             financeData.put("trxAmount", header.get("financeTrxAmountCod") == null ? 0d : header.get("financeTrxAmountCod"));
  575.             financeData.put("remark", header.get("financeRemarkCod"));
  576.  
  577.             salesOrderFinanceTempList.add(financeData);
  578.         }
  579.         if (GeneralConstants.YES.equals(header.get("flgWithDownPaymentAgreement"))) {
  580.             JSONObject currCode = (JSONObject) header.get("financeCurrCodeTop");
  581.  
  582.             JSONObject financeData = new JSONObject();
  583.             financeData.put("id", GeneralConstants.NULL_REF_VALUE_LONG);
  584.             financeData.put("version", GeneralConstants.NULL_REF_VALUE_LONG);
  585.             financeData.put("flgCollection", SalesWebConstants.FLG_COLLECTION_COLLECT);
  586.             financeData.put("dueDate", header.get("financeDueDateTop"));
  587.             financeData.put("currCode", currCode.get("code"));
  588.             financeData.put("amount", header.get("financeAmountTop") == null ? 0d : header.get("financeAmountTop"));
  589.             financeData.put("trxCurrCode", header.get("currCode"));
  590.             financeData.put("trxAmount", header.get("financeTrxAmountTop") == null ? 0d : header.get("financeTrxAmountTop"));
  591.             financeData.put("remark", header.get("financeRemarkTop"));
  592.  
  593.             salesOrderFinanceTempList.add(financeData);
  594.         }
  595.  
  596.         input.put("salesOrderFinanceList", salesOrderFinanceTempList);
  597.        
  598.         log.debug("\n\n input Edit Document SO : "+input.toString()+"\n\n");
  599.  
  600.         try {
  601.             JSONObject output = serviceContext.executeService(EDIT_SALES_ORDER, input);
  602.             JSONObject result = JSONObjectUtil.getResult(output);
  603.             String status = JSONObjectUtil.getResultStatus(output);
  604.             if (status != null && status.equals(GeneralConstants.OK)) {
  605.                 MessageHelper.displayInfo("org.jleaf.erp.sls.web.dataSuccessSave");
  606.                 loadSalesOrder();
  607.                 loadSalesOrderItems();
  608.                 loadSummaryTaxList();
  609.                 log.debug("\n\n START Edit Document Call Load Sales Order Ext \n\n");
  610.                 loadSalesOrderExt();
  611.                 log.debug("\n\n END Edit Document Call Load Sales Order Ext \n\n");
  612.                 loadSummary();
  613.                 loadSalesOrderExternalCommissions();
  614.                 loadSalesOrderFinance();
  615.                 loadTOPEditMode(Long.valueOf(result.get("id").toString()));
  616.             } else if (status != null && status.equals(GeneralConstants.FAIL)) {
  617.                 MessageHelper.displayError(result);
  618.                 errorHolder.putError("org.jleaf.erp.sls.web", result);
  619.             }
  620.         } catch (Exception e) {
  621.             log.error("Error on edit sales order", e);
  622.             MessageHelper.displayError(e.getMessage());
  623.         }
  624.     }
  625.  
  626.     @SuppressWarnings("unchecked")
  627.     private void loadSalesOrder() {
  628.         if (this.header.get("id") == null) {
  629.             this.header.put("docNo", "");
  630.             this.header.put("docDate", DateUtil.dateNow());
  631.             this.header.put("extDocNo", "");
  632.             this.header.put("extDocDate", DateUtil.dateNow());
  633.             this.header.put("dueDate", DateUtil.dateNow());
  634.             this.header.put("remark", "");
  635.             this.header.put("flgDelivery", "Y");
  636.             this.header.put("currCode", "");
  637.  
  638.         } else {
  639.             JSONObject input = new JSONObject();
  640.             input.put("id", this.header.get("id"));
  641.             try {
  642.                 JSONObject output = this.serviceContext.executeService(FIND_SALES_ORDER_BY_ID, input);
  643.                 JSONObject result = JSONObjectUtil.getResult(output);
  644.                
  645.                 log.debug("loadSalesOrder result>>>"+result.toJSONString());
  646.                 log.info("loadSalesOrder result>>>"+result.toJSONString());
  647.                 if (ServiceResult.isOk(output)) {
  648.  
  649.                     Long salesmanId = Long.valueOf(String.valueOf(result.get("salesmanId")));
  650.                     Long partnerId = Long.valueOf(String.valueOf(result.get("partnerId")));
  651.                     String currCode = String.valueOf(result.get("currCode"));
  652.  
  653.                     header = result;
  654.  
  655.                     header.put("currency", new ComboItem("code", currCode));
  656.                     header.put("flgShowTax", result.get("flgShowInvTax"));
  657.                     editMode = true;
  658.                     super.loadDocumentStatus();
  659.                     loadOu();
  660.                     loadSalesman(salesmanId);
  661.                     loadCustomer(partnerId);
  662.                     loadSalesQuotation();                  
  663.                     header.put("partnerShipTo", new ComboItem("partnerShipToId", result.get("partnerShipToId")));
  664.                     header.put("partnerShipAddress", new ComboItem("partnerAddressId", result.get("partnerShipAddressId")));
  665.                     header.put("partnerShipCp", new ComboItem("id", result.get("partnerShipCpId")));
  666.                     header.put("paymentMethod", new ComboItem("code", result.get("flgTopType")));
  667.                    
  668.                     header.put("termOfPayment", result.get("termOfPayment"));
  669.                     header.put("custPaymentDuePaymentDays", result.get("termOfPayment"));
  670.                     log.debug("loadSalesOrder result end>>>"+result.toJSONString());
  671.                     log.info("loadSalesOrder result end>>>"+result.toJSONString());
  672.                    
  673.                 } else if (ServiceResult.isFail(output)) {
  674.                     MessageHelper.displayError(result);
  675.                 }
  676.             } catch (Exception e) {
  677.                 log.error("Error on load sales order", e);
  678.                 MessageHelper.displayError(e.getMessage());
  679.             }
  680.         }
  681.     }
  682.    
  683.     @SuppressWarnings("unchecked")
  684.     public void loadSalesQuotation() {
  685.         log.debug("call loadSalesQuotation()" + header.toString());
  686.  
  687.         Long refDocTypeId = Long.valueOf(header.get("refDocTypeId").toString());
  688.         if(refDocTypeId.equals(SalesWebConstants.DOCUMENT_SALES_QUOTATION)){
  689.            
  690.             try {
  691.                 JSONObject jsonInput = new JSONObject();
  692.                 jsonInput.put("id", Long.valueOf(header.get("refId").toString()));
  693.                
  694.                 JSONObject output = serviceContext.executeService(FIND_SALES_QUOTATION_BY_ID, jsonInput);
  695.                 JSONObject result = JSONObjectUtil.getResult(output);
  696.                
  697.                 if(ServiceResult.isOk(output)){
  698.                     log.debug("result loadSalesQuotation()" + result.toString());
  699.                     getHeader().put("refDocNo", result.get("docNo"));
  700.                     getHeader().put("refDocDate", result.get("docDate"));
  701.                     getHeader().put("flgFromWebpos", result.get("flgFromWebpos"));
  702.                    
  703.                     if(result.get("flgFromWebpos").equals(GeneralConstants.YES)) {
  704.                         loadExtDocumentSalesQuotation(Long.valueOf(result.get("id").toString()));
  705.                     }
  706.                    
  707.                 } else if(ServiceResult.isFail(output)){
  708.                     MessageHelper.displayError(result);
  709.                 }
  710.                
  711.             } catch(Exception ex) {
  712.                 MessageHelper.displayError(ex.getMessage());
  713.             }
  714.         }
  715.        
  716.     }
  717.    
  718.     @SuppressWarnings("unchecked")
  719.     public void loadExtDocumentSalesQuotation(Long id) {
  720.         log.debug("call loadExtDocumentSalesQuotation()");
  721.        
  722.         try {
  723.  
  724.             JSONObject jsonInput = new JSONObject();
  725.             jsonInput.put("id", id);
  726.  
  727.             JSONObject output = serviceContext.executeService(FIND_EXT_DOCUMENT_CUST_PURCHASE_REQUEST_BY_QUOTATION_ID, jsonInput);
  728.             JSONObject result = JSONObjectUtil.getResult(output);
  729.  
  730.             if(ServiceResult.isOk(output)){
  731.                 getHeader().put("extDocNo", result.get("extDocNo"));
  732.                 getHeader().put("extDocDate", result.get("extDocDate"));
  733.                
  734.             } else if(ServiceResult.isFail(output)){
  735.                 MessageHelper.displayError(result);
  736.             }
  737.            
  738.         } catch(Exception ex) {
  739.             MessageHelper.displayError(ex.getMessage());
  740.         }
  741.        
  742.     }
  743.    
  744.     @SuppressWarnings("unchecked")
  745.     public void prepareInfoCustomer() {
  746.  
  747.         JSONObject itemModel = (JSONObject) this.header.get("partner");
  748.  
  749.         if (itemModel != null) {
  750.             JSONObject input = new JSONObject();
  751.             input.put("partnerId", itemModel.get("id"));
  752.             try {
  753.                 JSONObject output = this.serviceContext.executeService(FIND_DEFAULT_PARTNER_ADDRESS, input);
  754.                 JSONObject result = JSONObjectUtil.getResult(output);
  755.                 if (ServiceResult.isOk(output)) {
  756.                     this.customerInfo = result;
  757.  
  758.                     log.debug("this.customerInfo : " + this.customerInfo);
  759.                 } else if (ServiceResult.isFail(output)) {
  760.                     MessageHelper.displayError(result);
  761.                 }
  762.             } catch (Exception e) {
  763.                 e.printStackTrace();
  764.                 MessageHelper.displayError(e.getMessage());
  765.             }
  766.         } else {
  767.             this.customerInfo = new JSONObject();
  768.         }
  769.     }
  770.  
  771.     @SuppressWarnings("unchecked")
  772.     public void prepareSellPriceForItemSalesOrder() {
  773.         Long partnerId = GeneralConstants.NULL_REF_VALUE_LONG;
  774.         JSONObject partner = (JSONObject) header.get("partner");
  775.  
  776.         if (partner != null) {
  777.             partnerId = Long.valueOf(String.valueOf(partner.get("id")));
  778.         }
  779.  
  780.         JSONObject input = new JSONObject();
  781.         input.put("partnerId", partnerId);
  782.         input.put("productId", selectedItem.get("productId"));
  783.         input.put("ouId", header.get("ouId"));
  784.         input.put("docDate", header.get("docDate"));
  785.         try {
  786.             JSONObject output = this.serviceContext.executeService(GET_SELL_PRICE_FOR_SO_BY_PARTNER, input);
  787.             JSONObject result = JSONObjectUtil.getResult(output);
  788.             if (ServiceResult.isOk(output)) {
  789.                 itemSellPriceProduct = (JSONObject) result.clone();
  790.             } else if (ServiceResult.isFail(output)) {
  791.                 MessageHelper.displayError(result);
  792.             }
  793.         } catch (Exception e) {
  794.             e.printStackTrace();
  795.             MessageHelper.displayError(e.getMessage());
  796.         }
  797.     }
  798.  
  799.     @SuppressWarnings("unchecked")
  800.     public void prepareInfoCustomerShipToAddress() {
  801.         log.debug("prepareInfoCustomerShipToAddress()" + this.header.get("partnerShipAddress"));
  802.         log.info("prepareInfoCustomerShipToAddress()" + this.header.get("partnerShipAddress"));
  803.        
  804.         JSONObject itemModel = (JSONObject) this.header.get("partnerShipAddress");
  805.         log.debug("itemModel>>>" +itemModel);
  806.         log.info("itemModel>>>" +itemModel);
  807.  
  808.         if (itemModel != null) {
  809.             JSONObject input = new JSONObject();
  810.             input.put("id", itemModel.get("partnerAddressId"));
  811.             try {
  812.                 JSONObject output = this.serviceContext.executeService(FIND_PARTNER_ADDRESS_BY_ID, input);
  813.                 JSONObject result = JSONObjectUtil.getResult(output);
  814.                 if (ServiceResult.isOk(output)) {
  815.                     this.customerShipToAddressInfo = result;
  816.                 } else if (ServiceResult.isFail(output)) {
  817.                     MessageHelper.displayError(result);
  818.                 }
  819.             } catch (Exception e) {
  820.                 e.printStackTrace();
  821.                 MessageHelper.displayError(e.getMessage());
  822.             }
  823.         } else {
  824.             this.customerShipToAddressInfo = new JSONObject();
  825.         }
  826.     }
  827.  
  828.     @SuppressWarnings("unchecked")
  829.     public void prepareInfoCustomerBillTo() {
  830.         String partnerBillToId = (String) this.header.get("partnerBillToId");
  831.  
  832.         if (this.header.get("partnerBillToId") != null) {
  833.             JSONObject input = new JSONObject();
  834.             input.put("partnerId", partnerBillToId);
  835.  
  836.             RequestContext ctx = RequestContext.getCurrentInstance();
  837.             ctx.addCallbackParam("valid", false);
  838.             try {
  839.                 JSONObject output = this.serviceContext.executeService(FIND_DEFAULT_PARTNER_ADDRESS, input);
  840.                 JSONObject result = JSONObjectUtil.getResult(output);
  841.                 if (ServiceResult.isOk(output)) {
  842.                     this.customerBillToInfo = result;
  843.                     ctx.addCallbackParam("valid", true);
  844.                 } else if (ServiceResult.isFail(output)) {
  845.                     MessageHelper.displayError(result);
  846.                 }
  847.             } catch (Exception e) {
  848.                 e.printStackTrace();
  849.                 MessageHelper.displayError(e.getMessage());
  850.             }
  851.         } else {
  852.             this.customerBillToInfo = new JSONObject();
  853.         }
  854.     }
  855.  
  856.     @SuppressWarnings("unchecked")
  857.     public void prepareInfoCustomerCp() {
  858.         if (this.header.get("partnerCpId") != null) {
  859.             JSONObject input = new JSONObject();
  860.             input.put("id", this.header.get("partnerCpId"));
  861.  
  862.             RequestContext ctx = RequestContext.getCurrentInstance();
  863.             ctx.addCallbackParam("valid", false);
  864.             try {
  865.                 JSONObject output = this.serviceContext.executeService(FIND_PARTNER_CP_BY_ID, input);
  866.                 JSONObject result = JSONObjectUtil.getResult(output);
  867.                 if (ServiceResult.isOk(output)) {
  868.                     this.customerCpInfo = result;
  869.                     ctx.addCallbackParam("valid", true);
  870.                 } else if (ServiceResult.isFail(output)) {
  871.                     MessageHelper.displayError(result);
  872.                 }
  873.             } catch (Exception e) {
  874.                 e.printStackTrace();
  875.                 MessageHelper.displayError(e.getMessage());
  876.             }
  877.         } else {
  878.             this.customerCpInfo = new JSONObject();
  879.         }
  880.     }
  881.  
  882.     @SuppressWarnings("unchecked")
  883.     public void prepareInfoCpWorkOrder() {
  884.         if (this.activityWorkOrder.get("partnerShipCp") != null) {
  885.             JSONObject partnerShipCp = (JSONObject) this.activityWorkOrder.get("partnerShipCp");
  886.  
  887.             JSONObject input = new JSONObject();
  888.             input.put("id", partnerShipCp.get("id"));
  889.  
  890.             RequestContext ctx = RequestContext.getCurrentInstance();
  891.             ctx.addCallbackParam("valid", false);
  892.             try {
  893.                 JSONObject output = this.serviceContext.executeService(FIND_PARTNER_CP_BY_ID, input);
  894.                 JSONObject result = JSONObjectUtil.getResult(output);
  895.                 if (ServiceResult.isOk(output)) {
  896.                     this.cpWorkOrderInfo = result;
  897.                     ctx.addCallbackParam("valid", true);
  898.                 } else if (ServiceResult.isFail(output)) {
  899.                     MessageHelper.displayError(result);
  900.                 }
  901.             } catch (Exception e) {
  902.                 e.printStackTrace();
  903.                 MessageHelper.displayError(e.getMessage());
  904.             }
  905.         } else {
  906.             this.cpWorkOrderInfo = new JSONObject();
  907.         }
  908.     }
  909.  
  910.     public void prepareInfoCustomerShipCp() {
  911.         if (header.get("partnerShipCp") != null) {
  912.             JSONObject input = (JSONObject) header.get("partnerShipCp");
  913.  
  914.             RequestContext ctx = RequestContext.getCurrentInstance();
  915.             ctx.addCallbackParam("valid", false);
  916.  
  917.             try {
  918.                 JSONObject output = serviceContext.executeService(FIND_PARTNER_CP_BY_ID, input);
  919.                 JSONObject result = JSONObjectUtil.getResult(output);
  920.                 if (ServiceResult.isOk(output)) {
  921.                     customerShipCpInfo = result;
  922.                     ctx.addCallbackParam("valid", true);
  923.                 } else if (ServiceResult.isFail(output)) {
  924.                     MessageHelper.displayError(result);
  925.                 }
  926.             } catch (Exception e) {
  927.                 e.printStackTrace();
  928.                 MessageHelper.displayError(e.getMessage());
  929.             }
  930.         } else {
  931.             customerShipCpInfo = new JSONObject();
  932.         }
  933.     }
  934.  
  935.     @SuppressWarnings("unchecked")
  936.     public void prepareInfoCustomerShipAddress() {
  937.         if (this.selectedItem.get("partnerShipAddressId") != null) {
  938.             JSONObject input = new JSONObject();
  939.             input.put("id", this.selectedItem.get("partnerShipAddressId"));
  940.             try {
  941.                 JSONObject output = this.serviceContext.executeService(FIND_PARTNER_ADDRESS_BY_ID, input);
  942.                 JSONObject result = JSONObjectUtil.getResult(output);
  943.                 if (ServiceResult.isOk(output)) {
  944.                     this.customerShipAddressInfo = result;
  945.                 } else if (ServiceResult.isFail(output)) {
  946.                     MessageHelper.displayError(result);
  947.                 }
  948.             } catch (Exception e) {
  949.                 e.printStackTrace();
  950.                 MessageHelper.displayError(e.getMessage());
  951.             }
  952.         } else {
  953.             this.customerShipAddressInfo = new JSONObject();
  954.         }
  955.     }
  956.  
  957.     public JSONObject getCustomerInfo() {
  958.         return this.customerInfo;
  959.     }
  960.  
  961.     public JSONObject getCustomerBillToInfo() {
  962.         return this.customerBillToInfo;
  963.     }
  964.  
  965.     public JSONObject getCustomerCpInfo() {
  966.         return this.customerCpInfo;
  967.     }
  968.  
  969.     public JSONObject getCustomerShipAddressInfo() {
  970.         return this.customerShipAddressInfo;
  971.     }
  972.  
  973.     public JSONObject getSelectedItem() {
  974.         return this.selectedItem;
  975.     }
  976.  
  977.     @SuppressWarnings("unchecked")
  978.     private void loadSalesOrderItems() {
  979.         if (this.header.get("id") == null) {
  980.             if (!this.header.containsKey("_itemsLoaded")) {
  981.                 List<JSONObject> itemList = (List<JSONObject>) this.header.get("details");
  982.                 if ((itemList == null) || (itemList.isEmpty())) {
  983.                     FacesUtils.addErrorMessage(MessageUtil.getInstance().getLabel("so.item.at.least.one"));
  984.                     try {
  985.                         FacesUtils.getResponse().sendRedirect("createSalesOrder.jsf");
  986.                     } catch (IOException e) {
  987.                         e.printStackTrace();
  988.                     }
  989.                     return;
  990.                 }
  991.  
  992.                 JSONObject defaultCurrency = (JSONObject) this.filterBean.getData().get("currency");
  993.  
  994.                 this.lastLineNo = Long.valueOf(0L);
  995.                 for (JSONObject item : itemList) {
  996.                     item.put("lineNo", this.lastLineNo = Long.valueOf(this.lastLineNo.longValue() + 1L));
  997.                     item.put("currCode", defaultCurrency.get("code"));
  998.                     item.put("currPropKey", defaultCurrency.get("propKey"));
  999.                     item.put("grossSellPrice", Double.valueOf(0.0D));
  1000.                     item.put("nettSellPrice", Double.valueOf(0.0D));
  1001.                     item.put("taxPrice", Double.valueOf(0.0D));
  1002.                     item.put("taxAmount", Double.valueOf(0.0D));
  1003.                     item.put("taxPercentage", Double.valueOf(0.0D));
  1004.                     item.put("toleranceDlvQty", Double.valueOf(0.0D));
  1005.                     item.put("flgDiscountType", SalesWebConstants.PERCENTAGE);
  1006.                     item.put("discountAmount", Double.valueOf(0.0D));
  1007.                     item.put("discountPercentage", Double.valueOf(header.get("regularDiscountPercentage").toString()));
  1008.                     item.put("flgTaxAmount", GeneralConstants.NO);
  1009.                     item.put("taxId", GeneralConstants.NULL_REF_VALUE_LONG);
  1010.                     item.put("eta", DateUtil.dateNow());
  1011.                 }
  1012.  
  1013.                 this.details = itemList;
  1014.                 this.header.put("_itemsLoaded", Boolean.valueOf(true));
  1015.             }
  1016.         } else {
  1017.             JSONObject input = new JSONObject();
  1018.             input.put("soId", this.header.get("id"));
  1019.             try {
  1020.                 JSONObject output = this.serviceContext.executeService(GET_SALES_ORDER_ITEM_LIST_BY_SALES_ORDER, input);
  1021.                 JSONObject result = JSONObjectUtil.getResult(output);
  1022.                 if (ServiceResult.isOk(output)) {
  1023.                     this.details = ServiceResult.toArray(result.get("salesOrderItemList"));
  1024.                     if ((this.details != null) && (this.details.size() > 0)) {
  1025.                         for (JSONObject item : this.details) {
  1026.                             Double discountAmount = Double.valueOf(item.get("discountAmount").toString());
  1027.                             Double discountPercentage = Double.valueOf(item.get("discountPercentage").toString());
  1028.                             String flgDiscountType = item.get("flgDisc").toString();
  1029.                            
  1030.                             item.put("qtySo", Double.valueOf(item.get("qtySo").toString()));
  1031.                             item.put("qtyInt", Double.valueOf(item.get("qtyInt").toString()));
  1032.                             item.put("grossSellPrice", Double.valueOf(item.get("grossSellPrice").toString()));
  1033.                             item.put("nettSellPrice", Double.valueOf(item.get("nettSellPrice").toString()));
  1034.                             item.put("taxPrice", Double.valueOf(item.get("taxPrice").toString()));
  1035.                             item.put("taxAmount", Double.valueOf(item.get("taxAmount").toString()));
  1036.                             item.put("discountAmount", discountAmount);
  1037.                             item.put("discountPercentage", discountPercentage);
  1038.                             item.put("flgDiscountType", flgDiscountType);
  1039.  
  1040.                             if (selectedItem != null && selectedItem.get("id") != null) {
  1041.                                 // reset select item
  1042.                                 if (this.selectedItem.get("id").equals(item.get("id"))) {
  1043.                                     selectedItem = (JSONObject) item.clone();
  1044.                                 }
  1045.                             }
  1046.                         }
  1047.                         Collections.sort(this.details, GRID_ITEM_COMPARATOR);
  1048.                         this.lastLineNo = Long.valueOf(((JSONObject) this.details.get(this.details.size() - 1)).get("lineNo").toString());
  1049.                     }
  1050.  
  1051.                 } else if (ServiceResult.isFail(output)) {
  1052.                     MessageHelper.displayError(result);
  1053.                 }
  1054.             } catch (Exception e) {
  1055.                 log.error("Error on load sales order items", e);
  1056.                 MessageHelper.displayError(e.getMessage());
  1057.             }
  1058.         }
  1059.     }
  1060.  
  1061.     @SuppressWarnings("unchecked")
  1062.     private void loadSalesOrderExternalCommissions() {
  1063.         if (this.header.get("id") == null) {
  1064.  
  1065.         } else {
  1066.             JSONObject input = new JSONObject();
  1067.             input.put("soId", this.header.get("id"));
  1068.             try {
  1069.                 JSONObject output = this.serviceContext.executeService(GET_SALES_ORDER_EXTERNAL_COMMISSION_LIST_BY_SALES_ORDER, input);
  1070.                 JSONObject result = JSONObjectUtil.getResult(output);
  1071.                 if (ServiceResult.isOk(output)) {
  1072.                     this.externalCommissionList = ServiceResult.toArray(result.get("salesOrderExternalCommissionList"));
  1073.  
  1074.                 } else if (ServiceResult.isFail(output)) {
  1075.                     MessageHelper.displayError(result);
  1076.                 }
  1077.             } catch (Exception e) {
  1078.                 log.error("Error on load sales order external commission", e);
  1079.                 MessageHelper.displayError(e.getMessage());
  1080.             }
  1081.         }
  1082.     }
  1083.  
  1084.     @SuppressWarnings("unchecked")
  1085.     private void loadSalesOrderFinance() {
  1086.         // set default
  1087.         header.put("financeDueDateTop", DateUtil.dateNow());
  1088.         header.put("financeAmountCod", 0d);
  1089.         header.put("financeAmountTop", 0d);
  1090.         header.put("financeTrxAmountCod", 0d);
  1091.         header.put("financeTrxAmountTop", 0d);
  1092.         header.put("financeCurrCodeCod", new ComboItem("code", header.get("currCode")));
  1093.         header.put("financeCurrCodeTop", new ComboItem("code", header.get("currCode")));
  1094.         header.put("flgWithDownPaymentAgreement", GeneralConstants.NO);
  1095.         header.put("flgNeedPrepareChange", GeneralConstants.NO);
  1096.  
  1097.         if (this.header.get("id") != null) {
  1098.             JSONObject input = new JSONObject();
  1099.             input.put("soId", this.header.get("id"));
  1100.  
  1101.             try {
  1102.                 JSONObject output = this.serviceContext.executeService(GET_SALES_ORDER_FINANCE_LIST_BY_SALES_ORDER, input);
  1103.                 JSONObject result = JSONObjectUtil.getResult(output);
  1104.                 if (ServiceResult.isOk(output)) {
  1105.                     this.salesOrderFinanceList = ServiceResult.toArray(result.get("salesOrderFinanceList"));
  1106.                     if ((this.salesOrderFinanceList != null) && (this.salesOrderFinanceList.size() > 0)) {
  1107.                         for (JSONObject salesOrderFinance : salesOrderFinanceList) {
  1108.                             if (SalesWebConstants.FLG_COLLECTION_CHANGE.equals(salesOrderFinance.get("flgCollection").toString())) {
  1109.                                 header.put("flgNeedPrepareChange", GeneralConstants.YES);
  1110.                                 header.put("financeCurrCodeCod", new ComboItem("code", salesOrderFinance.get("currCode")));
  1111.                                 header.put("financeAmountCod", salesOrderFinance.get("amount"));
  1112.                                 header.put("financeTrxAmountCod", salesOrderFinance.get("trxAmount"));
  1113.                                 header.put("financeRemarkCod", salesOrderFinance.get("remark"));
  1114.                             } else if (SalesWebConstants.FLG_COLLECTION_COLLECT.equals(salesOrderFinance.get("flgCollection").toString())) {
  1115.                                 header.put("flgWithDownPaymentAgreement", GeneralConstants.YES);
  1116.                                 header.put("financeCurrCodeTop", new ComboItem("code", salesOrderFinance.get("currCode")));
  1117.                                 header.put("financeAmountTop", salesOrderFinance.get("amount"));
  1118.                                 header.put("financeTrxAmountTop", salesOrderFinance.get("trxAmount"));
  1119.                                 header.put("financeDueDateTop", salesOrderFinance.get("dueDate"));
  1120.                                 header.put("financeRemarkTop", salesOrderFinance.get("remark"));
  1121.                             }
  1122.                         }
  1123.                     }
  1124.                 } else if (ServiceResult.isFail(output)) {
  1125.                     MessageHelper.displayError(result);
  1126.                 }
  1127.  
  1128.                 log.debug("sales order finance : " + salesOrderFinanceList);
  1129.             } catch (Exception e) {
  1130.                 log.error("Error on load sales order finance", e);
  1131.                 MessageHelper.displayError(e.getMessage());
  1132.             }
  1133.         }
  1134.     }
  1135.  
  1136.     @SuppressWarnings("unchecked")
  1137.     private void loadSummaryTaxList() {
  1138.         if (this.header.get("id") != null) {
  1139.             JSONObject input = new JSONObject();
  1140.             input.put("soId", this.header.get("id"));
  1141.             try {
  1142.                 JSONObject output = this.serviceContext.executeService(GET_SUMMARY_SALES_ORDER_TAX_LIST, input);
  1143.                 JSONObject result = JSONObjectUtil.getResult(output);
  1144.                 if (ServiceResult.isOk(output)) {
  1145.                     this.summaryTaxList = ((List<JSONObject>) JSONObjectUtil.convertToArray(result.get("summaryTaxList")));
  1146.                     if ((this.summaryTaxList != null) && (this.summaryTaxList.size() > 0))
  1147.                         for (JSONObject item : this.summaryTaxList) {
  1148.                             item.put("sumNettItemAmount", Double.valueOf(item.get("sumNettItemAmount").toString()));
  1149.                             item.put("sumTaxAmount", Double.valueOf(item.get("sumTaxAmount").toString()));
  1150.                         }
  1151.                 } else if (ServiceResult.isFail(output)) {
  1152.                     MessageHelper.displayError(result);
  1153.                 }
  1154.             } catch (Exception e) {
  1155.                 log.error("Error on load summary tax list", e);
  1156.                 MessageHelper.displayError(e.getMessage());
  1157.             }
  1158.         }
  1159.     }
  1160.  
  1161.     @SuppressWarnings({ "unchecked" })
  1162.     private void loadSummary() {
  1163.         if (this.header.get("id") != null) {
  1164.             JSONObject input = new JSONObject();
  1165.             input.put("soId", this.header.get("id"));
  1166.             try {
  1167.                 JSONObject output = this.serviceContext.executeService(FIND_TOTAL_SUMMARY_SALES_ORDER, input);
  1168.                 JSONObject result = JSONObjectUtil.getResult(output);
  1169.  
  1170.                 if (ServiceResult.isOk(output)) {
  1171.                     result.put("totalItemAmount", Double.valueOf(result.get("totalItemAmount").toString()));
  1172.                     result.put("totalDiscountAmount", Double.valueOf(result.get("totalDiscountAmount").toString()));
  1173.                     result.put("totalTaxAmount", Double.valueOf(result.get("totalTaxAmount").toString()));
  1174.                     result.put("grandTotal", Double.valueOf(result.get("grandTotal").toString()));
  1175.                     this.summary = result;
  1176.                 } else if (ServiceResult.isFail(output)) {
  1177.                     MessageHelper.displayError(result);
  1178.                 }
  1179.             } catch (Exception e) {
  1180.                 log.error("Error on load summary sales order", e);
  1181.                 MessageHelper.displayError(e.getMessage());
  1182.             }
  1183.         }
  1184.     }
  1185.  
  1186.     @SuppressWarnings({ "unchecked" })
  1187.     private void loadCustPayment() {
  1188.         if (this.header.get("partner") != null) {
  1189.             JSONObject input = new JSONObject();
  1190.             input.put("partnerId", ((JSONObject) this.header.get("partner")).get("id"));
  1191.             try {
  1192.                 JSONObject output = this.serviceContext.executeService(IS_CUST_PAYMENT_EXISTS_BY_INDEX, input);
  1193.                 JSONObject result = JSONObjectUtil.getResult(output);
  1194.  
  1195.                 if (ServiceResult.isOk(output)) {
  1196.                     if (Boolean.valueOf(result.get("exists").toString())) {
  1197.                         header.put("custPaymentDuePaymentDays", ((JSONObject) result.get("custPaymentDto")).get("duePaymentDays"));
  1198.                     } else {
  1199.                         header.put("custPaymentDuePaymentDays", 0L);
  1200.                     }
  1201.                 } else if (ServiceResult.isFail(output)) {
  1202.                     MessageHelper.displayError(result);
  1203.                 }
  1204.             } catch (Exception e) {
  1205.                 log.error(e.getMessage(), e);
  1206.                 MessageHelper.displayError(e.getMessage());
  1207.             }
  1208.         }
  1209.     }
  1210.    
  1211.     @SuppressWarnings({ "unchecked" })
  1212.     private void loadCustomerExt() {
  1213.         if (this.header.get("partner") != null) {
  1214.             JSONObject input = new JSONObject();
  1215.             input.put("id", ((JSONObject) this.header.get("partner")).get("id"));
  1216.             try {
  1217.                 JSONObject output = this.serviceContext.executeService(IS_CUSTOMER_EXT_EXISTS_BY_ID, input);
  1218.                 JSONObject result = JSONObjectUtil.getResult(output);
  1219.  
  1220.                 if (ServiceResult.isOk(output)) {
  1221.                     if (Boolean.valueOf(result.get("exists").toString())) {
  1222.                         header.put("regularDiscountPercentage", ((JSONObject) result.get("customerExtDto")).get("regularDiscountPercentage"));
  1223.                     } else {
  1224.                         header.put("regularDiscountPercentage", new Double(0));
  1225.                     }
  1226.                 } else if (ServiceResult.isFail(output)) {
  1227.                     MessageHelper.displayError(result);
  1228.                 }
  1229.             } catch (Exception e) {
  1230.                 log.error(e.getMessage(), e);
  1231.                 MessageHelper.displayError(e.getMessage());
  1232.             }
  1233.         }
  1234.     }
  1235.    
  1236.     @SuppressWarnings("unchecked")
  1237.     private void loadTermOfPayment() {
  1238.         JSONObject input = new JSONObject();
  1239.         input.put("partnerId", ((JSONObject) this.header.get("partner")).get("id"));
  1240.         try {
  1241.             JSONObject output = this.serviceContext.executeService(GET_TERM_OF_PAYMENT_BY_PARTNER_ID, input);
  1242.             JSONObject result = JSONObjectUtil.getResult(output);
  1243.  
  1244.             if (ServiceResult.isOk(output)) {
  1245.                 log.debug("result GET_TERM_OF_PAYMENT_BY_PARTNER_ID: "+result);
  1246.                
  1247.                 header.put("custPaymentDuePaymentDays", Long.valueOf(result.get("dueDate").toString()));
  1248.             } else if (ServiceResult.isFail(output)) {
  1249.                 MessageHelper.displayError(result);
  1250.             }
  1251.         } catch (Exception e) {
  1252.             log.error(e.getMessage(), e);
  1253.             MessageHelper.displayError(e.getMessage());
  1254.         }
  1255.     }
  1256.    
  1257.     @SuppressWarnings("unchecked")
  1258.     private void loadTOPEditMode(Long soId) {
  1259.         JSONObject input = new JSONObject();
  1260.         input.put("id", soId);
  1261.         try {
  1262.             JSONObject output = this.serviceContext.executeService(FIND_SALES_ORDER_BY_ID, input);
  1263.             JSONObject result = JSONObjectUtil.getResult(output);
  1264.             if (ServiceResult.isOk(output)) {
  1265.                 log.debug("result FIND_SALES_ORDER_BY_ID: "+result);
  1266.  
  1267.                 header.put("custPaymentDuePaymentDays", Long.valueOf(result.get("termOfPayment").toString()));
  1268.                 if(Long.valueOf(result.get("termOfPayment").toString()) == 0)
  1269.                     setTopTypeCodeCash(true);
  1270.                 else
  1271.                     setTopTypeCodeCash(false);
  1272.                
  1273.             } else if (ServiceResult.isFail(output)) {
  1274.                 MessageHelper.displayError(result);
  1275.             }
  1276.         } catch (Exception e) {
  1277.             log.error(e.getMessage(), e);
  1278.             MessageHelper.displayError(e.getMessage());
  1279.         }
  1280.     }
  1281.    
  1282.     //buat method load untuk ambil so ext
  1283.     @SuppressWarnings("unchecked")
  1284.     public void loadSalesOrderExt(){
  1285.         log.debug("\n\n Load Sales Order Ext \n\n");
  1286.         JSONObject input = new JSONObject();
  1287.         input.put("soId", Long.valueOf(header.get("id").toString()));
  1288.         log.debug("\n\n input FIND_SALES_ORDER_EXT_BY_INDEX : "+input+"\n\n");
  1289.         try {
  1290.             JSONObject output = this.serviceContext.executeService(FIND_SALES_ORDER_EXT_BY_INDEX, input);
  1291.             JSONObject result = JSONObjectUtil.getResult(output);
  1292.             if (ServiceResult.isOk(output)) {
  1293.                 log.debug("result FIND_SALES_ORDER_EXT_BY_INDEX : "+result+"\n\n");    
  1294.                 flagDropship = result.get("flagDropship").toString();
  1295.                 header.put("flagDropship",flagDropship);               
  1296.                
  1297.             } else if (ServiceResult.isFail(output)) {
  1298.                 MessageHelper.displayError(result);
  1299.             }
  1300.         } catch (Exception e) {
  1301.             log.error(e.getMessage(), e);
  1302.             MessageHelper.displayError(e.getMessage());
  1303.         }
  1304.     }
  1305.  
  1306.     @SuppressWarnings({ "unchecked", "rawtypes" })
  1307.     public void onCustomerChanged() {
  1308.         if (this.header.get("partner") == null) {
  1309.             this.partnerRelationListForBilling = Collections.EMPTY_LIST;
  1310.             this.partnerCpList = Collections.EMPTY_LIST;
  1311.             this.partnerAddressListForShipping = Collections.EMPTY_LIST;
  1312.             header.put("partnerShipTo", null);
  1313.             header.put("partnerShipAddress", null);
  1314.             header.put("partnerShipCp", null);
  1315.             header.put("custPaymentDuePaymentDays", 0L);
  1316.         } else {
  1317.             log.debug("header onCustomerChanged else"+header);
  1318.             log.info("header onCustomerChanged else"+header);
  1319.             JSONObject partner = (JSONObject) this.header.get("partner");
  1320.             Long partnerId = Long.valueOf(String.valueOf(partner.get("id")));
  1321.             this.partnerRelationListForBilling = this.combo.getPartnerBillToByPartner(partnerId);
  1322.             this.partnerCpList = this.combo.getPartnerCpByPartner(partnerId);
  1323.             this.partnerAddressListForShipping = this.combo.getPartnerShipAddressByPartner(partnerId);
  1324.                 log.debug("partnerAddressListForShipping>>>"+partnerAddressListForShipping);
  1325.                 log.info("partnerAddressListForShipping>>>"+partnerAddressListForShipping);
  1326.                
  1327.                 log.debug("partnerRelationListForBilling>>>"+partnerRelationListForBilling.toString());
  1328.                 log.info("partnerRelationListForBilling>>>"+partnerRelationListForBilling.toString());
  1329.             header.put("partnerShipTo", new ComboItem("partnerShipToId", partnerId));
  1330. //          header.put("partnerShipToId", partnerId);
  1331.             header.put("partnerShipAddress", null);
  1332.             header.put("partnerShipCp", null);
  1333.             loadCustPayment();
  1334.             loadCustomerExt();
  1335.             log.debug("header onCustomerChanged else result"+header);
  1336.             log.info("header onCustomerChanged else result"+header);
  1337.         }
  1338.  
  1339.         if ((this.partnerRelationListForBilling != null) && (!this.partnerRelationListForBilling.isEmpty())) {
  1340.             if (this.header.get("partnerBillToId") == null) {
  1341.                 JSONObject partner = (JSONObject) this.header.get("partner");
  1342.                 Long partnerId = Long.valueOf(String.valueOf(partner.get("id")));
  1343. //              this.header.put("partnerBillToId", ((JSONObject) this.partnerRelationListForBilling.get(0)).get("partnerBillToId"));
  1344.                 this.header.put("partnerBillToId", partnerId);
  1345.                     log.debug("header partnerBillToId 1"+header);
  1346.                     log.info("header partnerBillToId 1"+header);
  1347.             } else {
  1348.                 Long partnerBillToId = Long.valueOf(this.header.get("partnerBillToId").toString());
  1349.                 JSONObject partnerRelation = null;
  1350.                     log.debug("header partnerBillToId 2"+header);
  1351.                     log.info("header partnerBillToId 2"+header);
  1352.                 for (Iterator iter = this.partnerRelationListForBilling.iterator(); iter.hasNext();) {
  1353.                     partnerRelation = (JSONObject) iter.next();
  1354.                     if (partnerBillToId.equals(Long.valueOf(partnerRelation.get("partnerBillToId").toString()))) {
  1355.                         break;
  1356.                     }
  1357.                     log.debug("header partnerBillToId 3"+header);
  1358.                     log.info("header partnerBillToId 3"+header);
  1359.                 }
  1360.                 if (partnerRelation == null) {
  1361.                     this.header.put("partnerBillToId", ((JSONObject) this.partnerRelationListForBilling.get(0)).get("partnerBillToId"));
  1362.                     log.debug("header partnerBillToId 4"+header);
  1363.                     log.info("header partnerBillToId 4"+header);
  1364.                 }
  1365.             }
  1366.         } else {
  1367.             this.header.put("partnerBillToId", null);
  1368.             log.debug("header partnerBillToId 5"+header);
  1369.             log.info("header partnerBillToId 5"+header);
  1370.         }
  1371.  
  1372.         if ((this.partnerCpList != null) && (!this.partnerCpList.isEmpty())) {
  1373.             if (this.header.get("partnerCpId") == null) {
  1374.                 this.header.put("partnerCpId", ((JSONObject) this.partnerCpList.get(0)).get("id"));
  1375.             } else {
  1376.                 Long partnerCpId = Long.valueOf(this.header.get("partnerCpId").toString());
  1377.                 JSONObject partnerCp = null;
  1378.                 for (Iterator iter = this.partnerCpList.iterator(); iter.hasNext();) {
  1379.                     partnerCp = (JSONObject) iter.next();
  1380.                     if (partnerCpId.equals(Long.valueOf(partnerCp.get("id").toString()))) {
  1381.                         break;
  1382.                     }
  1383.                 }
  1384.                 if (partnerCp == null) {
  1385.                     this.header.put("partnerCpId", ((JSONObject) this.partnerCpList.get(0)).get("id"));
  1386.                 }
  1387.             }
  1388.         } else {
  1389.             this.header.put("partnerCpId", null);
  1390.         }
  1391.  
  1392.         checkPartnerAddressInItems();
  1393.  
  1394.         log.debug("header onCustomerChanged result"+header);
  1395.         log.info("header onCustomerChanged result"+header);
  1396.  
  1397.     }
  1398.  
  1399.     @SuppressWarnings("unchecked")
  1400.     public void onCustomerShipToChanged() {
  1401.         log.debug("header onCustomerShipToChangedonCustomerShipToChanged result"+header);
  1402.         log.info("header onCustomerShipToChanged result"+header);
  1403.         log.info("header partnerShipTo result"+header.get("partnerShipTo"));
  1404.         if (header.get("partnerShipTo") != null) {
  1405.             JSONObject partnerShipTo = (JSONObject) header.get("partnerShipTo");
  1406.             log.debug("header partnerShipTo result"+partnerShipTo.toString());
  1407.             log.info("header partnerShipTo result"+partnerShipTo.toString());
  1408.             if (partnerShipTo.get("partnerShipToId") != null) {
  1409.                 header.put("partnerShipToId", partnerShipTo.get("partnerShipToId"));
  1410.                 log.debug("header partnerShipToId result"+header);
  1411.                 log.info("header partnerShipToId result"+header);
  1412.             }
  1413.         }
  1414.     }
  1415.    
  1416.     @SuppressWarnings("unchecked")
  1417.     public void onChangePaymentMethod() {
  1418.         log.debug("payment Method: "+header.get("paymentMethod"));
  1419.         if (header.get("partnerShipTo") != null) {
  1420.             JSONObject paymentMethod = (JSONObject) header.get("paymentMethod");
  1421.             if(paymentMethod.get("code").equals(SalesWebConstants.TOP_TYPE_CASH)) {
  1422.                 setTopTypeCodeCash(true);
  1423.                 header.put("custPaymentDuePaymentDays", 0L);
  1424.             } else {
  1425.                 setTopTypeCodeCash(false);
  1426.                 loadTermOfPayment();
  1427.             }
  1428.         }
  1429.     }
  1430.  
  1431.     public void handleSelectPartnerShipTo(SelectEvent event) {
  1432.         log.debug("SELECTED PARTNER SHIP TO : " + header.get("partnerShipTo"));
  1433.     }
  1434.  
  1435.     @SuppressWarnings({ "unchecked", "rawtypes" })
  1436.     private void checkPartnerAddressInItems() {
  1437.         if ((this.details != null) && (!this.details.isEmpty())) {
  1438.             JSONObject item;
  1439.             if ((this.partnerAddressListForShipping != null) && (!this.partnerAddressListForShipping.isEmpty())) {
  1440.                 JSONObject defaultPartnerAddress = (JSONObject) this.partnerAddressListForShipping.get(0);
  1441.                 for (Iterator localIterator1 = this.details.iterator(); localIterator1.hasNext();) {
  1442.                     item = (JSONObject) localIterator1.next();
  1443.                     if (item.get("partnerShipAddressId") == null) {
  1444.                         item.put("partnerShipToId", defaultPartnerAddress.get("partnerId"));
  1445.                         item.put("partnerShipAddressId", defaultPartnerAddress.get("id"));
  1446.                     } else {
  1447.                         Long partnerShipAddressId = Long.valueOf(item.get("partnerShipAddressId").toString());
  1448.                         JSONObject partnerShipAddress = null;
  1449.                         for (Iterator iter = this.partnerAddressListForShipping.iterator(); iter.hasNext();) {
  1450.                             partnerShipAddress = (JSONObject) iter.next();
  1451.                             if (partnerShipAddressId.equals(Long.valueOf(partnerShipAddress.get("partnerShipAddressId").toString()))) {
  1452.                                 break;
  1453.                             }
  1454.                         }
  1455.                         if (partnerShipAddress == null) {
  1456.                             item.put("partnerShipToId", defaultPartnerAddress.get("partnerShipToId"));
  1457.                             item.put("partnerShipAddressId", defaultPartnerAddress.get("partnerShipAddressId"));
  1458.                         }
  1459.                     }
  1460.                 }
  1461.             } else {
  1462.                 for (JSONObject detailItem : this.details) {
  1463.                     detailItem.remove("partnerShipToId");
  1464.                     detailItem.remove("partnerShipAddressId");
  1465.                 }
  1466.             }
  1467.         }
  1468.     }
  1469.  
  1470.     public List<JSONObject> getPartnerRelationListForBilling() {
  1471.         return this.partnerRelationListForBilling;
  1472.     }
  1473.  
  1474.     public List<JSONObject> getPartnerCpList() {
  1475.         return this.partnerCpList;
  1476.     }
  1477.  
  1478.     public void prepareRemoveItem(JSONObject removedItem) {
  1479.         this.itemToBeDeleted = ((JSONObject) removedItem.clone());
  1480.     }
  1481.  
  1482.     public void prepareRemoveExternalCommission(JSONObject removedItem) {
  1483.         this.externalCommissionToBeDelete = (JSONObject) removedItem.clone();
  1484.     }
  1485.  
  1486.     public void prepareRemoveItemPurchasing() {
  1487.         this.itemPurchaseToBeDelete = (JSONObject) purchasingInfo.clone();
  1488.     }
  1489.  
  1490.     public void prepareRemoveActivityWorkOrder(JSONObject item) {
  1491.         this.activityWorkOrder = (JSONObject) item.clone();
  1492.     }
  1493.  
  1494.     public JSONObject getExternalCommissionToBeDelete() {
  1495.         return externalCommissionToBeDelete;
  1496.     }
  1497.  
  1498.     public void setExternalCommissionToBeDelete(JSONObject externalCommissionToBeDelete) {
  1499.         this.externalCommissionToBeDelete = externalCommissionToBeDelete;
  1500.     }
  1501.  
  1502.     @SuppressWarnings("unchecked")
  1503.     public void doRemoveItem() {
  1504.         if ((this.itemToBeDeleted.get("id") == null) || (this.itemToBeDeleted.get("id").toString().equals(GeneralConstants.NULL_REF_VALUE_LONG.toString()))) {
  1505.             this.details.remove(this.itemToBeDeleted);
  1506.             this.itemToBeDeleted = new JSONObject();
  1507.         } else {
  1508.             JSONObject input = new JSONObject();
  1509.             input.put("id", this.itemToBeDeleted.get("id"));
  1510.             input.put("soId", this.header.get("id"));
  1511.             input.put("soVersion", this.header.get("version"));
  1512.             try {
  1513.                 JSONObject output = this.serviceContext.executeService(REMOVE_SALES_ORDER_ITEM, input);
  1514.                 JSONObject result = JSONObjectUtil.getResult(output);
  1515.                 if (ServiceResult.isOk(output)) {
  1516.                     MessageHelper.displayInfo("org.jleaf.erp.sls.web.dataHasBeenRemoved");
  1517.                     loadSalesOrder();
  1518.                     loadSalesOrderItems();
  1519.                     loadSalesOrderFinance();
  1520.                     loadSalesOrderExternalCommissions();
  1521.                     loadSummaryTaxList();
  1522.                     loadSummary();
  1523.                 } else if (ServiceResult.isFail(output)) {
  1524.                     MessageHelper.displayError(result);
  1525.                 }
  1526.             } catch (Exception e) {
  1527.                 log.error("Error on remove sales order item", e);
  1528.                 MessageHelper.displayError(e.getMessage());
  1529.             }
  1530.         }
  1531.     }
  1532.  
  1533.     @SuppressWarnings("unchecked")
  1534.     public void doRemoveExternalCommission() {
  1535.         if ((this.externalCommissionToBeDelete.get("id") == null)
  1536.                 || (this.externalCommissionToBeDelete.get("id").toString().equals(GeneralConstants.NULL_REF_VALUE_LONG.toString()))) {
  1537.             this.externalCommissionList.remove(this.externalCommissionToBeDelete);
  1538.             this.externalCommissionToBeDelete = new JSONObject();
  1539.         } else {
  1540.             JSONObject input = new JSONObject();
  1541.             input.put("id", this.externalCommissionToBeDelete.get("id"));
  1542.             input.put("soId", this.header.get("id"));
  1543.             input.put("soVersion", this.header.get("version"));
  1544.             try {
  1545.                 JSONObject output = this.serviceContext.executeService(REMOVE_SALES_ORDER_EXTERNAL_COMMISSION, input);
  1546.                 JSONObject result = JSONObjectUtil.getResult(output);
  1547.                 if (ServiceResult.isOk(output)) {
  1548.                     MessageHelper.displayInfo("org.jleaf.erp.sls.web.dataHasBeenRemoved");
  1549.                     loadSalesOrder();
  1550.                     loadSalesOrderFinance();
  1551.                     loadSalesOrderExternalCommissions();
  1552.                     loadSummaryTaxList();
  1553.                     loadSummary();
  1554.                 } else if (ServiceResult.isFail(output)) {
  1555.                     MessageHelper.displayError(result);
  1556.                 }
  1557.             } catch (Exception e) {
  1558.                 log.error("Error on remove sales order external commission", e);
  1559.                 MessageHelper.displayError(e.getMessage());
  1560.             }
  1561.         }
  1562.     }
  1563.  
  1564.     @SuppressWarnings("unchecked")
  1565.     public void doRemoveItemPurchasing() {
  1566.         if (this.itemPurchaseToBeDelete != null && this.itemPurchaseToBeDelete.get("id") != null) {
  1567.             JSONObject input = new JSONObject();
  1568.             input.put("soItemId", this.itemPurchaseToBeDelete.get("id"));
  1569.             input.put("soVersion", this.header.get("version"));
  1570.             try {
  1571.                 JSONObject output = this.serviceContext.executeService(REMOVE_SALES_ORDER_ITEM_PURCHASING, input);
  1572.                 JSONObject result = JSONObjectUtil.getResult(output);
  1573.                 if (ServiceResult.isOk(output)) {
  1574.                     MessageHelper.displayInfo("org.jleaf.erp.sls.web.dataHasBeenRemoved");
  1575.                     loadSalesOrder();
  1576.                     loadSalesOrderItems();
  1577.                     resetPurchasingInfo();
  1578.                     this.itemPurchaseToBeDelete = null;
  1579.                 } else if (ServiceResult.isFail(output)) {
  1580.                     MessageHelper.displayError(result);
  1581.                 }
  1582.             } catch (Exception e) {
  1583.                 log.error("Error on remove sales order item purchasing", e);
  1584.                 MessageHelper.displayError(e.getMessage());
  1585.             }
  1586.         }
  1587.     }
  1588.  
  1589.     @SuppressWarnings("unchecked")
  1590.     public void doRemoveActivityWorkOrder() {
  1591.         if (this.activityWorkOrder != null && this.activityWorkOrder.get("id") != null) {
  1592.             JSONObject input = new JSONObject();
  1593.             input.put("id", this.activityWorkOrder.get("id"));
  1594.             input.put("soVersion", this.header.get("version"));
  1595.             try {
  1596.                 JSONObject output = this.serviceContext.executeService(REMOVE_SALES_ORDER_ACTIVITY_WORK_ORDER, input);
  1597.                 JSONObject result = JSONObjectUtil.getResult(output);
  1598.                 if (ServiceResult.isOk(output)) {
  1599.                     activityWorkOrder = new JSONObject();
  1600.                     this.activityWorkOrderList = new ArrayList<JSONObject>();
  1601.  
  1602.                     loadSalesOrder();
  1603.                     loadSalesOrderItems();
  1604.                     loadSalesOrderFinance();
  1605.                     loadSalesOrderActivityWorkOrder();
  1606.  
  1607.                     MessageHelper.displayInfo("org.jleaf.erp.sls.web.dataHasBeenRemoved");
  1608.                 } else if (ServiceResult.isFail(output)) {
  1609.                     MessageHelper.displayError(result);
  1610.                 }
  1611.             } catch (Exception e) {
  1612.                 log.error("Error on remove sales order activity work order", e);
  1613.                 MessageHelper.displayError(e.getMessage());
  1614.             }
  1615.         }
  1616.     }
  1617.  
  1618.     public List<JSONObject> getProductUomList() {
  1619.         return this.productUomList;
  1620.     }
  1621.  
  1622.     public List<JSONObject> getCurrencyList() {
  1623.         log.debug("Get currency list: " + this.currencyList);
  1624.         return this.currencyList;
  1625.     }
  1626.  
  1627.     public List<JSONObject> getTaxList() {
  1628.         return this.taxList;
  1629.     }
  1630.  
  1631.     @SuppressWarnings("unchecked")
  1632.     public void prepareEditItem(JSONObject editedItem) {
  1633.         log.debug("Prepare edit item : " + editedItem);
  1634.         this.selectedItem = ((JSONObject) editedItem.clone());
  1635.  
  1636.         // mendapatkan data sell price
  1637.         prepareSellPriceForItemSalesOrder();
  1638.  
  1639.         // onCustomerShipAddressChanged();
  1640.  
  1641.         this.productUomList = this.combo.getProductUomConvertWithBaseList(Long.valueOf(this.selectedItem.get("productId").toString()));
  1642.         this.taxList = this.combo.getTaxListAdvance();
  1643.         this.currencyList = this.combo.getCurrencyList();
  1644.  
  1645.         // set nilai default untuk taxId menggunakan tax yg pertama kali di
  1646.         // dapat dari taxList
  1647.         // hanya kalau nilai taxId belum pernah dipilih
  1648.         if (selectedItem.get("taxId") == null || GeneralConstants.NULL_REF_VALUE_LONG.equals(Long.valueOf(selectedItem.get("taxId").toString()))) {
  1649.             // hanya kalau ou nya adalah PKP
  1650.             if (header.get("flgPkp").toString().equals(GeneralConstants.YES)) {
  1651.                 // hati-hati taxList bisa saja null
  1652.                 selectedItem.put("taxId", taxList == null || taxList.isEmpty() ? GeneralConstants.NULL_REF_VALUE_LONG : taxList.get(0).get("id"));
  1653.             } else {
  1654.                 selectedItem.put("taxId", GeneralConstants.NULL_REF_VALUE_LONG);
  1655.             }
  1656.         }
  1657.  
  1658.         onTaxChanged();
  1659.  
  1660.         if (selectedItem.containsKey("etaDay"))
  1661.             selectedItem.put("etaDayCombo", new ComboItem("code", selectedItem.get("etaDay")));
  1662.  
  1663.         // load checkSystemConfig, untuk mengecek apakah discount active atau tidak
  1664.         checkSystemConfig();
  1665.        
  1666.         // load purchasing info
  1667.         loadSalesOrderItemPurchasing();
  1668.  
  1669.         // load activity work order
  1670.         activityWorkOrderList = null;
  1671.         loadSalesOrderActivityWorkOrder();
  1672.  
  1673.         // load purchase order item latest info
  1674.         loadLatestPurchaseOrderItemInfo();
  1675.  
  1676.         // load sales order item latest info
  1677.         loadLatestSalesOrderItemInfo();
  1678.        
  1679.     }
  1680.    
  1681.    
  1682.     @SuppressWarnings("unchecked")
  1683.     private void loadLatestPurchaseOrderItemInfo() {
  1684.         JSONObject input = new JSONObject();
  1685.         input.put("ouId", header.get("ouId"));
  1686.         input.put("docDate", header.get("docDate"));
  1687.         input.put("productId", this.selectedItem.get("productId"));
  1688.         input.put("poId", GeneralConstants.NULL_REF_VALUE_LONG);
  1689.         try {
  1690.             JSONObject output = this.serviceContext.executeService(GET_LATEST_PURCHASE_ORDER_ITEM_INFO_BY_PRODUCT, input);
  1691.             JSONObject result = JSONObjectUtil.getResult(output);
  1692.             if (ServiceResult.isOk(output)) {
  1693.                 latestPurchaseOrderItemInfo = (JSONObject) result.clone();
  1694.             } else if (ServiceResult.isFail(output)) {
  1695.                 MessageHelper.displayError(result);
  1696.             }
  1697.         } catch (Exception e) {
  1698.             log.error(e.getMessage(), e);
  1699.             MessageHelper.displayError(e.getMessage());
  1700.         }
  1701.         JSONObject inputParameter = new JSONObject();
  1702.         inputParameter.put("ouId", header.get("ouId"));
  1703.         inputParameter.put("tenantId", header.get("tenantLoginId"));
  1704.         inputParameter.put("reportName", SalesWebConstants.INPUT_SALES_ORDER_REPORT_NAME);
  1705.         inputParameter.put("code", SalesWebConstants.INPUT_SALES_SHOW_PURCH_INFO);
  1706.  
  1707.         try {
  1708.             JSONObject output = this.serviceContext.executeService(GET_REPORT_PARAMETER_CONFIG_VALUE, inputParameter);
  1709.             JSONObject result = JSONObjectUtil.getResult(output);
  1710.             log.debug("showPurchInfo" + result);
  1711.             if (ServiceResult.isOk(output)) {
  1712.                 latestPurchaseOrderItemInfo.put("showPurchInfo", result.get("value"));
  1713.             } else if (ServiceResult.isFail(output)) {
  1714.                 MessageHelper.displayError(result);
  1715.             }
  1716.         } catch (Exception e) {
  1717.             log.error(e.getMessage(), e);
  1718.             MessageHelper.displayError(e.getMessage());
  1719.         }
  1720.     }
  1721.  
  1722.     @SuppressWarnings("unchecked")
  1723.     private void loadLatestSalesOrderItemInfo() {
  1724.         JSONObject input = new JSONObject();
  1725.         input.put("ouId", header.get("ouId"));
  1726.         input.put("docDate", header.get("docDate"));
  1727.         input.put("productId", this.selectedItem.get("productId"));
  1728.         input.put("soId", header.get("id") == null ? GeneralConstants.NULL_REF_VALUE_LONG : header.get("id"));
  1729.         try {
  1730.             JSONObject output = this.serviceContext.executeService(GET_LATEST_SALES_ORDER_ITEM_INFO_BY_PRODUCT, input);
  1731.             JSONObject result = JSONObjectUtil.getResult(output);
  1732.             if (ServiceResult.isOk(output)) {
  1733.                 latestSalesOrderItemInfo = (JSONObject) result.clone();
  1734.             } else if (ServiceResult.isFail(output)) {
  1735.                 MessageHelper.displayError(result);
  1736.             }
  1737.         } catch (Exception e) {
  1738.             log.error(e.getMessage(), e);
  1739.             MessageHelper.displayError(e.getMessage());
  1740.         }
  1741.     }
  1742.  
  1743.     @SuppressWarnings("unchecked")
  1744.     private void loadSalesOrderItemPurchasing() {
  1745.         if (this.selectedItem != null && this.selectedItem.get("id") != null) {
  1746.            
  1747.             if (GeneralConstants.NO.equals((String) selectedItem.get("flgDiscountType"))) {
  1748.                 enableDiscount = false;
  1749.             } else enableDiscount = true;
  1750.  
  1751.             resetPurchasingInfo();
  1752.  
  1753.             JSONObject input = new JSONObject();
  1754.             input.put("soItemId", this.selectedItem.get("id"));
  1755.             try {
  1756.                 JSONObject output = this.serviceContext.executeService(GET_SALES_ORDER_ITEM_PURCHASING_LIST_BY_SALES_ORDER_ITEM, input);
  1757.                 JSONObject result = JSONObjectUtil.getResult(output);
  1758.                 if (ServiceResult.isOk(output)) {
  1759.                     List<JSONObject> salesOrderItemPurchasingList = ServiceResult.toArray(result.get("salesOrderItemPurchasingList"));
  1760.  
  1761.                     if (salesOrderItemPurchasingList != null && salesOrderItemPurchasingList.size() > 0) {
  1762.                         purchasingInfo = salesOrderItemPurchasingList.get(0);
  1763.                         purchasingInfo.put("isIncludeTax", GeneralConstants.YES.equals(purchasingInfo.get("flgTaxAmount")));
  1764.  
  1765.                         purchasingInfo.put("currency", new ComboItem("code", purchasingInfo.get("currCode")));
  1766.                         // load supplier
  1767.                         input.put("id", purchasingInfo.get("partnerId"));
  1768.                         try {
  1769.                             JSONObject outputPartner = this.serviceContext.executeService(FIND_PARTNER_BY_ID, input);
  1770.                             JSONObject resultPartner = JSONObjectUtil.getResult(outputPartner);
  1771.                             log.debug("resultPartner : " + resultPartner);
  1772.                             if (ServiceResult.isOk(outputPartner)) {
  1773.                                 ComboItem comboItemSupplier = new ComboItem("id");
  1774.                                 comboItemSupplier.put("id", resultPartner.get("id"));
  1775.                                 comboItemSupplier.put("name", resultPartner.get("name"));
  1776.  
  1777.                                 log.debug("comboItemSupplier : " + comboItemSupplier);
  1778.                                 log.debug("purchasingInfo : " + purchasingInfo);
  1779.  
  1780.                                 purchasingInfo.put("supplier", comboItemSupplier);
  1781.                             } else if (ServiceResult.isFail(outputPartner)) {
  1782.                                 MessageHelper.displayError(resultPartner);
  1783.                             }
  1784.                         } catch (Exception ex) {
  1785.                             MessageHelper.displayError(ex.getMessage());
  1786.                         }
  1787.                     }
  1788.                 } else if (ServiceResult.isFail(output)) {
  1789.                     MessageHelper.displayError(result);
  1790.                 }
  1791.             } catch (Exception e) {
  1792.                 log.error("Error on load sales order item purchasing", e);
  1793.                 MessageHelper.displayError(e.getMessage());
  1794.             }
  1795.         } else {
  1796.             // load checkSystemConfig, untuk mengecek apakah discount active atau tidak
  1797.             checkSystemConfig();
  1798.         }
  1799.     }
  1800.  
  1801.     @SuppressWarnings("unchecked")
  1802.     private void resetPurchasingInfo() {
  1803.         purchasingInfo = new JSONObject();
  1804.         purchasingInfo.put("isIncludeTax", false);
  1805.         purchasingInfo.put("flgReadyStock", GeneralConstants.YES);
  1806.     }
  1807.  
  1808.     @SuppressWarnings("unchecked")
  1809.     private void loadSalesOrderActivityWorkOrder() {
  1810.         log.debug("loadSalesOrderActivityWorkOrder() : BEGIN");
  1811.         if (this.selectedItem != null && this.selectedItem.get("id") != null) {
  1812.             this.activityWorkOrderList = new ArrayList<JSONObject>();
  1813.  
  1814.             JSONObject input = new JSONObject();
  1815.             input.put("soItemId", this.selectedItem.get("id"));
  1816.             log.debug("input : " + input);
  1817.             try {
  1818.                 JSONObject output = this.serviceContext.executeService(GET_SALES_ORDER_ACTIVITY_WORK_ORDER_LIST_BY_SALES_ORDER_ITEM, input);
  1819.                 JSONObject result = JSONObjectUtil.getResult(output);
  1820.                 log.debug("output : " + output);
  1821.                 log.debug("result : " + result);
  1822.  
  1823.                 if (ServiceResult.isOk(output)) {
  1824.                     List<JSONObject> salesOrderActivityWorkOrderList = ServiceResult.toArray(result.get("salesOrderActivityWorkOrderList"));
  1825.                     log.debug("salesOrderActivityWorkOrderList : " + salesOrderActivityWorkOrderList);
  1826.  
  1827.                     if (salesOrderActivityWorkOrderList != null && salesOrderActivityWorkOrderList.size() > 0) {
  1828.                         this.activityWorkOrderList = salesOrderActivityWorkOrderList;
  1829.                     }
  1830.                 } else if (ServiceResult.isFail(output)) {
  1831.                     MessageHelper.displayError(result);
  1832.                 }
  1833.             } catch (Exception e) {
  1834.                 log.error("Error on load sales order activity work order", e);
  1835.                 MessageHelper.displayError(e.getMessage());
  1836.             }
  1837.         }
  1838.         log.debug("loadSalesOrderActivityWorkOrder() : END");
  1839.     }
  1840.  
  1841.     @SuppressWarnings("unchecked")
  1842.     public void onCustomerShipAddressChanged() {
  1843.         Long partnerShipAddressId = null;
  1844.  
  1845.         if ((this.selectedItem.get("partnerShipAddressId") == null)
  1846.                 || (this.selectedItem.get("partnerShipAddressId").toString().equals(GeneralConstants.NULL_REF_VALUE_LONG.toString()))) {
  1847.             this.selectedItem
  1848.                     .put("partnerShipAddressId",
  1849.                             (this.partnerAddressListForShipping != null) && (!this.partnerAddressListForShipping.isEmpty()) ? ((JSONObject) this.partnerAddressListForShipping
  1850.                                     .get(0)).get("partnerShipAddressId") : GeneralConstants.NULL_REF_VALUE_LONG);
  1851.         }
  1852.         partnerShipAddressId = Long.valueOf(this.selectedItem.get("partnerShipAddressId").toString());
  1853.         for (JSONObject partnerShipAddress : this.partnerAddressListForShipping)
  1854.             if (partnerShipAddressId.equals(Long.valueOf(partnerShipAddress.get("partnerShipAddressId").toString()))) {
  1855.                 this.selectedItem.put("partnerShipToId", partnerShipAddress.get("partnerShipToId"));
  1856.                 return;
  1857.             }
  1858.     }
  1859.  
  1860.     public void onPaymentMethodRadioChanged() {
  1861.         log.debug("#{inputSalesOrderController.header['paymentMethod']} : " + header.get("paymentMethod"));
  1862.         log.debug("header.flgDelivery : " + header.get("flgDelivery"));
  1863.  
  1864.         log.debug("header.flgDelivery : " + header.get("flgDelivery"));
  1865.         log.debug("header.deliveryMethod : " + header.get("deliveryMethod"));
  1866.         log.debug("header.flgNeedPrepareChange : " + header.get("flgNeedPrepareChange"));
  1867.  
  1868.     }
  1869.  
  1870.     public List<JSONObject> getPartnerAddressListForShipping() {
  1871.         return this.partnerAddressListForShipping;
  1872.     }
  1873.  
  1874.     @SuppressWarnings("unchecked")
  1875.     public void doSaveItem() {
  1876.         RequestContext context = RequestContext.getCurrentInstance();
  1877.         context.addCallbackParam("valid", false);
  1878.  
  1879.         if (header.get("id") != null) {
  1880.             Object tempValue;
  1881.            
  1882.             JSONObject input = new JSONObject();
  1883.             input.put("soId", header.get("id"));
  1884.             input.put("soVersion", header.get("version"));
  1885.             input.put("lineNo", selectedItem.get("lineNo"));
  1886.             input.put("productId", selectedItem.get("productId"));
  1887.             input.put("partnerShipToId", (tempValue = selectedItem.get("partnerShipToId")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : tempValue);
  1888.             input.put("partnerShipAddressId", (tempValue = selectedItem.get("partnerShipAddressId")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : tempValue);
  1889.             input.put("qtySo", (tempValue = selectedItem.get("qtySo")) == null ? 0d : tempValue);
  1890.             input.put("soUomId", (tempValue = selectedItem.get("soUomId")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : tempValue);
  1891.             input.put("qtyInt", (tempValue = selectedItem.get("qtyInt")) == null ? 0d : tempValue);
  1892.             input.put("grossSellPrice", (tempValue = selectedItem.get("grossSellPrice")) == null ? 0d : tempValue);
  1893.             input.put("flgTaxAmount", selectedItem.get("flgTaxAmount"));
  1894.             input.put("taxId", (tempValue = selectedItem.get("taxId")) == null ? GeneralConstants.NULL_REF_VALUE_LONG : tempValue);
  1895.             input.put("eta", selectedItem.get("eta"));
  1896.             input.put("etaDay", (tempValue = selectedItem.get("etaDayCombo")) == null ? GeneralConstants.EMPTY_VALUE : ((JSONObject) tempValue).get("code"));
  1897.             input.put("toleranceDlvQty", (tempValue = selectedItem.get("toleranceDlvQty")) == null ? 0d : tempValue);
  1898.             input.put("flgDiscountType", selectedItem.get("flgDiscountType"));
  1899.             input.put("discountAmount", (tempValue = selectedItem.get("discountAmount")) == null ? 0d : tempValue);
  1900.             input.put("discountPercentage", (tempValue = selectedItem.get("discountPercentage")) == null ? 0d : tempValue);
  1901.             try {
  1902.                 JSONObject output;
  1903.                 if (selectedItem.get("id") == null) {
  1904.                     output = serviceContext.executeService(ADD_SALES_ORDER_ITEM, input);
  1905.                 } else {
  1906.                     input.put("id", selectedItem.get("id"));
  1907.                     input.put("version", selectedItem.get("version"));
  1908.                     output = serviceContext.executeService(EDIT_SALES_ORDER_ITEM, input);
  1909.                 }
  1910.  
  1911.                 JSONObject result = JSONObjectUtil.getResult(output);
  1912.                 if (ServiceResult.isOk(output)) {
  1913.                     MessageHelper.displayInfo("org.jleaf.erp.sls.web.dataSuccessSave");
  1914.                     loadSalesOrder();
  1915.                     loadSalesOrderItems();
  1916.                     loadSummaryTaxList();
  1917.                     loadSummary();
  1918.                     loadSalesOrderFinance();
  1919.                     context.addCallbackParam("valid", true);
  1920.                 } else if (ServiceResult.isFail(output)) {
  1921.                     MessageHelper.displayError(result);
  1922.                 }
  1923.             } catch (Exception e) {
  1924.                 log.error("Error on save sales order item", e);
  1925.                 MessageHelper.displayError(e.getMessage());
  1926.             }
  1927.         } else {
  1928.             calculate();
  1929.             saveItemLocally();
  1930.             MessageHelper.displayInfo("org.jleaf.erp.sls.web.dataSuccessSave");
  1931.         }
  1932.     }
  1933.  
  1934.    
  1935.    
  1936.    
  1937.    
  1938.     @SuppressWarnings("unchecked")
  1939.     public void doSaveExternalCommision() {
  1940.         // ADD MODE
  1941.         if (!editModeExternalCommission) {
  1942.             JSONObject input = new JSONObject();
  1943.  
  1944.             JSONObject commissionCurrCodeItem = (JSONObject) inputExternalCommission.get("commissionCurrCodeItem");
  1945.             JSONObject bankCodeItem = (JSONObject) inputExternalCommission.get("bankCodeItem");
  1946.             JSONObject bankCurrCodeItem = (JSONObject) inputExternalCommission.get("bankCurrCodeItem");
  1947.  
  1948.             String bankCode = GeneralConstants.EMPTY_VALUE;
  1949.             String bankCurrCode = GeneralConstants.EMPTY_VALUE;
  1950.  
  1951.             if (bankCodeItem != null) {
  1952.                 bankCode = bankCodeItem.get("code").toString();
  1953.             }
  1954.  
  1955.             if (bankCurrCodeItem != null) {
  1956.                 bankCurrCode = bankCurrCodeItem.get("code").toString();
  1957.             }
  1958.  
  1959.             input.put("soId", header.get("id"));
  1960.             input.put("soVersion", header.get("version"));
  1961.             input.put("partnerName", inputExternalCommission.get("partnerName"));
  1962.             input.put("phone1", inputExternalCommission.get("phone1"));
  1963.             input.put("phone2", inputExternalCommission.get("phone2"));
  1964.             input.put("commissionCurrCode", commissionCurrCodeItem.get("code"));
  1965.             input.put("commissionAmount", inputExternalCommission.get("commissionAmount") != null ? inputExternalCommission.get("commissionAmount") : 0d);
  1966.             input.put("bankCode", bankCode);
  1967.             input.put("accountNo", inputExternalCommission.get("accountNo") != null ? inputExternalCommission.get("accountNo") : GeneralConstants.EMPTY_VALUE);
  1968.             input.put("bankCurrCode", bankCurrCode);
  1969.  
  1970.             RequestContext ctx = RequestContext.getCurrentInstance();
  1971.             ctx.addCallbackParam("valid", false);
  1972.  
  1973.             JSONObject output;
  1974.             try {
  1975.                 output = serviceContext.executeService(ADD_SALES_ORDER_EXTERNAL_COMMISSION, input);
  1976.  
  1977.                 JSONObject result = JSONObjectUtil.getResult(output);
  1978.                 if (ServiceResult.isOk(output)) {
  1979.                     ctx.addCallbackParam("valid", true);
  1980.  
  1981.                     loadSalesOrder();
  1982.                     loadSalesOrderItems();
  1983.                     loadSummaryTaxList();
  1984.                     loadSummary();
  1985.                     loadSalesOrderFinance();
  1986.                     loadSalesOrderExternalCommissions();
  1987.                 } else if (ServiceResult.isFail(output)) {
  1988.                     MessageHelper.displayError(result);
  1989.                 }
  1990.             } catch (Exception e) {
  1991.                 log.error("Error on save sales order item", e);
  1992.                 MessageHelper.displayError(e.getMessage());
  1993.             }
  1994.  
  1995.             // EDIT MODE
  1996.         } else {
  1997.             JSONObject input = new JSONObject();
  1998.  
  1999.             JSONObject commissionCurrCodeItem = (JSONObject) inputExternalCommission.get("commissionCurrCodeItem");
  2000.             JSONObject bankCodeItem = (JSONObject) inputExternalCommission.get("bankCodeItem");
  2001.             JSONObject bankCurrCodeItem = (JSONObject) inputExternalCommission.get("bankCurrCodeItem");
  2002.  
  2003.             String bankCode = GeneralConstants.EMPTY_VALUE;
  2004.             String bankCurrCode = GeneralConstants.EMPTY_VALUE;
  2005.  
  2006.             if (bankCodeItem != null) {
  2007.                 bankCode = bankCodeItem.get("code").toString();
  2008.             }
  2009.  
  2010.             if (bankCurrCodeItem != null) {
  2011.                 bankCurrCode = bankCurrCodeItem.get("code").toString();
  2012.             }
  2013.  
  2014.             input.put("soId", header.get("id"));
  2015.             input.put("soVersion", header.get("version"));
  2016.             input.put("id", inputExternalCommission.get("id"));
  2017.             input.put("version", inputExternalCommission.get("version"));
  2018.             input.put("partnerName", inputExternalCommission.get("partnerName"));
  2019.             input.put("phone1", inputExternalCommission.get("phone1"));
  2020.             input.put("phone2", inputExternalCommission.get("phone2"));
  2021.             input.put("commissionCurrCode", commissionCurrCodeItem.get("code"));
  2022.             input.put("commissionAmount", inputExternalCommission.get("commissionAmount") != null ? inputExternalCommission.get("commissionAmount") : 0d);
  2023.             input.put("bankCode", bankCode);
  2024.             input.put("accountNo", inputExternalCommission.get("accountNo") != null ? inputExternalCommission.get("accountNo") : GeneralConstants.EMPTY_VALUE);
  2025.             input.put("bankCurrCode", bankCurrCode);
  2026.  
  2027.             RequestContext ctx = RequestContext.getCurrentInstance();
  2028.             ctx.addCallbackParam("valid", false);
  2029.  
  2030.             JSONObject output;
  2031.             try {
  2032.                 output = serviceContext.executeService(EDIT_SALES_ORDER_EXTERNAL_COMMISSION, input);
  2033.  
  2034.                 JSONObject result = JSONObjectUtil.getResult(output);
  2035.                 if (ServiceResult.isOk(output)) {
  2036.                     loadSalesOrder();
  2037.                     loadSalesOrderItems();
  2038.                     loadSummaryTaxList();
  2039.                     loadSummary();
  2040.                     loadSalesOrderFinance();
  2041.                     loadSalesOrderExternalCommissions();
  2042.                     ctx.addCallbackParam("valid", true);
  2043.                 } else if (ServiceResult.isFail(output)) {
  2044.                     MessageHelper.displayError(result);
  2045.                 }
  2046.             } catch (Exception e) {
  2047.                 log.error("Error on save sales order item", e);
  2048.                 MessageHelper.displayError(e.getMessage());
  2049.             }
  2050.         }
  2051.     }
  2052.  
  2053.     @SuppressWarnings("unchecked")
  2054.     public void doSaveSalesOrderItemPurchasing() {
  2055.         log.debug("doSaveSalesOrderItemPurchasing : " + purchasingInfo);
  2056.         // EDIT
  2057.         if (purchasingInfo != null && purchasingInfo.get("id") != null) {
  2058.             JSONObject currCodeItem = (JSONObject) this.purchasingInfo.get("currency");
  2059.             JSONObject supplierItem = (JSONObject) this.purchasingInfo.get("supplier");
  2060.             String flgTaxAmount = GeneralConstants.NO;
  2061.             if (this.purchasingInfo.get("isIncludeTax") != null) {
  2062.                 flgTaxAmount = (Boolean) this.purchasingInfo.get("isIncludeTax") ? GeneralConstants.YES : GeneralConstants.NO;
  2063.             }
  2064.             log.debug("supplierItem : " + supplierItem);
  2065.  
  2066.             JSONObject input = new JSONObject();
  2067.             input.put("soVersion", this.header.get("version"));
  2068.             input.put("soItemId", this.selectedItem.get("id"));
  2069.             input.put("partnerId", supplierItem != null ? supplierItem.get("id") : GeneralConstants.NULL_REF_VALUE_LONG);
  2070.             input.put("soItemVersion", this.selectedItem.get("version"));
  2071.             input.put("version", this.purchasingInfo.get("version"));
  2072.             input.put("currCode", currCodeItem != null ? currCodeItem.get("code") : GeneralConstants.EMPTY_VALUE);
  2073.             input.put("flgTaxAmount", flgTaxAmount);
  2074.             input.put("price", this.purchasingInfo.get("price") != null ? this.purchasingInfo.get("price") : 0);
  2075.             input.put("flgReadyStock", this.purchasingInfo.get("flgReadyStock") != null ? this.purchasingInfo.get("flgReadyStock") : GeneralConstants.NO);
  2076.             input.put("indentDays", this.purchasingInfo.get("indentDays") != null ? this.purchasingInfo.get("indentDays") : 0);
  2077.             input.put("remark", this.purchasingInfo.get("remark") != null ? this.purchasingInfo.get("remark") : GeneralConstants.EMPTY_VALUE);
  2078.  
  2079.             try {
  2080.                 JSONObject output;
  2081.                 JSONObject result;
  2082.  
  2083.                 output = serviceContext.executeService(EDIT_SALES_ORDER_ITEM_PURCHASING, input);
  2084.                 result = JSONObjectUtil.getResult(output);
  2085.                 if (ServiceResult.isOk(output)) {
  2086.                     loadSalesOrder();
  2087.                     loadSalesOrderItems();
  2088.                     loadSalesOrderItemPurchasing();
  2089.                     loadSalesOrderFinance();
  2090.  
  2091.                     MessageHelper.displayEditSuccess();
  2092.                 } else if (ServiceResult.isFail(output)) {
  2093.                     MessageHelper.displayError(result);
  2094.                 }
  2095.             } catch (Exception e) {
  2096.                 log.error(e.getMessage(), e);
  2097.                 MessageHelper.displayError(e.getMessage());
  2098.             }
  2099.         } else { // ADD NEW
  2100.             JSONObject currCodeItem = (JSONObject) this.purchasingInfo.get("currency");
  2101.             JSONObject supplierItem = (JSONObject) this.purchasingInfo.get("supplier");
  2102.             String flgTaxAmount = GeneralConstants.NO;
  2103.             if (this.purchasingInfo.get("isIncludeTax") != null) {
  2104.                 flgTaxAmount = (Boolean) this.purchasingInfo.get("isIncludeTax") ? GeneralConstants.YES : GeneralConstants.NO;
  2105.             }
  2106.  
  2107.             JSONObject input = new JSONObject();
  2108.             input.put("soVersion", this.header.get("version"));
  2109.             input.put("soItemId", this.selectedItem.get("id"));
  2110.             input.put("partnerId", supplierItem != null ? supplierItem.get("id") : GeneralConstants.NULL_REF_VALUE_LONG);
  2111.  
  2112.             input.put("soItemVersion", this.selectedItem.get("version"));
  2113.             input.put("currCode", currCodeItem != null ? currCodeItem.get("code") : GeneralConstants.EMPTY_VALUE);
  2114.             input.put("flgTaxAmount", flgTaxAmount);
  2115.             input.put("price", this.purchasingInfo.get("price") != null ? this.purchasingInfo.get("price") : 0);
  2116.             input.put("flgReadyStock", this.purchasingInfo.get("flgReadyStock") != null ? this.purchasingInfo.get("flgReadyStock") : GeneralConstants.NO);
  2117.             input.put("indentDays", this.purchasingInfo.get("indentDays") != null ? this.purchasingInfo.get("indentDays") : 0);
  2118.             input.put("remark", this.purchasingInfo.get("remark") != null ? this.purchasingInfo.get("remark") : GeneralConstants.EMPTY_VALUE);
  2119.  
  2120.             try {
  2121.                 JSONObject output;
  2122.                 JSONObject result;
  2123.  
  2124.                 output = serviceContext.executeService(ADD_SALES_ORDER_ITEM_PURCHASING, input);
  2125.                 result = JSONObjectUtil.getResult(output);
  2126.                 if (ServiceResult.isOk(output)) {
  2127.                     loadSalesOrder();
  2128.                     loadSalesOrderItems();
  2129.                     loadSalesOrderItemPurchasing();
  2130.                     loadSalesOrderFinance();
  2131.  
  2132.                     MessageHelper.displayAddSuccess();
  2133.                 } else if (ServiceResult.isFail(output)) {
  2134.                     MessageHelper.displayError(result);
  2135.                 }
  2136.             } catch (Exception e) {
  2137.                 log.error(e.getMessage(), e);
  2138.                 MessageHelper.displayError(e.getMessage());
  2139.             }
  2140.         }
  2141.     }
  2142.  
  2143.     @SuppressWarnings("unchecked")
  2144.     public void doSaveActivityWorkOrder() {
  2145.         log.debug("doSaveActivityWorkOrder : " + purchasingInfo);
  2146.         // EDIT
  2147.         if (activityWorkOrder != null && activityWorkOrder.get("id") != null) {
  2148.             String flgActivity = GeneralConstants.NO;
  2149.             ;
  2150.             String groupActivity = activityWorkOrder.get("groupActivity").toString();
  2151.             Long partnerShipCpId = Long.valueOf(activityWorkOrder.get("partnerShipCpId").toString());
  2152.             String remark = activityWorkOrder.get("remark").toString();
  2153.  
  2154.             if (activityWorkOrder.get("flgActivity") != null) {
  2155.                 flgActivity = activityWorkOrder.get("flgActivity").toString();
  2156.             }
  2157.  
  2158.             JSONObject activityGroupItem = (JSONObject) activityWorkOrder.get("activityGroup");
  2159.             if (activityGroupItem != null && activityGroupItem.get("code") != null) {
  2160.                 groupActivity = activityGroupItem.get("code").toString();
  2161.             }
  2162.  
  2163.             JSONObject partnerShipCpItem = (JSONObject) activityWorkOrder.get("partnerShipCp");
  2164.             if (partnerShipCpItem != null && partnerShipCpItem.get("id") != null) {
  2165.                 partnerShipCpId = Long.valueOf(partnerShipCpItem.get("id").toString());
  2166.             }
  2167.  
  2168.             if (activityWorkOrder.get("remark") != null) {
  2169.                 remark = activityWorkOrder.get("remark").toString();
  2170.             }
  2171.  
  2172.             JSONObject input = new JSONObject();
  2173.             input.put("id", activityWorkOrder.get("id"));
  2174.             input.put("version", activityWorkOrder.get("version"));
  2175.  
  2176.             input.put("soVersion", this.header.get("version"));
  2177.             input.put("flgActivity", flgActivity);
  2178.             input.put("groupActivity", groupActivity);
  2179.             input.put("partnerShipCpId", partnerShipCpId);
  2180.             input.put("remark", remark);
  2181.  
  2182.             try {
  2183.                 JSONObject output;
  2184.                 JSONObject result;
  2185.  
  2186.                 output = serviceContext.executeService(EDIT_SALES_ORDER_ACTIVITY_WORK_ORDER, input);
  2187.                 result = JSONObjectUtil.getResult(output);
  2188.                 if (ServiceResult.isOk(output)) {
  2189.                     loadSalesOrder();
  2190.                     loadSalesOrderItems();
  2191.                     loadSalesOrderActivityWorkOrder();
  2192.                     loadSalesOrderFinance();
  2193.  
  2194.                     activityWorkOrder = new JSONObject();
  2195.                     MessageHelper.displayEditSuccess();
  2196.                 } else if (ServiceResult.isFail(output)) {
  2197.                     MessageHelper.displayError(result);
  2198.                 }
  2199.             } catch (Exception e) {
  2200.                 log.error(e.getMessage(), e);
  2201.                 MessageHelper.displayError(e.getMessage());
  2202.             }
  2203.         }
  2204.  
  2205.     }
  2206.  
  2207.     @SuppressWarnings("unchecked")
  2208.     public void doSavePartnerCp() {
  2209.         log.debug("doSavePartnerCp : " + inputPartnerCp);
  2210.         log.debug("inputPartnerForAddPartnerCp : " + inputPartnerForAddPartnerCp);
  2211.  
  2212.         JSONObject partnerShipCp = (JSONObject) header.get("partnerShipCp");
  2213.         if (partnerShipCp != null) {
  2214.             ComboItem comboItem = new ComboItem("id");
  2215.             comboItem.putAll(partnerShipCp);
  2216.             header.put("partnerShipCp", comboItem);
  2217.         }
  2218.  
  2219.         if (activityWorkOrder != null && activityWorkOrder.get("partnerShipCp") != null) {
  2220.             ComboItem comboItem = new ComboItem("id");
  2221.             comboItem.putAll((JSONObject) activityWorkOrder.get("partnerShipCp"));
  2222.             activityWorkOrder.put("partnerShipCp", comboItem);
  2223.         }
  2224.  
  2225.         // EDIT
  2226.         if (inputPartnerForAddPartnerCp != null && inputPartnerCp != null) {
  2227.             Long partnerId = GeneralConstants.NULL_REF_VALUE_LONG;
  2228.  
  2229.             // using partner
  2230.             if (inputPartnerForAddPartnerCp.get("id") != null) {
  2231.                 partnerId = Long.valueOf(inputPartnerForAddPartnerCp.get("id").toString());
  2232.             } else if (inputPartnerForAddPartnerCp.get("partnerShipToId") != null) {
  2233.                 partnerId = Long.valueOf(inputPartnerForAddPartnerCp.get("partnerShipToId").toString());
  2234.                 inputPartnerForAddPartnerCp.put("id", partnerId);
  2235.                 inputPartnerForAddPartnerCp.put("name", inputPartnerForAddPartnerCp.get("partnerShipToName"));
  2236.             }
  2237.  
  2238.             JSONObject departmentItem = (JSONObject) inputPartnerCp.get("department");
  2239.             JSONObject jobLevelItem = (JSONObject) inputPartnerCp.get("jobLevel");
  2240.  
  2241.             JSONObject input = new JSONObject();
  2242.             input.put("partnerId", partnerId);
  2243.             input.put("name", inputPartnerCp.get("cpName") != null ? inputPartnerCp.get("cpName") : GeneralConstants.EMPTY_VALUE);
  2244.             input.put("job", inputPartnerCp.get("cpJob") != null ? inputPartnerCp.get("cpJob") : GeneralConstants.EMPTY_VALUE);
  2245.             input.put("phone1", inputPartnerCp.get("phone1") != null ? inputPartnerCp.get("phone1") : GeneralConstants.EMPTY_VALUE);
  2246.             input.put("phone2", inputPartnerCp.get("phone2") != null ? inputPartnerCp.get("phone2") : GeneralConstants.EMPTY_VALUE);
  2247.             input.put("fax1", inputPartnerCp.get("fax1") != null ? inputPartnerCp.get("fax1") : GeneralConstants.EMPTY_VALUE);
  2248.             input.put("fax2", inputPartnerCp.get("fax2") != null ? inputPartnerCp.get("fax2") : GeneralConstants.EMPTY_VALUE);
  2249.             input.put("email", inputPartnerCp.get("email") != null ? inputPartnerCp.get("email") : GeneralConstants.EMPTY_VALUE);
  2250.             input.put("department", departmentItem.get("code"));
  2251.             input.put("jobLevel", jobLevelItem.get("code"));
  2252.             input.put("phoneExt1", GeneralConstants.EMPTY_VALUE);
  2253.             input.put("phoneExt2", GeneralConstants.EMPTY_VALUE);
  2254.             input.put("mobilePhone1", GeneralConstants.EMPTY_VALUE);
  2255.             input.put("mobilePhone2", GeneralConstants.EMPTY_VALUE);
  2256.             input.put("flgResponsibility", GeneralConstants.NO);
  2257.             input.put("flgEmailNotif", GeneralConstants.NO);
  2258.             input.put("flgEmailNotifAp", GeneralConstants.NO);
  2259.             input.put("flgEmailNotifAr", GeneralConstants.NO);
  2260.             input.put("active", GeneralConstants.YES);
  2261.  
  2262.             RequestContext ctx = RequestContext.getCurrentInstance();
  2263.             ctx.addCallbackParam("valid", false);
  2264.  
  2265.             try {
  2266.                 JSONObject output;
  2267.                 JSONObject result;
  2268.  
  2269.                 output = serviceContext.executeService(ADD_PARTNER_CP, input);
  2270.                 result = JSONObjectUtil.getResult(output);
  2271.                 if (ServiceResult.isOk(output)) {
  2272.                     ctx.addCallbackParam("valid", true);
  2273.  
  2274.                     JSONObject partner = (JSONObject) header.get("partner");
  2275.                    
  2276.                     this.partnerCpList = this.combo.getPartnerCpByPartner(Long.valueOf(partner.get("id").toString()));
  2277.                     this.inputPartnerCp = new JSONObject();
  2278.                     MessageHelper.displayAddSuccess();
  2279.                 } else if (ServiceResult.isFail(output)) {
  2280.                     MessageHelper.displayError(result);
  2281.                 }
  2282.             } catch (Exception e) {
  2283.                 log.error(e.getMessage(), e);
  2284.                 MessageHelper.displayError(e.getMessage());
  2285.             }
  2286.         }
  2287.  
  2288.     }
  2289.  
  2290.     @SuppressWarnings("unchecked")
  2291.     public void doAddActivityWorkOrder() {
  2292.         if (activityWorkOrder != null) {
  2293.             // activity
  2294.             String flgActivity = GeneralConstants.NO;
  2295.             String groupActivity = GeneralConstants.EMPTY_VALUE;
  2296.             Long partnerShipCpId = GeneralConstants.NULL_REF_VALUE_LONG;
  2297.             String remark = GeneralConstants.EMPTY_VALUE;
  2298.  
  2299.             if (activityWorkOrder.get("flgActivity") != null) {
  2300.                 flgActivity = activityWorkOrder.get("flgActivity").toString();
  2301.             }
  2302.  
  2303.             JSONObject activityGroupItem = (JSONObject) activityWorkOrder.get("activityGroup");
  2304.             log.debug("activityWorkOrder : " + activityWorkOrder);
  2305.             log.debug("activityGroupItem : " + activityGroupItem);
  2306.             if (activityGroupItem != null && activityGroupItem.get("code") != null) {
  2307.                 groupActivity = activityGroupItem.get("code").toString();
  2308.             }
  2309.  
  2310.             if (activityWorkOrder.get("remark") != null) {
  2311.                 remark = activityWorkOrder.get("remark").toString();
  2312.             }
  2313.  
  2314.             JSONObject partnerShipCp = (JSONObject) activityWorkOrder.get("partnerShipCp");
  2315.             if (partnerShipCp != null && partnerShipCp.get("id") != null) {
  2316.                 partnerShipCpId = Long.valueOf(partnerShipCp.get("id").toString());
  2317.             }
  2318.  
  2319.             JSONObject input = new JSONObject();
  2320.             input.put("soVersion", this.header.get("version"));
  2321.             input.put("soItemId", this.selectedItem.get("id"));
  2322.             input.put("flgActivity", flgActivity);
  2323.             input.put("groupActivity", groupActivity);
  2324.             input.put("partnerShipCpId", partnerShipCpId);
  2325.             input.put("remark", remark);
  2326.  
  2327.             try {
  2328.                 JSONObject output;
  2329.                 JSONObject result;
  2330.  
  2331.                 output = serviceContext.executeService(ADD_SALES_ORDER_ACTIVITY_WORK_ORDER, input);
  2332.                 result = JSONObjectUtil.getResult(output);
  2333.                 if (ServiceResult.isOk(output)) {
  2334.                     loadSalesOrder();
  2335.                     loadSalesOrderItems();
  2336.                     loadSalesOrderActivityWorkOrder();
  2337.                     loadSalesOrderFinance();
  2338.  
  2339.                     activityWorkOrder = new JSONObject(); // reseting input
  2340.                     MessageHelper.displayAddSuccess();
  2341.                 } else if (ServiceResult.isFail(output)) {
  2342.                     MessageHelper.displayError(result);
  2343.                 }
  2344.             } catch (Exception e) {
  2345.                 log.error(e.getMessage(), e);
  2346.                 MessageHelper.displayError(e.getMessage());
  2347.             }
  2348.         }
  2349.     }
  2350.  
  2351.     @SuppressWarnings("unchecked")
  2352.     private void loadDigitDecimalCurrency() {
  2353.         JSONObject input = new JSONObject();
  2354.         input.put("docTypeId", SalesWebConstants.DOCUMENT_SALES_ORDER);
  2355.         input.put("currCode", ((JSONObject) header.get("currency")).get("code"));
  2356.         try {
  2357.             JSONObject output;
  2358.             JSONObject result;
  2359.  
  2360.             output = serviceContext.executeService(GET_DIGIT_DECIMAL_CURRENCY_BY_DOC_TYPE, input);
  2361.             result = JSONObjectUtil.getResult(output);
  2362.             if (ServiceResult.isOk(output)) {
  2363.                 digitDecimalCurrency = (JSONObject) result.clone();
  2364.             } else if (ServiceResult.isFail(output)) {
  2365.                 MessageHelper.displayError(result);
  2366.             }
  2367.         } catch (Exception e) {
  2368.             log.error(e.getMessage(), e);
  2369.             MessageHelper.displayError(e.getMessage());
  2370.         }
  2371.     }
  2372.  
  2373.     private void loadRoundingParameter() {
  2374.         JSONObject input = new JSONObject();
  2375.         try {
  2376.             JSONObject output;
  2377.             JSONObject result;
  2378.  
  2379.             output = serviceContext.executeService(GET_ROUNDING_PARAMETER, input);
  2380.             result = JSONObjectUtil.getResult(output);
  2381.             if (ServiceResult.isOk(output)) {
  2382.                 roundingParameter = (JSONObject) result.clone();
  2383.             } else if (ServiceResult.isFail(output)) {
  2384.                 MessageHelper.displayError(result);
  2385.             }
  2386.         } catch (Exception e) {
  2387.             log.error(e.getMessage(), e);
  2388.             MessageHelper.displayError(e.getMessage());
  2389.         }
  2390.     }
  2391.  
  2392.     public JSONObject getRoundingParameter() {
  2393.         return roundingParameter;
  2394.     }
  2395.  
  2396.     public void setRoundingParameter(JSONObject roundingParameter) {
  2397.         this.roundingParameter = roundingParameter;
  2398.     }
  2399.  
  2400.     @SuppressWarnings("unchecked")
  2401.     public void calculate() {
  2402.         loadDigitDecimalCurrency();
  2403.         loadRoundingParameter();
  2404.  
  2405.         Double discountAmount = new Double(0);
  2406.         Double discountPercentage = new Double(0);
  2407.  
  2408.         Integer decimalForRounding = Integer.valueOf(digitDecimalCurrency.get("digit").toString());
  2409.  
  2410.         Double grossPrice = Double.valueOf(selectedItem.get("grossSellPrice").toString());
  2411.         Double qty = Double.valueOf(selectedItem.get("qtySo").toString());
  2412.         String flgTaxAmount = selectedItem.get("flgTaxAmount").toString();
  2413.         Long taxId = Long.valueOf(selectedItem.get("taxId").toString());
  2414.        
  2415.         if (selectedItem.get("flgDiscountType").toString().equals(SalesWebConstants.AMOUNT)) {
  2416.             discountAmount = Double.valueOf(selectedItem.get("discountAmount").toString());
  2417.         } else if (selectedItem.get("flgDiscountType").toString().equals(SalesWebConstants.PERCENTAGE)) {
  2418.             discountPercentage = Double.valueOf(selectedItem.get("discountPercentage").toString());
  2419.         }
  2420.  
  2421.         JSONObject input = new JSONObject();
  2422.         input.put("grossPrice", grossPrice);
  2423.         input.put("qty", qty);
  2424.         input.put("discountPercentage", discountPercentage);
  2425.         input.put("discountAmount", discountAmount);
  2426.         input.put("decimalForRounding", decimalForRounding);
  2427.         input.put("roundingMode", roundingParameter.get("roundingModeNonTax"));
  2428.         input.put("flgTaxAmount", flgTaxAmount);
  2429.         input.put("taxId", taxId);
  2430.         input.put("flgDisc", selectedItem.get("flgDiscountType").toString());
  2431.         try {
  2432.             JSONObject output;
  2433.             JSONObject result;
  2434.             output = serviceContext.executeService(CALCULATE_AMOUNT_FROM_GROSS_PRICE_FOR_SO_PO, input);
  2435.             result = JSONObjectUtil.getResult(output);
  2436.             if (ServiceResult.isOk(output)) {
  2437.                 selectedItem.put("taxPrice", result.get("taxPrice"));
  2438.                 selectedItem.put("taxPercentage", result.get("taxPercentage"));
  2439.                 selectedItem.put("taxAmount", result.get("taxAmount"));
  2440.                 selectedItem.put("nettSellPrice", result.get("nettPrice"));
  2441.                 selectedItem.put("nettItemAmount", result.get("nettAmount"));
  2442.                 selectedItem.put("grossItemAmount", result.get("grossAmount"));
  2443.                 selectedItem.put("discountAmount", result.get("discountAmount"));
  2444.                 selectedItem.put("discountPercentage", result.get("discountPercentage"));
  2445.             } else if (ServiceResult.isFail(output)) {
  2446.                 MessageHelper.displayError(result);
  2447.             }
  2448.         } catch (Exception e) {
  2449.             log.error(e.getMessage(), e);
  2450.             MessageHelper.displayError(e.getMessage());
  2451.         }
  2452.     }
  2453.  
  2454.     @SuppressWarnings("unchecked")
  2455.     private void saveItemLocally() {
  2456.         log.debug("call saveItemLocally() 1 " + selectedItem.toString());
  2457.  
  2458.         if (details != null && details.size() > 0) {
  2459.             Iterator<JSONObject> iter = details.iterator();
  2460.             while (iter.hasNext()) {
  2461.                 JSONObject item = iter.next();
  2462.                 if (Long.valueOf(item.get("lineNo").toString()).equals(Long.valueOf(selectedItem.get("lineNo").toString()))) {
  2463.                     details.remove(item);
  2464.                     JSONObject tempValue = (JSONObject) selectedItem.get("etaDayCombo");
  2465.                     selectedItem.put("etaDay", tempValue == null ? GeneralConstants.EMPTY_VALUE : tempValue.get("code"));
  2466.                     details.add((JSONObject) selectedItem.clone());
  2467.                     break;
  2468.                 }
  2469.             }
  2470.             Collections.sort(details, GRID_ITEM_COMPARATOR);
  2471.         }
  2472.     }
  2473.  
  2474.     public List<JSONObject> getSummaryTaxList() {
  2475.         return summaryTaxList;
  2476.     }
  2477.  
  2478.     public JSONObject getSummary() {
  2479.         return summary;
  2480.     }
  2481.  
  2482.     /**
  2483.      *
  2484.      */
  2485.     @SuppressWarnings("unchecked")
  2486.     private void loadOu() {
  2487.         log.debug("LOAD OU ");
  2488.         // Load OU code and name
  2489.         JSONObject input = new JSONObject();
  2490.         input.put("id", header.get("ouId"));
  2491.         try {
  2492.             JSONObject output = serviceContext.executeService(FIND_OU_BY_ID, input);
  2493.             JSONObject result = JSONObjectUtil.getResult(output);
  2494.             String status = JSONObjectUtil.getResultStatus(output);
  2495.             log.debug("result load OU : " + output);
  2496.             if (status != null && status.equals(GeneralConstants.OK)) {
  2497.                 header.put("ouCode", result.get("code"));
  2498.                 header.put("ouName", result.get("name"));
  2499.                 header.put("flgPkp", result.get("flgPkp"));
  2500.             } else if (status != null && status.equals(GeneralConstants.FAIL)) {
  2501.                 FacesUtils.addErrorMessage(MessageUtil.getInstance().getLabel((String) result.get("errorKey"), result.get("args")));
  2502.             }
  2503.         } catch (Exception e) {
  2504.             log.error("Error on load OU", e);
  2505.             FacesUtils.addErrorMessage(e.getMessage());
  2506.         }
  2507.         log.debug("END LOAD OU " + header);
  2508.     }
  2509.  
  2510.     @SuppressWarnings("unchecked")
  2511.     private void loadSalesman(Long salesmanId) {
  2512.         log.debug("load salesman. Salesman ID: " + salesmanId);
  2513.         log.debug("Current header: " + header);
  2514.  
  2515.         if (header.get("salesman") == null && header.get("salesmanId") != null
  2516.                 && !GeneralConstants.NULL_REF_VALUE_LONG.equals(Long.valueOf(header.get("salesmanId").toString()))) {
  2517.  
  2518.             // header.put("salesman", new ComboItem("id", salesmanId));
  2519.             JSONObject input = new JSONObject();
  2520.             input.put("id", header.get("salesmanId"));
  2521.             try {
  2522.                 JSONObject output = serviceContext.executeService(FIND_PARTNER_BY_ID, input);
  2523.                 JSONObject result = JSONObjectUtil.getResult(output);
  2524.                 String status = JSONObjectUtil.getResultStatus(output);
  2525.                 if (status != null && status.equals(GeneralConstants.OK)) {
  2526.                     ComboItem temp = new ComboItem("id");
  2527.                     temp.put("id", result.get("id"));
  2528.                     temp.put("code", result.get("code"));
  2529.                     temp.put("name", result.get("name"));
  2530.                     header.put("salesman", temp);
  2531.  
  2532.                 } else if (status != null && status.equals(GeneralConstants.FAIL)) {
  2533.                     FacesUtils.addErrorMessage(MessageUtil.getInstance().getLabel((String) result.get("errorKey"), result.get("args")));
  2534.                 }
  2535.             } catch (Exception e) {
  2536.                 log.error("Error on load salesman", e);
  2537.                 FacesUtils.addErrorMessage(e.getMessage());
  2538.             }
  2539.         }
  2540.     }
  2541.  
  2542.     @SuppressWarnings("unchecked")
  2543.     private void loadCustomer(Long partnerId) {
  2544.         if (header.get("partner") == null && header.get("partnerId") != null
  2545.                 && !GeneralConstants.NULL_REF_VALUE_LONG.equals(Long.valueOf(header.get("partnerId").toString()))) {
  2546.  
  2547.             JSONObject input = new JSONObject();
  2548.             input.put("id", header.get("partnerId"));
  2549.             try {
  2550.                 JSONObject output = serviceContext.executeService(FIND_PARTNER_BY_ID, input);
  2551.                 JSONObject result = JSONObjectUtil.getResult(output);
  2552.                 String status = JSONObjectUtil.getResultStatus(output);
  2553.                 if (status != null && status.equals(GeneralConstants.OK)) {
  2554.                     ComboItem temp = new ComboItem("id");
  2555.                     temp.put("id", result.get("id"));
  2556.                     temp.put("code", result.get("code"));
  2557.                     temp.put("name", result.get("name"));
  2558.                     header.put("partner", temp);
  2559.                     onCustomerChanged();
  2560.                 } else if (status != null && status.equals(GeneralConstants.FAIL)) {
  2561.                     FacesUtils.addErrorMessage(MessageUtil.getInstance().getLabel((String) result.get("errorKey"), result.get("args")));
  2562.                 }
  2563.             } catch (Exception e) {
  2564.                 log.error("Error on load customer", e);
  2565.                 FacesUtils.addErrorMessage(e.getMessage());
  2566.             }
  2567.         }
  2568.     }
  2569.  
  2570.     @SuppressWarnings("unchecked")
  2571.     public void prepareAddMoreItems() {
  2572.         subCategoryProductList = combo.getAuthorizedSubCtgrProductListAdvance();
  2573.         filterAddMoreItems.put("subCtgrProductId",
  2574.                 (subCategoryProductList != null && subCategoryProductList.size() > 0) ? subCategoryProductList.get(0).get("id")
  2575.                         : GeneralConstants.NULL_REF_VALUE_LONG);
  2576.         filterAddMoreItems.put("productCodeName", GeneralConstants.EMPTY_VALUE);
  2577.         filterAddMoreItems.put("brandCodeName", GeneralConstants.EMPTY_VALUE);
  2578.     }
  2579.  
  2580.     @SuppressWarnings("unchecked")
  2581.     public void prepareAddExternalCommission() {
  2582.         editModeExternalCommission = false;
  2583.         inputExternalCommission = new JSONObject();
  2584.         inputExternalCommission.put("commissionAmount", 0d);
  2585.     }
  2586.  
  2587.     @SuppressWarnings("unchecked")
  2588.     public void prepareAddPartnerCp(JSONObject partner) {
  2589.         inputPartnerForAddPartnerCp = (JSONObject) partner.clone();
  2590.         inputPartnerCp = new JSONObject();
  2591.  
  2592.         // using partner, ignore
  2593.         if (inputPartnerForAddPartnerCp.get("id") != null) {
  2594.  
  2595.             // using partner ship
  2596.         } else if (inputPartnerForAddPartnerCp.get("partnerShipToId") != null) {
  2597.             Long partnerId = Long.valueOf(inputPartnerForAddPartnerCp.get("partnerShipToId").toString());
  2598.             inputPartnerForAddPartnerCp.put("id", partnerId);
  2599.             inputPartnerForAddPartnerCp.put("name", inputPartnerForAddPartnerCp.get("partnerShipToName"));
  2600.         }
  2601.  
  2602.         log.debug("partner for add partner Cp : " + partner);
  2603.     }
  2604.  
  2605.     @SuppressWarnings("unchecked")
  2606.     public void prepareEditExternalCommission(JSONObject externalCommission) {
  2607.         editModeExternalCommission = true;
  2608.         inputExternalCommission = (JSONObject) externalCommission.clone();
  2609.  
  2610.         ComboItem commissionCurrCodeItem = new ComboItem("code", inputExternalCommission.get("commissionCurrCode"));
  2611.         inputExternalCommission.put("commissionCurrCodeItem", commissionCurrCodeItem);
  2612.  
  2613.         if (!inputExternalCommission.get("bankCode").toString().isEmpty()) {
  2614.             ComboItem bankCodeItem = new ComboItem("code", inputExternalCommission.get("bankCode"));
  2615.             ComboItem bankCurrCodeItem = new ComboItem("code", inputExternalCommission.get("bankCurrCode"));
  2616.  
  2617.             inputExternalCommission.put("bankCodeItem", bankCodeItem);
  2618.             inputExternalCommission.put("bankCurrCodeItem", bankCurrCodeItem);
  2619.         }
  2620.     }
  2621.  
  2622.     @SuppressWarnings("unchecked")
  2623.     public void prepareEditSalesOrderActivityWorkOrder(JSONObject soActivityWorkOrder) {
  2624.         activityWorkOrder = (JSONObject) soActivityWorkOrder.clone();
  2625.  
  2626.         // fill group activity
  2627.         ComboItem comItemActivityGroup = new ComboItem("code");
  2628.         comItemActivityGroup.put("code", activityWorkOrder.get("groupActivity"));
  2629.         comItemActivityGroup.put("propKey", activityWorkOrder.get("groupActivityPropKey"));
  2630.         activityWorkOrder.put("activityGroup", comItemActivityGroup);
  2631.  
  2632.         // fill partner cp id
  2633.         ComboItem comboItemPartnerCp = new ComboItem("id");
  2634.         comboItemPartnerCp.put("id", activityWorkOrder.get("partnerShipCpId"));
  2635.         comboItemPartnerCp.put("cpName", activityWorkOrder.get("partnerShipCpName"));
  2636.  
  2637.         activityWorkOrder.put("partnerShipCp", comboItemPartnerCp);
  2638.     }
  2639.  
  2640.     public JSONObject getFilterAddMoreItems() {
  2641.         return filterAddMoreItems;
  2642.     }
  2643.  
  2644.     public JSONObject[] getSelectedProductBalanceStockList() {
  2645.         return selectedProductBalanceStockList;
  2646.     }
  2647.  
  2648.     public void setSelectedProductBalanceStockList(JSONObject[] selectedProductBalanceStockList) {
  2649.         this.selectedProductBalanceStockList = selectedProductBalanceStockList;
  2650.     }
  2651.  
  2652.     public List<JSONObject> getProductBalanceStockList() {
  2653.         return productBalanceStockList;
  2654.     }
  2655.  
  2656.     @SuppressWarnings("unchecked")
  2657.     public void performSearchAddMoreItems() {
  2658.         filterAddMoreItems.put("ouId", header.get("ouId"));
  2659.         filterAddMoreItems.put("active", GeneralConstants.YES);
  2660.         try {
  2661.             JSONObject output = serviceContext.executeService(GET_AUTHORIZED_PRODUCT_BALANCE_STOCK_LIST_FOR_SALES_ORDER, filterAddMoreItems);
  2662.             JSONObject result = JSONObjectUtil.getResult(output);
  2663.             String status = JSONObjectUtil.getResultStatus(output);
  2664.             if (status != null && status.equals(GeneralConstants.OK)) {
  2665.                 productBalanceStockList = ServiceResult.toArray(result.get("productList"));
  2666.             } else if (status != null && status.equals(GeneralConstants.FAIL)) {
  2667.                 FacesUtils.addErrorMessage(StringUtil.replace((String) result.get("errorKey"), result.get("args")));
  2668.             }
  2669.         } catch (Exception e) {
  2670.             e.printStackTrace();
  2671.             FacesUtils.addErrorMessage(e.getMessage());
  2672.         }
  2673.     }
  2674.  
  2675.     public List<JSONObject> getSubCategoryProductList() {
  2676.         return subCategoryProductList;
  2677.     }
  2678.  
  2679.     @SuppressWarnings("unchecked")
  2680.     public void doAddMoreItems() {
  2681.         if (selectedProductBalanceStockList != null && selectedProductBalanceStockList.length > 0) {
  2682.             for (JSONObject item : selectedProductBalanceStockList) {
  2683.                 JSONObject itemToAdd = new JSONObject();
  2684.                 itemToAdd.put("lineNo", ++lastLineNo);
  2685.                 itemToAdd.put("productId", Long.valueOf(item.get("productId").toString()));
  2686.                 itemToAdd.put("productCode", item.get("productCode"));
  2687.                 itemToAdd.put("productName", item.get("productName"));
  2688.  
  2689.                 JSONObject currency = (JSONObject) header.get("currency");
  2690.                 itemToAdd.put("currCode", currency.get("code"));
  2691.                 itemToAdd.put("currPropKey", currency.get("propKey"));
  2692.                 itemToAdd.put("currency", currency);
  2693.                 itemToAdd.put("grossSellPrice", 0D);
  2694.                 itemToAdd.put("nettSellPrice", 0d);
  2695.                 itemToAdd.put("taxPrice", 0d);
  2696.                 itemToAdd.put("taxAmount", 0d);
  2697.                 itemToAdd.put("taxPercentage", 0d);
  2698.                 itemToAdd.put("toleranceDlvQty", 0d);
  2699.                 itemToAdd.put("flgTaxAmount", GeneralConstants.NO);
  2700.                 itemToAdd.put("taxId", GeneralConstants.NULL_REF_VALUE_LONG);
  2701.                 itemToAdd.put("tax", new ComboItem("id", GeneralConstants.NULL_REF_VALUE_LONG));
  2702.                 itemToAdd.put("qtySo", 1d);
  2703.                 itemToAdd.put("soUomId", Long.valueOf(item.get("baseUomId").toString()));
  2704.                 itemToAdd.put("soUomCode", item.get("baseUomCode"));
  2705.                 itemToAdd.put("soUomName", item.get("baseUomName"));
  2706.                 itemToAdd.put("qtyInt", 1d);
  2707.                 itemToAdd.put("baseUomId", Long.valueOf(item.get("baseUomId").toString()));
  2708.                 itemToAdd.put("baseUomCode", item.get("baseUomCode"));
  2709.                 itemToAdd.put("baseUomName", item.get("baseUomName"));
  2710.                 itemToAdd.put("eta", DateUtil.dateNow());
  2711.                 itemToAdd.put("etaDay", GeneralConstants.EMPTY_VALUE);
  2712.                 itemToAdd.put("flgDiscountType", (GeneralConstants.NO.equals(systemConfig)) ? GeneralConstants.NO : SalesWebConstants.PERCENTAGE);
  2713.                 itemToAdd.put("discountAmount", new Double(0));
  2714.                 itemToAdd.put("discountPercentage", (GeneralConstants.NO.equals(systemConfig)) ? new Double(0) : header.get("regularDiscountPercentage"));
  2715.  
  2716.                 details.add(itemToAdd);
  2717.             }
  2718.         }
  2719.     }
  2720.  
  2721.     @SuppressWarnings("unchecked")
  2722.     public void doAddMoreItem() {
  2723.         JSONObject itemToAdd = new JSONObject();
  2724.         itemToAdd.put("lineNo", ++lastLineNo);
  2725.         itemToAdd.put("productId", Long.valueOf(selectedProductBalanceStock.get("productId").toString()));
  2726.         itemToAdd.put("productCode", selectedProductBalanceStock.get("productCode"));
  2727.         itemToAdd.put("productName", selectedProductBalanceStock.get("productName"));
  2728.  
  2729.         JSONObject currency = (JSONObject) header.get("currency");
  2730.         itemToAdd.put("currCode", currency.get("code"));
  2731.         itemToAdd.put("currPropKey", currency.get("propKey"));
  2732.         itemToAdd.put("currency", currency);
  2733.         itemToAdd.put("grossSellPrice", 0D);
  2734.         itemToAdd.put("nettSellPrice", 0d);
  2735.         itemToAdd.put("taxPrice", 0d);
  2736.         itemToAdd.put("taxAmount", 0d);
  2737.         itemToAdd.put("taxPercentage", 0d);
  2738.         itemToAdd.put("toleranceDlvQty", 0d);
  2739.         itemToAdd.put("flgTaxAmount", GeneralConstants.NO);
  2740.         itemToAdd.put("taxId", GeneralConstants.NULL_REF_VALUE_LONG);
  2741.         itemToAdd.put("tax", new ComboItem("id", GeneralConstants.NULL_REF_VALUE_LONG));
  2742.         itemToAdd.put("qtySo", 1d);
  2743.         itemToAdd.put("soUomId", Long.valueOf(selectedProductBalanceStock.get("baseUomId").toString()));
  2744.         itemToAdd.put("soUomCode", selectedProductBalanceStock.get("baseUomCode"));
  2745.         itemToAdd.put("soUomName", selectedProductBalanceStock.get("baseUomName"));
  2746.         itemToAdd.put("qtyInt", 1d);
  2747.         itemToAdd.put("baseUomId", Long.valueOf(selectedProductBalanceStock.get("baseUomId").toString()));
  2748.         itemToAdd.put("baseUomCode", selectedProductBalanceStock.get("baseUomCode"));
  2749.         itemToAdd.put("baseUomName", selectedProductBalanceStock.get("baseUomName"));
  2750.         itemToAdd.put("eta", DateUtil.dateNow());
  2751.         itemToAdd.put("etaDay", GeneralConstants.EMPTY_VALUE);
  2752.         itemToAdd.put("flgDiscountType", (GeneralConstants.NO.equals(systemConfig)) ? GeneralConstants.NO : SalesWebConstants.PERCENTAGE);
  2753.         itemToAdd.put("discountAmount", new Double(0));
  2754.         itemToAdd.put("discountPercentage", (GeneralConstants.NO.equals(systemConfig)) ? new Double(0) : header.get("regularDiscountPercentage"));
  2755.  
  2756.         details.add(itemToAdd);
  2757.     }
  2758.  
  2759.     @SuppressWarnings("unchecked")
  2760.     public void onTaxChanged() {
  2761.         if (GeneralConstants.NULL_REF_VALUE_LONG.equals(Long.valueOf(selectedItem.get("taxId").toString()))) {
  2762.             selectedItem.put("taxPercentage", 0d);
  2763.         } else {
  2764.             JSONObject input = new JSONObject();
  2765.             input.put("id", selectedItem.get("taxId"));
  2766.             try {
  2767.                 JSONObject output = serviceContext.executeService(FIND_TAX_BY_ID, input);
  2768.                 JSONObject result = JSONObjectUtil.getResult(output);
  2769.                 String status = JSONObjectUtil.getResultStatus(output);
  2770.                 if (status != null && status.equals(GeneralConstants.OK)) {
  2771.                     selectedItem.put("taxPercentage", result.get("percentage"));
  2772.                 } else if (status != null && status.equals(GeneralConstants.FAIL)) {
  2773.                     FacesUtils.addErrorMessage(MessageUtil.getInstance().getLabel((String) result.get("errorKey"), result.get("args")));
  2774.                 }
  2775.             } catch (Exception e) {
  2776.                 log.error("Error on find tax by id", e);
  2777.                 FacesUtils.addErrorMessage(e.getMessage());
  2778.             }
  2779.         }
  2780.     }
  2781.  
  2782.     @SuppressWarnings("unchecked")
  2783.     public void onBankCodeExternalCommissionChanged(AjaxBehaviorEvent e) {
  2784.         log.debug("inputExternalCommission['bankCodeItem'] : " + inputExternalCommission.get("bankCodeItem"));
  2785.         ComboItem comboItem = new ComboItem("code");
  2786.         comboItem.putAll((JSONObject) inputExternalCommission.get("commissionCurrCodeItem"));
  2787.  
  2788.         inputExternalCommission.put("commissionCurrCodeItem", comboItem);
  2789.     }
  2790.  
  2791.     @SuppressWarnings("unchecked")
  2792.     public void onCurrencyChanged(AjaxBehaviorEvent e) {
  2793.         if (details != null && details.size() > 0) {
  2794.             for (JSONObject item : details) {
  2795.                 item.put("currency", header.get("currency"));
  2796.                 item.put("currCode", ((JSONObject) header.get("currency")).get("code"));
  2797.                 log.info("jalan for nya currency code nih . . . . . . . . . . . . . . . " + item.toString());
  2798.             }
  2799.         }
  2800.         header.put("currCode", ((JSONObject) header.get("currency")).get("code"));
  2801.     }
  2802.  
  2803.     @Override
  2804.     public boolean isCanVoid() {
  2805.         return false;
  2806.     }
  2807.  
  2808.     @Override
  2809.     public String getScheme() {
  2810.         return SalesWebConstants.SCHEME_SO;
  2811.     }
  2812.  
  2813.     @Override
  2814.     public boolean isCanCancelApprove() {
  2815.         return true;
  2816.     }
  2817.    
  2818.     @Override
  2819.     public String cancelApproveTaskName() {
  2820.         return CANCEL_APPROVE_SALES_ORDER;
  2821.     }
  2822.    
  2823.     public JSONObject getSelectedProductBalanceStock() {
  2824.         return selectedProductBalanceStock;
  2825.     }
  2826.  
  2827.     public void setSelectedProductBalanceStock(JSONObject selectedProductBalanceStock) {
  2828.         this.selectedProductBalanceStock = selectedProductBalanceStock;
  2829.     }
  2830.  
  2831.     @SuppressWarnings("unchecked")
  2832.     @Override
  2833.     public void doPrintPreview() {
  2834.         try {
  2835.             JSONObject input = new JSONObject();
  2836.             input.put("sessionId", FacesUtils.getSessionId());
  2837.             input.put("tenantId", Long.valueOf(FacesUtils.getSessionMap().get(WebJsfConstants.SESS_LOGGED_TENANT_ID).toString()));
  2838.             input.put("soId", Long.valueOf(header.get("id").toString()));
  2839.             input.put("userId", Long.valueOf(FacesUtils.getSessionMap().get(WebJsfConstants.SESS_LOGGED_USER_ID).toString()));
  2840.  
  2841.             String reportName = SalesWebConstants.FORM_SALES_ORDER;
  2842.  
  2843.             setPrintPreviewReportUrl(printPreview(reportName, input));
  2844.            
  2845.         } catch (Exception e) {
  2846.             log.error(e.getMessage(), e);
  2847.             MessageHelper.displayError(e.getMessage());
  2848.         }
  2849.     }
  2850.  
  2851.     public JSONObject getCustomerShipToAddressInfo() {
  2852.         return customerShipToAddressInfo;
  2853.     }
  2854.  
  2855.     @SuppressWarnings("unchecked")
  2856.     @Override
  2857.     public void doDownload() {
  2858.         try {
  2859.             JSONObject input = new JSONObject();
  2860.             input.put("sessionId", FacesUtils.getSessionId());
  2861.             input.put("tenantId", Long.valueOf(FacesUtils.getSessionMap().get(WebJsfConstants.SESS_LOGGED_TENANT_ID).toString()));
  2862.             input.put("soId", Long.valueOf(header.get("id").toString()));
  2863.             input.put("userId", Long.valueOf(FacesUtils.getSessionMap().get(WebJsfConstants.SESS_LOGGED_USER_ID).toString()));
  2864.             input.put("roleId", Long.valueOf(FacesUtils.getSessionMap().get(WebJsfConstants.SESS_LOGGED_CURRENT_ROLE).toString()));
  2865.             input.put("datetime", DateUtil.dateTimeNow());
  2866.             input.put("flgPkp", header.get("flgPkp").toString());
  2867.  
  2868.             log.debug(">> input download " + input);
  2869.             String reportName = getCurrentReportName();
  2870.             String fileName = GeneralConstants.SPACE_VALUE;
  2871.             String reportDesc = GeneralConstants.EMPTY_VALUE;
  2872.  
  2873.             if (reportName.equals(SalesWebConstants.FORM_SALES_ORDER)) {
  2874.                 reportName = SalesWebConstants.FORM_SALES_ORDER;
  2875.                 fileName = SalesWebConstants.FORM_SALES_ORDER + "_" + header.get("docNo").toString() + "_" + DateUtil.dateTimeNow();
  2876.                 reportDesc = "Form Sales Order";
  2877.             } else {
  2878.                 reportName = SalesWebConstants.FORM_PROFORMA_INVOICE;
  2879.                 fileName = SalesWebConstants.FORM_PROFORMA_INVOICE + "_" + header.get("docNo").toString() + "_" + DateUtil.dateTimeNow();
  2880.                 reportDesc = "Form Proforma Invoice";
  2881.             }
  2882.            
  2883.             Boolean isQueue = false;
  2884.             if( isQueue ){
  2885.                 JSONObject output = reportServerProvider.requestDownloadAsync(SalesHumanTask.DOWNLOAD_PDF_SALES_ORDER,
  2886.                         reportName,
  2887.                         fileName, reportDesc,
  2888.                         input);
  2889.                 JSONObject result = JSONObjectUtil.getResult(output);
  2890.                  
  2891.                 if( ServiceResult.isOk(output)    ){
  2892.                     Long requestGenerateId = Long.valueOf( result.get("requestGenerateId").toString() );
  2893.                      
  2894.                     reportServerProvider.goToResultPage(requestGenerateId,
  2895.                             reportName,
  2896.                             FacesContext.getCurrentInstance());
  2897.                      
  2898.                 } else{
  2899.                     MessageHelper.displayError(result);
  2900.                 }
  2901.             } else {
  2902.                 reportServerProvider.requestDownloadSync(SalesHumanTask.DOWNLOAD_PDF_SALES_ORDER,
  2903.                         reportName,
  2904.                         fileName, reportDesc,
  2905.                         input,
  2906.                         FacesContext.getCurrentInstance());
  2907.             }
  2908.         } catch (Exception e) {
  2909.             log.error(e.getMessage(), e);
  2910.             MessageHelper.displayError(e.getMessage());
  2911.         }
  2912.     }
  2913.  
  2914.     public void onCurrencyFinanceTopChanged() {
  2915.  
  2916.     }
  2917.  
  2918.     public void setCustomerShipToAddressInfo(JSONObject customerShipToInfo) {
  2919.         this.customerShipToAddressInfo = customerShipToInfo;
  2920.     }
  2921.  
  2922.     public JSONObject getCustomerShipCpInfo() {
  2923.         return customerShipCpInfo;
  2924.     }
  2925.  
  2926.     public void setCustomerShipCpInfo(JSONObject customerShipCpInfo) {
  2927.         this.customerShipCpInfo = customerShipCpInfo;
  2928.     }
  2929.  
  2930.     public List<JSONObject> getPartnerShipCpList() {
  2931.         if (partnerShipCpList == null) {
  2932.             Long partnerId = GeneralConstants.NULL_REF_VALUE_LONG;
  2933.             if (header.get("partnerShipTo") != null) {
  2934.                 JSONObject partnerShipTo = (JSONObject) header.get("partnerShipTo");
  2935.                 partnerId = Long.valueOf(partnerShipTo.get("id").toString());
  2936.             }
  2937.             partnerShipCpList = this.combo.getPartnerCpByPartner(partnerId);
  2938.         }
  2939.  
  2940.         return partnerShipCpList;
  2941.     }
  2942.  
  2943.     public void setPartnerShipCpList(List<JSONObject> partnerShipCpList) {
  2944.         this.partnerShipCpList = partnerShipCpList;
  2945.     }
  2946.  
  2947.     public List<JSONObject> getSalesOrderFinanceList() {
  2948.         return salesOrderFinanceList;
  2949.     }
  2950.  
  2951.     public void setSalesOrderFinanceList(List<JSONObject> salesOrderFinanceList) {
  2952.         this.salesOrderFinanceList = salesOrderFinanceList;
  2953.     }
  2954.  
  2955.     public JSONObject getInputExternalCommission() {
  2956.         return inputExternalCommission;
  2957.     }
  2958.  
  2959.     public void setInputExternalCommission(JSONObject inputExternalCommission) {
  2960.         this.inputExternalCommission = inputExternalCommission;
  2961.     }
  2962.  
  2963.     public boolean isEditModeExternalCommission() {
  2964.         return editModeExternalCommission;
  2965.     }
  2966.  
  2967.     public void setEditModeExternalCommission(boolean editModeExternalCommission) {
  2968.         this.editModeExternalCommission = editModeExternalCommission;
  2969.     }
  2970.  
  2971.     public JSONObject getPurchasingInfo() {
  2972.         return purchasingInfo;
  2973.     }
  2974.  
  2975.     public void setPurchasingInfo(JSONObject purchasingInfo) {
  2976.         this.purchasingInfo = purchasingInfo;
  2977.     }
  2978.  
  2979.     public JSONObject getActivityWorkOrder() {
  2980.         return activityWorkOrder;
  2981.     }
  2982.  
  2983.     public void setActivityWorkOrder(JSONObject activityWorkOrder) {
  2984.         this.activityWorkOrder = activityWorkOrder;
  2985.     }
  2986.  
  2987.     public List<JSONObject> getActivityWorkOrderList() {
  2988.         return activityWorkOrderList;
  2989.     }
  2990.  
  2991.     public void setActivityWorkOrderList(List<JSONObject> activityWorkOrderList) {
  2992.         this.activityWorkOrderList = activityWorkOrderList;
  2993.     }
  2994.  
  2995.     public JSONObject getItemPurchaseToBeDelete() {
  2996.         return itemPurchaseToBeDelete;
  2997.     }
  2998.  
  2999.     public void setItemPurchaseToBeDelete(JSONObject itemPurchaseToBeDelete) {
  3000.         this.itemPurchaseToBeDelete = itemPurchaseToBeDelete;
  3001.     }
  3002.  
  3003.     public JSONObject getCpWorkOrderInfo() {
  3004.         return cpWorkOrderInfo;
  3005.     }
  3006.  
  3007.     public void setCpWorkOrderInfo(JSONObject cpWorkOrderInfo) {
  3008.         this.cpWorkOrderInfo = cpWorkOrderInfo;
  3009.     }
  3010.  
  3011.     public JSONObject getInputPartnerCp() {
  3012.         return inputPartnerCp;
  3013.     }
  3014.  
  3015.     public void setInputPartnerCp(JSONObject inputPartnerCp) {
  3016.         this.inputPartnerCp = inputPartnerCp;
  3017.     }
  3018.  
  3019.     public JSONObject getInputPartnerForAddPartnerCp() {
  3020.         return inputPartnerForAddPartnerCp;
  3021.     }
  3022.  
  3023.     public void setInputPartnerForAddPartnerCp(JSONObject inputPartnerForAddPartnerCp) {
  3024.         this.inputPartnerForAddPartnerCp = inputPartnerForAddPartnerCp;
  3025.     }
  3026.  
  3027.     @SuppressWarnings("unchecked")
  3028.     public void flgNeedPrepareChangeEvent() {
  3029.         header.put("financeAmountCod", 0d);
  3030.         header.put("financeTrxAmountCod", 0d);
  3031.         header.put("financeCurrCodeCod", new ComboItem("code", header.get("currCode")));
  3032.         header.put("financeRemarkCod", GeneralConstants.EMPTY_VALUE);
  3033.     }
  3034.  
  3035.     @SuppressWarnings("unchecked")
  3036.     public void flgWithDownPaymentAgreementEvent() {
  3037.         header.put("financeDueDateTop", DateUtil.dateNow());
  3038.         header.put("financeAmountTop", 0d);
  3039.         header.put("financeTrxAmountTop", 0d);
  3040.         header.put("financeCurrCodeTop", new ComboItem("code", header.get("currCode")));
  3041.         header.put("financeRemarkTop", GeneralConstants.EMPTY_VALUE);
  3042.     }
  3043.  
  3044.     public JSONObject getLatestPurchaseOrderItemInfo() {
  3045.         return latestPurchaseOrderItemInfo;
  3046.     }
  3047.  
  3048.     public JSONObject getLatestSalesOrderItemInfo() {
  3049.         return latestSalesOrderItemInfo;
  3050.     }
  3051.  
  3052.     public void setLatestPurchaseOrderItemInfo(JSONObject latestPurchaseOrderItemInfo) {
  3053.         this.latestPurchaseOrderItemInfo = latestPurchaseOrderItemInfo;
  3054.     }
  3055.  
  3056.     public void setLatestSalesOrderItemInfo(JSONObject latestSalesOrderItemInfo) {
  3057.         this.latestSalesOrderItemInfo = latestSalesOrderItemInfo;
  3058.     }
  3059.  
  3060.     /**
  3061.      * @return the itemSellPriceProduct
  3062.      */
  3063.     public JSONObject getItemSellPriceProduct() {
  3064.         return itemSellPriceProduct;
  3065.     }
  3066.  
  3067.     public String getSystemConfig() {
  3068.         return systemConfig;
  3069.     }
  3070.  
  3071.     public boolean isEnableDiscount() {
  3072.         return enableDiscount;
  3073.     }
  3074.  
  3075.     public void setSystemConfig(String systemConfig) {
  3076.         this.systemConfig = systemConfig;
  3077.     }
  3078.  
  3079.     public void setEnableDiscount(boolean enableDiscount) {
  3080.         this.enableDiscount = enableDiscount;
  3081.     }
  3082.  
  3083.     public boolean isEditDiscount() {
  3084.         return editDiscount;
  3085.     }
  3086.  
  3087.     public void setEditDiscount(boolean editDiscount) {
  3088.         this.editDiscount = editDiscount;
  3089.     }
  3090.  
  3091.     public boolean isTopTypeCodeCash() {
  3092.         return topTypeCodeCash;
  3093.     }
  3094.  
  3095.     public void setTopTypeCodeCash(boolean topTypeCodeCash) {
  3096.         this.topTypeCodeCash = topTypeCodeCash;
  3097.     }
  3098. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×