Attribute Set and Check Qty for Production before Complete

This commit is contained in:
hodianto 2018-09-02 12:17:36 +07:00
parent 988e99f8bc
commit b03d0abcb4
3 changed files with 47 additions and 0 deletions

View File

@ -5,6 +5,7 @@ import java.math.BigDecimal;
import java.sql.ResultSet;
import java.util.Properties;
import org.adempiere.exceptions.AdempiereException;
import org.compiere.process.DocAction;
import org.compiere.process.DocumentEngine;
@ -46,6 +47,9 @@ public class MID_PPO extends X_ps_ppo implements DocAction{
@Override
public String prepareIt() {
setC_DocType_ID(getC_DocTypeTarget_ID());
if(getQtyOrdered().signum()==0)
throw new AdempiereException("Qty Ordered = 0");
return DocAction.STATUS_InProgress;
}

View File

@ -4,6 +4,7 @@ import org.adempiere.base.event.AbstractEventHandler;
import org.adempiere.base.event.IEventTopics;
import org.adempiere.exceptions.AdempiereException;
import org.compiere.model.MOrder;
import org.compiere.model.MProduction;
import org.compiere.model.MProductionLine;
import org.compiere.model.PO;
import org.compiere.util.CLogger;
@ -11,6 +12,7 @@ import org.osgi.service.event.Event;
import edii.midsuit.validator.EDI_OrderValidator;
import edii.midsuit.validator.EDI_ProductionLineValidator;
import edii.midsuit.validator.EDI_ProductionValidator;
public class MID_ValidatorFactory extends AbstractEventHandler {
public CLogger log = CLogger.getCLogger(MID_ValidatorFactory.class);
@ -23,6 +25,8 @@ public class MID_ValidatorFactory extends AbstractEventHandler {
msg = EDI_OrderValidator.executeEvent(event, getPO(event));
if (getPO(event).get_TableName().equals(MProductionLine.Table_Name))
msg = EDI_ProductionLineValidator.executeEvent(event, getPO(event));
if (getPO(event).get_TableName().equals(MProduction.Table_Name))
msg = EDI_ProductionValidator.executeEvent(event, getPO(event));
logEvent(event, getPO(event), msg);
}
@ -37,6 +41,9 @@ public class MID_ValidatorFactory extends AbstractEventHandler {
// registerTableEvent(IEventTopics.DOC_BEFORE_COMPLETE, Table_Name);
registerTableEvent(IEventTopics.DOC_BEFORE_COMPLETE, MOrder.Table_Name);
registerTableEvent(IEventTopics.PO_BEFORE_CHANGE, MOrder.Table_Name);
registerTableEvent(IEventTopics.PO_BEFORE_NEW, MProduction.Table_Name);
registerTableEvent(IEventTopics.DOC_BEFORE_COMPLETE, MProduction.Table_Name);
registerTableEvent(IEventTopics.PO_BEFORE_NEW,MProductionLine.Table_Name);
}
}

View File

@ -0,0 +1,36 @@
package edii.midsuit.validator;
import org.adempiere.base.event.IEventTopics;
import org.adempiere.exceptions.AdempiereException;
import org.compiere.model.MProduction;
import org.compiere.model.MProductionLine;
import org.compiere.model.PO;
import org.osgi.service.event.Event;
public class EDI_ProductionValidator {
public static String executeEvent(Event e, PO po) {
MProduction pl = (MProduction) po;
if (e.getTopic().equals(IEventTopics.DOC_BEFORE_COMPLETE))
return beforeComplete(pl);
else if (e.getTopic().equals(IEventTopics.PO_BEFORE_NEW))
return beforeNew(pl);
return "";
}
private static String beforeNew(MProduction p) {
if(p.getProductionQty().signum()==0)
throw new AdempiereException("Qty Production Wajib Lebih Besar dari 0 !");
return "";
}
private static String beforeComplete(MProduction p) {
for(MProductionLine line : p.getLines()) {
if(line.getMovementQty().signum()==0)
throw new AdempiereException("Qty "+line.getM_Product().getName()
+"Wajib Lebih Besar dari 0 !");
}
return "";
}
}