Advertisement
tko_pb

RequisitionActionHandler

Jul 2nd, 2018
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.87 KB | None | 0 0
  1. package org.wirabumi.gen.oez.porting;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import org.hibernate.criterion.Restrictions;
  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.OBCriteria;
  11. import org.openbravo.dal.service.OBDal;
  12. import org.openbravo.model.ad.datamodel.Table;
  13. import org.openbravo.model.ad.ui.Tab;
  14. import org.openbravo.model.ad.utility.Attachment;
  15. import org.openbravo.model.common.plm.ProductCategory;
  16. import org.openbravo.model.materialmgmt.transaction.ShipmentInOut;
  17. import org.openbravo.model.procurement.Requisition;
  18. import org.openbravo.model.procurement.RequisitionLine;
  19. import org.wirabumi.gen.oez.event.DocumentRoutingHandlerAction;
  20.  
  21. public class RequisitionActionHandler extends DocumentRoutingHandlerAction {
  22.     private final String reactiveStatus="RE";
  23.     private final String completeStatus="CO";
  24.     private final String draftStatus="DR";
  25.     private final String closedStatus="CL";
  26.     private final String voidStatus="VO";
  27.     private final String processID="1004400003";
  28.  
  29.     @Override
  30.     public void doRouting(String adWindowId, String adTabId,
  31.             String doc_status_to, VariablesSecureApp vars, List<String> recordId) {
  32.         if (doc_status_to.equalsIgnoreCase(voidStatus))
  33.             throw new OBException("@ActionNotAllowedHere@"); //requisition tidak boleh di void
  34.        
  35.         for (String requisitionID : recordId){
  36.            
  37.             /*tiko [langkah-langkah]
  38.        
  39.               1. jika tabel null maka
  40.               2. seleksi list  untuk ambil id requisition,  dan line dari requisition
  41.               3. seleksi apak line memiliki product category search key "INVESTASI" atau tidak?
  42.               4. jika bernilai investasi dan tidak memiliki attachments maka OBException
  43.              */
  44.             Tab tab = OBDal.getInstance().get(Tab.class, adTabId);
  45.             Table table = tab.getTable();
  46.  
  47.             if (table!=null) {
  48.                 String tableid = table.getId();
  49.                 OBCriteria<Requisition> resLineCriteria= OBDal.getInstance().createCriteria(Requisition.class);
  50.                 OBCriteria<Attachment> attachCriteria = OBDal.getInstance().createCriteria(Attachment.class);              
  51.                 attachCriteria.add(Restrictions.eq(Attachment.PROPERTY_TABLE, tableid));
  52.                 attachCriteria.add(Restrictions.eq(Attachment.PROPERTY_RECORD, requisitionID));
  53.                
  54.                 OBCriteria<ProductCategory> pcCriteria = OBDal.getInstance().createCriteria(ProductCategory.class);
  55.                
  56.                 List<ProductCategory> pcList = pcCriteria.list();
  57.                 List<Requisition> resLineList = resLineCriteria.list();
  58.                
  59.                 List<RequisitionLine> RiList = new ArrayList<RequisitionLine>();
  60.                 for (Requisition re :resLineList )
  61.                 {
  62.                     RiList.add((RequisitionLine) re.getProcurementRequisitionLineList());
  63.                 }
  64.                
  65.                 List<Attachment> attachList = attachCriteria.list();
  66.                
  67.                 for (RequisitionLine re : RiList) {
  68.                     for (ProductCategory pc : pcList) {
  69.                         if ((attachList.size()==0) && (pc.getSearchKey() == "INVESTASI"))
  70.                             throw new OBException("requisition tidak memiliki atatchments");
  71.                     }
  72.                 }
  73.             } /*tiko*/
  74.                    
  75.             if (doc_status_to.equalsIgnoreCase(completeStatus)){
  76.                 Requisition requisition = OBDal.getInstance().get(Requisition.class, requisitionID);
  77.                 //cek apakah dari CL atau VO, jika ya, maka exception
  78.                 if (requisition.getDocumentStatus().equalsIgnoreCase(closedStatus)||
  79.                         requisition.getDocumentStatus().equalsIgnoreCase(voidStatus))
  80.                     throw new OBException("@ActionNotAllowedHere@");
  81.                
  82.                 //ubdah dulu docstatus menjadi DR, baru di complete
  83.                 requisition.setDocumentStatus(draftStatus);
  84.                 requisition.setDocumentAction(doc_status_to);
  85.                 OBDal.getInstance().save(requisition);
  86.                 OBDal.getInstance().flush();
  87.                
  88.             } else if (doc_status_to.equalsIgnoreCase(reactiveStatus)){
  89.                 //cek apakah doc status adalah CO, jika tidak maka exception
  90.                 Requisition requisition = OBDal.getInstance().get(Requisition.class, requisitionID);
  91.                 if (!requisition.getDocumentStatus().equalsIgnoreCase(completeStatus))
  92.                     throw new OBException("@ActionNotAllowedHere@");
  93.                 requisition.setDocumentAction(doc_status_to);
  94.                 OBDal.getInstance().save(requisition);
  95.                 OBDal.getInstance().flush();
  96.                
  97.             }
  98.             doExecuteProcedureCall(requisitionID, processID);
  99.            
  100.         }
  101.        
  102.  
  103.     }
  104.  
  105.     @Override
  106.     public String getCoDocumentNo(String recordID, Tab tab) {
  107.         // TODO sementara null dulu
  108.         return null;
  109.     }
  110.    
  111.     @Override
  112.     public Boolean updateDocumentStatus(Entity entity,  List<String> RecordId, String document_status_to,String column){
  113.         if (document_status_to.equalsIgnoreCase(completeStatus)||
  114.                 document_status_to.equalsIgnoreCase(closedStatus))
  115.             return true;
  116.         else
  117.             return super.updateDocumentStatus(entity, RecordId, document_status_to, column);
  118.        
  119.     }
  120.  
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement