Advertisement
tko_pb

ProcessApprovingTransferRequest.java

Mar 20th, 2019
395
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 18.79 KB | None | 0 0
  1. package org.infinite.retail.process;
  2.  
  3. import java.math.BigDecimal;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. import org.apache.log4j.Logger;
  11. import org.openbravo.base.exception.OBException;
  12. import org.openbravo.dal.core.OBContext;
  13. import org.openbravo.dal.service.OBDal;
  14. import org.openbravo.database.ConnectionProvider;
  15. import org.openbravo.erpCommon.utility.OBError;
  16. import org.openbravo.model.ad.process.ProcessInstance;
  17. import org.openbravo.model.ad.ui.Process;
  18. import org.openbravo.model.common.enterprise.Locator;
  19. import org.openbravo.model.common.enterprise.Organization;
  20. import org.openbravo.model.common.plm.Product;
  21. import org.openbravo.model.materialmgmt.onhandquantity.StorageDetail;
  22. import org.openbravo.model.materialmgmt.transaction.InternalMovement;
  23. import org.openbravo.model.materialmgmt.transaction.InternalMovementLine;
  24. import org.openbravo.scheduling.ProcessBundle;
  25. import org.openbravo.scheduling.ProcessLogger;
  26. import org.openbravo.service.db.CallProcess;
  27. import org.openbravo.service.db.DalBaseProcess;
  28. import org.openbravo.service.db.DalConnectionProvider;
  29.  
  30. public class ProcessApprovingTransferRequest extends DalBaseProcess {
  31.  
  32.     private final String inoutProcessID="122";
  33.     private final String closedStatus="CL";
  34.     private final String voidStatus="VO";
  35.     private final String draftStatus="DR";
  36.     private final String doc_status_to = "CO";
  37.  
  38.     final ConnectionProvider conn = new DalConnectionProvider();
  39.     protected Logger log4j = Logger.getLogger(this.getClass());
  40.     private ProcessLogger logger;
  41.  
  42.     @Override
  43.     protected void doExecute(ProcessBundle bundle) throws Exception {
  44.         // get logger
  45.         logger = bundle.getLogger();
  46.         logger.log("Starting background Process Approving Transfer Request\n");
  47.         logger.log("------------------------------------------------------\n");
  48.  
  49.         String org = bundle.getContext().getOrganization();
  50.         Organization orgId = OBDal.getInstance().get(Organization.class, org);
  51.         String clientId = orgId.getClient().getId();
  52.  
  53.         List<String> TransferRequestIdList = getMovementList(clientId);
  54.  
  55.         for(String transferRequest : TransferRequestIdList) {
  56.             InternalMovement transferRequestId = OBDal.getInstance().get(InternalMovement.class, transferRequest);
  57.  
  58.             String docstatus=transferRequestId.getOezDocstatus();
  59.             String docaction=transferRequestId.getOezDocaction();
  60.             String stringErorr = null;
  61.             int erorrMovement = 0;
  62.            
  63.             //use for verifed that quantity on hand not null
  64.             for (InternalMovementLine transferRequestLineId : transferRequestId.getMaterialMgmtInternalMovementLineList())
  65.             {
  66.                 Locator bin = transferRequestLineId.getStorageBin();
  67.                 Product productId = transferRequestLineId.getProduct();  
  68.                 BigDecimal quantityOnHand = BigDecimal.valueOf(0);
  69.  
  70.                 for (StorageDetail storageDetail : bin.getMaterialMgmtStorageDetailList()) {
  71.                     if (storageDetail.getProduct().equals(productId))
  72.                         quantityOnHand=storageDetail.getQuantityOnHand();
  73.                 }
  74.  
  75.                 String movementDocumentNo = transferRequestId.getDocumentNo();
  76.                 String productName = transferRequestLineId.getProduct().getName();
  77.                 int qntyMovementLines = transferRequestLineId.getMovementQuantity().intValue();
  78.                 String uom = transferRequestLineId.getUOM().getName();
  79.                 String originalWarehouse = transferRequestLineId.getStorageBin().getSearchKey();
  80.                 if(transferRequestLineId.getMovementQuantity().compareTo(quantityOnHand) > 0 )
  81.                 {              
  82.                     stringErorr =  String.format("Insufficient stock for Document no %s Product %s with %2d UOM %s and Storage Bin %s ", movementDocumentNo, productName, qntyMovementLines, uom, originalWarehouse);
  83.                     logger.log(stringErorr +"\n"); // < agar tidak exception
  84.  
  85.                     //write erorr to description
  86.                     transferRequestId.setDescription(stringErorr);
  87.                     OBDal.getInstance().save(transferRequestId);
  88.                     OBDal.getInstance().flush();
  89.                     erorrMovement++;
  90.                     continue;
  91.                 }
  92.             }
  93.            
  94.             if(erorrMovement > 0)
  95.                 continue;
  96.            
  97.             //cek apakah dari CL atau VO, jika ya, maka exception
  98.             if (transferRequestId.getOezDocstatus().equalsIgnoreCase(closedStatus)||
  99.                     transferRequestId.getOezDocstatus().equalsIgnoreCase(voidStatus))
  100.                 continue;
  101.  
  102.             // call store procedure
  103.             OBError oberror = doExecuteProcedureCall(transferRequestId.getId(), inoutProcessID);
  104.             String pesan = oberror.getMessage();
  105.  
  106.             if (pesan == null || pesan.isEmpty()) {
  107.                 transferRequestId.setOezDocstatus(doc_status_to);
  108.                 transferRequestId.setOezDocaction(doc_status_to);
  109.                 transferRequestId.setDescription("");
  110.                 OBDal.getInstance().save(transferRequestId);                   
  111.                 OBDal.getInstance().flush();
  112.                 pesan = "aproved to completed";
  113.                 logger.log("Transfer Request Document No:" + transferRequestId.getDocumentNo() + " - " + pesan + "\n");
  114.             }
  115.  
  116.             if (oberror.getType().equalsIgnoreCase("Error")){  
  117.                 OBDal.getInstance().refresh(transferRequestId);
  118.                 transferRequestId.setOezDocstatus(docstatus);
  119.                 transferRequestId.setOezDocaction(docaction);
  120.                 transferRequestId.setDescription(stringErorr);
  121.                 OBDal.getInstance().save(transferRequestId);
  122.                 OBDal.getInstance().flush();
  123.                 oberror.setType("Error");
  124.                 oberror.setTitle("Error");
  125.                 oberror.setMessage(pesan);
  126.                 bundle.setResult(oberror); 
  127.             }
  128.             logger.log("--------------------------------------------------\n");
  129.         }
  130.  
  131.         logger.log("--------------------------------------------------\n");
  132.         logger.log("background Process Approving Transfer Request [DONE]");
  133.     }
  134.  
  135.     private List<String> getMovementList (String clientId) {
  136.         List<String> output = new ArrayList<>();
  137.  
  138.         String sql= "select m_movement_id as movementId" +
  139.                 " from m_movement" +
  140.                 " where ad_client_id= ?" +
  141.                 " and em_oez_is_tranfer_request='Y'"+
  142.                 " and em_oez_docstatus='OEZ_RELEASE'"+
  143.                 " and processed='N' ";
  144.  
  145.         java.sql.Connection conn = OBDal.getInstance().getConnection();
  146.         try {
  147.             PreparedStatement ps = conn.prepareStatement(sql);
  148.             ps.setString(1, clientId );
  149.             ResultSet rs = ps.executeQuery();
  150.             while(rs.next())
  151.             {
  152.                 String movementId = rs.getString("movementId");
  153.                 output.add(movementId);
  154.             }
  155.             return output;
  156.         }
  157.         catch (Exception e) {
  158.             e.printStackTrace();
  159.             throw new OBException(e);
  160.         }
  161.  
  162.     }
  163.  
  164.     private OBError doExecutePrpackage org.infinite.retail.process;
  165.  
  166. import java.math.BigDecimal;
  167.  
  168. public class ProcessApprovingTransferRequest extends DalBaseProcess {
  169.  
  170.     private final String inoutProcessID="122";
  171.     private final String closedStatus="CL";
  172.     private final String voidStatus="VO";
  173.     private final String draftStatus="DR";
  174.     private final String doc_status_to = "CO";
  175.  
  176.     final ConnectionProvider conn = new DalConnectionProvider();
  177.     protected Logger log4j = Logger.getLogger(this.getClass());
  178.     private ProcessLogger logger;
  179.  
  180.     @Override
  181.     protected void doExecute(ProcessBundle bundle) throws Exception {
  182.         // get logger
  183.         logger = bundle.getLogger();
  184.         logger.log("Starting background Process Approving Transfer Request\n");
  185.         logger.log("------------------------------------------------------\n");
  186.  
  187.         String org = bundle.getContext().getOrganization();
  188.         Organization orgId = OBDal.getInstance().get(Organization.class, org);
  189.         String clientId = orgId.getClient().getId();
  190.  
  191.         List<String> TransferRequestIdList = getMovementList(clientId);
  192.  
  193.         for(String transferRequest : TransferRequestIdList) {
  194.             InternalMovement transferRequestId = OBDal.getInstance().get(InternalMovement.class, transferRequest);
  195.  
  196.             String docstatus=transferRequestId.getOezDocstatus();
  197.             String docaction=transferRequestId.getOezDocaction();
  198.             String stringErorr = null;
  199.             int erorrMovement = 0;
  200.            
  201.             //use for verifed that quantity on hand not null
  202.             for (InternalMovementLine transferRequestLineId : transferRequestId.getMaterialMgmtInternalMovementLineList())
  203.             {
  204.                 Locator bin = transferRequestLineId.getStorageBin();
  205.                 Product productId = transferRequestLineId.getProduct();  
  206.                 BigDecimal quantityOnHand = BigDecimal.valueOf(0);
  207.  
  208.                 for (StorageDetail storageDetail : bin.getMaterialMgmtStorageDetailList()) {
  209.                     if (storageDetail.getProduct().equals(productId))
  210.                         quantityOnHand=storageDetail.getQuantityOnHand();
  211.                 }
  212.  
  213.                 String movementDocumentNo = transferRequestId.getDocumentNo();
  214.                 String productName = transferRequestLineId.getProduct().getName();
  215.                 int qntyMovementLines = transferRequestLineId.getMovementQuantity().intValue();
  216.                 String uom = transferRequestLineId.getUOM().getName();
  217.                 String originalWarehouse = transferRequestLineId.getStorageBin().getSearchKey();
  218.                 if(transferRequestLineId.getMovementQuantity().compareTo(quantityOnHand) > 0 )
  219.                 {              
  220.                     stringErorr =  String.format("Insufficient stock for Document no %s Product %s with %2d UOM %s and Storage Bin %s ", movementDocumentNo, productName, qntyMovementLines, uom, originalWarehouse);
  221.                     logger.log(stringErorr +"\n"); // < agar tidak exception
  222.  
  223.                     //write erorr to description
  224.                     transferRequestId.setDescription(stringErorr);
  225.                     OBDal.getInstance().save(transferRequestId);
  226.                     OBDal.getInstance().flush();
  227.                     erorrMovement++;
  228.                     continue;
  229.                 }
  230.             }
  231.            
  232.             if(erorrMovement > 0)
  233.                 continue;
  234.            
  235.             //cek apakah dari CL atau VO, jika ya, maka exception
  236.             if (transferRequestId.getOezDocstatus().equalsIgnoreCase(closedStatus)||
  237.                     transferRequestId.getOezDocstatus().equalsIgnoreCase(voidStatus))
  238.                 continue;
  239.  
  240.             // call store procedure
  241.             OBError oberror = doExecuteProcedureCall(transferRequestId.getId(), inoutProcessID);
  242.             String pesan = oberror.getMessage();
  243.  
  244.             if (pesan == null || pesan.isEmpty()) {
  245.                 transferRequestId.setOezDocstatus(doc_status_to);
  246.                 transferRequestId.setOezDocaction(doc_status_to);
  247.                 transferRequestId.setDescription("");
  248.                 OBDal.getInstance().save(transferRequestId);                   
  249.                 OBDal.getInstance().flush();
  250.                 pesan = "aproved to completed";
  251.                 logger.log("Transfer Request Document No:" + transferRequestId.getDocumentNo() + " - " + pesan + "\n");
  252.             }
  253.  
  254.             if (oberror.getType().equalsIgnoreCase("Error")){  
  255.                 OBDal.getInstance().refresh(transferRequestId);
  256.                 transferRequestId.setOezDocstatus(docstatus);
  257.                 transferRequestId.setOezDocaction(docaction);
  258.                 transferRequestId.setDescription(stringErorr);
  259.                 OBDal.getInstance().save(transferRequestId);
  260.                 OBDal.getInstance().flush();
  261.                 oberror.setType("Error");
  262.                 oberror.setTitle("Error");
  263.                 oberror.setMessage(pesan);
  264.                 bundle.setResult(oberror); 
  265.             }
  266.             logger.log("--------------------------------------------------\n");
  267.         }
  268.  
  269.         logger.log("--------------------------------------------------\n");
  270.         logger.log("background Process Approving Transfer Request [DONE]");
  271.     }
  272.  
  273.     private List<String> getMovementList (String clientId) {
  274.         List<String> output = new ArrayList<>();
  275.  
  276.         String sql= "select m_movement_id as movementId" +
  277.                 " from m_movement" +
  278.                 " where ad_client_id= ?" +
  279.                 " and em_oez_is_tranfer_request='Y'"+
  280.                 " and em_oez_docstatus='OEZ_RELEASE'"+
  281.                 " and processed='N' ";
  282.  
  283.         java.sql.Connection conn = OBDal.getInstance().getConnection();
  284.         try {
  285.             PreparedStatement ps = conn.prepareStatement(sql);
  286.             ps.setString(1, clientId );
  287.             ResultSet rs = ps.executeQuery();
  288.             while(rs.next())
  289.             {
  290.                 String movementId = rs.getString("movementId");
  291.                 output.add(movepackage org.infinite.retail.process;
  292.  
  293. import java.math.BigDecimal;
  294.  
  295. public class ProcessApprovingTransferRequest extends DalBaseProcess {
  296.  
  297.     private final String inoutProcessID="122";
  298.     private final String closedStatus="CL";
  299.     private final String voidStatus="VO";
  300.     private final String draftStatus="DR";
  301.     private final String doc_status_to = "CO";
  302.  
  303.     final ConnectionProvider conn = new DalConnectionProvider();
  304.     protected Logger log4j = Logger.getLogger(this.getClass());
  305.     private ProcessLogger logger;
  306.  
  307.     @Override
  308.     protected void doExecute(ProcessBundle bundle) throws Exception {
  309.         // get logger
  310.         logger = bundle.getLogger();
  311.         logger.log("Starting background Process Approving Transfer Request\n");
  312.         logger.log("------------------------------------------------------\n");
  313.  
  314.         String org = bundle.getContext().getOrganization();
  315.         Organization orgId = OBDal.getInstance().get(Organization.class, org);
  316.         String clientId = orgId.getClient().getId();
  317.  
  318.         List<String> TransferRequestIdList = getMovementList(clientId);
  319.  
  320.         for(String transferRequest : TransferRequestIdList) {
  321.             InternalMovement transferRequestId = OBDal.getInstance().get(InternalMovement.class, transferRequest);
  322.  
  323.             String docstatus=transferRequestId.getOezDocstatus();
  324.             String docaction=transferRequestId.getOezDocaction();
  325.             String stringErorr = null;
  326.             int erorrMovement = 0;
  327.            
  328.             //use for verifed that quantity on hand not null
  329.             for (InternalMovementLine transferRequestLineId : transferRequestId.getMaterialMgmtInternalMovementLineList())
  330.             {
  331.                 Locator bin = transferRequestLineId.getStorageBin();
  332.                 Product productId = transferRequestLineId.getProduct();  
  333.                 BigDecimal quantityOnHand = BigDecimal.valueOf(0);
  334.  
  335.                 for (StorageDetail storageDetail : bin.getMaterialMgmtStorageDetailList()) {
  336.                     if (storageDetail.getProduct().equals(productId))
  337.                         quantityOnHand=storageDetail.getQuantityOnHand();
  338.                 }
  339.  
  340.                 String movementDocumentNo = transferRequestId.getDocumentNo();
  341.                 String productName = transferRequestLineId.getProduct().getName();
  342.                 int qntyMovementLines = transferRequestLineId.getMovementQuantity().intValue();
  343.                 String uom = transferRequestLineId.getUOM().getName();
  344.                 String originalWarehouse = transferRequestLineId.getStorageBin().getSearchKey();
  345.                 if(transferRequestLineId.getMovementQuantity().compareTo(quantityOnHand) > 0 )
  346.                 {              
  347.                     stringErorr =  String.format("Insufficient stock for Document no %s Product %s with %2d UOM %s and Storage Bin %s ", movementDocumentNo, productName, qntyMovementLines, uom, originalWarehouse);
  348.                     logger.log(stringErorr +"\n"); // < agar tidak exception
  349.  
  350.                     //write erorr to description
  351.                     transferRequestId.setDescription(stringErorr);
  352.                     OBDal.getInstance().save(transferRequestId);
  353.                     OBDal.getInstance().flush();
  354.                     erorrMovement++;
  355.                     continue;
  356.                 }
  357.             }
  358.            
  359.             if(erorrMovement > 0)
  360.                 continue;
  361.            
  362.             //cek apakah dari CL atau VO, jika ya, maka exception
  363.             if (transferRequestId.getOezDocstatus().equalsIgnoreCase(closedStatus)||
  364.                     transferRequestId.getOezDocstatus().equalsIgnoreCase(voidStatus))
  365.                 continue;
  366.  
  367.             // call store procedure
  368.             OBError oberror = doExecuteProcedureCall(transferRequestId.getId(), inoutProcessID);
  369.             String pesan = oberror.getMessage();
  370.  
  371.             if (pesan == null || pesan.isEmpty()) {
  372.                 transferRequestId.setOezDocstatus(doc_status_to);
  373.                 transferRequestId.setOezDocaction(doc_status_to);
  374.                 transferRequestId.setDescription("");
  375.                 OBDal.getInstance().save(transferRequestId);                   
  376.                 OBDal.getInstance().flush();
  377.                 pesan = "aproved to completed";
  378.                 logger.log("Transfer Request Document No:" + transferRequestId.getDocumentNo() + " - " + pesan + "\n");
  379.             }
  380.  
  381.             if (oberror.getType().equalsIgnoreCase("Error")){  
  382.                 OBDal.getInstance().refresh(transferRequestId);
  383.                 transferRequestId.setOezDocstatus(docstatus);
  384.                 transferRequestId.setOezDocaction(docaction);
  385.                 transferRequestId.setDescription(stringErorr);
  386.                 OBDal.getInstance().save(transferRequestId);
  387.                 OBDal.getInstance().flush();
  388.                 oberror.setType("Error");
  389.                 oberror.setTitle("Error");
  390.                 oberror.setMessage(pesan);
  391.                 bundle.setResult(oberror); 
  392.             }
  393.             logger.log("--------------------------------------------------\n");
  394.         }
  395.  
  396.         logger.log("--------------------------------------------------\n");
  397.         logger.log("background Process Approving Transfer Request [DONE]");
  398.     }
  399.  
  400.     private List<String> getMovementList (String clientId) {
  401.         List<String> output = new ArrayList<>();
  402.  
  403.         String sql= "select m_movement_id as movementId" +
  404.                 " from m_movement" +
  405.                 " where ad_client_id= ?" +
  406.                 " and em_oez_is_tranfer_request='Y'"+
  407.                 " and em_oez_docstatus='OEZ_RELEASE'"+
  408.                 " and processed='N' ";
  409.  
  410.         java.sql.Connection conn = OBDal.getInstance().getConnection();
  411.         try {
  412.             PreparedStatement ps = conn.prepareStatement(sql);
  413.             ps.setString(1, clientId );
  414.             ResultSet rs = ps.executeQuery();
  415.             while(rs.next())
  416.             {
  417.                 String movementId = rs.getString("movementId");
  418.                 output.add(movementId);
  419.             }
  420.             return output;
  421.         }
  422.         catch (Exception e) {
  423.             e.printStackTrace();
  424.             throw new OBException(e);
  425.         }
  426.  
  427.     }
  428.  
  429.     private OBError doExecuteProcedureCall(String recordID, String processID){
  430.         OBError oberror = new OBError();
  431.         oberror.setType("Success");
  432.         oberror.setTitle("Success");
  433.         OBContext.setAdminMode();
  434.         final Process process = OBDal.getInstance().get(Process.class, processID);
  435.         log4j.debug("execute procedure call "+process.getName());
  436.         final ProcessInstance pInstance = CallProcess.getInstance().call(process, recordID, null);
  437.         long result = pInstance.getResult();
  438.         if (result==0){
  439.             String errormessage = pInstance.getErrorMsg();
  440.             log4j.debug("error message "+errormessage);
  441.             oberror.setType("Error");
  442.             oberror.setTitle("Error");
  443.             oberror.setMessage(errormessage);
  444.         }
  445.         OBContext.restorePreviousMode();
  446.         return oberror;
  447.     }
  448.  
  449. }
  450. mentId);
  451.             }
  452.             return output;
  453.         }
  454.         catch (Exception e) {
  455.             e.printStackTrace();
  456.             throw new OBException(e);
  457.         }
  458.  
  459.     }
  460.  
  461.     private OBError doExecuteProcedureCall(String recordID, String processID){
  462.         OBError oberror = new OBError();
  463.         oberror.setType("Success");
  464.         oberror.setTitle("Success");
  465.         OBContext.setAdminMode();
  466.         final Process process = OBDal.getInstance().get(Process.class, processID);
  467.         log4j.debug("execute procedure call "+process.getName());
  468.         final ProcessInstance pInstance = CallProcess.getInstance().call(process, recordID, null);
  469.         long result = pInstance.getResult();
  470.         if (result==0){
  471.             String errormessage = pInstance.getErrorMsg();
  472.             log4j.debug("error message "+errormessage);
  473.             oberror.setType("Error");
  474.             oberror.setTitle("Error");
  475.             oberror.setMessage(errormessage);
  476.         }
  477.         OBContext.restorePreviousMode();
  478.         return oberror;
  479.     }
  480.  
  481. }
  482. ocedureCall(String recordID, String processID){
  483.         OBError oberror = new OBError();
  484.         oberror.setType("Success");
  485.         oberror.setTitle("Success");
  486.         OBContext.setAdminMode();
  487.         final Process process = OBDal.getInstance().get(Process.class, processID);
  488.         log4j.debug("execute procedure call "+process.getName());
  489.         final ProcessInstance pInstance = CallProcess.getInstance().call(process, recordID, null);
  490.         long result = pInstance.getResult();
  491.         if (result==0){
  492.             String errormessage = pInstance.getErrorMsg();
  493.             log4j.debug("error message "+errormessage);
  494.             oberror.setType("Error");
  495.             oberror.setTitle("Error");
  496.             oberror.setMessage(errormessage);
  497.         }
  498.         OBContext.restorePreviousMode();
  499.         return oberror;
  500.     }
  501.  
  502. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement