Advertisement
tiko_pb

WMSGenerateMovementReject.java

Dec 11th, 2019
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.05 KB | None | 0 0
  1. package org.aoi.enh.allocation.process;
  2.  
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.Timestamp;
  6. import java.util.ArrayList;
  7. import java.util.HashSet;
  8. import java.util.Set;
  9. import java.util.logging.Level;
  10.  
  11. import org.aoi.mrp.model.X_kst_ImportSetting;
  12. import org.compiere.model.I_C_Order;
  13. import org.compiere.model.MMovement;
  14. import org.compiere.model.MMovementLine;
  15. import org.compiere.model.MProduct;
  16. import org.compiere.model.Query;
  17. import org.compiere.process.DocAction;
  18. import org.compiere.process.ProcessInfoParameter;
  19. import org.compiere.process.SvrProcess;
  20. import org.compiere.util.DB;
  21. import org.compiere.util.Env;
  22.  
  23. public class WMSGenerateMovementReject extends SvrProcess {
  24.  
  25.     /** Client to be imported to        */
  26.     private int             m_AD_Client_ID = 0;
  27.     /** Organization to be imported to      */
  28.     private int             m_AD_Org_ID = 0;
  29.     /** RecevingDate        */
  30.     private Timestamp       p_DateFrom;
  31.     private Timestamp       p_DateTo;
  32.     /** Document Type       */
  33.     private int             p_C_DocType_ID = 0;
  34.     /** Document Type   Return  */
  35.     private int             p_C_DocType_ID_Return = 0; 
  36.  
  37.    
  38.     @Override
  39.     protected void prepare() {
  40.         ProcessInfoParameter[] para = getParameter();
  41.         for (int i = 0; i < para.length; i++)
  42.         {
  43.             String name = para[i].getParameterName();
  44.             if (name.equals("AD_Client_ID"))
  45.                 m_AD_Client_ID = para[i].getParameterAsInt();
  46.             else if (name.equals("AD_Org_ID"))
  47.                 m_AD_Org_ID = para[i].getParameterAsInt();
  48.             else if (name.equals("MovementDate")){
  49.                 p_DateFrom = para[i].getParameterAsTimestamp();
  50.                 p_DateTo = para[i].getParameter_ToAsTimestamp();               
  51.             }
  52.             else if (name.equals("C_DocType_ID"))
  53.                 p_C_DocType_ID = para[i].getParameterAsInt();
  54.             else if (name.equals("C_DocType_ID_Return"))
  55.                 p_C_DocType_ID_Return = para[i].getParameterAsInt();
  56.             else
  57.                 log.log(Level.SEVERE, "Unknown Parameter: " + name);
  58.         }      
  59.     }
  60.  
  61.     @Override
  62.     protected String doIt() throws Exception {
  63.         String msg ="";    
  64.         String sqlSetting = " Name = 'WMS'";
  65.         X_kst_ImportSetting impSett = new Query(Env.getCtx(),X_kst_ImportSetting.Table_Name,sqlSetting,null)
  66.                                         .setOrderBy("kst_importsetting_id desc")
  67.                                         .setOnlyActiveRecords(true)
  68.                                         .first();
  69.        
  70.         String ip = impSett.getkst_IP();
  71.         String dbname = impSett.getkst_DatabaseName();
  72.         String port = impSett.getkst_Port();
  73.         String user = impSett.getkst_UserName();
  74.         String password = impSett.getkst_Password();
  75.        
  76.         String sqlReject = "Select * from wms_movereject_v";
  77.         if ( p_DateFrom != null || p_DateTo != null ){
  78.             sqlReject += " Where movement_date between ? and ? ";
  79.         }
  80.        
  81.         ArrayList<Integer> listMove = new ArrayList<Integer>();
  82.        
  83.         PreparedStatement pstmt = null;
  84.         ResultSet rs = null;
  85.         try{
  86.             pstmt = DB.prepareStatement(sqlReject.toString(), get_TrxName());
  87.             if ( p_DateFrom != null || p_DateTo != null ){
  88.                 pstmt.setTimestamp(1, p_DateFrom);
  89.                 pstmt.setTimestamp(2, p_DateTo);
  90.             }
  91.            
  92.             rs = pstmt.executeQuery();
  93.             MMovement move = null;
  94.             int idxline = 0;
  95.             while (rs.next()){
  96.                 int locatorFrom = rs.getInt("from_location_name");
  97.                 int locatorTo = rs.getInt("destination_name");
  98.                
  99.                 move = new Query(getCtx(), MMovement.Table_Name, " M_Movement_UU like ?  and docstatus not in ('VO','RE','CO' )", get_TrxName())
  100.                                 .setOnlyActiveRecords(true)
  101.                                 .setClient_ID()
  102.                                 .setParameters("%"+rs.getString("material_movement_id"))
  103.                                 .first();
  104.                
  105.                 // Create New Movement
  106.                 if ( move == null){
  107.                     idxline = 0;
  108.                     move  = new MMovement(getCtx(), 0, get_TrxName());
  109.                     move.set_ValueOfColumn("AD_Client_ID", m_AD_Client_ID);
  110.                     move.setAD_Org_ID(m_AD_Org_ID);
  111.                     // move.setDocumentNo(rs.getString("material_movement_id"));
  112.                     move.setC_DocType_ID(p_C_DocType_ID);
  113.                     move.setMovementDate(rs.getTimestamp("movement_date"));
  114.                     move.set_ValueOfColumn("POReference", rs.getString("po_buyer"));
  115.                     move.setDescription("Generated from WMS Movement - " + rs.getString("material_movement_id"));
  116.                     move.setProcessing(false);
  117.                     move.setProcessed(false);
  118.                     move.setIsInTransit(false);
  119.                     move.setIsApproved(false);
  120.                     move.setM_Movement_UU(rs.getString("material_movement_id"));
  121.                     /* Added by Roynaldo - 20180621 */
  122.                     //move.set_ValueOfColumn("kst_so_id", rs.getInt("c_order_id"));
  123.                     int kst_so_id = new Query(getCtx(), I_C_Order.Table_Name, "IsSOTrx='Y' and DocStatus in ('CO', 'CL') and POReference=?", get_TrxName())
  124.                         .setParameters(rs.getString("po_buyer"))
  125.                         .firstId();
  126.                     if ( kst_so_id <= 0) {
  127.                         msg = "PO Buyer Not Found in SO";
  128.                         return "PO Buyer Not Found in SO "+rs.getString("po_buyer");
  129.                     }
  130.                     else
  131.                         move.set_ValueOfColumn("kst_so_id", kst_so_id);                
  132.                     /* End Added by Roynaldo - 20180621 */                 
  133.                     if (move.save() ){
  134.                         listMove.add(move.get_ID());
  135.                         MMovementLine line = new MMovementLine(move);
  136.                        
  137.                         MProduct product = new Query(getCtx(), MProduct.Table_Name, " value = ? ", get_TrxName())
  138.                                                 .setClient_ID()
  139.                                                 .setOnlyActiveRecords(true)
  140.                                                 .setParameters(rs.getString("item_code"))
  141.                                                 .first();
  142.                         if (product == null )
  143.                             return "Product Value Not Found ";
  144.                        
  145.                         line.setM_Locator_ID(locatorFrom);
  146.                         line.setM_LocatorTo_ID(locatorTo);
  147.                         idxline = idxline + 10;
  148.                         line.setLine(idxline);
  149.                         line.setM_Product_ID(product.get_ID());
  150.                         int C_UOM_ID = new Query(getCtx(), "C_UOM", "AD_Client_ID=? AND AD_Org_ID=? AND X12DE355=?", get_TrxName())
  151.                             .setParameters(m_AD_Client_ID, m_AD_Org_ID, rs.getString("UOM"))
  152.                             .firstId();
  153.                         if (C_UOM_ID<0)
  154.                             C_UOM_ID = new Query(getCtx(), "C_UOM", "AD_Client_ID=? AND AD_Org_ID=? AND X12DE355=?", get_TrxName())
  155.                             .setParameters(m_AD_Client_ID, 0, rs.getString("UOM"))
  156.                             .firstId();
  157.                         if (C_UOM_ID<0)
  158.                             return "UOM Not Found - " + rs.getString("material_movement_line_id");
  159.                         line.setMovementQty(rs.getBigDecimal("qty"));
  160.                         line.set_ValueOfColumn("QtyOrdered", rs.getBigDecimal("qty"));
  161.                         line.set_ValueOfColumn("C_UOM_ID", C_UOM_ID);
  162.                         line.saveEx(get_TrxName());
  163.                        
  164.                     }
  165.                 }
  166.                 else {
  167.                     // Input Line Already Exists Header
  168.                     // listMove.add(move.get_ID());
  169.                     MMovementLine line = new MMovementLine(move);
  170. //                 
  171.                     MProduct product = new Query(getCtx(), MProduct.Table_Name, " value = ? ", get_TrxName())
  172.                                             .setClient_ID()
  173.                                             .setOnlyActiveRecords(true)
  174.                                             .setParameters(rs.getString("item_code"))
  175.                                             .first();
  176.                     if (product == null )
  177.                         return "Product Value Not Found ";
  178.                    
  179.                     line.setM_Locator_ID(locatorFrom);
  180.                     line.setM_LocatorTo_ID(locatorTo);
  181.                     idxline = idxline + 10;
  182.                     line.setLine(idxline);
  183.                     line.setM_Product_ID(product.get_ID());
  184.                     int C_UOM_ID = new Query(getCtx(), "C_UOM", "AD_Client_ID=? AND AD_Org_ID=? AND X12DE355=?", get_TrxName())
  185.                         .setParameters(m_AD_Client_ID, m_AD_Org_ID, rs.getString("UOM"))
  186.                         .firstId();
  187.                     if (C_UOM_ID<0)
  188.                         C_UOM_ID = new Query(getCtx(), "C_UOM", "AD_Client_ID=? AND AD_Org_ID=? AND X12DE355=?", get_TrxName())
  189.                         .setParameters(m_AD_Client_ID, 0, rs.getString("UOM"))
  190.                         .firstId();
  191.                     if (C_UOM_ID<0)
  192.                         return "UOM Not Found - " + rs.getString("material_movement_line_id");
  193.                     line.setMovementQty(rs.getBigDecimal("qty"));
  194.                     line.set_ValueOfColumn("QtyOrdered", rs.getBigDecimal("qty"));
  195.                     line.set_ValueOfColumn("C_UOM_ID", C_UOM_ID);
  196.                     line.saveEx(get_TrxName());
  197.                 }
  198.             }
  199.            
  200.             Set<Integer> hasMap = new HashSet<>();
  201.             hasMap.addAll(listMove);
  202.             hasMap.clear();
  203.             listMove.addAll(hasMap);
  204.            
  205.             for (Integer listMovement : listMove) {        
  206.                 MMovement movement = new MMovement(getCtx(), listMovement, get_TrxName());
  207.                 // Validate Is Integration Flag WMS
  208.                 String wms_id = movement.getDescription().substring(movement.getDescription().length() -36, movement.getDescription().length() );
  209.                 //Update DB Link Is Integration
  210.                 int vcount  = DB.executeUpdate(" select * "
  211.                         + " FROM dblink('"
  212.                         + "dbname=" + dbname +" port=" + port +" host=" + ip +" user=" + user +"  password=" + password +"' "
  213.                         + ",'Update material_movements set is_integrate = true, integration_date = now()  "
  214.                         + "WHERE id =''" + wms_id  +"''' ) tt(updated text);", true, get_TrxName());
  215.                 System.out.println("WMS #"+wms_id+" Updated IsIntegration...");
  216.                            
  217.             }
  218.            
  219.             for (Integer listMovement : listMove) {
  220.                 try {
  221.                     MMovement movement = new MMovement(getCtx(), listMovement, get_TrxName());
  222.                     if ( !movement.getDocStatus().equals("CO")){
  223.                         movement.processIt(DocAction.ACTION_Complete);
  224.                         movement.saveEx(get_TrxName());
  225.                    
  226.                         msg = msg + "\n" + movement.getDocumentNo();
  227.                     }                      
  228.                 } catch (Exception e) {
  229.                     System.out.println("Error Complete Movement.."+e.getMessage());
  230.                 }                  
  231.             }
  232.            
  233.         }catch (Exception e){
  234.             msg = e.toString();
  235.             return msg;
  236.         }finally{
  237.             DB.close(rs, pstmt);
  238.             pstmt = null;
  239.             rs = null;
  240.         }
  241.        
  242.         msg = "Process Completed for Document No : \n " + msg;
  243.         return msg;
  244.     }
  245.  
  246. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement