Advertisement
tko_pb

InoutActionHandler

Sep 18th, 2018
351
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.13 KB | None | 0 0
  1. package org.wirabumi.gen.oez.porting;
  2.  
  3. import java.math.BigDecimal;
  4. import java.sql.SQLException;
  5. import java.util.List;
  6.  
  7. import org.openbravo.base.exception.OBException;
  8. import org.openbravo.base.model.Entity;
  9. import org.openbravo.base.secureApp.VariablesSecureApp;
  10. import org.openbravo.dal.service.OBDal;
  11. import org.openbravo.erpCommon.utility.OBError;
  12. import org.openbravo.model.ad.ui.Tab;
  13. import org.openbravo.model.common.order.Order;
  14. import org.openbravo.model.common.order.OrderLine;
  15. import org.openbravo.model.materialmgmt.transaction.ShipmentInOut;
  16. import org.openbravo.model.materialmgmt.transaction.ShipmentInOutLine;
  17. import org.wirabumi.gen.oez.event.DocumentRoutingHandlerAction;
  18.  
  19. public class InoutActionHandler extends DocumentRoutingHandlerAction {
  20.     private final String reactiveStatus="RE";
  21.     private final String completeStatus="CO";
  22.     private final String draftStatus="DR";
  23.     private final String closedStatus="CL";
  24.     private final String voidStatus="VO";
  25.     private final String inoutProcessID="109";
  26.  
  27.     @Override
  28.     public void doRouting(String adWindowId, String adTabId,
  29.             String doc_status_to, VariablesSecureApp vars, List<String> recordId) {
  30.         if (doc_status_to.equalsIgnoreCase(reactiveStatus))
  31.             throw new OBException("@ActionNotAllowedHere@"); //shipment inout tidak boleh di reactive
  32.        
  33.         for (String inoutID : recordId){
  34.             ShipmentInOut inout = OBDal.getInstance().get(ShipmentInOut.class, inoutID);
  35.             String docstatus=inout.getDocumentStatus();
  36.             String docaction=inout.getDocumentAction();
  37.            
  38.             if (doc_status_to.equalsIgnoreCase(completeStatus)){
  39.                
  40.                 //check jika GR quantity melebihi Pending Qr Quantity
  41.                 boolean isProductMoreThanPendingGRQuantity = true;
  42.            
  43.                 ShipmentInOutLine goodRecipLinetId = OBDal.getInstance().get(ShipmentInOutLine.class, inoutID);
  44.                 BigDecimal movementQuantity = goodRecipLinetId.getMovementQuantity();
  45.                 BigDecimal movementQuantity2 = goodRecipLinetId.getOrderQuantity();
  46.                
  47.                
  48.                 if(isProductMoreThanPendingGRQuantity) {
  49.                    
  50.                 }
  51.                
  52.                 //cek apakah dari CL atau VO, jika ya, maka exception
  53.                 if (inout.getDocumentStatus().equalsIgnoreCase(closedStatus)||
  54.                         inout.getDocumentStatus().equalsIgnoreCase(voidStatus))
  55.                     throw new OBException("@ActionNotAllowedHere@");
  56.                
  57.                 //ubdah dulu docstatus menjadi DR, baru di complete
  58.                 inout.setDocumentStatus(draftStatus);
  59.                 inout.setDocumentAction(doc_status_to);
  60.                 OBDal.getInstance().save(inout);
  61.                 try {
  62.                     OBDal.getInstance().getConnection().commit();
  63.                 } catch (SQLException e) {
  64.                     e.printStackTrace();
  65.                     throw new OBException(e.getMessage());
  66.                 }
  67.                
  68.             } else if (doc_status_to.equalsIgnoreCase(voidStatus)||
  69.                     doc_status_to.equalsIgnoreCase(closedStatus)){
  70.                 //cek apakah doc status adalah CO, jika tidak maka exception
  71.                 if (!inout.getDocumentStatus().equalsIgnoreCase(completeStatus))
  72.                     throw new OBException("@ActionNotAllowedHere@");
  73.                 inout.setDocumentAction(doc_status_to);
  74.                 if (doc_status_to.equalsIgnoreCase(voidStatus))
  75.                     inout.setDocumentAction("RC"); //void dalam document routing adalah VO, tapi dalam invoice adalah RC
  76.                 OBDal.getInstance().save(inout);
  77.                 try {
  78.                     OBDal.getInstance().getConnection().commit();
  79.                 } catch (SQLException e) {
  80.                     e.printStackTrace();
  81.                     throw new OBException(e.getMessage());
  82.                 }
  83.                
  84.             }
  85.             try{
  86.                 OBError oberror = doExecuteProcedureCall(inoutID, inoutProcessID);
  87.                 if (oberror.getType().equals("Error"))
  88.                     throw new OBException(oberror.getMessage());
  89.             }
  90.             catch (OBException e){
  91.                 //exception happen, rollback doc status
  92.                 inout.setDocumentStatus(docstatus);
  93.                 inout.setDocumentAction(docaction);
  94.                 OBDal.getInstance().save(inout);
  95.                 try {
  96.                     OBDal.getInstance().getConnection().commit();
  97.                 } catch (SQLException e2) {
  98.                     e.printStackTrace();
  99.                     throw new OBException(e.getMessage());
  100.                 }
  101.                
  102.                 //throw chain exception
  103.                 e.printStackTrace();
  104.                 throw new OBException(e.getMessage());
  105.             }
  106.            
  107.             OBDal.getInstance().refresh(inout);
  108.             docstatus=inout.getDocumentStatus();
  109.             boolean processed = inout.isProcessed();
  110.             if (processed && !docstatus.equalsIgnoreCase(completeStatus) && doc_status_to.equalsIgnoreCase(completeStatus)){
  111.                 //terproses tapi doc status masih draft
  112.                 //maka ubah docstatus menjadi complete
  113.                 inout.setDocumentStatus(doc_status_to);
  114.                 OBDal.getInstance().save(inout);
  115.                 try {
  116.                     OBDal.getInstance().getConnection().commit();
  117.                 } catch (SQLException e) {
  118.                     e.printStackTrace();
  119.                     throw new OBException(e.getMessage());
  120.                 }
  121.             }
  122.            
  123.         }
  124.  
  125.     }
  126.  
  127.     @Override
  128.     public String getCoDocumentNo(String recordID, Tab tab) {
  129.         // TODO semengtara null dulu
  130.         return null;
  131.     }
  132.    
  133.     @Override
  134.     public Boolean updateDocumentStatus(Entity entity,  List<String> RecordId, String document_status_to,String column){
  135.         if (document_status_to.equalsIgnoreCase(completeStatus)||
  136.                 document_status_to.equalsIgnoreCase(closedStatus)||
  137.                 document_status_to.equalsIgnoreCase(voidStatus))
  138.             return true;
  139.         else
  140.             return super.updateDocumentStatus(entity, RecordId, document_status_to, column);
  141.        
  142.     }
  143.  
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement