Attribute Set and Check Qty for Production before Complete
This commit is contained in:
parent
988e99f8bc
commit
b03d0abcb4
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 "";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue