Setup for implement product with Manufacturing process

This commit is contained in:
vpj-cd 2008-08-04 17:13:59 +00:00
parent dbe8117a22
commit 828d67431e
2 changed files with 149 additions and 42 deletions

View File

@ -16,11 +16,16 @@
package org.eevolution.model; package org.eevolution.model;
import java.math.*; import java.math.*;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.*; import java.util.*;
import org.compiere.model.*; import org.compiere.model.*;
import org.compiere.util.*; import org.compiere.util.*;
import org.compiere.wf.MWFNode;
import org.compiere.wf.MWFNodeNext;
import org.compiere.wf.MWorkflow;
/** /**
@ -71,6 +76,9 @@ public class LiberoValidator implements ModelValidator
engine.addModelChange(MDDOrderLine.Table_Name, this); engine.addModelChange(MDDOrderLine.Table_Name, this);
engine.addModelChange(MPPOrder.Table_Name, this); engine.addModelChange(MPPOrder.Table_Name, this);
engine.addModelChange(MPPOrderBOMLine.Table_Name, this); engine.addModelChange(MPPOrderBOMLine.Table_Name, this);
//engine.addModelChange(MProject.Table_Name, this);
//engine.addModelChange(MProjectPhase.Table_Name, this);
//engine.addModelChange(MProjectTask.Table_Name, this);
} // initialize } // initialize
/** /**
@ -158,6 +166,93 @@ public class LiberoValidator implements ModelValidator
log.info(po.toString()); log.info(po.toString());
} }
log.info(po.get_TableName() + " Type: "+type);
if (po.get_TableName().equals(MProjectPhase.Table_Name) && ( type == TYPE_AFTER_NEW ))
{
MProjectPhase pf = (MProjectPhase)po;
X_C_Phase phase = new X_C_Phase(pf.getCtx(), pf.getC_Phase_ID(),pf.get_TrxName());
int PP_Product_BOM_ID=(Integer)phase.get_Value("PP_Product_BOM_ID");
int AD_Workflow_ID=(Integer)phase.get_Value("AD_Workflow_ID");
MProject project = new MProject(po.getCtx(), pf.getC_Project_ID(), pf.get_TrxName());
/*int PP_Product_BOM_ID=(Integer)pf.get_Value("PP_Product_BOM_ID");
int AD_Workflow_ID=(Integer)pf.get_Value("AD_Workflow_ID");*/
if(PP_Product_BOM_ID > 0 & AD_Workflow_ID > 0)
{
MPPOrder order = new MPPOrder(project,PP_Product_BOM_ID, AD_Workflow_ID );
order.save();
Query query = MTable.get(order.getCtx(),MPPOrderBOMLine.Table_ID).createQuery("PP_Order_ID=?", order.get_TrxName());
query.setParameters(new Object[]{order.getPP_Order_ID()});
List<MPPOrderBOMLine> bomline = query.list();
for (MPPOrderBOMLine line : bomline)
{
line.set_CustomColumn("C_ProjectPhase_ID", pf.getC_ProjectPhase_ID());
line.save();
}
query = MTable.get(order.getCtx(),MPPOrderNode.Table_ID).createQuery("PP_Order_ID=?", order.get_TrxName());
query.setParameters(new Object[]{order.getPP_Order_ID()});
List<MPPOrderNode> nodes = query.list();
for (MPPOrderNode activity : nodes)
{
activity.set_CustomColumn("C_ProjectPhase_ID", pf.getC_ProjectPhase_ID());
activity.save();
}
}
log.info(po.toString());
}
if (po.get_TableName().equals(MProjectTask.Table_Name) && ( type == TYPE_AFTER_NEW ))
{
MProjectTask pt = (MProjectTask)po;
X_C_Task task = new X_C_Task(pt.getCtx(), pt.getC_Task_ID(),pt.get_TrxName());
int PP_Product_BOM_ID=(Integer)task.get_Value("PP_Product_BOM_ID");
int AD_Workflow_ID=(Integer)task.get_Value("AD_Workflow_ID");
MProjectPhase pf = new MProjectPhase(po.getCtx(), pt.getC_ProjectPhase_ID(), pt.get_TrxName());
MProject project = new MProject(po.getCtx(), pf.getC_Project_ID(), pf.get_TrxName());
if(PP_Product_BOM_ID > 0 & AD_Workflow_ID > 0)
{
MPPOrder order = new MPPOrder(project,PP_Product_BOM_ID, AD_Workflow_ID );
order.save();
Query query = MTable.get(order.getCtx(),MPPOrderBOMLine.Table_ID).createQuery("PP_Order_ID=?", order.get_TrxName());
query.setParameters(new Object[]{order.getPP_Order_ID()});
List<MPPOrderBOMLine> list = query.list();
for (MPPOrderBOMLine line : list)
{
line.set_CustomColumn("C_ProjectPhase_ID", pf.getC_ProjectPhase_ID());
line.set_CustomColumn("C_ProjectTask_ID", pt.getC_ProjectTask_ID());
line.save();
}
query = MTable.get(order.getCtx(),MPPOrderNode.Table_ID).createQuery("PP_Order_ID=?", order.get_TrxName());
query.setParameters(new Object[]{order.getPP_Order_ID()});
List<MPPOrderNode> nodes = query.list();
for (MPPOrderNode activity : nodes)
{
activity.set_CustomColumn("C_ProjectPhase_ID", pf.getC_ProjectPhase_ID());
activity.set_CustomColumn("C_ProjectTask_ID", pt.getC_ProjectTask_ID());
activity.save();
}
}
log.info(po.toString());
}
return null; return null;
} // modelChange } // modelChange

View File

@ -29,7 +29,9 @@ import org.compiere.model.MCost;
import org.compiere.model.MDocType; import org.compiere.model.MDocType;
import org.compiere.model.MProduct; import org.compiere.model.MProduct;
import org.compiere.model.MProject; import org.compiere.model.MProject;
import org.compiere.model.MResource;
import org.compiere.model.MStorage; import org.compiere.model.MStorage;
import org.compiere.model.MTable;
import org.compiere.model.MWarehouse; import org.compiere.model.MWarehouse;
import org.compiere.model.ModelValidationEngine; import org.compiere.model.ModelValidationEngine;
import org.compiere.model.ModelValidator; import org.compiere.model.ModelValidator;
@ -121,18 +123,25 @@ public class MPPOrder extends X_PP_Order implements DocAction {
super(ctx, PP_Order_ID, trxName); super(ctx, PP_Order_ID, trxName);
// New // New
if (PP_Order_ID == 0) { if (PP_Order_ID == 0) {
setDocStatus(DOCSTATUS_Drafted);
setDocAction(DOCACTION_Prepare);
setC_DocType_ID(0);
set_ValueNoCheck("DocumentNo", null);
setIsSelected(false); setIsSelected(false);
setIsSOTrx(false); setIsSOTrx(false);
setIsApproved(false); setIsApproved(false);
setIsPrinted(false); setIsPrinted(false);
setProcessed(false); setProcessed(false);
setProcessing(false); setProcessing(false);
setC_DocType_ID(0);
setPosted(false); setPosted(false);
MDocType[] doc = MDocType.getOfDocBaseType(getCtx(), MDocType.DOCBASETYPE_ManufacturingOrder);
if(doc == null)
throw new IllegalArgumentException ("C_DocType_ID is mandatory.");
else
{
setC_DocType_ID(doc[0].getC_DocType_ID());
setC_DocTypeTarget_ID(doc[0].getC_DocType_ID());
}
//set_ValueNoCheck("DocumentNo", null);
setDocStatus(DOCSTATUS_Drafted);
setDocAction(DOCACTION_Prepare);
} }
} // PP_Order } // PP_Order
@ -141,41 +150,46 @@ public class MPPOrder extends X_PP_Order implements DocAction {
* @param project Project to create Order from * @param project Project to create Order from
* @param DocSubTypeSO if SO DocType Target (default DocSubTypeSO_OnCredit) * @param DocSubTypeSO if SO DocType Target (default DocSubTypeSO_OnCredit)
*/ */
public MPPOrder(MProject project, boolean IsSOTrx, String DocSubTypeSO) { public MPPOrder(MProject project, int PP_Product_BOM_ID,int AD_Workflow_ID) {
this(project.getCtx(), 0, "PP_Order"); this(project.getCtx(), 0, project.get_TrxName());
setAD_Client_ID(project.getAD_Client_ID()); setAD_Client_ID(project.getAD_Client_ID());
setAD_Org_ID(project.getAD_Org_ID()); setAD_Org_ID(project.getAD_Org_ID());
setC_Campaign_ID(project.getC_Campaign_ID()); setC_Campaign_ID(project.getC_Campaign_ID());
//setC_DocTypeTarget_ID(1000005);
//setSalesRep_ID(project.getSalesRep_ID());
//
setC_Project_ID(project.getC_Project_ID()); setC_Project_ID(project.getC_Project_ID());
setDescription(project.getName()); setDescription(project.getName());
setLine(10);
setPriorityRule(MPPOrder.PRIORITYRULE_Medium);
if (project.getDateContract() == null)
throw new IllegalStateException("Date Contract is mandatory for Manufacturing Order.");
if (project.getDateFinish() == null)
throw new IllegalStateException("Date Finish is mandatory for Manufacturing Order.");
Timestamp ts = project.getDateContract(); Timestamp ts = project.getDateContract();
Timestamp df= project.getDateContract();
if (ts != null) setDateOrdered(ts); if (ts != null) setDateOrdered(ts);
if (ts != null) this.setDateStartSchedule(ts);
ts = project.getDateFinish(); ts = project.getDateFinish();
if (ts != null) setDatePromised(ts); if (df != null) setDatePromised(df);
// setM_Warehouse_ID(project.getM_Warehouse_ID());
//setC_BPartner_ID(project.getC_BPartner_ID()); setPP_Product_BOM_ID(PP_Product_BOM_ID);
//setC_BPartner_Location_ID(project.getC_BPartner_Location_ID()); setAD_Workflow_ID(AD_Workflow_ID);
//setAD_User_ID(project.getAD_User_ID()); setQtyEntered(Env.ONE);
// setQtyOrdered(Env.ONE);
// 4Layers - Bug# 101 MPPProductBOM bom = new MPPProductBOM(project.getCtx(), PP_Product_BOM_ID, project.get_TrxName());
// Just commented the original code below MProduct product = MProduct.get(project.getCtx(), bom.getM_Product_ID());
// setM_Warehouse_ID(project.getM_Warehouse_ID()); setC_UOM_ID(product.getC_UOM_ID());
// 4Layers - Bug# 101 - end
/*setM_PriceList_ID(project.getM_PriceList_ID()); setM_Product_ID(bom.getM_Product_ID());
setC_PaymentTerm_ID(project.getC_PaymentTerm_ID());
//*/ String where = MResource.COLUMNNAME_IsManufacturingResource +" = 'Y' AND "+
setIsSOTrx(IsSOTrx); MResource.COLUMNNAME_ManufacturingResourceType +" = '" + MResource.MANUFACTURINGRESOURCETYPE_Plant + "' AND " +
/*if (IsSOTrx) { MResource.COLUMNNAME_M_Warehouse_ID + " = " + project.getM_Warehouse_ID();
if (DocSubTypeSO == null || DocSubTypeSO.length() == 0) MResource resoruce = (MResource) MTable.get(project.getCtx(), MResource.Table_ID).getPO( where , project.get_TrxName());
setC_DocTypeTarget_ID(DocSubTypeSO_OnCredit); if (resoruce == null)
else throw new IllegalStateException("Resource is mandatory.");
setC_DocTypeTarget_ID(DocSubTypeSO); setS_Resource_ID(resoruce.getS_Resource_ID());
}
else]*/
//setC_DocTypeTarget_ID();
} // MOrder } // MOrder
/** /**
@ -489,7 +503,7 @@ public class MPPOrder extends X_PP_Order implements DocAction {
} }
log.fine("afterSave - MPPOrder Query ok"); log.fine("afterSave - MPPOrder Query ok");
setC_DocType_ID(0); //setC_DocType_ID(0);
// Create BOM Head // Create BOM Head
MPPProductBOM PP_Product_BOM = new MPPProductBOM(getCtx(), getPP_Product_BOM_ID(), get_TrxName()); MPPProductBOM PP_Product_BOM = new MPPProductBOM(getCtx(), getPP_Product_BOM_ID(), get_TrxName());
@ -521,7 +535,7 @@ public class MPPOrder extends X_PP_Order implements DocAction {
PP_Order_BOM.setValue(PP_Product_BOM.getValue()); PP_Order_BOM.setValue(PP_Product_BOM.getValue());
PP_Order_BOM.setDocumentNo(PP_Product_BOM.getDocumentNo()); PP_Order_BOM.setDocumentNo(PP_Product_BOM.getDocumentNo());
PP_Order_BOM.setC_UOM_ID(PP_Product_BOM.getC_UOM_ID()); PP_Order_BOM.setC_UOM_ID(PP_Product_BOM.getC_UOM_ID());
PP_Order_BOM.save(get_TrxName()); PP_Order_BOM.save();
MPPProductBOMLine[] PP_Product_BOMline = PP_Product_BOM.getLines(); MPPProductBOMLine[] PP_Product_BOMline = PP_Product_BOM.getLines();
@ -592,7 +606,7 @@ public class MPPOrder extends X_PP_Order implements DocAction {
BigDecimal.ROUND_HALF_UP)); BigDecimal.ROUND_HALF_UP));
} }
PP_Order_BOMLine.save(get_TrxName()); PP_Order_BOMLine.save();
} // end if From / To component } // end if From / To component
@ -652,7 +666,7 @@ public class MPPOrder extends X_PP_Order implements DocAction {
PP_Order_Workflow.setDescription(AD_Workflow.getDescription()); PP_Order_Workflow.setDescription(AD_Workflow.getDescription());
PP_Order_Workflow.setValidFrom(AD_Workflow.getValidFrom()); PP_Order_Workflow.setValidFrom(AD_Workflow.getValidFrom());
PP_Order_Workflow.setValidTo(AD_Workflow.getValidTo()); PP_Order_Workflow.setValidTo(AD_Workflow.getValidTo());
PP_Order_Workflow.save(get_TrxName()); PP_Order_Workflow.save();
MWFNode[] AD_WF_Node = AD_Workflow.getNodes(false, getAD_Client_ID()); MWFNode[] AD_WF_Node = AD_Workflow.getNodes(false, getAD_Client_ID());
@ -695,7 +709,6 @@ public class MPPOrder extends X_PP_Order implements DocAction {
PP_Order_Node.setMovingTime(AD_WF_Node[g].getMovingTime()); PP_Order_Node.setMovingTime(AD_WF_Node[g].getMovingTime());
PP_Order_Node.setWaitingTime(AD_WF_Node[g].getWaitingTime()); PP_Order_Node.setWaitingTime(AD_WF_Node[g].getWaitingTime());
PP_Order_Node.setWorkingTime(AD_WF_Node[g].getWorkingTime()); PP_Order_Node.setWorkingTime(AD_WF_Node[g].getWorkingTime());
;
PP_Order_Node.setQueuingTime(AD_WF_Node[g].getQueuingTime()); PP_Order_Node.setQueuingTime(AD_WF_Node[g].getQueuingTime());
PP_Order_Node.setXPosition(AD_WF_Node[g].getXPosition()); PP_Order_Node.setXPosition(AD_WF_Node[g].getXPosition());
PP_Order_Node.setYPosition(AD_WF_Node[g].getYPosition()); PP_Order_Node.setYPosition(AD_WF_Node[g].getYPosition());
@ -712,8 +725,7 @@ public class MPPOrder extends X_PP_Order implements DocAction {
PP_Order_Node.setFinishMode(AD_WF_Node[g].getFinishMode()); PP_Order_Node.setFinishMode(AD_WF_Node[g].getFinishMode());
PP_Order_Node.setValidFrom(AD_WF_Node[g].getValidFrom()); PP_Order_Node.setValidFrom(AD_WF_Node[g].getValidFrom());
PP_Order_Node.setValidTo(AD_WF_Node[g].getValidTo()); PP_Order_Node.setValidTo(AD_WF_Node[g].getValidTo());
PP_Order_Node.save();
PP_Order_Node.save(get_TrxName());
MWFNodeNext[] AD_WF_NodeNext = AD_WF_Node[g].getTransitions(getAD_Client_ID()); MWFNodeNext[] AD_WF_NodeNext = AD_WF_Node[g].getTransitions(getAD_Client_ID());
log.log(Level.INFO, "AD_WF_NodeNext" + AD_WF_NodeNext.length); log.log(Level.INFO, "AD_WF_NodeNext" + AD_WF_NodeNext.length);
@ -730,7 +742,7 @@ public class MPPOrder extends X_PP_Order implements DocAction {
PP_Order_NodeNext.setPP_Order_ID(getPP_Order_ID()); PP_Order_NodeNext.setPP_Order_ID(getPP_Order_ID());
PP_Order_NodeNext.setSeqNo(AD_WF_NodeNext[n].getSeqNo()); PP_Order_NodeNext.setSeqNo(AD_WF_NodeNext[n].getSeqNo());
PP_Order_NodeNext.setTransitionCode(AD_WF_NodeNext[n].getTransitionCode()); PP_Order_NodeNext.setTransitionCode(AD_WF_NodeNext[n].getTransitionCode());
PP_Order_NodeNext.save(get_TrxName()); PP_Order_NodeNext.save();
}// for NodeNext }// for NodeNext
} }
@ -767,7 +779,7 @@ public class MPPOrder extends X_PP_Order implements DocAction {
rs = pstmt.executeQuery(); rs = pstmt.executeQuery();
while (rs.next()) { while (rs.next()) {
nexts[x].setPP_Order_Next_ID(rs.getInt(1)); nexts[x].setPP_Order_Next_ID(rs.getInt(1));
nexts[x].save(get_TrxName()); nexts[x].save();
} }
} }
catch (Exception e) { catch (Exception e) {
@ -784,7 +796,7 @@ public class MPPOrder extends X_PP_Order implements DocAction {
} }
} }
OrderWorkflow.save(get_TrxName()); OrderWorkflow.save();
} // workflow valid from/to } // workflow valid from/to