diff --git a/base/src/org/compiere/acct/Doc.java b/base/src/org/compiere/acct/Doc.java
index e5f6bb59cd..e7b2cfedb6 100644
--- a/base/src/org/compiere/acct/Doc.java
+++ b/base/src/org/compiere/acct/Doc.java
@@ -60,8 +60,8 @@ import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.util.Msg;
import org.compiere.util.Trx;
-import org.eevolution.model.MHRProcess;
-import org.eevolution.model.MPPCostCollector;
+import org.eevolution.model.X_HR_Process;
+import org.eevolution.model.X_PP_Cost_Collector;
/**
* Posting Document Root.
@@ -141,8 +141,6 @@ public abstract class Doc
MMatchPO.Table_ID, // M_MatchPO
MProjectIssue.Table_ID, // C_ProjectIssue
MRequisition.Table_ID, // M_Requisition
- MHRProcess.Table_ID, // HR_Process
- MPPCostCollector.Table_ID // PP_CostCollector
};
/** Table Names of documents */
@@ -162,8 +160,6 @@ public abstract class Doc
MMatchPO.Table_Name, // M_MatchPO
MProjectIssue.Table_Name, // C_ProjectIssue
MRequisition.Table_Name, // M_Requisition
- MHRProcess.Table_Name, // HR_Process
- MPPCostCollector.Table_Name // PP_CostCollector
};
/**************************************************************************
@@ -226,10 +222,7 @@ public abstract class Doc
public static final String DOCTYPE_ProjectIssue = "PJI";
/** Purchase Requisition */
public static final String DOCTYPE_PurchaseRequisition = "POR";
- /** Process Payroll **/
- public static final String DOCTYPE_Payroll = "HRP";
- /** Manufacturing Order */
- public static final String DOCTYPE_MOrder = "MOO";
+
// Posting Status - AD_Reference_ID=234 //
/** Document Status */
@@ -347,10 +340,6 @@ public abstract class Doc
doc = new Doc_ProjectIssue (ass, rs, trxName);
else if (AD_Table_ID == MRequisition.Table_ID)
doc = new Doc_Requisition (ass, rs, trxName);
- else if (AD_Table_ID == MHRProcess.Table_ID)
- doc = new Doc_Payroll (ass, rs, trxName);
- else if (AD_Table_ID == MPPCostCollector.Table_ID)
- doc = new Doc_CostCollector (ass, rs, trxName);
if (doc == null)
s_log.log(Level.SEVERE, "Unknown AD_Table_ID=" + AD_Table_ID);
return doc;
diff --git a/base/src/org/compiere/acct/DocLine_Payroll.java b/base/src/org/compiere/acct/DocLine_Payroll.java
deleted file mode 100644
index 6ec57f787b..0000000000
--- a/base/src/org/compiere/acct/DocLine_Payroll.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.compiere.acct;
-
-import java.math.BigDecimal;
-
-import org.compiere.model.MBPartner;
-import org.compiere.util.Env;
-import org.eevolution.model.MHRConcept;
-import org.eevolution.model.MHRMovement;
-
-/**
- * Payroll Line
- *
- * @author Jorg Janke
- * @version $Id: DocLine_Payroll.java,v 1.4 2005/10/17 23:43:52 jjanke Exp $
- */
-public class DocLine_Payroll extends DocLine
-{
- /**
- * Constructor
- * @param line Payroll line
- * @param doc header
- */
- public DocLine_Payroll (MHRMovement line, Doc_Payroll doc)
- {
- super (line, doc);
- int C_BPartner_ID = line.getC_BPartner_ID();
- MBPartner bpartner = new MBPartner(Env.getCtx(),C_BPartner_ID,null);
- //MHREmployee employee = new MHREmployee(Env.getCtx(),C_BPartner_ID,null);
- MHRConcept concept = new MHRConcept(Env.getCtx(),line.getHR_Concept_ID(),null);
- //
- m_HR_Concept_ID = concept.getHR_Concept_ID();
- m_HR_Process_ID = line.getHR_Process_ID();
- m_C_BPartner_ID = C_BPartner_ID;
- m_HR_Department_ID = line.getHR_Department_ID();
- m_C_BP_Group_ID = bpartner.getC_BP_Group_ID();
- //m_C_Activity_ID = employee.getC_Activity_ID();
- m_AccountSign = concept.getAccountSign();
- m_Amount = line.getAmount();
- setAmount(line.getAmount());
- } // DocLine_Payroll
-
- // References
- private int m_HR_Process_ID = 0;
- private int m_HR_Concept_ID = 0;
- private int m_C_BPartner_ID = 0;
- private int m_C_Activity_ID = 0;
- private String m_AccountSign = "";
- private BigDecimal m_Amount = Env.ZERO;
- private int m_HR_Department_ID = 0;
- private int m_C_BP_Group_ID = 0;
-
- public int getHR_Process_ID(){
- return m_HR_Process_ID;
- }
-
- public int getHR_Concept_ID(){
- return m_HR_Concept_ID;
- }
-
- public String getAccountSign(){
- return m_AccountSign;
- }
-
- public int getC_BPartner_ID(){
- return m_C_BPartner_ID;
- }
-
- public int getC_Activity_ID(){
- return m_C_Activity_ID;
- }
-
-
- public BigDecimal getAmount() {
- return m_Amount;
- }
-
- public int getHR_Department_ID() {
- return m_HR_Department_ID;
- }
-
- public int getC_BP_Group_ID() {
- return m_C_BP_Group_ID;
- }
-
-} // DocLine_Payroll
diff --git a/base/src/org/compiere/acct/Doc_CostCollector.java b/base/src/org/compiere/acct/Doc_CostCollector.java
deleted file mode 100644
index 1b68a155ac..0000000000
--- a/base/src/org/compiere/acct/Doc_CostCollector.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * Copyright (C) 1999-2006 Adempiere, Inc. All Rights Reserved. *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.compiere.acct;
-
-import java.math.BigDecimal;
-import java.sql.ResultSet;
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.compiere.model.MAccount;
-import org.compiere.model.MAcctSchema;
-import org.compiere.model.MCost;
-import org.compiere.model.MCostElement;
-import org.compiere.model.MProduct;
-import org.compiere.model.MRefList;
-import org.compiere.model.ProductCost;
-import org.compiere.model.Query;
-import org.compiere.util.Env;
-import org.compiere.util.Msg;
-import org.compiere.wf.MWFNode;
-import org.eevolution.model.MPPCostCollector;
-import org.eevolution.model.MPPOrderBOMLine;
-import org.eevolution.model.MPPOrderNode;
-
-/**
- * Post Cost Collector
- *
- * Table: PP_Cost_Collector
- * Document Types: MOP
- *
- * @author victor.perez@e-evolution.com http://www.e-evolution.com
- */
-public class Doc_CostCollector extends Doc
-{
-
-
- /**
- * Constructor
- * @param ass accounting schemata
- * @param rs record
- * @param trxName trx
- */
- protected Doc_CostCollector (MAcctSchema[] ass, ResultSet rs, String trxName)
- {
- super(ass, MPPCostCollector.class, rs, DOCTYPE_MOrder, trxName);
- } //Doc Cost Collector
-
-
- /** Pseudo Line */
- private DocLine m_line = null;
-
- /** Collector Cost */
- private MPPCostCollector m_cc = null;
-
- /**
- * Load Document Details
- * @return error message or null
- */
- protected String loadDocumentDetails()
- {
- setC_Currency_ID (NO_CURRENCY);
- m_cc = (MPPCostCollector)getPO();
- setDateDoc (m_cc.getMovementDate());
- setDateAcct(m_cc.getMovementDate());
-
- // Pseudo Line
- m_line = new DocLine (m_cc, this);
- m_line.setQty (m_cc.getMovementQty(), false); // sets Trx and Storage Qty
-
- // Pseudo Line Check
- if (m_line.getM_Product_ID() == 0)
- log.warning(m_line.toString() + " - No Product");
- log.fine(m_line.toString());
- return null;
- } // loadDocumentDetails
-
- /**
- * Get Balance
- * @return Zero (always balanced)
- */
- public BigDecimal getBalance()
- {
- BigDecimal retValue = Env.ZERO;
- return retValue;
- } // getBalance
-
- /**
- * Create Facts (the accounting logic) for
- * @param as accounting schema
- * @return Fact
- */
- public ArrayList createFacts (MAcctSchema as)
- {
- log.info("Start Create Facts for Cost Collector");
-
- //TODO: I need write the rule for calculate variances
- // create Fact Header
- Fact fact = new Fact(this, as, Fact.POST_Actual);
- setC_Currency_ID (as.getC_Currency_ID());
- MProduct product = MProduct.get(getCtx(), m_cc.getM_Product_ID());
-
- if(MPPCostCollector.COSTCOLLECTORTYPE_MaterialReceipt.equals(m_cc.getCostCollectorType()))
- {
- //Finish good
- MAccount debit = m_line.getAccount(ProductCost.ACCTTYPE_P_Asset, as);
- MAccount credit = m_line.getAccount(ProductCost.ACCTTYPE_P_WorkInProcess, as);
- BigDecimal cost = Env.ZERO;
-
- Collection elements = MCostElement.getByCostingMethod(getCtx(), as.getCostingMethod());
- for(MCostElement element : elements)
- {
- cost = MCost.getCostByCostType(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(),
- as.getM_CostType_ID() , element.getCostElementType(),m_cc.getMovementQty());
- createLines(element.getCostElementType(), as, fact, product, debit, credit, cost,m_cc.getMovementQty());
- log.info("Account Fact for Cost Element:" + element.getName() + " Cost:" + cost);
- }
-
- //Account Scrap
- if(m_cc.getScrappedQty().signum() != 0)
- {
- credit = m_line.getAccount(ProductCost.ACCTTYPE_P_WorkInProcess, as);
- debit = m_line.getAccount(ProductCost.ACCTTYPE_P_Scrap, as);
-
- for(MCostElement element : elements)
- {
- cost = MCost.getCostByCostType(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(),
- as.getM_CostType_ID() , element.getCostElementType(),m_cc.getMovementQty());
- createLines(element.getCostElementType(), as, fact, product, debit, credit, cost,m_cc.getMovementQty());
- log.info("Account Fact for Cost Element:" + element.getName() + " Cost:" + cost);
- }
- }
- }
- else if (MPPCostCollector.COSTCOLLECTORTYPE_ComponentIssue.equals(m_cc.getCostCollectorType()))
- {
-
- MAccount debit = m_line.getAccount(ProductCost.ACCTTYPE_P_WorkInProcess, as);
- MAccount credit = m_line.getAccount(ProductCost.ACCTTYPE_P_Asset, as);
- final String whereCluase = MPPOrderBOMLine.COLUMNNAME_PP_Order_BOMLine_ID
- + "= ? AND "
- + MPPOrderBOMLine.COLUMNNAME_IssueMethod
- + "= ?";
-
- boolean isFloorStock = new Query(m_cc.getCtx(),MPPOrderBOMLine.Table_Name,whereCluase, m_cc.get_TableName())
- .setOnlyActiveRecords(true)
- .setParameters(new Object[]{m_cc.getPP_Order_BOMLine_ID(),MPPOrderBOMLine.ISSUEMETHOD_FloorStock})
- .match();
- if(isFloorStock)
- {
- credit = m_line.getAccount(ProductCost.ACCTTYPE_P_FloorStock, as);
- }
-
- BigDecimal cost = Env.ZERO;
-
- Collection elements = MCostElement.getByCostingMethod(getCtx(), as.getCostingMethod());
- for(MCostElement element : elements)
- {
- cost = MCost.getCostByCostType(product, as, m_cc.getAD_Org_ID(), m_cc.getM_AttributeSetInstance_ID(),
- as.getM_CostType_ID() , element.getCostElementType(),m_cc.getMovementQty());
- createLines(element.getCostElementType(), as, fact, product, debit, credit, cost,m_cc.getMovementQty());
- log.info("Account Fact for Cost Element:" + element.getName() + " Cost:" + cost);
- }
- }
- else if (MPPCostCollector.COSTCOLLECTORTYPE_ActivityControl.equals(m_cc.getCostCollectorType()))
- {
- MPPOrderNode activity = (MPPOrderNode) m_cc.getPP_Order_Node();
- MWFNode node = (MWFNode) activity.getAD_WF_Node();
- if(MPPOrderNode.DOCSTATUS_Completed.equals(activity.getDocAction()))
- {
- //Labor Rate
- MAccount debit = m_line.getAccount(ProductCost.ACCTTYPE_P_WorkInProcess, as);
- MAccount credit = m_line.getAccount(ProductCost.ACCTTYPE_P_Labor, as);
- BigDecimal labor = node.getCostForCostElementType(MCostElement.COSTELEMENTTYPE_Resource, as.getC_AcctSchema_ID(), as.getM_CostType_ID(), m_cc.getAD_Org_ID(), m_cc.getSetupTimeReal().intValue(), m_cc.getDurationReal().intValue());
- createLines(MCostElement.COSTELEMENTTYPE_Resource, as, fact, product, debit, credit, labor, m_cc.getMovementQty());
- //Burden Rate
- debit = m_line.getAccount(ProductCost.ACCTTYPE_P_WorkInProcess, as);
- credit = m_line.getAccount(ProductCost.ACCTTYPE_P_Burden, as);
- BigDecimal burden = node.getCostForCostElementType(MCostElement.COSTELEMENTTYPE_BurdenMOverhead, as.getC_AcctSchema_ID(), as.getM_CostType_ID(), m_cc.getAD_Org_ID(), m_cc.getSetupTimeReal().intValue(), m_cc.getDurationReal().intValue());
- createLines(MCostElement.COSTELEMENTTYPE_BurdenMOverhead, as, fact, product, debit, credit, burden, m_cc.getMovementQty());
- }
- }
-
- log.info("End CreateFacts Manufacturing"+fact);
- //
- ArrayList facts = new ArrayList();
- facts.add(fact);
- return facts;
- } // createFact
-
- private void createLines(String CostElementType, MAcctSchema as ,Fact fact , MProduct product,MAccount debit, MAccount credit, BigDecimal cost, BigDecimal qty)
- {
- if(cost == null | debit == null | credit == null)
- return;
-
- log.info("CostElementType: " +CostElementType + "Product: "+product.getName()+" Debit: " + debit.getDescription() + " Credit: "+ credit.getDescription() + " Cost: " + cost +" Qunatity: "+ qty);
- // Line pointers
- FactLine dr = null;
- FactLine cr = null;
- if(cost.signum() != 0 & qty != null)
- {
- dr = fact.createLine(m_line, debit , as.getC_Currency_ID(), cost, null);
- dr.setQty(qty);
- String desc = MRefList.getListName(getCtx(), MCostElement.COSTELEMENTTYPE_AD_Reference_ID, CostElementType);
- dr.addDescription(Msg.translate(m_cc.getCtx(), desc));
- dr.setC_Project_ID(m_cc.getC_Project_ID());
- dr.setC_Activity_ID(m_cc.getC_Activity_ID());
- dr.setC_Campaign_ID(m_cc.getC_Campaign_ID());
- dr.setM_Locator_ID(m_cc.getM_Locator_ID());
-
- cr = fact.createLine(m_line, credit,as.getC_Currency_ID(), null, cost);
- cr.setQty(qty);
- cr.addDescription(Msg.translate(m_cc.getCtx(), desc));
- cr.setC_Project_ID(m_cc.getC_Project_ID());
- cr.setC_Activity_ID(m_cc.getC_Activity_ID());
- cr.setC_Campaign_ID(m_cc.getC_Campaign_ID());
- cr.setM_Locator_ID(m_cc.getM_Locator_ID());
- }
- }
-} // Doc Cost Collector
diff --git a/base/src/org/compiere/acct/Doc_Payroll.java b/base/src/org/compiere/acct/Doc_Payroll.java
deleted file mode 100644
index 63f0d33ae2..0000000000
--- a/base/src/org/compiere/acct/Doc_Payroll.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.compiere.acct;
-
-import java.math.BigDecimal;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.util.ArrayList;
-import java.util.logging.Level;
-
-import org.compiere.model.MAccount;
-import org.compiere.model.MAcctSchema;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.eevolution.model.MHRMovement;
-import org.eevolution.model.MHRProcess;
-
-
-/**
- * Post Invoice Documents.
- *
- * Table: HR_Process (??)
- * Document Types: HR_Process
- *
- * @author Oscar Gomez Islas
- * @version $Id: Doc_Payroll.java,v 1.1 2007/01/20 00:40:02 ogomezi Exp $
- */
-public class Doc_Payroll extends Doc
-{
- public MHRProcess process = null;
- /**
- * Constructor
- * @param ass accounting schemata
- * @param rs record
- * @parem trxName trx
- */
- protected Doc_Payroll (MAcctSchema[] ass, ResultSet rs, String trxName)
- {
- super(ass, MHRProcess.class, rs, DOCTYPE_Payroll, trxName);
- } // Doc_Payroll
-
- /**
- * Load Specific Document Details
- * @return error message or null
- */
- protected String loadDocumentDetails ()
- {
- process = (MHRProcess)getPO();
- setDateDoc(getDateAcct());
- // Contained Objects
- p_lines = loadLines(process);
- log.fine("Lines=" + p_lines.length);
- return null;
- } // loadDocumentDetails
-
-
- /**
- * Load Payroll Line
- * @param Payroll Process
- * @return DocLine Array
- */
- private DocLine[] loadLines(MHRProcess process)
- {
- ArrayList list = new ArrayList();
- MHRMovement[] lines = process.getLines(true);
- for (int i = 0; i < lines.length; i++)
- {
- MHRMovement line = lines[i];
- DocLine_Payroll docLine = new DocLine_Payroll (line, this);
- //
- log.fine(docLine.toString());
- list.add(docLine);
- }
- // Return Array
- DocLine[] dls = new DocLine[list.size()];
- list.toArray(dls);
- return dls;
- } // loadLines
-
-
- /**************************************************************************
- * Get Source Currency Balance - subtracts line amounts from total - no rounding
- * @return positive amount, if total invoice is bigger than lines
- */
- public BigDecimal getBalance()
- {
- BigDecimal retValue = Env.ZERO;
- return Env.ZERO;
- } // getBalance
-
- /**
- * Create Facts (the accounting logic) for
- * @param as account schema
- * @return Fact
- */
- public ArrayList createFacts (MAcctSchema as)
- {
- Fact fact = new Fact(this, as, Fact.POST_Actual);
- String sql2= "SELECT m.HR_Concept_id,0,MAX(c.Name),SUM(ROUND(m.Amount,2)),MAX(c.AccountSign),MAX(CA.IsBalancing),e.ad_org_id,d.c_activity_id" // 1,2,3,4,5,6,7,8
- +" FROM HR_Movement m"
- +" INNER JOIN HR_Concept_Acct ca ON (ca.HR_Concept_ID=m.HR_Concept_ID AND ca.IsActive = 'Y')"
- +" INNER JOIN HR_Concept c ON (c.HR_Concept_ID=m.HR_Concept_ID AND c.IsActive = 'Y')"
- +" INNER JOIN C_BPartner bp ON (bp.C_BPartner_ID = m.C_BPartner_ID)"
- +" INNER JOIN hr_employee e ON (bp.c_bpartner_id=e.c_bpartner_id)"
- +" INNER JOIN hr_department d ON (d.hr_department_id=e.hr_department_id)"
- +" WHERE m.HR_Process_ID=? AND (m.Qty <> 0 OR m.Amount <> 0) AND c.AccountSign != 'N' AND ca.IsBalancing != 'Y'"
- +" GROUP BY m.hr_concept_id,e.ad_org_id,d.c_activity_id"
- +" order by e.ad_org_id,d.c_activity_id";
-
- System.err.println("Consulta: " + sql2);
- PreparedStatement pstmt2 = null;
- try
- {
- pstmt2 = DB.prepareStatement (sql2, process.get_TrxName());
- pstmt2.setInt (1, process.getHR_Process_ID());
- ResultSet rs2 = pstmt2.executeQuery ();
- while (rs2.next ())
- {
- int AD_OrgTrx_ID=rs2.getInt(7);
- int C_Activity_ID=rs2.getInt(8);
- if(rs2.getString(5).equals("D")){ // --- Debit
- MAccount accountBPD = MAccount.get (getCtx(), getAccountBalancing(as.getC_AcctSchema_ID(),rs2.getInt(1),rs2.getInt(2),"D"));
- FactLine debit=fact.createLine(null, accountBPD,as.getC_Currency_ID(),rs2.getBigDecimal(4), null);
- debit.setAD_OrgTrx_ID(AD_OrgTrx_ID);
- debit.setC_Activity_ID(C_Activity_ID);
- debit.save();
- MAccount accountBPC = MAccount.get (getCtx(),this.getAccountBalancing(as.getC_AcctSchema_ID(),rs2.getInt(1),rs2.getInt(2),"C"));
- FactLine credit = fact.createLine(null,accountBPC ,as.getC_Currency_ID(),null,rs2.getBigDecimal(4));
- credit.setAD_OrgTrx_ID(AD_OrgTrx_ID);
- credit.setC_Activity_ID(C_Activity_ID);
- credit.save();
- }
- else if(rs2.getString(5).equals("C")){ // --- Credit
- MAccount accountBPC = MAccount.get (getCtx(),this.getAccountBalancing(as.getC_AcctSchema_ID(),rs2.getInt(1),rs2.getInt(2),"C"));
- FactLine credit=fact.createLine(null, accountBPC,as.getC_Currency_ID(), null, rs2.getBigDecimal(4));
- credit.setAD_OrgTrx_ID(AD_OrgTrx_ID);
- credit.setC_Activity_ID(C_Activity_ID);
- credit.save();
- MAccount accountBPD = MAccount.get (getCtx(),this.getAccountBalancing(as.getC_AcctSchema_ID(),rs2.getInt(1),rs2.getInt(2),"D"));
- FactLine debit=fact.createLine(null, accountBPD ,as.getC_Currency_ID(),rs2.getBigDecimal(4), null);
- debit.setAD_OrgTrx_ID(AD_OrgTrx_ID);
- debit.setC_Activity_ID(C_Activity_ID);
- debit.save();
- }
- }
- rs2.close ();
- pstmt2.close ();
- pstmt2 = null;
- }
- catch (Exception e)
- {
- log.log(Level.SEVERE, sql2, e);
- }
-
- ArrayList facts = new ArrayList();
- facts.add(fact);
- return facts;
- }
-
-
- private int getAccount (int AcctSchema_ID, int HR_Concept_ID, int C_BP_Group_ID, String AccountSign)
- {
- String field = AccountSign.equals("D") ? "HR_Expense_Acct" : "HR_Revenue_Acct";
- int Account_ID;
- String sqlAccount = "SELECT " +field+ " FROM HR_Concept_Acct WHERE "
- +" HR_Concept_ID=" +HR_Concept_ID+ " AND C_AcctSchema_ID=" +AcctSchema_ID;
- Account_ID = DB.getSQLValue(null, sqlAccount);
- if (Account_ID < 0 )
- Account_ID = DB.getSQLValue(null, sqlAccount);
-
- MAccount account = MAccount.get (getCtx(), Account_ID);
- return Account_ID;
- }
-
- private int getAccountBalancing (int AcctSchema_ID, int HR_Concept_ID, int C_BP_Group_ID, String AccountSign)
- {
- String field = AccountSign.equals("D") ? "HR_Expense_Acct" : "HR_Revenue_Acct";
- int Account_ID;
- String sqlAccount = "SELECT " +field+ " FROM HR_Concept_Acct WHERE "
- +" HR_Concept_ID=" +HR_Concept_ID+ " AND C_AcctSchema_ID=" +AcctSchema_ID;
- Account_ID = DB.getSQLValue(null, sqlAccount);
- return Account_ID;
- }
-} // Doc_Payroll
diff --git a/base/src/org/compiere/process/DocumentEngine.java b/base/src/org/compiere/process/DocumentEngine.java
index ec40d6f17a..648ad6a9e8 100644
--- a/base/src/org/compiere/process/DocumentEngine.java
+++ b/base/src/org/compiere/process/DocumentEngine.java
@@ -44,10 +44,10 @@ import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.util.Ini;
-import org.eevolution.model.MDDOrder;
-import org.eevolution.model.MHRProcess;
-import org.eevolution.model.MPPCostCollector;
-import org.eevolution.model.MPPOrder;
+import org.eevolution.model.X_DD_Order;
+import org.eevolution.model.X_HR_Process;
+import org.eevolution.model.X_PP_Cost_Collector;
+import org.eevolution.model.X_PP_Order;
/**
* Document Action Engine
@@ -1044,7 +1044,7 @@ public class DocumentEngine implements DocAction
/********************
* Manufacturing Order
*/
- else if (AD_Table_ID == MPPOrder.Table_ID)
+ else if (AD_Table_ID == X_PP_Order.Table_ID)
{
if (docStatus.equals(DocumentEngine.STATUS_Drafted)
|| docStatus.equals(DocumentEngine.STATUS_InProgress)
@@ -1063,7 +1063,7 @@ public class DocumentEngine implements DocAction
/********************
* Manufacturing Cost Collector
*/
- else if (AD_Table_ID == MPPCostCollector.Table_ID)
+ else if (AD_Table_ID == X_PP_Cost_Collector.Table_ID)
{
if (docStatus.equals(DocumentEngine.STATUS_Drafted)
|| docStatus.equals(DocumentEngine.STATUS_InProgress)
@@ -1082,7 +1082,7 @@ public class DocumentEngine implements DocAction
/********************
* Distribution Order
*/
- else if (AD_Table_ID == MDDOrder.Table_ID)
+ else if (AD_Table_ID == X_DD_Order.Table_ID)
{
if (docStatus.equals(DocumentEngine.STATUS_Drafted)
|| docStatus.equals(DocumentEngine.STATUS_InProgress)
@@ -1101,7 +1101,7 @@ public class DocumentEngine implements DocAction
/********************
* Payroll Process
*/
- else if (AD_Table_ID == MHRProcess.Table_ID)
+ else if (AD_Table_ID == X_HR_Process.Table_ID)
{
if (docStatus.equals(DocumentEngine.STATUS_Drafted)
|| docStatus.equals(DocumentEngine.STATUS_InProgress)
diff --git a/base/src/org/compiere/process/FactAcctReset.java b/base/src/org/compiere/process/FactAcctReset.java
index e3cdc863e8..70bec4ba60 100644
--- a/base/src/org/compiere/process/FactAcctReset.java
+++ b/base/src/org/compiere/process/FactAcctReset.java
@@ -42,9 +42,9 @@ import org.compiere.model.MRequisition;
import org.compiere.model.X_M_Production;
import org.compiere.util.DB;
import org.compiere.util.TimeUtil;
-import org.eevolution.model.MDDOrder;
-import org.eevolution.model.MHRProcess;
-import org.eevolution.model.MPPOrder;
+import org.eevolution.model.X_DD_Order;
+import org.eevolution.model.X_HR_Process;
+import org.eevolution.model.X_PP_Order;
/**
* Accounting Fact Reset
@@ -235,13 +235,13 @@ public class FactAcctReset extends SvrProcess
docBaseType = "= '" + MPeriodControl.DOCBASETYPE_MatchInvoice + "'";
else if (AD_Table_ID == MMatchPO.Table_ID)
docBaseType = "= '" + MPeriodControl.DOCBASETYPE_MatchPO + "'";
- else if (AD_Table_ID == MPPOrder.Table_ID)
+ else if (AD_Table_ID == X_PP_Order.Table_ID)
docBaseType = "IN ('" + MPeriodControl.DOCBASETYPE_ManufacturingOrder
+ "','" + MPeriodControl.DOCBASETYPE_MaintenanceOrder
+ "','" + MPeriodControl.DOCBASETYPE_QualityOrder + "')";
- else if (AD_Table_ID == MDDOrder.Table_ID)
+ else if (AD_Table_ID == X_DD_Order.Table_ID)
docBaseType = "= '" + MPeriodControl.DOCBASETYPE_DistributionOrder+ "'";
- else if (AD_Table_ID == MHRProcess.Table_ID)
+ else if (AD_Table_ID == X_HR_Process.Table_ID)
docBaseType = "= '" + MPeriodControl.DOCBASETYPE_Payroll+ "'";
//
if (docBaseType == null)
diff --git a/base/src/org/eevolution/exceptions/ActivityProcessedException.java b/base/src/org/eevolution/exceptions/ActivityProcessedException.java
deleted file mode 100644
index 640e7c6d1f..0000000000
--- a/base/src/org/eevolution/exceptions/ActivityProcessedException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * Copyright (C) 2008 SC ARHIPAC SERVICE SRL. All Rights Reserved. *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- *****************************************************************************/
-package org.eevolution.exceptions;
-
-import org.adempiere.exceptions.AdempiereException;
-import org.eevolution.model.MPPOrderNode;
-
-/**
- * Throwed when we are trying to process/complete an Order Activity that is already processed/completed
- * @author Teo Sarca, www.arhipac.ro
- */
-public class ActivityProcessedException extends AdempiereException
-{
- private static final long serialVersionUID = 1L;
-
- public ActivityProcessedException(MPPOrderNode activity)
- {
- super("Order Activity Already Processed - "+activity); // TODO: translate
- }
-}
diff --git a/base/src/org/eevolution/model/CalloutCostCollector.java b/base/src/org/eevolution/model/CalloutCostCollector.java
deleted file mode 100644
index 183138e13e..0000000000
--- a/base/src/org/eevolution/model/CalloutCostCollector.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.math.BigDecimal;
-import java.util.Properties;
-
-import org.compiere.model.CalloutEngine;
-import org.compiere.model.GridField;
-import org.compiere.model.GridTab;
-
-/**
- * Cost Collector Callout
- *
- * @author Victor Perez www.e-evolution.com
- * @author Teo Sarca, www.arhipac.ro
- */
-public class CalloutCostCollector extends CalloutEngine
-{
- public String Manufacture (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value)
- {
- Integer PP_Order_ID = (Integer)value;
- if (PP_Order_ID == null || PP_Order_ID <= 0)
- return "";
- //
- MPPOrder order = new MPPOrder(ctx, PP_Order_ID, null);
- mTab.setValue(MPPCostCollector.COLUMNNAME_AD_Org_ID, order.getAD_Org_ID());
- mTab.setValue(MPPCostCollector.COLUMNNAME_C_DocTypeTarget_ID, order.getC_DocType_ID());
- mTab.setValue(MPPCostCollector.COLUMNNAME_S_Resource_ID, order.getS_Resource_ID());
- mTab.setValue(MPPCostCollector.COLUMNNAME_M_Product_ID, order.getM_Product_ID());
- mTab.setValue(MPPCostCollector.COLUMNNAME_M_AttributeSetInstance_ID, order.getM_AttributeSetInstance_ID());
- mTab.setValue(MPPCostCollector.COLUMNNAME_M_Warehouse_ID, order.getM_Warehouse_ID());
- mTab.setValue(MPPCostCollector.COLUMNNAME_MovementQty, order.getQtyOrdered());
- //
- MPPOrderWorkflow owf = order.getMPPOrderWorkflow();
- mTab.setValue(MPPCostCollector.COLUMNNAME_PP_Order_Workflow_ID, owf.getPP_Order_Workflow_ID());
-// mTab.setValue(MPPCostCollector.COLUMNNAME_DurationUnit, owf.getDurationUnit());
- //
- return "";
- }
-
- public String node (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value)
- {
- Integer PP_Order_Node_ID = (Integer)value;
- if (PP_Order_Node_ID == null || PP_Order_Node_ID <= 0)
- return "";
- //
- MPPOrderNode node = getPP_Order_Node(ctx, PP_Order_Node_ID);
- mTab.setValue(MPPCostCollector.COLUMNNAME_IsSubcontracting, node.isSubcontracting());
- mTab.setValue(MPPCostCollector.COLUMNNAME_S_Resource_ID, node.getS_Resource_ID());
-
- BigDecimal qtyToDeliver = node.getQtyRequiered()
- .subtract(node.getQtyDelivered());
- mTab.setValue(MPPCostCollector.COLUMNNAME_MovementQty, qtyToDeliver);
- //
- int duration = node.getDuration();
- BigDecimal durationReal = qtyToDeliver.multiply(BigDecimal.valueOf(duration));
- mTab.setValue(MPPCostCollector.COLUMNNAME_DurationReal, durationReal);
-
- return "";
- }
-
- public String MovementType (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value)
- {
- return "";
- }
-
- private MPPOrderNode m_node = null;
- private MPPOrderNode getPP_Order_Node(Properties ctx, int PP_Order_Node_ID)
- {
- if (m_node != null && m_node.get_ID() == PP_Order_Node_ID)
- {
- return m_node;
- }
- m_node = new MPPOrderNode(ctx, PP_Order_Node_ID, null);
- return m_node;
- }
-
-}
-
-
diff --git a/base/src/org/eevolution/model/CalloutDistributionOrder.java b/base/src/org/eevolution/model/CalloutDistributionOrder.java
deleted file mode 100644
index 9b85350919..0000000000
--- a/base/src/org/eevolution/model/CalloutDistributionOrder.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.model;
-
-import java.math.BigDecimal;
-import java.util.Properties;
-
-import org.compiere.model.CalloutEngine;
-import org.compiere.model.GridField;
-import org.compiere.model.GridTab;
-import org.compiere.model.MLocator;
-import org.compiere.model.MProduct;
-import org.compiere.model.MStorage;
-import org.compiere.model.MUOM;
-import org.compiere.model.MUOMConversion;
-import org.compiere.util.Env;
-import org.compiere.util.Msg;
-
-/**
- * Distribution Order Callout
- *
- * @author Victor Perez
- * @version $Id: CalloutOrder.java,v 1.23 2004/08/27 21:24:12 vpj-cd Exp $
- */
-public class CalloutDistributionOrder extends CalloutEngine
-{
- /** Debug Steps */
- private boolean steps = false;
-
- /**
- * Order Line - Quantity.
- * - called from C_UOM_ID, QtyEntered, QtyOrdered
- * - enforces qty UOM relationship
- * @param ctx context
- * @param WindowNo current Window No
- * @param mTab Grid Tab
- * @param mField Grid Field
- * @param value New Value
- * @return null or error message
- */
- public String qty (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value)
- {
- if (isCalloutActive() || value == null)
- return "";
- int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, "M_Product_ID");
- if (steps) log.warning("init - M_Product_ID=" + M_Product_ID + " - " );
- BigDecimal QtyOrdered = Env.ZERO;
- BigDecimal QtyEntered;
-
- // No Product
- if (M_Product_ID == 0)
- {
- QtyEntered = (BigDecimal)mTab.getValue("QtyEntered");
- QtyOrdered = QtyEntered;
- mTab.setValue("QtyOrdered", QtyOrdered);
- }
- // UOM Changed - convert from Entered -> Product
- else if (mField.getColumnName().equals("C_UOM_ID"))
- {
- int C_UOM_To_ID = ((Integer)value).intValue();
- QtyEntered = (BigDecimal)mTab.getValue("QtyEntered");
- BigDecimal QtyEntered1 = QtyEntered.setScale(MUOM.getPrecision(ctx, C_UOM_To_ID), BigDecimal.ROUND_HALF_UP);
- if (QtyEntered.compareTo(QtyEntered1) != 0)
- {
- log.fine("Corrected QtyEntered Scale UOM=" + C_UOM_To_ID
- + "; QtyEntered=" + QtyEntered + "->" + QtyEntered1);
- QtyEntered = QtyEntered1;
- mTab.setValue("QtyEntered", QtyEntered);
- }
- QtyOrdered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
- C_UOM_To_ID, QtyEntered);
- if (QtyOrdered == null)
- QtyOrdered = QtyEntered;
- boolean conversion = QtyEntered.compareTo(QtyOrdered) != 0;
- Env.setContext(ctx, WindowNo, "UOMConversion", conversion ? "Y" : "N");
- mTab.setValue("QtyOrdered", QtyOrdered);
- }
- // QtyEntered changed - calculate QtyOrdered
- else if (mField.getColumnName().equals("QtyEntered"))
- {
- int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
- QtyEntered = (BigDecimal)value;
- BigDecimal QtyEntered1 = QtyEntered.setScale(MUOM.getPrecision(ctx, C_UOM_To_ID), BigDecimal.ROUND_HALF_UP);
- if (QtyEntered.compareTo(QtyEntered1) != 0)
- {
- log.fine("Corrected QtyEntered Scale UOM=" + C_UOM_To_ID
- + "; QtyEntered=" + QtyEntered + "->" + QtyEntered1);
- QtyEntered = QtyEntered1;
- mTab.setValue("QtyEntered", QtyEntered);
- }
- QtyOrdered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
- C_UOM_To_ID, QtyEntered);
- if (QtyOrdered == null)
- QtyOrdered = QtyEntered;
- boolean conversion = QtyEntered.compareTo(QtyOrdered) != 0;
- log.fine("UOM=" + C_UOM_To_ID
- + ", QtyEntered=" + QtyEntered
- + " -> " + conversion
- + " QtyOrdered=" + QtyOrdered);
- Env.setContext(ctx, WindowNo, "UOMConversion", conversion ? "Y" : "N");
- mTab.setValue("QtyOrdered", QtyOrdered);
- }
- // QtyOrdered changed - calculate QtyEntered (should not happen)
- else if (mField.getColumnName().equals("QtyOrdered"))
- {
- int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
- QtyOrdered = (BigDecimal)value;
- int precision = MProduct.get(ctx, M_Product_ID).getUOMPrecision();
- BigDecimal QtyOrdered1 = QtyOrdered.setScale(precision, BigDecimal.ROUND_HALF_UP);
- if (QtyOrdered.compareTo(QtyOrdered1) != 0)
- {
- log.fine("Corrected QtyOrdered Scale "
- + QtyOrdered + "->" + QtyOrdered1);
- QtyOrdered = QtyOrdered1;
- mTab.setValue("QtyOrdered", QtyOrdered);
- }
- QtyEntered = MUOMConversion.convertProductTo (ctx, M_Product_ID,
- C_UOM_To_ID, QtyOrdered);
- if (QtyEntered == null)
- QtyEntered = QtyOrdered;
- boolean conversion = QtyOrdered.compareTo(QtyEntered) != 0;
- log.fine("UOM=" + C_UOM_To_ID
- + ", QtyOrdered=" + QtyOrdered
- + " -> " + conversion
- + " QtyEntered=" + QtyEntered);
- Env.setContext(ctx, WindowNo, "UOMConversion", conversion ? "Y" : "N");
- mTab.setValue("QtyEntered", QtyEntered);
- }
- else
- {
- // QtyEntered = (BigDecimal)mTab.getValue("QtyEntered");
- QtyOrdered = (BigDecimal)mTab.getValue("QtyOrdered");
- }
-
- // Storage
- if (M_Product_ID != 0
- && Env.isSOTrx(ctx, WindowNo)
- && QtyOrdered.signum() > 0) // no negative (returns)
- {
- MProduct product = MProduct.get (ctx, M_Product_ID);
- if (product.isStocked())
- {
- int M_Locator_ID = Env.getContextAsInt(ctx, WindowNo, "M_Locator_ID");
- int M_AttributeSetInstance_ID = Env.getContextAsInt(ctx, WindowNo, "M_AttributeSetInstance_ID");
- int M_Warehouse_ID = MLocator.get(ctx, M_Locator_ID).getM_Warehouse_ID();
-
- BigDecimal available = MStorage.getQtyAvailable
- (M_Warehouse_ID, 0, M_Product_ID, M_AttributeSetInstance_ID, null);
- if (available == null)
- available = Env.ZERO;
- if (available.signum() == 0)
- mTab.fireDataStatusEEvent ("NoQtyAvailable", "0", false);
- else if (available.compareTo(QtyOrdered) < 0)
- mTab.fireDataStatusEEvent ("InsufficientQtyAvailable", available.toString(), false);
- else
- {
- Integer DD_OrderLine_ID = (Integer)mTab.getValue("DD_OrderLine_ID");
- if (DD_OrderLine_ID == null)
- DD_OrderLine_ID = new Integer(0);
- BigDecimal notReserved = MDDOrderLine.getNotReserved(ctx,
- M_Locator_ID, M_Product_ID, M_AttributeSetInstance_ID,
- DD_OrderLine_ID.intValue());
- if (notReserved == null)
- notReserved = Env.ZERO;
- BigDecimal total = available.subtract(notReserved);
- if (total.compareTo(QtyOrdered) < 0)
- {
- String info = Msg.parseTranslation(ctx, "@QtyAvailable@=" + available
- + " - @QtyNotReserved@=" + notReserved + " = " + total);
- mTab.fireDataStatusEEvent ("InsufficientQtyAvailable",
- info, false);
- }
- }
- }
- }
- //
- return "";
- } // qty
-
-} // CalloutOrder
-
diff --git a/base/src/org/eevolution/model/CalloutOrder.java b/base/src/org/eevolution/model/CalloutOrder.java
deleted file mode 100644
index 52fe806dc5..0000000000
--- a/base/src/org/eevolution/model/CalloutOrder.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.model;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.Properties;
-
-import org.compiere.model.CalloutEngine;
-import org.compiere.model.GridField;
-import org.compiere.model.GridTab;
-import org.compiere.model.MProduct;
-import org.compiere.model.MUOMConversion;
-import org.compiere.util.Env;
-import org.compiere.wf.MWorkflow;
-
-/**
- * Order CalloutOrder
- *
- * @author Victor Perez
- * @version $Id: CalloutOrder.java,v 1.23 2004/08/27 21:24:12 vpj-cd Exp $
- *
- * @author Teo Sarca, www.arhipac.ro
- */
-public class CalloutOrder extends CalloutEngine
-{
- /** Debug Steps */
- private boolean steps = false;
-
- /**
- * Order Line - Quantity.
- * - called from C_UOM_ID, QtyEntered, QtyOrdered
- * - enforces qty UOM relationship
- * @param ctx Context
- * @param WindowNo current Window No
- * @param mTab Model Tab
- * @param mField Model Field
- * @param value The new value
- */
- public String qty (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value)
- {
- if (value == null)
- return "";
-
- int M_Product_ID = Env.getContextAsInt(ctx, WindowNo, "M_Product_ID");
- if (steps) log.warning("qty - init - M_Product_ID=" + M_Product_ID + " - " );
- BigDecimal QtyOrdered = Env.ZERO ;
- BigDecimal QtyEntered = Env.ZERO ;
-
- // No Product
- if (M_Product_ID == 0)
- {
- QtyEntered = (BigDecimal)mTab.getValue("QtyEntered");
- mTab.setValue("QtyOrdered", QtyEntered);
- }
- // UOM Changed - convert from Entered -> Product
- else if (mField.getColumnName().equals("C_UOM_ID"))
- {
-
- int C_UOM_To_ID = ((Integer)value).intValue();
- QtyEntered = (BigDecimal)mTab.getValue("QtyEntered");
- QtyOrdered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
- C_UOM_To_ID, QtyEntered);
- if (QtyOrdered == null)
- QtyOrdered = QtyEntered;
- boolean conversion = QtyEntered.compareTo(QtyOrdered) != 0;
- Env.setContext(ctx, WindowNo, "UOMConversion", conversion ? "Y" : "N");
- mTab.setValue("QtyOrdered", QtyOrdered);
- }
- // QtyEntered changed - calculate QtyOrdered
- else if (mField.getColumnName().equals("QtyEntered"))
- {
- int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
- QtyEntered = (BigDecimal)value;
- QtyOrdered = MUOMConversion.convertProductFrom (ctx, M_Product_ID,
- C_UOM_To_ID, QtyEntered);
- if (QtyOrdered == null)
- QtyOrdered = QtyEntered;
- boolean conversion = QtyEntered.compareTo(QtyOrdered) != 0;
- log.fine("qty - UOM=" + C_UOM_To_ID
- + ", QtyEntered=" + QtyEntered
- + " -> " + conversion
- + " QtyOrdered=" + QtyOrdered);
- Env.setContext(ctx, WindowNo, "UOMConversion", conversion ? "Y" : "N");
- mTab.setValue("QtyOrdered", QtyOrdered);
- }
- // QtyOrdered changed - calculate QtyEntered
- else if (mField.getColumnName().equals("QtyOrdered"))
- {
- int C_UOM_To_ID = Env.getContextAsInt(ctx, WindowNo, "C_UOM_ID");
- QtyOrdered = (BigDecimal)value;
- QtyEntered = MUOMConversion.convertProductTo (ctx, M_Product_ID,
- C_UOM_To_ID, QtyOrdered);
- if (QtyEntered == null)
- QtyEntered = QtyOrdered;
- boolean conversion = QtyOrdered.compareTo(QtyEntered) != 0;
- log.fine("qty - UOM=" + C_UOM_To_ID
- + ", QtyOrdered=" + QtyOrdered
- + " -> " + conversion
- + " QtyEntered=" + QtyEntered);
- Env.setContext(ctx, WindowNo, "UOMConversion", conversion ? "Y" : "N");
- mTab.setValue("QtyEntered", QtyEntered);
- }
- return qtyBatch(ctx,WindowNo,mTab,mField,value);
- //return "";
- } // qty
-
- public String qtyBatch (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value)
- {
- Integer AD_Workflow_ID = ((Integer)mTab.getValue(MPPOrder.COLUMNNAME_AD_Workflow_ID));
- // No workflow entered, or is just a new record:
- if (AD_Workflow_ID == null)
- return "";
-
- BigDecimal p_QtyEntered = (BigDecimal)mTab.getValue(MPPOrder.COLUMNNAME_QtyEntered);
- if (p_QtyEntered.equals(Env.ZERO))
- return "";
-
- MWorkflow wf = MWorkflow.get(ctx , AD_Workflow_ID.intValue());
- BigDecimal Qty = null;
- BigDecimal QtyBatchSize = wf.getQtyBatchSize().setScale(0, RoundingMode.UP);
-
- if (QtyBatchSize.equals(Env.ZERO))
- Qty = Env.ONE;
- else
- Qty = p_QtyEntered.divide(QtyBatchSize, 0, RoundingMode.UP);
-
- mTab.setValue(MPPOrder.COLUMNNAME_QtyBatchs, Qty);
- mTab.setValue(MPPOrder.COLUMNNAME_QtyBatchSize, QtyBatchSize);
-
- return "";
- }
-
- public String product (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value)
- {
- if (isCalloutActive() || value == null)
- return "";
-
- MProduct product = MProduct.get(ctx, ((Number)value).intValue());
- if (product == null)
- return "";
- mTab.setValue(MProduct.COLUMNNAME_C_UOM_ID,product.getC_UOM_ID());
-
- int workflow_id = MWorkflow.getWorkflowSearchKey(product);
- mTab.setValue(MPPOrder.COLUMNNAME_AD_Workflow_ID, workflow_id > 0 ? workflow_id : null);
-
- MPPProductBOM bom = MPPProductBOM.getDefault(product, null);
- if (bom == null)
- return "";
-
- mTab.setValue(MPPOrder.COLUMNNAME_PP_Product_BOM_ID, bom.get_ID());
- mTab.setValue(MPPOrder.COLUMNNAME_C_UOM_ID,bom.getC_UOM_ID());
-
- return "";
- }
-} // CalloutOrder
-
diff --git a/base/src/org/eevolution/model/CalloutPayroll.java b/base/src/org/eevolution/model/CalloutPayroll.java
deleted file mode 100644
index ec02d5423d..0000000000
--- a/base/src/org/eevolution/model/CalloutPayroll.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/******************************************************************************
- * The contents of this file are subject to the Compiere License Version 1.1
- * ("License"); You may not use this file except in compliance with the License
- * You may obtain a copy of the License at http://www.compiere.org/license.html
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
- * the specific language governing rights and limitations under the License.
- * The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
- * Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
- * are Copyright (C) 1999-2005 Jorg Janke.
- * All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
- * Contributor(s): ______________________________________.
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.util.Properties;
-
-import org.compiere.model.CalloutEngine;
-import org.compiere.model.GridField;
-import org.compiere.model.GridTab;
-import org.compiere.util.DB;
-
-/**
- * Payroll Callouts.
- * org.eevolution.model.CalloutPayroll.*
- *
- *
- * @version $Id: CalloutPayment.java,v 1.17 2005/11/06 01:17:27 jjanke Exp $
- */
-public class CalloutPayroll extends CalloutEngine
-{
- public String ColumnType (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value)
- {
- if (value == null)
- return "";
- final int HR_Concept_ID = (Integer) value;
- if (HR_Concept_ID == 0)
- return "";
- //
- final String columnType = DB.getSQLValueStringEx(null,
- "SELECT ColumnType FROM HR_Concept WHERE HR_Concept_ID=?",
- HR_Concept_ID);
- mTab.setValue(MHRAttribute.COLUMNNAME_ColumnType, columnType);
- return "";
- }
-} // CalloutPayroll
diff --git a/base/src/org/eevolution/model/LiberoValidator.java b/base/src/org/eevolution/model/LiberoValidator.java
deleted file mode 100644
index 225fe22051..0000000000
--- a/base/src/org/eevolution/model/LiberoValidator.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.util.Collection;
-
-import org.compiere.model.MClient;
-import org.compiere.model.MForecastLine;
-import org.compiere.model.MInOut;
-import org.compiere.model.MInOutLine;
-import org.compiere.model.MOrder;
-import org.compiere.model.MOrderLine;
-import org.compiere.model.MRequisitionLine;
-import org.compiere.model.ModelValidationEngine;
-import org.compiere.model.ModelValidator;
-import org.compiere.model.PO;
-import org.compiere.model.Query;
-import org.compiere.process.DocAction;
-import org.compiere.util.CLogger;
-import org.compiere.util.Msg;
-
-
-/**
- * Libero Validator
- *
- * @author Victor Perez
- * @author Trifon Trifonov
- * [ 2270421 ] Can not complete Shipment (Customer)
- * @author Teo Sarca, www.arhipac.ro
- */
-public class LiberoValidator implements ModelValidator
-{
- /** Logger */
- private CLogger log = CLogger.getCLogger(getClass());
- /** Client */
- private int m_AD_Client_ID = -1;
-
-
- public void initialize (ModelValidationEngine engine, MClient client)
- {
- //client = null for global validator
- if (client != null)
- {
- m_AD_Client_ID = client.getAD_Client_ID();
- log.info(client.toString());
- }
- else
- {
- log.info("Initializing global validator: "+this.toString());
- }
- // Tables to be monitored
- engine.addModelChange(MOrder.Table_Name, this);
- engine.addModelChange(MOrderLine.Table_Name, this);
- engine.addModelChange(MRequisitionLine.Table_Name, this);
- engine.addModelChange(MForecastLine.Table_Name, this);
- engine.addModelChange(MDDOrderLine.Table_Name, this);
- engine.addModelChange(MPPOrder.Table_Name, this);
- engine.addModelChange(MPPOrderBOMLine.Table_Name, this);
- engine.addDocValidate(MInOut.Table_Name, this);
- } // initialize
-
- public String modelChange (PO po, int type) throws Exception
- {
- log.info(po.get_TableName() + " Type: "+type);
- boolean isChange = (TYPE_AFTER_NEW == type || (TYPE_AFTER_CHANGE == type && MPPMRP.isChanged(po)));
- boolean isDelete = (TYPE_BEFORE_DELETE == type);
- boolean isReleased = false;
- boolean isVoided = false;
- DocAction doc = null;
- if (po instanceof DocAction)
- {
- doc = (DocAction)po;
- }
- else if (po instanceof MOrderLine)
- {
- doc = ((MOrderLine)po).getParent();
- }
- if (doc != null)
- {
- String docStatus = doc.getDocStatus();
- isReleased = DocAction.STATUS_InProgress.equals(docStatus)
- || DocAction.STATUS_Completed.equals(docStatus);
- isVoided = DocAction.STATUS_Voided.equals(docStatus);
- }
- //
- //
- if (isDelete || isVoided)
- {
- MPPMRP.deleteMRP(po);
- }
- else if (po instanceof MOrder)
- {
- MOrder order = (MOrder)po;
- // Create/Update a planning supply when isPurchase Order
- // or when you change DatePromised or DocStatus and is Purchase Order
- if (isChange && !order.isSOTrx())
- {
- MPPMRP.C_Order(order, false);
- }
- // Update MRP when you change the status order to complete or in process for a sales order
- // or you change DatePromised
- else if (type == TYPE_AFTER_CHANGE && order.isSOTrx())
- {
- if (isReleased || MPPMRP.isChanged(order))
- {
- MPPMRP.C_Order(order, false);
- }
- }
-
- }
- //
- else if (po instanceof MOrderLine && isChange)
- {
- MOrderLine ol = (MOrderLine)po;
- MOrder order = ol.getParent();
- // Create/Update a planning supply when isPurchase Order or you change relevant fields
- if (!order.isSOTrx())
- {
- MPPMRP.C_OrderLine(ol, false);
- }
- // Update MRP when Sales Order have document status in process or complete and
- // you change relevant fields
- else if(order.isSOTrx() && isReleased)
- {
- MPPMRP.C_OrderLine(ol, false);
- }
- }
- //
- else if (po instanceof MRequisitionLine && isChange)
- {
- MRequisitionLine rl = (MRequisitionLine)po;
- MPPMRP.M_RequisitionLine(rl, false);
- }
- //
- else if (po instanceof MForecastLine && isChange)
- {
- MForecastLine fl = (MForecastLine)po;
- MPPMRP.M_ForecastLine(fl, false);
- }
- //
- else if (po instanceof MDDOrderLine && isChange)
- {
- MDDOrderLine ol = (MDDOrderLine)po;
- MPPMRP.DD_Order_Line(ol , false);
- }
- //
- else if (po instanceof MPPOrder && isChange)
- {
- MPPOrder order = (MPPOrder)po;
- MPPMRP.PP_Order(order, false);
- }
- //
- else if (po instanceof MPPOrderBOMLine && isChange)
- {
- MPPOrderBOMLine obl = (MPPOrderBOMLine)po;
- MPPMRP.PP_Order_BOMLine(obl, false);
- }
- //
- return null;
- } // modelChange
-
- public String docValidate (PO po, int timing)
- {
- log.info(po.get_TableName() + " Timing: "+timing);
- if(po instanceof MInOut && timing == TIMING_BEFORE_COMPLETE)
- {
- MInOut inout = (MInOut)po;
- if(inout.isSOTrx())
- {
- final String whereClause = "C_OrderLine_ID IS NOT NULL"
- +" AND EXISTS (SELECT 1 FROM M_InOutLine iol"
- +" WHERE iol.M_InOut_ID=? AND PP_Order.C_OrderLine_ID = iol.C_OrderLine_ID) AND "
- + MPPOrder.COLUMNNAME_DocStatus + " = ?";
- Collection orders = new Query(po.getCtx(), MPPOrder.Table_Name, whereClause, po.get_TrxName())
- .setParameters(new Object[]{inout.getM_InOut_ID(), MPPOrder.DOCSTATUS_InProgress})
- .list();
- for(MPPOrder order : orders)
- {
- String description = order.getDescription() != null ? order.getDescription() : ""
- + Msg.translate(inout.getCtx(), MInOut.COLUMNNAME_M_InOut_ID)
- + " : "
- + Msg.translate(inout.getCtx(), MInOut.COLUMNNAME_DocumentNo);
-
- order.setDescription(description);
- order.closeIt();
- order.setDocStatus(MPPOrder.DOCACTION_Close);
- order.setDocAction(MPPOrder.DOCACTION_None);
- order.saveEx();
-
- }
- }
- }
- else if (po instanceof MInOut && timing == TIMING_AFTER_COMPLETE)
- {
- MInOut inout = (MInOut)po;
-
- for (MInOutLine line : inout.getLines())
- {
- final String whereClause = "C_OrderLine_ID=? AND PP_Cost_Collector_ID IS NOT NULL";
- Collection olines = new Query(po.getCtx(), MOrderLine.Table_Name, whereClause, po.get_TrxName())
- .setParameters(new Object[]{line.getC_OrderLine_ID()})
- .list();
- for (MOrderLine oline : olines)
- {
- if(oline.getQtyOrdered().compareTo(oline.getQtyDelivered()) >= 0)
- {
- MPPCostCollector cc = new MPPCostCollector(po.getCtx(), oline.getPP_Cost_Collector_ID(), po.get_TrxName());
- String docStatus = cc.completeIt();
- cc.setDocStatus(docStatus);
- cc.setDocAction(MPPCostCollector.DOCACTION_Close);
- cc.saveEx();
- return null;
- }
- }
- }
- }
- return null;
- } // docValidate
-
- /**
- * User Login.
- * Called when preferences are set
- * @param AD_Org_ID org
- * @param AD_Role_ID role
- * @param AD_User_ID user
- * @return error message or null
- */
- public String login (int AD_Org_ID, int AD_Role_ID, int AD_User_ID)
- {
- return null;
- } // login
-
- /**
- * Get Client to be monitored
- * @return AD_Client_ID client
- */
- public int getAD_Client_ID()
- {
- return m_AD_Client_ID;
- } // getAD_Client_ID
-} // LiberoValidator
diff --git a/base/src/org/eevolution/model/MDDNetworkDistribution.java b/base/src/org/eevolution/model/MDDNetworkDistribution.java
deleted file mode 100644
index 3a07b7f818..0000000000
--- a/base/src/org/eevolution/model/MDDNetworkDistribution.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * Copyright (C) 1999-2007 ComPiere, Inc. All Rights Reserved. *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2008 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, SC ARHIPAC SERVICE SRL *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import org.compiere.model.Query;
-import org.compiere.util.CCache;
-
-/**
- * Network Distribution
- * @author Victor Perez, e-Evolution,SC
- * @author Teo Sarca, SC ARHIPAC SERVICE SRL
- */
-public class MDDNetworkDistribution extends X_DD_NetworkDistribution
-{
- private static final long serialVersionUID = 1L;
- private static CCache s_cache = new CCache(MDDNetworkDistribution.Table_Name, 50);
-
- /** Standard Constructor */
- public MDDNetworkDistribution (Properties ctx, int DD_NetworkDistribution_ID, String trxName)
- {
- super (ctx, DD_NetworkDistribution_ID, trxName);
- if (DD_NetworkDistribution_ID == 0)
- {
- }
- }
-
- /** Load Constructor */
- public MDDNetworkDistribution (Properties ctx, ResultSet rs, String trxName)
- {
- super (ctx, rs, trxName);
- }
-
- /** Network Lines */
- private MDDNetworkDistributionLine[] m_lines = null;
-
- /**
- * Get from Cache
- * @param ctx context
- * @param M_Warehouse_ID id
- * @return warehouse
- */
- public static MDDNetworkDistribution get (Properties ctx, int DD_NetworkDistribution_ID)
- {
- MDDNetworkDistribution retValue = (MDDNetworkDistribution)s_cache.get(DD_NetworkDistribution_ID);
- if (retValue != null)
- return retValue;
- //
- retValue = new MDDNetworkDistribution (ctx,DD_NetworkDistribution_ID, null);
- s_cache.put (DD_NetworkDistribution_ID, retValue);
- return retValue;
- } // get
-
- /**
- * Get Lines
- * @return array of lines MDDNetworkDistributionLine
- */
- public MDDNetworkDistributionLine[] getLines()
- {
- if (m_lines != null)
- return m_lines;
-
- List
- list = new Query(getCtx(), MDDNetworkDistributionLine.Table_Name, "DD_NetworkDistribution_ID=?", get_TrxName())
- .setParameters(new Object[]{get_ID()})
- .setOrderBy("PriorityNo, M_Shipper_ID")
- .list();
- m_lines = list.toArray (new MDDNetworkDistributionLine[list.size()]);
- return m_lines;
- } // getLines
-
-
- /**
- * Get Lines
- * @param M_Warehouse_ID ID Warehouse
- * @return array of lines MDDNetworkDistributionLine
- */
- public MDDNetworkDistributionLine[] getLines(int M_Warehouse_ID)
- {
- List list = new ArrayList();
- for (MDDNetworkDistributionLine line : getLines())
- {
- if (line.getM_Warehouse_ID() == M_Warehouse_ID)
- list.add(line);
- }
- return list.toArray(new MDDNetworkDistributionLine[list.size()]);
- } // getLines
-}
\ No newline at end of file
diff --git a/base/src/org/eevolution/model/MDDNetworkDistributionLine.java b/base/src/org/eevolution/model/MDDNetworkDistributionLine.java
deleted file mode 100644
index b956004fd5..0000000000
--- a/base/src/org/eevolution/model/MDDNetworkDistributionLine.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * Copyright (C) 1999-2007 ComPiere, Inc. All Rights Reserved. *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2008 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-/**
- * Network Distribution
- * @author Victor Perez,e-Evolution,SC
- */
-public class MDDNetworkDistributionLine extends X_DD_NetworkDistributionLine
-{
- private static final long serialVersionUID = 1L;
-
- /** Standard Constructor */
- public MDDNetworkDistributionLine (Properties ctx, int DD_NetworkDistributionLine_ID, String trxName)
- {
- super (ctx, DD_NetworkDistributionLine_ID, trxName);
- if (DD_NetworkDistributionLine_ID == 0)
- {
- }
- }
-
- /** Load Constructor */
- public MDDNetworkDistributionLine (Properties ctx, ResultSet rs, String trxName)
- {
- super (ctx, rs, trxName);
- }
-}
\ No newline at end of file
diff --git a/base/src/org/eevolution/model/MEXPFormat.java b/base/src/org/eevolution/model/MEXPFormat.java
deleted file mode 100644
index 30f2f30cc6..0000000000
--- a/base/src/org/eevolution/model/MEXPFormat.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * - Antonio Cañaveral, e-Evolution
- * *
- * Sponsors: *
- * - e-Evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-
-package org.eevolution.model;
-
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.logging.Level;
-
-import org.compiere.model.MTable;
-import org.compiere.model.Query;
-import org.compiere.util.CCache;
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-
-/**
- * @author Trifon N. Trifonov
- * @author Antonio Cañaveral, e-Evolution
- * [ 2195090 ] Implementing ExportFormat cache
- * http://sourceforge.net/tracker/index.php?func=detail&aid=2195090&group_id=176962&atid=879335
- */
-public class MEXPFormat extends X_EXP_Format {
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- /** Static Logger */
- private static CLogger s_log = CLogger.getCLogger (MEXPFormat.class);
-
- private static CCache s_cache = new CCache("MEXPFormat", 50 );
-
- public MEXPFormat(Properties ctx, int EXP_Format_ID, String trxName) {
- super(ctx, EXP_Format_ID, trxName);
- }
-
- public MEXPFormat(Properties ctx, ResultSet rs, String trxName) {
- super (ctx, rs, trxName);
- }
-
- public MEXPFormatLine[] getFormatLines() {
- return getFormatLinesOrderedBy(X_EXP_FormatLine.COLUMNNAME_Position);
- }
-
- public MEXPFormatLine[] getFormatLinesOrderedBy(String orderBy) {
- List resultList = new ArrayList();
-
- StringBuffer sql = new StringBuffer("SELECT * ")
- .append(" FROM ").append(X_EXP_FormatLine.Table_Name)
- .append(" WHERE ").append(X_EXP_FormatLine.COLUMNNAME_EXP_Format_ID).append("=?")
- .append(" AND IsActive = ?")
- .append(" ORDER BY ").append(orderBy);
- PreparedStatement pstmt = null;
- MEXPFormatLine exportLine = null;
- try {
- pstmt = DB.prepareStatement (sql.toString(), get_TrxName());
- pstmt.setInt(1, getEXP_Format_ID());
- pstmt.setString(2, "Y");
- ResultSet rs = pstmt.executeQuery ();
- while ( rs.next() ) {
- exportLine = new MEXPFormatLine (getCtx(), rs, get_TrxName());
- resultList.add(exportLine);
- }
- rs.close ();
- pstmt.close ();
- pstmt = null;
- } catch (SQLException e) {
- s_log.log(Level.SEVERE, sql.toString(), e);
- } finally {
- try {
- if (pstmt != null) pstmt.close ();
- pstmt = null;
- } catch (Exception e) { pstmt = null; }
- }
-
- MEXPFormatLine[] result = (MEXPFormatLine[])resultList.toArray( new MEXPFormatLine[0]);
- return result;
- }
-
- public MEXPFormatLine[] getUniqueColumns() throws SQLException {
- List resultList = new ArrayList();
-
- StringBuffer sql = new StringBuffer("SELECT * ")
- .append(" FROM ").append(X_EXP_FormatLine.Table_Name)
- .append(" WHERE ").append(X_EXP_FormatLine.COLUMNNAME_EXP_Format_ID).append("= ?")
- .append(" AND IsActive = ?")
- .append(" AND ").append(X_EXP_FormatLine.COLUMNNAME_IsPartUniqueIndex).append("= ?")
- .append(" ORDER BY ").append(X_EXP_FormatLine.COLUMNNAME_Position);
- PreparedStatement pstmt = null;
- MEXPFormatLine exportLine = null;
- log.info(sql.toString());
-
- log.info("pstmt.setInt(1, getEXP_Format_ID() = " + getEXP_Format_ID());
- try {
- pstmt = DB.prepareStatement (sql.toString(), get_TrxName());
- pstmt.setInt(1, getEXP_Format_ID());
- pstmt.setString(2, "Y");
- pstmt.setString(3, "Y");
- ResultSet rs = pstmt.executeQuery ();
- while ( rs.next() ) {
- exportLine = new MEXPFormatLine (getCtx(), rs, get_TrxName());
- resultList.add(exportLine);
- }
- rs.close ();
- pstmt.close ();
- pstmt = null;
- } catch (SQLException e) {
- s_log.log(Level.SEVERE, sql.toString(), e);
- throw e;
- } finally {
- try {
- if (pstmt != null) pstmt.close ();
- pstmt = null;
- } catch (Exception e) { pstmt = null; }
- }
-
- MEXPFormatLine[] result = (MEXPFormatLine[])resultList.toArray( new MEXPFormatLine[0]);
- return result;
- }
-
-
- public static MEXPFormat getFormatByValueAD_Client_IDAndVersion(Properties ctx, String value, int AD_Client_ID, String version, String trxName)
- throws SQLException
- {
- String key = new String(value+version);
- MEXPFormat retValue=null;
- if(retValue!=null)
- return retValue;
-
- StringBuffer whereCluse = new StringBuffer(X_EXP_Format.COLUMNNAME_Value).append("=?")
- .append(" AND AD_Client_ID = ?")
- .append(" AND ").append(X_EXP_Format.COLUMNNAME_Version).append(" = ?");
-
- retValue = (MEXPFormat) new Query(ctx,X_EXP_Format.Table_Name,whereCluse.toString(),trxName)
- .setParameters(new Object[] {value,AD_Client_ID,version}).first();
- s_cache.put (key, retValue);
-
- return retValue;
- }
-
- public static MEXPFormat getFormatByAD_Client_IDAD_Table_IDAndVersion(Properties ctx, int AD_Client_ID, int AD_Table_ID, String version, String trxName) throws SQLException
- {
- String key = new String(MTable.getTableName(ctx, AD_Table_ID)+version);
- MEXPFormat retValue=null;
-
- retValue = (MEXPFormat)s_cache.get(key);
- if(retValue!=null)
- return retValue;
-
- StringBuffer whereCluse = new StringBuffer(" AD_Client_ID = ? ")
- .append(" AND ").append(X_EXP_Format.COLUMNNAME_AD_Table_ID).append(" = ? ")
- .append(" AND ").append(X_EXP_Format.COLUMNNAME_Version).append(" = ?");
-
- retValue = (MEXPFormat) new Query(ctx,X_EXP_Format.Table_Name,whereCluse.toString(),trxName)
- .setParameters(new Object[] {AD_Client_ID,AD_Table_ID,version}).first();
-
- s_cache.put (key, retValue);
-
- return retValue;
- }
-
- @Override
- public String toString() {
- StringBuffer sb = new StringBuffer ("X_EXP_Format[ID=").append(get_ID()).append("; Value = "+getValue()+"]");
- return sb.toString();
-
- }
-
- /**
- * Before Delete
- * @return true of it can be deleted
- */
- protected boolean beforeDelete ()
- {
- int[] ids =MEXPFormatLine.getAllIDs(MEXPFormatLine.Table_Name, "EXP_Format_ID="+getEXP_Format_ID(), get_TrxName());
- for (int id : ids)
- {
- MEXPFormatLine line = new MEXPFormatLine(getCtx(), id, get_TrxName());
- line.delete(true);
- }
- return true;
- } // beforeDelete
-}
diff --git a/base/src/org/eevolution/model/MEXPFormatLine.java b/base/src/org/eevolution/model/MEXPFormatLine.java
deleted file mode 100644
index 134e1d2dc9..0000000000
--- a/base/src/org/eevolution/model/MEXPFormatLine.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - e-Evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-
-package org.eevolution.model;
-
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Properties;
-import java.util.logging.Level;
-
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-
-/**
- * @author Trifon N. Trifonov
- */
-public class MEXPFormatLine extends X_EXP_FormatLine {
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- /** Static Logger */
- private static CLogger s_log = CLogger.getCLogger (X_EXP_FormatLine.class);
-
-
-
- public MEXPFormatLine(Properties ctx, int C_EDIFormat_Line_ID, String trxName) {
- super(ctx, C_EDIFormat_Line_ID, trxName);
- }
-
- public MEXPFormatLine (Properties ctx, ResultSet rs, String trxName) {
- super (ctx, rs, trxName);
- }
-
- @Override
- public String toString() {
- StringBuffer sb = new StringBuffer ("X_EXP_FormatLine[ID=").append(get_ID()).append("; Value="+getValue()+"; Type="+getType()+"]");
- return sb.toString();
- }
-
- public static MEXPFormatLine getFormatLineByValue(Properties ctx, String value, int EXP_Format_ID, String trxName)
- throws SQLException
- {
- MEXPFormatLine result = null;
-
- StringBuffer sql = new StringBuffer("SELECT * ")
- .append(" FROM ").append(X_EXP_FormatLine.Table_Name)
- .append(" WHERE ").append(X_EXP_Format.COLUMNNAME_Value).append("=?")
- //.append(" AND IsActive = ?")
- //.append(" AND AD_Client_ID = ?")
- .append(" AND ").append(X_EXP_Format.COLUMNNAME_EXP_Format_ID).append(" = ?")
- ;
- PreparedStatement pstmt = null;
- try {
- pstmt = DB.prepareStatement (sql.toString(), trxName);
- pstmt.setString(1, value);
- pstmt.setInt(2, EXP_Format_ID);
- ResultSet rs = pstmt.executeQuery ();
- if ( rs.next() ) {
- result = new MEXPFormatLine (ctx, rs, trxName);
- }
- rs.close ();
- pstmt.close ();
- pstmt = null;
- } catch (SQLException e) {
- s_log.log(Level.SEVERE, sql.toString(), e);
- throw e;
- } finally {
- try {
- if (pstmt != null) pstmt.close ();
- pstmt = null;
- } catch (Exception e) { pstmt = null; }
- }
-
- return result;
- }
-}
diff --git a/base/src/org/eevolution/model/MEXPProcessor.java b/base/src/org/eevolution/model/MEXPProcessor.java
deleted file mode 100644
index b506ef23f4..0000000000
--- a/base/src/org/eevolution/model/MEXPProcessor.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - e-Evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-
-package org.eevolution.model;
-
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.logging.Level;
-
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-
-/**
- * @author Trifon N. Trifonov
- */
-public class MEXPProcessor extends X_EXP_Processor {
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- /** Static Logger */
- private static CLogger s_log = CLogger.getCLogger (MEXPProcessor.class);
-
-
- public MEXPProcessor(Properties ctx, int EXP_Processor_ID, String trxName) {
- super(ctx, EXP_Processor_ID, trxName);
- }
-
- public MEXPProcessor(Properties ctx, ResultSet rs, String trxName) {
- super (ctx, rs, trxName);
- }
-
- public X_EXP_ProcessorParameter[] getEXP_ProcessorParameters(String trxName) {
- List resultList = new ArrayList();
-
- StringBuffer sql = new StringBuffer("SELECT * ")
- .append(" FROM ").append(X_EXP_ProcessorParameter.Table_Name)
- .append(" WHERE ").append(X_EXP_ProcessorParameter.COLUMNNAME_EXP_Processor_ID).append("=?") // # 1
- .append(" AND IsActive = ?") // # 2
- //.append(" ORDER BY ").append(X_EXP_ProcessorParameter.COLUMNNAME_)
- ;
- PreparedStatement pstmt = null;
- X_EXP_ProcessorParameter processorParameter = null;
- try {
- pstmt = DB.prepareStatement (sql.toString(), trxName);
- pstmt.setInt(1, getEXP_Processor_ID());
- pstmt.setString(2, "Y");
- ResultSet rs = pstmt.executeQuery ();
- while ( rs.next() ) {
- processorParameter = new X_EXP_ProcessorParameter (getCtx(), rs, trxName);
- resultList.add(processorParameter);
- }
- rs.close ();
- pstmt.close ();
- pstmt = null;
- } catch (SQLException e) {
- s_log.log(Level.SEVERE, sql.toString(), e);
- } finally {
- try {
- if (pstmt != null) pstmt.close ();
- pstmt = null;
- } catch (Exception e) { pstmt = null; }
- }
- X_EXP_ProcessorParameter[] result = (X_EXP_ProcessorParameter[])resultList.toArray( new X_EXP_ProcessorParameter[0]);
- return result;
- }
-
-
-}
diff --git a/base/src/org/eevolution/model/MEXPProcessorParameter.java b/base/src/org/eevolution/model/MEXPProcessorParameter.java
deleted file mode 100644
index 30f742195c..0000000000
--- a/base/src/org/eevolution/model/MEXPProcessorParameter.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - e-Evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-import org.compiere.util.CLogger;
-
-/**
- * @author Trifon N. Trifonov
- */
-public class MEXPProcessorParameter extends X_EXP_ProcessorParameter {
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- /** Static Logger */
- private static CLogger s_log = CLogger.getCLogger (MEXPProcessorParameter.class);
-
-
- public MEXPProcessorParameter(Properties ctx, int EXP_ProcessorParameter_ID, String trxName) {
- super(ctx, EXP_ProcessorParameter_ID, trxName);
- }
-
- public MEXPProcessorParameter(Properties ctx, ResultSet rs, String trxName) {
- super (ctx, rs, trxName);
- }
-
-}
diff --git a/base/src/org/eevolution/model/MEXPProcessorType.java b/base/src/org/eevolution/model/MEXPProcessorType.java
deleted file mode 100644
index a768ad0c8e..0000000000
--- a/base/src/org/eevolution/model/MEXPProcessorType.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - e-Evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-import org.compiere.util.CLogger;
-
-/**
- * @author Trifon N. Trifonov
- */
-public class MEXPProcessorType extends X_EXP_Processor_Type {
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- /** Static Logger */
- private static CLogger s_log = CLogger.getCLogger (MEXPProcessorType.class);
-
-
- public MEXPProcessorType(Properties ctx, int EXP_Processor_Type_ID, String trxName) {
- super(ctx, EXP_Processor_Type_ID, trxName);
- }
-
- public MEXPProcessorType(Properties ctx, ResultSet rs, String trxName) {
- super (ctx, rs, trxName);
- }
-
-}
diff --git a/base/src/org/eevolution/model/MHRAttribute.java b/base/src/org/eevolution/model/MHRAttribute.java
deleted file mode 100644
index 1535393f0e..0000000000
--- a/base/src/org/eevolution/model/MHRAttribute.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * Copyright (C) 2008 SC ARHIPAC SERVICE SRL. All Rights Reserved. *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-/**
- * HR Attribute Model
- * @author Cristina Ghita, www.arhipac.ro
- *
- */
-public class MHRAttribute extends X_HR_Attribute
-{
- /**
- *
- */
- private static final long serialVersionUID = 3783311896401143394L;
-
- /**
- * @param ctx
- * @param HR_Attribute_ID
- * @param trxName
- */
- public MHRAttribute(Properties ctx, int HR_Attribute_ID, String trxName)
- {
- super(ctx, HR_Attribute_ID, trxName);
- }
-
- /**
- * @param ctx
- * @param rs
- * @param trxName
- */
- public MHRAttribute(Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-
- @Override
- public I_HR_Concept getHR_Concept()
- {
- return MHRConcept.get(getCtx(), getHR_Concept_ID());
- }
-}
diff --git a/base/src/org/eevolution/model/MHRConcept.java b/base/src/org/eevolution/model/MHRConcept.java
deleted file mode 100644
index 6bf9436d2b..0000000000
--- a/base/src/org/eevolution/model/MHRConcept.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import org.compiere.model.Query;
-import org.compiere.util.CCache;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.compiere.util.Util;
-
-/**
- * Payroll Concept for HRayroll Module
- *
- * @author Oscar Gómez Islas
- * @version $Id: HRPayroll.java,v 1.0 2005/10/05 ogomezi
- *
- * @author Cristina Ghita, www.arhipac.ro
- */
-public class MHRConcept extends X_HR_Concept
-{
- /**
- *
- */
- private static final long serialVersionUID = 8736925494645172953L;
-
- /** Cache */
- private static CCache s_cache = new CCache(Table_Name, 100);
- /** Cache by Value */
- private static CCache s_cacheValue = new CCache(Table_Name+"_Value", 100);
-
- public static MHRConcept get(Properties ctx, int HR_Concept_ID)
- {
- if (HR_Concept_ID <= 0)
- return null;
- //
- MHRConcept concept = s_cache.get(HR_Concept_ID);
- if (concept != null)
- return concept;
- //
- concept = new MHRConcept(ctx, HR_Concept_ID, null);
- if (concept.get_ID() != HR_Concept_ID)
- {
- concept = null;
- }
- else
- {
- s_cache.put(HR_Concept_ID, concept);
- }
- return concept;
- }
-
- /**
- * Get Concept by Value
- * @param ctx
- * @param value
- * @return
- */
- public static MHRConcept forValue(Properties ctx, String value)
- {
- if (Util.isEmpty(value, true))
- {
- return null;
- }
-
- int AD_Client_ID = Env.getAD_Client_ID(ctx);
- final String key = AD_Client_ID+"#"+value;
- MHRConcept concept = s_cacheValue.get(key);
- if (concept != null)
- {
- return concept;
- }
-
- final String whereClause = COLUMNNAME_Value+"=? AND AD_Client_ID IN (?,?)";
- concept = new Query(ctx, Table_Name, whereClause, null)
- .setParameters(new Object[]{value, 0, AD_Client_ID})
- .setOnlyActiveRecords(true)
- .setOrderBy("AD_Client_ID DESC")
- .first();
- if (concept != null)
- {
- s_cacheValue.put(key, concept);
- s_cache.put(concept.get_ID(), concept);
- }
- return concept;
- }
-
- /**
- * Get Employee's of Payroll Type
- * @param payroll_id Payroll ID
- * @param department_id Department ID
- * @param employee_id Employee_ID
- * @param sqlwhere Clause SQLWhere
- * @return lines
- */
- public static MHRConcept[] getConcepts (int payroll_id, int department_id, int employee_id, String sqlWhere)
- {
- Properties ctx = Env.getCtx();
- List params = new ArrayList();
- StringBuffer whereClause = new StringBuffer();
-
- whereClause.append("AD_Client_ID=?");
- params.add(Env.getAD_Client_ID(Env.getCtx()));
-
- whereClause.append(" AND EXISTS (SELECT 1 FROM HR_Attribute a WHERE a.HR_Concept_ID=HR_Concept.HR_Concept_ID ")
- .append(" AND (a.HR_Payroll_ID=? OR a.HR_Payroll_ID IS NULL) )");
- params.add(payroll_id);
-
- if (department_id != 0 )
- {
- whereClause.append(" AND HR_Concept.HR_Department_ID=?");
- params.add(department_id);
- }
-
- if (Util.isEmpty(sqlWhere))
- {
- whereClause.append(sqlWhere);
- }
-
- List list = new Query(ctx, Table_Name, whereClause.toString(), null)
- .setParameters(params)
- .setOnlyActiveRecords(true)
- .setOrderBy(COLUMNNAME_Value)
- .list();
- return list.toArray(new MHRConcept[list.size()]);
- } // getConcept
-
- /**
- * Standard Constructor
- * @param ctx context
- * @param HR_Concept_ID
- * @param trxName
- */
- public MHRConcept (Properties ctx, int HR_Concept_ID, String trxName)
- {
- super (ctx, HR_Concept_ID, trxName);
- if (HR_Concept_ID == 0)
- {
- setValue("");
- setName("");
- setDescription("");
- setIsEmployee(false);
- setIsPrinted(false);
- setHR_Payroll_ID(0);
- setHR_Job_ID(0);
- setHR_Department_ID(0);
- }
- } // HRConcept
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set
- * @param trxName
- */
- public MHRConcept (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-
- public int getConceptAccountCR()
- {
- String sql = " HR_Expense_Acct FROM HR_Concept c " +
- " INNER JOIN HR_Concept_Acct ca ON (c.HR_Concept_ID=ca.HR_Concept_ID)" +
- " WHERE c.HR_Concept_ID " + getHR_Concept_ID();
- int result = DB.getSQLValue("ConceptCR", sql);
- if (result > 0)
- return result;
- return 0;
- }
-
- public int getConceptAccountDR()
- {
- String sql = " HR_Revenue_Acct FROM HR_Concept c " +
- " INNER JOIN HR_Concept_Acct ca ON (c.HR_Concept_ID=ca.HR_Concept_ID)" +
- " WHERE c.HR_Concept_ID " + getHR_Concept_ID();
- int result = DB.getSQLValue("ConceptCR", sql);
- if (result > 0)
- return result;
- return 0;
- }
-
-} // HRConcept
\ No newline at end of file
diff --git a/base/src/org/eevolution/model/MHRConceptCategory.java b/base/src/org/eevolution/model/MHRConceptCategory.java
deleted file mode 100644
index 7ded7d8070..0000000000
--- a/base/src/org/eevolution/model/MHRConceptCategory.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- *
- */
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-import org.compiere.model.Query;
-import org.compiere.util.CCache;
-import org.compiere.util.Env;
-
-/**
- * HR Concept Category
- *
- * @author Cristina Ghita, www.arhipac.ro
- */
-public class MHRConceptCategory extends X_HR_Concept_Category
-{
-
- /**
- *
- */
- private static final long serialVersionUID = 8470029939291479283L;
-
- private static CCache s_cache = new CCache(Table_Name, 20);
- private static CCache s_cacheValue = new CCache(Table_Name+"_Value", 20);
-
- public static MHRConceptCategory get(Properties ctx, int HR_Concept_Category_ID)
- {
- if (HR_Concept_Category_ID <= 0)
- {
- return null;
- }
- // Try cache
- MHRConceptCategory cc = s_cache.get(HR_Concept_Category_ID);
- if (cc != null)
- {
- return cc;
- }
- // Load from DB
- cc = new MHRConceptCategory(ctx, HR_Concept_Category_ID, null);
- if (cc.get_ID() != HR_Concept_Category_ID)
- {
- return null;
- }
- if (cc != null)
- {
- s_cache.put(HR_Concept_Category_ID, cc);
- }
- return cc;
- }
-
- public static MHRConceptCategory forValue(Properties ctx, String value)
- {
- if (value == null)
- {
- return null;
- }
- final int AD_Client_ID = Env.getAD_Client_ID(ctx);
- // Try cache
- final String key = AD_Client_ID+"#"+value;
- MHRConceptCategory cc = s_cacheValue.get(key);
- if (cc != null)
- {
- return cc;
- }
- // Try database
- final String whereClause = COLUMNNAME_Value+"=? AND AD_Client_ID IN (?,?)";
- cc = new Query(ctx, Table_Name, whereClause, null)
- .setParameters(new Object[]{value, 0, AD_Client_ID})
- .setOnlyActiveRecords(true)
- .setOrderBy("AD_Client_ID DESC")
- .first();
- if (cc != null)
- {
- s_cacheValue.put(key, cc);
- s_cache.put(cc.get_ID(), cc);
- }
- return cc;
- }
-
- public MHRConceptCategory(Properties ctx, int HR_Concept_Category_ID, String trxName)
- {
- super(ctx, HR_Concept_Category_ID, trxName);
- }
- public MHRConceptCategory(Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-}
diff --git a/base/src/org/eevolution/model/MHRDepartment.java b/base/src/org/eevolution/model/MHRDepartment.java
deleted file mode 100644
index 4bc5dad095..0000000000
--- a/base/src/org/eevolution/model/MHRDepartment.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * Copyright (C) 2008 SC ARHIPAC SERVICE SRL. All Rights Reserved. *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.List;
-import java.util.Properties;
-
-import org.compiere.model.Query;
-import org.compiere.util.CCache;
-import org.compiere.util.Env;
-
-/**
- * @author Cristina Ghita, www.arhipac.ro
- *
- */
-public class MHRDepartment extends X_HR_Department
-{
- /**
- *
- */
- private static final long serialVersionUID = 83878114891519775L;
-
- public static List getAll(Properties ctx)
- {
- List list = new Query(Env.getCtx(), X_HR_Department.Table_Name, "AD_Client_ID=?", null)
- .setParameters(new Object[] {Env.getAD_Client_ID(ctx)})
- .setOrderBy(COLUMNNAME_Name)
- .list();
- for (MHRDepartment dep : list)
- {
- s_cache.put(dep.get_ID(), dep);
- }
- return list;
- }
-
- public static MHRDepartment get(Properties ctx, int HR_Department_ID)
- {
- if (HR_Department_ID <= 0)
- {
- return null;
- }
-
- if (s_cache.size() == 0)
- {
- getAll(ctx);
- }
- MHRDepartment dep = s_cache.get(HR_Department_ID);
- if (dep != null)
- {
- return dep;
- }
- dep = new MHRDepartment(ctx, HR_Department_ID, null);
- if (dep.get_ID() == HR_Department_ID)
- {
- s_cache.put(HR_Department_ID, dep);
- }
- return dep;
- }
-
- private static CCache s_cache = new CCache(Table_Name, 50, 0);
-
- /**
- * @param ctx
- * @param HR_Department_ID
- * @param trxName
- */
- public MHRDepartment(Properties ctx, int HR_Department_ID, String trxName)
- {
- super(ctx, HR_Department_ID, trxName);
- }
-
- /**
- * @param ctx
- * @param rs
- * @param trxName
- */
- public MHRDepartment(Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-}
diff --git a/base/src/org/eevolution/model/MHREmployee.java b/base/src/org/eevolution/model/MHREmployee.java
deleted file mode 100644
index 101b2e87fc..0000000000
--- a/base/src/org/eevolution/model/MHREmployee.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import org.compiere.model.MBPartner;
-import org.compiere.model.Query;
-import org.compiere.util.CCache;
-import org.compiere.util.Env;
-
-
-/**
- * HR Employee Model
- *
- * @author Victor Perez
- * @author Cristina Ghita, www.arhipac.ro
- */
-public class MHREmployee extends X_HR_Employee
-{
- /**
- *
- */
- private static final long serialVersionUID = -7083160315471023587L;
-
- public static MHREmployee get(Properties ctx, int HR_Employee_ID)
- {
- if (HR_Employee_ID <= 0)
- return null;
- //
- MHREmployee employee = s_cache.get(HR_Employee_ID);
- if (employee != null)
- return employee;
- //
- employee = new MHREmployee(ctx, HR_Employee_ID, null);
- if (employee.get_ID() != HR_Employee_ID)
- {
- employee = null;
- }
- else
- {
- s_cache.put(HR_Employee_ID, employee);
- }
- return employee;
- }
-
- /**
- * Get Employees of Process
- * @param p HR Process
- * @return Array of Business Partners
- */
- public static MBPartner[] getEmployees (MHRProcess p)
- {
- List params = new ArrayList();
- StringBuffer whereClause = new StringBuffer();
- whereClause.append(" EXISTS (SELECT 1 FROM HR_Employee e WHERE e.C_BPartner_ID = C_BPartner.C_BPartner_ID ");
-
- // Just active employee
- whereClause.append(" AND e.IsActive=? ");
- params.add(true);
-
- // This payroll not content periods, NOT IS a Regular Payroll > ogi-cd 28Nov2007
- if(p.getHR_Payroll_ID() != 0 && p.getHR_Period_ID() != 0)
- {
- whereClause.append(" AND (e.HR_Payroll_ID IS NULL OR e.HR_Payroll_ID=?) " );
- params.add(p.getHR_Payroll_ID());
- }
-
- // HR Period
- if(p.getHR_Period_ID() != 0)
- {
- whereClause.append(" AND e.StartDate <=? ");
- params.add(new X_HR_Period(p.getCtx(), p.getHR_Period_ID(), null).getEndDate());
- }
- else
- {
- whereClause.append(" AND e.StartDate <=? ");
- params.add(p.getDateAcct());
- }
-
- // Selected Department
- if (p.getHR_Department_ID() != 0)
- {
- whereClause.append(" AND e.HR_Department_ID =? ");
- params.add(p.getHR_Department_ID());
- }
-
- whereClause.append(" ) "); // end select from HR_Employee
-
- // Selected Employee
- if (p.getC_BPartner_ID() != 0)
- {
- whereClause.append(" AND C_BPartner_ID =? ");
- params.add(p.getC_BPartner_ID());
- }
-
- List list = new Query(p.getCtx(), MBPartner.Table_Name, whereClause.toString(), p.get_TrxName())
- .setParameters(params)
- .setOnlyActiveRecords(true)
- .setOrderBy(COLUMNNAME_Name)
- .list();
-
- return list.toArray(new MBPartner[list.size()]);
- } // getEmployees
-
- public static MHREmployee getActiveEmployee(Properties ctx, int C_BPartner_ID, String trxName)
- {
- return new Query(ctx, Table_Name, COLUMNNAME_C_BPartner_ID+"=?", trxName)
- .setOnlyActiveRecords(true)
- .setParameters(new Object[]{C_BPartner_ID})
- .setOrderBy(COLUMNNAME_HR_Employee_ID+" DESC") // just in case...
- .first();
- }
-
- /** Cache */
- private static CCache s_cache = new CCache(Table_Name, 1000);
-
- /**************************************************************************
- * Invoice Line Constructor
- * @param ctx context
- * @param HR_Employee_ID ID Employee
- * @param trxName transaction name
- */
- public MHREmployee (Properties ctx, int HR_Employee_ID, String trxName) //--
- {
- super (ctx, HR_Employee_ID, trxName);
- if (HR_Employee_ID == 0)
- {
- setClientOrg(Env.getAD_Client_ID(Env.getCtx()), Env.getAD_Org_ID(Env.getCtx()));
- }
- } // MHREmployee
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set record
- */
- public MHREmployee (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- } // MHREmployee
-} // MHREmployee
diff --git a/base/src/org/eevolution/model/MHRMovement.java b/base/src/org/eevolution/model/MHRMovement.java
deleted file mode 100644
index 5e42af1858..0000000000
--- a/base/src/org/eevolution/model/MHRMovement.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.model;
-import java.math.BigDecimal;
-import java.sql.ResultSet;
-import java.sql.Timestamp;
-import java.util.Properties;
-
-import org.adempiere.exceptions.AdempiereException;
-import org.compiere.util.Env;
-import org.compiere.util.Util;
-
-/**
- * Payroll Concept for HRayroll Module
- *
- * @author Oscar Gómez Islas
- * @author Teo Sarca, www.arhipac.ro
- */
-public class MHRMovement extends X_HR_Movement
-{
- /**
- *
- */
- private static final long serialVersionUID = 6705848510397126140L;
-
- /**
- * Standard Constructor
- * @param ctx context
- * @param HR_Concept_ID
- * @param trxName
- */
- public MHRMovement (Properties ctx, int HR_Movement_ID, String trxName)
- {
- super (ctx, HR_Movement_ID, trxName);
- }
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set
- * @param trxName
- */
- public MHRMovement (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-
- public MHRMovement (MHRProcess proc, MHRConcept concept)
- {
- this(proc.getCtx(), 0, proc.get_TrxName());
- }
-
- public void addAmount(BigDecimal amount)
- {
- setAmount(getAmount().add(amount != null ? amount : Env.ZERO));
- }
-
- public void addQty(BigDecimal qty)
- {
- setQty(getAmount().add(qty != null ? qty : Env.ZERO));
- }
-
- /**
- * @return true if all movement values (Amount, Qty, Text) are empty or negative
- */
- public boolean isEmpty()
- {
- return getQty().signum() < 0
- && getAmount().signum() < 0
- && Util.isEmpty(getTextMsg());
- }
-
- /**
- * According to the concept type, it's saved in the column specified for the purpose
- * @param columnType column type (see MHRConcept.COLUMNTYPE_*)
- * @param value
- */
- public void setColumnValue(Object value)
- {
- final String columnType = getColumnType();
- if (MHRConcept.COLUMNTYPE_Quantity.equals(columnType))
- {
- BigDecimal qty = new BigDecimal(value.toString());
- setQty(qty);
- setAmount(Env.ZERO);
- }
- else if(MHRConcept.COLUMNTYPE_Amount.equals(columnType))
- {
- BigDecimal amount = new BigDecimal(value.toString());
- setAmount(amount);
- setQty(Env.ZERO);
- }
- else if(MHRConcept.COLUMNTYPE_Text.equals(columnType))
- {
- setTextMsg(value.toString().trim());
- }
- else if(MHRConcept.COLUMNTYPE_Date.equals(columnType))
- {
- if (value instanceof Timestamp)
- {
- setServiceDate((Timestamp)value);
- }
- else
- {
- setServiceDate(Timestamp.valueOf(value.toString().trim().substring(0, 10)+ " 00:00:00.0"));
- }
- }
- else
- {
- throw new AdempiereException("@NotSupported@ @ColumnType@ - "+columnType);
- }
-
- }
-} // HRMovement
\ No newline at end of file
diff --git a/base/src/org/eevolution/model/MHRPayroll.java b/base/src/org/eevolution/model/MHRPayroll.java
deleted file mode 100644
index 438dbdfdb8..0000000000
--- a/base/src/org/eevolution/model/MHRPayroll.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-import org.compiere.model.MCalendar;
-import org.compiere.model.Query;
-import org.compiere.util.CCache;
-import org.compiere.util.Env;
-import org.compiere.util.Util;
-
-/**
- * Payroll for HRayroll Module
- *
- * @author Oscar Gómez Islas
- * @version $Id: HRPayroll.java,v 1.0 2005/10/05 ogomezi
- *
- * @author Cristina Ghita, www.arhipac.ro
- */
-public class MHRPayroll extends X_HR_Payroll
-{
- /**
- *
- */
- private static final long serialVersionUID = -1407037967021019961L;
- /** Cache */
- private static CCache s_cache = new CCache(Table_Name, 10);
- /** Cache */
- private static CCache s_cacheValue = new CCache(Table_Name+"_Value", 10);
-
- /**
- * Get Payroll by Value
- * @param ctx
- * @param value
- * @return payroll
- */
- public static MHRPayroll forValue(Properties ctx, String value)
- {
- if (Util.isEmpty(value, true))
- {
- return null;
- }
-
- int AD_Client_ID = Env.getAD_Client_ID(ctx);
- final String key = AD_Client_ID+"#"+value;
- MHRPayroll payroll = s_cacheValue.get(key);
- if (payroll != null)
- {
- return payroll;
- }
-
- final String whereClause = COLUMNNAME_Value+"=? AND AD_Client_ID IN (?,?)";
- payroll = new Query(ctx, Table_Name, whereClause, null)
- .setParameters(new Object[]{value, 0, AD_Client_ID})
- .setOnlyActiveRecords(true)
- .setOrderBy("AD_Client_ID DESC")
- .first();
- if (payroll != null)
- {
- s_cacheValue.put(key, payroll);
- s_cache.put(payroll.get_ID(), payroll);
- }
- return payroll;
- }
-
- /**
- * Get Payroll by ID
- * @param ctx
- * @param HR_Payroll_ID
- * @return payroll
- */
- public static MHRPayroll get(Properties ctx, int HR_Payroll_ID)
- {
- if (HR_Payroll_ID <= 0)
- return null;
- //
- MHRPayroll payroll = s_cache.get(HR_Payroll_ID);
- if (payroll != null)
- return payroll;
- //
- payroll = new MHRPayroll(ctx, HR_Payroll_ID, null);
- if (payroll.get_ID() != HR_Payroll_ID)
- {
- payroll = null;
- }
- else
- {
- s_cache.put(HR_Payroll_ID, payroll);
- }
- return payroll;
- }
-
- /**
- * Standard Constructor
- * @param ctx context
- * @param HR_Payroll_ID id
- */
- public MHRPayroll (Properties ctx, int HR_Payroll_ID, String trxName)
- {
- super (ctx, HR_Payroll_ID, trxName);
- if (HR_Payroll_ID == 0)
- {
- setProcessing (false); // N
- }
- } // HRPayroll
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set
- */
- public MHRPayroll (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-
- /**
- * Parent Constructor
- * @param parent parent
- */
- public MHRPayroll (MCalendar calendar)
- {
- this (calendar.getCtx(), 0, calendar.get_TrxName());
- setClientOrg(calendar);
- //setC_Calendar_ID(calendar.getC_Calendar_ID());
- } // HRPayroll
-} // MPayroll
diff --git a/base/src/org/eevolution/model/MHRPayrollConcept.java b/base/src/org/eevolution/model/MHRPayrollConcept.java
deleted file mode 100644
index 079ccb331f..0000000000
--- a/base/src/org/eevolution/model/MHRPayrollConcept.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.List;
-import java.util.Properties;
-
-import org.compiere.model.Query;
-import org.compiere.util.DB;
-
-/**
- * Payroll Concept for HRayroll Module
- *
- * @author Oscar Gómez Islas
- * @version $Id: HRPayrollConcept.java,v 1.0 2005/10/05 ogomezi
- *
- * @author Cristina Ghita, www.arhipac.ro
- */
-public class MHRPayrollConcept extends X_HR_PayrollConcept
-{
- /**
- *
- */
- private static final long serialVersionUID = -4335196239535511224L;
-
- /**
- * Standard Constructor
- * @param ctx context
- * @param HR_Concept_ID id
- */
- public MHRPayrollConcept (Properties ctx, int HR_Concept_ID, String trxName)
- {
- super (ctx, HR_Concept_ID, trxName);
- } // HRConcept
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set
- */
- public MHRPayrollConcept (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-
- /**
- * Concept constructor
- * @param concept
- */
- public MHRPayrollConcept (MHRConcept concept, int payroll_id)
- {
- super(concept.getCtx(), 0, concept.get_TrxName());
- setHR_Payroll_ID(payroll_id);
- setHR_Concept_ID(concept.get_ID());
- setName(concept.getName());
- //setAD_Rule_Engine_ID(concept.getAD_Rule_Engine_ID());
- //setIsIncluded(true);
- setIsActive(true);
- }
-
- /**
- * Get Concept's of Payroll Type
- * @param p HR process
- * @return array of HR concepts
- */
- public static MHRPayrollConcept[] getPayrollConcepts (MHRProcess p)
- {
- List list = new Query(p.getCtx(), Table_Name, COLUMNNAME_HR_Payroll_ID+"=?", null)
- .setOnlyActiveRecords(true)
- .setParameters(new Object[]{p.getHR_Payroll_ID()})
- .setOrderBy(COLUMNNAME_SeqNo)
- .list();
- return list.toArray(new MHRPayrollConcept[list.size()]);
- }
-
- @Override
- protected boolean beforeSave(boolean newRecord)
- {
- if (getSeqNo() == 0)
- {
- String sql = "SELECT COALESCE(MAX(SeqNo),0) FROM HR_PayrollConcept WHERE HR_Payroll_ID=?";
- int lastSeqNo = DB.getSQLValueEx(get_TrxName(), sql, getHR_Payroll_ID());
- if (lastSeqNo < 0)
- lastSeqNo = 0;
- setSeqNo(lastSeqNo + 10);
- }
-
- return true;
- }
-
-
-}
\ No newline at end of file
diff --git a/base/src/org/eevolution/model/MHRPeriod.java b/base/src/org/eevolution/model/MHRPeriod.java
deleted file mode 100644
index 7763dd2cf1..0000000000
--- a/base/src/org/eevolution/model/MHRPeriod.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- *
- */
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-import org.compiere.util.CCache;
-
-/**
- * HR Period
- * @author Teo Sarca, www.arhipac.ro
- */
-public class MHRPeriod extends X_HR_Period
-{
- /**
- *
- */
- private static final long serialVersionUID = -7787966459848200539L;
-
- private static CCache s_cache = new CCache(Table_Name, 20);
-
- public static MHRPeriod get(Properties ctx, int HR_Period_ID)
- {
- if (HR_Period_ID <= 0)
- {
- return null;
- }
- //
- MHRPeriod period = s_cache.get(HR_Period_ID);
- if (period != null)
- {
- return period;
- }
- // Try Load
- period = new MHRPeriod(ctx, HR_Period_ID, null);
- if (period.get_ID() == HR_Period_ID)
- {
- s_cache.put(HR_Period_ID, period);
- }
- else
- {
- period = null;
- }
- return period;
- }
-
- public MHRPeriod(Properties ctx, int HR_Period_ID, String trxName)
- {
- super(ctx, HR_Period_ID, trxName);
- }
- public MHRPeriod(Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-
-}
diff --git a/base/src/org/eevolution/model/MHRProcess.java b/base/src/org/eevolution/model/MHRProcess.java
deleted file mode 100644
index 706b85b391..0000000000
--- a/base/src/org/eevolution/model/MHRProcess.java
+++ /dev/null
@@ -1,1135 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.io.File;
-import java.math.BigDecimal;
-import java.sql.ResultSet;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Properties;
-
-import org.adempiere.exceptions.AdempiereException;
-import org.compiere.model.MBPartner;
-import org.compiere.model.MDocType;
-import org.compiere.model.MPeriod;
-import org.compiere.model.MRule;
-import org.compiere.model.ModelValidationEngine;
-import org.compiere.model.ModelValidator;
-import org.compiere.model.Query;
-import org.compiere.model.Scriptlet;
-import org.compiere.print.ReportEngine;
-import org.compiere.process.DocAction;
-import org.compiere.process.DocumentEngine;
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.compiere.util.TimeUtil;
-import org.compiere.util.Util;
-
-/**
- * HR Process Model
- *
- * @author oscar.gomez@e-evolution.com, e-Evolution http://www.e-evolution.com
- * Original contributor of Payroll Functionality
- * @author victor.perez@e-evolution.com, e-Evolution http://www.e-evolution.com
- * FR [ 2520591 ] Support multiples calendar for Org
- * @see http://sourceforge.net/tracker2/?func=detail&atid=879335&aid=2520591&group_id=176962
- * @author Cristina Ghita, www.arhipac.ro
- */
-public class MHRProcess extends X_HR_Process implements DocAction
-{
- /**
- *
- */
- private static final long serialVersionUID = 833872861685006894L;
-
- public int m_C_BPartner_ID = 0;
- public int m_HR_Concept_ID = 0;
- public String m_columnType = "";
- public Timestamp m_dateFrom;
- public Timestamp m_dateTo;
- /** HR_Concept_ID->MHRMovement */
- public Hashtable m_movement = new Hashtable();
- public MHRPayrollConcept[] linesConcept;
-
- /** Static Logger */
- private static CLogger s_log = CLogger.getCLogger (MHREmployee.class);
-
- /**************************************************************************
- * Default Constructor
- * @param ctx context
- * @param HR_Process_ID To load, (0 create new order)
- */
- public MHRProcess(Properties ctx, int HR_Process_ID, String trxName)
- {
- super(ctx, HR_Process_ID,trxName);
- if (HR_Process_ID == 0)
- {
- setDocStatus(DOCSTATUS_Drafted);
- setDocAction(DOCACTION_Prepare);
- setC_DocType_ID(0);
- set_ValueNoCheck ("DocumentNo", null);
- setProcessed(false);
- setProcessing(false);
- setPosted(false);
- setHR_Department_ID(0);
- setC_BPartner_ID(0);
- }
- }
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set record
- */
- public MHRProcess(Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs,trxName);
- } // MHRProcess
-
- @Override
- public void setProcessed(boolean processed)
- {
- super.setProcessed(processed);
- if (get_ID() <= 0)
- {
- return;
- }
- final String sql = "UPDATE HR_Process SET Processed=? WHERE HR_Process_ID=?";
- DB.executeUpdateEx(sql, new Object[]{processed, get_ID()}, get_TrxName());
- } // setProcessed
-
- @Override
- protected boolean beforeSave(boolean newRecord)
- {
- if (getAD_Client_ID() == 0)
- {
- throw new AdempiereException("@AD_Client_ID@ = 0");
- }
- if (getAD_Org_ID() == 0)
- {
- int context_AD_Org_ID = getAD_Org_ID();
- if (context_AD_Org_ID == 0)
- {
- throw new AdempiereException("@AD_Org_ID@ = *");
- }
- setAD_Org_ID(context_AD_Org_ID);
- log.warning("Changed Org to Context=" + context_AD_Org_ID);
- }
- setC_DocType_ID(getC_DocTypeTarget_ID());
-
- return true;
- }
-
-
- /**
- * Process document
- * @param processAction document action
- * @return true if performed
- */
- public boolean processIt(String processAction)
- {
- DocumentEngine engine = new DocumentEngine(this, getDocStatus());
- return engine.processIt(processAction, getDocAction());
- } // processIt
-
- /** Process Message */
- private String m_processMsg = null;
- /** Just Prepared Flag */
- private boolean m_justPrepared = false;
-
-
- /**
- * Unlock Document.
- * @return true if success
- */
- public boolean unlockIt()
- {
- log.info("unlockIt - " + toString());
- setProcessing(false);
- return true;
- } // unlockIt
-
-
- /**
- * Invalidate Document
- * @return true if success
- */
- public boolean invalidateIt()
- {
- log.info("invalidateIt - " + toString());
- setDocAction(DOCACTION_Prepare);
- return true;
- } // invalidateIt
-
-
- /**************************************************************************
- * Prepare Document
- * @return new status (In Progress or Invalid)
- */
- public String prepareIt()
- {
- log.info("prepareIt - " + toString());
-
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_BEFORE_PREPARE);
- if (m_processMsg != null)
- {
- return DocAction.STATUS_Invalid;
- }
-
- // Std Period open?
-
- MHRPeriod period = MHRPeriod.get(getCtx(), getHR_Period_ID());
- MPeriod.testPeriodOpen(getCtx(), period.getDateAcct(), getC_DocTypeTarget_ID(), getAD_Org_ID());
-
- // New or in Progress/Invalid
- if ( DOCSTATUS_Drafted.equals(getDocStatus())
- || DOCSTATUS_InProgress.equals(getDocStatus())
- || DOCSTATUS_Invalid.equals(getDocStatus())
- || getC_DocType_ID() == 0)
- {
- setC_DocType_ID(getC_DocTypeTarget_ID());
- }
-
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_AFTER_PREPARE);
- if (m_processMsg != null)
- return DocAction.STATUS_Invalid;
- //
- m_justPrepared = true;
- if (!DOCACTION_Complete.equals(getDocAction()))
- setDocAction(DOCACTION_Complete);
- return DocAction.STATUS_InProgress;
- } // prepareIt
-
- /**
- * Complete Document
- * @return new status (Complete, In Progress, Invalid, Waiting ..)
- */
- public String completeIt()
- {
- // Re-Check
- if (!m_justPrepared)
- {
- String status = prepareIt();
- if (!DocAction.STATUS_InProgress.equals(status))
- return status;
- }
-
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_BEFORE_COMPLETE);
- if (m_processMsg != null)
- return DocAction.STATUS_Invalid;
-
- // Implicit Approval
-// if (!isApproved())
-// approveIt();
-
- HashMap scriptCtx = new HashMap();
- scriptCtx.put("process", this);
- scriptCtx.put("_Process", getHR_Process_ID());
- scriptCtx.put("_Period", getHR_Period_ID());
- scriptCtx.put("_Payroll", getHR_Payroll_ID());
- scriptCtx.put("_Department", getHR_Department_ID());
-
- log.info("info data - " + " Process: " +getHR_Process_ID()+ ", Period: " +getHR_Period_ID()+ ", Payroll: " +getHR_Payroll_ID()+ ", Department: " +getHR_Department_ID());
- MHRPeriod period = new MHRPeriod(getCtx(), getHR_Period_ID(), get_TrxName());
- if (period != null)
- {
- m_dateFrom = period.getStartDate();
- m_dateTo = period.getEndDate();
- scriptCtx.put("_From", period.getStartDate());
- scriptCtx.put("_To", period.getEndDate());
- }
-
- // RE-Process, delete movement except concept type Incidence
- int no = DB.executeUpdateEx("DELETE FROM HR_Movement m WHERE HR_Process_ID=? AND IsRegistered<>?",
- new Object[]{getHR_Process_ID(), true},
- get_TrxName());
- log.info("HR_Movement deleted #"+ no);
-
- linesConcept = MHRPayrollConcept.getPayrollConcepts(this);
- MBPartner[] linesEmployee = MHREmployee.getEmployees(this);
- //
- int count = 1;
- for(MBPartner bp : linesEmployee) //=============================================================== Employee
- {
- log.info("Employee " + count + " ---------------------- " + bp.getName());
- count++;
- m_C_BPartner_ID = bp.getC_BPartner_ID();
- MHREmployee employee = MHREmployee.getActiveEmployee(getCtx(), m_C_BPartner_ID, get_TrxName());
- //scriptCtx.put("_DateBirth", employee.getDateBirth());
- scriptCtx.put("_DateStart", employee.getStartDate());
- scriptCtx.put("_DateEnd", employee.getEndDate() == null ? TimeUtil.getDay(2999, 12, 31) : employee.getEndDate());
- scriptCtx.put("_Days", org.compiere.util.TimeUtil.getDaysBetween(period.getStartDate(),period.getEndDate())+1);
- scriptCtx.put("_C_BPartner_ID", bp.getC_BPartner_ID());
-
- m_movement.clear();
- loadMovements(m_movement, m_C_BPartner_ID);
- //
- for(MHRPayrollConcept pc : linesConcept) // ==================================================== Concept
- {
- m_HR_Concept_ID = pc.getHR_Concept_ID();
- MHRConcept concept = MHRConcept.get(getCtx(), m_HR_Concept_ID);
- m_columnType = concept.getColumnType();
-
- List params = new ArrayList();
- StringBuffer whereClause = new StringBuffer();
- whereClause.append("? >= ValidFrom AND ( ? <= ValidTo OR ValidTo IS NULL)");
- params.add(m_dateFrom);
- params.add(m_dateTo);
- whereClause.append(" AND HR_Concept_ID = ? ");
- params.add(m_HR_Concept_ID);
- whereClause.append(" AND EXISTS (SELECT 1 FROM HR_Concept conc WHERE conc.HR_Concept_ID = HR_Attribute.HR_Concept_ID )");
-
- // Check the concept is within a valid range for the attribute
- if (concept.isEmployee())
- {
- whereClause.append(" AND C_BPartner_ID = ? AND (HR_Employee_ID = ? OR HR_Employee_ID IS NULL)");
- params.add(employee.getC_BPartner_ID());
- params.add(employee.get_ID());
- }
-
- MHRAttribute att = new Query(getCtx(), MHRAttribute.Table_Name, whereClause.toString(), get_TrxName())
- .setParameters(params)
- .setOnlyActiveRecords(true)
- .setOrderBy(MHRAttribute.COLUMNNAME_ValidFrom + " DESC")
- .first();
- if (att == null || concept.isRegistered())
- {
- log.info("Skip concept "+concept+" - attribute not found");
- continue;
- }
-
- log.info("Concept - " + concept.getName());
- MHRMovement movement = new MHRMovement (getCtx(), 0, get_TrxName());
- movement.setC_BPartner_ID(m_C_BPartner_ID);
- movement.setHR_Concept_ID(m_HR_Concept_ID);
- movement.setHR_Concept_Category_ID(concept.getHR_Concept_Category_ID());
- movement.setHR_Process_ID(getHR_Process_ID());
- movement.setHR_Department_ID(employee.getHR_Department_ID());
- movement.setHR_Job_ID(employee.getHR_Job_ID());
- movement.setColumnType(m_columnType);
- movement.setAD_Rule_ID(att.getAD_Rule_ID());
- movement.setValidFrom(m_dateFrom);
- movement.setValidTo(m_dateTo);
- movement.setIsPrinted(att.isPrinted());
- movement.setIsRegistered(concept.isRegistered());
- movement.setC_Activity_ID(employee.getC_Activity_ID());
- if (MHRConcept.TYPE_RuleEngine.equals(concept.getType()))
- {
- Object result = executeScript(scriptCtx, att.getAD_Rule_ID());
- if(result == null)
- {
- // TODO: throw exception ???
- log.warning("Variable (result) is null");
- continue;
- }
- movement.setColumnValue(result);
- }
- else
- {
- movement.setQty(att.getQty());
- movement.setAmount(att.getAmount());
- movement.setTextMsg(att.getTextMsg());
- movement.setServiceDate(att.getServiceDate());
- }
- movement.setProcessed(true);
- m_movement.put(m_HR_Concept_ID, movement);
- } // concept
-
- // Save movements:
- for (MHRPayrollConcept pc: linesConcept)
- {
- MHRMovement m = m_movement.get(pc.getHR_Concept_ID());
- if(m == null)
- {
- continue;
- }
- MHRConcept c = MHRConcept.get(getCtx(), pc.getHR_Concept_ID());
- if(!c.isRegistered() && !m.isEmpty())
- {
- m.saveEx();
- }
- else
- {
- log.fine("Skip saving "+m);
- }
- }
- } // for each employee
- //
- // Save period & finish
- period.setProcessed(true);
- period.saveEx();
- // User Validation
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_AFTER_COMPLETE);
- if (m_processMsg != null)
- {
- return DocAction.STATUS_Invalid;
- }
- //
- setProcessed(true);
- setDocAction(DOCACTION_Close);
- return DocAction.STATUS_Completed;
- } // completeIt
-
- /**
- * Approve Document
- * @return true if success
- */
- public boolean approveIt() {
- return true;
- } // approveIt
-
-
- /**
- * Reject Approval
- * @return true if success
- */
- public boolean rejectIt() {
- log.info("rejectIt - " + toString());
- return true;
- } // rejectIt
-
- /**
- * Post Document - nothing
- * @return true if success
- */
- public boolean postIt() {
- log.info("postIt - " + toString());
- return false;
- } // postIt
-
-
- /**
- * Void Document.
- * Set Qtys to 0 - Sales: reverse all documents
- * @return true if success
- */
- public boolean voidIt() {
- log.info("voidIt - " + toString());
- setProcessed(true);
- setDocAction(DOCACTION_None);
- return true;
- } // voidIt
-
-
- /**
- * Close Document.
- * Cancel not delivered Qunatities
- * @return true if success
- */
- public boolean closeIt()
- {
- if (isProcessed())
- {
- log.info(toString());
- setProcessed(true);
- setDocAction(DOCACTION_None);
- return true;
- }
- return false;
- } // closeIt
-
-
- /**
- * Reverse Correction - same void
- * @return true if success
- */
- public boolean reverseCorrectIt() {
- log.info("reverseCorrectIt - " + toString());
- return voidIt();
- } // reverseCorrectionIt
-
-
- /**
- * Reverse Accrual - none
- * @return true if success
- */
- public boolean reverseAccrualIt() {
- log.info("reverseAccrualIt - " + toString());
- return false;
- } // reverseAccrualIt
-
-
- /**
- * Re-activate.
- * @return true if success
- */
- public boolean reActivateIt() {
- log.info("reActivateIt - " + toString());
-
- org.compiere.model.MDocType dt = org.compiere.model.MDocType.get(getCtx(), getC_DocType_ID());
- String DocSubTypeSO = dt.getDocSubTypeSO();
-
- // Reverse Direct Documents
- if ( MDocType.DOCSUBTYPESO_OnCreditOrder.equals(DocSubTypeSO) // (W)illCall(I)nvoice
- || MDocType.DOCSUBTYPESO_WarehouseOrder.equals(DocSubTypeSO) // (W)illCall(P)ickup
- || MDocType.DOCSUBTYPESO_POSOrder.equals(DocSubTypeSO)) // (W)alkIn(R)eceipt
- {
- return false;
- }
- else {
- log.fine("reActivateIt - Existing documents not modified - SubType=" + DocSubTypeSO);
- }
-
- // Delete
- String sql = "DELETE FROM HR_Movement WHERE HR_Process_ID =" + this.getHR_Process_ID() + " AND IsRegistered = 'N'" ;
- int no = DB.executeUpdate(sql, get_TrxName());
- log.fine("HR_Process deleted #" + no);
-
- setDocAction(DOCACTION_Complete);
- setProcessed(false);
- return true;
- } // reActivateIt
-
-
- /**
- * Get Document Owner (Responsible)
- * @return AD_User_ID
- */
- public int getDoc_User_ID() {
- return 0;
- } // getDoc_User_ID
-
-
- /**
- * Get Document Approval Amount
- * @return amount
- */
- public java.math.BigDecimal getApprovalAmt() {
- return new BigDecimal(0);
- } // getApprovalAmt
-
- /**
- *
- */
- public int getC_Currency_ID() {
- return 0;
- }
-
- public String getProcessMsg() {
- return m_processMsg;
- }
-
- public String getSummary(){
- return "";
- }
-
- /**
- * Create PDF
- * @return File or null
- */
- public File createPDF ()
- {
- try
- {
- File temp = File.createTempFile(get_TableName()+get_ID()+"_", ".pdf");
- return createPDF (temp);
- }
- catch (Exception e)
- {
- log.severe("Could not create PDF - " + e.getMessage());
- }
- return null;
- } // getPDF
-
- /**
- * Create PDF file
- * @param file output file
- * @return file if success
- */
- public File createPDF (File file)
- {
- ReportEngine re = ReportEngine.get (getCtx(), ReportEngine.ORDER, 0);
- if (re == null)
- return null;
- return re.getPDF(file);
- } // createPDF
-
- /**
- * Get Document Info
- * @return document info (untranslated)
- */
- public String getDocumentInfo()
- {
- org.compiere.model.MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
- return dt.getName() + " " + getDocumentNo();
- } // getDocumentInfo
-
-
- /**
- * Get Lines
- * @param requery requery
- * @return lines
- */
- public MHRMovement[] getLines (boolean requery)
- {
- ArrayList params = new ArrayList();
- StringBuffer whereClause = new StringBuffer();
- // For HR_Process:
- whereClause.append(MHRMovement.COLUMNNAME_HR_Process_ID+"=?");
- params.add(getHR_Process_ID());
- // With Qty or Amounts
- whereClause.append("AND (Qty <> 0 OR Amount <> 0)"); // TODO: it's really needed ?
- // Only Active Concepts
- whereClause.append(" AND EXISTS(SELECT 1 FROM HR_Concept c WHERE c.HR_Concept_ID=HR_Movement.HR_Concept_ID"
- +" AND c.IsActive=?"
- +" AND c.AccountSign<>?)"); // TODO : why ?
- params.add(true);
- params.add(MHRConcept.ACCOUNTSIGN_Natural); // TODO : why ?
- // Concepts with accounting
- whereClause.append(" AND EXISTS(SELECT 1 FROM HR_Concept_Acct ca WHERE ca.HR_Concept_ID=HR_Movement.HR_Concept_ID"
- +" AND ca.IsActive=? AND ca.IsBalancing<>?)");
- params.add(true);
- params.add(true);
- // BPartner field is filled
- whereClause.append(" AND C_BPartner_ID IS NOT NULL");
- //
- // ORDER BY
- StringBuffer orderByClause = new StringBuffer();
- orderByClause.append("(SELECT bp.C_BP_Group_ID FROM C_BPartner bp WHERE bp.C_BPartner_ID=HR_Movement.C_BPartner_ID)");
- //
- List list = new Query (getCtx(), MHRMovement.Table_Name, whereClause.toString(), get_TrxName())
- .setParameters(params)
- .setOrderBy(orderByClause.toString())
- .list();
- return list.toArray(new MHRMovement[list.size()]);
- }
-
- /**
- * Load HR_Movements and store them in a HR_Concept_ID->MHRMovement hashtable
- * @param movements hashtable
- * @param C_PBartner_ID
- */
- private void loadMovements(Hashtable movements, int C_PBartner_ID)
- {
- final String whereClause = MHRMovement.COLUMNNAME_HR_Process_ID+"=?"
- +" AND "+MHRMovement.COLUMNNAME_C_BPartner_ID+"=?";
- List list = new Query(getCtx(), MHRMovement.Table_Name, whereClause, get_TrxName())
- .setParameters(new Object[]{getHR_Process_ID(), C_PBartner_ID})
- .list();
- for (MHRMovement mvm : list)
- {
- if(movements.containsKey(mvm.getHR_Concept_ID()))
- {
- MHRMovement lastM = movements.get(mvm.getHR_Concept_ID());
- String columntype = lastM.getColumnType();
- if (columntype.equals(MHRConcept.COLUMNTYPE_Amount))
- {
- mvm.addAmount(lastM.getAmount());
- }
- else if (columntype.equals(MHRConcept.COLUMNTYPE_Quantity))
- {
- mvm.addQty(lastM.getQty());
- }
- }
- movements.put(mvm.getHR_Concept_ID(), mvm);
- }
- }
-
- /**
- * Execute the script
- * @param scriptCtx
- * @param AD_Rule_ID
- * @return
- */
- private Object executeScript(HashMap scriptCtx, int AD_Rule_ID)
- {
- MRule rulee = MRule.get(getCtx(), AD_Rule_ID);
- Object result = null;
- try
- {
- String text = "";
- if(rulee.getScript() != null)
- {
- text = rulee.getScript().trim().replace("get", "org.eevolution.model.MHRProcess.get");
- text = rulee.getScript().trim().replace("get", "process.get");
- }
- final String script =
- " import org.eevolution.model.*;"
- +" import ro.arhipac.adempiere.hr.util.Util;"
- +" import org.compiere.util.DB;"
- +" import java.math.*;"
- +" import java.sql.*;"
- +" double result = 0;"
- + text;
- Scriptlet engine = new Scriptlet (Scriptlet.VARIABLE, script, scriptCtx);
- Exception ex = engine.execute();
- if (ex != null)
- {
- throw ex;
- }
- result = engine.getResult(false);
- }
- catch (Exception e)
- {
- throw new AdempiereException("Execution error - @AD_Rule_ID@="+rulee.getValue());
- }
- return result;
- }
-
-
- // Helper methods -------------------------------------------------------------------------------
-
- /**
- * Helper Method : get the value of the concept
- * @param pconcept
- * @return
- */
- public double getConcept (String pconcept)
- {
- MHRConcept concept = MHRConcept.forValue(getCtx(), pconcept.trim());
-
- if (concept == null)
- {
- return 0; // TODO throw exception ?
- }
-
- MHRMovement m = m_movement.get(concept.get_ID());
- if (m == null)
- {
- return 0; // TODO throw exception ?
- }
-
- String type = m.getColumnType();
- if (MHRMovement.COLUMNTYPE_Amount.equals(type))
- {
- return m.getAmount().doubleValue();
- }
- else if (MHRMovement.COLUMNTYPE_Quantity.equals(type))
- {
- return m.getQty().doubleValue();
- }
- else
- {
- // TODO: throw exception ?
- return 0;
- }
- }
-
- /**
- * Helper Method : sets the value of a concept
- * @param conceptValue
- * @param value
- */
- public void setConcept (String conceptValue, long value)
- {
- try
- {
- MHRConcept c = MHRConcept.forValue(getCtx(), conceptValue);
- if (c == null)
- {
- return; // TODO throw exception
- }
- MHRMovement m = new MHRMovement(getCtx(), 0, null);
- m.setColumnType(c.getColumnType());
- m.setColumnValue(BigDecimal.valueOf(value));
-
- m.setHR_Process_ID(getHR_Process_ID());
- m.setHR_Concept_ID(m_HR_Concept_ID);
- m.setC_BPartner_ID(m_C_BPartner_ID);
- m.setDescription("Added From Rule"); // TODO: translate
- m.setValidFrom(m_dateTo);
- m.setValidTo(m_dateTo);
- m.saveEx();
- }
- catch(Exception e)
- {
- s_log.warning(e.getMessage());
- }
- }
-
- /**
- * Helper Method : get the sum of the concept values, grouped by the Category
- * @param pconcept
- * @return
- */
- public double getConceptGroup (String pconcept)
- {
- final MHRConceptCategory category = MHRConceptCategory.forValue(getCtx(), pconcept);
- if (category == null)
- {
- return 0.0; // TODO: need to throw exception ?
- }
- //
- double value = 0.0;
- for(MHRPayrollConcept pc : linesConcept)
- {
- MHRConcept con = MHRConcept.get(getCtx(), pc.getHR_Concept_ID());
- if(con.getHR_Concept_Category_ID() == category.get_ID())
- {
- MHRMovement movement = m_movement.get(pc.getHR_Concept_ID());
- String columnType = movement.getColumnType();
- if(MHRConcept.COLUMNTYPE_Amount.equals(columnType))
- {
- value += movement.getAmount().doubleValue();
- }
- else if (MHRConcept.COLUMNTYPE_Quantity.equals(columnType))
- {
- value += movement.getQty().doubleValue();
- }
- }
- }
- return value;
- }
-
-
- /**
- * Helper Method : Get Concept [get concept to search key ]
- * @param pList Value List
- * @param amount Amount to search
- * @param column Number of column to return (1.......8)
- * @return The amount corresponding to the designated column 'column'
- */
- public double getList (String pList, double amount, String column)
- {
- BigDecimal value = Env.ZERO;
- if (m_columnType.equals(MHRConcept.COLUMNTYPE_Amount))
- {
- column = column.toString().length() == 1 ? "Col_"+column : "Amount"+column;
- ArrayList params = new ArrayList();
- String sqlList = "SELECT (SELECT " +column+ " FROM HR_ListLine ll WHERE ll.HR_ListVersion_ID=lv.HR_ListVersion_ID AND "
- + " ( " +amount+ " BETWEEN ll.MinValue AND ll.MaxValue) ) "
- + " FROM HR_List l "
- + " INNER JOIN HR_ListVersion lv ON (lv.HR_List_ID=l.HR_List_ID)"
- + " WHERE l.Value = ? AND l.AD_Client_ID = ?"
- +" AND (? BETWEEN lv.ValidFrom AND lv.ValidTo ) ";
- params.add(pList);
- params.add(getAD_Client_ID());
- params.add(m_dateFrom);
-
- value = DB.getSQLValueBDEx(get_TrxName(),sqlList,params);
- }
- //
- if (value == null)
- {
- throw new IllegalStateException("getList Out of Range");
- }
- return value.doubleValue();
- } // getList
-
-
- /**
- * Helper Method : Get Attribute [get Attribute to search key concept ]
- * @param pConcept - Value to Concept
- * @return Amount of concept, applying to employee
- */
- public double getAttribute (String pConcept)
- {
- MHRConcept concept = MHRConcept.forValue(getCtx(), pConcept);
- if (concept == null)
- return 0;
-
- ArrayList params = new ArrayList();
- StringBuffer whereClause = new StringBuffer();
- // check ValidFrom:
- whereClause.append(MHRAttribute.COLUMNNAME_ValidFrom + "<=?");
- params.add(m_dateFrom);
- //check client
- whereClause.append(" AND AD_Client_ID = ?");
- params.add(getAD_Client_ID());
- //check concept
- whereClause.append(" AND EXISTS (SELECT 1 FROM HR_Concept c WHERE c.HR_Concept_ID=HR_Attribute.HR_Concept_ID"
- + " AND c.Value = ?)");
- params.add(pConcept);
- //
- if (!concept.getType().equals(MHRConcept.TYPE_Information))
- {
- whereClause.append(" AND " + MHRAttribute.COLUMNNAME_C_BPartner_ID + " = ?");
- params.add(m_C_BPartner_ID);
- }
-
- MHRAttribute attribute = new Query(getCtx(), MHRAttribute.Table_Name, whereClause.toString(), get_TrxName())
- .setParameters(params)
- .setOrderBy(MHRAttribute.COLUMNNAME_ValidFrom + " DESC")
- .first();
- if (attribute == null)
- return 0.0;
-
- // if column type is Quantity return quantity
- if (concept.getColumnType().equals(MHRConcept.COLUMNTYPE_Quantity))
- return attribute.getQty().doubleValue();
-
- // if column type is Amount return amount
- if (concept.getColumnType().equals(MHRConcept.COLUMNTYPE_Amount))
- return attribute.getAmount().doubleValue();
-
- //something else
- return 0.0; //TODO throw exception ??
- } // getAttribute
-
-
- /**
- * Helper Method : Get Attribute [get Attribute to search key concept ]
- * @param conceptValue
- * @return ServiceDate
- */
- public Timestamp getAttributeDate (String conceptValue)
- {
- MHRConcept concept = MHRConcept.forValue(getCtx(), conceptValue);
- if (concept == null)
- return null;
-
- ArrayList params = new ArrayList();
- StringBuffer whereClause = new StringBuffer();
- //check client
- whereClause.append("AD_Client_ID = ?");
- params.add(getAD_Client_ID());
- //check concept
- whereClause.append(" AND EXISTS (SELECT 1 FROM HR_Concept c WHERE c.HR_Concept_ID=HR_Attribute.HR_Concept_ID"
- + " AND c.Value = ?)");
- params.add(conceptValue);
- //
- if (!concept.getType().equals(MHRConcept.TYPE_Information))
- {
- whereClause.append(" AND " + MHRAttribute.COLUMNNAME_C_BPartner_ID + " = ?");
- params.add(m_C_BPartner_ID);
- }
-
- MHRAttribute attribute = new Query(getCtx(), MHRAttribute.Table_Name, whereClause.toString(), get_TrxName())
- .setParameters(params)
- .setOrderBy(MHRAttribute.COLUMNNAME_ValidFrom + " DESC")
- .first();
- if (attribute == null)
- return null;
-
- return attribute.getServiceDate();
- }
-
- /**
- * Helper Method : Get the number of days between start and end, in Timestamp format
- * @param date1
- * @param date2
- * @return no. of days
- */
- public int getDays (Timestamp date1, Timestamp date2)
- {
- // adds one for the last day
- return org.compiere.util.TimeUtil.getDaysBetween(date1,date2) + 1;
- }
-
-
- /**
- * Helper Method : Get the number of days between start and end, in String format
- * @param date1
- * @param date2
- * @return no. of days
- */
- public int getDays (String date1, String date2)
- {
- Timestamp dat1 = Timestamp.valueOf(date1);
- Timestamp dat2 = Timestamp.valueOf(date2);
- return getDays(dat1, dat2);
- }
-
- /**
- * Helper Method : Get Months, Date in Format Timestamp
- * @param start
- * @param end
- * @return no. of month between two dates
- */
- public int getMonths(Timestamp start,Timestamp end)
- {
- boolean negative = false;
- if (end.before(start))
- {
- negative = true;
- Timestamp temp = start;
- start = end;
- end = temp;
- }
-
- GregorianCalendar cal = new GregorianCalendar();
- cal.setTime(start);
- cal.set(Calendar.HOUR_OF_DAY, 0);
- cal.set(Calendar.MINUTE, 0);
- cal.set(Calendar.SECOND, 0);
- cal.set(Calendar.MILLISECOND, 0);
- GregorianCalendar calEnd = new GregorianCalendar();
-
- calEnd.setTime(end);
- calEnd.set(Calendar.HOUR_OF_DAY, 0);
- calEnd.set(Calendar.MINUTE, 0);
- calEnd.set(Calendar.SECOND, 0);
- calEnd.set(Calendar.MILLISECOND, 0);
-
- if (cal.get(Calendar.YEAR) == calEnd.get(Calendar.YEAR))
- {
- if (negative)
- return (calEnd.get(Calendar.MONTH) - cal.get(Calendar.MONTH)) * -1;
- return calEnd.get(Calendar.MONTH) - cal.get(Calendar.MONTH);
- }
-
- // not very efficient, but correct
- int counter = 0;
- while (calEnd.after(cal))
- {
- cal.add (Calendar.MONTH, 1);
- counter++;
- }
- if (negative)
- return counter * -1;
- return counter;
- }
-
-
- /**
- * Helper Method : Concept for a range from-to in periods.
- * Periods with values of 0 -1 1, etc. actual previous one period, next period
- * 0 corresponds to actual period.
- * @param conceptValue concept key(value)
- * @param periodFrom the search is done by the period value, it helps to search from previous years
- * @param periodTo
- */
- public double getConcept (String conceptValue, int periodFrom, int periodTo)
- {
- return getConcept(conceptValue, null, periodFrom,periodTo);
- }
-
- /**
- * Helper Method : Concept by range from-to in periods from a different payroll
- * periods with values 0 -1 1, etc. actual previous one period, next period
- * 0 corresponds to actual period
- * @param conceptValue
- * @param pFrom
- * @param pTo the search is done by the period value, it helps to search from previous years
- * @param payrollValue is the value of the payroll.
- */
- public double getConcept(String conceptValue, String payrollValue,int periodFrom,int periodTo)
- {
- int payroll_id;
- if (payrollValue == null)
- {
- payroll_id = getHR_Payroll_ID();
- }
- else
- {
- payroll_id = MHRPayroll.forValue(getCtx(), payrollValue).get_ID();
- }
-
- MHRConcept concept = MHRConcept.forValue(getCtx(), conceptValue);
- if (concept == null)
- return 0.0;
- //
- // Detect field name
- final String fieldName;
- if (MHRConcept.COLUMNTYPE_Quantity.equals(concept.getColumnType()))
- {
- fieldName = MHRMovement.COLUMNNAME_Qty;
- }
- else if (MHRConcept.COLUMNTYPE_Amount.equals(concept.getColumnType()))
- {
- fieldName = MHRMovement.COLUMNNAME_Amount;
- }
- else
- {
- return 0; // TODO: throw exception?
- }
- //
- MHRPeriod p = MHRPeriod.get(getCtx(), getHR_Period_ID());
- ArrayList params = new ArrayList();
- StringBuffer whereClause = new StringBuffer();
- //check client
- whereClause.append("AD_Client_ID = ?");
- params.add(getAD_Client_ID());
- //check concept
- whereClause.append(" AND " + MHRMovement.COLUMNNAME_HR_Concept_ID + "=?");
- params.add(m_HR_Concept_ID);
- //check partner
- whereClause.append(" AND " + MHRMovement.COLUMNNAME_C_BPartner_ID + "=?");
- params.add(m_C_BPartner_ID);
- //
- //check process and payroll
- whereClause.append(" AND EXISTS (SELECT 1 FROM HR_Process p"
- +" INNER JOIN HR_Period pr ON (pr.HR_Period_id=p.HR_Period_ID)"
- +" WHERE HR_Movement.HR_Process_ID = p.HR_Process_ID"
- +" AND p.HR_Payroll_ID=?");
-
- params.add(payroll_id);
- if (periodFrom < 0)
- {
- whereClause.append(" AND pr.PeriodNo >= ?");
- params.add(p.getPeriodNo() +periodFrom);
- }
- if (periodTo > 0)
- {
- whereClause.append(" AND pr.PeriodNo >= ?");
- params.add(p.getPeriodNo() +periodTo);
- }
- whereClause.append(")");
- //
- StringBuffer sql = new StringBuffer("SELECT COALESCE(SUM(").append(fieldName).append("),0) FROM ").append(MHRMovement.Table_Name)
- .append(" WHERE ").append(whereClause);
- BigDecimal value = DB.getSQLValueBDEx(get_TrxName(), sql.toString(), params);
- return value.doubleValue();
-
- } // getConcept
-
- /**
- * Helper Method : Attribute that had from some date to another to date,
- * if it finds just one period it's seen for the attribute of such period
- * if there are two or more attributes based on the days
- * @param ctx
- * @param vAttribute
- * @param dateFrom
- * @param dateTo
- * @return attribute value
- */
- public double getAttribute (Properties ctx, String vAttribute, Timestamp dateFrom, Timestamp dateTo)
- {
- // TODO ???
- return 0;
- }
-
- /**
- * Helper Method : Attribute that had from some period to another to period,
- * periods with values 0 -1 1, etc. actual previous one period, next period
- * 0 corresponds to actual period
- * Value of HR_Attribute
- * if it finds just one period it's seen for the attribute of such period
- * if there are two or more attributes
- * pFrom and pTo the search is done by the period value, it helps to search
- * from previous year based on the days
- * @param ctx
- * @param vAttribute
- * @param periodFrom
- * @param periodTo
- * @param pFrom
- * @param pTo
- * @return attribute value
- */
- public double getAttribute (Properties ctx, String vAttribute, int periodFrom,int periodTo,
- String pFrom,String pTo)
- {
- // TODO ???
- return 0;
- }
-
- /**
- * Helper Method : get days from specific period
- * @param period
- * @return no. of days
- */
- public double getDays (int period)
- {
- return Env.getContextAsInt(getCtx(), "_DaysPeriod") + 1;
- }
-} // MHRProcess
diff --git a/base/src/org/eevolution/model/MHRYear.java b/base/src/org/eevolution/model/MHRYear.java
deleted file mode 100644
index ddeaf2658e..0000000000
--- a/base/src/org/eevolution/model/MHRYear.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2008 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Oscar Gómez www.e-evolution.com *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.sql.Timestamp;
-import java.util.Properties;
-
-import org.compiere.model.MCalendar;
-import org.compiere.model.MPeriod;
-import org.compiere.util.DB;
-import org.compiere.util.Msg;
-import org.compiere.util.TimeUtil;
-
-/**
- * MHRYear Year for a Payroll
- *
- * @author oscar.gomez@e-evolution.com, e-Evolution http://www.e-evolution.com
- * Original contributor of Payroll Functionality
- * @author victor.perez@e-evolution.com, e-Evolution http://www.e-evolution.com
- * FR [ 2520591 ] Support multiples calendar for Org
- * @see http://sourceforge.net/tracker2/?func=detail&atid=879335&aid=2520591&group_id=176962
-
- */
-public class MHRYear extends X_HR_Year
-{
- /**
- *
- */
- private static final long serialVersionUID = -7789699154024839462L;
-
- /**
- * Standard Constructor
- * @param ctx context
- * @param HR_Payroll_ID id
- */
- public MHRYear (Properties ctx, int HR_Year_ID, String trxName)
- {
- super (ctx, HR_Year_ID, trxName);
- if (HR_Year_ID == 0)
- {
- setProcessing (false); // N
- }
- } // HRYear
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set
- */
- public MHRYear (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-
- /**
- * Parent Constructor
- * @param parent parent
- */
- public MHRYear (MCalendar calendar)
- {
- this (calendar.getCtx(), 0, calendar.get_TrxName());
- setClientOrg(calendar);
- }
-
-
- /**
- * CreatePeriods.
- * Creates also Period
- * @param HR_Payroll_ID
- * @return true if created
- */
- public boolean createPeriods()
- {
- int sumDays = 0;
- int C_Calendar_ID = DB.getSQLValueEx(get_TrxName(), "SELECT C_Calendar_ID FROM C_Year WHERE C_Year_ID = ?", getC_Year_ID());
- if (C_Calendar_ID <= 0)
- return false;
-
- MHRPayroll payroll = new MHRPayroll(getCtx(), getHR_Payroll_ID(), get_TrxName());
- for (int period = 1; period <= getQty(); period++)
- {
- sumDays = period != 1 ? (period-1) * (getNetDays()) : 0;
- Timestamp StartDate = TimeUtil.addDays(getStartDate(),sumDays);
- Timestamp EndDate = TimeUtil.addDays(StartDate,getNetDays()-1);
- int C_Period_ID = DB.getSQLValueEx(get_TrxName(),
- "SELECT C_Period_ID FROM C_Period p "
- + " INNER JOIN C_Year y ON (p.C_Year_ID=y.C_Year_ID) "
- + " WHERE "
- + " ? BETWEEN p.startdate AND p.endDate"
- + " AND y.C_Calendar_ID=?",
- EndDate, C_Calendar_ID);
- if(C_Period_ID <= 0)
- return false;
-
- MPeriod m_period = MPeriod.get(getCtx(), C_Period_ID);
- MHRPeriod HR_Period = new MHRPeriod(getCtx(), 0, get_TrxName());
- HR_Period.setAD_Org_ID(getAD_Org_ID());
- HR_Period.setHR_Year_ID(getHR_Year_ID());
- HR_Period.setHR_Payroll_ID(getHR_Payroll_ID());
- HR_Period.setName(StartDate.toString().substring(0, 10)+" "+Msg.translate(getCtx(), "To")+" "+EndDate.toString().substring(0, 10) );
- HR_Period.setDescription(Msg.translate(getCtx(), "HR_Payroll_ID")+" "+payroll.getName().trim()+" "+Msg.translate(getCtx(), "From")+ " "+period+" " +Msg.translate(getCtx(), "To")+" "+ StartDate.toString().substring(0, 10)+" al "+EndDate.toString().substring(0, 10));
- HR_Period.setPeriodNo(period);
- HR_Period.setC_Period_ID(C_Period_ID);
- HR_Period.setC_Year_ID(m_period.getC_Year_ID());
- HR_Period.setStartDate(StartDate);
- HR_Period.setEndDate(EndDate);
- HR_Period.setDateAcct(EndDate);
- HR_Period.setIsActive(true);
- HR_Period.saveEx();
- }
- return true;
- } // createPeriods
-} // HRYear
diff --git a/base/src/org/eevolution/model/MIMPProcessor.java b/base/src/org/eevolution/model/MIMPProcessor.java
deleted file mode 100644
index 643fbe23d6..0000000000
--- a/base/src/org/eevolution/model/MIMPProcessor.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - E-evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-package org.eevolution.model;
-
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.logging.Level;
-
-import org.compiere.model.AdempiereProcessor;
-import org.compiere.model.AdempiereProcessorLog;
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-
-/**
- * @author Trifon Trifonov
- */
-public class MIMPProcessor
- extends X_IMP_Processor
- implements AdempiereProcessor
-{
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- /** Static Logger */
- private static CLogger s_log = CLogger.getCLogger (MIMPProcessor.class);
-
- public MIMPProcessor(Properties ctx,
- int EXP_ReplicationProcessor_ID, String trxName)
- {
- super(ctx, EXP_ReplicationProcessor_ID, trxName);
- if (EXP_ReplicationProcessor_ID == 0)
- {
- //setValue (/*client.getName() + " - " +*/ "Default Import Processor");
- setName (/*client.getName() + " - " +*/ "Default Import Processor");
- setFrequencyType (FREQUENCYTYPE_Hour);
- setFrequency (1);
- setKeepLogDays (7);
- }
- }
-
- public MIMPProcessor(Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-
- /**
- *
- */
- public Timestamp getDateNextRun (boolean requery)
- {
- if (requery)
- load(get_TrxName());
- return getDateNextRun();
- }
-
-
- /**
- * Get Logs
- * @return logs
- */
- public AdempiereProcessorLog[] getLogs ()
- {
- ArrayList list = new ArrayList();
- String sql = "SELECT * "
- + "FROM " + X_IMP_ProcessorLog.Table_Name + " "
- + "WHERE " + X_IMP_Processor.COLUMNNAME_IMP_Processor_ID + "=? " // # 1
- + "ORDER BY Created DESC";
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement (sql, get_TrxName());
- pstmt.setInt (1, getIMP_Processor_ID());
- ResultSet rs = pstmt.executeQuery ();
- while (rs.next ())
- list.add (new MIMPProcessorLog (getCtx(), rs, get_TrxName()));
- rs.close ();
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- log.log(Level.SEVERE, sql, e);
- }
- try
- {
- if (pstmt != null)
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- pstmt = null;
- }
- MIMPProcessorLog[] retValue = new MIMPProcessorLog[list.size ()];
- list.toArray (retValue);
- return retValue;
- } // getLogs
-
- /**
- * Delete old Request Log
- * @return number of records
- */
- public int deleteLog()
- {
- if (getKeepLogDays() < 1)
- return 0;
- String sql = "DELETE " + X_IMP_ProcessorLog.Table_Name + " "
- + "WHERE "+X_IMP_ProcessorLog.COLUMNNAME_IMP_Processor_ID+"=" + getIMP_Processor_ID()
- + " AND (Created+" + getKeepLogDays() + ") < SysDate";
- int no = DB.executeUpdate(sql, get_TrxName());
- return no;
- }
-
- public String getServerID() {
- return "ReplicationProcessor" + get_ID();
- }
-
- public X_IMP_ProcessorParameter[] getIMP_ProcessorParameters(String trxName) {
- List resultList = new ArrayList();
-
- StringBuffer sql = new StringBuffer("SELECT * ")
- .append(" FROM ").append(X_IMP_ProcessorParameter.Table_Name)
- .append(" WHERE ").append(X_IMP_ProcessorParameter.COLUMNNAME_IMP_Processor_ID).append("=?") // # 1
- .append(" AND IsActive = ?") // # 2
- //.append(" ORDER BY ").append(X_EXP_ProcessorParameter.COLUMNNAME_)
- ;
- PreparedStatement pstmt = null;
- X_IMP_ProcessorParameter processorParameter = null;
- try {
- pstmt = DB.prepareStatement (sql.toString(), trxName);
- pstmt.setInt(1, getIMP_Processor_ID());
- pstmt.setString(2, "Y");
- ResultSet rs = pstmt.executeQuery ();
- while ( rs.next() ) {
- processorParameter = new X_IMP_ProcessorParameter (getCtx(), rs, trxName);
- resultList.add(processorParameter);
- }
- rs.close ();
- pstmt.close ();
- pstmt = null;
- } catch (SQLException e) {
- s_log.log(Level.SEVERE, sql.toString(), e);
- } finally {
- try {
- if (pstmt != null) pstmt.close ();
- pstmt = null;
- } catch (Exception e) { pstmt = null; }
- }
- X_IMP_ProcessorParameter[] result = (X_IMP_ProcessorParameter[])resultList.toArray( new X_IMP_ProcessorParameter[0]);
- return result;
- }
-
- public static MIMPProcessor[] getActive(Properties ctx)
- {
- ArrayList list = new ArrayList();
- String sql = "SELECT * FROM "+X_IMP_Processor.Table_Name+" WHERE IsActive='Y'";
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement (sql, null);
- ResultSet rs = pstmt.executeQuery ();
- while (rs.next ())
- list.add (new MIMPProcessor (ctx, rs, null));
- rs.close ();
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- s_log.log (Level.SEVERE, sql, e);
- }
- try
- {
- if (pstmt != null)
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- pstmt = null;
- }
-
- MIMPProcessor[] retValue = new MIMPProcessor[list.size()];
- list.toArray(retValue);
- return retValue;
- } // getActive
-
-}
diff --git a/base/src/org/eevolution/model/MIMPProcessorLog.java b/base/src/org/eevolution/model/MIMPProcessorLog.java
deleted file mode 100644
index 823e2eb0c3..0000000000
--- a/base/src/org/eevolution/model/MIMPProcessorLog.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - E-evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-import org.compiere.model.AdempiereProcessorLog;
-
-/**
- * @author Trifon Trifonov
- */
-public class MIMPProcessorLog
- extends X_IMP_ProcessorLog
- implements AdempiereProcessorLog
-{
-
- /**
- * serialVersionUID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- *
- * @param ctx
- * @param EXP_ReplicationProcessorLog_ID
- * @param trxName
- */
- public MIMPProcessorLog(Properties ctx, int IMP_ProcessorLog_ID, String trxName) {
- super(ctx, IMP_ProcessorLog_ID, trxName);
- }
-
- /**
- *
- * @param ctx
- * @param rs
- * @param trxName
- */
- public MIMPProcessorLog(Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-
- /**
- *
- * @param parent
- * @param summary
- */
- public MIMPProcessorLog (MIMPProcessor parent, String summary)
- {
- this (parent.getCtx(), 0, parent.get_TrxName());
- setClientOrg(parent);
- setIMP_Processor_ID(parent.getIMP_Processor_ID());
- setSummary(summary);
- }
-
-}
diff --git a/base/src/org/eevolution/model/MPPCostCollector.java b/base/src/org/eevolution/model/MPPCostCollector.java
deleted file mode 100644
index 38e660857d..0000000000
--- a/base/src/org/eevolution/model/MPPCostCollector.java
+++ /dev/null
@@ -1,1002 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-package org.eevolution.model;
-
-
-import java.io.File;
-import java.math.BigDecimal;
-import java.sql.ResultSet;
-import java.sql.Timestamp;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Properties;
-
-import org.adempiere.exceptions.AdempiereException;
-import org.adempiere.exceptions.DocTypeNotFoundException;
-import org.adempiere.exceptions.FillMandatoryException;
-import org.adempiere.exceptions.NoVendorForProductException;
-import org.compiere.model.I_C_UOM;
-import org.compiere.model.I_M_Product;
-import org.compiere.model.MAttributeSetInstance;
-import org.compiere.model.MBPartner;
-import org.compiere.model.MClient;
-import org.compiere.model.MDocType;
-import org.compiere.model.MLocator;
-import org.compiere.model.MOrder;
-import org.compiere.model.MOrderLine;
-import org.compiere.model.MPeriod;
-import org.compiere.model.MProduct;
-import org.compiere.model.MProductPO;
-import org.compiere.model.MStorage;
-import org.compiere.model.MTransaction;
-import org.compiere.model.MUOM;
-import org.compiere.model.MWarehouse;
-import org.compiere.model.ModelValidationEngine;
-import org.compiere.model.ModelValidator;
-import org.compiere.model.Query;
-import org.compiere.print.ReportEngine;
-import org.compiere.process.DocAction;
-import org.compiere.process.DocumentEngine;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.compiere.util.Msg;
-import org.compiere.util.TimeUtil;
-import org.eevolution.exceptions.ActivityProcessedException;
-
-/**
- * PP Cost Collector Model
- *
- * @author victor.perez@e-evolution.com, e-Evolution http://www.e-evolution.com
- * Original contributor of Manufacturing Standard Cost
- * FR [ 2520591 ] Support multiples calendar for Org
- * @see http://sourceforge.net/tracker2/?func=detail&atid=879335&aid=2520591&group_id=176962
- *
- * @author Teo Sarca, www.arhipac.ro
- * @version $Id: MPPCostCollector.java,v 1.1 2004/06/19 02:10:34 vpj-cd Exp $
- */
-public class MPPCostCollector extends X_PP_Cost_Collector implements DocAction
-{
- private static final long serialVersionUID = 1L;
-
- /**
- * Create & Complete Cost Collector
- * @param pp_order
- * @param M_Product_ID
- * @param M_Locator_ID
- * @param M_AttributeSetInstance_ID
- * @param S_Resource_ID
- * @param PP_Order_BOMLine_ID
- * @param PP_Order_Node_ID
- * @param C_DocType_ID
- * @param CostCollectorType
- * @param movementdate
- * @param qty
- * @param scrap
- * @param reject
- * @param durationSetup
- * @param duration
- * @param trxName
- * @return completed cost collector
- */
- public static MPPCostCollector createCollector (MPPOrder pp_order,
- int M_Product_ID,
- int M_Locator_ID,
- int M_AttributeSetInstance_ID,
- int S_Resource_ID,
- int PP_Order_BOMLine_ID,
- int PP_Order_Node_ID,
- int C_DocType_ID,
- String CostCollectorType,
- Timestamp movementdate,
- BigDecimal qty,
- BigDecimal scrap,
- BigDecimal reject,
- int durationSetup,
- int duration,
- String trxName
- )
- {
- MPPCostCollector cc = new MPPCostCollector(pp_order.getCtx(), 0, trxName);
- cc.setPP_Order_ID(pp_order.getPP_Order_ID());
- cc.setPP_Order_BOMLine_ID(PP_Order_BOMLine_ID);
- cc.setPP_Order_Workflow_ID(pp_order.getMPPOrderWorkflow().getPP_Order_Workflow_ID());
- cc.setPP_Order_Node_ID(PP_Order_Node_ID);
- cc.setAD_OrgTrx_ID(pp_order.getAD_OrgTrx_ID());
- cc.setC_Activity_ID(pp_order.getC_Activity_ID());
- cc.setC_Campaign_ID(pp_order.getC_Campaign_ID());
- cc.setC_DocType_ID(C_DocType_ID);
- cc.setC_DocTypeTarget_ID(C_DocType_ID);
- cc.setCostCollectorType(CostCollectorType);
- cc.setC_Project_ID(pp_order.getC_Project_ID());
- cc.setDescription(pp_order.getDescription());
- cc.setDocAction(MPPCostCollector.ACTION_Complete);
- cc.setDocStatus(MPPCostCollector.DOCSTATUS_Drafted);
- cc.setIsActive(true);
- cc.setM_Warehouse_ID(pp_order.getM_Warehouse_ID());
- cc.setM_Locator_ID(M_Locator_ID);
- cc.setM_AttributeSetInstance_ID(M_AttributeSetInstance_ID);
- cc.setS_Resource_ID(S_Resource_ID);
- cc.setMovementDate(movementdate);
- cc.setDateAcct(movementdate);
- cc.setMovementQty(qty);
- cc.setScrappedQty(scrap);
- cc.setQtyReject(reject);
- cc.setSetupTimeReal(new BigDecimal(durationSetup));
- cc.setDurationReal(new BigDecimal(duration));
- cc.setPosted(false);
- cc.setProcessed(false);
- cc.setProcessing(false);
- cc.setUser1_ID(pp_order.getUser1_ID());
- cc.setUser2_ID(pp_order.getUser2_ID());
- cc.setM_Product_ID(M_Product_ID);
- cc.saveEx();
- if (!cc.processIt(MPPCostCollector.DOCACTION_Complete))
- {
- throw new AdempiereException(cc.getProcessMsg());
- }
- cc.saveEx();
- return cc;
- }
-
-
-
- /**
- * Standard Constructor
- * @param ctx context
- * @param PP_Cost_Collector id
- */
- public MPPCostCollector(Properties ctx, int PP_Cost_Collector_ID, String trxName)
- {
- super (ctx, PP_Cost_Collector_ID,trxName);
- if (PP_Cost_Collector_ID == 0)
- {
- setC_DocType_ID(0);
- setDocStatus (DOCSTATUS_Drafted); // DR
- setDocAction (DOCACTION_Complete); // CO
- setMovementDate (new Timestamp(System.currentTimeMillis())); // @#Date@
- setIsActive(true);
- setPosted (false);
- setProcessing (false);
- setProcessed (false);
- }
- } // MPPCostCollector
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set
- */
- public MPPCostCollector(Properties ctx, ResultSet rs,String trxName)
- {
- super (ctx, rs, trxName);
- } // MPPCostCollector
-
-
- /**
- * Add to Description
- * @param description text
- */
- public void addDescription (String description)
- {
- String desc = getDescription();
- if (desc == null)
- setDescription(description);
- else
- setDescription(desc + " | " + description);
- } // addDescription
-
-
- public void setC_DocTypeTarget_ID(String docBaseType)
- {
- MDocType[] doc = MDocType.getOfDocBaseType(getCtx(), docBaseType);
- if(doc == null)
- {
- throw new DocTypeNotFoundException(docBaseType, "");
- }
- else
- {
- setC_DocTypeTarget_ID(doc[0].get_ID());
- }
- }
-
-// @Override
- public void setProcessed (boolean processed)
- {
- super.setProcessed (processed);
- if (get_ID() == 0)
- return;
- final String sql = "UPDATE PP_Cost_Collector SET Processed=? WHERE PP_Cost_Collector_ID=?";
- int noLine = DB.executeUpdateEx(sql, new Object[]{processed, get_ID()}, get_TrxName());
- log.fine("setProcessed - " + processed + " - Lines=" + noLine);
- } // setProcessed
-
-
-// @Override
- public boolean processIt (String processAction)
- {
- m_processMsg = null;
- DocumentEngine engine = new DocumentEngine (this, getDocStatus());
- return engine.processIt (processAction, getDocAction());
- } // processIt
-
- /** Process Message */
- private String m_processMsg = null;
- /** Just Prepared Flag */
- private boolean m_justPrepared = false;
-
- /** Manufacturing Order **/
- private MPPOrder m_pporder = null;
-
- /** Manufacturing Order Activity **/
- private MPPOrderNode m_orderNode = null;
-
- /** Manufacturing Order BOM Line **/
- private MPPOrderBOMLine m_bomLine = null;
-
-// @Override
- public boolean unlockIt()
- {
- log.info("unlockIt - " + toString());
- setProcessing(false);
- return true;
- } // unlockIt
-
-// @Override
- public boolean invalidateIt()
- {
- log.info("invalidateIt - " + toString());
- setDocAction(DOCACTION_Prepare);
- return true;
- } // invalidateIt
-
-// @Override
- public String prepareIt()
- {
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_BEFORE_PREPARE);
- if (m_processMsg != null)
- {
- return DocAction.STATUS_Invalid;
- }
-
- MPeriod.testPeriodOpen(getCtx(), getMovementDate(), getC_DocTypeTarget_ID(), getAD_Org_ID());
- // Convert/Check DocType
- setC_DocType_ID(getC_DocTypeTarget_ID());
-
- //
- // Operation Activity
- if(isCostCollectorType(COSTCOLLECTORTYPE_ActivityControl))
- {
- MPPOrderNode activity = getPP_Order_Node();
- if(MPPOrderNode.DOCACTION_Complete.equals(activity.getDocStatus()))
- {
- throw new ActivityProcessedException(activity);
- }
-
- if (activity.isSubcontracting())
- {
- if(MPPOrderNode.DOCSTATUS_InProgress.equals(activity.getDocStatus())
- && MPPCostCollector.DOCSTATUS_InProgress.equals(getDocStatus()))
- {
- return MPPOrderNode.DOCSTATUS_InProgress;
- }
- else if(MPPOrderNode.DOCSTATUS_InProgress.equals(activity.getDocStatus())
- && MPPCostCollector.DOCSTATUS_Drafted.equals(getDocStatus()))
- {
- throw new ActivityProcessedException(activity);
- }
- m_processMsg = createPO(activity);
- m_justPrepared = false;
- setDocAction(DOCACTION_Complete);
- activity.setDocStatus(DOCSTATUS_InProgress);
- activity.saveEx();
- return DOCSTATUS_InProgress;
- }
-
- activity.setDocStatus(DOCSTATUS_InProgress);
- activity.setQtyDelivered(activity.getQtyDelivered().add(getMovementQty()));
- activity.setQtyScrap(activity.getQtyScrap().add(getScrappedQty()));
- activity.setQtyReject(activity.getQtyReject().add(getQtyReject()));
- activity.setDurationReal(activity.getDurationReal()+getDurationReal().intValue());
- activity.setSetupTimeReal(activity.getSetupTimeReal()+getSetupTimeReal().intValue());
- activity.saveEx();
-
- // report all activity previews to milestone activity
- if(activity.isMilestone())
- {
- MPPOrderWorkflow order_workflow = activity.getMPPOrderWorkflow();
- order_workflow.closeActivities(activity, getMovementDate(), true);
- }
- }
-
-
- m_justPrepared = true;
- setDocAction(DOCACTION_Complete);
-
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_AFTER_PREPARE);
- if (m_processMsg != null)
- {
- return DocAction.STATUS_Invalid;
- }
-
- return DocAction.STATUS_InProgress;
- } // prepareIt
-
-// @Override
- public boolean approveIt()
- {
- log.info("approveIt - " + toString());
- //setIsApproved(true);
- return true;
- } // approveIt
-
-// @Override
- public boolean rejectIt()
- {
- log.info("rejectIt - " + toString());
- //setIsApproved(false);
- return true;
- } // rejectIt
-
-// @Override
- public String completeIt()
- {
- // Re-Check
- if (!m_justPrepared)
- {
- String status = prepareIt();
- if (!DocAction.STATUS_InProgress.equals(status))
- return status;
- }
-
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_BEFORE_COMPLETE);
- if (m_processMsg != null)
- return DocAction.STATUS_Invalid;
-
- BigDecimal QtyIssue = Env.ZERO;
- BigDecimal QtyReceipt = Env.ZERO;
- BigDecimal Qty = getMovementQty();
-
- if (isIssue())
- {
- Qty = Qty.negate();
- QtyIssue = Qty;
- }
- else
- {
- QtyReceipt = Qty.negate();
- }
-
- //
- // Update Order Line
- if(!isCostCollectorType(COSTCOLLECTORTYPE_ActivityControl))
- {
- // Stock Movement
- MProduct product = MProduct.get(getCtx(), getM_Product_ID());
- if (product != null && product.isStocked())
- {
- // Only for Production Issue records
- if (isIssue())
- {
- checkMaterialPolicy(getPP_Order_BOMLine());
- }
-
- log.fine("Material Transaction");
- MTransaction mtrx = null;
- int reservationAttributeSetInstance_ID = getM_AttributeSetInstance_ID();
-
- if (getM_AttributeSetInstance_ID() == 0)
- {
- for (MPPOrderBOMLineMA ma : MPPOrderBOMLineMA.get(getCtx(), getPP_Order_Node_ID(), get_TrxName()))
- {
- BigDecimal QtyMA = ma.getMovementQty();
- if (isIssue())
- {
- QtyMA = QtyMA.negate();
- QtyIssue = QtyMA;
- }
- else
- {
- QtyReceipt = QtyMA.negate();
- }
-
- if (!MStorage.add(getCtx(), getM_Warehouse_ID(),
- getM_Locator_ID(),
- getM_Product_ID(),
- ma.getM_AttributeSetInstance_ID(), reservationAttributeSetInstance_ID,
- QtyMA, QtyIssue, QtyReceipt, get_TrxName()))
- {
- throw new AdempiereException(); //Cannot correct Inventory (MA)
- }
-
- // Create Transaction
- mtrx = new MTransaction (getCtx(), this.getAD_Org_ID(),
- getMovementType(), getM_Locator_ID(),
- getM_Product_ID(), ma.getM_AttributeSetInstance_ID(),
- QtyMA, getMovementDate(), get_TrxName());
- mtrx.setPP_Cost_Collector_ID(getPP_Cost_Collector_ID());
- mtrx.saveEx();
- }
- }
- // sLine.getM_AttributeSetInstance_ID() != 0
- if (mtrx == null)
- {
- // Fallback: Update Storage -
- if (!MStorage.add(getCtx(), getM_Warehouse_ID(),
- getM_Locator_ID(),
- getM_Product_ID(),
- getM_AttributeSetInstance_ID(), reservationAttributeSetInstance_ID,
- Qty, QtyIssue, QtyReceipt, get_TrxName()))
- {
- throw new AdempiereException(); // Cannot correct Inventory;
- }
- // FallBack: Create Transaction
-
- mtrx = new MTransaction (getCtx(),getAD_Org_ID(),
- getMovementType(), getM_Locator_ID(),
- getM_Product_ID(), getM_AttributeSetInstance_ID(),
- Qty, getMovementDate(), get_TrxName());
- mtrx.setPP_Cost_Collector_ID(getPP_Cost_Collector_ID());
- mtrx.saveEx();
- }
- } // stock movement
-
-
- if (isIssue())
- {
- // Update PP Order Line
- MPPOrderBOMLine obomline = getPP_Order_BOMLine();
- obomline.setQtyDelivered(obomline.getQtyDelivered().add(getMovementQty()));
- obomline.setQtyScrap(obomline.getQtyScrap().add(getScrappedQty()));
- obomline.setQtyReject(obomline.getQtyReject().add(getQtyReject()));
- obomline.setDateDelivered(getMovementDate()); // overwrite=last
- obomline.setM_AttributeSetInstance_ID(getM_AttributeSetInstance_ID());
- log.fine("OrderLine - Reserved=" + obomline.getQtyReserved() + ", Delivered=" + obomline.getQtyDelivered());
- obomline.setQtyReserved(obomline.getQtyReserved().subtract(getMovementQty()));
- obomline.saveEx();
- log.fine("OrderLine -> Reserved="+obomline.getQtyReserved()+", Delivered="+obomline.getQtyDelivered());
- }
- if (isReceipt())
- {
- // Update PP Order Qtys
- MPPOrder order = getPP_Order();
- order.setQtyDelivered(order.getQtyDelivered().add(getMovementQty()));
- order.setQtyScrap(order.getQtyScrap().add(getScrappedQty()));
- order.setQtyReject(order.getQtyReject().add(getQtyReject()));
- order.setQtyReserved(order.getQtyReserved().subtract(getMovementQty()));
- //
- // Update PP Order Dates
- order.setDateDelivered(getMovementDate()); // overwrite=last
- if (order.getDateStart() == null)
- {
- order.setDateStart(getMovementDate());
- }
- if (order.getQtyOpen().signum() <= 0)
- {
- order.setDateFinish(getMovementDate());
- }
- order.saveEx();
- }
- }
- else if(isCostCollectorType(COSTCOLLECTORTYPE_ActivityControl))
- {
- MPPOrderNode activity = getPP_Order_Node();
- if(activity.getDocStatus().equals(MPPOrderNode.DOCSTATUS_Completed))
- {
- throw new ActivityProcessedException(activity);
- }
-
- if(isSubcontracting())
- {
- String whereClause = MOrderLine.COLUMNNAME_PP_Cost_Collector_ID+"=?";
- Collection olines = new Query(getCtx(), MOrderLine.Table_Name, whereClause, get_TrxName())
- .setParameters(new Object[]{get_ID()})
- .list();
- String DocStatus = MPPOrderNode.DOCSTATUS_Completed;
- StringBuffer msg = new StringBuffer("The quantity do not is complete for next Purchase Order : ");
- for (MOrderLine oline : olines)
- {
- if(oline.getQtyDelivered().compareTo(oline.getQtyOrdered()) < 0)
- {
- DocStatus = MPPOrderNode.DOCSTATUS_InProgress;
- }
- msg.append(oline.getParent().getDocumentNo()).append(",");
- }
-
- if(MPPOrderNode.DOCSTATUS_InProgress.equals(DocStatus))
- {
- m_processMsg = msg.toString();
- return DocStatus;
- }
- setProcessed(true);
- setDocAction(MPPOrderNode.DOCACTION_Close);
- setDocStatus(MPPOrderNode.DOCSTATUS_Completed);
- activity.setDocStatus(MPPOrderNode.DOCSTATUS_Completed);
- activity.setDocAction(MPPOrderNode.DOCACTION_None);
- activity.saveEx();
- m_processMsg = Msg.translate(getCtx(), "PP_Order_ID")
- +": "+ getPP_Order().getDocumentNo()
- +" "+ Msg.translate(getCtx(),"PP_Order_Node_ID")
- +": "+getPP_Order_Node().getValue();
- return DocStatus;
- }
- else
- {
- if(activity.getQtyDelivered().compareTo(activity.getQtyRequiered()) >= 0)
- {
- activity.setDocStatus(MPPOrderNode.DOCSTATUS_Completed);
- activity.setDocAction(MPPOrderNode.DOCACTION_None);
- activity.setAction(MPPOrderNode.ACTION_WaitSleep);
- activity.saveEx();
- }
- }
- } // end Activity Control
- //
- setProcessed(true);
- setDocAction(DOCACTION_Close);
- setDocStatus(DOCSTATUS_Completed);
-
- return DocAction.STATUS_Completed;
- } // completeIt
-
-// @Override
- public boolean voidIt()
- {
- return false;
- } // voidIt
-
-// @Override
- public boolean closeIt()
- {
- log.info("closeIt - " + toString());
- setDocAction(DOCACTION_None);
- return true;
- } // closeIt
-
-// @Override
- public boolean reverseCorrectIt()
- {
- return false;
- }
-
-// @Override
- public boolean reverseAccrualIt()
- {
- return false;
- }
-
-// @Override
- public boolean reActivateIt()
- {
- return false;
- }
-
-// @Override
- public String getSummary()
- {
- StringBuffer sb = new StringBuffer();
- sb.append(getDescription());
- return sb.toString();
- }
-
-// @Override
- public String getProcessMsg()
- {
- return m_processMsg;
- }
-
-// @Override
- public int getDoc_User_ID()
- {
- return getCreatedBy();
- }
-
-// @Override
- public int getC_Currency_ID()
- {
- return 0;
- }
-
-// @Override
- public BigDecimal getApprovalAmt()
- {
- return Env.ZERO;
- }
-
-// @Override
- public File createPDF ()
- {
- try
- {
- File temp = File.createTempFile(get_TableName()+get_ID()+"_", ".pdf");
- return createPDF (temp);
- }
- catch (Exception e)
- {
- log.severe("Could not create PDF - " + e.getMessage());
- }
- return null;
- } // getPDF
-
- /**
- * Create PDF file
- * @param file output file
- * @return file if success
- */
- public File createPDF (File file)
- {
- ReportEngine re = ReportEngine.get (getCtx(), ReportEngine.ORDER, getPP_Order_ID());
- if (re == null)
- return null;
- return re.getPDF(file);
- } // createPDF
-
-// @Override
- public String getDocumentInfo()
- {
- MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
- return dt.getName() + " " + getDocumentNo();
- } // getDocumentInfo
-
- @Override
- protected boolean beforeSave(boolean newRecord)
- {
- // Set default locator, if not set and we have the warehouse:
- if (getM_Locator_ID() <= 0 && getM_Warehouse_ID() > 0)
- {
- MWarehouse wh = MWarehouse.get(getCtx(), getM_Warehouse_ID());
- MLocator loc = wh.getDefaultLocator();
- if (loc != null)
- {
- setM_Locator_ID(loc.get_ID());
- }
- }
- //
- if (isCostCollectorType(COSTCOLLECTORTYPE_ActivityControl) && getPP_Order_Node_ID() <= 0)
- {
- throw new FillMandatoryException(COLUMNNAME_PP_Order_Node_ID);
- }
- //
- if (isIssue() && getPP_Order_BOMLine_ID() <= 0)
- {
- throw new FillMandatoryException(COLUMNNAME_PP_Order_BOMLine_ID);
- }
- //
- return true;
- }
-
- private void closeNew(int PP_Order_ID, int PP_Order_Node_ID)
- {
- if(isCostCollectorType(COSTCOLLECTORTYPE_ActivityControl))
- {
- String whereClause = COLUMNNAME_PP_Order_ID+"=?";
- List list = new Query(getCtx(), Table_Name, whereClause, get_TrxName())
- .setOnlyActiveRecords(true)
- .setParameters(new Object[]{PP_Order_ID})
- .list();
- for (MPPCostCollector cc : list)
- {
- cc.setDocStatus(DOCSTATUS_Closed);
- cc.setDocAction(DOCACTION_None);
- cc.saveEx();
- }
- }
- }
-
- @Deprecated
- private void completeNew(int PP_Order_ID)
- {
- if(isCostCollectorType(COSTCOLLECTORTYPE_ActivityControl))
- {
- String whereClause = COLUMNNAME_PP_Order_ID+"=?"
- +" AND "+COLUMNNAME_DocStatus+"<>'"+DOCSTATUS_Completed+"'"
- +" AND "+COLUMNNAME_DocStatus+"<>'"+DOCSTATUS_Closed+"'";
- List list = new Query(getCtx(), Table_Name, whereClause, get_TrxName())
- .setOnlyActiveRecords(true)
- .setParameters(new Object[]{PP_Order_ID})
- .list();
- for (MPPCostCollector cc : list)
- {
- cc.completeIt();
- cc.saveEx();
- }
- }
- }
-
- /**
- * Check Material Policy.
- * Sets line ASI
- */
- private void checkMaterialPolicy(MPPOrderBOMLine line)
- {
- MPPOrderBOMLineMA.deleteOrderBOMLineMA(line.get_ID(), get_TrxName());
-
- // is ASI != 0, MA is not needed
- if (line.getM_AttributeSetInstance_ID() != 0)
- {
- return;
- }
-
- BigDecimal qty = getMovementQty();
- BigDecimal qtyASI = Env.ZERO ;
-
- // Check Line
- MProduct product = MProduct.get(getCtx(), line.getM_Product_ID());
- if (qty.signum() > 0) // Incoming Trx -> Create new ASI
- {
- MAttributeSetInstance asi = new MAttributeSetInstance(getCtx(), 0, get_TrxName());
- asi.setM_AttributeSet_ID(product.getM_AttributeSet_ID());
- asi.saveEx();
- line.setM_AttributeSetInstance_ID(asi.getM_AttributeSetInstance_ID());
- line.saveEx();
- }
- else // Outgoing Trx
- {
- String MMPolicy = product.getMMPolicy();
- MStorage[] storages = MStorage.getAllWithASI(getCtx(),
- line.getM_Product_ID(), line.getM_Locator_ID(),
- MClient.MMPOLICY_FiFo.equals(MMPolicy), get_TrxName());
- BigDecimal qtyToDeliver = qty.negate();
-
- for (MStorage storage : storages)
- {
- //consume ASI Zero
- if (storage.getM_AttributeSetInstance_ID() == 0)
- {
- qtyASI = qtyASI.add(storage.getQtyOnHand());
- qtyToDeliver = qtyToDeliver.subtract(storage.getQtyOnHand());
- }
- else if (storage.getQtyOnHand().compareTo(qtyToDeliver) >= 0)
- {
- MPPOrderBOMLineMA ma = new MPPOrderBOMLineMA (line,
- storage.getM_AttributeSetInstance_ID(),
- qtyToDeliver);
- ma.saveEx();
- qtyToDeliver = Env.ZERO;
- log.fine( ma + ", QtyToDeliver=" + qtyToDeliver);
- break;
- }
- else
- {
- MPPOrderBOMLineMA ma = new MPPOrderBOMLineMA (line,
- storage.getM_AttributeSetInstance_ID(),
- storage.getQtyOnHand());
- ma.saveEx();
- qtyToDeliver = qtyToDeliver.subtract(storage.getQtyOnHand());
- log.fine( ma + ", QtyToDeliver=" + qtyToDeliver);
- }
- } // for storage
-
- // No AttributeSetInstance found for remainder
- BigDecimal qtyRemaining = qtyToDeliver.add(qtyASI);
- if (qtyRemaining.signum() != 0)
- {
- MPPOrderBOMLineMA ma = new MPPOrderBOMLineMA (line, 0 , qtyRemaining);
- ma.saveEx();
- log.fine("##: " + ma);
- }
- } // outgoing Trx
- } // checkMaterialPolicy
-
- @Override
- public MPPOrderNode getPP_Order_Node()
- {
- int node_id = getPP_Order_Node_ID();
- if (node_id <= 0)
- {
- m_orderNode = null;
- return null;
- }
- if (m_orderNode == null || m_orderNode.get_ID() != node_id)
- {
- m_orderNode = new MPPOrderNode(getCtx(), node_id, get_TrxName());
- }
- m_orderNode.set_TrxName(get_TrxName());
- return m_orderNode;
- }
-
- @Override
- public MPPOrderBOMLine getPP_Order_BOMLine()
- {
- int id = getPP_Order_BOMLine_ID();
- if (id <= 0)
- {
- m_bomLine = null;
- return null;
- }
- if (m_bomLine == null || m_bomLine.get_ID() != id)
- {
- m_bomLine = new MPPOrderBOMLine(getCtx(), id, get_TrxName());
- }
- m_bomLine.set_TrxName(get_TrxName());
- return m_bomLine;
- }
-
- @Override
- public MPPOrder getPP_Order()
- {
- int id = getPP_Order_ID();
- if (id <= 0)
- {
- m_pporder = null;
- return null;
- }
- if (m_pporder == null || m_pporder.get_ID() != id)
- {
- m_pporder = new MPPOrder(getCtx(), id, get_TrxName());
- }
- m_pporder.set_TrxName(get_TrxName());
- return m_pporder;
- }
-
-
- /**
- * Create Purchase Order (in case of Subcontracting)
- * @param activity
- */
- private String createPO(MPPOrderNode activity)
- {
- String msg = "";
- HashMap orders = new HashMap();
- //
- String whereClause = MPPOrderNodeProduct.COLUMNNAME_PP_Order_Node_ID+"=?"
- +" AND "+MPPOrderNodeProduct.COLUMNNAME_IsSubcontracting+"=?";
- Collection subcontracts = new Query(getCtx(), MPPOrderNodeProduct.Table_Name, whereClause, get_TrxName())
- .setParameters(new Object[]{activity.get_ID(), true})
- .setOnlyActiveRecords(true)
- .list();
-
- for (MPPOrderNodeProduct subcontract : subcontracts)
- {
- //
- // If Product is not Purchased or is not Service, then it is not a subcontracting candidate [SKIP]
- MProduct product = MProduct.get(getCtx(), subcontract.getM_Product_ID());
- if(!product.isPurchased() || !MProduct.PRODUCTTYPE_Service.equals(product.getProductType()))
- throw new AdempiereException("The Product: " + product.getName() + " Do not is Purchase or Service Type");
-
- //
- // Find Vendor and Product PO data
- int C_BPartner_ID = activity.getC_BPartner_ID();
- MProductPO product_po = null;
- for (MProductPO ppo : MProductPO.getOfProduct(getCtx(), product.get_ID(), null))
- {
- if(C_BPartner_ID == ppo.getC_BPartner_ID())
- {
- C_BPartner_ID = ppo.getC_BPartner_ID();
- product_po = ppo;
- break;
- }
- if (ppo.isCurrentVendor() && ppo.getC_BPartner_ID() != 0)
- {
- C_BPartner_ID = ppo.getC_BPartner_ID();
- product_po = ppo;
- break;
- }
- }
- if(C_BPartner_ID <= 0 || product_po == null)
- {
- throw new NoVendorForProductException(product.getName());
- }
- //
- // Calculate Lead Time
- Timestamp today = new Timestamp(System.currentTimeMillis());
- Timestamp datePromised = TimeUtil.addDays(today, product_po.getDeliveryTime_Promised());
- //
- // Get/Create Purchase Order Header
- MOrder order = orders.get(C_BPartner_ID);
- if(order == null)
- {
- order = new MOrder(getCtx(), 0, get_TrxName());
- MBPartner vendor = MBPartner.get(getCtx(), C_BPartner_ID);
- order.setAD_Org_ID(getAD_Org_ID());
- order.setBPartner(vendor);
- order.setIsSOTrx(false);
- order.setC_DocTypeTarget_ID();
- order.setDatePromised(datePromised);
- order.setDescription(Msg.translate(getCtx(), MPPOrder.COLUMNNAME_PP_Order_ID) +":"+getPP_Order().getDocumentNo());
- order.setDocStatus(MOrder.DOCSTATUS_Drafted);
- order.setDocAction(MOrder.DOCACTION_Complete);
- order.setAD_User_ID(getAD_User_ID());
- order.setM_Warehouse_ID(getM_Warehouse_ID());
- //order.setSalesRep_ID(getAD_User_ID());
- order.saveEx();
- addDescription(Msg.translate(getCtx(), "C_Order_ID")+": "+order.getDocumentNo());
- orders.put(C_BPartner_ID, order);
- msg = msg + Msg.translate(getCtx(), "C_Order_ID")
- +" : "+ order.getDocumentNo()
- +" - "
- +Msg.translate(getCtx(),"C_BPartner_ID")
- +" : "+vendor.getName()+" , ";
- }
- //
- // Create Order Line:
- BigDecimal QtyOrdered = getMovementQty().multiply(subcontract.getQty());
- // Check Order Min
- if(product_po.getOrder_Min().signum() > 0)
- {
- QtyOrdered = QtyOrdered.max(product_po.getOrder_Min());
- }
- // Check Order Pack
- if (product_po.getOrder_Pack().signum() > 0 && QtyOrdered.signum() > 0)
- {
- QtyOrdered = product_po.getOrder_Pack().multiply(QtyOrdered.divide(product_po.getOrder_Pack(), 0 , BigDecimal.ROUND_UP));
- }
- MOrderLine oline = new MOrderLine(order);
- oline.setM_Product_ID(product.getM_Product_ID());
- oline.setDescription(activity.getDescription());
- oline.setM_Warehouse_ID(getM_Warehouse_ID());
- oline.setQty(QtyOrdered);
- //line.setPrice(m_product_po.getPricePO());
- //oline.setPriceList(m_product_po.getPriceList());
- oline.setPP_Cost_Collector_ID(get_ID());
- oline.setDatePromised(datePromised);
- oline.saveEx();
- //
- // TODO: Mark this as processed?
- setProcessed(true);
- } // each subcontracting line
- return msg;
- }
-
- @Override
- public I_M_Product getM_Product()
- {
- return MProduct.get(getCtx(), getM_Product_ID());
- }
-
- @Override
- public I_C_UOM getC_UOM()
- {
- return MUOM.get(getCtx(), getC_UOM_ID());
- }
-
- public boolean isIssue()
- {
- return isCostCollectorType(COSTCOLLECTORTYPE_ComponentIssue);
- }
-
- public boolean isReceipt()
- {
- return isCostCollectorType(COSTCOLLECTORTYPE_MaterialReceipt);
- }
-
- public String getMovementType()
- {
- if (isCostCollectorType(COSTCOLLECTORTYPE_MaterialReceipt))
- return MTransaction.MOVEMENTTYPE_WorkOrderPlus;
- else if(isCostCollectorType(COSTCOLLECTORTYPE_ComponentIssue))
- return MTransaction.MOVEMENTTYPE_WorkOrder_;
- else
- return null;
- }
-
- /**
- * Check if CostCollectorType is equal with any of provided types
- * @param types
- * @return
- */
- public boolean isCostCollectorType(String ... types)
- {
- String type = getCostCollectorType();
- for (String t : types)
- {
- if (type.equals(t))
- return true;
- }
- return false;
- }
-} // MPPCostCollector
diff --git a/base/src/org/eevolution/model/MPPMRP.java b/base/src/org/eevolution/model/MPPMRP.java
deleted file mode 100644
index 467f1179a4..0000000000
--- a/base/src/org/eevolution/model/MPPMRP.java
+++ /dev/null
@@ -1,917 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.math.BigDecimal;
-import java.sql.ResultSet;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Properties;
-
-import org.adempiere.exceptions.AdempiereException;
-import org.compiere.model.MDocType;
-import org.compiere.model.MForecastLine;
-import org.compiere.model.MLocator;
-import org.compiere.model.MOrder;
-import org.compiere.model.MOrderLine;
-import org.compiere.model.MProduct;
-import org.compiere.model.MRefList;
-import org.compiere.model.MRequisition;
-import org.compiere.model.MRequisitionLine;
-import org.compiere.model.MResource;
-import org.compiere.model.MResourceType;
-import org.compiere.model.PO;
-import org.compiere.model.Query;
-import org.compiere.model.X_M_Forecast;
-import org.compiere.process.DocAction;
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.compiere.util.Msg;
-import org.compiere.util.TimeUtil;
-import org.compiere.util.Util;
-import org.compiere.wf.MWorkflow;
-
-
-/**
- * PP_MRP
- *
- * @author Victor Perez www.e-evolution.com
- * @version $Id: MPPMRP.java,v 1.4 2004/05/13 06:05:22 vpj-cd Exp $
- *
- * @author Teo Sarca, www.arhipac.ro
- */
-public class MPPMRP extends X_PP_MRP
-{
- private static final long serialVersionUID = 1L;
-
- private static CLogger s_log = CLogger.getCLogger(MPPMRP.class);
-
- private static HashMap s_sourceColumnNames = new HashMap();
- static
- {
- s_sourceColumnNames.put(MOrder.Table_Name, new String[]{
- MOrder.COLUMNNAME_DatePromised,
- MOrder.COLUMNNAME_DocStatus,
- });
- s_sourceColumnNames.put(MOrderLine.Table_Name, new String[]{
- "AD_Org_ID",
- MOrderLine.COLUMNNAME_DateOrdered,
- MOrderLine.COLUMNNAME_DatePromised,
- MOrderLine.COLUMNNAME_C_BPartner_ID,
- MOrderLine.COLUMNNAME_M_Warehouse_ID,
- MOrderLine.COLUMNNAME_M_Product_ID,
- MOrderLine.COLUMNNAME_QtyOrdered,
- MOrderLine.COLUMNNAME_QtyDelivered,
- });
- s_sourceColumnNames.put(MRequisition.Table_Name, new String[]{
- MRequisition.COLUMNNAME_DateRequired,
- MRequisition.COLUMNNAME_M_Warehouse_ID,
- });
- s_sourceColumnNames.put(MRequisitionLine.Table_Name, new String[]{
- "AD_Org_ID",
- MRequisitionLine.COLUMNNAME_M_Product_ID,
- MRequisitionLine.COLUMNNAME_Qty,
- MRequisitionLine.COLUMNNAME_C_OrderLine_ID, // QtyOrdered depends on that
- });
- s_sourceColumnNames.put(X_M_Forecast.Table_Name, new String[]{
- });
- s_sourceColumnNames.put(MForecastLine.Table_Name, new String[]{
- "AD_Org_ID",
- MForecastLine.COLUMNNAME_DatePromised,
- MForecastLine.COLUMNNAME_M_Warehouse_ID,
- MForecastLine.COLUMNNAME_M_Product_ID,
- MForecastLine.COLUMNNAME_Qty,
- });
- s_sourceColumnNames.put(MDDOrderLine.Table_Name, new String[]{
- "AD_Org_ID",
- MDDOrderLine.COLUMNNAME_M_Product_ID,
- MDDOrderLine.COLUMNNAME_DatePromised,
- MDDOrderLine.COLUMNNAME_QtyOrdered,
- MDDOrderLine.COLUMNNAME_QtyDelivered,
- MDDOrderLine.COLUMNNAME_ConfirmedQty,
- MDDOrderLine.COLUMNNAME_M_Locator_ID,
- MDDOrderLine.COLUMNNAME_M_LocatorTo_ID,
- MDDOrderLine.COLUMNNAME_ConfirmedQty,
- });
- s_sourceColumnNames.put(MPPOrder.Table_Name, new String[]{
- "AD_Org_ID",
- MPPOrder.COLUMNNAME_M_Product_ID,
- MPPOrder.COLUMNNAME_DatePromised,
- MPPOrder.COLUMNNAME_QtyOrdered,
- MPPOrder.COLUMNNAME_QtyDelivered,
- MPPOrder.COLUMNNAME_PP_Product_BOM_ID,
- MPPOrder.COLUMNNAME_AD_Workflow_ID,
- });
- s_sourceColumnNames.put(MPPOrderBOMLine.Table_Name, new String[]{
- MPPOrderBOMLine.COLUMNNAME_M_Product_ID,
- MPPOrderBOMLine.COLUMNNAME_M_Warehouse_ID,
- MPPOrderBOMLine.COLUMNNAME_QtyEntered,
- MPPOrderBOMLine.COLUMNNAME_QtyDelivered,
- });
- }
-
- /**
- * Check if a persistent object is changed, from MRP point of view
- * @param po MRP relevant PO (e.g. MOrder, MOrderLine, MPPOrder etc)
- * @return true if object changed
- */
- public static boolean isChanged(PO po)
- {
- String[] columnNames = s_sourceColumnNames.get(po.get_TableName());
- if (columnNames == null || columnNames.length == 0)
- {
- return false;
- }
- for (String columnName : columnNames)
- {
- if (po.is_ValueChanged(columnName))
- {
- return true;
- }
- }
- return false;
- }
-
- public static void deleteMRP(PO po)
- {
- String tableName = po.get_TableName();
- int no = DB.executeUpdateEx("DELETE FROM "+Table_Name+" WHERE "+tableName+"_ID=? AND AD_Client_ID=?",
- new Object[]{po.get_ID(), po.getAD_Client_ID()},
- po.get_TrxName());
- s_log.finest("Deleted "+tableName+" #"+no);
- }
-
- private static Query getQuery(PO po, String typeMRP, String orderType)
- {
- ArrayList params = new ArrayList();
- StringBuffer whereClause = new StringBuffer();
- //
- whereClause.append("AD_Client_ID=?");
- params.add(po.getAD_Client_ID());
- //
- whereClause.append(" AND ").append(po.get_TableName()).append("_ID=?");
- params.add(po.get_ID());
- //
- if (typeMRP != null)
- {
- whereClause.append(" AND ").append(COLUMNNAME_TypeMRP).append("=?");
- params.add(typeMRP);
- }
- //
- if (orderType != null)
- {
- whereClause.append(" AND ").append(COLUMNNAME_OrderType).append("=?");
- params.add(orderType);
- }
- //
- return new Query(po.getCtx(), Table_Name, whereClause.toString(), po.get_TrxName())
- .setParameters(params);
- }
-
- /**************************************************************************
- * Default Constructor
- * @param ctx context
- * @param PP_MRP_ID id
- * @param trxName Transaction Name
- */
- public MPPMRP(Properties ctx, int PP_MRP_ID, String trxName)
- {
- super(ctx, PP_MRP_ID,trxName);
- if (PP_MRP_ID == 0)
- {
- setDateSimulation(new Timestamp (System.currentTimeMillis()));
- }
- } // MPPMRP
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set
- */
- public MPPMRP(Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs , trxName);
- }
-
- public void setPP_Order(MPPOrder o)
- {
- setPP_Order_ID(o.getPP_Order_ID());
- setOrderType(ORDERTYPE_ManufacturingOrder);
- //
- setName(o.getDocumentNo());
- setDescription(o.getDescription());
- setDatePromised(o.getDatePromised());
- setDateOrdered(o.getDateOrdered());
- setDateStartSchedule(o.getDateStartSchedule());
- setDateFinishSchedule(o.getDateFinishSchedule());
- setS_Resource_ID(o.getS_Resource_ID());
- setDocStatus(o.getDocStatus());
- }
-
- public void setC_Order(MOrder o)
- {
- setC_Order_ID(o.get_ID());
- setC_BPartner_ID(o.getC_BPartner_ID());
- setDocStatus(o.getDocStatus());
- if (o.isSOTrx())
- {
- setOrderType(MPPMRP.ORDERTYPE_SalesOrder);
- setTypeMRP(MPPMRP.TYPEMRP_Demand);
- }
- else
- {
- setOrderType(MPPMRP.ORDERTYPE_PurchaseOrder);
- setTypeMRP(MPPMRP.TYPEMRP_Supply);
- }
- }
-
- /**
- * Create MRP record based in Forecast Line
- * @param MForecastLine Forecast Line
- * @param delete Indicate if this record is delete
- */
- public static void M_ForecastLine(MForecastLine fl, boolean delete)
- {
- String trxName = fl.get_TrxName();
- Properties ctx = fl.getCtx();
-
- if (delete)
- {
- deleteMRP(fl);
- return;
- }
-
- X_M_Forecast f = new X_M_Forecast(ctx, fl.getM_Forecast_ID(), trxName);
- MPPMRP mrp = getQuery(fl, null, null).firstOnly();
- if (mrp == null)
- {
- mrp = new MPPMRP(ctx, 0, trxName);
- mrp.setAD_Org_ID(fl.getAD_Org_ID());
- mrp.setM_Forecast_ID(fl.getM_Forecast_ID());
- mrp.setM_ForecastLine_ID(fl.getM_ForecastLine_ID());
- mrp.setOrderType(MPPMRP.ORDERTYPE_Forecast);
- mrp.setTypeMRP(MPPMRP.TYPEMRP_Demand);
- }
- mrp.setAD_Org_ID(fl.getAD_Org_ID());
- mrp.setDescription(f.getDescription());
- mrp.setName("MRP");
- mrp.setQty(fl.getQty());
- mrp.setDatePromised(fl.getDatePromised());
- mrp.setDateStartSchedule(fl.getDatePromised());
- mrp.setDateFinishSchedule(fl.getDatePromised());
- mrp.setDateOrdered(fl.getDatePromised());
- mrp.setM_Product_ID(fl.getM_Product_ID());
- mrp.setM_Warehouse_ID(fl.getM_Warehouse_ID());
- mrp.setDocStatus(DocAction.STATUS_InProgress);
- mrp.saveEx();
- }
-
- /**
- * Create MRP record based in Order
- * @param MOrder
- * @param delete Indicate if this record is delete
- * @return
- */
- public static void C_Order(MOrder o, boolean delete)
- {
- if (delete)
- {
- deleteMRP(o);
- return;
- }
-
- MDocType dt = MDocType.get(o.getCtx(), o.getC_DocTypeTarget_ID());
- String DocSubTypeSO = dt.getDocSubTypeSO();
- if(MDocType.DOCSUBTYPESO_StandardOrder.equals(DocSubTypeSO) || !o.isSOTrx())
- {
- if((o.getDocStatus().equals(MOrder.DOCSTATUS_InProgress)
- || o.getDocStatus().equals(MOrder.DOCSTATUS_Completed))
- || !o.isSOTrx())
- {
- for(MOrderLine line : o.getLines())
- {
- C_OrderLine(line , false);
- }
- }
-
- if (o.is_ValueChanged(MOrder.COLUMNNAME_DocStatus)
- || o.is_ValueChanged(MOrder.COLUMNNAME_C_BPartner_ID)
- )
- {
- List list = getQuery(o, null, null).list();
- for (MPPMRP mrp : list)
- {
- mrp.setC_Order(o);
- mrp.saveEx();
- }
- }
- }
- }
-
- /**
- * Create MRP record based in Order Line
- * @param MOrderLine
- * @param delete Indicate if this record is delete
- * @return
- */
- public static void C_OrderLine(MOrderLine ol, boolean delete)
- {
- if (delete)
- {
- deleteMRP(ol);
- // Delete generated manufacturing order
- MPPOrder order = MPPOrder.forC_OrderLine_ID(ol.getCtx(), ol.get_ID(), ol.get_TrxName());
- if (order != null && !order.isProcessed())
- {
- order.deleteEx(true);
- }
- return;
- }
-
- MPPMRP mrp = getQuery(ol, null, null).firstOnly();
- if(mrp == null)
- {
- mrp = new MPPMRP(ol.getCtx(), 0, ol.get_TrxName());
- mrp.setC_OrderLine_ID(ol.getC_OrderLine_ID());
- }
- mrp.setAD_Org_ID(ol.getAD_Org_ID());
- mrp.setC_Order(ol.getParent());
- mrp.setDescription(ol.getDescription());
- mrp.setName("MRP");
- mrp.setQty(ol.getQtyOrdered().subtract(ol.getQtyDelivered()));
- mrp.setDatePromised(ol.getDatePromised());
- mrp.setDateStartSchedule(ol.getDatePromised());
- mrp.setDateFinishSchedule(ol.getDatePromised());
- mrp.setDateOrdered(ol.getDateOrdered());
- mrp.setM_Product_ID(ol.getM_Product_ID());
- mrp.setM_Warehouse_ID(ol.getM_Warehouse_ID());
- mrp.saveEx();
-
- MOrder o = ol.getParent();
- MDocType dt = MDocType.get(o.getCtx(), o.getC_DocTypeTarget_ID());
- String DocSubTypeSO = dt.getDocSubTypeSO();
- if(MDocType.DOCSUBTYPESO_StandardOrder.equals(DocSubTypeSO))
- {
- MPPOrder order = MPPOrder.forC_OrderLine_ID(ol.getCtx(), ol.get_ID(), ol.get_TrxName());
- if (order == null)
- {
- final String whereClause = MPPProductBOM.COLUMNNAME_BOMType+" IN (?,?)"
- +" AND "+MPPProductBOM.COLUMNNAME_BOMUse+"=?"
- +" AND "+MPPProductBOM.COLUMNNAME_M_Product_ID+"=?";
- MPPProductBOM bom = new Query(ol.getCtx(), MPPProductBOM.Table_Name, whereClause, null)
- .setParameters(new Object[]{
- MPPProductBOM.BOMTYPE_Make_To_Order,
- MPPProductBOM.BOMTYPE_Make_To_Kit,
- MPPProductBOM.BOMUSE_Manufacturing,
- ol.getM_Product_ID()})
- .firstOnly();
-
- MPPProductPlanning pp = null;
- //Validate the BOM based in planning data
- if(bom == null)
- {
- pp = MPPProductPlanning.find(ol.getCtx(), ol.getAD_Org_ID(), 0, 0, ol.getM_Product_ID(), null);
- if(pp != null)
- {
- bom = (MPPProductBOM) pp.getPP_Product_BOM();
- if( bom != null
- && !MPPProductBOM.BOMTYPE_Make_To_Order.equals(bom.getBOMType())
- && !MPPProductBOM.BOMTYPE_Make_To_Kit.equals(bom.getBOMType()) )
- {
- bom = null;
- }
- }
- }
- if (bom != null)
- {
- final MProduct product = MProduct.get(ol.getCtx(), ol.getM_Product_ID());
- final int plant_id = MPPProductPlanning.getPlantForWarehouse(ol.getM_Warehouse_ID());
- if(plant_id <= 0 )
- {
- //TODO: vpj-cd create the msg for error
- throw new AdempiereException("Do not exist Resource Plant for this Warehouse");
- }
- MWorkflow workflow = MWorkflow.get(ol.getCtx(), MWorkflow.getWorkflowSearchKey(product));
- //Validate the workflow based in planning data
- if(workflow == null && pp != null)
- {
- workflow = pp.getAD_Workflow();
- }
- //
- if (plant_id > 0 && workflow != null)
- {
- int duration = MPPMRP.getDays(ol.getCtx(), plant_id, workflow.get_ID(), ol.getQtyOrdered(), ol.get_TrxName()).intValue();
- //
- order = new MPPOrder(ol.getCtx(), 0 , ol.get_TrxName());
- //comment for Manufacturing Order
- order.setDescription( Msg.translate(ol.getCtx(),MRefList.getListName(ol.getCtx(), MPPOrderBOM.BOMTYPE_AD_Reference_ID, bom.getBOMType()))
- + " "
- + Msg.translate(ol.getCtx(), MOrder.COLUMNNAME_C_Order_ID)
- + " : "
- + o.getDocumentNo());
- order.setC_OrderLine_ID(ol.getC_OrderLine_ID());
- order.setS_Resource_ID(plant_id);
- order.setM_Warehouse_ID(ol.getM_Warehouse_ID());
- order.setM_Product_ID(ol.getM_Product_ID());
- order.setM_AttributeSetInstance_ID(ol.getM_AttributeSetInstance_ID());
- order.setPP_Product_BOM_ID(bom.get_ID());
- order.setAD_Workflow_ID(workflow.get_ID());
- order.setPlanner_ID(ol.getParent().getSalesRep_ID());
- order.setLine(10);
- order.setDateOrdered(ol.getDateOrdered());
- order.setDatePromised(ol.getDatePromised());
- order.setDateStartSchedule(TimeUtil.addDays(ol.getDatePromised(), 0 - duration));
- order.setDateFinishSchedule(ol.getDatePromised());
- order.setC_UOM_ID(ol.getC_UOM_ID());
- order.setQty(ol.getQtyOrdered());
- order.setPriorityRule(MPPOrder.PRIORITYRULE_High);
- order.saveEx();
- order.setDocStatus(order.prepareIt());
- order.setDocAction(MPPOrder.ACTION_Complete);
- order.saveEx();
- //comment for Order Line
- ol.setDescription( Msg.translate(ol.getCtx(),MRefList.getListName(ol.getCtx(), MPPOrderBOM.BOMTYPE_AD_Reference_ID, bom.getBOMType()))
- + " "
- + Msg.translate(ol.getCtx(), MPPOrder.COLUMNNAME_PP_Order_ID)
- + " : "
- + order.getDocumentNo());
- ol.saveEx();
- }
- }
- }
- else
- {
- if (!order.isProcessed())
- {
- //if you chance product in order line the Manufacturing order is void
- if(order.getM_Product_ID() != ol.getM_Product_ID())
- {
- order.setDescription("");
- order.setQtyEntered(Env.ZERO);
- order.setC_OrderLine_ID(0);
- order.voidIt();
- order.setDocStatus(MPPOrder.DOCSTATUS_Voided);
- order.setDocAction(MPPOrder.ACTION_None);
- order.save();
- ol.setDescription("");
- ol.saveEx();
-
- }
- if(order.getQtyEntered().compareTo(ol.getQtyEntered()) != 0)
- {
- order.setQty(ol.getQtyEntered());
- order.saveEx();
- }
- if(order.getDatePromised().compareTo(ol.getDatePromised()) != 0)
- {
- order.setDatePromised(ol.getDatePromised());
- order.saveEx();
- }
- }
- }
- }
-
- return;
- }
-
- /**
- * Create MRP record based in Manufacturing Order
- * @param MPPOrder Manufacturing Order
- * @param delete Indicate if this record is delete
- */
- public static void PP_Order(MPPOrder o, boolean delete)
- {
- Properties ctx = o.getCtx();
- String trxName = o.get_TrxName();
-
- if (delete)
- {
- deleteMRP(o);
- return;
- }
- //
- // Supply
- MPPMRP mrpSupply = getQuery(o, TYPEMRP_Supply, ORDERTYPE_ManufacturingOrder).firstOnly();
- if(mrpSupply == null)
- {
- mrpSupply = new MPPMRP(ctx, 0, trxName);
- mrpSupply.setAD_Org_ID(o.getAD_Org_ID());
- mrpSupply.setTypeMRP(MPPMRP.TYPEMRP_Supply);
- }
- mrpSupply.setPP_Order(o);
- mrpSupply.setQty(o.getQtyOrdered().subtract(o.getQtyDelivered()));
- mrpSupply.setM_Product_ID(o.getM_Product_ID());
- mrpSupply.setM_Warehouse_ID(o.getM_Warehouse_ID());
- mrpSupply.saveEx();
- //
- // Demand
- List mrpDemandList = getQuery(o, TYPEMRP_Demand, ORDERTYPE_ManufacturingOrder).list();
- for (MPPMRP mrpDemand : mrpDemandList)
- {
- mrpDemand.setPP_Order(o);
- mrpDemand.saveEx();
- }
- }
-
- /**
- * Create MRP record based in Manufacturing Order BOM Line
- * @param MPPOrderBOMLine Order BOM Line
- * @param delete indicate if this record is delete
- */
- public static void PP_Order_BOMLine(MPPOrderBOMLine obl, boolean delete)
- {
- String trxName = obl.get_TrxName();
- Properties ctx = obl.getCtx();
- if (delete)
- {
- deleteMRP(obl);
- return;
- }
- //
- String typeMRP = MPPMRP.TYPEMRP_Demand;
- BigDecimal qty = obl.getQtyRequiered().subtract(obl.getQtyDelivered());
- //
- // By-Product support:
- if (obl.isComponentType(MPPOrderBOMLine.COMPONENTTYPE_ByProduct))
- {
- // TODO: need to evaluate
- deleteMRP(obl);
- return;
-// typeMRP = MPPMRP.TYPEMRP_Supply;
-// qty = qty.negate();
- }
- //
- MPPMRP mrp = getQuery(obl, typeMRP, ORDERTYPE_ManufacturingOrder).firstOnly();
- if(mrp == null)
- {
- mrp = new MPPMRP(ctx, 0, trxName);
- mrp.setPP_Order_BOMLine_ID(obl.getPP_Order_BOMLine_ID());
- }
- mrp.setAD_Org_ID(obl.getAD_Org_ID());
- mrp.setTypeMRP(typeMRP);
- mrp.setPP_Order(obl.getParent());
- mrp.setQty(qty);
- mrp.setM_Product_ID(obl.getM_Product_ID());
- mrp.setM_Warehouse_ID(obl.getM_Warehouse_ID());
- mrp.saveEx();
- }
-
- /**
- * Create MRP record based in Distribution Order
- * @param MDDOrder Distribution Order
- * @param delete Indicate if this record is delete
- */
- public static void DD_Order(MDDOrder o, boolean delete)
- {
- if (delete)
- {
- deleteMRP(o);
- return;
- }
- }
-
- /**
- * Create MRP record based in Distribution Order Line
- * @param MDDOrderLine Distribution Order Line
- * @param delete Indicate if this record is delete
- */
- public static void DD_Order_Line(MDDOrderLine ol, boolean delete)
- {
- String trxName = ol.getParent().get_TrxName();
- Properties m_ctx = ol.getCtx();
- if (delete)
- {
- deleteMRP(ol);
- return;
- }
- //
- MPPMRP mrp = getQuery(ol, TYPEMRP_Demand, ORDERTYPE_DistributionOrder).firstOnly();
- MLocator source = MLocator.get( m_ctx , ol.getM_Locator_ID());
- MLocator target = MLocator.get( m_ctx , ol.getM_LocatorTo_ID());
- if(mrp != null)
- {
- mrp.setAD_Org_ID(source.getAD_Org_ID());
- mrp.setName("MRP");
- mrp.setDescription(ol.getDescription());
- mrp.setQty(ol.getQtyOrdered().subtract(ol.getQtyDelivered()));
- mrp.setDatePromised(ol.getDatePromised());
- mrp.setDateOrdered(ol.getDateOrdered());
- mrp.setM_Product_ID(ol.getM_Product_ID());
- mrp.setM_Warehouse_ID(source.getM_Warehouse_ID());
- mrp.setDocStatus(ol.getParent().getDocStatus());
- mrp.saveEx();
- }
- else
- {
- mrp = new MPPMRP(m_ctx , 0 ,trxName);
- mrp.setAD_Org_ID(source.getAD_Org_ID());
- mrp.setName("MRP");
- mrp.setDescription(ol.getDescription());
- mrp.setDD_Order_ID(ol.getDD_Order_ID());
- mrp.setDD_OrderLine_ID(ol.getDD_OrderLine_ID());
- mrp.setQty(ol.getQtyOrdered().subtract(ol.getQtyDelivered()));
- mrp.setDatePromised(ol.getDatePromised());
- mrp.setDateOrdered(ol.getDateOrdered());
- mrp.setM_Product_ID(ol.getM_Product_ID());
- mrp.setM_Warehouse_ID(source.getM_Warehouse_ID());
- mrp.setDocStatus(ol.getParent().getDocStatus());
- mrp.setOrderType(MPPMRP.ORDERTYPE_DistributionOrder);
- mrp.setTypeMRP(MPPMRP.TYPEMRP_Demand);
- mrp.saveEx();
-
- }
- mrp = getQuery(ol, TYPEMRP_Supply, ORDERTYPE_DistributionOrder).firstOnly();
- if(mrp!=null)
- {
- mrp.setAD_Org_ID(target.getAD_Org_ID());
- mrp.setName("MRP");
- mrp.setDescription(ol.getDescription());
- mrp.setQty(ol.getQtyOrdered().subtract(ol.getQtyDelivered()));
- mrp.setDatePromised(ol.getDatePromised());
- mrp.setDateOrdered(ol.getDateOrdered());
- mrp.setM_Product_ID(ol.getM_Product_ID());
- mrp.setM_Warehouse_ID(target.getM_Warehouse_ID());
- mrp.setDocStatus(ol.getParent().getDocStatus());
- mrp.save();
- }
- else
- {
- mrp = new MPPMRP( m_ctx , 0,trxName);
- mrp.setAD_Org_ID(target.getAD_Org_ID());
- mrp.setName("MRP");
- mrp.setDescription(ol.getDescription());
- mrp.setDD_Order_ID(ol.getDD_Order_ID());
- mrp.setDD_OrderLine_ID(ol.getDD_OrderLine_ID());
- mrp.setQty(ol.getQtyOrdered().subtract(ol.getQtyDelivered()));
- mrp.setDatePromised(ol.getDatePromised());
- mrp.setDateOrdered(ol.getDateOrdered());
- mrp.setM_Product_ID(ol.getM_Product_ID());
- mrp.setM_Warehouse_ID(target.getM_Warehouse_ID());
- mrp.setDocStatus(ol.getParent().getDocStatus());
- mrp.setOrderType(MPPMRP.ORDERTYPE_DistributionOrder);
- mrp.setTypeMRP(MPPMRP.TYPEMRP_Supply);
- mrp.saveEx();
- }
- return;
- }
-
-
- /**
- * Create MRP record based in Requisition Line
- * @param MRequisitionLine Requisition Line
- * @param delete Indicate if this record is delete
- */
- public static void M_RequisitionLine( MRequisitionLine rl , boolean delete)
- {
- if (delete)
- {
- deleteMRP(rl);
- return;
- }
-
- MPPMRP mrp = getQuery(rl, null, null).firstOnly();
- MRequisition r = rl.getParent();
- if (mrp == null)
- {
- mrp = new MPPMRP(rl.getCtx(), 0, rl.get_TrxName());
- mrp.setM_Requisition_ID(rl.getM_Requisition_ID());
- mrp.setM_RequisitionLine_ID(rl.getM_RequisitionLine_ID());
- mrp.setOrderType(MPPMRP.ORDERTYPE_MaterialRequisition);
- mrp.setTypeMRP(MPPMRP.TYPEMRP_Supply);
- mrp.setIsAvailable(true);
- }
- mrp.setAD_Org_ID(r.getAD_Org_ID());
- mrp.setName("MRP");
- mrp.setDescription(rl.getDescription());
- mrp.setDateOrdered(r.getDateRequired());
- mrp.setDatePromised(r.getDateRequired());
- mrp.setDateStartSchedule(r.getDateRequired());
- mrp.setDateFinishSchedule(r.getDateRequired());
- mrp.setM_Product_ID(rl.getM_Product_ID());
- mrp.setM_Warehouse_ID(r.getM_Warehouse_ID());
- // We create a MRP record only for Not Ordered Qty. The Order will generate a MRP record for Ordered Qty.
- mrp.setQty(rl.getQty().subtract(rl.getQtyOrdered()));
- // MRP record for a requisition will be ALWAYS Drafted because
- // a requisition generates just Planned Orders (which is a wish list)
- // and not Scheduled Receipts
- mrp.setDocStatus(DocAction.STATUS_Drafted);
- mrp.saveEx();
- }
-
- /**
- * Get Qty Onhand
- * @param AD_Client_ID
- * @param M_Warehouse_ID
- * @param M_Product_ID
- * @return
- */
- public static BigDecimal getQtyOnHand(Properties ctx, int M_Warehouse_ID ,int M_Product_ID,String trxName)
- {
- final String sql = "SELECT COALESCE(bomQtyOnHand (M_Product_ID,?,0),0) FROM M_Product"
- +" WHERE AD_Client_ID=? AND M_Product_ID=?";
- return DB.getSQLValueBDEx(trxName, sql, new Object[]{M_Warehouse_ID,Env.getAD_Client_ID(ctx),M_Product_ID});
- }
-
- /**
- * Get Reserved Quantity for a Warehouse
- * @param ctx
- * @param M_Warehouse_ID
- * @param M_Product_ID
- * @param To
- * @param trxName
- * @return BibDecimal
- */
- public static BigDecimal getQtyReserved(Properties ctx, int M_Warehouse_ID ,int M_Product_ID, Timestamp To,String trxName)
- {
- final String sql = "SELECT SUM(Qty) FROM PP_MRP WHERE "
- +" TypeMRP=?"
- +" AND DocStatus IN ('IN','CO')"
- +" AND OrderType IN ('SOO','MOP','DOO')"
- +" AND AD_Client_ID=? AND M_Warehouse_ID =? AND M_Product_ID=?"
- +" AND DatePromised <=?";
- BigDecimal qty = DB.getSQLValueBDEx(trxName, sql, new Object[]{
- MPPMRP.TYPEMRP_Demand,
- Env.getAD_Client_ID(ctx),M_Warehouse_ID, M_Product_ID,
- To,
- });
- // SQL may return no rows or null
- if (qty == null)
- return Env.ZERO;
-
- return qty;
- }
-
- /**
- * Get Reserved Quantity for a Warehouse
- * @param ctx
- * @param M_Warehouse_ID
- * @param M_Product_ID
- * @param trxName
- * @return BibDecimal
- */
- public static BigDecimal getQtyReserved(Properties ctx, int M_Warehouse_ID ,int M_Product_ID,String trxName)
- {
- return getQtyReserved(ctx, M_Warehouse_ID, M_Product_ID, new Timestamp (System.currentTimeMillis()), trxName);
- }
-
- /**
- * Get Reserved Quantity for a Warehouse
- * @param ctx
- * @param M_Warehouse_ID
- * @param M_Product_ID
- * @param To
- * @param trxName
- * @return
- */
- public static BigDecimal getQtyOrdered(Properties ctx, int M_Warehouse_ID ,int M_Product_ID, Timestamp To,String trxName)
- {
- StringBuffer sql = new StringBuffer("SELECT SUM(Qty) FROM PP_MRP WHERE TypeMRP='S' AND DocStatus IN ('IN','CO')");
- sql.append(" AND OrderType IN ('POO','MOP','DOO') AND AD_Client_ID= ? AND DatePromised <=? AND M_Warehouse_ID =? AND M_Product_ID=?");
- BigDecimal qty = DB.getSQLValueBDEx(trxName, sql.toString(), new Object[]{Env.getAD_Client_ID(ctx), To , M_Warehouse_ID, M_Product_ID});
- // SQL may return no rows or null
- if (qty == null)
- return Env.ZERO;
-
- return qty;
- }
-
- /**
- * Set Order Reserved Quantity for a Warehouse
- * @param AD_Client_ID
- * @param M_Warehouse_ID
- * @param M_Product_ID
- * @param trxName
- * @return
- */
- public static BigDecimal getQtyOrdered(Properties ctx, int M_Warehouse_ID ,int M_Product_ID,String trxName)
- {
- return getQtyOrdered(ctx, M_Warehouse_ID, M_Product_ID, new Timestamp (System.currentTimeMillis()), trxName);
- }
-
- /**
- * Maximum Low Level Code
- * @param ctx
- * @param trxName
- * @return maximum low level
- */
- public static int getMaxLowLevel(Properties ctx, String trxName)
- {
- int AD_Client_ID = Env.getAD_Client_ID(ctx);
- //
- final String sql = "SELECT MAX("+MProduct.COLUMNNAME_LowLevel+") FROM M_Product"
- +" WHERE AD_Client_ID=? AND "+MProduct.COLUMNNAME_LowLevel+" IS NOT NULL";
- int LowLevel = DB.getSQLValueEx(trxName, sql, AD_Client_ID);
- return LowLevel + 1;
- }
-
- /**
- * Calculated duration of given workflow, considering resource's available days and timeslot.
- * @param ctx
- * @param S_Resource_ID
- * @param AD_Workflow_ID
- * @param QtyOrdered
- * @param trxName
- * @return duration [days]
- */
- public static BigDecimal getDays(Properties ctx ,int S_Resource_ID, int AD_Workflow_ID, BigDecimal QtyOrdered, String trxName)
- {
- if (S_Resource_ID <= 0)
- return Env.ZERO;
-
- MResource S_Resource = MResource.get(ctx, S_Resource_ID);
- MResourceType S_ResourceType = MResourceType.get(ctx, S_Resource.getS_ResourceType_ID());
-
- BigDecimal AvailableDayTime = Env.ZERO;
- if (S_ResourceType.isTimeSlot())
- AvailableDayTime = BigDecimal.valueOf(getHoursAvailable(S_ResourceType.getTimeSlotStart(),S_ResourceType.getTimeSlotEnd()));
- else
- AvailableDayTime = BigDecimal.valueOf(24);
-
- int AvailableDays = 0;
- if (S_ResourceType.isDateSlot()) {
- if (S_ResourceType.isOnMonday())
- AvailableDays += 1;
- if (S_ResourceType.isOnTuesday())
- AvailableDays += 1;
- if (S_ResourceType.isOnThursday())
- AvailableDays += 1;
- if (S_ResourceType.isOnWednesday())
- AvailableDays += 1;
- if (S_ResourceType.isOnFriday())
- AvailableDays += 1;
- if (S_ResourceType.isOnSaturday())
- AvailableDays += 1;
- if (S_ResourceType.isOnSunday())
- AvailableDays += 1;
- }
- else {
- AvailableDays = 7;
- }
-
- MWorkflow wf = MWorkflow.get(ctx, AD_Workflow_ID);
-
- BigDecimal RequiredTime = BigDecimal.valueOf (
- ( wf.getQueuingTime()
- + wf.getSetupTime()
- + (wf.getDuration() * QtyOrdered.doubleValue())
- + wf.getWaitingTime()
- + wf.getMovingTime()
- )
- * ( (double)wf.getDurationBaseSec() / 60 / 60 ) // convert to hours
- );
- // TODO: implement here, Victor's suggestion - https://sourceforge.net/forum/message.php?msg_id=5179460
-
- // Weekly Factor
- BigDecimal WeeklyFactor = BigDecimal.valueOf(7).divide(BigDecimal.valueOf(AvailableDays), 8, BigDecimal.ROUND_UP);
-
- return (RequiredTime.multiply(WeeklyFactor)).divide(AvailableDayTime, 0, BigDecimal.ROUND_UP);
- }
-
- /**
- * Return hours between time1 and time2.
- * Minutes, secords and millis are discarded.
- * @param time1 Time Start
- * @param time2 Time End
- * @return hours between time1 and time2
- */
- public static long getHoursAvailable (Timestamp time1, Timestamp time2)
- {
- return (time2.getTime() - time1.getTime()) / (60 * 60 * 1000);
- }
-
- public static String getDocumentNo(int PP_MRP_ID)
- {
- return DB.getSQLValueStringEx(null, "SELECT documentNo(PP_MRP_ID) AS DocumentNo FROM PP_MRP WHERE PP_MRP_ID = ?", PP_MRP_ID);
- }
-
- public String toString()
- {
- String description = getDescription();
- return getClass().getSimpleName()+"["
- +", TypeMRP="+getTypeMRP()
- +", DocStatus="+getDocStatus()
- +", Qty="+getQty()
- +", DatePromised="+getDatePromised()
- +", Schedule="+getDateStartSchedule()+"/"+getDateFinishSchedule()
- +(!Util.isEmpty(description, true) ? ", Description="+description : "")
- +", ID="+get_ID()
- +"]";
- }
-
-} // MPPMRP
diff --git a/base/src/org/eevolution/model/MPPOrder.java b/base/src/org/eevolution/model/MPPOrder.java
deleted file mode 100644
index 057c8a33a2..0000000000
--- a/base/src/org/eevolution/model/MPPOrder.java
+++ /dev/null
@@ -1,1330 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.io.File;
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.sql.ResultSet;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Properties;
-
-import org.adempiere.exceptions.AdempiereException;
-import org.adempiere.exceptions.DocTypeNotFoundException;
-import org.compiere.model.MAcctSchema;
-import org.compiere.model.MClient;
-import org.compiere.model.MCost;
-import org.compiere.model.MDocType;
-import org.compiere.model.MProduct;
-import org.compiere.model.MProject;
-import org.compiere.model.MResource;
-import org.compiere.model.MStorage;
-import org.compiere.model.MTable;
-import org.compiere.model.MUOM;
-import org.compiere.model.MWarehouse;
-import org.compiere.model.ModelValidationEngine;
-import org.compiere.model.ModelValidator;
-import org.compiere.model.PO;
-import org.compiere.model.POResultSet;
-import org.compiere.model.Query;
-import org.compiere.print.ReportEngine;
-import org.compiere.process.DocAction;
-import org.compiere.process.DocumentEngine;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.compiere.util.KeyNamePair;
-import org.compiere.wf.MWFNode;
-import org.compiere.wf.MWFNodeNext;
-import org.compiere.wf.MWorkflow;
-
-/**
- * PP Order Model.
- *
- * @author Victor Perez www.e-evolution.com
- * @author Teo Sarca, www.arhipac.ro
- */
-public class MPPOrder extends X_PP_Order implements DocAction
-{
- private static final long serialVersionUID = 1L;
-
- public static MPPOrder forC_OrderLine_ID(Properties ctx, int C_OrderLine_ID, String trxName)
- {
- return new Query(ctx, MPPOrder.Table_Name, COLUMNNAME_C_OrderLine_ID+"=?", trxName)
- .setParameters(new Object[]{C_OrderLine_ID})
- .firstOnly();
- }
-
-
- /**************************************************************************
- * Default Constructor
- * @param ctx context
- * @param C_Order_ID order to load, (0 create new order)
- */
- public MPPOrder(Properties ctx, int PP_Order_ID, String trxName)
- {
- super(ctx, PP_Order_ID, trxName);
- // New
- if (PP_Order_ID == 0)
- {
- setQtyDelivered(Env.ZERO);
- setQtyReject(Env.ZERO);
- setQtyScrap(Env.ZERO);
- setIsSelected(false);
- setIsSOTrx(false);
- setIsApproved(false);
- setIsPrinted(false);
- setProcessed(false);
- setProcessing(false);
- setPosted(false);
- //
- setC_DocType_ID(0);
- setC_DocTypeTarget_ID(MDocType.DOCBASETYPE_ManufacturingOrder);
- //
- //set_ValueNoCheck("DocumentNo", null);
- setDocStatus(DOCSTATUS_Drafted);
- setDocAction(DOCACTION_Prepare);
- }
- } // PP_Order
-
- /**************************************************************************
- * Project Constructor
- * @param project Project to create Order from
- * @param DocSubTypeSO if SO DocType Target (default DocSubTypeSO_OnCredit)
- */
- public MPPOrder(MProject project, int PP_Product_BOM_ID, int AD_Workflow_ID)
- {
- this(project.getCtx(), 0, project.get_TrxName());
- setAD_Client_ID(project.getAD_Client_ID());
- setAD_Org_ID(project.getAD_Org_ID());
- setC_Campaign_ID(project.getC_Campaign_ID());
- setC_Project_ID(project.getC_Project_ID());
- 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 df= project.getDateContract();
-
- if (ts != null) setDateOrdered(ts);
- if (ts != null) this.setDateStartSchedule(ts);
- ts = project.getDateFinish();
- if (df != null) setDatePromised(df);
- setM_Warehouse_ID(project.getM_Warehouse_ID());
- setPP_Product_BOM_ID(PP_Product_BOM_ID);
- setAD_Workflow_ID(AD_Workflow_ID);
- setQtyEntered(Env.ONE);
- setQtyOrdered(Env.ONE);
- MPPProductBOM bom = new MPPProductBOM(project.getCtx(), PP_Product_BOM_ID, project.get_TrxName());
- MProduct product = MProduct.get(project.getCtx(), bom.getM_Product_ID());
- setC_UOM_ID(product.getC_UOM_ID());
-
- setM_Product_ID(bom.getM_Product_ID());
-
- String where = MResource.COLUMNNAME_IsManufacturingResource +" = 'Y' AND "+
- MResource.COLUMNNAME_ManufacturingResourceType +" = '" + MResource.MANUFACTURINGRESOURCETYPE_Plant + "' AND " +
- MResource.COLUMNNAME_M_Warehouse_ID + " = " + project.getM_Warehouse_ID();
- MResource resoruce = (MResource) MTable.get(project.getCtx(), MResource.Table_ID).getPO( where , project.get_TrxName());
- if (resoruce == null)
- throw new IllegalStateException("Resource is mandatory.");
- setS_Resource_ID(resoruce.getS_Resource_ID());
- } // MOrder
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set record
- */
- public MPPOrder(Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- } // MOrder
-
- /**
- * @return Open Qty (Ordered - Delivered - Scrap)
- */
- public BigDecimal getQtyOpen()
- {
- return getQtyOrdered().subtract(getQtyDelivered()).subtract(getQtyScrap());
- }
-
- /**
- * Get BOM Lines of PP Order
- * @param requery
- * @return Order BOM Lines
- */
- public MPPOrderBOMLine[] getLines(boolean requery)
- {
- if (m_lines != null && !requery)
- {
- set_TrxName(m_lines, get_TrxName());
- return m_lines;
- }
- String whereClause = MPPOrderBOMLine.COLUMNNAME_PP_Order_ID+"=?";
- List list = new Query(getCtx(), MPPOrderBOMLine.Table_Name, whereClause, get_TrxName())
- .setParameters(new Object[]{getPP_Order_ID()})
- .setOrderBy(MPPOrderBOMLine.COLUMNNAME_Line)
- .list();
- m_lines = list.toArray(new MPPOrderBOMLine[list.size()]);
- return m_lines;
- }
- private MPPOrderBOMLine[] m_lines = null;
-
- /**
- * Get BOM Lines of PP Order
- * @return Order BOM Lines
- */
- public MPPOrderBOMLine[] getLines()
- {
- return getLines(true);
- }
-
- public void setC_DocTypeTarget_ID(String docBaseType)
- {
- MDocType[] doc = MDocType.getOfDocBaseType(getCtx(), docBaseType);
- if(doc == null)
- {
- throw new DocTypeNotFoundException(docBaseType, "");
- }
- else
- {
- setC_DocTypeTarget_ID(doc[0].get_ID());
- }
- }
-
- @Override
- public void setProcessed(boolean processed)
- {
- super.setProcessed(processed);
-
- // Update DB:
- if (get_ID() <= 0)
- return;
- final String sql = "UPDATE PP_Order SET Processed=? WHERE PP_Order_ID=?";
- DB.executeUpdateEx(sql, new Object[]{processed, get_ID()}, get_TrxName());
- } // setProcessed
-
- @Override
- protected boolean beforeSave(boolean newRecord)
- {
- if (getAD_Client_ID() == 0)
- {
- m_processMsg = "AD_Client_ID = 0";
- return false;
- }
- if (getAD_Org_ID() == 0)
- {
- int context_AD_Org_ID = Env.getAD_Org_ID(getCtx());
- if (context_AD_Org_ID == 0) {
- m_processMsg = "AD_Org_ID = 0";
- return false;
- }
- setAD_Org_ID(context_AD_Org_ID);
- log.warning("beforeSave - Changed Org to Context=" + context_AD_Org_ID);
- }
- if (getM_Warehouse_ID() == 0)
- {
- int ii = Env.getContextAsInt(getCtx(), "#M_Warehouse_ID");
- if (ii != 0)
- {
- setM_Warehouse_ID(ii);
- }
- }
- // If DateFinishSchedule is not filled, use DatePromised
- if (getDateFinishSchedule() == null)
- {
- setDateFinishSchedule(getDatePromised());
- }
-
- return true;
- }
-
- @Override
- protected boolean afterSave(boolean newRecord, boolean success)
- {
- if (!success)
- {
- return false;
- }
-
- boolean explotion = DocAction.STATUS_Drafted.equals(getDocStatus())
- || DocAction.STATUS_InProgress.equals(getDocStatus());
-
- if( is_ValueChanged(MPPOrder.COLUMNNAME_QtyEntered) && explotion)
- {
- deleteWorkflowAndBOM();
- explotion();
- }
- if( is_ValueChanged(MPPOrder.COLUMNNAME_QtyEntered) && !explotion)
- {
- throw new AdempiereException("Cannot Change Quantity, Only is allow with Draft or In Process Status"); // TODO: Create Message for Translation
- }
-
- if (!newRecord)
- {
- return success;
- }
-
- explotion();
- return true;
- } // beforeSave
-
- @Override
- protected boolean beforeDelete()
- {
- // OrderBOMLine
- if (getDocStatus().equals(DOCSTATUS_Drafted) || getDocStatus().equals(DOCSTATUS_InProgress))
- {
- String whereClause = "PP_Order_ID=? AND AD_Client_ID=?";
- Object[] params = new Object[]{get_ID(), getAD_Client_ID()};
- //
- deletePO(MPPOrderCost.Table_Name, whereClause, params);
- deleteWorkflowAndBOM();
- }
- return true;
- } // beforeDelete
-
- private void deleteWorkflowAndBOM()
- {
- // New record, nothing to do
- if (get_ID() <= 0)
- {
- return;
- }
- //
- String whereClause = "PP_Order_ID=? AND AD_Client_ID=?";
- Object[] params = new Object[]{get_ID(), getAD_Client_ID()};
- // Reset workflow start node
- DB.executeUpdateEx("UPDATE PP_Order_Workflow SET PP_Order_Node_ID=NULL WHERE "+whereClause, params, get_TrxName());
- // Delete workflow:
- deletePO(X_PP_Order_Node_Asset.Table_Name, whereClause, params);
- deletePO(X_PP_Order_Node_Product.Table_Name, whereClause, params);
- deletePO(MPPOrderNodeNext.Table_Name, whereClause, params);
- deletePO(MPPOrderNode.Table_Name, whereClause, params);
- deletePO(MPPOrderWorkflow.Table_Name, whereClause, params);
- // Delete BOM:
- deletePO(MPPOrderBOMLine.Table_Name, whereClause, params);
- deletePO(MPPOrderBOM.Table_Name, whereClause, params);
-
- }
-
- public boolean processIt(String processAction)
- {
- m_processMsg = null;
- DocumentEngine engine = new DocumentEngine(this, getDocStatus());
- return engine.processIt(processAction, getDocAction());
- } // processIt
-
- /** Process Message */
- private String m_processMsg = null;
- /** Just Prepared Flag */
- private boolean m_justPrepared = false;
-
- public boolean unlockIt()
- {
- log.info("unlockIt - " + toString());
- setProcessing(false);
- return true;
- } // unlockIt
-
- public boolean invalidateIt()
- {
- log.info("invalidateIt - " + toString());
- setDocAction(DOCACTION_Prepare);
- return true;
- } // invalidateIt
-
- public String prepareIt()
- {
- log.info("prepareIt - " + toString());
-
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_BEFORE_PREPARE);
- if (m_processMsg != null)
- return DocAction.STATUS_Invalid;
-
- // Lines
- MPPOrderBOMLine[] lines = getLines();
- if (lines.length == 0)
- {
- m_processMsg = "@NoLines@";
- return DocAction.STATUS_Invalid;
- }
-
- // Cannot change Std to anything else if different warehouses
- if (getC_DocType_ID() != 0)
- {
- for (int i = 0; i < lines.length; i++)
- {
- if (lines[i].getM_Warehouse_ID() != getM_Warehouse_ID())
- {
- log.warning("different Warehouse " + lines[i]);
- m_processMsg = "@CannotChangeDocType@";
- return DocAction.STATUS_Invalid;
- }
- }
- }
-
- // New or in Progress/Invalid
- if (DOCSTATUS_Drafted.equals(getDocStatus())
- || DOCSTATUS_InProgress.equals(getDocStatus())
- || DOCSTATUS_Invalid.equals(getDocStatus())
- || getC_DocType_ID() == 0)
- {
- setC_DocType_ID(getC_DocTypeTarget_ID());
- }
-
- String docBaseType = MDocType.get(getCtx(), getC_DocType_ID()).getDocBaseType();
- if (MDocType.DOCBASETYPE_QualityOrder.equals(docBaseType))
- {
- ; // nothing
- }
- // ManufacturingOrder, MaintenanceOrder
- else
- {
- reserveStock(lines);
- orderStock();
- }
-
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_AFTER_PREPARE);
- if (m_processMsg != null)
- return DocAction.STATUS_Invalid;
-
- m_justPrepared = true;
- return DocAction.STATUS_InProgress;
- } // prepareIt
-
- private void orderStock()
- {
- MProduct product = getM_Product();
- if (product.isStocked())
- {
- BigDecimal target = getQtyOrdered();
- BigDecimal difference = target.subtract(getQtyReserved()).subtract(getQtyDelivered());
- if (difference.signum() == 0)
- return ;
- BigDecimal ordered = difference;
-
- int M_Locator_ID = getM_Locator_ID(ordered);
- // Necessary to clear order quantities when called from closeIt - 4Layers
- if (DOCACTION_Close.equals(getDocAction()))
- {
- if (!MStorage.add(getCtx(), getM_Warehouse_ID(), M_Locator_ID,
- getM_Product_ID(), getM_AttributeSetInstance_ID(),
- getM_AttributeSetInstance_ID(), Env.ZERO, Env.ZERO, ordered, get_TrxName()))
- {
- throw new AdempiereException();
- }
- }
- else
- {
- // Update Storage
- if (!MStorage.add(getCtx(), getM_Warehouse_ID(), M_Locator_ID,
- getM_Product_ID(), getM_AttributeSetInstance_ID(),
- getM_AttributeSetInstance_ID(), Env.ZERO, Env.ZERO, ordered, get_TrxName()))
- {
- throw new AdempiereException();
- }
- }
-
- setQtyReserved(getQtyReserved().add(difference));
- saveEx(get_TrxName());
- }
- }
-
- /**
- * Reserve Inventory.
- * @param lines order lines (ordered by M_Product_ID for deadlock prevention)
- * @return true if (un) reserved
- */
- private void reserveStock(MPPOrderBOMLine[] lines)
- {
- final int header_M_Warehouse_ID = getM_Warehouse_ID();
-
- // Always check and (un) Reserve Inventory
- for (MPPOrderBOMLine line : lines)
- {
- // Check/set WH/Org
- if (header_M_Warehouse_ID != 0) // enforce WH
- {
- if (header_M_Warehouse_ID != line.getM_Warehouse_ID())
- line.setM_Warehouse_ID(header_M_Warehouse_ID);
- if (getAD_Org_ID() != line.getAD_Org_ID())
- line.setAD_Org_ID(getAD_Org_ID());
- }
- //
- final BigDecimal target = line.getQtyRequiered();
- final BigDecimal difference = target.subtract(line.getQtyReserved()).subtract(line.getQtyDelivered());
- if (difference.signum() == 0)
- {
- continue;
- }
- log.fine("Line=" + line.getLine() + " - Target=" + target + ",Difference=" + difference + " - Requiered=" + line.getQtyRequiered()
- + ",Reserved=" + line.getQtyReserved() + ",Delivered=" + line.getQtyDelivered());
-
- // Check Product - Stocked and Item
- MProduct product = line.getM_Product();
- if (!product.isStocked())
- {
- continue;
- }
- BigDecimal ordered = Env.ZERO;
- BigDecimal reserved = difference;
- int M_Locator_ID = getM_Locator_ID(ordered);
- // Update Storage
- if (!MStorage.add(getCtx(), line.getM_Warehouse_ID(), M_Locator_ID,
- line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(),
- line.getM_AttributeSetInstance_ID(), Env.ZERO, reserved, ordered, get_TrxName()))
- {
- throw new AdempiereException();
- }
- // update line
- line.setQtyReserved(line.getQtyReserved().add(difference));
- line.saveEx(get_TrxName());
- }
- } // reserveStock
-
- public boolean approveIt()
- {
- log.info("approveIt - " + toString());
- MDocType doc = MDocType.get(getCtx(), getC_DocType_ID());
- if (doc.getDocBaseType().equals(MDocType.DOCBASETYPE_QualityOrder))
- {
- String whereClause = COLUMNNAME_PP_Product_BOM_ID+"=? AND "+COLUMNNAME_AD_Workflow_ID+"=?";
- MQMSpecification qms = new Query(getCtx(), MQMSpecification.Table_Name, whereClause, get_TrxName())
- .setParameters(new Object[]{getPP_Product_BOM_ID(), getAD_Workflow_ID()})
- .first();
- return qms != null ? qms.isValid(getM_AttributeSetInstance_ID()) : true;
- }
- else
- {
- setIsApproved(true);
- }
-
- return true;
- } // approveIt
-
- public boolean rejectIt()
- {
- log.info("rejectIt - " + toString());
- setIsApproved(false);
- return true;
- } // rejectIt
-
- public String completeIt()
- {
- // Just prepare
- if (DOCACTION_Prepare.equals(getDocAction()))
- {
- setProcessed(false);
- return DocAction.STATUS_InProgress;
- }
-
- // Re-Check
- if (!m_justPrepared)
- {
- String status = prepareIt();
- if (!DocAction.STATUS_InProgress.equals(status))
- return status;
- }
-
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_BEFORE_COMPLETE);
- if (m_processMsg != null)
- {
- return DocAction.STATUS_Invalid;
- }
-
- // Implicit Approval
- if (!isApproved())
- {
- approveIt();
- }
-
- MAcctSchema as = MClient.get(getCtx(), getAD_Client_ID()).getAcctSchema();
- log.info("Cost_Group_ID" + as.getM_CostType_ID());
-
- //
- // Create Standard Costs for Order
- Collection costs = MCost.getByCostType(getM_Product(), as, as.getM_CostType_ID(),
- getAD_Org_ID(), getM_AttributeSetInstance_ID());
-
- for (MCost cost : costs)
- {
- MPPOrderCost PP_Order_Cost = new MPPOrderCost(cost, get_ID(), get_TrxName());
- PP_Order_Cost.saveEx();
- }
-
- //
- // Create Standard Costs for Order BOM Line
- for (MPPOrderBOMLine line : getLines())
- {
- costs = MCost.getByCostType(line.getM_Product(), as, as.getM_CostType_ID(),
- getAD_Org_ID(), getM_AttributeSetInstance_ID());
-
- for (MCost cost : costs)
- {
- MPPOrderCost PP_Order_Cost = new MPPOrderCost(cost, get_ID(), get_TrxName());
- PP_Order_Cost.saveEx();
- }
- }
-
- MPPOrderBOM obom = (MPPOrderBOM)getMPPOrderBOM();
-
- // Auto receipt and issue for kit
- if (MPPOrderBOM.BOMTYPE_Make_To_Kit.equals(obom.getBOMType()) && MPPOrderBOM.BOMUSE_Manufacturing.equals(obom.getBOMUse()))
- {
- Timestamp today = new Timestamp(System.currentTimeMillis());
- ArrayList[][] issue = new ArrayList[m_lines.length][1];
-
- for (int i = 0; i < getLines().length ; i++)
- {
- MPPOrderBOMLine line = m_lines[i];
-
- KeyNamePair id = null;
-
- if(MPPOrderBOMLine.ISSUEMETHOD_Backflush.equals(line.getIssueMethod()))
- {
- id = new KeyNamePair(line.get_ID(),"Y");
- }
- else
- id = new KeyNamePair(line.get_ID(),"N");
-
- ArrayList data = new ArrayList();
-
- data.add(id); //0 - ASI
- data.add(line.isCritical()); //1 - Critical
- MProduct product = (MProduct) line.getM_Product();
- data.add(product.getValue()); //2 - Value
- KeyNamePair productKey = new KeyNamePair(product.get_ID(),product.getName());
- data.add(productKey); //3 - KeyNamePair Product
- data.add(line.getQtyRequiered()); //4 - QtyToDeliver
- data.add(Env.ZERO); //5 - QtyScrapComponent
- issue[i][0] = data;
-
- }
-
- boolean isCompleteQtyDeliver = MPPOrder.isAvailableQty(this, issue ,today);
- if (!isCompleteQtyDeliver)
- {
- throw new AdempiereException("@NoQtyAvailable@");
- }
-
- for(int i = 0; i < issue.length; i++ )
- {
- KeyNamePair key = (KeyNamePair) issue[i][0].get(0);
- Boolean isCritical = (Boolean) issue[i][0].get(1);
- String value = (String)issue[i][0].get(2);
- KeyNamePair productkey = (KeyNamePair) issue[i][0].get(3);
- int M_Product_ID = productkey.getKey();
- BigDecimal qtyToDeliver = (BigDecimal)issue[i][0].get(4);
- BigDecimal qtyScrapComponent = (BigDecimal) issue[i][0].get(5);
-
- MStorage[] storages = MPPOrder.getStorages(getCtx(),
- M_Product_ID,
- getM_Warehouse_ID(),
- 0,
- getM_AttributeSetInstance_ID(),
- 1, today);
-
- MPPOrder.createIssue(
- this,
- key.getKey(),
- today, qtyToDeliver,
- qtyScrapComponent,
- Env.ZERO,
- storages,
- get_TrxName());
- }
- MPPOrder.createReceipt(
- this,
- today ,
- getQtyDelivered(),
- getQtyOpen(),
- getQtyScrap(),
- getQtyReject(),
- getM_Locator_ID(),
- getM_AttributeSetInstance_ID(), false, get_TrxName());
- setQtyDelivered(getQtyOpen());
- return DOCSTATUS_Closed;
- }
-
- setProcessed(true);
- setDocAction(DOCACTION_Close);
-
- String valid = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_AFTER_COMPLETE);
- if (valid != null)
- {
- m_processMsg = valid;
- return DocAction.STATUS_Invalid;
- }
- return DocAction.STATUS_Completed;
- } // completeIt
-
- /**
- * Check if the Quantity from all BOM Lines is available (QtyOnHand >= QtyRequired)
- * @return true if entire Qty is available for this Order
- */
- public boolean isAvailable()
- {
- String whereClause = "QtyOnHand >= QtyRequiered AND PP_Order_ID=?";
- boolean available = new Query(getCtx(), "RV_PP_Order_Storage", whereClause, get_TrxName())
- .setParameters(new Object[]{get_ID()})
- .match();
- return available;
- }
-
- public boolean voidIt()
- {
- log.info(toString());
- // Before Void
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_BEFORE_VOID);
- if (m_processMsg != null)
- return false;
-
- // TODO: not implemented
-
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_AFTER_VOID);
- if (m_processMsg != null)
- return false;
-
- setProcessed(true);
- setDocAction(DOCACTION_None);
- return false;
- } // voidIt
-
- public boolean closeIt()
- {
- log.info(toString());
- // Before Close
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_BEFORE_CLOSE);
- if (m_processMsg != null)
- return false;
-
- if(MPPOrder.DOCSTATUS_Closed.equals(getDocStatus()))
- return true;
-
- if(!MPPOrder.DOCSTATUS_Completed.equals(getDocStatus()))
- {
- String DocStatus = completeIt();
- setDocStatus(DocStatus);
- setDocAction(MPPOrder.ACTION_None);
- }
-
- BigDecimal qtyReported = getQtyDelivered().add(getQtyReject().add(getQtyScrap()));
- if(qtyReported.signum() > 0)
- {
- //Close all the activity do not reported
- MPPOrderWorkflow m_order_wf = getMPPOrderWorkflow();
- m_order_wf.closeActivities(m_order_wf.getLastNode(getAD_Client_ID()), getUpdated(),false);
- }
-
- orderStock(); // Clear Ordered Quantities
- reserveStock(getLines()); // Clear Reservations
-
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_AFTER_CLOSE);
- if (m_processMsg != null)
- return false;
-
- setProcessed(true);
- setDocAction(DOCACTION_None);
- return true;
- } // closeIt
-
- public boolean reverseCorrectIt()
- {
- log.info("reverseCorrectIt - " + toString());
- return voidIt();
- } // reverseCorrectionIt
-
- public boolean reverseAccrualIt()
- {
- log.info("reverseAccrualIt - " + toString());
- return false;
- } // reverseAccrualIt
-
- public boolean reActivateIt()
- {
- // After reActivate
- m_processMsg = ModelValidationEngine.get().fireDocValidate(this,ModelValidator.TIMING_AFTER_REACTIVATE);
- if (m_processMsg != null)
- return false;
-
- setDocAction(DOCACTION_Complete);
- setProcessed(false);
- return true;
- } // reActivateIt
-
- public int getDoc_User_ID()
- {
- return getPlanner_ID();
- } // getDoc_User_ID
-
- public BigDecimal getApprovalAmt()
- {
- return Env.ZERO;
- } // getApprovalAmt
-
- public int getC_Currency_ID()
- {
- return 0;
- }
-
- public String getProcessMsg()
- {
- return m_processMsg;
- }
-
- public String getSummary()
- {
- return "" + getDocumentNo() + "/" + getDatePromised();
- }
-
- public File createPDF()
- {
- try {
- File temp = File.createTempFile(get_TableName() + get_ID() + "_", ".pdf");
- return createPDF(temp);
- }
- catch (Exception e) {
- log.severe("Could not create PDF - " + e.getMessage());
- }
- return null;
- } // getPDF
-
- /**
- * Create PDF file
- * @param file output file
- * @return file if success
- */
- public File createPDF(File file)
- {
- ReportEngine re = ReportEngine.get(getCtx(), ReportEngine.MANUFACTURING_ORDER, getPP_Order_ID());
- if (re == null)
- return null;
- return re.getPDF(file);
- } // createPDF
-
- /**
- * Get Document Info
- * @return document info (untranslated)
- */
- public String getDocumentInfo()
- {
- MDocType dt = MDocType.get(getCtx(), getC_DocType_ID());
- return dt.getName() + " " + getDocumentNo();
- } // getDocumentInfo
-
- private void deletePO(String tableName, String whereClause, Object[] params)
- {
- // TODO: refactor this method and move it to org.compiere.model.Query class
- POResultSet rs = new Query(getCtx(), tableName, whereClause, get_TrxName())
- .setParameters(params)
- .scroll();
- try
- {
- while(rs.hasNext())
- {
- rs.next().deleteEx(true);
- }
- }
- finally
- {
- rs.close();
- }
- }
-
- /**
- * Set Qty Entered/Ordered.
- * Use this Method if the Line UOM is the Product UOM
- * @param Qty QtyOrdered/Entered
- */
- public void setQty (BigDecimal Qty)
- {
- super.setQtyEntered (Qty);
- super.setQtyOrdered (getQtyEntered());
- } // setQty
-
- /**
- * Set Qty Entered - enforce entered UOM
- * @param QtyEntered
- */
- public void setQtyEntered (BigDecimal QtyEntered)
- {
- if (QtyEntered != null && getC_UOM_ID() != 0)
- {
- int precision = MUOM.getPrecision(getCtx(), getC_UOM_ID());
- QtyEntered = QtyEntered.setScale(precision, BigDecimal.ROUND_HALF_UP);
- }
- super.setQtyEntered (QtyEntered);
- } // setQtyEntered
-
- /**
- * Set Qty Ordered - enforce Product UOM
- * @param QtyOrdered
- */
- public void setQtyOrdered (BigDecimal QtyOrdered)
- {
- if (QtyOrdered != null)
- {
- int precision = getM_Product().getUOMPrecision();
- QtyOrdered = QtyOrdered.setScale(precision, BigDecimal.ROUND_HALF_UP);
- }
- super.setQtyOrdered(QtyOrdered);
- } // setQtyOrdered
-
-// @Override
- public MProduct getM_Product()
- {
- return MProduct.get (getCtx(), getM_Product_ID());
- } // getProduct
-
- public MPPOrderBOM getMPPOrderBOM()
- {
- final String whereClause = MPPOrderBOM.COLUMNNAME_PP_Order_ID+"=?";
- return new Query(getCtx(), MPPOrderBOM.Table_Name, whereClause, get_TrxName())
- .setParameters(new Object[]{getPP_Order_ID()})
- .firstOnly();
- }
-
- private MPPOrderWorkflow m_PP_Order_Workflow = null;
- public MPPOrderWorkflow getMPPOrderWorkflow()
- {
- if (m_PP_Order_Workflow != null)
- {
- return m_PP_Order_Workflow;
- }
- final String whereClause = MPPOrderWorkflow.COLUMNNAME_PP_Order_ID+"=?";
- m_PP_Order_Workflow = new Query(getCtx(), MPPOrderWorkflow.Table_Name, whereClause, get_TrxName())
- .setParameters(new Object[]{getPP_Order_ID()})
- .firstOnly();
- return m_PP_Order_Workflow;
- }
-
- /**
- * Create PP_Order_BOM from PP_Product_BOM.
- * Create PP_Order_Workflow from AD_Workflow.
- */
- private void explotion()
- {
- // Create BOM Head
- MPPProductBOM PP_Product_BOM = MPPProductBOM.get(getCtx(), getPP_Product_BOM_ID());
- if (PP_Product_BOM.isValidFromTo(getDateStartSchedule()))
- {
- MPPOrderBOM PP_Order_BOM = new MPPOrderBOM(PP_Product_BOM, getPP_Order_ID(), get_TrxName());
- PP_Order_BOM.setAD_Org_ID(getAD_Org_ID());
- PP_Order_BOM.saveEx();
-
- for (MPPProductBOMLine PP_Product_BOMline : PP_Product_BOM.getLines())
- {
- if (PP_Product_BOMline.isValidFromTo(getDateStartSchedule()))
- {
- MPPOrderBOMLine PP_Order_BOMLine = new MPPOrderBOMLine(PP_Product_BOMline,
- getPP_Order_ID(), PP_Order_BOM.get_ID(),
- getM_Warehouse_ID(),
- get_TrxName());
- PP_Order_BOMLine.setAD_Org_ID(getAD_Org_ID());
- PP_Order_BOMLine.setQtyOrdered(getQtyOrdered());
- PP_Order_BOMLine.saveEx();
- } // end if valid From / To
- } // end Create Order BOM
-
- } // end if From / To parent
-
- // Create Workflow (Routing & Process
- MWorkflow AD_Workflow = MWorkflow.get(getCtx(), getAD_Workflow_ID());
- if (AD_Workflow.isValidFromTo(getDateStartSchedule()))
- {
- MPPOrderWorkflow PP_Order_Workflow = new MPPOrderWorkflow(AD_Workflow, get_ID(), get_TrxName());
- PP_Order_Workflow.setAD_Org_ID(getAD_Org_ID());
- PP_Order_Workflow.saveEx();
- for (MWFNode AD_WF_Node : AD_Workflow.getNodes(false, getAD_Client_ID()))
- {
- if (AD_WF_Node.isValidFromTo(getDateStartSchedule()))
- {
- MPPOrderNode PP_Order_Node = new MPPOrderNode(AD_WF_Node, PP_Order_Workflow,
- getQtyOrdered(),
- get_TrxName());
- PP_Order_Node.setAD_Org_ID(getAD_Org_ID());
- PP_Order_Node.saveEx();
-
- for (MWFNodeNext AD_WF_NodeNext : AD_WF_Node.getTransitions(getAD_Client_ID()))
- {
- MPPOrderNodeNext nodenext = new MPPOrderNodeNext(AD_WF_NodeNext, PP_Order_Node);
- nodenext.setAD_Org_ID(getAD_Org_ID());
- nodenext.saveEx();
- }// for NodeNext
-
- for (MPPWFNodeProduct wfnp : MPPWFNodeProduct.forAD_WF_Node_ID(getCtx(), AD_WF_Node.get_ID()))
- {
- MPPOrderNodeProduct nodeorderproduct = new MPPOrderNodeProduct(wfnp, PP_Order_Node);
- nodeorderproduct.setAD_Org_ID(getAD_Org_ID());
- nodeorderproduct.saveEx();
- }
-
- for (MPPWFNodeAsset wfna : MPPWFNodeAsset.forAD_WF_Node_ID(getCtx(), AD_WF_Node.get_ID()))
- {
- MPPOrderNodeAsset nodeorderasset = new MPPOrderNodeAsset(wfna, PP_Order_Node);
- nodeorderasset.setAD_Org_ID(getAD_Org_ID());
- nodeorderasset.saveEx();
- }
- }// for node
-
- }
- // Update transitions nexts and set first node
- PP_Order_Workflow.loadNodes();
- for (MPPOrderNode orderNode : PP_Order_Workflow.getNodes(false, getAD_Client_ID()))
- {
- // set workflow start node
- if (PP_Order_Workflow.getAD_WF_Node_ID() == orderNode.getAD_WF_Node_ID())
- {
- PP_Order_Workflow.setPP_Order_Node_ID(orderNode.getPP_Order_Node_ID());
- }
- // set node next
- for (MPPOrderNodeNext next : orderNode.getTransitions(getAD_Client_ID()))
- {
- next.setPP_Order_Next_ID();
- next.saveEx();
- }
- }
- PP_Order_Workflow.saveEx();
-
- BigDecimal QtyBatchs = null;
- BigDecimal QtyBatchSize = PP_Order_Workflow.getQtyBatchSize().setScale(0, RoundingMode.UP);
-
- if (QtyBatchSize.signum()==0)
- QtyBatchs = Env.ONE;
- else
- QtyBatchs = getQtyOrdered().divide(QtyBatchSize , 0, BigDecimal.ROUND_UP);
-
- setQtyBatchs(QtyBatchs);
- setQtyBatchSize(QtyBatchSize);
-
- } // workflow valid from/to
- }
-
- /**
- * Create Receipt Finish Good
- * @param order
- * @param movementDate
- * @param qtyDelivered
- * @param qtyToDeliver
- * @param qtyScrap
- * @param qtyReject
- * @param M_Locator_ID
- * @param M_AttributeSetInstance_ID
- * @param IsCloseDocument
- * @param trxName
- */
- static public void createReceipt(MPPOrder order,
- Timestamp movementDate,
- BigDecimal qtyDelivered,
- BigDecimal qtyToDeliver,
- BigDecimal qtyScrap,
- BigDecimal qtyReject,
- int M_Locator_ID,
- int M_AttributeSetInstance_ID,
- boolean IsCloseDocument,
- String trxName)
- {
-
- if (qtyToDeliver.signum() != 0 || qtyScrap.signum() != 0 || qtyReject.signum() != 0)
- {
- MPPCostCollector.createCollector(
- order, //MPPOrder
- order.getM_Product_ID(), //M_Product_ID
- M_Locator_ID, //M_Locator_ID
- M_AttributeSetInstance_ID, //M_AttributeSetInstance_ID
- order.getS_Resource_ID(), //S_Resource_ID
- 0, //PP_Order_BOMLine_ID
- 0, //PP_Order_Node_ID
- MDocType.getDocType(MDocType.DOCBASETYPE_ManufacturingOrder), //C_DocType_ID
- MPPCostCollector.COSTCOLLECTORTYPE_MaterialReceipt, //Production "+"
- movementDate, //MovementDate
- qtyToDeliver, qtyScrap, qtyReject, //qty,scrap,reject
- 0,0, //durationSetup,duration
- trxName);
- }
-
- if (IsCloseDocument)
- {
- order.setDateFinish(movementDate);
- order.closeIt();
- order.saveEx();
- }
-
- order.setDateDelivered(movementDate);
- if (order.getDateStart() == null)
- {
- order.setDateStart(movementDate);
- }
-
- BigDecimal DQ = qtyDelivered;
- BigDecimal SQ = qtyScrap;
- BigDecimal OQ = qtyToDeliver;
- if (DQ.add(SQ).compareTo(OQ) >= 0)
- {
- order.setDateFinish(movementDate);
- }
-
- order.saveEx(trxName);
-
- }
-
- /**
- * Create Issue
- * @param PP_OrderBOMLine_ID
- * @param movementdate
- * @param qty
- * @param qtyScrap
- * @param qtyReject
- * @param storages
- */
- public static void createIssue(MPPOrder order, int PP_OrderBOMLine_ID,
- Timestamp movementdate,
- BigDecimal qty, BigDecimal qtyScrap, BigDecimal qtyReject,
- MStorage[] storages,
- String trxName)
- {
- if (qty.signum() == 0)
- return;
-
- BigDecimal toIssue = qty.add(qtyScrap);
- for (MStorage storage : storages)
- {
- // TODO Selection of ASI
-
- if (storage.getQtyOnHand().signum() == 0)
- continue;
-
- BigDecimal qtyIssue = toIssue.min(storage.getQtyOnHand());
- //log.fine("ToIssue: " + issue);
- MPPOrderBOMLine PP_orderbomLine = new MPPOrderBOMLine(order.getCtx(), PP_OrderBOMLine_ID, trxName);
- //create record for negative and positive transaction
- if (qtyIssue.signum() != 0 || qtyScrap.signum() != 0 || qtyReject.signum() != 0)
- {
- String CostCollectorType = MPPCostCollector.COSTCOLLECTORTYPE_ComponentIssue;
- // Method Variance
- if (PP_orderbomLine.getQtyBatch().signum() == 0
- && PP_orderbomLine.getQtyBOM().signum() == 0)
- {
- CostCollectorType = MPPCostCollector.COSTCOLLECTORTYPE_MethodChangeVariance;
- }
- //
- MPPCostCollector.createCollector (
- order, //MPPOrder
- PP_orderbomLine.getM_Product_ID(), //M_Product_ID
- storage.getM_Locator_ID(), //M_Locator_ID
- storage.getM_AttributeSetInstance_ID(), //M_AttributeSetInstance_ID
- order.getS_Resource_ID(), //S_Resource_ID
- PP_OrderBOMLine_ID, //PP_Order_BOMLine_ID
- 0, //PP_Order_Node_ID
- MDocType.getDocType(MDocType.DOCBASETYPE_ManufacturingOrder), //C_DocType_ID,
- CostCollectorType, //Production "-"
- movementdate, //MovementDate
- qtyIssue, qtyScrap, qtyReject, //qty,scrap,reject
- 0,0, //durationSetup,duration
- trxName //trxName
- );
-
- }
-
- toIssue = toIssue.subtract(qtyIssue);
- if (toIssue.signum() == 0)
- break;
- }
- //
- if (toIssue.signum() != 0)
- {
- // should not happen because we validate Qty On Hand on start of this process
- throw new AdempiereException("Should not happen toIssue="+toIssue);
- }
- }
-
- public static boolean isAvailableQty(MPPOrder order, I_PP_Order_BOMLine line)
- {
- MProduct product = MProduct.get(order.getCtx(), line.getM_Product_ID());
- if (product == null || !product.isStocked())
- {
- return true;
- }
-
- BigDecimal qtyToDeliver = line.getQtyRequiered();
- BigDecimal qtyScrap = line.getQtyScrap();
- BigDecimal qtyRequired = qtyToDeliver.add(qtyScrap);
- BigDecimal qtyAvailable = MStorage.getQtyAvailable(order.getM_Warehouse_ID(), 0,
- line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(),
- order.get_TrxName());
- return qtyAvailable.compareTo(qtyRequired) >= 0;
- }
-
- /**
- * get if Component is Available
- * @param MPPOrdrt Manufacturing order
- * @param ArrayList Issues
- * @param minGuaranteeDate Guarantee Date
- * @return true when the qty available is enough
- */
- public static boolean isAvailableQty(MPPOrder order ,ArrayList[][] issue,Timestamp minGuaranteeDate)
- {
- boolean isCompleteQtyDeliver = false;
- int ANY_ASI = 1;
-
- for(int i = 0; i < issue.length; i++ )
- {
- KeyNamePair key = (KeyNamePair) issue[i][0].get(0);
- boolean isSelected = key.getName().equals("Y");
- if (key == null || !isSelected)
- {
- continue;
- }
-
- String value = (String)issue[i][0].get(2);
- KeyNamePair productkey = (KeyNamePair) issue[i][0].get(3);
- int M_Product_ID = productkey.getKey();
- BigDecimal qtyToDeliver = (BigDecimal)issue[i][0].get(4);
- BigDecimal qtyScrapComponent = (BigDecimal) issue[i][0].get(5);
-
- MProduct product = MProduct.get(order.getCtx(), M_Product_ID);
- if (product != null && product.isStocked())
- {
- int M_AttributeSetInstance_ID = ANY_ASI;
- if (value == null && isSelected)
- {
- M_AttributeSetInstance_ID = (Integer)key.getKey();
- }
-
- MStorage[] storages = MPPOrder.getStorages(order.getCtx(),
- M_Product_ID,
- order.getM_Warehouse_ID(),
- M_AttributeSetInstance_ID,
- order.getM_AttributeSetInstance_ID(),
- ANY_ASI,
- minGuaranteeDate);
-
- if (M_AttributeSetInstance_ID == ANY_ASI)
- {
- BigDecimal toIssue = qtyToDeliver.add(qtyScrapComponent);
- for (MStorage storage : storages)
- {
- // TODO Selection of ASI
- if (storage.getQtyOnHand().signum() == 0)
- continue;
- BigDecimal issueActual = toIssue.min(storage.getQtyOnHand());
- toIssue = toIssue.subtract(issueActual);
- if (toIssue.signum() <= 0)
- break;
- }
- }
- else
- {
- BigDecimal qtydelivered = qtyToDeliver;
- qtydelivered.setScale(4, BigDecimal.ROUND_HALF_UP);
- qtydelivered = Env.ZERO;
- }
-
- BigDecimal onHand = Env.ZERO;
- for (MStorage storage : storages)
- {
- onHand = onHand.add(storage.getQtyOnHand());
- }
-
- isCompleteQtyDeliver = onHand.compareTo(qtyToDeliver.add(qtyScrapComponent)) >= 0;
- if (!isCompleteQtyDeliver)
- break;
-
- }
- } // for each line
-
- return isCompleteQtyDeliver;
- }
-
- public static MStorage[] getStorages(
- Properties ctx,
- int M_Product_ID,
- int M_Warehouse_ID,
- int M_ASI_ID,
- int O_ASI_ID,
- int ANY_ASI,
- Timestamp minGuaranteeDate)
- {
- MProduct product = MProduct.get(ctx, M_Product_ID);
- if (product != null && product.isStocked())
- {
- String MMPolicy = product.getMMPolicy();
- return MStorage.getWarehouse(ctx,
- M_Warehouse_ID,
- M_Product_ID,
- M_ASI_ID == ANY_ASI ? O_ASI_ID : M_ASI_ID,
- product.getM_AttributeSet_ID(),
- true, // all attribute set instances
- minGuaranteeDate,
- MClient.MMPOLICY_FiFo.equals(MMPolicy),
- null // no trx
- );
- }
- else
- {
- return new MStorage[0];
- }
- }
-
- /**
- * @return Default Locator for current Warehouse
- */
- public int getM_Locator_ID()
- {
- MWarehouse wh = MWarehouse.get(getCtx(), getM_Warehouse_ID());
- return wh.getDefaultLocator().getM_Locator_ID();
- }
-
- /**
- * @param qty
- * @return Storage locator for current product/asi/warehouse and qty
- * @see MStorage#getM_Locator_ID(int, int, int, BigDecimal, String)
- */
- private int getM_Locator_ID(BigDecimal qty)
- {
- int M_Locator_ID = 0;
- int M_ASI_ID = getM_AttributeSetInstance_ID();
- // Get existing Locator
- if (M_ASI_ID != 0)
- {
- M_Locator_ID = MStorage.getM_Locator_ID(getM_Warehouse_ID(), getM_Product_ID(), M_ASI_ID, qty, get_TrxName());
- }
- // Get Default
- if (M_Locator_ID == 0)
- {
- M_Locator_ID = getM_Locator_ID();
- }
- return M_Locator_ID;
- }
-
- public String toString()
- {
- StringBuffer sb = new StringBuffer("MPPOrder[").append(get_ID())
- .append("-").append(getDocumentNo())
- .append(",IsSOTrx=").append(isSOTrx())
- .append(",C_DocType_ID=").append(getC_DocType_ID())
- .append("]");
- return sb.toString();
- } // toString
-} // MPPOrder
diff --git a/base/src/org/eevolution/model/MPPOrderBOM.java b/base/src/org/eevolution/model/MPPOrderBOM.java
deleted file mode 100644
index 4367c72b91..0000000000
--- a/base/src/org/eevolution/model/MPPOrderBOM.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-//package org.compiere.mfg.model;
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-/**
- * Order BOM Model.
- *
- * @author Victor Perez www.e-evolution.com
- * @version $Id: MOrder.java,v 1.40 2004/04/13 04:19:30 vpj-cd Exp $
- *
- * @author Teo Sarca, www.arhipac.ro
- */
-public class MPPOrderBOM extends X_PP_Order_BOM
-{
- private static final long serialVersionUID = 1L;
-
- /**
- * Default Constructor
- * @param ctx context
- * @param C_Order_ID order to load, (0 create new order)
- */
- public MPPOrderBOM(Properties ctx, int PP_Order_BOM_ID,String trxName)
- {
- super (ctx, PP_Order_BOM_ID,trxName);
- // New
- if ( PP_Order_BOM_ID == 0)
- {
- setProcessing(false);
- }
- } // MOrder
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set record
- */
- public MPPOrderBOM(Properties ctx, ResultSet rs,String trxName)
- {
- super (ctx, rs, trxName);
- } // MOrder
-
- /**
- * Peer constructor
- * @param bom
- * @param PP_Order_ID
- * @param trxName
- */
- public MPPOrderBOM(MPPProductBOM bom, int PP_Order_ID, String trxName)
- {
- this(bom.getCtx(), 0, trxName);
- //
- setBOMType(bom.getBOMType());
- setBOMUse(bom.getBOMUse());
- setM_ChangeNotice_ID(bom.getM_ChangeNotice_ID());
- setHelp(bom.getHelp());
- //setCopyFrom(bom.getCopyFrom());
- setProcessing(bom.isProcessing());
- setHelp(bom.getHelp());
- setDescription(bom.getDescription());
- setM_AttributeSetInstance_ID(bom.getM_AttributeSetInstance_ID());
- setM_Product_ID(bom.getM_Product_ID());
- setName(bom.getName());
- setRevision(bom.getRevision());
- setValidFrom(bom.getValidFrom());
- setValidTo(bom.getValidTo());
- setValue(bom.getValue());
- setDocumentNo(bom.getDocumentNo());
- setC_UOM_ID(bom.getC_UOM_ID());
- //
- setPP_Order_ID(PP_Order_ID);
- }
-
- /**
- * String Representation
- * @return info
- */
- public String toString ()
- {
- StringBuffer sb = new StringBuffer ("MPPOrderBOM[")
- .append(get_ID()).append("-").append(getDocumentNo())
- .append ("]");
- return sb.toString ();
- } // toString
-} // MPPOrderBOM
diff --git a/base/src/org/eevolution/model/MPPOrderBOMLine.java b/base/src/org/eevolution/model/MPPOrderBOMLine.java
deleted file mode 100644
index 4af3019fd8..0000000000
--- a/base/src/org/eevolution/model/MPPOrderBOMLine.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Properties;
-
-import org.adempiere.exceptions.AdempiereException;
-import org.adempiere.exceptions.DBException;
-import org.compiere.model.MProduct;
-import org.compiere.model.MUOM;
-import org.compiere.model.MWarehouse;
-import org.compiere.model.Query;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-
-/**
- * PP Order BOM Line Model.
- *
- * @author Victor Perez www.e-evolution.com
- * @author Teo Sarca, www.arhipac.ro
- */
-public class MPPOrderBOMLine extends X_PP_Order_BOMLine
-{
- private static final long serialVersionUID = 1L;
-
- public static MPPOrderBOMLine forM_Product_ID(Properties ctx, int PP_Order_ID, int M_Product_ID, String trxName)
- {
- final String whereClause = COLUMNNAME_PP_Order_ID+"=? AND "+COLUMNNAME_M_Product_ID+"=?";
- return new Query(ctx, Table_Name, whereClause, trxName)
- .setParameters(new Object[]{PP_Order_ID, M_Product_ID})
- .firstOnly();
- }
-
- public MPPOrderBOMLine(Properties ctx, int PP_Order_BOMLine_ID, String trxName)
- {
- super (ctx, PP_Order_BOMLine_ID, trxName);
- if (PP_Order_BOMLine_ID == 0)
- {
- setQtyDelivered(Env.ZERO);
- setQtyPost(Env.ZERO);
- setQtyReject(Env.ZERO);
- setQtyRequiered(Env.ZERO);
- setQtyReserved(Env.ZERO);
- setQtyScrap(Env.ZERO);
- }
- } // PP_Order_BOMLine_ID
-
-
- public MPPOrderBOMLine(Properties ctx, ResultSet rs,String trxName)
- {
- super (ctx, rs,trxName);
- } // MOrderLine
-
- /**
- * Peer constructor
- * @param bomLine
- * @param PP_Order_ID
- * @param PP_Order_BOM_ID
- * @param M_Warehouse_ID
- * @param trxName
- */
- public MPPOrderBOMLine(MPPProductBOMLine bomLine,
- int PP_Order_ID, int PP_Order_BOM_ID, int M_Warehouse_ID,
- String trxName)
- {
- this(bomLine.getCtx(), 0, trxName);
-
- setPP_Order_BOM_ID(PP_Order_BOM_ID);
- setPP_Order_ID(PP_Order_ID);
- setM_Warehouse_ID(M_Warehouse_ID);
- //
- setM_ChangeNotice_ID(bomLine.getM_ChangeNotice_ID());
- setDescription(bomLine.getDescription());
- setHelp(bomLine.getHelp());
- setAssay(bomLine.getAssay());
- setQtyBatch(bomLine.getQtyBatch());
- setQtyBOM(bomLine.getQtyBOM());
- setIsQtyPercentage(bomLine.isQtyPercentage());
- setComponentType(bomLine.getComponentType());
- setC_UOM_ID(bomLine.getC_UOM_ID());
- setForecast(bomLine.getForecast());
- setIsCritical(bomLine.isCritical());
- setIssueMethod(bomLine.getIssueMethod());
- setLeadTimeOffset(bomLine.getLeadTimeOffset());
- setM_AttributeSetInstance_ID(bomLine.getM_AttributeSetInstance_ID());
- setM_Product_ID(bomLine.getM_Product_ID());
- setScrap(bomLine.getScrap());
- setValidFrom(bomLine.getValidFrom());
- setValidTo(bomLine.getValidTo());
- setBackflushGroup(bomLine.getBackflushGroup());
- }
-
- /**
- * Parent (PP_Order)
- */
- private MPPOrder m_parent = null;
-
- /**
- * Qty used for exploding this BOM Line.
- * When ComponentType is Phantom, it is set on beforeSave as QtyRequired and reset on afterSave.
- */
- private BigDecimal m_qtyToExplode = null;
-
-
- @Override
- protected boolean beforeSave(boolean newRecord)
- {
- // Get Line No
- if (getLine() == 0)
- {
- String sql = "SELECT COALESCE(MAX("+COLUMNNAME_Line+"),0)+10 FROM "+Table_Name
- +" WHERE "+COLUMNNAME_PP_Order_ID+"=?";
- int ii = DB.getSQLValueEx (get_TrxName(), sql, getPP_Order_ID());
- setLine (ii);
- }
-
- // If Phantom, we need to explode this line (see afterSave):
- if(newRecord && COMPONENTTYPE_Phantom.equals(getComponentType()))
- {
- m_qtyToExplode = getQtyRequiered();
- setQtyRequiered(Env.ZERO);
- }
-
-
- return true;
- }
-
- @Override
- protected boolean afterSave(boolean newRecord, boolean success)
- {
- if (!success)
- return false;
- log.fine(" Parent Product" + getM_Product_ID() + " getQtyBatch" + getQtyBatch() + " getQtyRequiered" + getQtyRequiered() + " QtyScrap" + getQtyScrap());
- //
- // Explode Phantom Items
- if(m_qtyToExplode != null)
- {
- MProduct parent = MProduct.get(getCtx(), getM_Product_ID());
- int PP_Product_BOM_ID = MPPProductBOM.getBOMSearchKey(parent);
- if (PP_Product_BOM_ID <= 0)
- {
- return true;
- }
- MPPProductBOM bom = MPPProductBOM.get(getCtx(), PP_Product_BOM_ID);
- if (bom != null)
- {
- for(MPPProductBOMLine PP_Product_BOMline : bom.getLines())
- {
- MPPOrderBOMLine PP_Order_BOMLine = new MPPOrderBOMLine(PP_Product_BOMline,
- getPP_Order_ID(), getPP_Order_BOM_ID(),
- getM_Warehouse_ID(),
- get_TrxName());
- PP_Order_BOMLine.setAD_Org_ID(getAD_Org_ID());
- PP_Order_BOMLine.setQtyOrdered(m_qtyToExplode);
- PP_Order_BOMLine.saveEx();
- }
- }
- m_qtyToExplode = null;
- }
- return true;
-
- }
-
- @Override
- public MProduct getM_Product()
- {
- return MProduct.get(getCtx(), getM_Product_ID());
- }
-
- @Override
- public MUOM getC_UOM()
- {
- return MUOM.get(getCtx(), getC_UOM_ID());
- }
-
- @Override
- public MWarehouse getM_Warehouse()
- {
- return MWarehouse.get(getCtx(), getM_Warehouse_ID());
- }
-
- /**
- * Get Parent
- * @return PP_Order
- */
- public MPPOrder getParent()
- {
- int id = getPP_Order_ID();
- if (id <= 0)
- {
- m_parent = null;
- return null;
- }
- if (m_parent == null || m_parent.get_ID() != id)
- {
- m_parent = new MPPOrder(getCtx(), id, get_TrxName());
- }
- return m_parent;
- } // getParent
-
- public void setQtyOrdered(BigDecimal QtyOrdered)
- {
- BigDecimal multiplier = Env.ZERO;
- if (isQtyPercentage())
- {
- multiplier = getQtyBatch().divide(Env.ONEHUNDRED, 8, RoundingMode.UP);
- }
- else
- {
- multiplier = getQtyBOM();
- }
- BigDecimal qty = QtyOrdered.multiply(multiplier).setScale(8, RoundingMode.UP);
-
- if (isComponentType(COMPONENTTYPE_Component,COMPONENTTYPE_Phantom
- ,COMPONENTTYPE_Packing
- ,COMPONENTTYPE_ByProduct))
- {
- setQtyRequiered(qty);
- }
- else if (isComponentType(COMPONENTTYPE_Tools))
- {
- setQtyRequiered(multiplier);
- }
- else
- {
- throw new AdempiereException("@NotSupported@ @ComponentType@ "+getComponentType());
- }
- //
- // Set Scrap of Component
- BigDecimal Scrap = getScrap();
- if (Scrap.signum() != 0)
- {
- Scrap = Scrap.divide(Env.ONEHUNDRED, 8, BigDecimal.ROUND_UP);
- setQtyRequiered(getQtyRequiered().divide(Env.ONE.subtract(Scrap), 8, BigDecimal.ROUND_HALF_UP));
- }
- }
-
- /**
- * @return Qty Open (Requiered - Delivered)
- */
- public BigDecimal getQtyOpen()
- {
- return getQtyRequiered().subtract(getQtyDelivered());
- }
-
- /** Storage Qty On Hand */
- private BigDecimal m_qtyOnHand = null;
- /** Storage Qty Available */
- private BigDecimal m_qtyAvailable = null;
-
- /**
- * Load Storage Info
- * @param reload
- */
- private void loadStorage(boolean reload)
- {
- if (!reload && m_qtyOnHand != null && m_qtyAvailable != null)
- {
- return;
- }
- //
- final String sql = "SELECT "
- +" bomQtyAvailable("+COLUMNNAME_M_Product_ID+", "+COLUMNNAME_M_Warehouse_ID+", 0)"
- +",bomQtyOnHand("+COLUMNNAME_M_Product_ID+", "+COLUMNNAME_M_Warehouse_ID+", 0)"
- +" FROM "+Table_Name
- +" WHERE "+COLUMNNAME_PP_Order_BOMLine_ID+"=?";
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- try
- {
- pstmt = DB.prepareStatement(sql, get_TrxName());
- DB.setParameters(pstmt, new Object[]{get_ID()});
- rs = pstmt.executeQuery();
- if (rs.next())
- {
- m_qtyAvailable = rs.getBigDecimal(1);
- m_qtyOnHand = rs.getBigDecimal(2);
- }
- }
- catch (SQLException e)
- {
- throw new DBException(e, sql);
- }
- finally
- {
- DB.close(rs, pstmt);
- rs = null; pstmt = null;
- }
- }
-
- /**
- * @return storage Available Qty
- */
- public BigDecimal getQtyAvailable()
- {
- loadStorage(false);
- return m_qtyAvailable;
- }
-
- /**
- * @return storage Qty On Hand
- */
- public BigDecimal getQtyOnHand()
- {
- loadStorage(false);
- return m_qtyOnHand;
- }
-
- /**
- * @param componentTypes one or more component types
- * @return true of Component Type is any of following types
- */
- public boolean isComponentType(String ... componentTypes)
- {
- String currentType = getComponentType();
- for (String type : componentTypes)
- {
- if (currentType.equals(type))
- {
- return true;
- }
- }
- return false;
- }
-}
diff --git a/base/src/org/eevolution/model/MPPOrderBOMLineMA.java b/base/src/org/eevolution/model/MPPOrderBOMLineMA.java
deleted file mode 100644
index 3fd2f809e3..0000000000
--- a/base/src/org/eevolution/model/MPPOrderBOMLineMA.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, http://www.arhipac.ro *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.math.BigDecimal;
-import java.sql.ResultSet;
-import java.util.List;
-import java.util.Properties;
-
-import org.compiere.model.Query;
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-
-/**
- * Cost Collector Material Allocation
- *
- * @author Victor Perez www.e-evolution.com
- * @author Teo Sarca, http://www.arhipac.ro
- */
-public class MPPOrderBOMLineMA extends X_PP_Order_BOMLineMA
-{
- private static final long serialVersionUID = 1L;
-
- /**
- * Get Material Allocations for Line
- * @param ctx context
- * @param PP_Order_BOMLine_ID line
- * @param trxName trx
- * @return allocations
- */
- public static MPPOrderBOMLineMA[] get (Properties ctx, int PP_Order_BOMLine_ID, String trxName)
- {
- final String whereClause = COLUMNNAME_PP_Order_BOMLine_ID+"=?";
- List list = new Query(ctx, Table_Name, whereClause, trxName)
- .setParameters(new Object[]{PP_Order_BOMLine_ID})
- .setOrderBy(COLUMNNAME_PP_Order_BOMLineMA_ID)
- .list();
- return list.toArray(new MPPOrderBOMLineMA[list.size()]);
- }
-
- /**
- * Delete all Material Allocation for PP order component
- * @param PP_Order_BOMLine_ID PP order component line
- * @return number of rows deleted
- */
- public static int deleteOrderBOMLineMA (int PP_Order_BOMLine_ID, String trxName)
- {
- final String sql = "DELETE FROM "+Table_Name+" WHERE "+COLUMNNAME_PP_Order_BOMLine_ID+"=?";
- int no = DB.executeUpdateEx(sql, new Object[]{PP_Order_BOMLine_ID}, trxName);
-
- s_log.config("Delete old #" + no);
- return no;
- }
-
- /** Logger */
- private static CLogger s_log = CLogger.getCLogger (MPPOrderBOMLineMA.class);
-
- /**
- * Standard Constructor
- * @param ctx context
- * @param M_InOutLineMA_ID ignored
- * @param trxName trx
- */
- public MPPOrderBOMLineMA (Properties ctx, int PP_Order_BOMLineMA_ID, String trxName)
- {
- super (ctx, PP_Order_BOMLineMA_ID, trxName);
- if (PP_Order_BOMLineMA_ID != 0)
- throw new IllegalArgumentException("Multi-Key");
- } // MInOutLineMA
-
- /**
- * Load Cosntructor
- * @param ctx context
- * @param rs result set
- * @param trxName trx
- */
- public MPPOrderBOMLineMA (Properties ctx, ResultSet rs, String trxName)
- {
- super (ctx, rs, trxName);
- } // MInOutLineMA
-
- /**
- * Parent Constructor
- * @param parent parent
- * @param M_AttributeSetInstance_ID asi
- * @param MovementQty qty
- */
- public MPPOrderBOMLineMA (MPPOrderBOMLine parent, int M_AttributeSetInstance_ID, BigDecimal MovementQty)
- {
- this (parent.getCtx(), 0, parent.get_TrxName());
- setClientOrg(parent);
- setPP_Order_BOMLine_ID(parent.getPP_Order_BOMLine_ID());
- //
- setM_AttributeSetInstance_ID(M_AttributeSetInstance_ID);
- setMovementQty(MovementQty);
- } // MInOutLineMA
-
-
- /**
- * String Representation
- * @return info
- */
- public String toString ()
- {
- StringBuffer sb = new StringBuffer ("MPPOrderBOMLineMA[");
- sb.append("PP_Order_BOMLine_ID=").append(getPP_Order_BOMLine_ID())
- .append(",M_AttributeSetInstance_ID=").append(getM_AttributeSetInstance_ID())
- .append(", Qty=").append(getMovementQty())
- .append ("]");
- return sb.toString ();
- } // toString
-
-} // PP_Order_BOMLineMA
diff --git a/base/src/org/eevolution/model/MPPOrderCost.java b/base/src/org/eevolution/model/MPPOrderCost.java
deleted file mode 100644
index 23fb1b2046..0000000000
--- a/base/src/org/eevolution/model/MPPOrderCost.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-import org.compiere.model.MCost;
-
-/**
- * PP Order Cost Model.
- *
- * @author Victor Perez www.e-evolution.com
- * @version $Id: MOrder.java,v 1.40 2004/04/13 04:19:30 vpj-cd Exp $
- *
- * @author Teo Sarca, www.arhipac.ro
- */
-public class MPPOrderCost extends X_PP_Order_Cost
-{
- private static final long serialVersionUID = 1L;
-
- /**
- * Default Constructor
- * @param ctx context
- * @param C_Order_ID order to load, (0 create new order)
- */
- public MPPOrderCost(Properties ctx, int PP_Order_Cost_ID,String trxName)
- {
- super (ctx, PP_Order_Cost_ID, trxName);
- } // MOrder
-
- /**
- * Peer constructor
- * @param cost
- * @param PP_Order_ID
- */
- public MPPOrderCost(MCost cost, int PP_Order_ID, String trxName)
- {
- this(cost.getCtx(), 0, trxName);
-
- setPP_Order_ID(PP_Order_ID);
- setC_AcctSchema_ID(cost.getC_AcctSchema_ID());
- setCumulatedAmt(cost.getCumulatedAmt());
- setCumulatedQty(cost.getCumulatedQty());
- setCurrentCostPriceLL(cost.getCurrentCostPriceLL());
- setCurrentCostPrice(cost.getCurrentCostPrice());
- setM_Product_ID(cost.getM_Product_ID());
- setM_AttributeSetInstance_ID(cost.getM_AttributeSetInstance_ID());
- setM_CostElement_ID(cost.getM_CostElement_ID());
- }
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set record
- */
- public MPPOrderCost(Properties ctx, ResultSet rs, String trxName)
- {
- super (ctx, rs, trxName);
- } // MOrder
-}
diff --git a/base/src/org/eevolution/model/MPPOrderNode.java b/base/src/org/eevolution/model/MPPOrderNode.java
deleted file mode 100644
index 5559d59e47..0000000000
--- a/base/src/org/eevolution/model/MPPOrderNode.java
+++ /dev/null
@@ -1,367 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
- * or via info@compiere.org or http://www.compiere.org/license.html *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.math.BigDecimal;
-import java.sql.ResultSet;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import org.adempiere.exceptions.AdempiereException;
-import org.compiere.model.MResource;
-import org.compiere.model.MUOM;
-import org.compiere.model.Query;
-import org.compiere.util.CCache;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.compiere.wf.MWFNode;
-
-/**
- * PP Order Workflow Node Model
- *
- * @author Victor Perez, e-Evolution, S.C.
- * @author Teo Sarca, http://www.arhipac.ro
- */
-public class MPPOrderNode extends X_PP_Order_Node
-{
- private static final long serialVersionUID = 1L;
-
-
- /**
- * Get WF Node from Cache
- * @param ctx context
- * @param PP_Order_Node_ID id
- * @return MPPOrderNode
- */
- public static MPPOrderNode get (Properties ctx, int PP_Order_Node_ID)
- {
- MPPOrderNode retValue = s_cache.get (PP_Order_Node_ID);
- if (retValue != null)
- return retValue;
- retValue = new MPPOrderNode (ctx, PP_Order_Node_ID, null);
- if (retValue.get_ID () != 0)
- s_cache.put (PP_Order_Node_ID, retValue);
- return retValue;
- } // get
-
-
- /**
- * @return true if this is last node
- */
- public static boolean isLastNode(Properties ctx, int PP_Order_Node_ID, String trxName)
- {
- String whereClause = MPPOrderNodeNext.COLUMNNAME_PP_Order_Node_ID+"=?";
- return false == new Query(ctx, MPPOrderNodeNext.Table_Name, whereClause, trxName)
- .setOnlyActiveRecords(true)
- .setParameters(new Object[]{PP_Order_Node_ID})
- .match();
- }
-
- /** Cache */
- private static CCache s_cache = new CCache (Table_Name, 50);
- /** MPPOrderWorkflow */
- MPPOrderWorkflow m_order_wf = null;
-
- /**************************************************************************
- * Standard Constructor - save to cache
- * @param ctx context
- * @param PP_Order_Node_ID id
- * @param trxName transaction
- */
- public MPPOrderNode (Properties ctx, int PP_Order_Node_ID, String trxName)
- {
- super (ctx, PP_Order_Node_ID, trxName);
- if (PP_Order_Node_ID == 0)
- {
- // setPP_Order_Node_ID (0);
- // setPP_Order_Workflow_ID (0);
- // setValue (null);
- // setName (null);
- setAction (ACTION_WaitSleep);
- setCost (Env.ZERO);
- setDuration (0);
- setEntityType (ENTITYTYPE_UserMaintained); // U
- setIsCentrallyMaintained (true); // Y
- setJoinElement (JOINELEMENT_XOR); // X
- setLimit (0);
- setSplitElement (SPLITELEMENT_XOR); // X
- setWaitingTime (0);
- setXPosition (0);
- setYPosition (0);
- setDocStatus(MPPOrderNode.DOCSTATUS_Drafted);
- }
- // Save to Cache
- if (get_ID() != 0)
- s_cache.put (getPP_Order_Node_ID(), this);
- } // MPPOrderNode
-
- /**
- * Parent Constructor
- * @param wf workflow (parent)
- * @param Value value
- * @param Name name
- */
- public MPPOrderNode (MPPOrderWorkflow wf, String Value, String Name)
- {
- this (wf.getCtx(), 0, wf.get_TrxName());
- setClientOrg(wf);
- setPP_Order_Workflow_ID (wf.getPP_Order_Workflow_ID());
- setValue (Value);
- setName (Name);
- m_durationBaseMS = wf.getDurationBaseSec() * 1000;
- } // MPPOrderNode
-
- /**
- * Peer constructor
- * @param wfNode
- * @param PP_Order_Workflow
- * @param qtyOrdered
- * @param trxName
- */
- public MPPOrderNode (MWFNode wfNode, MPPOrderWorkflow PP_Order_Workflow,
- BigDecimal qtyOrdered,
- String trxName)
- {
- this(wfNode.getCtx(), 0, trxName);
- setPP_Order_ID(PP_Order_Workflow.getPP_Order_ID());
- setPP_Order_Workflow_ID(PP_Order_Workflow.getPP_Order_Workflow_ID());
- //
- setAction(wfNode.getAction());
- setAD_WF_Node_ID(wfNode.getAD_WF_Node_ID());
- setAD_WF_Responsible_ID(wfNode.getAD_WF_Responsible_ID());
- setAD_Workflow_ID(wfNode.getAD_Workflow_ID());
- setIsSubcontracting(wfNode.isSubcontracting());
- setC_BPartner_ID(wfNode.getC_BPartner_ID());
- setCost(wfNode.getCost());
- setDuration(wfNode.getDuration());
- setEntityType(wfNode.getEntityType());
- setIsCentrallyMaintained(wfNode.isCentrallyMaintained());
- setJoinElement(wfNode.getJoinElement()); // X
- setLimit(wfNode.getLimit());
- setName(wfNode.getName());
- setPriority(wfNode.getPriority());
- setSplitElement(wfNode.getSplitElement()); // X
- setSubflowExecution(wfNode.getSubflowExecution());
- setValue(wfNode.getValue());
- setS_Resource_ID(wfNode.getS_Resource_ID());
- setSetupTime(wfNode.getSetupTime());
- setSetupTimeRequiered(wfNode.getSetupTime());
- setMovingTime(wfNode.getMovingTime());
- setWaitingTime(wfNode.getWaitingTime());
- setWorkingTime(wfNode.getWorkingTime());
- setQueuingTime(wfNode.getQueuingTime());
- setXPosition(wfNode.getXPosition());
- setYPosition(wfNode.getYPosition());
- setDocAction(wfNode.getDocAction());
- setAD_Column_ID(wfNode.getAD_Column_ID());
- setAD_Form_ID(wfNode.getAD_Form_ID());
- setAD_Image_ID(wfNode.getAD_Image_ID());
- setAD_Window_ID(wfNode.getAD_Window_ID());
- setAD_Process_ID(wfNode.getAD_Process_ID());
- setAttributeName(wfNode.getAttributeName());
- setAttributeValue(wfNode.getAttributeValue());
- setC_BPartner_ID(wfNode.getC_BPartner_ID());
- setStartMode(wfNode.getStartMode());
- setFinishMode(wfNode.getFinishMode());
- setValidFrom(wfNode.getValidFrom());
- setValidTo(wfNode.getValidTo());
- //
- setQtyOrdered(qtyOrdered);
- setDocStatus(MPPOrderNode.DOCSTATUS_Drafted);
- }
-
- /**
- * Load Constructor - save to cache
- * @param ctx context
- * @param rs result set to load info from
- * @param trxName transaction
- */
- public MPPOrderNode (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- loadNext();
- // Save to Cache
- s_cache.put (getPP_Order_Node_ID(), this);
- } // MPPOrderNode
-
-
- /** Next Modes */
- private List m_next = new ArrayList();
- /** Duration Base MS */
- private long m_durationBaseMS = -1;
- /** Workflow Order */
- private MPPOrder m_workflow = null;
-
- /**
- * Load Next
- */
- private void loadNext()
- {
- boolean splitAnd = SPLITELEMENT_AND.equals(getSplitElement());
- String whereClause = MPPOrderNodeNext.COLUMNNAME_PP_Order_Node_ID+"=?";
- m_next = new Query(getCtx(), MPPOrderNodeNext.Table_Name, whereClause, get_TrxName())
- .setParameters(new Object[]{get_ID()})
- .setOnlyActiveRecords(true)
- .setOrderBy(MPPOrderNodeNext.COLUMNNAME_SeqNo)
- .list();
- for (MPPOrderNodeNext next : m_next)
- {
- next.setFromSplitAnd(splitAnd);
- }
- log.fine("#" + m_next.size());
- } // loadNext
-
- /**
- * Set Qty Required and DurationRequired (Duration * qtyOrdered)
- * @param qtyOrdered
- */
- public void setQtyOrdered(BigDecimal qtyOrdered)
- {
- setQtyRequiered(qtyOrdered);
- BigDecimal time = BigDecimal.valueOf(getDuration()).multiply(qtyOrdered);
- setDurationRequiered(time.intValue());
- }
-
- /**
- * Get Number of Next Nodes
- * @return number of next nodes
- */
- public int getNextNodeCount()
- {
- return m_next.size();
- } // getNextNodeCount
-
- /**
- * Get the transitions
- * @param AD_Client_ID for client
- * @return array of next nodes
- */
- public MPPOrderNodeNext[] getTransitions(int AD_Client_ID)
- {
- ArrayList list = new ArrayList();
- for (MPPOrderNodeNext next : m_next)
- {
- if (next.getAD_Client_ID() == 0 || next.getAD_Client_ID() == AD_Client_ID)
- {
- list.add(next);
- }
- }
- return list.toArray(new MPPOrderNodeNext [list.size()]);
- } // getNextNodes
-
- /**
- * Get Duration in ms
- * @return duration in ms
- */
- public long getDurationMS ()
- {
- long duration = super.getDuration ();
- if (duration == 0)
- return 0;
- if (m_durationBaseMS == -1)
- m_durationBaseMS = getMPPOrderWorkflow().getDurationBaseSec() * 1000;
- return duration * m_durationBaseMS;
- } // getDurationMS
-
- /**
- * Get Duration Limit in ms
- * @return duration limit in ms
- */
- public long getLimitMS ()
- {
- long limit = super.getLimit ();
- if (limit == 0)
- return 0;
- if (m_durationBaseMS == -1)
- m_durationBaseMS = getMPPOrderWorkflow().getDurationBaseSec() * 1000;
- return limit * m_durationBaseMS;
- } // getLimitMS
-
- /**
- * Get Duration CalendarField
- * @return Calendar.MINUTE, etc.
- */
- public int getDurationCalendarField()
- {
- return getMPPOrderWorkflow().getDurationCalendarField();
- } // getDurationCalendarField
-
- /**
- * String Representation
- * @return info
- */
- public String toString ()
- {
- StringBuffer sb = new StringBuffer ("MPPOrderNode[");
- sb.append(get_ID())
- .append("-").append(getName())
- .append ("]");
- return sb.toString ();
- } // toString
-
- /**
- * Calculate the cost for this Activity using the Cost Element Type
- * @param CostElementType Cost Element Type (Labor or Burden)
- * @param C_AcctSchema_ID AcctSchema
- * @param M_CostType_ID Cost Type
- * @param AD_Org_ID Organization
- * @param setuptime Setup Time
- * @param duration Duration
- * @return cost for this Cost Element Type (Labor or Burden)
- * @throws Exception when the UOM do not is Hours
- */
- public BigDecimal getCostForCostElementType(String CostElementType, int C_AcctSchema_ID,int M_CostType_ID,int AD_Org_ID,int setuptime, int duration)
- {
- MResource resource = (MResource) getS_Resource();
- //get the rate for this cost type element (Rsource, Burden)
- MPPOrderWorkflow workflow = getMPPOrderWorkflow();
- double rate = resource.getResouceRate(C_AcctSchema_ID, M_CostType_ID,CostElementType, AD_Org_ID);
- BigDecimal cost = Env.ZERO;
- if (rate == 0)
- {
- return Env.ZERO;
- }
-
- int C_UOM_ID = DB.getSQLValueEx(get_TrxName(),"SELECT C_UOM_ID FROM M_Product WHERE S_Resource_ID = ? " , getS_Resource_ID());
- MUOM uom = MUOM.get(getCtx(), C_UOM_ID);
- if (uom.isHour())
- {
- double hours = (setuptime / workflow.getQtyBatchSize().doubleValue() + duration)
- * workflow.getDurationBaseSec() / 3600;
- double nodeCost = rate * hours;
- cost = cost.add(new BigDecimal(nodeCost));
- log.info("Activity: " + getName() + " Resouce: " + resource.getName() +" CostElementType: " + CostElementType + " Time Base: "+workflow.getDurationUnit() +" Duration (H): " + hours + " Rate: " + rate + " Activity Cost: " + nodeCost +" =>Cost: "+cost);
- }
- else
- {
- throw new AdempiereException("@NotSupported@ @C_UOM_ID@="+uom.getName());
- }
- return cost;
- }
-
- /**
- * Get Parent
- * @return MPPOrderWorkflow
- */
- public MPPOrderWorkflow getMPPOrderWorkflow()
- {
- if (m_order_wf == null)
- m_order_wf = new MPPOrderWorkflow(getCtx(), getPP_Order_Workflow_ID(), get_TrxName());
- return m_order_wf;
- } // getParent
-}
diff --git a/base/src/org/eevolution/model/MPPOrderNodeAsset.java b/base/src/org/eevolution/model/MPPOrderNodeAsset.java
deleted file mode 100644
index 22052d5bab..0000000000
--- a/base/src/org/eevolution/model/MPPOrderNodeAsset.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-/**
- * Order Node Asset Model
- *
- * @author Victor Perez www.e-evolution.com
- * @author Teo Sarca, www.arhipac.ro
- */
-public class MPPOrderNodeAsset extends X_PP_Order_Node_Asset
-{
- private static final long serialVersionUID = 1L;
-
- public MPPOrderNodeAsset (Properties ctx, int PP_Order_Node_Asset_ID, String trxName)
- {
- super (ctx, PP_Order_Node_Asset_ID, trxName);
- if (PP_Order_Node_Asset_ID == 0)
- {
- }
- }
-
- public MPPOrderNodeAsset (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-
- /**
- * Create a new MPPOrderNodeAsset based in MPPWFNodeProduct
- * @param na
- * @param PP_Order_Node
- */
- public MPPOrderNodeAsset (MPPWFNodeAsset na, MPPOrderNode PP_Order_Node)
- {
- this(PP_Order_Node.getCtx(), 0, PP_Order_Node.get_TrxName());
- setClientOrg(PP_Order_Node);
- //setSeqNo(na.getSeqNo());
- setA_Asset_ID(na.getA_Asset_ID());
- //
- setPP_Order_ID(PP_Order_Node.getPP_Order_ID());
- setPP_Order_Workflow_ID(PP_Order_Node.getPP_Order_Workflow_ID());
- setPP_Order_Node_ID(PP_Order_Node.get_ID());
- }
-}
diff --git a/base/src/org/eevolution/model/MPPOrderNodeNext.java b/base/src/org/eevolution/model/MPPOrderNodeNext.java
deleted file mode 100644
index 6dca8e5bf3..0000000000
--- a/base/src/org/eevolution/model/MPPOrderNodeNext.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-import org.compiere.util.DB;
-import org.compiere.wf.MWFNodeNext;
-
-/**
- * PP Order Workflow Node Next - Transition
- *
- * @author Victor Perez www.e-evolution.com
- * @author Teo Sarca, http://www.arhipac.ro
- */
-public class MPPOrderNodeNext extends X_PP_Order_NodeNext
-{
- private static final long serialVersionUID = 1L;
-
- /**
- * Standard Costructor
- * @param ctx context
- * @param PP_OrderNodeNext_ID id
- * @param trxName transaction
- */
- public MPPOrderNodeNext (Properties ctx, int PP_OrderNodeNext_ID, String trxName)
- {
- super (ctx, PP_OrderNodeNext_ID, trxName);
- if (PP_OrderNodeNext_ID == 0)
- {
- // setPP_OrderNext_ID (0);
- // setPP_OrderNode_ID (0);
- setEntityType (ENTITYTYPE_UserMaintained); // U
- setIsStdUserWorkflow (false);
- setSeqNo (10); // 10
- }
- } // MPPOrderNodeNext
-
- /**
- * Default Constructor
- * @param ctx context
- * @param rs result set to load info from
- * @param trxName transaction
- */
- public MPPOrderNodeNext (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- } // MPPOrderNodeNext
-
- /**
- * Parent constructor
- * @param parent patent
- * @param PP_OrderNext_ID Next
- */
- public MPPOrderNodeNext (MPPOrderNode parent, int PP_Order_Next_ID)
- {
- this(parent.getCtx(), 0, parent.get_TrxName());
- setClientOrg(parent);
- setPP_Order_ID(parent.getPP_Order_ID());
- setPP_Order_Node_ID(parent.get_ID());
- setPP_Order_Next_ID(PP_Order_Next_ID);
- } // MPPOrderNodeNext
-
- /**
- * Peer constructor
- * @param wfNodeNext
- * @param parent
- * @param trxName
- */
- public MPPOrderNodeNext (MWFNodeNext wfNodeNext, MPPOrderNode parent)
- {
- this(parent, 0);
- //
- setAD_WF_Node_ID(wfNodeNext.getAD_WF_Node_ID());
- setAD_WF_Next_ID(wfNodeNext.getAD_WF_Next_ID());
- setDescription(wfNodeNext.getDescription());
- setEntityType(wfNodeNext.getEntityType());
- setIsStdUserWorkflow(wfNodeNext.isStdUserWorkflow());
- setSeqNo(wfNodeNext.getSeqNo());
- setTransitionCode(wfNodeNext.getTransitionCode());
- }
-
- /** From (Split Eleemnt) is AND */
- public Boolean m_fromSplitAnd = null;
- /** To (Join Element) is AND */
- public Boolean m_toJoinAnd = null;
-
- @Override
- public String toString()
- {
- StringBuffer sb = new StringBuffer ("MPPOrderNodeNext[");
- sb.append(getSeqNo())
- .append(":Node=").append(getPP_Order_Node_ID()).append("->Next=").append(getPP_Order_Next_ID());
- //if (m_conditions != null)
- // sb.append(",#").append(m_conditions.length);
- if (getDescription() != null && getDescription().length() > 0)
- sb.append(",").append(getDescription());
- sb.append ("]");
- return sb.toString ();
- } // toString
-
- /**
- * Split Element is AND
- * @return Returns the from Split And.
- */
- public boolean isFromSplitAnd()
- {
- if (m_fromSplitAnd != null)
- return m_fromSplitAnd.booleanValue();
- return false;
- } // getFromSplitAnd
-
- /**
- * Split Element is AND.
- * Set by MPPOrderNode.loadNodes
- * @param fromSplitAnd The from Split And
- */
- public void setFromSplitAnd (boolean fromSplitAnd)
- {
- m_fromSplitAnd = new Boolean(fromSplitAnd);
- } // setFromSplitAnd
-
- /**
- * Join Element is AND
- * @return Returns the to Join And.
- */
- public boolean isToJoinAnd ()
- {
- if (m_toJoinAnd == null && getPP_Order_Next_ID() != 0)
- {
- MPPOrderNode next = MPPOrderNode.get(getCtx(), getPP_Order_Next_ID());
- setToJoinAnd(MPPOrderNode.JOINELEMENT_AND.equals(next.getJoinElement()));
- }
- if (m_toJoinAnd != null)
- return m_toJoinAnd.booleanValue();
- return false;
- } // getToJoinAnd
-
- /**
- * Join Element is AND.
- * @param toJoinAnd The to Join And to set.
- */
- private void setToJoinAnd (boolean toJoinAnd)
- {
- m_toJoinAnd = new Boolean(toJoinAnd);
- } // setToJoinAnd
-
- public void setPP_Order_Next_ID()
- {
- final String sql = "SELECT PP_Order_Node_ID FROM PP_Order_Node "
- + " WHERE PP_Order_ID=? AND AD_WF_Node_ID=? AND AD_Client_ID=?";
- int id = DB.getSQLValueEx(get_TrxName(), sql, getPP_Order_ID(), getAD_WF_Next_ID(), getAD_Client_ID());
- setPP_Order_Next_ID(id > 0 ? id : 0);
- }
-} // MPPOrderNodeNext
diff --git a/base/src/org/eevolution/model/MPPOrderNodeProduct.java b/base/src/org/eevolution/model/MPPOrderNodeProduct.java
deleted file mode 100644
index df91d68de5..0000000000
--- a/base/src/org/eevolution/model/MPPOrderNodeProduct.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Properties;
-
-import org.adempiere.exceptions.AdempiereException;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-
-/**
- * Order Node Product Model
- *
- * @author Victor Perez www.e-evolution.com
- * @author Teo Sarca, www.arhipac.ro
- */
-public class MPPOrderNodeProduct extends X_PP_Order_Node_Product
-{
- private static final long serialVersionUID = 1L;
-
- public MPPOrderNodeProduct (Properties ctx, int PP_WF_Order_Product_ID, String trxName)
- {
- super (ctx, PP_WF_Order_Product_ID, trxName);
- if (PP_WF_Order_Product_ID == 0)
- {
- }
- }
-
- public MPPOrderNodeProduct (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-
- /**
- * Create a new MPPOrderNodeProduct based in MPPWFNodeProduct
- * @param np
- * @param PP_Order_Node order node
- */
- public MPPOrderNodeProduct (MPPWFNodeProduct np, MPPOrderNode PP_Order_Node)
- {
- this(PP_Order_Node.getCtx(), 0, PP_Order_Node.get_TrxName());
- setClientOrg(PP_Order_Node);
- setSeqNo(np.getSeqNo());
- setIsActive(np.isActive());
- setM_Product_ID(np.getM_Product_ID());
- setQty(np.getQty());
- setIsSubcontracting(np.isSubcontracting());
- setYield(np.getYield());
- //
- setPP_Order_ID(PP_Order_Node.getPP_Order_ID());
- setPP_Order_Workflow_ID(PP_Order_Node.getPP_Order_Workflow_ID());
- setPP_Order_Node_ID(PP_Order_Node.get_ID());
- }
-
- @Override
- protected boolean beforeSave(boolean newRecord)
- {
- if(getQty().equals(Env.ZERO) && isSubcontracting())
- {
- setQty(Env.ONE);
- }
-
- //
- return true;
- }
-}
diff --git a/base/src/org/eevolution/model/MPPOrderWorkflow.java b/base/src/org/eevolution/model/MPPOrderWorkflow.java
deleted file mode 100644
index 04dc81363c..0000000000
--- a/base/src/org/eevolution/model/MPPOrderWorkflow.java
+++ /dev/null
@@ -1,593 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
- * or via info@compiere.org or http://www.compiere.org/license.html *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Properties;
-import java.util.logging.Level;
-
-import org.compiere.model.MClient;
-import org.compiere.model.MDocType;
-import org.compiere.model.MOrder;
-import org.compiere.model.Query;
-import org.compiere.util.CCache;
-import org.compiere.util.Env;
-import org.compiere.wf.MWorkflow;
-
-/**
- * PP Order WorkFlow Model
- *
- * @author Jorg Janke
- * @version $Id: MPPOrderWorkflow.java,v 1.4 2006/07/30 00:51:05 jjanke Exp $
- *
- * @author Teo Sarca, http://www.arhipac.ro
- */
-public class MPPOrderWorkflow extends X_PP_Order_Workflow
-{
- private static final long serialVersionUID = 1L;
-
- /**
- * Get Workflow from Cache
- * @param ctx context
- * @param AD_Workflow_ID id
- * @return workflow
- */
- public static MPPOrderWorkflow get (Properties ctx, int PP_Order_Workflow_ID)
- {
- Integer key = new Integer (PP_Order_Workflow_ID);
- MPPOrderWorkflow retValue = (MPPOrderWorkflow)s_cache.get(key);
- if (retValue != null)
- return retValue;
- retValue = new MPPOrderWorkflow (ctx, PP_Order_Workflow_ID, null);
- if (retValue.get_ID() != 0)
- s_cache.put(key, retValue);
- return retValue;
- } // get
-
- /** Single Cache */
- private static CCache s_cache = new CCache(Table_Name, 20);
-
- /**************************************************************************
- * Create/Load Workflow
- * @param ctx Context
- * @param PP_Order_Workflow_ID ID
- * @param trxName transaction
- */
- public MPPOrderWorkflow (Properties ctx, int PP_Order_Workflow_ID, String trxName)
- {
- super (ctx, PP_Order_Workflow_ID, trxName);
- if (PP_Order_Workflow_ID == 0)
- {
- // setPP_Order_Workflow_ID (0);
- // setValue (null);
- // setName (null);
- setAccessLevel (ACCESSLEVEL_Organization);
- setAuthor (MClient.get(ctx).getName());
- setDurationUnit(DURATIONUNIT_Day);
- setDuration (1);
- setEntityType (ENTITYTYPE_UserMaintained); // U
- setIsDefault (false);
- setPublishStatus (PUBLISHSTATUS_UnderRevision); // U
- setVersion (0);
- setCost (Env.ZERO);
- setWaitingTime (0);
- setWorkingTime (0);
- }
- loadNodes();
- } // MPPOrderWorkflow
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set
- * @param trxName transaction
- */
- public MPPOrderWorkflow (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- loadNodes();
- } // Workflow
-
- /**
- * Peer constructor
- * @param workflow
- * @param PP_Order_ID
- * @param trxName
- */
- public MPPOrderWorkflow (MWorkflow workflow, int PP_Order_ID, String trxName)
- {
- this(workflow.getCtx(), 0, trxName);
- setPP_Order_ID(PP_Order_ID);
- //
- setValue(workflow.getValue());
- setWorkflowType(workflow.getWorkflowType());
- setQtyBatchSize(workflow.getQtyBatchSize());
- setName(workflow.getName());
- setAccessLevel(workflow.getAccessLevel());
- setAuthor(workflow.getAuthor());
- setDurationUnit(workflow.getDurationUnit());
- setDuration(workflow.getDuration());
- setEntityType(workflow.getEntityType());
- setIsDefault(workflow.isDefault());
- setPublishStatus(workflow.getPublishStatus());
- setVersion(workflow.getVersion());
- setCost(workflow.getCost());
- setWaitingTime(workflow.getWaitingTime());
- setWorkingTime(workflow.getWorkingTime());
- setAD_WF_Responsible_ID(workflow.getAD_WF_Responsible_ID());
- setAD_Workflow_ID(workflow.getAD_Workflow_ID());
- setLimit(workflow.getLimit());
- setPriority(workflow.getPriority());
- setValidateWorkflow(workflow.getValidateWorkflow());
- setS_Resource_ID(workflow.getS_Resource_ID());
- setQueuingTime(workflow.getQueuingTime());
- setSetupTime(workflow.getSetupTime());
- setMovingTime(workflow.getMovingTime());
- setProcessType(workflow.getProcessType());
- setAD_Table_ID(workflow.getAD_Table_ID());
- setAD_WF_Node_ID(workflow.getAD_WF_Node_ID());
- setAD_WorkflowProcessor_ID(workflow.getAD_WorkflowProcessor_ID());
- setDescription(workflow.getDescription());
- setValidFrom(workflow.getValidFrom());
- setValidTo(workflow.getValidTo());
- }
-
- /** WF Nodes */
- private List m_nodes = null;
- /** Manufacturing Order */
- private MPPOrder m_order = null;
-
- /**
- * Load All Nodes
- */
- protected void loadNodes()
- {
- final String whereClause = MPPOrderNode.COLUMNNAME_PP_Order_Workflow_ID+"=?";
- m_nodes = new Query(getCtx(), MPPOrderNode.Table_Name, whereClause, get_TrxName())
- .setParameters(new Object[]{get_ID()})
- .setOnlyActiveRecords(true)
- .list();
- log.fine("#" + m_nodes.size());
- } // loadNodes
-
- /**
- * Get Number of Nodes
- * @return number of nodes
- */
- public int getNodeCount()
- {
- return m_nodes.size();
- } // getNextNodeCount
-
- /**
- * Get the nodes
- * @param ordered ordered array
- * @param AD_Client_ID for client
- * @return array of nodes
- */
- public MPPOrderNode[] getNodes(boolean ordered, int AD_Client_ID)
- {
- if (ordered)
- {
- return getNodesInOrder(AD_Client_ID);
- }
- //
- ArrayList list = new ArrayList();
- for (MPPOrderNode node : m_nodes)
- {
- if (node.getAD_Client_ID() == 0 || node.getAD_Client_ID() == AD_Client_ID)
- {
- list.add(node);
- }
- }
- return list.toArray(new MPPOrderNode [list.size()]);
- } // getNodes
-
- /**
- * Get the first node
- * @return array of next nodes
- */
- public MPPOrderNode getFirstNode()
- {
- return getNode (getPP_Order_Node_ID());
- } // getFirstNode
-
- /**
- * Get Node with given ID
- * @param PP_Order_Node_ID ID
- * @return node or null
- */
- public MPPOrderNode getNode (int PP_Order_Node_ID)
- {
- for (MPPOrderNode node : m_nodes)
- {
- if (node.getPP_Order_Node_ID() == PP_Order_Node_ID)
- {
- return node;
- }
- }
- return null;
- } // getNode
-
- /**
- * Get the next nodes
- * @param PP_Order_Node_ID ID
- * @param AD_Client_ID for client
- * @return array of next nodes or null
- */
- public MPPOrderNode[] getNextNodes (int PP_Order_Node_ID, int AD_Client_ID)
- {
- MPPOrderNode node = getNode(PP_Order_Node_ID);
- if (node == null || node.getNextNodeCount() == 0)
- {
- return null;
- }
- //
- ArrayList list = new ArrayList();
- for (MPPOrderNodeNext nextTr : node.getTransitions(AD_Client_ID))
- {
- MPPOrderNode next = getNode (nextTr.getPP_Order_Next_ID());
- if (next != null)
- {
- list.add(next);
- }
- }
-
- // Return Nodes
- return list.toArray(new MPPOrderNode [list.size()]);
- } // getNextNodes
-
- /**
- * Get The Nodes in Sequence Order
- * @param AD_Client_ID client
- * @return Nodes in sequence
- */
- private MPPOrderNode[] getNodesInOrder(int AD_Client_ID)
- {
- ArrayList list = new ArrayList();
- addNodesSF (list, getPP_Order_Node_ID(), AD_Client_ID); // start with first
- // Remaining Nodes
- if (m_nodes.size() != list.size())
- {
- // Add Stand alone
- for (int n = 0; n < m_nodes.size(); n++)
- {
- MPPOrderNode node = (MPPOrderNode)m_nodes.get(n);
- if (node.getAD_Client_ID() == 0 || node.getAD_Client_ID() == AD_Client_ID)
- {
- boolean found = false;
- for (int i = 0; i < list.size(); i++)
- {
- MPPOrderNode existing = (MPPOrderNode)list.get(i);
- if (existing.getPP_Order_Node_ID() == node.getPP_Order_Node_ID())
- {
- found = true;
- break;
- }
- }
- if (!found)
- {
- log.log(Level.WARNING, "Added Node w/o transition: " + node);
- list.add(node);
- }
- }
- }
- }
- //
- MPPOrderNode[] nodeArray = new MPPOrderNode [list.size()];
- list.toArray(nodeArray);
- return nodeArray;
- } // getNodesInOrder
-
- /**
- * Add Nodes recursively (depth first) to Ordered List
- * @param list list to add to
- * @param PP_Order_Node_ID start node id
- * @param AD_Client_ID for client
- */
- private void addNodesDF (ArrayList list, int PP_Order_Node_ID, int AD_Client_ID)
- {
- MPPOrderNode node = getNode (PP_Order_Node_ID);
- if (node != null && !list.contains(node))
- {
- list.add(node);
- // Get Dependent
- MPPOrderNodeNext[] nexts = node.getTransitions(AD_Client_ID);
- for (int i = 0; i < nexts.length; i++)
- addNodesDF (list, nexts[i].getPP_Order_Next_ID(), AD_Client_ID);
- }
- } // addNodesDF
-
- /**
- * Add Nodes recursively (sibling first) to Ordered List
- * @param list list to add to
- * @param PP_Order_Node_ID start node id
- * @param AD_Client_ID for client
- */
- private void addNodesSF (ArrayList list, int PP_Order_Node_ID, int AD_Client_ID)
- {
- MPPOrderNode node = getNode (PP_Order_Node_ID);
- if (node != null
- && (node.getAD_Client_ID() == 0 || node.getAD_Client_ID() == AD_Client_ID))
- {
- if (!list.contains(node))
- list.add(node);
- MPPOrderNodeNext[] nexts = node.getTransitions(AD_Client_ID);
- for (int i = 0; i < nexts.length; i++)
- {
- MPPOrderNode child = getNode (nexts[i].getPP_Order_Next_ID());
- if (child.getAD_Client_ID() == 0
- || child.getAD_Client_ID() == AD_Client_ID)
- {
- if (!list.contains(child))
- list.add(child);
- }
- }
- // Remainder Nodes not conncetd
- for (int i = 0; i < nexts.length; i++)
- addNodesSF (list, nexts[i].getPP_Order_Next_ID(), AD_Client_ID);
- }
- } // addNodesSF
-
- /**************************************************************************
- * Get first transition (Next Node) of ID
- * @param PP_Order_Node_ID id
- * @param AD_Client_ID for client
- * @return next PP_Order_Node_ID or 0
- */
- public int getNext (int PP_Order_Node_ID, int AD_Client_ID)
- {
- MPPOrderNode[] nodes = getNodesInOrder(AD_Client_ID);
- for (int i = 0; i < nodes.length; i++)
- {
- if (nodes[i].getPP_Order_Node_ID() == PP_Order_Node_ID)
- {
- MPPOrderNodeNext[] nexts = nodes[i].getTransitions(AD_Client_ID);
- if (nexts.length > 0)
- {
- return nexts[0].getPP_Order_Next_ID();
- }
- return 0;
- }
- }
- return 0;
- } // getNext
-
- /**
- * Get Transitions (NodeNext) of ID
- * @param PP_Order_Node_ID id
- * @param AD_Client_ID for client
- * @return array of next nodes
- */
- public MPPOrderNodeNext[] getNodeNexts (int PP_Order_Node_ID, int AD_Client_ID)
- {
- MPPOrderNode[] nodes = getNodesInOrder(AD_Client_ID);
- for (int i = 0; i < nodes.length; i++)
- {
- if (nodes[i].getPP_Order_Node_ID() == PP_Order_Node_ID)
- {
- return nodes[i].getTransitions(AD_Client_ID);
- }
- }
- return null;
- } // getNext
-
- /**
- * Get (first) Previous Node of ID
- * @param PP_Order_Node_ID id
- * @param AD_Client_ID for client
- * @return next PP_Order_Node_ID or 0
- */
- public int getPrevious (int PP_Order_Node_ID, int AD_Client_ID)
- {
- MPPOrderNode[] nodes = getNodesInOrder(AD_Client_ID);
- for (int i = 0; i < nodes.length; i++)
- {
- if (nodes[i].getPP_Order_Node_ID() == PP_Order_Node_ID)
- {
- if (i > 0)
- return nodes[i-1].getPP_Order_Node_ID();
- return 0;
- }
- }
- return 0;
- } // getPrevious
-
- /**
- * Get very Last Node
- * @param AD_Client_ID for client
- * @return next PP_Order_Node_ID or 0
- */
- public int getNodeLastID (int AD_Client_ID)
- {
- MPPOrderNode[] nodes = getNodesInOrder(AD_Client_ID);
- if (nodes.length > 0)
- {
- return nodes[nodes.length-1].getPP_Order_Node_ID();
- }
- return 0;
- } // getLast
-
- /**
- * Get very Last Node
- * @param AD_Client_ID for client
- * @return next PP_Order_Node_ID or 0
- */
- public MPPOrderNode getLastNode (int AD_Client_ID)
- {
- MPPOrderNode[] nodes = getNodesInOrder(AD_Client_ID);
- if (nodes.length > 0)
- {
- return nodes[nodes.length-1];
- }
- return null;
- } // getLast
-
- /**
- * Is this the first Node
- * @param PP_Order_Node_ID id
- * @param AD_Client_ID for client
- * @return true if first node
- */
- public boolean isFirst (int PP_Order_Node_ID, int AD_Client_ID)
- {
- return PP_Order_Node_ID == getPP_Order_Node_ID();
- } // isFirst
-
- /**
- * Is this the last Node
- * @param PP_Order_Node_ID id
- * @param AD_Client_ID for client
- * @return true if last node
- */
- public boolean isLast (int PP_Order_Node_ID, int AD_Client_ID)
- {
- MPPOrderNode[] nodes = getNodesInOrder(AD_Client_ID);
- return PP_Order_Node_ID == nodes[nodes.length-1].getPP_Order_Node_ID();
- } // isLast
-
- /**
- * String Representation
- * @return info
- */
- public String toString ()
- {
- StringBuffer sb = new StringBuffer ("MPPOrderWorkflow[");
- sb.append(get_ID()).append("-").append(getName())
- .append ("]");
- return sb.toString ();
- } // toString
-
- @Override
- protected boolean afterSave (boolean newRecord, boolean success)
- {
- log.fine("Success=" + success);
- if (success && newRecord)
- {
- // save all nodes -- Creating new Workflow
- MPPOrderNode[] nodes = getNodesInOrder(0);
- for (int i = 0; i < nodes.length; i++)
- nodes[i].saveEx(get_TrxName());
- }
-
- return success;
- } // afterSave
-
- /**
- * Get Duration Base in Seconds
- * @return duration unit in seconds
- */
- public long getDurationBaseSec ()
- {
- if (getDurationUnit() == null)
- return 0;
- else if (DURATIONUNIT_Second.equals(getDurationUnit()))
- return 1;
- else if (DURATIONUNIT_Minute.equals(getDurationUnit()))
- return 60;
- else if (DURATIONUNIT_Hour.equals(getDurationUnit()))
- return 3600;
- else if (DURATIONUNIT_Day.equals(getDurationUnit()))
- return 86400;
- else if (DURATIONUNIT_Month.equals(getDurationUnit()))
- return 2592000;
- else if (DURATIONUNIT_Year.equals(getDurationUnit()))
- return 31536000;
- return 0;
- } // getDurationBaseSec
-
- /**
- * Get Duration CalendarField
- * @return Calendar.MINUTE, etc.
- */
- public int getDurationCalendarField()
- {
- if (getDurationUnit() == null)
- return Calendar.MINUTE;
- else if (DURATIONUNIT_Second.equals(getDurationUnit()))
- return Calendar.SECOND;
- else if (DURATIONUNIT_Minute.equals(getDurationUnit()))
- return Calendar.MINUTE;
- else if (DURATIONUNIT_Hour.equals(getDurationUnit()))
- return Calendar.HOUR;
- else if (DURATIONUNIT_Day.equals(getDurationUnit()))
- return Calendar.DAY_OF_YEAR;
- else if (DURATIONUNIT_Month.equals(getDurationUnit()))
- return Calendar.MONTH;
- else if (DURATIONUNIT_Year.equals(getDurationUnit()))
- return Calendar.YEAR;
- return Calendar.MINUTE;
- } // getDurationCalendarField
-
-
- /**
- * Complete Activities
- * @param activity
- * @param movementdate
- */
- public void closeActivities(MPPOrderNode activity, Timestamp movementdate, boolean milestone)
- {
-
- MPPOrderWorkflow order_workflow = activity.getMPPOrderWorkflow();
- MPPOrder order = order_workflow.getMPPOrder();
- int nodeId = activity.get_ID();
- while(nodeId != 0)
- {
- MPPOrderNode node = MPPOrderNode.get(getCtx(), nodeId);
- //break the cycle
- if(node.isMilestone() && milestone)
- return;
- if(!MPPOrderNode.DOCSTATUS_Closed.equals(node.getDocStatus()))
- {
-
- MPPCostCollector.createCollector (
- order, //MPPOrder
- order.getM_Product_ID(), //M_Product_ID
- order.getM_Locator_ID(), //M_Locator_ID
- order.getM_AttributeSetInstance_ID(), //M_AttributeSetInstance_ID
- order.getS_Resource_ID(), //S_Resource_ID
- 0, //PP_Order_BOMLine_ID
- node.get_ID(), //PP_Order_Node_ID
- MDocType.getDocType(MDocType.DOCBASETYPE_ManufacturingOrder), //C_DocType_ID,
- MPPCostCollector.COSTCOLLECTORTYPE_ActivityControl, //Activity Control
- movementdate, //MovementDate
- order.getQtyOrdered(), Env.ZERO, Env.ZERO, //qty,scrap,reject
- node.getSetupTimeReal(),node.getDurationReal(), //durationSetup,duration
- get_TrxName() //trxName
- );
- }
- nodeId = order_workflow.getPrevious(node.get_ID(), order_workflow.getAD_Client_ID());
- }
- }
-
- /**
- * Get Parent
- * @return MPPOrder
- */
- public MPPOrder getMPPOrder()
- {
- if (m_order == null)
- m_order = new MPPOrder(getCtx(), getPP_Order_ID(), get_TrxName());
- return m_order;
- } // getParent
-
-
-} // MPPOrderWorkflow_ID
diff --git a/base/src/org/eevolution/model/MPPProductPlanning.java b/base/src/org/eevolution/model/MPPProductPlanning.java
index bf7ef3df90..c65b9438b2 100644
--- a/base/src/org/eevolution/model/MPPProductPlanning.java
+++ b/base/src/org/eevolution/model/MPPProductPlanning.java
@@ -169,14 +169,6 @@ public class MPPProductPlanning extends X_PP_Product_Planning
return plant_id;
}
- /**
- * @return Qty On Hand
- */
- public BigDecimal getQtyOnHand()
- {
- return MPPMRP.getQtyOnHand(getCtx(), getM_Warehouse_ID(), getM_Product_ID(), get_TrxName());
- }
-
@Override
protected boolean beforeSave(boolean newRecord)
{
diff --git a/base/src/org/eevolution/model/MPPWFNodeAsset.java b/base/src/org/eevolution/model/MPPWFNodeAsset.java
deleted file mode 100644
index 73ffc66975..0000000000
--- a/base/src/org/eevolution/model/MPPWFNodeAsset.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Collection;
-import java.util.Properties;
-
-import org.compiere.model.Query;
-import org.compiere.util.CCache;
-
-/**
- * Workflow Node Asset Model
- *
- * @author Victor Perez www.e-evolution.com
- * @author Teo Sarca, www.arhipac.ro
- */
-public class MPPWFNodeAsset extends X_PP_WF_Node_Asset
-{
- private static final long serialVersionUID = 1L;
-
- /** Cache */
- private static CCache>
- s_cache = new CCache>(Table_Name, 20);
-
- /**
- * @return array of node assets
- */
- public static Collection forAD_WF_Node_ID(Properties ctx, int AD_WF_Node_ID)
- {
- Collection lines = s_cache.get(AD_WF_Node_ID);
- if (lines != null)
- {
- return lines;
- }
-
- final String whereClause = COLUMNNAME_AD_WF_Node_ID+"=?";
- lines = new Query(ctx, Table_Name, whereClause, null)
- .setParameters(new Object[]{AD_WF_Node_ID})
- .setOnlyActiveRecords(true)
- .setOrderBy(COLUMNNAME_SeqNo)
- .list();
- s_cache.put(AD_WF_Node_ID, lines);
- return lines;
- }
-
- public MPPWFNodeAsset (Properties ctx, int PP_WF_Node_Asset_ID, String trxName)
- {
- super (ctx, PP_WF_Node_Asset_ID, trxName);
- if (PP_WF_Node_Asset_ID == 0)
- {
- }
- }
-
- public MPPWFNodeAsset (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-}
diff --git a/base/src/org/eevolution/model/MPPWFNodeProduct.java b/base/src/org/eevolution/model/MPPWFNodeProduct.java
deleted file mode 100644
index 5f8405f493..0000000000
--- a/base/src/org/eevolution/model/MPPWFNodeProduct.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.sql.ResultSet;
-import java.util.Collection;
-import java.util.Properties;
-
-import org.compiere.model.Query;
-import org.compiere.util.CCache;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-
-/**
- * Workflow Node Product Model
- *
- * @author Victor Perez www.e-evolution.com
- * @author Teo Sarca, www.arhipac.ro
- */
-public class MPPWFNodeProduct extends X_PP_WF_Node_Product
-{
- private static final long serialVersionUID = 1L;
-
- /** Cache */
- private static CCache>
- s_cache = new CCache>(Table_Name, 20);
-
- /**
- * @return array of node products
- */
- public static Collection forAD_WF_Node_ID(Properties ctx, int AD_WF_Node_ID)
- {
- Collection lines = s_cache.get(AD_WF_Node_ID);
- if (lines != null)
- {
- return lines;
- }
-
- final String whereClause = COLUMNNAME_AD_WF_Node_ID+"=?";
- lines = new Query(ctx, Table_Name, whereClause, null)
- .setParameters(new Object[]{AD_WF_Node_ID})
- .setOnlyActiveRecords(true)
- .setOrderBy(COLUMNNAME_SeqNo)
- .list();
- s_cache.put(AD_WF_Node_ID, lines);
- return lines;
- }
-
- public MPPWFNodeProduct (Properties ctx, int PP_WF_Node_Product_ID, String trxName)
- {
- super (ctx, PP_WF_Node_Product_ID, trxName);
- if (PP_WF_Node_Product_ID == 0)
- {
- }
- }
-
- public MPPWFNodeProduct (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- }
-
- @Override
- protected boolean beforeSave(boolean newRecord)
- {
- if (getSeqNo() == 0)
- {
- final String sql = "SELECT COALESCE(MAX("+COLUMNNAME_SeqNo+"),0)+10 FROM "+Table_Name+" WHERE "
- +" "+COLUMNNAME_AD_WF_Node_ID+"=?"
- +" AND "+COLUMNNAME_PP_WF_Node_Product_ID+"<>?";
- int seqNo = DB.getSQLValueEx(get_TrxName(), sql, getAD_WF_Node_ID(), get_ID());
- setSeqNo(seqNo);
- }
- if(getQty().equals(Env.ZERO) && isSubcontracting())
- {
- setQty(Env.ONE);
- }
-
- //
- return true;
- }
-} // MPPWFNodeProduct
diff --git a/base/src/org/eevolution/model/MQMSpecification.java b/base/src/org/eevolution/model/MQMSpecification.java
deleted file mode 100644
index e130d44be8..0000000000
--- a/base/src/org/eevolution/model/MQMSpecification.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.math.BigDecimal;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.util.ArrayList;
-import java.util.Properties;
-import java.util.logging.Level;
-
-import org.compiere.model.MAttribute;
-import org.compiere.model.MAttributeInstance;
-import org.compiere.model.MAttributeSet;
-import org.compiere.model.MAttributeSetInstance;
-import org.compiere.util.DB;
-
-/**
- * Forcast Line Model
- *
- * @author Victor Perez www.e-evolution.com
- * @version $Id: MQMSpecification.java,v 1.11 2005/05/17 05:29:52 vpj-cd vpj-cd $
- */
-public class MQMSpecification extends X_QM_Specification
-{
- /**
- * Standard Constructor
- * @param ctx context
- * @param M_ForecastLine_ID id
- */
- public MQMSpecification (Properties ctx, int QM_Specification_ID, String trxName)
- {
- super (ctx, QM_Specification_ID, trxName);
- if (QM_Specification_ID == 0)
- {
- }
-
- } // MQMSpecification
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set
- */
- public MQMSpecification (Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- } // MQMSpecification
-
- /** Lines */
- private MQMSpecificationLine[] m_lines = null;
-
- /**
- * Get Lines
- * @return array of lines
- */
- public MQMSpecificationLine[] getLines(String where)
- {
- if (m_lines != null)
- return m_lines;
-
- ArrayList list = new ArrayList();
- String sql = "SELECT * FROM QM_SpecificationLine WHERE QM_SpecificationLine_ID=? AND "+ where +" ORDER BY Line";
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement (sql, get_TrxName());
- pstmt.setInt (1, getQM_Specification_ID());
- ResultSet rs = pstmt.executeQuery ();
- while (rs.next ())
- list.add (new MQMSpecificationLine(getCtx(), rs, get_TrxName()));
- rs.close ();
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- log.log(Level.SEVERE, "getLines", e);
- }
- try
- {
- if (pstmt != null)
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- pstmt = null;
- }
- m_lines = new MQMSpecificationLine[list.size ()];
- list.toArray (m_lines);
- return m_lines;
- } // getLines
-
- public boolean isValid(int M_AttributeSetInstance_ID)
- {
- //MAttributeSet mas = MAttributeSet.get(getCtx(), getM_AttributeSet_ID());
-
-// Save Instance Attributes
-
- MAttributeSetInstance asi = new MAttributeSetInstance(getCtx(),M_AttributeSetInstance_ID, get_TrxName());
- MAttributeSet as = MAttributeSet.get(getCtx(),asi.getM_AttributeSet_ID());
- MAttribute[] attributes = as.getMAttributes(false);
- for (int i = 0; i < attributes.length; i++)
- {
-
- //MAttribute attribute = new MAttribute(getCtx(),0,null);
- MAttributeInstance instance = attributes[i].getMAttributeInstance (M_AttributeSetInstance_ID);
- MQMSpecificationLine[] lines = getLines(" M_Attribute_ID="+attributes[i].getM_Attribute_ID());
- for (int s = 0; s < lines.length; i++)
- {
- MQMSpecificationLine line = lines[s];
- if (MAttribute.ATTRIBUTEVALUETYPE_Number.equals(attributes[i].getAttributeValueType()))
- {
- BigDecimal objValue = instance.getValueNumber();
- if(!line.evaluate(objValue,instance.getValue()));
- return false;
- }
- else
- {
- String objValue = instance.getValue();
- if(!line.evaluate(objValue,instance.getValue()))
- return false;
- }
- //if(line.evaluate(mas.getValueNumber())
- }
- } // for all attributes
- return true;
- }
-
-} // MQMSpecification
diff --git a/base/src/org/eevolution/model/MQMSpecificationLine.java b/base/src/org/eevolution/model/MQMSpecificationLine.java
deleted file mode 100644
index f549f3f957..0000000000
--- a/base/src/org/eevolution/model/MQMSpecificationLine.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.model;
-
-import java.math.BigDecimal;
-import java.sql.ResultSet;
-import java.util.Properties;
-
-/**
- * Forcast Line Model
- *
- * @author Victor Perez www.e-evolution.com
- * @version $Id: MQMSpecificationLine.java,v 1.11 2005/05/17 05:29:52 vpj-cd Exp $
- */
-public class MQMSpecificationLine extends X_QM_SpecificationLine
-{
- /**
- * Standard Constructor
- * @param ctx context
- * @param M_ForecastLine_ID id
- */
- public MQMSpecificationLine (Properties ctx, int QM_SpecificationLine_ID, String trxName)
- {
- super (ctx, QM_SpecificationLine_ID, trxName);
- if (QM_SpecificationLine_ID == 0)
- {
- }
-
- } // MQMSpecification
-
-
- /**
- * Load Constructor
- * @param ctx context
- * @param rs result set
- */
- public MQMSpecificationLine(Properties ctx, ResultSet rs, String trxName)
- {
- super(ctx, rs, trxName);
- } // MQMSpecification
-
-
- /**
- * Evaluate Condition
- * @return true if true
- */
- public boolean evaluate (Object valueObj,String value1)
- {
- /*if (getAD_Column_ID() == 0)
- throw new IllegalStateException("No Column defined - " + this);
-
- PO po = activity.getPO();
- if (po == null || po.get_ID() == 0)
- throw new IllegalStateException("Could not evaluate " + po + " - " + this);
- //
- Object valueObj = po.get_ValueOfColumn(getAD_Column_ID());
- if (valueObj == null)
- valueObj = "";
- String value1 = getValue();
- if (value1 == null)
- value1 = "";
- String value2 = getValue2();
- if (value2 == null)
- value2 = "";
-
- String resultStr = "PO:{" + valueObj + "} " + getOperation() + " Condition:{" + value1 + "}";
- if (getOperation().equals(OPERATION_Sql))
- throw new IllegalArgumentException("SQL Operator not implemented yet: " + resultStr);
- if (getOperation().equals(OPERATION_X))
- resultStr += "{" + value2 + "}";*/
-
- boolean result = false;
- if (valueObj instanceof Number)
- result = compareNumber ((Number)valueObj, value1, getValue());
- else
- result = compareString(valueObj, value1, getValue());
- //
- //log.fine(resultStr + " -> " + result
- // + (m_numeric ? " (#)" : " ($)"));
- return result;
- } // evaluate
-
- /**
- * Compare Number
- * @param valueObj comparator
- * @return true if operation
- */
- private boolean compareNumber (Number valueObj, String value1, String value2)
- {
- BigDecimal valueObjB = null;
- BigDecimal value1B = null;
- BigDecimal value2B = null;
- try
- {
- if (valueObj instanceof BigDecimal)
- valueObjB = (BigDecimal)valueObj;
- else if (valueObj instanceof Integer)
- valueObjB = new BigDecimal (((Integer)valueObj).intValue());
- else
- valueObjB = new BigDecimal (String.valueOf(valueObj));
- }
- catch (Exception e)
- {
- log.fine("compareNumber - valueObj=" + valueObj + " - " + e.toString());
- return compareString(valueObj, value1, value2);
- }
- try
- {
- value1B = new BigDecimal (value1);
- }
- catch (Exception e)
- {
- log.fine("compareNumber - value1=" + value1 + " - " + e.toString());
- return compareString(valueObj, value1, value2);
- }
-
- String op = getOperation();
- if (OPERATION_Eq.equals(op))
- return valueObjB.compareTo(value1B) == 0;
- else if (OPERATION_Gt.equals(op))
- return valueObjB.compareTo(value1B) > 0;
- else if (OPERATION_GtEq.equals(op))
- return valueObjB.compareTo(value1B) >= 0;
- else if (OPERATION_Le.equals(op))
- return valueObjB.compareTo(value1B) < 0;
- else if (OPERATION_LeEq.equals(op))
- return valueObjB.compareTo(value1B) <= 0;
- else if (OPERATION_Like.equals(op))
- return valueObjB.compareTo(value1B) == 0;
- else if (OPERATION_NotEq.equals(op))
- return valueObjB.compareTo(value1B) != 0;
- //
- else if (OPERATION_Sql.equals(op))
- throw new IllegalArgumentException("SQL not Implemented");
- //
- else if (OPERATION_X.equals(op))
- {
- if (valueObjB.compareTo(value1B) < 0)
- return false;
- // To
- try
- {
- value2B = new BigDecimal (String.valueOf(value2));
- return valueObjB.compareTo(value2B) <= 0;
- }
- catch (Exception e)
- {
- log.fine("compareNumber - value2=" + value2 + " - " + e.toString());
- return false;
- }
- }
- //
- throw new IllegalArgumentException("Unknown Operation=" + op);
- } // compareNumber
-
- /**
- * Compare String
- * @param valueObj comparator
- * @return true if operation
- */
- private boolean compareString (Object valueObj, String value1S, String value2S)
- {
- //m_numeric = false;
- String valueObjS = String.valueOf(valueObj);
- //
- String op = getOperation();
- if (OPERATION_Eq.equals(op))
- return valueObjS.compareTo(value1S) == 0;
- else if (OPERATION_Gt.equals(op))
- return valueObjS.compareTo(value1S) > 0;
- else if (OPERATION_GtEq.equals(op))
- return valueObjS.compareTo(value1S) >= 0;
- else if (OPERATION_Le.equals(op))
- return valueObjS.compareTo(value1S) < 0;
- else if (OPERATION_LeEq.equals(op))
- return valueObjS.compareTo(value1S) <= 0;
- else if (OPERATION_Like.equals(op))
- return valueObjS.compareTo(value1S) == 0;
- else if (OPERATION_NotEq.equals(op))
- return valueObjS.compareTo(value1S) != 0;
- //
- else if (OPERATION_Sql.equals(op))
- throw new IllegalArgumentException("SQL not Implemented");
- //
- else if (OPERATION_X.equals(op))
- {
- if (valueObjS.compareTo(value1S) < 0)
- return false;
- // To
- return valueObjS.compareTo(value2S) <= 0;
- }
- //
- throw new IllegalArgumentException("Unknown Operation=" + op);
- } // compareString
-
-} // MForcastLine
diff --git a/base/src/org/eevolution/model/reasoner/CRPReasoner.java b/base/src/org/eevolution/model/reasoner/CRPReasoner.java
deleted file mode 100644
index 69df996944..0000000000
--- a/base/src/org/eevolution/model/reasoner/CRPReasoner.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-
-package org.eevolution.model.reasoner;
-
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import org.compiere.model.MResource;
-import org.compiere.model.MResourceType;
-import org.compiere.model.MResourceUnAvailable;
-import org.compiere.model.POResultSet;
-import org.compiere.model.Query;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.compiere.util.TimeUtil;
-import org.eevolution.model.MPPOrder;
-import org.eevolution.model.MPPOrderNode;
-
-
-/**
- * @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
- * @version 1.0, October 14th 2005
- *
- * @author Teo Sarca, http://www.arhipac.ro
- */
-public class CRPReasoner
-{
- public Properties getCtx()
- {
- return Env.getCtx();
- }
-
- private String getSQLDayRestriction(Timestamp dateTime, MResource r, List params)
- {
- Timestamp dayStart = r.getResourceType().getDayStart(dateTime);
- Timestamp dayEnd = r.getResourceType().getDayEnd(dateTime);
-
- String whereClause;
-
- //
- // Case 1: The time dependent process has already begun and ends at this day.
- whereClause = "(DateStartSchedule<=? AND DateFinishSchedule>=? AND DateFinishSchedule<=?)";
- params.add(dayStart);
- params.add(dayStart);
- params.add(dayEnd);
-
- //
- // Case 2: The time dependent process begins and ends at this day.
- whereClause += " OR (DateStartSchedule>=? AND DateStartSchedule<=?"
- +" AND DateFinishSchedule>=? AND DateFinishSchedule<=?)";
- params.add(dayStart);
- params.add(dayEnd);
- params.add(dayStart);
- params.add(dayEnd);
-
- //
- // Case 3: The time dependent process begins at this day and ends few days later.
- whereClause += " OR (DateStartSchedule>=? AND DateStartSchedule<=? AND DateFinishSchedule>=?)";
- params.add(dayStart);
- params.add(dayEnd);
- params.add(dayEnd);
-
- //
- // Case 4: The time dependent process has already begun and ends few days later.
- whereClause += " OR (DateStartSchedule<=? AND DateFinishSchedule>=?)";
- params.add(dayStart);
- params.add(dayEnd);
-
- return "("+whereClause+")";
- }
-
- public Query getPPOrdersNotCompletedQuery(int S_Resource_ID, String trxName)
- {
- ArrayList params = new ArrayList();
-
- StringBuffer whereClause = new StringBuffer();
-
- // For current AD_Client_ID (security)
- whereClause.append("AD_Client_ID=?");
- params.add(Env.getAD_Client_ID(getCtx()));
-
- // Skip voided, reversed and closed orders:
- whereClause.append(" AND ").append(MPPOrder.COLUMNNAME_DocStatus).append(" NOT IN (?,?,?)");
- params.add(MPPOrder.DOCSTATUS_Voided);
- params.add(MPPOrder.DOCSTATUS_Reversed);
- params.add(MPPOrder.DOCSTATUS_Closed);
-
-
- // For given resource (if any)
- if (S_Resource_ID > 0)
- {
- whereClause.append(" AND ").append(MPPOrder.COLUMNNAME_S_Resource_ID).append("=?");
- params.add(S_Resource_ID);
- }
-
- return new Query(getCtx(), MPPOrder.Table_Name, whereClause.toString(), trxName)
- .setParameters(params)
- .setOnlyActiveRecords(true)
- .setOrderBy(MPPOrder.COLUMNNAME_DatePromised);
- }
-
- public MPPOrder[] getPPOrders(Timestamp dateTime, MResource r)
- {
- if(!isAvailable(r, dateTime))
- {
- return new MPPOrder[0];
- }
-
- ArrayList params = new ArrayList();
- params.add(r.get_ID());
- final String whereClause =
- // Checks the requested resource id directly on order node, not on resource id of the order
- "EXISTS (SELECT 1 FROM PP_Order_Node WHERE "
- +" PP_Order_Node.PP_Order_ID=PP_Order.PP_Order_ID"
- +" AND S_Resource_ID=?"
- // ... and only the orders running on given day
- +" AND "+getSQLDayRestriction(dateTime, r, params)
- +")"
- + " AND AD_Client_ID=?";
- params.add(r.getAD_Client_ID());
-
- List list = new Query(r.getCtx(), MPPOrder.Table_Name, whereClause, null)
- .setParameters(params)
- .list();
- return list.toArray(new MPPOrder[list.size()]);
- }
-
- public MPPOrderNode[] getPPOrderNodes(Timestamp dateTime, MResource r)
- {
- if(!isAvailable(r, dateTime))
- {
- return new MPPOrderNode[0];
- }
-
- ArrayList params = new ArrayList();
- String whereClause = MPPOrderNode.COLUMNNAME_S_Resource_ID+"=? AND AD_Client_ID=?";
- params.add(r.get_ID());
- params.add(r.getAD_Client_ID());
-
- whereClause += " AND "+getSQLDayRestriction(dateTime, r, params);
-
- List list = new Query(r.getCtx(), MPPOrderNode.Table_Name, whereClause, null)
- .setParameters(params)
- .list();
- return list.toArray(new MPPOrderNode[list.size()]);
- }
-
- public boolean isAvailable(MResource r, Timestamp dateTime)
- {
- MResourceType t = MResourceType.get(Env.getCtx(), r.getS_ResourceType_ID());
- return t.isDayAvailable(dateTime) && !MResourceUnAvailable.isUnAvailable(r, dateTime);
- }
-
- public boolean isAvailable(MResource r)
- {
- return r.getResourceType().isAvailable();
- }
-
- /**
- * Get Next/Previous Available Date
- * @param t
- * @param dateTime
- * @param isScheduleBackward
- * @return
- */
- private Timestamp getAvailableDate(MResourceType t, Timestamp dateTime, boolean isScheduleBackward)
- {
- Timestamp date = dateTime;
- int direction = isScheduleBackward ? -1 : +1;
- for (int i = 0; i <= 7; i++)
- {
- date = TimeUtil.addDays(date, i * direction);
- if (t.isDayAvailable(date))
- {
- break;
- }
- }
- return date;
- }
-
- /**
- * @param r resource
- * @param dateTime
- * @return next available date
- */
- public Timestamp getAvailableDate(MResource r, Timestamp dateTime, boolean isScheduleBackward)
- {
- MResourceType t = r.getResourceType();
- Timestamp date = dateTime;
- ArrayList params = new ArrayList();
- String whereClause;
- String orderByClause;
- int direction;
- if (isScheduleBackward)
- {
- whereClause = MResourceUnAvailable.COLUMNNAME_DateFrom+" <= ?";
- params.add(date);
- orderByClause = MResourceUnAvailable.COLUMNNAME_DateFrom+" DESC";
- direction = 1;
- }
- else
- {
- whereClause = MResourceUnAvailable.COLUMNNAME_DateTo+" >= ?";
- params.add(date);
- orderByClause = MResourceUnAvailable.COLUMNNAME_DateTo;
- direction = -1;
- }
-
- whereClause += " AND "+MResourceUnAvailable.COLUMNNAME_S_Resource_ID+"=? AND AD_Client_ID=?";
- params.add(r.get_ID());
- params.add(r.getAD_Client_ID());
-
- POResultSet rs = new Query(r.getCtx(), MResourceUnAvailable.Table_Name, whereClause, null)
- .setOrderBy(orderByClause)
- .setParameters(params)
- .scroll();
- try
- {
- while(rs.hasNext())
- {
- MResourceUnAvailable rua = rs.next();
- if (rua.isUnAvailable(date))
- {
- date = TimeUtil.addDays(rua.getDateTo(), 1 * direction);
- }
- date = getAvailableDate(t, dateTime, isScheduleBackward);
- }
- }
- finally
- {
- DB.close(rs);
- }
- //
- date = getAvailableDate(t, dateTime, isScheduleBackward);
- return date;
- }
-}
diff --git a/base/src/org/eevolution/model/reasoner/StorageReasoner.java b/base/src/org/eevolution/model/reasoner/StorageReasoner.java
deleted file mode 100644
index d8dd6c9412..0000000000
--- a/base/src/org/eevolution/model/reasoner/StorageReasoner.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.model.reasoner;
-
-import java.math.BigDecimal;
-
-import org.compiere.model.MAttribute;
-import org.compiere.model.MAttributeInstance;
-import org.compiere.model.MAttributeSet;
-import org.compiere.model.MAttributeSetInstance;
-import org.compiere.model.MLocator;
-import org.compiere.model.MProduct;
-import org.compiere.model.MStorage;
-import org.compiere.model.PO;
-import org.compiere.util.Env;
-import org.eevolution.model.MPPOrder;
-import org.eevolution.model.MPPOrderWorkflow;
-import org.eevolution.model.wrapper.BOMLineWrapper;
-
-/**
- * @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
- * @version 1.0, October 14th 2005
- */
-public class StorageReasoner {
-
- public StorageReasoner() {
- }
-
- public MPPOrderWorkflow getPPOrderWorkflow(MPPOrder order) {
-
- int[] ids = PO.getAllIDs("PP_Order_Workflow", "PP_Order_ID = "+order.get_ID(), null);
- if(ids.length != 1) {
-
- return null;
- }
-
- return new MPPOrderWorkflow(Env.getCtx(), ids[0], null);
- }
-
- public boolean equalAttributeInstanceValue(MAttributeInstance ai1, MAttributeInstance ai2) {
-
- if(ai1.getM_Attribute_ID() != ai2.getM_Attribute_ID()) {
-
- return false;
- }
-
- boolean equal = true;
-
-
- MAttribute a = new MAttribute(Env.getCtx(), ai1.getM_Attribute_ID(), null);
- if(MAttribute.ATTRIBUTEVALUETYPE_Number.equals(a.getAttributeValueType())) {
-
- if(ai1.getValue() == null) {
-
- equal = ai2.getValueNumber() == null;
- }
- else {
-
- equal = ai1.getValueNumber().compareTo(ai2.getValueNumber()) == 0;
- }
- }
- else if(MAttribute.ATTRIBUTEVALUETYPE_StringMax40.equals(a.getAttributeValueType())) {
-
- if(ai1.getValue() == null) {
-
- equal = ai2.getValue() == null;
- }
- else {
-
- equal = ai1.getValue().equals(ai2.getValue());
- }
- }
- else if(MAttribute.ATTRIBUTEVALUETYPE_List.equals(a.getAttributeValueType())) {
-
- equal = ai1.getM_AttributeValue_ID() == ai2.getM_AttributeValue_ID();
- }
-
- return equal;
- }
-
- public int[] getAttributeIDs(MAttributeSetInstance asi) {
-
- MAttributeSet as = new MAttributeSet(Env.getCtx(), asi.getM_AttributeSet_ID(), null);
- return getPOIDs(MAttribute.Table_Name, "M_Attribute_ID IN (SELECT M_Attribute_ID FROM M_AttributeUse WHERE M_AttributeSet_ID = "+as.get_ID()+")", null);
- }
-
- public BigDecimal getSumQtyAvailable(MProduct p, MAttributeSetInstance asi) {
-
- int[] ids = getPOIDs(MLocator.Table_Name, null, null);
-
- MStorage storage = null;
- Object[] obj = null;
-
- BigDecimal sumQtyAvailable = BigDecimal.ZERO;
-
- int count = 0;
- for(int i = 0; i < ids.length; i++) {
-
- storage = MStorage.get(Env.getCtx(), ids[i], p.get_ID(), asi.get_ID(), null);
- if(storage == null) {
-
- continue;
- }
- count++;
-
- sumQtyAvailable = sumQtyAvailable.add(storage.getQtyOnHand().subtract(storage.getQtyReserved()));
- }
-
- return sumQtyAvailable;
- }
-
- public BigDecimal getSumQtyRequired(BOMLineWrapper line) {
-
- MProduct p = new MProduct(Env.getCtx(), line.getM_Product_ID(), null);
- MAttributeSetInstance asi = new MAttributeSetInstance(Env.getCtx(), line.getM_AttributeSetInstance_ID(), null);
-
- return getSumQtyAvailable(p, asi).subtract(line.getQtyBOM()).negate();
- }
-
- public MStorage getAvailableQtyLocator(MProduct p, MAttributeSetInstance asi, BigDecimal qtyRequired) {
-
- int[] ids = getPOIDs(MLocator.Table_Name, null, null);
-
- MStorage storage = null;
-
- BigDecimal qtyAvailable = BigDecimal.ZERO;
- BigDecimal qtyOnHand = BigDecimal.ZERO;
- BigDecimal qtyReserved = BigDecimal.ZERO;
-
- for(int i = 0; i < ids.length; i++) {
-
- storage = MStorage.get(Env.getCtx(), ids[i], p.get_ID(), asi.get_ID(), null);
- if(storage != null) {
-
- qtyOnHand = (storage.getQtyOnHand() == null) ? BigDecimal.ZERO : storage.getQtyOnHand();
- qtyReserved = (storage.getQtyReserved () == null) ? BigDecimal.ZERO : storage.getQtyReserved ();
-
- qtyAvailable = qtyOnHand.subtract(qtyReserved);
- if(qtyRequired.compareTo(qtyAvailable) <= 0 && qtyOnHand.compareTo(BigDecimal.ZERO) > 0) {
-
- break;
- }
- else {
-
- storage = null;
- }
- }
- }
-
- return storage;
- }
-
- public boolean isQtyAvailable(BOMLineWrapper line) {
-
- MProduct p = new MProduct(Env.getCtx(), line.getM_Product_ID(), null);
- MAttributeSetInstance asi = new MAttributeSetInstance(Env.getCtx(), line.getM_AttributeSetInstance_ID(), null);
-
- return isQtyAvailable(p, asi);
- }
-
- public boolean isQtyAvailable(MProduct p, MAttributeSetInstance asi) {
-
- int[] ids = getPOIDs(MLocator.Table_Name, null, null);
-
- MStorage storage = null;
-
- BigDecimal sumQtyOnHand = BigDecimal.ZERO;
- BigDecimal sumQtyReserved = BigDecimal.ZERO;
-
- int count = 0;
- for(int i = 0; i < ids.length; i++) {
-
- storage = MStorage.get(Env.getCtx(), ids[i], p.get_ID(), asi.get_ID(), null);
- if(storage == null) {
-
- continue;
- }
- count++;
-
- sumQtyOnHand = sumQtyOnHand.add(storage.getQtyOnHand());
- sumQtyReserved = sumQtyReserved.add(storage.getQtyReserved());
- }
-
- double available = sumQtyOnHand.subtract(sumQtyReserved).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
- if(count == 0 || (available <= 0.00d)) {
-
- return false;
- }
-
- return true;
- }
-
- public int[] getPOIDs(String from, String where, String trx) {
-
- String client = "AD_Client_ID = "+Env.getAD_Client_ID(Env.getCtx());
- String w = null;
- if(where == null || where.length() == 0) {
-
- w = client;
- }
- else {
-
- w = where+" AND "+client;
- }
- return PO.getAllIDs(from, w, trx);
- }
-}
diff --git a/base/src/org/eevolution/model/wrapper/AbstractPOWrapper.java b/base/src/org/eevolution/model/wrapper/AbstractPOWrapper.java
deleted file mode 100644
index 5256bdf827..0000000000
--- a/base/src/org/eevolution/model/wrapper/AbstractPOWrapper.java
+++ /dev/null
@@ -1,508 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.model.wrapper;
-
-import java.sql.Timestamp;
-import java.util.Properties;
-
-import org.compiere.model.MAttachment;
-import org.compiere.model.PO;
-
-/**
- * @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
- * @version 1.0, October 14th 2005
- */
-public abstract class AbstractPOWrapper {
-
- protected abstract PO receivePO(Properties ctx, int id, String trxName, String type);
-
- public AbstractPOWrapper(Properties ctx, int id, String trxName, String type) {
-
- po = receivePO(ctx, id, trxName, type);
- }
-
- protected PO po;
-
- public PO get() {
-
- return po;
- }
-
- /**
- * String representation
- * @return String representation
- */
- public String toString() {
-
- return po.toString(); // toString
- }
-
- /**
- * Equals based on ID
- * @param cmp comparator
- * @return true if ID the same
- */
- public boolean equals(Object cmp) {
-
- return po.equals(cmp); // equals
- }
-
- /**
- * Compare based on DocumentNo, Value, Name, Description
- * @param o1 Object 1
- * @param o2 Object 2
- * @return -1 if o1 < o2
- */
- public int compare(Object o1, Object o2) {
-
- return po.compare(o1, o2); // compare
- }
-
- /**
- * Get TableName.
- * @return table name
- */
- public String get_TableName() {
-
- return po.get_TableName(); // getTableName
- }
-
- /**
- * Return Single Key Record ID
- * @return ID or 0
- */
- public int getID() {
-
- return po.get_ID(); // getID
- }
-
- /**
- * Return Deleted Single Key Record ID
- * @return ID or 0
- */
- public int getIDOld() {
-
- return po.get_IDOld(); // getID
- }
-
- /**
- * Get Context
- * @return context
- */
- public Properties getCtx() {
-
- return po.getCtx(); // getCtx
- }
-
- /**************************************************************************
- * Get Value
- * @param index index
- * @return value
- */
- public Object get_Value(int index) {
-
- return po.get_Value(index); // get_Value
- }
-
- /**
- * Get Value
- * @param columnName column name
- * @return value or null
- */
- public Object get_Value(String columnName) {
-
- return po.get_Value(columnName); // get_Value
- }
-
- /**
- * Get Column Value
- * @param variableName name
- * @return value or ""
- */
- public String get_ValueAsString(String variableName) {
-
- return po.get_ValueAsString(variableName); // get_ValueAsString
- }
-
- /**
- * Get Value of Column
- * @param AD_Column_ID column
- * @return value or null
- */
- public Object get_ValueOfColumn(int AD_Column_ID) {
-
- return po.get_ValueOfColumn(AD_Column_ID); // get_ValueOfColumn
- }
-
- /**
- * Get Old Value
- * @param index index
- * @return value
- */
- public Object get_ValueOld(int index) {
-
- return po.get_ValueOld(index); // get_ValueOld
- }
-
- /**
- * Get Old Value
- * @param columnName column name
- * @return value or null
- */
- public Object get_ValueOld(String columnName) {
-
- return po.get_ValueOld(columnName); // get_ValueOld
- }
-
- /**
- * Is Value Changed
- * @param index index
- * @return true if changed
- */
- public boolean is_ValueChanged(int index) {
-
- return po.is_ValueChanged(index); // is_ValueChanged
- }
-
- /**
- * Is Value Changed
- * @param columnName column name
- * @return true if changed
- */
- public boolean is_ValueChanged(String columnName) {
-
- return po.is_ValueChanged(columnName); // is_ValueChanged
- }
-
- /**
- * Return new - old.
- * - New Value if Old Value is null
- * - New Value - Old Value if Number
- * - otherwise null
- * @param index index
- * @return new - old or null if not appropriate or not changed
- */
- public Object get_ValueDifference(int index) {
-
- return po.get_ValueDifference(index); // get_ValueDifference
- }
-
- /**
- * Return new - old.
- * - New Value if Old Value is null
- * - New Value - Old Value if Number
- * - otherwise null
- * @param columnName column name
- * @return new - old or null if not appropriate or not changed
- */
- public Object get_ValueDifference(String columnName) {
-
- return po.get_ValueDifference(columnName); // get_ValueDifference
- }
-
- /**
- * Set Value of Column
- * @param AD_Column_ID column
- * @param value value
- */
- public void set_ValueOfColumn(int AD_Column_ID, Object value) {
-
- po.set_ValueOfColumn(AD_Column_ID, value); // setValueOfColumn
- }
-
- /**
- * Set Custom Column
- * @param columnName column
- * @param value value
- */
- public void set_CustomColumn(String columnName, Object value) {
-
- po.set_CustomColumn(columnName, value); // set_CustomColumn
- }
-
- /**
- * Get Column Index
- * @param columnName column name
- * @return index of column with ColumnName or -1 if not found
- */
- public int get_ColumnIndex(String columnName) {
-
- return po.get_ColumnIndex(columnName); // getColumnIndex
- }
-
- /**
- * (re)Load record with m_ID[*]
- */
- public boolean load(String trxName) {
-
- return po.load(trxName); // load
- }
-
- /**
- * Get AD_Client
- * @return AD_Client_ID
- */
- public int getAD_Client_ID() {
-
- return po.getAD_Client_ID(); // getAD_Client_ID
- }
-
- /**
- * Get AD_Org
- * @return AD_Org_ID
- */
- public int getAD_Org_ID() {
-
- return po.getAD_Org_ID(); // getAD_Org_ID
- }
-
- /**
- * Set Active
- * @param active active
- */
- public void setIsActive(boolean active) {
-
- po.setIsActive(active); // setActive
- }
-
- /**
- * Is Active
- * @return is active
- */
- public boolean isActive() {
-
- return po.isActive(); // isActive
- }
-
- /**
- * Get Created
- * @return created
- */
- public Timestamp getCreated() {
-
- return po.getCreated(); // getCreated
- }
-
- /**
- * Get Updated
- * @return updated
- */
- public Timestamp getUpdated() {
-
- return po.getUpdated(); // getUpdated
- }
-
- /**
- * Get CreatedBy
- * @return AD_User_ID
- */
- public int getCreatedBy() {
-
- return po.getCreatedBy(); // getCreateddBy
- }
-
- /**
- * Get UpdatedBy
- * @return AD_User_ID
- */
- public int getUpdatedBy() {
-
- return po.getUpdatedBy(); // getUpdatedBy
- }
-
- /**************************************************************************
- * Update Value or create new record.
- * To reload call load() - not updated
- * @return true if saved
- */
- public boolean save() {
-
- return po.save(); // save
- }
-
- /**
- * Update Value or create new record.
- * To reload call load() - not updated
- * @param trxName transaction
- * @return true if saved
- */
- public boolean save(String trxName) {
-
- return po.save(trxName); // save
- }
-
- /**
- * Is there a Change to be saved?
- * @return true if record changed
- */
- public boolean is_Changed() {
-
- return po.is_Changed(); // is_Change
- }
-
- /**
- * Create Single/Multi Key Where Clause
- * @param withValues if true uses actual values otherwise ?
- * @return where clause
- */
- public String get_WhereClause(boolean withValues) {
-
- return po.get_WhereClause(withValues); // getWhereClause
- }
-
- /**************************************************************************
- * Delete Current Record
- * @param force delete also processed records
- * @return true if deleted
- */
- public boolean delete(boolean force) {
-
- return po.delete(force); // delete
- }
-
- /**
- * Delete Current Record
- * @param force delete also processed records
- * @param trxName transaction
- */
- public boolean delete(boolean force, String trxName) {
-
- return po.delete(force, trxName); // delete
- }
-
- /**************************************************************************
- * Lock it.
- * @return true if locked
- */
- public boolean lock() {
-
- return po.lock(); // lock
- }
-
- /**
- * UnLock it
- * @return true if unlocked (false only if unlock fails)
- */
- public boolean unlock(String trxName) {
-
- return po.unlock(trxName); // unlock
- }
-
- /**
- * Set Trx
- * @param trxName transaction
- */
- public void set_TrxName(String trxName) {
-
- po.set_TrxName(trxName); // setTrx
- }
-
- /**
- * Get Trx
- * @return transaction
- */
- public String get_TrxName() {
-
- return po.get_TrxName(); // getTrx
- }
-
- /**************************************************************************
- * Get Attachments.
- * An attachment may have multiple entries
- * @return Attachment or null
- */
- public MAttachment getAttachment() {
-
- return po.getAttachment(); // getAttachment
- }
-
- /**
- * Get Attachments
- * @param requery requery
- * @return Attachment or null
- */
- public MAttachment getAttachment(boolean requery) {
-
- return po.getAttachment(requery); // getAttachment
- }
-
- /**
- * Create/return Attachment for PO.
- * If not exist, create new
- * @return attachment
- */
- public MAttachment createAttachment() {
-
- return po.createAttachment(); // createAttachment
- }
-
- /**
- * Do we have a Attachment of type
- * @param extension extension e.g. .pdf
- * @return true if there is a attachment of type
- */
- public boolean isAttachment(String extension) {
-
- return po.isAttachment(extension); // isAttachment
- }
-
- /**
- * Get Attachment Data of type
- * @param extension extension e.g. .pdf
- * @return data or null
- */
- public byte[] getAttachmentData(String extension) {
-
- return po.getAttachmentData(extension); // getAttachmentData
- }
-
- /**
- * Do we have a PDF Attachment
- * @return true if there is a PDF attachment
- */
- public boolean isPdfAttachment() {
-
- return po.isPdfAttachment(); // isPdfAttachment
- }
-
- /**
- * Get PDF Attachment Data
- * @return data or null
- */
- public byte[] getPdfAttachment() {
-
- return po.getPdfAttachment(); // getPDFAttachment
- }
-
- /**************************************************************************
- * Dump Record
- */
- public void dump() {
-
- po.dump(); // dump
- }
-
- /**
- * Dump column
- * @param index index
- */
- public void dump(int index) {
-
- po.dump(index); // dump
- }
-
-}
\ No newline at end of file
diff --git a/base/src/org/eevolution/model/wrapper/BOMLineWrapper.java b/base/src/org/eevolution/model/wrapper/BOMLineWrapper.java
deleted file mode 100644
index c1deb41333..0000000000
--- a/base/src/org/eevolution/model/wrapper/BOMLineWrapper.java
+++ /dev/null
@@ -1,424 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.model.wrapper;
-
-import java.math.BigDecimal;
-import java.sql.Timestamp;
-import java.util.Properties;
-
-import org.compiere.model.PO;
-import org.eevolution.model.MPPOrderBOMLine;
-import org.eevolution.model.MPPProductBOMLine;
-
-/**
- * @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
- * @version 1.0, October 14th 2005
- */
-public class BOMLineWrapper extends AbstractPOWrapper {
-
- public static String tableName(String type) {
-
- if(BOMWrapper.BOM_TYPE_PRODUCT.equals(type)) {
-
- return MPPProductBOMLine.Table_Name;
- }
- else if(BOMWrapper.BOM_TYPE_ORDER.equals(type)) {
-
- return MPPOrderBOMLine.Table_Name;
- }
-
- return "";
- }
-
- public static String idColumn(String type) {
-
- return tableName(type)+"_ID";
- }
-
- public BOMLineWrapper(Properties ctx, int id, String trxName, String type) {
-
- super(ctx, id, trxName, type);
- }
-
- protected PO receivePO(Properties ctx, int id, String trxName, String type) {
-
- PO po = null;
- if(BOMWrapper.BOM_TYPE_PRODUCT.equals(type)) {
-
- po = new MPPProductBOMLine(ctx, id, trxName);
- }
- else if(BOMWrapper.BOM_TYPE_ORDER.equals(type)) {
-
- po = new MPPOrderBOMLine(ctx, id, trxName);
- }
-
- return po;
- }
-
- public String getComponentType() {
-
- String type = null;
- if(get() instanceof MPPProductBOMLine) {
-
- type = ((MPPProductBOMLine)get()).getComponentType();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- type = ((MPPOrderBOMLine)get()).getComponentType();
- }
-
- return type;
- }
-
- public BigDecimal getAssay() {
-
- BigDecimal assay = null;
- if(get() instanceof MPPProductBOMLine) {
-
- assay = ((MPPProductBOMLine)get()).getAssay();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- assay = ((MPPOrderBOMLine)get()).getAssay();
- }
-
- return assay;
- }
-
- public int getM_ChangeNotice_ID() {
-
- int M_ChangeNotice_ID = 0;
- if(get() instanceof MPPProductBOMLine) {
-
- M_ChangeNotice_ID = ((MPPProductBOMLine)get()).getM_ChangeNotice_ID();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- M_ChangeNotice_ID = ((MPPOrderBOMLine)get()).getM_ChangeNotice_ID();
- }
-
- return M_ChangeNotice_ID;
- }
-
- public String getHelp() {
-
- String Help = null;
- if(get() instanceof MPPProductBOMLine) {
-
- Help = ((MPPProductBOMLine)get()).getHelp();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- Help = ((MPPOrderBOMLine)get()).getHelp();
- }
-
- return Help;
- }
-
-
- public BigDecimal getQtyBatch() {
-
- BigDecimal qty = null;
- if(get() instanceof MPPProductBOMLine) {
-
- qty = ((MPPProductBOMLine)get()).getQtyBatch();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- qty = ((MPPOrderBOMLine)get()).getQtyBatch();
- }
-
- return qty;
- }
-
- public BigDecimal getForecast() {
-
- BigDecimal fc = null;
- if(get() instanceof MPPProductBOMLine) {
-
- fc = ((MPPProductBOMLine)get()).getForecast();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- fc = ((MPPOrderBOMLine)get()).getForecast();
- }
-
- return fc;
- }
-
- public Integer getLeadTimeOffset() {
-
- Integer offset = null;
- if(get() instanceof MPPProductBOMLine) {
-
- offset = ((MPPProductBOMLine)get()).getLeadTimeOffset();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- offset = ((MPPOrderBOMLine)get()).getLeadTimeOffset();
- }
-
- return offset;
- }
-
- public boolean isQtyPercentage() {
-
- boolean percentage = false;
- if(get() instanceof MPPProductBOMLine) {
-
- percentage = ((MPPProductBOMLine)get()).isQtyPercentage();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- percentage = ((MPPOrderBOMLine)get()).isQtyPercentage();
- }
-
- return percentage;
- }
-
- public boolean isCritical() {
-
- boolean critical = false;
- if(get() instanceof MPPProductBOMLine) {
-
- critical = ((MPPProductBOMLine)get()).isCritical();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- critical = ((MPPOrderBOMLine)get()).isCritical();
- }
-
- return critical;
- }
-
- public String getIssueMethod() {
-
- String issue = null;
- if(get() instanceof MPPProductBOMLine) {
-
- issue = ((MPPProductBOMLine)get()).getIssueMethod();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- issue = ((MPPOrderBOMLine)get()).getIssueMethod();
- }
-
- return issue;
- }
-
- public int getLine() {
-
- int line = 0;
- if(get() instanceof MPPProductBOMLine) {
-
- line = ((MPPProductBOMLine)get()).getLine();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- line = ((MPPOrderBOMLine)get()).getLine();
- }
-
- return line;
- }
-
- public String getDescription() {
-
- String type = null;
- if(get() instanceof MPPProductBOMLine) {
-
- type = ((MPPProductBOMLine)get()).getDescription();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- type = ((MPPOrderBOMLine)get()).getDescription();
- }
-
- return type;
- }
-
- public int getM_Product_ID() {
-
- int id = 0;
- if(get() instanceof MPPProductBOMLine) {
-
- id = ((MPPProductBOMLine)get()).getM_Product_ID();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- id = ((MPPOrderBOMLine)get()).getM_Product_ID();
- }
-
- return id;
- }
-
- public int getPP_Order_ID() {
-
- int id = 0;
-
- if(get() instanceof MPPOrderBOMLine) {
-
- MPPOrderBOMLine line = (MPPOrderBOMLine)get();
- id = line.getPP_Order_ID();
- }
-
- return id;
- }
-
- public int getPP_BOM_ID() {
-
- int id = 0;
- if(get() instanceof MPPProductBOMLine) {
-
- id = ((MPPProductBOMLine)get()).getPP_Product_BOM_ID();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- id = ((MPPOrderBOMLine)get()).getPP_Order_BOM_ID();
- }
-
- return id;
- }
-
- public int getM_AttributeSetInstance_ID() {
-
- int id = 0;
- if(get() instanceof MPPProductBOMLine) {
-
- id = ((MPPProductBOMLine)get()).getM_AttributeSetInstance_ID();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- id = ((MPPOrderBOMLine)get()).getM_AttributeSetInstance_ID();
- }
-
- return id;
- }
-
- public void setM_AttributeSetInstance_ID(int id) {
-
- if(get() instanceof MPPProductBOMLine) {
-
- ((MPPProductBOMLine)get()).setM_AttributeSetInstance_ID(id);
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- ((MPPOrderBOMLine)get()).setM_AttributeSetInstance_ID(id);
- }
- }
-
- public void setQtyBOM(BigDecimal qty) {
-
- if(get() instanceof MPPProductBOMLine) {
-
- ((MPPProductBOMLine)get()).setQtyBOM(qty);
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- ((MPPOrderBOMLine)get()).setQtyBOM(qty);
- }
- }
-
- public BigDecimal getQtyBOM() {
-
- BigDecimal value = null;
- if(get() instanceof MPPProductBOMLine) {
-
- value = ((MPPProductBOMLine)get()).getQtyBOM();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- value = ((MPPOrderBOMLine)get()).getQtyBOM();
- }
-
- return value;
- }
-
- public int getC_UOM_ID() {
-
- int value = 0;
- if(get() instanceof MPPProductBOMLine) {
-
- value = ((MPPProductBOMLine)get()).getC_UOM_ID();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- value = ((MPPOrderBOMLine)get()).getC_UOM_ID();
- }
-
- return value;
- }
-
- public int getPo() {
-
- int value = 0;
- if(get() instanceof MPPProductBOMLine) {
-
- value = ((MPPProductBOMLine)get()).getLine();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- value = ((MPPOrderBOMLine)get()).getLine();
- }
-
- return value;
- }
-
- public BigDecimal getScrap() {
-
- BigDecimal value = new BigDecimal(0);
- if(get() instanceof MPPProductBOMLine) {
-
- value = ((MPPProductBOMLine)get()).getScrap();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- value = ((MPPOrderBOMLine)get()).getScrap();
- }
-
- return value;
- }
-
- public Timestamp getValidFrom() {
-
- Timestamp value = null;
- if(get() instanceof MPPProductBOMLine) {
-
- value = ((MPPProductBOMLine)get()).getValidFrom();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- value = ((MPPOrderBOMLine)get()).getValidFrom();
- }
-
- return value;
- }
-
- public Timestamp getValidTo() {
-
- Timestamp value = null;
- if(get() instanceof MPPProductBOMLine) {
-
- value = ((MPPProductBOMLine)get()).getValidTo();
- }
- else if(get() instanceof MPPOrderBOMLine) {
-
- value = ((MPPOrderBOMLine)get()).getValidTo();
- }
-
- return value;
- }
-}
diff --git a/base/src/org/eevolution/model/wrapper/BOMWrapper.java b/base/src/org/eevolution/model/wrapper/BOMWrapper.java
deleted file mode 100644
index 1f7f928aad..0000000000
--- a/base/src/org/eevolution/model/wrapper/BOMWrapper.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.model.wrapper;
-
-import java.sql.Timestamp;
-import java.util.Properties;
-
-import org.compiere.model.PO;
-import org.eevolution.model.I_PP_Order_BOM;
-import org.eevolution.model.I_PP_Product_BOM;
-import org.eevolution.model.MPPOrderBOM;
-import org.eevolution.model.MPPProductBOM;
-import org.eevolution.model.reasoner.StorageReasoner;
-
-/**
- * @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
- * @version 1.0, October 14th 2005
- */
-public class BOMWrapper extends AbstractPOWrapper {
-
- final public static String BOM_TYPE_PRODUCT = "productBOM";
- final public static String BOM_TYPE_ORDER = "orderBOM";
-
- public static String tableName(String type) {
-
- if (BOM_TYPE_PRODUCT.equals(type)) {
- return I_PP_Product_BOM.Table_Name;
- }
- else if(BOM_TYPE_ORDER.equals(type)) {
- return I_PP_Order_BOM.Table_Name;
- }
-
- return "";
- }
-
- public static String idColumn(String type) {
-
- String value = null;
- if (BOM_TYPE_PRODUCT.equals(type)) {
- return I_PP_Product_BOM.Table_Name;
- }
- else if(BOM_TYPE_ORDER.equals(type)) {
- return I_PP_Order_BOM.Table_Name;
- }
-
- return value+"_ID";
- }
-
- public BOMWrapper(Properties ctx, int id, String trxName, String type) {
-
- super(ctx, id, trxName, type);
- }
-
- protected PO receivePO(Properties ctx, int id, String trxName, String type) {
-
- PO po = null;
- if(BOM_TYPE_PRODUCT.equals(type)) {
-
- po = new MPPProductBOM(ctx, id, trxName);
- }
- else if(BOM_TYPE_ORDER.equals(type)) {
-
- po = new MPPOrderBOM(ctx, id, trxName);
- }
-
- return po;
- }
-
- public String getName() {
-
- String name = null;
- if(get() instanceof MPPProductBOM) {
-
- name = ((MPPProductBOM)get()).getName();
- }
- else if(get() instanceof MPPOrderBOM) {
-
- name = ((MPPOrderBOM)get()).getName();
- }
-
- return name;
- }
-
- public String getDescription() {
-
- String name = null;
- if(get() instanceof MPPProductBOM) {
-
- name = ((MPPProductBOM)get()).getDescription();
- }
- else if(get() instanceof MPPOrderBOM) {
-
- name = ((MPPOrderBOM)get()).getDescription();
- }
-
- return name;
- }
-
- public String getRevision() {
-
- String name = null;
- if(get() instanceof MPPProductBOM) {
-
- name = ((MPPProductBOM)get()).getRevision();
- }
- else if(get() instanceof MPPOrderBOM) {
-
- name = ((MPPOrderBOM)get()).getRevision();
- }
-
- return name;
- }
-
- public String getDocumentNo() {
-
- String value = null;
- if(get() instanceof MPPProductBOM) {
-
- value = ((MPPProductBOM)get()).getDocumentNo();
- }
- else if(get() instanceof MPPOrderBOM) {
-
- value = ((MPPOrderBOM)get()).getDocumentNo();
- }
-
- return value;
- }
-
- public int getM_Product_ID() {
-
- int id = 0;
- if(get() instanceof MPPProductBOM) {
-
- id = ((MPPProductBOM)get()).getM_Product_ID();
- }
- else if(get() instanceof MPPOrderBOM) {
-
- id = ((MPPOrderBOM)get()).getM_Product_ID();
- }
-
- return id;
- }
-
- public int getM_AttributeSetInstance_ID() {
-
- int id = 0;
- if(get() instanceof MPPProductBOM) {
-
- id = ((MPPProductBOM)get()).getM_AttributeSetInstance_ID();
- }
- else if(get() instanceof MPPOrderBOM) {
-
- id = ((MPPOrderBOM)get()).getM_AttributeSetInstance_ID();
- }
-
- return id;
- }
-
- public int getC_UOM_ID() {
-
- int id = 0;
- if(get() instanceof MPPProductBOM) {
-
- id = ((MPPProductBOM)get()).getC_UOM_ID();
- }
- else if(get() instanceof MPPOrderBOM) {
-
- id = ((MPPOrderBOM)get()).getC_UOM_ID();
- }
-
- return id;
- }
-
- public Timestamp getValidFrom() {
-
- Timestamp value = null;
- if(get() instanceof MPPProductBOM) {
-
- value = ((MPPProductBOM)get()).getValidFrom();
- }
- else if(get() instanceof MPPOrderBOM) {
-
- value = ((MPPOrderBOM)get()).getValidFrom();
- }
-
- return value;
- }
-
- public Timestamp getValidTo() {
-
- Timestamp value = null;
- if(get() instanceof MPPProductBOM) {
-
- value = ((MPPProductBOM)get()).getValidTo();
- }
- else if(get() instanceof MPPOrderBOM) {
-
- value = ((MPPOrderBOM)get()).getValidTo();
- }
-
- return value;
- }
-
- public String getValue() {
-
- String value = null;
- if(get() instanceof MPPProductBOM) {
-
- value = ((MPPProductBOM)get()).getValue();
- }
- else if(get() instanceof MPPOrderBOM) {
-
- value = ((MPPOrderBOM)get()).getValue();
- }
-
- return value;
- }
-
- public String getBOMType() {
-
- String value = null;
- if(get() instanceof MPPProductBOM) {
-
- value = ((MPPProductBOM)get()).getBOMType();
- }
- else if(get() instanceof MPPOrderBOM) {
-
- value = ((MPPOrderBOM)get()).getBOMType();
- }
-
- return value;
- }
-
- public int getPP_Order_ID() {
-
- int id = 0;
-
- if(get() instanceof MPPOrderBOM) {
-
- MPPOrderBOM bom = (MPPOrderBOM)get();
- id = bom.getPP_Order_ID();
- }
-
- return id;
- }
-
- public BOMLineWrapper[] getLines() {
-
- int[] ids = null;
-
- String type = null;
- if(get() instanceof MPPProductBOM) {
-
- type = BOM_TYPE_PRODUCT;
- }
- else if(get() instanceof MPPOrderBOM) {
-
- type = BOM_TYPE_ORDER;
- }
-
- StorageReasoner mr = new StorageReasoner();
- ids = mr.getPOIDs(BOMLineWrapper.tableName(type), idColumn(type)+" = "+getID(), null);
-
- BOMLineWrapper[] lines = new BOMLineWrapper[ids.length];
-
-
- for(int i = 0; i < ids.length; i++) {
-
- lines[i] = new BOMLineWrapper(getCtx(), ids[i], null, type);
- }
- return lines;
- }
-}
diff --git a/base/src/org/eevolution/msg/HTMLMessenger.java b/base/src/org/eevolution/msg/HTMLMessenger.java
deleted file mode 100644
index 14153b89ee..0000000000
--- a/base/src/org/eevolution/msg/HTMLMessenger.java
+++ /dev/null
@@ -1,416 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.msg;
-
-import java.math.BigDecimal;
-import java.text.MessageFormat;
-import java.text.SimpleDateFormat;
-
-import org.compiere.model.MAttribute;
-import org.compiere.model.MAttributeInstance;
-import org.compiere.model.MAttributeSet;
-import org.compiere.model.MAttributeSetInstance;
-import org.compiere.model.MAttributeValue;
-import org.compiere.model.MLocator;
-import org.compiere.model.MProduct;
-import org.compiere.model.MProject;
-import org.compiere.model.MStorage;
-import org.compiere.model.MWarehouse;
-import org.compiere.util.Env;
-import org.compiere.util.Msg;
-import org.eevolution.model.MPPOrder;
-import org.eevolution.model.reasoner.StorageReasoner;
-import org.eevolution.model.wrapper.BOMLineWrapper;
-import org.eevolution.model.wrapper.BOMWrapper;
-
-/**
- * @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
- * @version 1.0, October 14th 2005
- */
-public class HTMLMessenger {
-
- final protected String PRODUCT_TOOLTIP =
- ""+Msg.translate(Env.getCtx(), "M_Product_ID")+" "+
- ""+
- ""+Msg.translate(Env.getCtx(), "Description")+": {0} "+
- "
";
-
- final protected String LENGTHTRANSFORM_INFO_PATTERN =
- "" +
- ""+
- "{0} "+
- "{1} "+
- "{2} "+
- "
";
-
- final protected String PP_ORDER_INFO_PATTERN =
- ""+Msg.translate(Env.getCtx(), "PP_Order_ID")+" "+
- ""+
- ""+Msg.translate(Env.getCtx(), "DocumentNo")+": {0} "+
- ""+Msg.translate(Env.getCtx(), "DateStartSchedule")+": {1} "+
- ""+Msg.translate(Env.getCtx(), "DateFinishSchedule")+": {2} "+
- ""+Msg.translate(Env.getCtx(), "C_Project_ID")+": {3} "+
- ""+Msg.translate(Env.getCtx(), "M_Product_ID")+": {4} "+
- ""+Msg.translate(Env.getCtx(), "QtyOrdered")+": {5} "+
- ""+Msg.translate(Env.getCtx(), "QtyDelivered")+": {6} "+
- "
";
-
- final protected String PP_ORDER_HEADER_INFO_PATTERN =
- "{0} "+
- ""+
- ""+
- ""+Msg.translate(Env.getCtx(), "DocumentNo")+" "+
- ""+Msg.translate(Env.getCtx(), "DateStartSchedule")+" "+
- ""+Msg.translate(Env.getCtx(), "DateFinishSchedule")+" "+
- ""+Msg.translate(Env.getCtx(), "C_Project_ID")+" "+
- ""+Msg.translate(Env.getCtx(), "M_Product_ID")+" "+
- ""+Msg.translate(Env.getCtx(), "QtyOrdered")+" "+
- ""+Msg.translate(Env.getCtx(), "QtyDelivered")+" "+
- " "+
- "
";
-
- final protected String PP_ORDER_LINE_INFO_PATTERN =
- ""+
- ""+
- ""+
- "{0} "+
- "{1} "+
- "{2} "+
- "{3} "+
- "{4} "+
- "{5} "+
- "{6} "+
- " "+
- "
";
-
- final protected String BOM_INFO_PATTERN =
- ""+Msg.translate(Env.getCtx(), "PP_Product_BOM_ID")+" "+
- ""+
- ""+Msg.translate(Env.getCtx(), "DocumentNo")+": {0} "+
- ""+Msg.translate(Env.getCtx(), "PP_Product_BOM_ID")+": {1} "+
- ""+Msg.translate(Env.getCtx(), "ValidFrom")+": {2} - {3} "+
- ""+Msg.translate(Env.getCtx(), "Value")+": {4} "+
- ""+Msg.translate(Env.getCtx(), "M_Product_ID")+": {5} "+
- "{6} "+
- "
"+
- "{7}
"+
- "";
-
- final protected String BOM_HEADER_INFO_PATTERN =
- ""
- +""+Msg.translate(Env.getCtx(), "Line")+" "
- +""+Msg.translate(Env.getCtx(), "Qty")+" "
- +""+Msg.translate(Env.getCtx(), "M_Product_ID")+" "
- +""+Msg.translate(Env.getCtx(), "M_AttributeSetInstance_ID")+" "
- +" ";
-
- final protected String BOM_LINE_INFO_PATTERN =
- ""
- +"{0} "
- +"{1} "
- +"{2} "
- +"{3} "
- +" ";
-
- final protected String BOMLINE_INFO_PATTERN =
- ""+Msg.translate(Env.getCtx(), "Line")+": {0} "+
- ""+
- ""+Msg.translate(Env.getCtx(), "ComponentType")+": {1} "+
- ""+Msg.translate(Env.getCtx(), "ValidFrom")+": {2} - {3} "+
- ""+Msg.translate(Env.getCtx(), "Qty")+": {4} "+
- ""+Msg.translate(Env.getCtx(), "M_Product_ID")+": {5} "+
- "{6} " +
- "
"+
- "{7}
"+
- "";
-
- final protected String STORAGE_HEADER_INFO_PATTERN =
- ""
- +""+Msg.translate(Env.getCtx(), "M_Locator_ID")+" "
- +""+Msg.translate(Env.getCtx(), "M_Warehouse_ID")+" "
- +""+Msg.translate(Env.getCtx(), "QtyOnHand")+" "
- +""+Msg.translate(Env.getCtx(), "QtyReserved")+" "
- +""+Msg.translate(Env.getCtx(), "QtyOrdered")+" "
- +""+Msg.translate(Env.getCtx(), "QtyAvailable")+" "
- +" ";
-
- final protected String STORAGE_LINE_INFO_PATTERN =
- ""
- +"{0} "
- +"{1} "
- +"{2} "
- +"{3} "
- +"{4} "
- +"{5} "
- +" ";
-
- final protected String STORAGE_SUM_LINE_INFO_PATTERN =
- ""
- +" "
- +" "
- +" {0} "
- +" {1} "
- +" {2} "
- +" {3} "
- +" ";
-
- final protected String STORAGE_NOINVENTORY_INFO_PATTERN =
- ""
- +""+Msg.translate(Env.getCtx(), Msg.getMsg(Env.getCtx(), "NoQtyAvailable"))+" "
- +" ";
-
- final protected String STORAGE_FOOTER_INFO_PATTERN = "
";
-
- final protected String ATTRIBUTE_INFO_PATTERN = "{0} = {1} ";
-
- public String getProductInfo(MProduct p) {
-
-
- Object[] obj = new Object[] {
- p.getDescription() == null ? "" : p.getDescription()
- };
-
- return MessageFormat.format(PRODUCT_TOOLTIP, obj);
- }
-
- public String getLengthTransformInfo(MProduct p, BigDecimal srcLength, BigDecimal tgtLength, BigDecimal pieces) {
-
- BigDecimal scrapLength = srcLength.subtract(tgtLength.multiply(pieces));
-
- Object[] obj = new Object[] {
- p.getName()+" ("+p.getValue()+")",
- "1 x "+srcLength.setScale(2, BigDecimal.ROUND_HALF_DOWN)+" → "+pieces+" x "+tgtLength.setScale(2, BigDecimal.ROUND_HALF_DOWN),
- Msg.translate(Env.getCtx(), "Scrap")+": 1 x "+scrapLength.setScale(2, BigDecimal.ROUND_HALF_DOWN),
- };
-
- return MessageFormat.format(LENGTHTRANSFORM_INFO_PATTERN, obj);
- }
-
- public String getMfcOrderInfo(MPPOrder o) {
-
- MProject pj = new MProject(Env.getCtx(), o.getC_Project_ID(), null);
- MProduct pd = new MProduct(Env.getCtx(), o.getM_Product_ID(), null);
-
- Object[] obj = new Object[] {
- o.getDocumentNo(),
- o.getDateStartSchedule(),
- o.getDateFinishSchedule(),
- (pj.getName() == null ? "-" : pj.getName())+(pj.getValue() == null ? "" : " ("+pj.getValue()+")"),
- pd.getName()+" ("+pd.getValue()+")",
- o.getQtyOrdered(),
- o.getQtyDelivered()
- };
- return MessageFormat.format(PP_ORDER_INFO_PATTERN, obj);
- }
-
- public String getBOMLinesInfo(BOMLineWrapper[] lines) {
-
- MProduct p = null;
- MAttributeSetInstance asi = null;
-
- StringBuffer sb = new StringBuffer(BOM_HEADER_INFO_PATTERN);
- for(int i = 0; i < lines.length; i++) {
-
- p = new MProduct(Env.getCtx(), lines[i].getM_Product_ID(), MProduct.Table_Name);
- asi = new MAttributeSetInstance(Env.getCtx(), lines[i].getM_AttributeSetInstance_ID(), MAttributeSetInstance.Table_Name);
-
- Object[] obj = new Object[] {
- new Integer(lines[i].getPo()),
- lines[i].getQtyBOM(),
- p.getName(),
- getAttributeSetInstanceInfo(asi, true)
- };
-
- sb.append(MessageFormat.format(BOM_LINE_INFO_PATTERN, obj));
- }
-
- return sb.toString();
- }
-
- public String getBOMLineInfo(BOMLineWrapper mpbl) {
-
- SimpleDateFormat df = Env.getLanguage(Env.getCtx()).getDateFormat();
-
- MProduct p = new MProduct(Env.getCtx(), mpbl.getM_Product_ID(), MProduct.Table_Name);
- MAttributeSetInstance asi = new MAttributeSetInstance(Env.getCtx(), mpbl.getM_AttributeSetInstance_ID(), MAttributeSetInstance.Table_Name);
-
- Object[] obj = new Object[] {
- new Integer(mpbl.getPo()),
- mpbl.getComponentType(),
- mpbl.getValidFrom() == null ? "" : df.format(mpbl.getValidFrom()),
- mpbl.getValidTo() == null ? "" : df.format(mpbl.getValidTo()),
- mpbl.getQtyBOM(),
- p.getName(),
- getAttributeSetInstanceInfo(asi, false),
- getStorageInfo(p, asi)
- };
-
- return MessageFormat.format(BOMLINE_INFO_PATTERN, obj);
- }
-
- public String getBOMInfo(BOMWrapper pb) {
-
- SimpleDateFormat df = Env.getLanguage(Env.getCtx()).getDateFormat();
-
- MProduct p = new MProduct(Env.getCtx(), pb.getM_Product_ID(), MProduct.Table_Name);
- MAttributeSetInstance asi = new MAttributeSetInstance(Env.getCtx(), pb.getM_AttributeSetInstance_ID(), "M_AttributeSetInstance");
-
- Object[] obj = new Object[] {
- pb.getDocumentNo(),
- pb.getName(),
- pb.getValidFrom() == null ? "" : df.format(pb.getValidFrom()),
- pb.getValidTo() == null ? "" : df.format(pb.getValidTo()),
- pb.getValue(),
- p.getName(),
- getAttributeSetInstanceInfo(asi, false),
- getBOMLinesInfo(pb.getLines())
- };
-
- return MessageFormat.format(BOM_INFO_PATTERN, obj);
- }
-
- public String getAttributeSetInstanceInfo(MAttributeSetInstance asi, boolean singleRow) {
-
- MAttributeSet as = new MAttributeSet(Env.getCtx(), asi.getM_AttributeSet_ID(), null);
-
- StorageReasoner mr = new StorageReasoner();
- int[] ids = mr.getAttributeIDs(asi);
-
- MAttributeInstance ai = null;
- MAttribute a = null;
- MAttributeValue av = null;
-
- StringBuffer sb = new StringBuffer();
- String value = null;
- Object[] obj = null;
- for(int i = 0; i < ids.length; i++) {
-
- ai = new MAttributeInstance(Env.getCtx(), ids[i], asi.get_ID(), (String)null, null);
- ai.load(null);
- a = new MAttribute(Env.getCtx(), ai.getM_Attribute_ID(), null);
- av = new MAttributeValue(Env.getCtx(), ai.getM_AttributeValue_ID(), null);
-
- // Switchs value to referenced value of M_AttributeValue, if no value is directly available,
- // e.g. the list validation type 'L'
- if(ai.getValue() == null) {
-
- value = av.getValue();
- }
- // Takes the value of the M_AttributeInstance itself
- else {
-
- // Round number values to a scale of 2, if type is 'N'
- if(MAttribute.ATTRIBUTEVALUETYPE_Number.equals(a.getAttributeValueType())) {
-
- BigDecimal number = ai.getValueNumber();
- value = number.setScale(2, BigDecimal.ROUND_HALF_UP).toString();
- }
- else {
-
- value = ai.getValue();
- }
- }
-
- obj = new Object[] {
- a.getName(),
- value
- };
-
- sb.append(MessageFormat.format(ATTRIBUTE_INFO_PATTERN, obj));
-
- if(singleRow) {
-
- sb.append(" ");
- }
- else {
-
- sb.append(" ");
- }
- }
-
- return sb.toString();
- }
-
- public String getStorageInfo(MProduct p, MAttributeSetInstance asi) {
-
- StorageReasoner mr = new StorageReasoner();
- int[] ids = mr.getPOIDs(MLocator.Table_Name, null, null);
-
- MWarehouse warehouse = null;
- MStorage storage = null;
- MLocator locator = null;
- StringBuffer sb = new StringBuffer(STORAGE_HEADER_INFO_PATTERN);
- Object[] obj = null;
-
- BigDecimal sumQtyOnHand = BigDecimal.ZERO;
- BigDecimal sumQtyReserved = BigDecimal.ZERO;
- BigDecimal sumQtyOrdered = BigDecimal.ZERO;
-
- int count = 0;
- for(int i = 0; i < ids.length; i++) {
-
- storage = MStorage.get(Env.getCtx(), ids[i], p.get_ID(), asi.get_ID(), null);
- if(storage == null) {
-
- continue;
- }
- count++;
-
- warehouse = new MWarehouse(Env.getCtx(), storage.getM_Warehouse_ID(), null);
- locator = new MLocator(Env.getCtx(), storage.getM_Locator_ID(), null);
-
- sumQtyOnHand = sumQtyOnHand.add(storage.getQtyOnHand());
- sumQtyReserved = sumQtyReserved.add(storage.getQtyReserved());
- sumQtyOrdered = sumQtyOrdered.add(storage.getQtyOrdered());
-
- // the quantities of specific locator
- obj = new Object[] {
- locator.getX()+" - "+locator.getY()+" - "+locator.getZ(),
- warehouse.getName(),
- storage.getQtyOnHand(),
- storage.getQtyReserved(),
- storage.getQtyOrdered(),
- storage.getQtyOnHand().subtract(storage.getQtyReserved())
- };
-
- sb.append(MessageFormat.format(STORAGE_LINE_INFO_PATTERN, obj));
- }
-
- // the sum of the single quantities, if there is more than one line
- if(count > 1) {
-
- obj = new Object[] {
- sumQtyOnHand,
- sumQtyReserved,
- sumQtyOrdered,
- sumQtyOnHand.subtract(sumQtyReserved)
- };
-
- sb.append(MessageFormat.format(STORAGE_SUM_LINE_INFO_PATTERN, obj));
- }
-
- double available = sumQtyOnHand.subtract(sumQtyReserved).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
- if(count == 0 || (available <= 0.00d)) {
-
- sb.append(MessageFormat.format(STORAGE_NOINVENTORY_INFO_PATTERN, obj));
- }
-
- sb.append(STORAGE_FOOTER_INFO_PATTERN);
-
- return sb.toString();
- }
-}
diff --git a/base/src/org/eevolution/process/BankTransfer.java b/base/src/org/eevolution/process/BankTransfer.java
deleted file mode 100644
index 4b8105ddd8..0000000000
--- a/base/src/org/eevolution/process/BankTransfer.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2008 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.process;
-
-
-import java.math.BigDecimal;
-import java.sql.Timestamp;
-import java.util.logging.Level;
-
-import org.compiere.model.MBankAccount;
-import org.compiere.model.MPayment;
-import org.compiere.process.ProcessInfoParameter;
-import org.compiere.process.SvrProcess;
-import org.compiere.util.AdempiereUserError;
-import org.compiere.util.Env;
-
-/**
- * Bank Transfer. Generate two Payments entry
- *
- * For Bank Transfer From Bank Account "A"
- *
- * @author victor.perez@e-evoltuion.com
- *
- **/
-public class BankTransfer extends SvrProcess
-{
- private String p_DocumentNo= ""; // Document No
- private String p_Description= ""; // Description
- private int p_C_BPartner_ID = 0; // Business Partner to be used as bridge
- private int p_C_Currency_ID = 0; // Payment Currency
- private int p_C_ConversionType_ID = 0; // Payment Conversion Type
- private int p_C_Charge_ID = 0; // Charge to be used as bridge
-
- private BigDecimal p_Amount = new BigDecimal(0); // Amount to be transfered between the accounts
- private int p_From_C_BankAccount_ID = 0; // Bank Account From
- private int p_To_C_BankAccount_ID= 0; // Bank Account To
- private Timestamp p_StatementDate = null; // Date Statement
- private Timestamp p_DateAcct = null; // Date Account
-
- /**
- * Prepare - e.g., get Parameters.
- */
- protected void prepare()
- {
- ProcessInfoParameter[] para = getParameter();
- for (int i = 0; i < para.length; i++)
- {
- String name = para[i].getParameterName();
- if (name.equals("From_C_BankAccount_ID"))
- p_From_C_BankAccount_ID = para[i].getParameterAsInt();
- else if (name.equals("To_C_BankAccount_ID"))
- p_To_C_BankAccount_ID = para[i].getParameterAsInt();
- else if (name.equals("C_BPartner_ID"))
- p_C_BPartner_ID = para[i].getParameterAsInt();
- else if (name.equals("C_Currency_ID"))
- p_C_Currency_ID = para[i].getParameterAsInt();
- else if (name.equals("C_ConversionType_ID"))
- p_C_ConversionType_ID = para[i].getParameterAsInt();
- else if (name.equals("C_Charge_ID"))
- p_C_Charge_ID = para[i].getParameterAsInt();
- else if (name.equals("DocumentNo"))
- p_DocumentNo = (String)para[i].getParameter();
- else if (name.equals("Amount"))
- p_Amount = ((BigDecimal)para[i].getParameter());
- else if (name.equals("Description"))
- p_Description = (String)para[i].getParameter();
- else if (name.equals("StatementDate"))
- p_StatementDate = (Timestamp)para[i].getParameter();
- else if (name.equals("DateAcct"))
- p_DateAcct = (Timestamp)para[i].getParameter();
- else
- log.log(Level.SEVERE, "prepare - Unknown Parameter: " + name);
- }
- } // prepare
-
- /**
- * Perform process.
- * @return Message (translated text)
- * @throws Exception if not successful
- */
- protected String doIt() throws Exception
- {
- log.info("From Bank="+p_From_C_BankAccount_ID+" - To Bank="+p_To_C_BankAccount_ID
- + " - C_BPartner_ID="+p_C_BPartner_ID+"- C_Charge_ID= "+p_C_Charge_ID+" - Amount="+p_Amount+" - DocumentNo="+p_DocumentNo
- + " - Description="+p_Description+ " - Statement Date="+p_StatementDate+
- " - Date Account="+p_DateAcct);
-
- if (p_To_C_BankAccount_ID == 0 || p_From_C_BankAccount_ID == 0)
- throw new IllegalArgumentException("Banks required");
-
- if (p_DocumentNo == null || p_DocumentNo.length() == 0)
- throw new IllegalArgumentException("Document No required");
-
- if (p_To_C_BankAccount_ID == p_From_C_BankAccount_ID)
- throw new AdempiereUserError ("Banks From and To must be different");
-
- if (p_C_BPartner_ID == 0)
- throw new AdempiereUserError ("Business Partner required");
-
- if (p_C_Currency_ID == 0)
- throw new AdempiereUserError ("Currency required");
-
- if (p_C_Charge_ID == 0)
- throw new AdempiereUserError ("Business Partner required");
-
- if (p_Amount.compareTo(new BigDecimal(0)) == 0)
- throw new AdempiereUserError ("Amount required");
-
- // Login Date
- if (p_StatementDate == null)
- p_StatementDate = Env.getContextAsDate(getCtx(), "#Date");
- if (p_StatementDate == null)
- p_StatementDate = new Timestamp(System.currentTimeMillis());
-
- if (p_DateAcct == null)
- p_DateAcct = p_StatementDate;
-
- generateBankTransfer();
-
- return "@OK@ ";
- } // doIt
-
-
- /**
- * Generate BankTransfer()
- *
- */
- private void generateBankTransfer()
- {
-
- MBankAccount mBankFrom = new MBankAccount(getCtx(),p_From_C_BankAccount_ID, get_TrxName());
- MBankAccount mBankTo = new MBankAccount(getCtx(),p_To_C_BankAccount_ID, get_TrxName());
-
- MPayment paymentBankFrom = new MPayment(getCtx(), 0 , get_TrxName());
- paymentBankFrom.setC_BankAccount_ID(mBankFrom.getC_BankAccount_ID());
- paymentBankFrom.setDocumentNo(p_DocumentNo);
- paymentBankFrom.setDateAcct(p_DateAcct);
- paymentBankFrom.setDateTrx(p_StatementDate);
- paymentBankFrom.setTenderType(MPayment.TENDERTYPE_DirectDeposit);
- paymentBankFrom.setDescription(p_Description);
- paymentBankFrom.setC_BPartner_ID (p_C_BPartner_ID);
- paymentBankFrom.setC_Currency_ID(p_C_Currency_ID);
- if (p_C_ConversionType_ID > 0)
- paymentBankFrom.setC_ConversionType_ID(p_C_ConversionType_ID);
- paymentBankFrom.setPayAmt(p_Amount);
- paymentBankFrom.setOverUnderAmt(Env.ZERO);
- paymentBankFrom.setC_DocType_ID(false);
- paymentBankFrom.setC_Charge_ID(p_C_Charge_ID);
- paymentBankFrom.save();
- paymentBankFrom.processIt(MPayment.DOCACTION_Complete);
- paymentBankFrom.saveEx();
-
- MPayment paymentBankTo = new MPayment(getCtx(), 0 , get_TrxName());
- paymentBankTo.setC_BankAccount_ID(mBankTo.getC_BankAccount_ID());
- paymentBankTo.setDocumentNo(p_DocumentNo);
- paymentBankTo.setDateAcct(p_DateAcct);
- paymentBankTo.setDateTrx(p_StatementDate);
- paymentBankTo.setTenderType(MPayment.TENDERTYPE_DirectDeposit);
- paymentBankTo.setDescription(p_Description);
- paymentBankTo.setC_BPartner_ID (p_C_BPartner_ID);
- paymentBankTo.setC_Currency_ID(p_C_Currency_ID);
- if (p_C_ConversionType_ID > 0)
- paymentBankFrom.setC_ConversionType_ID(p_C_ConversionType_ID);
- paymentBankTo.setPayAmt(p_Amount);
- paymentBankTo.setOverUnderAmt(Env.ZERO);
- paymentBankTo.setC_DocType_ID(true);
- paymentBankTo.setC_Charge_ID(p_C_Charge_ID);
- paymentBankTo.save();
- paymentBankTo.processIt(MPayment.DOCACTION_Complete);
- paymentBankTo.saveEx();
-
- return;
-
- } // createCashLines
-
-} // ImmediateBankTransfer
diff --git a/base/src/org/eevolution/process/ComponentChange.java b/base/src/org/eevolution/process/ComponentChange.java
deleted file mode 100644
index 74465ca4d2..0000000000
--- a/base/src/org/eevolution/process/ComponentChange.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Teo Sarca, www.arhipac.ro *
- *****************************************************************************/
-package org.eevolution.process;
-
-
-import java.math.BigDecimal;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Level;
-
-import org.adempiere.exceptions.AdempiereException;
-import org.adempiere.exceptions.FillMandatoryException;
-import org.compiere.model.MRefList;
-import org.compiere.model.Query;
-import org.compiere.process.ProcessInfoParameter;
-import org.compiere.process.SvrProcess;
-import org.eevolution.model.MPPProductBOMLine;
-
-
-/**
- * Component Change into BOM
- *
- * @author victor.perez@e-evolution.com
- * @version $Id: ComponentChange.java
- *
- * @author Teo Sarca, www.arhipac.ro
- */
-public class ComponentChange extends SvrProcess
-{
- private static final int ACTION_AD_Reference_ID = 53227;
- private static final String ACTION_Add = "A";
- private static final String ACTION_Deactivate = "D";
- private static final String ACTION_Expire = "E";
- private static final String ACTION_Replace = "R";
- private static final String ACTION_ReplaceAndExpire = "RE";
-
- private int p_M_Product_ID = 0;
- private Timestamp p_ValidTo = null;
- private Timestamp p_ValidFrom = null;
- private String p_Action;
- private int p_New_M_Product_ID =0;
- private BigDecimal p_Qty = null;
- private int p_M_ChangeNotice_ID=0;
-
- @Override
- protected void prepare()
- {
- int morepara = 0;
-
- for (ProcessInfoParameter para : getParameter())
- {
- String name = para.getParameterName();
-
- if (para.getParameter() == null)
- ;
- else if (name.equals("M_Product_ID") && morepara == 0)
- {
- p_M_Product_ID = para.getParameterAsInt();
- morepara = 1;
- }
- else if (name.equals("ValidTo"))
- p_ValidTo = ((Timestamp)para.getParameter());
- else if (name.equals("ValidFrom"))
- p_ValidFrom = ((Timestamp)para.getParameter());
- else if (name.equals("Action"))
- p_Action = ((String)para.getParameter());
- else if (name.equals("M_Product_ID"))
- p_New_M_Product_ID = para.getParameterAsInt();
- else if (name.equals("Qty"))
- p_Qty = ((BigDecimal)para.getParameter());
- else if (name.equals("M_ChangeNotice_ID"))
- p_M_ChangeNotice_ID = para.getParameterAsInt();
- else
- log.log(Level.SEVERE,"prepare - Unknown Parameter: " + name);
- }
- } // prepare
-
- @Override
- protected String doIt() throws Exception
- {
- if (p_Action == null)
- {
- throw new FillMandatoryException("Action");
- }
-
- List params = new ArrayList();
- StringBuffer whereClause = new StringBuffer();
-
- whereClause.append(MPPProductBOMLine.COLUMNNAME_M_Product_ID+"=?");
- params.add(p_M_Product_ID);
-
- if (p_ValidTo != null)
- {
- whereClause.append(" AND TRUNC("+MPPProductBOMLine.COLUMNNAME_ValidTo+") <= ?");
- params.add(p_ValidTo);
- }
- if (p_ValidFrom != null)
- {
- whereClause.append(" AND TRUNC("+MPPProductBOMLine.COLUMNNAME_ValidFrom+") >= ?");
- params.add(p_ValidFrom);
- }
-
- List components = new Query(getCtx(), MPPProductBOMLine.Table_Name, whereClause.toString(), get_TrxName())
- .setParameters(params)
- .list();
- for(MPPProductBOMLine bomline : components)
- {
- if (p_Action.equals(ACTION_Add))
- {
- actionAdd(bomline, 0);
- }
- else if (p_Action.equals(ACTION_Deactivate))
- {
- actionDeactivate(bomline);
- }
- else if (p_Action.equals(ACTION_Expire))
- {
- actionExpire(bomline);
- }
- else if (p_Action.equals(ACTION_Replace))
- {
- actionAdd(bomline, bomline.getLine() + 1);
- actionDeactivate(bomline);
- }
- else if (p_Action.equals(ACTION_ReplaceAndExpire))
- {
- actionAdd(bomline, bomline.getLine() + 1);
- actionExpire(bomline);
- }
- else
- {
- throw new AdempiereException("Action not supported - "+p_Action);
- }
- addLog(MRefList.getListName(getCtx(), ACTION_AD_Reference_ID, p_Action));
- }
- return "@OK@";
- } // doIt
-
- protected void actionAdd(MPPProductBOMLine bomline, int line)
- {
- MPPProductBOMLine newbomline = new MPPProductBOMLine(getCtx(), 0, get_TrxName());
- MPPProductBOMLine.copyValues(bomline, newbomline);
- newbomline.setIsActive(true);
- newbomline.setLine(line);
- newbomline.setM_ChangeNotice_ID(p_M_ChangeNotice_ID);
- //
- newbomline.setM_Product_ID(p_New_M_Product_ID);
- if (p_Qty.signum() != 0)
- {
- newbomline.setQtyBOM(p_Qty);
- }
- newbomline.setValidFrom(newbomline.getUpdated());
- newbomline.saveEx();
- }
-
- protected void actionDeactivate(MPPProductBOMLine bomline)
- {
- bomline.setIsActive(false);
- bomline.setM_ChangeNotice_ID(p_M_ChangeNotice_ID);
- bomline.saveEx();
- }
-
- protected void actionExpire(MPPProductBOMLine bomline)
- {
- bomline.setIsActive(true);
- bomline.setValidTo(bomline.getUpdated());
- bomline.setM_ChangeNotice_ID(p_M_ChangeNotice_ID);
- bomline.saveEx();
- }
-} // Component Change
diff --git a/base/src/org/eevolution/process/CopyFromBOM.java b/base/src/org/eevolution/process/CopyFromBOM.java
deleted file mode 100644
index 8c33cec0d1..0000000000
--- a/base/src/org/eevolution/process/CopyFromBOM.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.process;
-
-import java.util.Properties;
-import java.util.logging.Level;
-
-import org.compiere.process.ProcessInfoParameter;
-import org.compiere.process.SvrProcess;
-import org.compiere.util.AdempiereSystemError;
-import org.compiere.util.Env;
-import org.eevolution.model.MPPProductBOM;
-import org.eevolution.model.MPPProductBOMLine;
-
-/**
- * CopyFromBOM Process
- * Copies BOM Lines from Selected BOM to the Current BOM
- * The BOM being copied to must have no pre-existing BOM Lines
- *
- * @author Tony Snook
- * @version $Id: CopyFromBOM.java,v 1.0 2008/07/04 05:24:03 tspc Exp $
- */
-public class CopyFromBOM extends SvrProcess {
- /** */
- private int p_Record_ID = 0;
- private int p_PP_Product_BOM_ID = 0;
- private int no = 0;
- private Properties ctx = Env.getCtx();
-
- /**
- * Prepare - e.g., get Parameters.
- */
- protected void prepare() {
- ProcessInfoParameter[] para = getParameter();
-
- for (int i = 0; i < para.length; i++) {
- String name = para[i].getParameterName();
- if (para[i].getParameter() == null)
- ;
- else if (name.equals("PP_Product_BOM_ID"))
- p_PP_Product_BOM_ID = para[i].getParameterAsInt();
- else
- log.log(Level.SEVERE, "prepare - Unknown Parameter: " + name);
- }
- p_Record_ID = getRecord_ID();
-
- } // prepare
-
- protected String doIt() throws Exception {
-
- log.info("From PP_Product_BOM_ID=" + p_PP_Product_BOM_ID + " to " + p_Record_ID);
- if (p_Record_ID == 0)
- throw new IllegalArgumentException("Target PP_Product_BOM_ID == 0");
- if (p_PP_Product_BOM_ID == 0)
- throw new IllegalArgumentException("Source PP_Product_BOM_ID == 0");
-
- MPPProductBOM fromBom = new MPPProductBOM(ctx, p_PP_Product_BOM_ID, get_TrxName());
- MPPProductBOM toBOM = new MPPProductBOM(ctx, p_Record_ID, get_TrxName());
- if (toBOM.getLines().length > 0)
- throw new AdempiereSystemError("@Error@ Existing BOM Line(s)");
-
- MPPProductBOMLine[] frombomlines = fromBom.getLines();
- for (MPPProductBOMLine frombomline : frombomlines) {
- MPPProductBOMLine tobomline = new MPPProductBOMLine(ctx, 0, get_TrxName());
- MPPProductBOMLine.copyValues(frombomline, tobomline);
- tobomline.setPP_Product_BOM_ID(toBOM.getPP_Product_BOM_ID());
- tobomline.save();
- ++no;
- }
- return "OK";
- }
-
- /**
- * Post process actions (outside trx).
- *
- * @param success true if the process was success
- * @since 3.1.4
- */
- protected void postProcess(boolean success) {
-
- this.addLog("@Copied@=" + no);
-
- }
-}
diff --git a/base/src/org/eevolution/process/DistributionRunOrders.java b/base/src/org/eevolution/process/DistributionRunOrders.java
deleted file mode 100644
index 6201a5676d..0000000000
--- a/base/src/org/eevolution/process/DistributionRunOrders.java
+++ /dev/null
@@ -1,375 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.process;
-
-import java.math.BigDecimal;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.Timestamp;
-import java.util.logging.Level;
-
-import org.compiere.model.MDistributionRun;
-import org.compiere.model.MDistributionRunLine;
-import org.compiere.model.MDocType;
-import org.compiere.model.MPInstance;
-import org.compiere.model.MPInstancePara;
-import org.compiere.model.MProcess;
-import org.compiere.model.MStorage;
-import org.compiere.process.ProcessInfo;
-import org.compiere.process.ProcessInfoParameter;
-import org.compiere.process.SvrProcess;
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.compiere.util.Msg;
-import org.compiere.util.Trx;
-
-/**
- * DistributionRun Orders
- * @author victor.perez@e-evolution.com
- * FR Let use the Distribution List and Distribution Run for DO
- * @see http://sourceforge.net/tracker/index.php?func=detail&aid=2030865&group_id=176962&atid=879335
- */
-public class DistributionRunOrders extends SvrProcess
-{
- /** The Run to execute */
-
- private int p_M_DistributionList_ID = 0;
-
-
- /** Date Promised */
- private Timestamp p_DatePromised = null;
- /** Date Promised */
- //private Timestamp p_DatePromised_To = null;
- /** Organization */
- private int p_AD_Org_ID = 0;
- /** Is Only Test */
- private String p_IsTest = "N";
- /** Warehouse */
- private int p_M_Warehouse_ID = 0;
- /** Create Distribution Order Consolidate */
- private String p_ConsolidateDocument = "N";
- /** Create Distribution Based in the DRP Demand */
- private String p_BasedInDamnd = "N";
-
- private MDistributionRun m_run = null;
-
-
- /**
- * Prepare - e.g., get Parameters.
- */
- protected void prepare()
- {
- ProcessInfoParameter[] para = getParameter();
-
- for (int i = 0; i < para.length; i++)
- {
- String name = para[i].getParameterName();
-
- if (para[i].getParameter() == null)
- ;
- else if (name.equals("AD_Org_ID"))
- p_AD_Org_ID = ((BigDecimal)para[i].getParameter()).intValue();
- else if (name.equals("M_Warehouse_ID"))
- p_M_Warehouse_ID = ((BigDecimal)para[i].getParameter()).intValue();
- else if (name.equals("M_DistributionList_ID"))
- p_M_DistributionList_ID = ((BigDecimal)para[i].getParameter()).intValue();
- else if (name.equals("DatePromised"))
- {
- p_DatePromised = (Timestamp)para[i].getParameter();
- //p_DatePromised_To = (Timestamp)para[i].getParameter_To();
- }
- else if(name.equals("ConsolidateDocument"))
- p_ConsolidateDocument = (String)para[i].getParameter();
- else if (name.equals("IsRequiredDRP"))
- p_BasedInDamnd = (String)para[i].getParameter();
- else if (name.equals("IsTest"))
- p_IsTest = (String)para[i].getParameter();
- else
- log.log(Level.SEVERE,"prepare - Unknown Parameter: " + name);
- }
-
- } // prepare
-
-
- /**
- * doIT - run process
- */
- protected String doIt() throws Exception
- {
- if(p_BasedInDamnd.equals("Y"))
- {
- if(!generateDistributionDemand())
- throw new Exception(Msg.getMsg(getCtx(), "ProcessFailed"),CLogger.retrieveException());
- }
- else
- {
- if(!generateDistribution())
- throw new Exception(Msg.getMsg(getCtx(), "ProcessFailed"),CLogger.retrieveException());
- }
-
- if(!executeDistribution())
- throw new Exception(Msg.getMsg(getCtx(), "ProcessFailed"),CLogger.retrieveException());
-
- return Msg.getMsg(getCtx(), "ProcessOK");
- }
-
- //Create Distribution Run Line
- public boolean generateDistribution()
- {
- m_run = new MDistributionRun(this.getCtx(), 0 , this.get_TrxName());
- m_run.setName("Generate from DRP " + p_DatePromised);
- //m_run.setDescription("Generate from DRP");
- m_run.save();
-
- StringBuffer sql = new StringBuffer("SELECT M_Product_ID , SUM (QtyOrdered-QtyDelivered) AS TotalQty, l.M_Warehouse_ID FROM DD_OrderLine ol INNER JOIN M_Locator l ON (l.M_Locator_ID=ol.M_Locator_ID) INNER JOIN DD_Order o ON (o.DD_Order_ID=ol.DD_Order_ID) ");
- sql.append(" WHERE o.DocStatus IN ('DR','IN') AND ol.DatePromised <= ? AND l.M_Warehouse_ID=? GROUP BY M_Product_ID");
-
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- try
- {
- pstmt = DB.prepareStatement (sql.toString(),get_TrxName());
- pstmt.setTimestamp(1, p_DatePromised);
- //pstmt.setTimestamp(2, p_DatePromised_To);
- pstmt.setInt(2, p_M_Warehouse_ID);
-
- rs = pstmt.executeQuery();
- int line = 10;
- while (rs.next())
- {
- int M_Product_ID = rs.getInt("M_Product_ID");
- BigDecimal QtyAvailable = MStorage.getQtyAvailable(p_M_Warehouse_ID,0 , M_Product_ID , 0, get_TrxName());
- BigDecimal QtyOrdered = rs.getBigDecimal("TotalQty");
-
- MDistributionRunLine m_runLine = new MDistributionRunLine(getCtx(),0 ,get_TrxName());
- m_runLine.setM_DistributionRun_ID(m_run.getM_DistributionRun_ID());
- m_runLine.setAD_Org_ID(p_AD_Org_ID);
- m_runLine.setM_DistributionList_ID(p_M_DistributionList_ID);
- m_runLine.setLine(line);
- m_runLine.setM_Product_ID(M_Product_ID);
- m_runLine.setDescription(Msg.getMsg(getCtx(), "QtyAvailable") +" : " + QtyAvailable + " " +Msg.getMsg(getCtx(), "QtyOrdered") + " : " + QtyOrdered);
- if(QtyOrdered.compareTo(QtyAvailable) > 0)
- {
- QtyOrdered = QtyAvailable;
- }
- m_runLine.setTotalQty(QtyOrdered);
- m_runLine.save();
- line += 10;
- }
- }
- catch (Exception e)
- {
- log.log(Level.SEVERE,"doIt - " + sql, e);
- return false;
- }
- finally
- {
- DB.close(rs, pstmt);
- rs = null;
- pstmt = null;
- }
-
- return true;
- }
-
- //Create Distribution Run Line
- public boolean generateDistributionDemand()
- {
- m_run = new MDistributionRun(this.getCtx(), 0 , null);
- m_run.setName("Generate from DRP " + p_DatePromised);
- m_run.save();
-
- StringBuffer sql = new StringBuffer("SELECT M_Product_ID , SUM (TargetQty) AS MinQty, SUM (QtyOrdered-QtyDelivered) AS TotalQty FROM DD_OrderLine ol INNER JOIN M_Locator l ON (l.M_Locator_ID=ol.M_Locator_ID) INNER JOIN DD_Order o ON (o.DD_Order_ID=ol.DD_Order_ID) ");
- sql.append(" WHERE o.DocStatus IN ('DR','IN') AND ol.DatePromised <= ? AND l.M_Warehouse_ID=? GROUP BY M_Product_ID");
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- try
- {
- pstmt = DB.prepareStatement (sql.toString(),get_TrxName());
- pstmt.setTimestamp(1, p_DatePromised);
- //pstmt.setTimestamp(2, p_DatePromised_To);
- pstmt.setInt(2, p_M_Warehouse_ID);
-
- rs = pstmt.executeQuery();
- int line = 10;
- while (rs.next())
- {
- int M_Product_ID = rs.getInt("M_Product_ID");
- BigDecimal QtyAvailable = MStorage.getQtyAvailable(p_M_Warehouse_ID,0 , M_Product_ID , 0, get_TrxName());
- if(QtyAvailable.signum()<= 0)
- continue;
- BigDecimal QtyToDistribute = rs.getBigDecimal("TotalQty");
- if(QtyAvailable.compareTo(QtyToDistribute) >= 0)
- QtyAvailable = QtyToDistribute;
- else
- {
- BigDecimal QtyReserved = getTargetQty(M_Product_ID);
- QtyToDistribute = QtyAvailable.subtract(QtyReserved);
- }
-
- //if(QtyToDistribute.equals(Env.ZERO))
- // continue;
-
- MDistributionRunLine m_runLine = new MDistributionRunLine(getCtx(),0 ,get_TrxName());
- m_runLine.setM_DistributionRun_ID(m_run.getM_DistributionRun_ID());
- m_runLine.setAD_Org_ID(p_AD_Org_ID);
- m_runLine.setM_DistributionList_ID(p_M_DistributionList_ID);
- m_runLine.setLine(line);
- m_runLine.setM_Product_ID(M_Product_ID);
- m_runLine.setDescription(Msg.translate(getCtx(), "QtyAvailable") +" : " + QtyAvailable + " " +Msg.translate(getCtx(), "QtyOrdered") + " : " + QtyToDistribute);
- //m_runLine.setMinQty(rs.getBigDecimal("MinQty"));
-
-
- m_runLine.setTotalQty(QtyToDistribute);
- m_runLine.saveEx();
- line += 10;
- }
- }
- catch (Exception e)
- {
- log.log(Level.SEVERE,"doIt - " + sql, e);
- return false;
- }
- finally
- {
- DB.close(rs, pstmt);
- rs = null;
- pstmt = null;
- }
-
- return true;
- }
- /**
- * Get Qty TargetQty for a Warehouse
- * @param M_Product_ID
- * @return
- */
- private BigDecimal getTargetQty(int M_Product_ID)
- {
- StringBuffer sql = new StringBuffer("SELECT SUM (TargetQty) FROM DD_OrderLine ol INNER JOIN M_Locator l ON (l.M_Locator_ID=ol.M_Locator_ID) INNER JOIN DD_Order o ON (o.DD_Order_ID=ol.DD_Order_ID) ");
- sql.append(" WHERE o.DocStatus IN ('DR','IN') AND ol.DatePromised <= ? AND l.M_Warehouse_ID=? AND ol.M_Product_ID=? GROUP BY M_Product_ID");
- BigDecimal qty = DB.getSQLValueBD(get_TrxName(), sql.toString(), new Object[]{p_DatePromised, p_M_Warehouse_ID, M_Product_ID});
- // SQL may return no rows or null
- if (qty == null)
- return Env.ZERO;
-
- return qty;
- }
-
- /**
- * Execute Distribution Run
- * @return
- * @throws Exception
- */
- public boolean executeDistribution() throws Exception
- {
-
- int M_DocType_ID = 0;
- MDocType[] doc = MDocType.getOfDocBaseType(getCtx(), MDocType.DOCBASETYPE_DistributionOrder);
-
- if (doc==null || doc.length == 0)
- {
- log.severe ("Not found default document type for docbasetype " + MDocType.DOCBASETYPE_DistributionOrder);
- throw new Exception(Msg.getMsg(getCtx(), "SequenceDocNotFound"),CLogger.retrieveException());
- }
- else
- M_DocType_ID = doc[0].getC_DocType_ID();
-
- String trxName = Trx.createTrxName("Run Distribution to DRP");
- Trx trx = Trx.get(trxName, true); //trx needs to be committed too
-
- //Prepare Process
- int AD_Process_ID = 271;
- AD_Process_ID = MProcess.getProcess_ID("M_DistributionRun Create",get_TrxName());
-
- MPInstance instance = new MPInstance(Env.getCtx(), AD_Process_ID, 0);
- if (!instance.save())
- {
- throw new Exception(Msg.getMsg(getCtx(), "ProcessNoInstance"),CLogger.retrieveException());
- }
-
- //call process
- ProcessInfo pi = new ProcessInfo ("M_DistributionRun Orders", AD_Process_ID);
- pi.setAD_PInstance_ID (instance.getAD_PInstance_ID());
- pi.setRecord_ID(m_run.getM_DistributionRun_ID());
- // Add Parameter - Selection=Y
- MPInstancePara ip = new MPInstancePara(instance, 10);
- ip.setParameter("C_DocType_ID", M_DocType_ID );
- if (!ip.save())
- {
- String msg = "No Parameter added"; // not translated
- throw new Exception(msg,CLogger.retrieveException());
- }
- // Add Parameter - DatePromised
- ip = new MPInstancePara(instance, 20);
- ip.setParameter("DatePromised", "");
- ip.setP_Date(p_DatePromised);
- //ip.setP_Date_To(p_DatePromised_To);
- if (!ip.save())
- {
- String msg = "No Parameter added"; // not translated
- throw new Exception(msg,CLogger.retrieveException());
- }
- // Add Parameter - M_Warehouse_ID
- ip = new MPInstancePara(instance, 30);
- ip.setParameter("M_Warehouse_ID",p_M_Warehouse_ID);
- if (!ip.save())
- {
- String msg = "No Parameter added"; // not translated
- throw new Exception(msg,CLogger.retrieveException());
- }
- // Add Parameter - CreateDO
- ip = new MPInstancePara(instance, 40);
- ip.setParameter("ConsolidateDocument",p_ConsolidateDocument);
- if (!ip.save())
- {
- String msg = "No Parameter added"; // not translated
- throw new Exception(msg,CLogger.retrieveException());
- }
- // Add Parameter - IsTest=Y
- ip = new MPInstancePara(instance, 50);
- ip.setParameter("IsTest",p_IsTest);
- if (!ip.save())
- {
- String msg = "No Parameter added"; // not translated
- throw new Exception(msg,CLogger.retrieveException());
- }
- //Distribution List
- ip = new MPInstancePara(instance, 60);
- ip.setParameter("M_DistributionList_ID",p_M_DistributionList_ID);
- if (!ip.save())
- {
- String msg = "No Parameter added"; // not translated
- throw new Exception(msg,CLogger.retrieveException());
- }
- //Based in DRP Demand
- ip = new MPInstancePara(instance, 70);
- ip.setParameter("IsRequiredDRP",p_BasedInDamnd);
- if (!ip.save())
- {
- String msg = "No Parameter added"; // not translated
- throw new Exception(msg,CLogger.retrieveException());
- }
-
- // Execute Process
- MProcess worker = new MProcess(getCtx(),AD_Process_ID,get_TrxName());
- worker.processIt(pi, Trx.get(get_TrxName(), true));
- m_run.delete(true);
- return true;
- }
-}
diff --git a/base/src/org/eevolution/process/EnableNativeSequence.java b/base/src/org/eevolution/process/EnableNativeSequence.java
deleted file mode 100644
index 5b1b7e23d4..0000000000
--- a/base/src/org/eevolution/process/EnableNativeSequence.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.process;
-
-
-
-import java.util.List;
-import java.util.logging.Level;
-
-import org.adempiere.exceptions.AdempiereException;
-import org.compiere.Adempiere;
-import org.compiere.model.MSequence;
-import org.compiere.model.MSysConfig;
-import org.compiere.model.MTable;
-import org.compiere.model.Query;
-import org.compiere.model.X_AD_Table;
-import org.compiere.process.SvrProcess;
-import org.compiere.util.CLogMgt;
-import org.compiere.util.DB;
-
-/**
- * Enable Native Sequence
- *
- * @author Victor Perez, e-Evolution, S.C.
- */
-public class EnableNativeSequence extends SvrProcess
-{
-
- /**
- * Prepare - e.g., get Parameters.
- */
- protected void prepare()
- {
- } // prepare
-
- protected String doIt()
- {
- boolean SYSTEM_NATIVE_SEQUENCE = MSysConfig.getBooleanValue("SYSTEM_NATIVE_SEQUENCE",false);
-
- if(SYSTEM_NATIVE_SEQUENCE)
- throw new AdempiereException("Native Sequence is Actived");
- else
- {
- DB.executeUpdateEx("UPDATE AD_SysConfig SET Value='Y' WHERE Name='SYSTEM_NATIVE_SEQUENCE'",null);
- MSysConfig.resetCache();
- }
-
- List tables = new Query(getCtx(),X_AD_Table.Table_Name,"", get_TrxName()).list();
- for(MTable table : tables)
- {
- if(!table.isView())
- {
- if(!MSequence.createTableSequence(getCtx(), table.getTableName(), get_TrxName()))
- {
- DB.executeUpdateEx("UPDATE AD_SysConfig SET Value='N' WHERE Name='SYSTEM_NATIVE_SEQUENCE'",null);
- MSysConfig.resetCache();
- new AdempiereException("Can not create Native Sequence");
- }
- else
- {
- this.addLog("Create Native Sequence for : "+table.getTableName());
- }
- }
- }
-
-
- return "@OK@";
- }
-
- /**
- * Main test
- * @param args
- * @throws Exception
- */
- public static void main(String[] args)
- {
-
- try {
- Adempiere.startupEnvironment(true);
- CLogMgt.setLevel(Level.ALL);
- EnableNativeSequence seqs = new EnableNativeSequence();
- seqs.doIt();
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-}
-
diff --git a/base/src/org/eevolution/process/Export.java b/base/src/org/eevolution/process/Export.java
deleted file mode 100644
index 1ce937fe54..0000000000
--- a/base/src/org/eevolution/process/Export.java
+++ /dev/null
@@ -1,408 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - e-Evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-
-package org.eevolution.process;
-
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.HashMap;
-import java.util.logging.Level;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.compiere.model.MClient;
-import org.compiere.model.MColumn;
-import org.compiere.model.MTable;
-import org.compiere.model.PO;
-import org.compiere.process.ProcessInfoParameter;
-import org.compiere.process.SvrProcess;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.compiere.util.Msg;
-import org.eevolution.model.MEXPFormat;
-import org.eevolution.model.MEXPFormatLine;
-import org.eevolution.model.X_EXP_FormatLine;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Text;
-
-/**
- *
- * @author Trifon Trifonov
- * @version $Id: $
- */
-public class Export extends SvrProcess
-{
- private static final String TOTAL_SEGMENTS = "${totalSegments}";
-
- /** Client Parameter */
- protected int p_AD_Client_ID = 0;
-
- /** Table Parameter */
- protected int p_AD_Table_ID = 0;
-
- /** Record ID */
- protected int p_Record_ID = 0;
-
- /** XML Document */
- private Document outDocument = null;
-
- /** Date Time Format */
-// private SimpleDateFormat m_dateTimeFormat = null;
-
- /** Date Format */
-// private SimpleDateFormat m_dateFormat = null;
-
- /** Custom Date Format */
-// private SimpleDateFormat m_customDateFormat = null;
-
- /** Table ID */
- int AD_Table_ID = 0;
-
- /**
- * Get Parameters
- */
- protected void prepare ()
- {
-
- p_Record_ID = getRecord_ID();
- if (p_AD_Client_ID == 0)
- p_AD_Client_ID = Env.getAD_Client_ID(getCtx());
- AD_Table_ID = getTable_ID();
-
- // C_Invoice; AD_Table_ID = 318
- StringBuffer sb = new StringBuffer ("AD_Table_ID=").append(AD_Table_ID);
- sb.append("; Record_ID=").append(getRecord_ID());
- // Parameter
- ProcessInfoParameter[] para = getParameter();
- for (int i = 0; i < para.length; i++)
- {
- String name = para[i].getParameterName();
- if (para[i].getParameter() == null)
- ;
- else if (name.equals("AD_Table_ID"))
- p_AD_Table_ID = para[i].getParameterAsInt();
- else
- log.log(Level.SEVERE, "Unknown Parameter: " + name);
- }
-
- // TODO - we can get Language from Business Partner
-// m_dateTimeFormat = DisplayType.getDateFormat(DisplayType.DateTime, Env.getLanguage(getCtx()));
-// m_dateFormat = DisplayType.getDateFormat(DisplayType.Date, Env.getLanguage(getCtx()));
- //
- log.info(sb.toString());
- }
-
- // create new Document
- Document createNewDocument() throws ParserConfigurationException {
- DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
- return documentBuilder.newDocument();
-
- }
-
- /**
- * Process - Generate Export Format
- * @return info
- */
- @SuppressWarnings("unchecked")
- protected String doIt () throws Exception
- {
- outDocument = createNewDocument();
-
- MClient client = MClient.get (getCtx(), p_AD_Client_ID);
- log.info(client.toString());
- // TODO - get proper Export Format!
- int EXP_Format_ID = 1000000;
-
- MTable table = MTable.get(getCtx(), AD_Table_ID);
- log.info("Table = " + table);
- PO po = table.getPO (p_Record_ID, get_TrxName());
-
- if (po.get_KeyColumns().length > 1 || po.get_KeyColumns().length < 1) {
- throw new Exception(Msg.getMsg (getCtx(), "ExportMultiColumnNotSupported"));
- }
- MEXPFormat exportFormat = new MEXPFormat(getCtx(), EXP_Format_ID, get_TrxName());
-
- StringBuffer sql = new StringBuffer("SELECT * ")
- .append("FROM ").append(table.getTableName()).append(" ")
- .append("WHERE ").append(po.get_KeyColumns()[0]).append("=?")
- ;
-
- if (exportFormat.getWhereClause() != null & !"".equals(exportFormat.getWhereClause())) {
- sql.append(" AND ").append(exportFormat.getWhereClause());
- }
-
- ResultSet rs = null;
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement(sql.toString(), get_TrxName());
- pstmt.setInt(1, p_Record_ID);
- rs = pstmt.executeQuery();
- if (rs.next())
- {
- HashMap variableMap = new HashMap();
- variableMap.put(TOTAL_SEGMENTS, new Integer(1));
-
- Element rootElement = outDocument.createElement(exportFormat.getValue());
- rootElement.appendChild(outDocument.createComment(exportFormat.getDescription()));
- outDocument.appendChild(rootElement);
- generateExportFormat(rootElement, exportFormat, rs, po, p_Record_ID, variableMap);
- }
-
- } finally {
- try {
- if (rs != null) rs.close();
- if (pstmt != null) pstmt.close();
- } catch (SQLException ex) {/*ignored*/}
- rs = null;
- pstmt = null;
- }
-
-/* int C_EDIProcessorType_ID = ediProcessor.getC_EDIProcessorType_ID();
- X_C_EDIProcessorType ediProcessType = new X_C_EDIProcessorType(getCtx(), C_EDIProcessorType_ID, get_TrxName() );
-
- String javaClass = ediProcessType.getJavaClass();
- try {
- Class clazz = Class.forName(javaClass);
- IOutbandEdiProcessor outbandProcessor = (IOutbandEdiProcessor)clazz.newInstance();
-
- outbandProcessor.process(getCtx(), ediProcessor, result.toString(), "C_Invoice-"+p_Record_ID+".txt", Trx.get( get_TrxName(), false ));
- } catch (Exception e) {
- result = new StringBuffer( e.toString() );
- }
-*/
- addLog(0, null, null, Msg.getMsg (getCtx(), "ExportProcessResult") + "\n" + outDocument.toString());
- return outDocument.toString();
- }
-
-
- /*
- * Trifon Generate Export Format process; RESULT =
- *
- * 101
- *
- */
- private void generateExportFormat(Element rootElement, MEXPFormat exportFormat, ResultSet rs, PO masterPO, int masterID, HashMap variableMap) throws SQLException, Exception
- {
- MEXPFormatLine[] formatLines = (MEXPFormatLine[]) exportFormat.getFormatLines();
- @SuppressWarnings("unused")
- boolean elementHasValue = false;
-
- for (int i = 0; i < formatLines.length; i++) {
- if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_XMLElement) ) {
- // process single XML Attribute
- // Create new element
- Element newElement = outDocument.createElement(formatLines[i].getValue());
-
- if (formatLines[i].getAD_Column_ID() == 0) {
- throw new Exception(Msg.getMsg (getCtx(), "EXPColumnMandatory"));
- }
- MColumn column = MColumn.get(getCtx(), formatLines[i].getAD_Column_ID());
- if (column == null) {
- throw new Exception(Msg.getMsg (getCtx(), "EXPColumnMandatory"));
- }
- if ( column.isVirtualColumn() ) {
- log.info("This is Virtual Column!");
- } else { }
- //log.info("["+column.getColumnName()+"]");
-
- Object value = rs.getObject(column.getColumnName());
- String valueString = null;
- if (value != null) {
- valueString = value.toString();
- } else {
- if (formatLines[i].isMandatory()) {
- throw new Exception(Msg.getMsg (getCtx(), "EXPFieldMandatory"));
- }
- }
-/* if (column.getAD_Reference_ID() == DisplayType.Date) {
- if (valueString != null) {
- if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) {
- m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy"
- //Date date = m_customDateFormat.parse ( valueString );
- valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
- } else {
- valueString = m_dateFormat.format (Timestamp.valueOf (valueString));
- }
-
- }
- } else if (column.getAD_Reference_ID() == DisplayType.DateTime) {
- if (valueString != null) {
- if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) {
- m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy"
- //Date date = m_customDateFormat.parse ( valueString );
- valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
- } else {
- valueString = m_dateTimeFormat.format (Timestamp.valueOf (valueString));
- }
- }
- }*/
- log.info("EXP Field - column=["+column.getColumnName()+"]; value=" + value);
- if (valueString != null && !"".equals(valueString) && !"null".equals(valueString)) {
- Text newText = outDocument.createTextNode(valueString);
- newElement.appendChild(newText);
- rootElement.appendChild(newElement);
- elementHasValue = true;
- //increaseVariable(variableMap, formatLines[i].getVariableName()); // Increase value of Variable if any Variable
- //increaseVariable(variableMap, TOTAL_SEGMENTS);
- } else {
- // Empty field.
- }
- } else if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_XMLAttribute) ) {
- // process single XML Attribute
-/* // Create new element
- Element newElement = outDocument.createElement(formatLines[i].getValue());
- if (hasContent) {
- rootElement.appendChild(newElement);
- }*/
- if (formatLines[i].getAD_Column_ID() == 0) {
- throw new Exception(Msg.getMsg (getCtx(), "EXPColumnMandatory"));
- }
- MColumn column = MColumn.get(getCtx(), formatLines[i].getAD_Column_ID());
- if (column == null) {
- throw new Exception(Msg.getMsg (getCtx(), "EXPColumnMandatory"));
- }
- if ( column.isVirtualColumn() ) {
- log.info("This is Virtual Column!");
- } else { }
- //log.info("["+column.getColumnName()+"]");
-
- Object value = rs.getObject(column.getColumnName());
- String valueString = null;
- if (value != null) {
- valueString = value.toString();
- } else {
- if (formatLines[i].isMandatory()) {
- throw new Exception(Msg.getMsg (getCtx(), "EXPFieldMandatory"));
- }
- }
-/* if (column.getAD_Reference_ID() == DisplayType.Date) {
- if (valueString != null) {
- if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) {
- m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy"
- //Date date = m_customDateFormat.parse ( valueString );
- valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
- } else {
- valueString = m_dateFormat.format (Timestamp.valueOf (valueString));
- }
-
- }
- } else if (column.getAD_Reference_ID() == DisplayType.DateTime) {
- if (valueString != null) {
- if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) {
- m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy"
- //Date date = m_customDateFormat.parse ( valueString );
- valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
- } else {
- valueString = m_dateTimeFormat.format (Timestamp.valueOf (valueString));
- }
- }
- }*/
- log.info("EXP Field - column=["+column.getColumnName()+"]; value=" + value);
- if (valueString != null && !"".equals(valueString) && !"null".equals(valueString)) {
- rootElement.setAttribute(formatLines[i].getValue(), valueString);
- elementHasValue = true;
- //increaseVariable(variableMap, formatLines[i].getVariableName()); // Increase value of Variable if any Variable
- //increaseVariable(variableMap, TOTAL_SEGMENTS);
- } else {
- // Empty field.
- }
- } else if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_EmbeddedEXPFormat) ) {
- // process Embedded Export Format
-
- int embeddedFormat_ID = formatLines[i].getEXP_EmbeddedFormat_ID();
- MEXPFormat embeddedFormat = new MEXPFormat(getCtx(), embeddedFormat_ID, get_TrxName());
-
- MTable tableEmbedded = MTable.get(getCtx(), embeddedFormat.getAD_Table_ID());
- log.info("Table Embedded = " + tableEmbedded);
- StringBuffer sql = new StringBuffer("SELECT * ")
- .append("FROM ").append(tableEmbedded.getTableName()).append(" ")
- .append("WHERE ").append(masterPO.get_KeyColumns()[0]).append("=?")
- //+ "WHERE " + po.get_WhereClause(false)
- ;
- if (embeddedFormat.getWhereClause() != null & !"".equals(embeddedFormat.getWhereClause())) {
- sql.append(" AND ").append(embeddedFormat.getWhereClause());
- }
- ResultSet rsEmbedded = null;
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement(sql.toString(), get_TrxName());
- pstmt.setInt(1, masterID);
- rsEmbedded = pstmt.executeQuery();
- while (rsEmbedded.next())
- {
- //System.out.println("Trifon - tableEmbedded.getTableName()_ID = "+ tableEmbedded.getTableName() + "_ID");
- int embeddedID = rsEmbedded.getInt(tableEmbedded.getTableName() + "_ID");
- PO poEmbedded = tableEmbedded.getPO (embeddedID, get_TrxName());
-
- Element embeddedElement = outDocument.createElement(formatLines[i].getValue());
- embeddedElement.appendChild(outDocument.createComment(formatLines[i].getDescription()));
- generateExportFormat(embeddedElement, embeddedFormat, rsEmbedded, poEmbedded, embeddedID, variableMap);
- rootElement.appendChild(embeddedElement);
- }
-
- } finally {
- try {
- if (rsEmbedded != null) rsEmbedded.close();
- if (pstmt != null) pstmt.close();
- } catch (SQLException ex) { }
- rsEmbedded = null;
- pstmt = null;
- }
-
- } else {
- throw new Exception(Msg.getMsg (getCtx(), "EXPUnknownLineType"));
- }
- }
- }
-
- /**
- * @param variableMap
- * @param variableName
- */
- @SuppressWarnings("unused")
- private void increaseVariable(HashMap variableMap, String variableName) {
- if (variableName != null && !"".equals(variableName) ) {
- Integer var = variableMap.get(variableName);
- if (var == null) {
- var = new Integer(0);
- }
- int intValue = var.intValue();
- intValue++;
- variableMap.put(variableName, new Integer(intValue));
- }
- }
-
-}
diff --git a/base/src/org/eevolution/process/ExportFormatGenerator.java b/base/src/org/eevolution/process/ExportFormatGenerator.java
deleted file mode 100644
index d5097cdc65..0000000000
--- a/base/src/org/eevolution/process/ExportFormatGenerator.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.process;
-
-import java.util.Hashtable;
-import java.util.logging.Level;
-
-import org.compiere.model.MColumn;
-import org.compiere.model.MTab;
-import org.compiere.model.MTable;
-import org.compiere.model.MWindow;
-import org.compiere.process.ProcessInfoParameter;
-import org.compiere.process.SvrProcess;
-import org.compiere.util.DB;
-import org.compiere.util.DisplayType;
-import org.eevolution.model.MEXPFormat;
-import org.eevolution.model.MEXPFormatLine;
-
-
-
-/**
- * Create a Export Format from a Window
- *
- * @author Victor Perez www.e-evolution.com
- * @version $Id: ExportFormatGenerator.java,v 1.0
- */
-public class ExportFormatGenerator extends SvrProcess
-{
-
- private int p_AD_Window_ID = 0;
- private boolean p_IsMandatory = false;
- private boolean p_IsInsertRecord= false;
- private Hashtable m_formats = new Hashtable();
- private String m_parent_table = null;
- private String m_format_value = null;
- private int m_level = -1;
-
- /**
- * Prepare - e.g., get Parameters.
- */
- protected void prepare()
- {
- ProcessInfoParameter[] para = getParameter();
- for (int i = 0; i < para.length; i++)
- {
- String name = para[i].getParameterName();
- if (para[i].getParameter() == null)
- ;
- else if (name.equals("AD_Window_ID"))
- p_AD_Window_ID = para[i].getParameterAsInt();
- else if (name.equals("IsMandatory"))
- {
- p_IsMandatory = "Y".equals(para[i].getParameter());
- }
- else if (name.equals("IsInsertRecord"))
- {
- p_IsInsertRecord = "Y".equals(para[i].getParameter());
- }
- else
- log.log(Level.SEVERE, "Unknown Parameter: " + name);
- }
- } // prepare
-
- /**
- * Generate Export Format
- * @return info
- * @throws Exception
- */
- protected String doIt () throws Exception
- {
- MWindow window = new MWindow(getCtx(),p_AD_Window_ID, get_TrxName());
- MTab[] tabs = window.getTabs(true, get_TrxName());
-
-
- for(MTab tab:tabs)
- {
- MTable table = null;
- String format = null;
- if(tab.isActive())
- {
- if(p_IsInsertRecord&tab.isInsertRecord())
- {
- table = new MTable(getCtx(), tab.getAD_Table_ID(), get_TrxName());
- format = createFormat(table);
- }
- else if(!p_IsInsertRecord)
- {
- table = new MTable(getCtx(), tab.getAD_Table_ID(), get_TrxName());
- format = createFormat(table);
- }else
- continue;
-
- if (tab.getTabLevel() > m_level)
- {
- m_parent_table = table.getTableName();
- m_format_value = format;
- }
- }
- }
- return "ok";
- } // doIt
-
- private String createFormat(MTable table) throws Exception
- {
- log.info("Table Name:"+table.getTableName());
- MColumn[] cols = table.getColumns(true);
- String unique = null;
- boolean fieldname = false;
- for(MColumn col : cols)
- {
- if(col.isIdentifier() && col.getSeqNo() == 1)
- {
- unique = col.getColumnName();
- if(unique.equals("Name"))
- fieldname = true;
- log.info("Unique Key"+unique);
- break;
- }
- }
-
- if (unique==null)
- unique="Name";
-
- MEXPFormat format = null;
- //String formatValue = table.getTableName()+"_"+unique;
- String formatValue = table.getTableName();
- log.info("Export Format Value:"+formatValue);
- format = (MEXPFormat) m_formats.get(formatValue);
- if (format != null)
- return format.getValue();
-
- format = MEXPFormat.getFormatByValueAD_Client_IDAndVersion(getCtx(), formatValue, getAD_Client_ID(), "1", get_TrxName());
- if(format == null)
- format = new MEXPFormat(getCtx(), 0 , get_TrxName());
-
- format.setValue(formatValue);
- format.setName(table.getName());
- format.setAD_Table_ID(table.getAD_Table_ID());
- format.setDescription(table.getDescription());
- format.setHelp(table.getHelp());
- format.setVersion("1");
- format.save();
- if (format != null)
- m_formats.put(format.getValue(), format);
-
- int position = 10;
- for(MColumn col : cols)
- {
- if(p_IsMandatory)
- {
- if(col.isMandatory())
- createFormatLine(format, table, col, position,false);
- }
- else
- createFormatLine(format, table, col, position,false);
-
- position++;
- }
- return format.getValue();
- }
-
- private int createFormatLine(MEXPFormat format, MTable table, MColumn col, int position,boolean force) throws Exception
- {
-
- MEXPFormatLine format_line =null;
- String formatlinevalue= col.getColumnName();
- format_line = MEXPFormatLine.getFormatLineByValue(getCtx(),formatlinevalue ,format.getEXP_Format_ID(),get_TrxName());
- if(format_line==null)
- format_line = new MEXPFormatLine(getCtx(),0,get_TrxName());
-
- format_line.setEXP_Format_ID(format.getEXP_Format_ID());
- format_line.setValue(formatlinevalue);
- format_line.setName(col.getName());
- format_line.setDescription(col.getDescription());
- format_line.setHelp(col.getHelp());
- format_line.setPosition(position);
- format_line.setIsMandatory(col.isMandatory());
- if(force||col.isIdentifier())
- {
- format_line.setIsPartUniqueIndex(true);
- format_line.setIsActive(true);
- }
- else
- format_line.setIsActive(false);
- MTable tabledir = null;
-
- if(col.getColumnName().equals(m_parent_table+"_ID")&(col.getAD_Reference_ID()==DisplayType.Search|col.getAD_Reference_ID()==DisplayType.TableDir))
- {
- MEXPFormat referenceFormat = null;
- referenceFormat = MEXPFormat.getFormatByValueAD_Client_IDAndVersion(getCtx(), m_parent_table+"_Key", getAD_Client_ID(), "1", get_TrxName());
- if(referenceFormat == null)
- referenceFormat = new MEXPFormat(getCtx(), 0 , get_TrxName());
- referenceFormat.setValue(m_parent_table+"_Key");
- referenceFormat.setName(m_parent_table+"_Key");
- referenceFormat.setAD_Table_ID(table.getAD_Table_ID());
- referenceFormat.setDescription(table.getDescription());
- referenceFormat.setHelp(table.getHelp());
- referenceFormat.setVersion("1");
- referenceFormat.save();
-
- int AD_Column_ID=DB.getSQLValue(get_TrxName(), "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID=(SELECT AD_Table_ID FROM AD_Table WHERE TableName=?) AND UPPER(ColumnName)='DocumentNo'",m_parent_table);
- if(AD_Column_ID>0)
- {
- //used if the export format is a document like invoice, etc.
- createFormatLine(referenceFormat, table, new MColumn(getCtx(),AD_Column_ID,get_TrxName()), 10,true);
- AD_Column_ID=0;
- AD_Column_ID=DB.getSQLValue(get_TrxName(), "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID=(SELECT AD_Table_ID FROM AD_Table WHERE TableName=?) AND UPPER(ColumnName)='C_DocType_ID'",m_parent_table);
- if(AD_Column_ID>0)
- createFormatLine(referenceFormat, table, new MColumn(getCtx(),AD_Column_ID,get_TrxName()), 20,true);
-
- format_line.setValue(m_parent_table+"_DocumentNo_C_DocType_Key");
- format_line.setName("Key DocumentNo_C_DocType");
- format_line.setAD_Column_ID(col.getAD_Column_ID());
- format_line.setType(MEXPFormatLine.TYPE_ReferencedEXPFormat);
- format_line.setEXP_EmbeddedFormat_ID(referenceFormat.getEXP_Format_ID());
- format_line.save();
- return format_line.getEXP_FormatLine_ID();
- }else
- {
- AD_Column_ID=DB.getSQLValue(get_TrxName(), "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID=(SELECT AD_Table_ID FROM AD_Table WHERE TableName=?) AND UPPER(ColumnName)='NAME'",m_parent_table);
- if(AD_Column_ID>0)
- createFormatLine(referenceFormat, table, new MColumn(getCtx(),AD_Column_ID,get_TrxName()), 10,true);
- else
- {
- AD_Column_ID=DB.getSQLValue(get_TrxName(), "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID=(SELECT AD_Table_ID FROM AD_Table WHERE TableName=?) AND UPPER(ColumnName)='VALUE'",m_parent_table);
- if(AD_Column_ID>0)
- createFormatLine(referenceFormat, table, new MColumn(getCtx(),AD_Column_ID,get_TrxName()), 10,true);
- else
- throw new Exception("Table without name or value column");
- }
- format_line.setValue(m_parent_table+"_Key");
- format_line.setName("Key "+ col.getColumnName());
- format_line.setAD_Column_ID(col.getAD_Column_ID());
- format_line.setType(MEXPFormatLine.TYPE_ReferencedEXPFormat);
- format_line.setEXP_EmbeddedFormat_ID(referenceFormat.getEXP_Format_ID());
- format_line.save();
- return format_line.getEXP_FormatLine_ID();
- }
- }
-
- if((col.getAD_Reference_ID()==DisplayType.Table||col.getAD_Reference_ID()==DisplayType.Search)&col.getAD_Reference_Value_ID()>0)
- {
- int AD_Table_ID = DB.getSQLValue(get_TrxName(), "SELECT rt.AD_Table_ID FROM AD_Reference r INNER JOIN AD_Ref_Table rt ON (r.AD_Reference_ID=rt.AD_Reference_ID) WHERE r.AD_Reference_ID=?", col.getAD_Reference_Value_ID());
- if (AD_Table_ID > 0)
- {
- tabledir = MTable.get(getCtx(), AD_Table_ID);
- format_line.setValue(col.getColumnName()+"_Reference");
- format_line.setName("Referenced "+ tabledir.getTableName());
- format_line.setAD_Column_ID(col.getAD_Column_ID());
- String format_value = createFormat(tabledir);
- int embedded = ((MEXPFormat)m_formats.get(format_value)).getEXP_Format_ID();
- format_line.setType(MEXPFormatLine.TYPE_ReferencedEXPFormat);
- format_line.setEXP_EmbeddedFormat_ID(embedded);
- format_line.save();
- return format_line.getEXP_FormatLine_ID();
- }
-
- }
-
- if((col.getAD_Reference_ID()==DisplayType.TableDir & col.isKey()== false) || (col.getAD_Reference_ID()==DisplayType.TableDir & col.isParent() == true))
- {
-
- String tableName = col.getColumnName().substring(0, col.getColumnName().lastIndexOf("_ID"));
- log.info("Table Name:"+tableName);
-
- if(tableName==null)
- log.info("Table Name: null");
-
- tabledir = MTable.get(getCtx(), tableName);
- if(tabledir==null)
- throw new Exception ("Ilegal Table Name");
-
- format_line.setValue(tabledir.getTableName()+"_Reference");
- format_line.setName("Referenced "+ tabledir.getTableName());
-
- if (tabledir!=null)
- {
- if(m_parent_table != null)
- {
- if (col.isParent() && col.getColumnName().contains(m_parent_table))
- {
-
- int embedded = ((MEXPFormat)m_formats.get(m_format_value)).getEXP_Format_ID();
- format_line.setValue(format.getValue()+"_Embedded");
- format_line.setName("Embedded "+ format.getName());
- format_line.setEXP_EmbeddedFormat_ID(format_line.getEXP_Format_ID());
- format_line.setEXP_Format_ID(embedded);
- format_line.setType(MEXPFormatLine.TYPE_EmbeddedEXPFormat);
- format_line.setAD_Column_ID(col.getAD_Column_ID());
- format_line.save();
- log.info("Export Format Line:"+format_line.getName());
- return format_line.getEXP_FormatLine_ID();
-
- }
- }
- String format_value = createFormat(tabledir);
- int embedded = ((MEXPFormat)m_formats.get(format_value)).getEXP_Format_ID();
- format_line.setType(MEXPFormatLine.TYPE_ReferencedEXPFormat);
- format_line.setEXP_EmbeddedFormat_ID(embedded);
- }
- else
- format_line.setType(MEXPFormatLine.TYPE_XMLElement);
- }
-
- format_line.setAD_Column_ID(col.getAD_Column_ID());
- format_line.save();
- log.info("Export Format Line:"+format_line.getName());
- return format_line.getEXP_FormatLine_ID();
-
- }
-} // Generate Export Format
diff --git a/base/src/org/eevolution/process/FixPaymentCashLine.java b/base/src/org/eevolution/process/FixPaymentCashLine.java
deleted file mode 100644
index 7665aba0dc..0000000000
--- a/base/src/org/eevolution/process/FixPaymentCashLine.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
- * or via info@compiere.org or http://www.compiere.org/license.html *
- * created by Victor Perez are Copyright (C) e-Evolution,SC. All Rights Reserved.
- * Contributor(s): Victor Perez
- *****************************************************************************/
-package org.eevolution.process;
-
-import java.math.BigDecimal;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.util.ArrayList;
-import java.util.Properties;
-import java.util.logging.Level;
-
-import org.compiere.model.MCashLine;
-import org.compiere.model.MPayment;
-import org.compiere.process.ProcessInfoParameter;
-import org.compiere.process.SvrProcess;
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.compiere.util.Trx;
-
-
-
-/**
- * Fix Payment Cash Line
- * [ 1866214 ] Adempiere need can void a Cash Journal
- * https://sourceforge.net/tracker/?func=detail&atid=879335&aid=1866214&group_id=176962
- *
- * @author Sergio Ramazzina,Victor Perez
- * @version $Id: FixPaymentCashLine.java,v 1.2 2005/04/19 12:54:30 srama Exp $
- */
-public class FixPaymentCashLine extends SvrProcess {
-
-
- private static final Properties ctx = Env.getCtx();
- private static CLogger s_log = CLogger.getCLogger (FixPaymentCashLine.class);
- //private static final String AD_Client_ID = ctx.getProperty("#AD_Client_ID");
- //private static final String AD_Org_ID = ctx.getProperty("#AD_Org_ID");
-
-
- /**
- * Prepare - e.g., get Parameters.
- */
- protected void prepare()
- {
- ProcessInfoParameter[] para = getParameter();
-
- } // prepare
-
- /**
- * Perform process.
- * @return Message (clear text)
- * @throws Exception if not successful
- */
- protected String doIt() throws Exception {
-
- String sql = "SELECT cl.C_CashLine_ID, c.Name FROM C_CashLine cl INNER JOIN C_Cash c ON (c.C_Cash_ID=cl.C_Cash_ID) WHERE cl.CashType='T'";
-
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement(sql, get_TrxName());
- ResultSet rs = pstmt.executeQuery();
- while (rs.next())
- {
- Trx trx = Trx.get(Trx.createTrxName(), true);
- MCashLine cashline = new MCashLine(Env.getCtx(),rs.getInt(1),trx.getTrxName());
- Integer c_cashline_id = cashline.getC_CashLine_ID();
- MPayment[] payments = getOfCash(Env.getCtx(), rs.getString(2),
- cashline.getAmount(), cashline.getC_BankAccount_ID(), cashline.getAD_Client_ID(),
- trx.getTrxName());
- for(MPayment payment : payments)
- {
-
- cashline.setC_Payment_ID(payment.getC_Payment_ID());
-
- if(!cashline.save())
- throw new IllegalStateException("Cannot assign payment to Cash Line");
-
- break; // only the first
- }
- trx.commit();
- }
- rs.close();
- pstmt.close();
- pstmt = null;
- }
- catch (Exception e)
- {
- s_log.log(Level.SEVERE, sql, e);
- }
- try
- {
- if (pstmt != null)
- pstmt.close();
- pstmt = null;
- }
- catch (Exception e)
- {
- pstmt = null;
- }
-
- return "@ProcessOK@";
- } // doIt
-
- /**
- * Get Payment of Cash
- * @param ctx context
- * @param cashName Cash Name
- * @return payments of cash
- * @param trxName transaction
- */
- public static MPayment[] getOfCash (Properties ctx, String cashName, BigDecimal amt, int C_BankAccount_ID, int AD_Client_ID,
- String trxName)
- {
- String sql = "SELECT * FROM C_Payment p WHERE p.DocumentNo=? AND R_PnRef=? AND PayAmt=? AND C_BankAccount_ID=? AND AD_Client_ID=? " +
- " AND TrxType='X' AND TenderType='X'";
-
- ArrayList list = new ArrayList();
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement(sql, trxName);
- pstmt.setString(1, cashName);
- pstmt.setString(2, cashName);
- pstmt.setBigDecimal(3, amt.negate());
- pstmt.setInt(4, C_BankAccount_ID);
- pstmt.setInt(5, AD_Client_ID);
- ResultSet rs = pstmt.executeQuery();
- while (rs.next())
- list.add (new MPayment(ctx, rs, trxName));
- rs.close();
- pstmt.close();
- pstmt = null;
- }
- catch (Exception e)
- {
- s_log.log(Level.SEVERE, sql, e);
- }
- try
- {
- if (pstmt != null)
- pstmt.close();
- pstmt = null;
- }
- catch (Exception e)
- {
- pstmt = null;
- }
- MPayment[] retValue = new MPayment[list.size()];
- list.toArray(retValue);
- return retValue;
- } // getOfPayment
-
- /**************************************************************************
- * Test
- * @param args ignored
- */
- public static void main(String[] args)
- {
- org.compiere.Adempiere.startup(true);
- Env.setContext(Env.getCtx(), "#AD_Client_ID", 11);
- FixPaymentCashLine pcf = new FixPaymentCashLine();
- try
- {
- pcf.doIt();
- }
- catch (Exception e)
- {
- System.out.println("Error" + e.getMessage());
- }
-
- } // main
-
-}
diff --git a/base/src/org/eevolution/process/InvoiceCalculateTax.java b/base/src/org/eevolution/process/InvoiceCalculateTax.java
deleted file mode 100644
index e73b627597..0000000000
--- a/base/src/org/eevolution/process/InvoiceCalculateTax.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.process;
-
-
-
-import org.adempiere.exceptions.FillMandatoryException;
-import org.compiere.model.MBPartner;
-import org.compiere.model.MFactAcct;
-import org.compiere.model.MInvoice;
-import org.compiere.model.MPeriod;
-import org.compiere.process.ProcessInfoParameter;
-import org.compiere.process.SvrProcess;
-
-
-/**
- * Re-calculate Invoice Tax (and unpost the document)
- * @author victor.perez@e-evolution.com, e-Evolution http://www.e-evolution.com
- * FR [ 2520591 ] Support multiples calendar for Org
- * @see http://sourceforge.net/tracker2/?func=detail&atid=879335&aid=2520591&group_id=176962
- * @author Teo Sarca, www.arhipac.ro
- */
-public class InvoiceCalculateTax extends SvrProcess
-{
- public static final String PARAM_C_Invoice_ID = "C_Invoice_ID";
-
- private int p_C_Invoice_ID = 0;
-
- @Override
- protected void prepare()
- {
- for (ProcessInfoParameter para : getParameter())
- {
- String name = para.getParameterName();
- if (para.getParameter() == null)
- {
- ;
- }
- else if (name.equals(PARAM_C_Invoice_ID))
- {
- p_C_Invoice_ID = para.getParameterAsInt();
- }
- }
-
- if (p_C_Invoice_ID <= 0)
- {
- throw new FillMandatoryException(PARAM_C_Invoice_ID);
- }
- }
-
- @Override
- protected String doIt() throws Exception
- {
- MInvoice invoice = new MInvoice(getCtx(), p_C_Invoice_ID, get_TrxName());
- recalculateTax(invoice);
- //
- return "@ProcessOK@";
- }
-
- public static void recalculateTax(MInvoice invoice)
- {
- //
- // Delete accounting /UnPost
- MPeriod.testPeriodOpen(invoice.getCtx(), invoice.getDateAcct(), invoice.getC_DocType_ID(), invoice.getAD_Org_ID());
- MFactAcct.deleteEx(MInvoice.Table_ID, invoice.get_ID(), invoice.get_TrxName());
- //
- // Update Invoice
- invoice.calculateTaxTotal();
- invoice.setPosted(false);
- invoice.saveEx();
- //
- // Update balance
- MBPartner bp = new MBPartner (invoice.getCtx(), invoice.getC_BPartner_ID(), invoice.get_TrxName());
- bp.setTotalOpenBalance();
- bp.setSOCreditStatus();
- bp.saveEx();
- }
-}
diff --git a/base/src/org/eevolution/process/MovementGenerate.java b/base/src/org/eevolution/process/MovementGenerate.java
deleted file mode 100644
index efe90e7d7f..0000000000
--- a/base/src/org/eevolution/process/MovementGenerate.java
+++ /dev/null
@@ -1,714 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.process;
-
-import java.math.BigDecimal;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.logging.Level;
-
-import org.compiere.model.MAttributeSet;
-import org.compiere.model.MClient;
-import org.compiere.model.MLocator;
-import org.compiere.model.MMovement;
-import org.compiere.model.MMovementLine;
-import org.compiere.model.MProduct;
-import org.compiere.model.MProductCategory;
-import org.compiere.model.MStorage;
-import org.compiere.process.DocAction;
-import org.compiere.process.ProcessInfoParameter;
-import org.compiere.process.SvrProcess;
-import org.compiere.util.AdempiereUserError;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.eevolution.model.MDDOrder;
-import org.eevolution.model.MDDOrderLine;
-
-
-
-/**
- * Generate Movement
- * Manual or Automatic
- *
- * @author Victor Perez www.e-evolution.com
- * @version $Id: MovementGenerate.java,v 1.0
- */
-public class MovementGenerate extends SvrProcess
-{
- /** Manual Selection */
- private boolean p_Selection = false;
- /** Warehouse */
- private int p_M_Warehouse_ID = 0;
- /** BPartner */
- private int p_C_BPartner_ID = 0;
- /** Promise Date */
- private Timestamp p_DatePromised = null;
- /** Include Orders w. unconfirmed Shipments */
- private boolean p_IsUnconfirmedInOut = false;
- /** DocAction */
- private String p_docAction = DocAction.ACTION_Complete;
- /** Consolidate */
- private boolean p_ConsolidateDocument = true;
- /** Shipment Date */
- private Timestamp p_DateShipped = null;
-
- /** The current Shipment */
- private MMovement m_movement = null;
- /** Numner of Shipments */
- private int m_created = 0;
- /** Line Number */
- private int m_line = 0;
- /** Movement Date */
- private Timestamp m_movementDate = null;
- /** Last BP Location */
- private int m_lastC_BPartner_Location_ID = -1;
-
- /** The Query sql */
- private String m_sql = null;
-
-
- /** Storages temp space */
- private HashMap m_map = new HashMap();
- /** Last Parameter */
- private SParameter m_lastPP = null;
- /** Last Storage */
- private MStorage[] m_lastStorages = null;
-
- /**
- * Prepare - e.g., get Parameters.
- */
- protected void prepare()
- {
- ProcessInfoParameter[] para = getParameter();
- for (int i = 0; i < para.length; i++)
- {
- String name = para[i].getParameterName();
- if (para[i].getParameter() == null)
- ;
- else if (name.equals("M_Warehouse_ID"))
- p_M_Warehouse_ID = para[i].getParameterAsInt();
- else if (name.equals("C_BPartner_ID"))
- p_C_BPartner_ID = para[i].getParameterAsInt();
- else if (name.equals("DatePromised"))
- p_DatePromised = (Timestamp)para[i].getParameter();
- else if (name.equals("Selection"))
- p_Selection = "Y".equals(para[i].getParameter());
- else if (name.equals("IsUnconfirmedInOut"))
- p_IsUnconfirmedInOut = "Y".equals(para[i].getParameter());
- else if (name.equals("ConsolidateDocument"))
- p_ConsolidateDocument = "Y".equals(para[i].getParameter());
- else if (name.equals("DocAction"))
- p_docAction = (String)para[i].getParameter();
- else if (name.equals("MovementDate"))
- p_DateShipped = (Timestamp)para[i].getParameter();
- else
- log.log(Level.SEVERE, "Unknown Parameter: " + name);
-
- // juddm - added ability to specify a shipment date from Generate Shipments
- if (p_DateShipped == null) {
- m_movementDate = Env.getContextAsDate(getCtx(), "#Date");
- if (m_movementDate == null)
- m_movementDate = new Timestamp(System.currentTimeMillis());
- } else
- m_movementDate = p_DateShipped;
- // DocAction check
- if (!DocAction.ACTION_Complete.equals(p_docAction))
- p_docAction = DocAction.ACTION_Prepare;
- }
- } // prepare
-
- /**
- * Generate Movemements
- * @return info
- * @throws Exception
- */
- protected String doIt () throws Exception
- {
- log.info("Selection=" + p_Selection
- + ", M_Warehouse_ID=" + p_M_Warehouse_ID
- + ", C_BPartner_ID=" + p_C_BPartner_ID
- + ", Consolidate=" + p_ConsolidateDocument
- + ", IsUnconfirmed=" + p_IsUnconfirmedInOut
- + ", Movement=" + m_movementDate);
-
- if (p_M_Warehouse_ID == 0)
- throw new AdempiereUserError("@NotFound@ @M_Warehouse_ID@");
-
- if (p_Selection) // VInOutGen
- {
- m_sql = "SELECT DD_Order.* FROM DD_Order, T_Selection "
- + "WHERE DD_Order.DocStatus='CO' AND DD_Order.IsSOTrx='Y' AND DD_Order.AD_Client_ID=? "
- + "AND DD_Order.DD_Order_ID = T_Selection.T_Selection_ID "
- + "AND T_Selection.AD_PInstance_ID=? ";
- }
- else
- {
- m_sql = "SELECT * FROM DD_Order o "
- + "WHERE DocStatus='CO' AND IsSOTrx='Y'"
- // No Offer,POS
- + " AND o.C_DocType_ID IN (SELECT C_DocType_ID FROM C_DocType "
- + "WHERE DocBaseType='DOO')"
- + " AND o.IsDropShip='N'"
- // No Manual
- + " AND o.DeliveryRule<>'M'"
- // Open Order Lines with Warehouse
- + " AND EXISTS (SELECT * FROM DD_OrderLine ol "
- + "WHERE ol.M_Warehouse_ID=?"; // #1
- if (p_DatePromised != null)
- m_sql += " AND TRUNC(ol.DatePromised)<=?"; // #2
- m_sql += " AND o.DD_Order_ID=ol.DD_Order_ID AND ol.QtyOrdered<>ol.QtyIntransit)";
- //
- if (p_C_BPartner_ID != 0)
- m_sql += " AND o.C_BPartner_ID=?"; // #3
- }
- m_sql += " ORDER BY M_Warehouse_ID, PriorityRule, M_Shipper_ID, C_BPartner_ID, C_BPartner_Location_ID, DD_Order_ID";
- // m_sql += " FOR UPDATE";
-
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement (m_sql, get_TrxName());
- int index = 1;
- if (p_Selection)
- {
- pstmt.setInt(index++, Env.getAD_Client_ID(getCtx()));
- pstmt.setInt(index++, getAD_PInstance_ID());
- }
- else
- {
- pstmt.setInt(index++, p_M_Warehouse_ID);
- if (p_DatePromised != null)
- pstmt.setTimestamp(index++, p_DatePromised);
- if (p_C_BPartner_ID != 0)
- pstmt.setInt(index++, p_C_BPartner_ID);
- }
- }
- catch (Exception e)
- {
- log.log(Level.SEVERE, m_sql, e);
- }
- return generate(pstmt);
- } // doIt
-
- /**
- * Generate Shipments
- * @param pstmt Order Query
- * @return info
- */
- private String generate (PreparedStatement pstmt)
- {
- MClient client = MClient.get(getCtx());
- try
- {
- ResultSet rs = pstmt.executeQuery ();
- while (rs.next ()) // Order
- {
- MDDOrder order = new MDDOrder (getCtx(), rs, get_TrxName());
- // New Header different Shipper, Shipment Location
- if (!p_ConsolidateDocument
- || (m_movement != null
- && (m_movement.getC_BPartner_Location_ID() != order.getC_BPartner_Location_ID()
- || m_movement.getM_Shipper_ID() != order.getM_Shipper_ID() )))
- completeMovement();
- log.fine("check: " + order + " - DeliveryRule=" + order.getDeliveryRule());
- //
- Timestamp minGuaranteeDate = m_movementDate;
- boolean completeOrder = MDDOrder.DELIVERYRULE_CompleteOrder.equals(order.getDeliveryRule());
- // OrderLine WHERE
- String where = " AND " + p_M_Warehouse_ID + " IN (SELECT l.M_Warehouse_ID FROM M_Locator l WHERE l.M_Locator_ID=M_Locator_ID) ";
- if (p_DatePromised != null)
- where += " AND (TRUNC(DatePromised)<=" + DB.TO_DATE(p_DatePromised, true)
- + " OR DatePromised IS NULL)";
- // Exclude Auto Delivery if not Force
- if (!MDDOrder.DELIVERYRULE_Force.equals(order.getDeliveryRule()))
- where += " AND (DD_OrderLine.M_Product_ID IS NULL"
- + " OR EXISTS (SELECT * FROM M_Product p "
- + "WHERE DD_OrderLine.M_Product_ID=p.M_Product_ID"
- + " AND IsExcludeAutoDelivery='N'))";
- // Exclude Unconfirmed
- if (!p_IsUnconfirmedInOut)
- where += " AND NOT EXISTS (SELECT * FROM M_MovementLine iol"
- + " INNER JOIN M_Movement io ON (iol.M_Movement_ID=io.M_Movement_ID) "
- + "WHERE iol.DD_OrderLine_ID=DD_OrderLine.DD_OrderLine_ID AND io.DocStatus IN ('IP','WC'))";
- // Deadlock Prevention - Order by M_Product_ID
- MDDOrderLine[] lines = order.getLines (where, "M_Product_ID");
- for (int i = 0; i < lines.length; i++)
- {
- MDDOrderLine line = lines[i];
- MLocator l = new MLocator(getCtx(),line.getM_Locator_ID(), get_TrxName());
- if (l.getM_Warehouse_ID() != p_M_Warehouse_ID)
- continue;
- log.fine("check: " + line);
- BigDecimal onHand = Env.ZERO;
- //BigDecimal toDeliver = line.getQtyOrdered()
- BigDecimal toDeliver = line.getConfirmedQty()
- .subtract(line.getQtyDelivered());
- MProduct product = line.getProduct();
- // Nothing to Deliver
- if (product != null && toDeliver.signum() == 0)
- continue;
-
- // or it's a charge - Bug#: 1603966
- if (line.getC_Charge_ID()!=0 && toDeliver.signum() == 0)
- continue;
-
- // Check / adjust for confirmations
- BigDecimal unconfirmedShippedQty = Env.ZERO;
- if (p_IsUnconfirmedInOut && product != null && toDeliver.signum() != 0)
- {
- String where2 = "EXISTS (SELECT * FROM M_Movement io WHERE io.M_Movement_ID=M_MovementLine.M_Movement_ID AND io.DocStatus IN ('IP','WC'))";
- MMovementLine[] iols = MMovementLine.getOfOrderLine(getCtx(),
- line.getDD_OrderLine_ID(), where2, null);
- for (int j = 0; j < iols.length; j++)
- unconfirmedShippedQty = unconfirmedShippedQty.add(iols[j].getMovementQty());
- String logInfo = "Unconfirmed Qty=" + unconfirmedShippedQty
- + " - ToDeliver=" + toDeliver + "->";
- toDeliver = toDeliver.subtract(unconfirmedShippedQty);
- logInfo += toDeliver;
- if (toDeliver.signum() < 0)
- {
- toDeliver = Env.ZERO;
- logInfo += " (set to 0)";
- }
- // Adjust On Hand
- onHand = onHand.subtract(unconfirmedShippedQty);
- log.fine(logInfo);
- }
-
- // Comments & lines w/o product & services
- if ((product == null || !product.isStocked())
- && (line.getQtyOrdered().signum() == 0 // comments
- || toDeliver.signum() != 0)) // lines w/o product
- {
- if (!MDDOrder.DELIVERYRULE_CompleteOrder.equals(order.getDeliveryRule())) // printed later
- createLine (order, line, toDeliver, null, false);
- continue;
- }
-
- // Stored Product
- MProductCategory pc = MProductCategory.get(order.getCtx(), product.getM_Product_Category_ID());
- String MMPolicy = pc.getMMPolicy();
- if (MMPolicy == null || MMPolicy.length() == 0)
- MMPolicy = client.getMMPolicy();
- //
- MStorage[] storages = getStorages(l.getM_Warehouse_ID(),
- line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(),
- product.getM_AttributeSet_ID(),
- line.getM_AttributeSetInstance_ID()==0, minGuaranteeDate,
- MClient.MMPOLICY_FiFo.equals(MMPolicy));
-
- for (int j = 0; j < storages.length; j++)
- {
- MStorage storage = storages[j];
- onHand = onHand.add(storage.getQtyOnHand());
- }
- boolean fullLine = onHand.compareTo(toDeliver) >= 0
- || toDeliver.signum() < 0;
-
- // Complete Order
- if (completeOrder && !fullLine)
- {
- log.fine("Failed CompleteOrder - OnHand=" + onHand
- + " (Unconfirmed=" + unconfirmedShippedQty
- + "), ToDeliver=" + toDeliver + " - " + line);
- completeOrder = false;
- break;
- }
- // Complete Line
- else if (fullLine && MDDOrder.DELIVERYRULE_CompleteLine.equals(order.getDeliveryRule()))
- {
- log.fine("CompleteLine - OnHand=" + onHand
- + " (Unconfirmed=" + unconfirmedShippedQty
- + ", ToDeliver=" + toDeliver + " - " + line);
- //
- createLine (order, line, toDeliver, storages, false);
- }
- // Availability
- else if (MDDOrder.DELIVERYRULE_Availability.equals(order.getDeliveryRule())
- && (onHand.signum() > 0
- || toDeliver.signum() < 0))
- {
- BigDecimal deliver = toDeliver;
- if (deliver.compareTo(onHand) > 0)
- deliver = onHand;
- log.fine("Available - OnHand=" + onHand
- + " (Unconfirmed=" + unconfirmedShippedQty
- + "), ToDeliver=" + toDeliver
- + ", Delivering=" + deliver + " - " + line);
- //
- createLine (order, line, deliver, storages, false);
- }
- // Force
- else if (MDDOrder.DELIVERYRULE_Force.equals(order.getDeliveryRule()))
- {
- BigDecimal deliver = toDeliver;
- log.fine("Force - OnHand=" + onHand
- + " (Unconfirmed=" + unconfirmedShippedQty
- + "), ToDeliver=" + toDeliver
- + ", Delivering=" + deliver + " - " + line);
- //
- createLine (order, line, deliver, storages, true);
- }
- // Manual
- else if (MDDOrder.DELIVERYRULE_Manual.equals(order.getDeliveryRule()))
- log.fine("Manual - OnHand=" + onHand
- + " (Unconfirmed=" + unconfirmedShippedQty
- + ") - " + line);
- else
- log.fine("Failed: " + order.getDeliveryRule() + " - OnHand=" + onHand
- + " (Unconfirmed=" + unconfirmedShippedQty
- + "), ToDeliver=" + toDeliver + " - " + line);
- } // for all order lines
-
- // Complete Order successful
- if (completeOrder && MDDOrder.DELIVERYRULE_CompleteOrder.equals(order.getDeliveryRule()))
- {
- for (int i = 0; i < lines.length; i++)
- {
- MDDOrderLine line = lines[i];
- MLocator l = new MLocator(getCtx(),line.getM_Locator_ID(), get_TrxName());
- if (l.getM_Warehouse_ID() != p_M_Warehouse_ID)
- continue;
- MProduct product = line.getProduct();
- BigDecimal toDeliver = line.getQtyOrdered().subtract(line.getQtyDelivered());
- //
- MStorage[] storages = null;
- if (product != null && product.isStocked())
- {
- MProductCategory pc = MProductCategory.get(order.getCtx(), product.getM_Product_Category_ID());
- String MMPolicy = pc.getMMPolicy();
- if (MMPolicy == null || MMPolicy.length() == 0)
- MMPolicy = client.getMMPolicy();
- //
- storages = getStorages(l.getM_Warehouse_ID(),
- line.getM_Product_ID(), line.getM_AttributeSetInstance_ID(),
- product.getM_AttributeSet_ID(),
- line.getM_AttributeSetInstance_ID()==0, minGuaranteeDate,
- MClient.MMPOLICY_FiFo.equals(MMPolicy));
- }
- //
- createLine (order, line, toDeliver, storages, false);
- }
- }
- m_line += 1000;
- } // while order
- rs.close ();
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- log.log(Level.SEVERE, m_sql, e);
- }
- try
- {
- if (pstmt != null)
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- pstmt = null;
- }
- completeMovement();
- return "@Created@ = " + m_created;
- } // generate
-
-
-
- /**************************************************************************
- * Create Line
- * @param Distribution order order
- * @param orderLine line
- * @param qty qty
- * @param storages storage info
- * @param force force delivery
- */
- private void createLine (MDDOrder order, MDDOrderLine orderLine, BigDecimal qty,
- MStorage[] storages, boolean force)
- {
- // Complete last Shipment - can have multiple shipments
- if (m_lastC_BPartner_Location_ID != order.getC_BPartner_Location_ID() )
- completeMovement();
- m_lastC_BPartner_Location_ID = order.getC_BPartner_Location_ID();
- // Create New Shipment
- if (m_movement == null)
- {
- m_movement = new MMovement (order, 0, m_movementDate);
- //m_movement.setM_Warehouse_ID(orderLine.getM_Warehouse_ID()); // sets Org too
- m_movement.setIsInTransit(true);
- m_movement.setDD_Order_ID(order.getDD_Order_ID());
- if (order.getC_BPartner_ID() != order.getC_BPartner_ID())
- m_movement.setC_BPartner_ID(order.getC_BPartner_ID());
- if (order.getC_BPartner_Location_ID() != order.getC_BPartner_Location_ID())
- m_movement.setC_BPartner_Location_ID(order.getC_BPartner_Location_ID());
- if (!m_movement.save())
- throw new IllegalStateException("Could not create Movement");
- }
- // Non Inventory Lines
- if (storages == null)
- {
- MMovementLine line = new MMovementLine (m_movement);
- line.setOrderLine(orderLine, Env.ZERO, false);
- line.setMovementQty(qty); // Correct UOM
- if (orderLine.getQtyEntered().compareTo(orderLine.getQtyOrdered()) != 0)
- line.setMovementQty(qty
- .multiply(orderLine.getQtyEntered())
- .divide(orderLine.getQtyOrdered(), 12, BigDecimal.ROUND_HALF_UP));
- line.setLine(m_line + orderLine.getLine());
- if (!line.save())
- throw new IllegalStateException("Could not create Shipment Line");
- log.fine(line.toString());
- return;
- }
-
- // Product
- MProduct product = orderLine.getProduct();
- boolean linePerASI = false;
- if (product.getM_AttributeSet_ID() != 0)
- {
- MAttributeSet mas = MAttributeSet.get(getCtx(), product.getM_AttributeSet_ID());
- linePerASI = mas.isInstanceAttribute();
- }
-
- // Inventory Lines
- ArrayList list = new ArrayList();
- BigDecimal toDeliver = qty;
- for (int i = 0; i < storages.length; i++)
- {
- MStorage storage = storages[i];
- BigDecimal deliver = toDeliver;
- // Not enough On Hand
- if (deliver.compareTo(storage.getQtyOnHand()) > 0
- && storage.getQtyOnHand().signum() >= 0) // positive storage
- {
- if (!force // Adjust to OnHand Qty
- || (force && i+1 != storages.length)) // if force not on last location
- deliver = storage.getQtyOnHand();
- }
- if (deliver.signum() == 0) // zero deliver
- continue;
- int M_Locator_ID = storage.getM_Locator_ID();
- //
- MMovementLine line = null;
- if (!linePerASI) // find line with Locator
- {
- for (int ll = 0; ll < list.size(); ll++)
- {
- MMovementLine test = (MMovementLine)list.get(ll);
- if (test.getM_Locator_ID() == M_Locator_ID)
- {
- line = test;
- break;
- }
- }
- }
- if (line == null) // new line
- {
- line = new MMovementLine (m_movement);
- line.setOrderLine(orderLine, deliver , false);
- line.setMovementQty(deliver);
- list.add(line);
- }
- else // existing line
- line.setMovementQty(line.getMovementQty().add(deliver));
- if (orderLine.getQtyEntered().compareTo(orderLine.getQtyOrdered()) != 0)
- line.setMovementQty(line.getMovementQty().multiply(orderLine.getQtyEntered())
- .divide(orderLine.getQtyOrdered(), 12, BigDecimal.ROUND_HALF_UP));
- line.setLine(m_line + orderLine.getLine());
- if (linePerASI)
- line.setM_AttributeSetInstance_ID(storage.getM_AttributeSetInstance_ID());
- if (!line.save())
- throw new IllegalStateException("Could not create Shipment Line");
- log.fine("ToDeliver=" + qty + "/" + deliver + " - " + line);
- toDeliver = toDeliver.subtract(deliver);
- // Temp adjustment
- storage.setQtyOnHand(storage.getQtyOnHand().subtract(deliver));
- //
- if (toDeliver.signum() == 0)
- break;
- }
- if (toDeliver.signum() != 0)
- throw new IllegalStateException("Not All Delivered - Remainder=" + toDeliver);
- } // createLine
-
-
- /**
- * Get Storages
- * @param M_Warehouse_ID
- * @param M_Product_ID
- * @param M_AttributeSetInstance_ID
- * @param M_AttributeSet_ID
- * @param allAttributeInstances
- * @param minGuaranteeDate
- * @param FiFo
- * @return storages
- */
- private MStorage[] getStorages(int M_Warehouse_ID,
- int M_Product_ID, int M_AttributeSetInstance_ID, int M_AttributeSet_ID,
- boolean allAttributeInstances, Timestamp minGuaranteeDate,
- boolean FiFo)
- {
- m_lastPP = new SParameter(M_Warehouse_ID,
- M_Product_ID, M_AttributeSetInstance_ID, M_AttributeSet_ID,
- allAttributeInstances, minGuaranteeDate, FiFo);
- //
- m_lastStorages = m_map.get(m_lastPP);
-
- if (m_lastStorages == null)
- {
- m_lastStorages = MStorage.getWarehouse(getCtx(),
- M_Warehouse_ID, M_Product_ID, M_AttributeSetInstance_ID,
- M_AttributeSet_ID, allAttributeInstances, minGuaranteeDate,
- FiFo, get_TrxName());
- m_map.put(m_lastPP, m_lastStorages);
- }
- return m_lastStorages;
- } // getStorages
-
-
- /**
- * Complete Shipment
- */
- private void completeMovement()
- {
- if (m_movement != null)
- {
- // Fails if there is a confirmation
- if (!m_movement.processIt(p_docAction))
- log.warning("Failed: " + m_movement);
- m_movement.save();
- //
- addLog(m_movement.getM_Movement_ID(), m_movement.getMovementDate(), null, m_movement.getDocumentNo());
- m_created++;
- m_map = new HashMap();
- if (m_lastPP != null && m_lastStorages != null)
- m_map.put(m_lastPP, m_lastStorages);
- }
- m_movement = null;
- m_line = 0;
- } // completeOrder
-
- /**
- * MovementGenerate Parameter
- */
- class SParameter
- {
- /**
- * Parameter
- * @param p_Warehouse_ID warehouse
- * @param p_Product_ID
- * @param p_AttributeSetInstance_ID
- * @param p_AttributeSet_ID
- * @param p_allAttributeInstances
- * @param p_minGuaranteeDate
- * @param p_FiFo
- */
- protected SParameter (int p_Warehouse_ID,
- int p_Product_ID, int p_AttributeSetInstance_ID, int p_AttributeSet_ID,
- boolean p_allAttributeInstances, Timestamp p_minGuaranteeDate,
- boolean p_FiFo)
- {
- this.M_Warehouse_ID = p_Warehouse_ID;
- this.M_Product_ID = p_Product_ID;
- this.M_AttributeSetInstance_ID = p_AttributeSetInstance_ID;
- this.M_AttributeSet_ID = p_AttributeSet_ID;
- this.allAttributeInstances = p_allAttributeInstances;
- this.minGuaranteeDate = p_minGuaranteeDate;
- this.FiFo = p_FiFo;
- }
- /** Warehouse */
- public int M_Warehouse_ID;
- /** Product */
- public int M_Product_ID;
- /** ASI */
- public int M_AttributeSetInstance_ID;
- /** AS */
- public int M_AttributeSet_ID;
- /** All instances */
- public boolean allAttributeInstances;
- /** Mon Guarantee Date */
- public Timestamp minGuaranteeDate;
- /** FiFo */
- public boolean FiFo;
-
- /**
- * Equals
- * @param obj
- * @return true if equal
- */
- public boolean equals (Object obj)
- {
- if (obj != null && obj instanceof SParameter)
- {
- SParameter cmp = (SParameter)obj;
- boolean eq = cmp.M_Warehouse_ID == M_Warehouse_ID
- && cmp.M_Product_ID == M_Product_ID
- && cmp.M_AttributeSetInstance_ID == M_AttributeSetInstance_ID
- && cmp.M_AttributeSet_ID == M_AttributeSet_ID
- && cmp.allAttributeInstances == allAttributeInstances
- && cmp.FiFo == FiFo;
- if (eq)
- {
- if (cmp.minGuaranteeDate == null && minGuaranteeDate == null)
- ;
- else if (cmp.minGuaranteeDate != null && minGuaranteeDate != null
- && cmp.minGuaranteeDate.equals(minGuaranteeDate))
- ;
- else
- eq = false;
- }
- return eq;
- }
- return false;
- } // equals
-
- /**
- * hashCode
- * @return hash code
- */
- public int hashCode ()
- {
- long hash = M_Warehouse_ID
- + (M_Product_ID * 2)
- + (M_AttributeSetInstance_ID * 3)
- + (M_AttributeSet_ID * 4);
-
- if (allAttributeInstances)
- hash *= -1;
- if (FiFo);
- hash *= -2;
- if (hash < 0)
- hash = -hash + 7;
- while (hash > Integer.MAX_VALUE)
- hash -= Integer.MAX_VALUE;
- //
- if (minGuaranteeDate != null)
- {
- hash += minGuaranteeDate.hashCode();
- while (hash > Integer.MAX_VALUE)
- hash -= Integer.MAX_VALUE;
- }
-
- return (int)hash;
- } // hashCode
-
- } // Parameter
-
-} // MovementGenerate
diff --git a/base/src/org/eevolution/process/PP_Product_BOM_Check.java b/base/src/org/eevolution/process/PP_Product_BOM_Check.java
deleted file mode 100755
index 71b6013521..0000000000
--- a/base/src/org/eevolution/process/PP_Product_BOM_Check.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
- * or via info@compiere.org or http://www.compiere.org/license.html *
- * Portions created by Carlos Ruiz are Copyright (C) 2005 QSS Ltda.
- * Contributor(s): Carlos Ruiz (globalqss)
- *****************************************************************************/
-package org.eevolution.process;
-
-import java.util.logging.Level;
-
-import org.compiere.model.MProduct;
-import org.compiere.process.ProcessInfoParameter;
-import org.compiere.process.SvrProcess;
-import org.compiere.util.AdempiereUserError;
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-import org.compiere.util.Env;
-import org.compiere.util.ValueNamePair;
-import org.eevolution.model.MPPProductBOM;
-import org.eevolution.model.MPPProductBOMLine;
-
-/**
- * Title: Check BOM Structure (free of cycles) Description: Tree cannot contain
- * BOMs which are already referenced
- *
- * @author Tony Snook (tspc)
- * @author Teo Sarca, SC ARHIPAC SERVICE SRL
- */
-public class PP_Product_BOM_Check extends SvrProcess
-{
-
- /** The Record */
- private int p_Record_ID = 0;
-
- /**
- * Prepare - e.g., get Parameters.
- */
- protected void prepare()
- {
- ProcessInfoParameter[] para = getParameter();
- for (int i = 0; i < para.length; i++)
- {
- String name = para[i].getParameterName();
- if (para[i].getParameter() == null)
- ;
- else
- log.log(Level.SEVERE, "Unknown Parameter: " + name);
- }
- p_Record_ID = getRecord_ID();
- } // prepare
-
- /**
- * Process
- *
- * @return message
- * @throws Exception
- */
- protected String doIt() throws Exception
- {
- log.info("Check BOM Structure");
-
- // Record ID is M_Product_ID of product to be tested
- MProduct xp = new MProduct(Env.getCtx(), p_Record_ID, get_TrxName());
-
- if (!xp.isBOM())
- {
- log.info("Product is not a BOM");
- // No BOM - should not happen, but no problem
- return "OK";
- }
-
- // Check Parent Level
- int lowlevel = MPPProductBOMLine.getLowLevel(getCtx(), p_Record_ID, get_TrxName());
- xp.setLowLevel(lowlevel);
- xp.setIsVerified(true);
- xp.saveEx();
-
- // Get Default BOM from this product
- MPPProductBOM tbom = MPPProductBOM.getDefault(xp, get_TrxName());
- if (tbom == null) {
- raiseError("No Default BOM found: ", "Check BOM Parent search key");
- }
-
- // Check All BOM Lines
- if (tbom.getM_Product_ID() != 0)
- {
- MPPProductBOMLine[] tbomlines = tbom.getLines();
- for (MPPProductBOMLine tbomline : tbomlines)
- {
- lowlevel = tbomline.getLowLevel();
- MProduct p = new MProduct(getCtx(), tbomline.getM_Product_ID(), get_TrxName());
- p.setLowLevel(lowlevel);
- p.setIsVerified(true);
- p.saveEx();
- }
- }
- return "OK";
- } // doIt
-
- private void raiseError(String string, String hint) throws Exception
- {
- DB.rollback(false, get_TrxName());
- MProduct xp = new MProduct(getCtx(), p_Record_ID, null); // parent
- xp.setIsVerified(false); // set BOM not verified
- xp.saveEx();
- String msg = string;
- ValueNamePair pp = CLogger.retrieveError();
- if (pp != null)
- msg = pp.getName() + " - ";
- msg += hint;
- throw new AdempiereUserError(msg);
- }
-
-} // M_Product_BOM_Check
diff --git a/base/src/org/eevolution/process/ProcessInfoHandler.java b/base/src/org/eevolution/process/ProcessInfoHandler.java
deleted file mode 100644
index 24fdda8a8d..0000000000
--- a/base/src/org/eevolution/process/ProcessInfoHandler.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.process;
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-import org.compiere.model.MPInstance;
-import org.compiere.model.MPInstancePara;
-import org.compiere.model.MProcess;
-import org.compiere.process.ProcessInfo;
-import org.compiere.util.Env;
-import org.compiere.util.Msg;
-
-/**
- * @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
- * @version 1.0, October 14th 2005
- */
-public class ProcessInfoHandler {
-
- protected ProcessInfo pi;
- protected MPInstance pinstance;
- protected Hashtable param;
- protected MProcess process;
-
- public ProcessInfoHandler(int processID) {
-
- init(processID);
- }
-
- private void init(int processID) {
-
- process = new MProcess(Env.getCtx(), processID, null);
-
- if(process != null) {
-
- pi = getProcessInfo(Msg.translate(Env.getCtx(), process.getName()), process.get_ID());
- pinstance = getProcessInstance(pi);
- pi.setAD_PInstance_ID (pinstance.getAD_PInstance_ID());
- }
- }
-
- protected ProcessInfo getProcessInfo(String name, int id) {
-
- ProcessInfo info = new ProcessInfo(name, id);
- info.setAD_User_ID (Env.getAD_User_ID(Env.getCtx()));
- info.setAD_Client_ID(Env.getAD_Client_ID(Env.getCtx()));
-
- return info;
- }
-
- protected MPInstance getProcessInstance(ProcessInfo info) {
-
- MPInstance instance = new MPInstance(Env.getCtx(), info.getAD_Process_ID(), info.getRecord_ID());
- if (!instance.save()) {
-
- info.setSummary (Msg.getMsg(Env.getCtx(), "ProcessNoInstance"));
- info.setError (true);
- return null;
- }
-
- return instance;
- }
-
- protected int countParams() {
-
- return (process != null) ? process.getParameters().length : 0;
- }
-
- protected Hashtable extractParameters() {
-
- Hashtable param = new Hashtable();
-
- MPInstancePara p = null;
- int i = 0;
- int b = countParams();
- while(i < b) {
-
- p = new MPInstancePara(getProcessInstance(), i);
- p.load(null);
-
- param.put(p.getParameterName(), getValueFrom(p));
- i++;
- }
-
- return param;
- }
-
- protected Object getValueFrom(MPInstancePara p) {
-
- Object o = null;
-
- o = (o == null) ? p.getP_Date() : o;
- o = (o == null) ? p.getP_Date_To() : o;
- o = (o == null) ? p.getP_Number() : o;
- o = (o == null) ? p.getP_Number_To() : o;
- o = (o == null) ? p.getP_String() : o;
- o = (o == null) ? p.getP_String_To() : o;
-
- return o;
- }
-
- public void setProcessError() {
-
- pi.setSummary(Msg.getMsg(Env.getCtx(), "ProcessCancelled"));
- pi.setError(true);
- }
-
- public MPInstance getProcessInstance() {
-
- return pinstance;
- }
-
- public ProcessInfo getProcessInfo() {
-
- return pi;
- }
-
- public Object getParameterValue(String param) {
-
- if(this.param == null) {
-
- this.param = extractParameters();
- }
-
- return this.param.get(param);
- }
-
- public Enumeration getParameters() {
-
- if(this.param == null) {
-
- this.param = extractParameters();
- }
-
- return param.keys();
- }
-}
diff --git a/base/src/org/eevolution/tools/GenerateModel.java b/base/src/org/eevolution/tools/GenerateModel.java
deleted file mode 100644
index d8118e030d..0000000000
--- a/base/src/org/eevolution/tools/GenerateModel.java
+++ /dev/null
@@ -1,879 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
- * or via info@compiere.org or http://www.compiere.org/license.html *
- * Contributor(s): Carlos Ruiz - globalqss *
- * Teo Sarca
- *****************************************************************************/
-package org.eevolution.tools;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.math.BigDecimal;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.Timestamp;
-import java.util.logging.Level;
-
-import org.compiere.Adempiere;
-import org.compiere.util.CLogMgt;
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-import org.compiere.util.DisplayType;
-import org.compiere.util.Env;
-/**
- * Generate Model Classes extending PO.
- * Base class for CMP interface - will be extended to create byte code directly
- *
- * @author Jorg Janke
- * @version $Id: GenerateModel.java,v 1.5 2006/07/30 00:54:36 jjanke Exp $
- *
- * globalqss - Grant independence to GenerateModel from AD_Table_ID
- * globalqss - Filter by table (LIKE)
- *
- * globalqss - integrate Teo Sarca hint [ 1617928 ] Ineficient use of Boolean ctor for gen. model
- * teo_sarca - bug fix [ 1651801 ] GenerateModel: duplicate "getKeyNamePair" methods
- * teo_sarca - feature request [ 1662447 ] Add column names in model classes
- */
-public class GenerateModel
-{
- /**
- * Generate PO Class
- * @param AD_Table_ID table id
- * @param directory directory with \ or / at the end.
- * @param packageName package name
- */
- public GenerateModel (int AD_Table_ID, String directory, String packageName)
- {
- // create column access methods
- StringBuffer mandatory = new StringBuffer();
- StringBuffer sb = createColumns(AD_Table_ID, mandatory);
- // add header stuff
- String tableName = createHeader(AD_Table_ID, sb, mandatory, packageName);
- // Save it
- writeToFile (sb, directory + tableName + ".java");
- } // GenerateModel
-
- /** File Header */
- public static final String COPY =
- "/******************************************************************************\n"
- +" * Product: Adempiere ERP & CRM Smart Business Solution *\n"
- +" * Copyright (C) 1999-2007 ComPiere, Inc. All Rights Reserved. *\n"
- +" * This program is free software; you can redistribute it and/or modify it *\n"
- +" * under the terms version 2 of the GNU General Public License as published *\n"
- +" * by the Free Software Foundation. This program is distributed in the hope *\n"
- +" * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *\n"
- +" * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *\n"
- +" * See the GNU General Public License for more details. *\n"
- +" * You should have received a copy of the GNU General Public License along *\n"
- +" * with this program; if not, write to the Free Software Foundation, Inc., *\n"
- +" * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *\n"
- +" * For the text or an alternative of this public license, you may reach us *\n"
- +" * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *\n"
- +" * or via info@compiere.org or http://www.compiere.org/license.html *\n"
- +" *****************************************************************************/\n";
-
- /** Logger */
- private static CLogger log = CLogger.getCLogger (GenerateModel.class);
-
- /**
- * Add Header info to buffer
- * @param AD_Table_ID table
- * @param sb buffer
- * @param mandatory init call for mandatory columns
- * @param packageName package name
- * @return class name
- */
- private String createHeader (int AD_Table_ID, StringBuffer sb, StringBuffer mandatory, String packageName)
- {
- String tableName = "";
- int accessLevel = 0;
- String sql = "SELECT TableName, AccessLevel FROM AD_Table WHERE AD_Table_ID=?";
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement(sql, null);
- pstmt.setInt(1, AD_Table_ID);
- ResultSet rs = pstmt.executeQuery();
- if (rs.next())
- {
- tableName = rs.getString(1);
- accessLevel = rs.getInt(2);
- }
- rs.close();
- pstmt.close();
- pstmt = null;
- }
- catch (Exception e)
- {
- log.log(Level.SEVERE, sql, e);
- }
- finally
- {
- try
- {
- if (pstmt != null)
- pstmt.close ();
- }
- catch (Exception e)
- {}
- pstmt = null;
- }
- if (tableName == null)
- throw new RuntimeException ("TableName not found for ID=" + AD_Table_ID);
- //
- String accessLevelInfo = accessLevel + " ";
- if (accessLevel >= 4 )
- accessLevelInfo += "- System ";
- if (accessLevel == 2 || accessLevel == 3 || accessLevel == 6 || accessLevel == 7)
- accessLevelInfo += "- Client ";
- if (accessLevel == 1 || accessLevel == 3 || accessLevel == 5 || accessLevel == 7)
- accessLevelInfo += "- Org ";
-
- String keyColumn = tableName + "_ID";
- String className = "X_" + tableName;
- //
- StringBuffer start = new StringBuffer ()
- .append (COPY)
- .append ("package " + packageName + ";\n"
- + "/** Generated Model - DO NOT CHANGE */\n");
- if (!packageName.equals("org.compiere.model"))
- start.append("import org.compiere.model.*;");
- start.append("import java.util.*;"
- + "import java.sql.*;"
- + "import java.math.*;"
- + "import org.compiere.util.*;"
- // Class
- + "/** Generated Model for ").append(tableName).append("\n"
- + " * @author Adempiere (generated) \n"
- + " * @version ").append(Adempiere.MAIN_VERSION).append(" - $Id$")
- // .append(s_run) // Timestamp
- .append(" */\n"
- + "public class ").append(className).append(" extends PO"
- + "{"
- // Standard Constructor
- + "/** Standard Constructor\n@param ctx context\n@param "
- + keyColumn + " id\n@param trxName transaction\n*/\n"
- + "public ").append(className).append(" (Properties ctx, int ").append(keyColumn)
- .append(", String trxName)"
- + "{"
- + "super (ctx, ").append(keyColumn).append(", trxName);"
- + "/** if (").append(keyColumn).append(" == 0)"
- + "{").append(mandatory).append("} */\n"
- + "}" // Constructor End
- // Short Constructor
- // + "/** Short Constructor */\n"
- // + "public ").append(className).append(" (Properties ctx, int ").append(keyColumn).append(")"
- // + "{"
- // + "this (ctx, ").append(keyColumn).append(", null);"
- // + "}" // Constructor End
-
- // Load Constructor
- + "/** Load Constructor \n@param ctx context\n@param rs result set \n@param trxName transaction\n*/\n"
- + "public ").append(className).append(" (Properties ctx, ResultSet rs, String trxName)"
- + "{"
- + "super (ctx, rs, trxName);"
- + "}" // Load Constructor End
- //
- // globalqss - Grant independence to GenerateModel from AD_Table_ID
- + "/** TableName=").append(tableName).append(" */\n"
- + "public static final String Table_Name=\"").append(tableName).append("\";\n"
- // + "public static final int Table_ID=").append(AD_Table_ID).append(";\n"
- + "/** AD_Table_ID=").append(AD_Table_ID).append(" */\n"
- + "public static final int Table_ID=MTable.getTable_ID(Table_Name);\n"
- //
- // globalqss
- // + "protected static KeyNamePair Model = new KeyNamePair(").append(AD_Table_ID).append(",\"").append(tableName).append("\");\n"
- + "protected static KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name);\n"
- //
- + "protected BigDecimal accessLevel = BigDecimal.valueOf(").append(accessLevel).append(");"
- + "/** AccessLevel\n@return ").append(accessLevelInfo).append("\n*/\n"
- + "protected int get_AccessLevel()"
- + "{"
- + "return accessLevel.intValue();"
- + "}"
- //
- + "/** Load Meta Data\n@param ctx context\n@return PO Info\n*/\n"
- + "protected POInfo initPO (Properties ctx)"
- + "{"
- + "POInfo poi = POInfo.getPOInfo (ctx, Table_ID);"
- + "return poi;"
- + "}" // initPO
- //
- + "/** Info\n@return info\n*/\n"
- + "public String toString()"
- + "{"
- + "StringBuffer sb = new StringBuffer (\"").append(className).append("[\")"
- + ".append(get_ID()).append(\"]\");"
- + "return sb.toString();"
- + "}");
-
- StringBuffer end = new StringBuffer ("}");
- //
- sb.insert(0, start);
- sb.append(end);
-
- return className;
- } // createHeader
-
-
- /**
- * Create Column access methods
- * @param AD_Table_ID table
- * @param mandatory init call for mandatory columns
- * @return set/get method
- */
- private StringBuffer createColumns (int AD_Table_ID, StringBuffer mandatory)
- {
- StringBuffer sb = new StringBuffer();
- String sql = "SELECT c.ColumnName, c.IsUpdateable, c.IsMandatory," // 1..3
- + " c.AD_Reference_ID, c.AD_Reference_Value_ID, DefaultValue, SeqNo, " // 4..7
- + " c.FieldLength, c.ValueMin, c.ValueMax, c.VFormat, c.Callout, " // 8..12
- + " c.Name, c.Description, c.ColumnSQL, c.IsEncrypted, " // 13..16
- + " c.IsIdentifier " // 17
- + "FROM AD_Column c "
- + "WHERE c.AD_Table_ID=?"
- + " AND c.IsActive='Y'"
- + " AND c.ColumnName <> 'AD_Client_ID'"
- + " AND c.ColumnName <> 'AD_Org_ID'"
- + " AND c.ColumnName <> 'IsActive'"
- + " AND c.ColumnName NOT LIKE 'Created%'"
- + " AND c.ColumnName NOT LIKE 'Updated%' "
- + "ORDER BY c.ColumnName";
- boolean isKeyNamePairCreated = false; // true if the method "getKeyNamePair" is already generated
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement(sql, null);
- pstmt.setInt(1, AD_Table_ID);
- ResultSet rs = pstmt.executeQuery();
- while (rs.next())
- {
- String columnName = rs.getString(1);
- boolean isUpdateable = "Y".equals(rs.getString(2));
- boolean isMandatory = "Y".equals(rs.getString(3));
- int displayType = rs.getInt(4);
- int AD_Reference_Value_ID = rs.getInt(5);
- String defaultValue = rs.getString(6);
- int seqNo = rs.getInt(7);
- int fieldLength = rs.getInt(8);
- String ValueMin = rs.getString(9);
- String ValueMax = rs.getString(10);
- String VFormat = rs.getString(11);
- String Callout = rs.getString(12);
- String Name = rs.getString(13);
- String Description = rs.getString(14);
- String ColumnSQL = rs.getString(15);
- boolean virtualColumn = ColumnSQL != null && ColumnSQL.length() > 0;
- boolean IsEncrypted = "Y".equals(rs.getString(16));
- //
- sb.append(createColumnMethods (mandatory,
- columnName, isUpdateable, isMandatory,
- displayType, AD_Reference_Value_ID, fieldLength,
- defaultValue, ValueMin, ValueMax, VFormat,
- Callout, Name, Description, virtualColumn, IsEncrypted));
- //
- if (seqNo == 1 && "Y".equals(rs.getString("IsIdentifier"))) {
- if (!isKeyNamePairCreated) {
- sb.append(createKeyNamePair(columnName, displayType));
- isKeyNamePairCreated = true;
- }
- else {
- throw new RuntimeException("More than one primary identifier found "
- + " (AD_Table_ID=" + AD_Table_ID + ", ColumnName=" + columnName + ")");
- }
- }
- // Create COLUMNNAME_ property (teo_sarca, [ 1662447 ])
- sb.append("/** Column name ").append(columnName).append(" */\n")
- .append("public static final String COLUMNNAME_").append(columnName)
- .append(" = \"").append(columnName).append("\";");
- }
- rs.close();
- pstmt.close();
- pstmt = null;
- }
- catch (Exception e)
- {
- log.log(Level.SEVERE, sql, e);
- }
- finally
- {
- try
- {
- if (pstmt != null)
- pstmt.close ();
- }
- catch (Exception e)
- {}
- pstmt = null;
- }
- return sb;
- } // createColumns
-
- /**
- * Create set/get methods for column
- * @param mandatory init call for mandatory columns
- * @param columnName column name
- * @param isUpdateable updateable
- * @param isMandatory mandatory
- * @param displayType display type
- * @param AD_Reference_ID validation reference
- * @param fieldLength int
- * @param defaultValue default value
- * @param ValueMin String
- * @param ValueMax String
- * @param VFormat String
- * @param Callout String
- * @param Name String
- * @param Description String
- * @param virtualColumn virtual column
- * @param IsEncrypted stored encrypted
- @return set/get method
- */
- private String createColumnMethods (StringBuffer mandatory,
- String columnName, boolean isUpdateable, boolean isMandatory,
- int displayType, int AD_Reference_ID, int fieldLength,
- String defaultValue, String ValueMin, String ValueMax, String VFormat,
- String Callout, String Name, String Description,
- boolean virtualColumn, boolean IsEncrypted)
- {
- // Clazz
- Class> clazz = DisplayType.getClass(displayType, true);
- if (defaultValue == null)
- defaultValue = "";
- if (DisplayType.isLOB(displayType)) // No length check for LOBs
- fieldLength = 0;
-
- // Handle Posted
- if (columnName.equalsIgnoreCase("Posted")
- || columnName.equalsIgnoreCase("Processed")
- || columnName.equalsIgnoreCase("Processing"))
- {
- clazz = Boolean.class;
- AD_Reference_ID = 0;
- }
- // Record_ID
- else if (columnName.equalsIgnoreCase("Record_ID"))
- {
- clazz = Integer.class;
- AD_Reference_ID = 0;
- }
- // String Key
- else if (columnName.equalsIgnoreCase("AD_Language")
- || columnName.equalsIgnoreCase("EntityType"))
- {
- clazz = String.class;
- }
- // Data Type
- String dataType = clazz.getName();
- dataType = dataType.substring(dataType.lastIndexOf('.')+1);
- if (dataType.equals("Boolean"))
- dataType = "boolean";
- else if (dataType.equals("Integer"))
- dataType = "int";
- else if (displayType == DisplayType.Binary)
- dataType = "byte[]";
-
-
- StringBuffer sb = new StringBuffer();
- // ****** Set Comment ******
- sb.append("/** Set ").append(Name);
- sb.append(".\n@param ").append(columnName).append(" ");
- if (Description != null && Description.length() > 0)
- sb.append(Description);
- else
- sb.append(Name);
- sb.append(" */\n");
-
- // Set ********
- String setValue = "set_Value";
- if (IsEncrypted)
- setValue = "set_ValueE";
- // public void setColumn (xxx variable)
- sb.append("public ");
- if (!isUpdateable)
- {
- setValue = "set_ValueNoCheck";
- if (IsEncrypted)
- setValue = "set_ValueNoCheckE";
- }
- sb.append("void set").append(columnName).append(" (").append(dataType).append(" ").append(columnName).append(")"
- + "{");
- // List Validation
- if (AD_Reference_ID != 0)
- {
- String staticVar = addListValidation (sb, AD_Reference_ID, columnName, !isMandatory);
- sb.insert(0, staticVar); // first check
- }
- // setValue ("ColumnName", xx);
- if (virtualColumn)
- {
- sb.append ("throw new IllegalArgumentException (\"").append(columnName).append(" is virtual column\");");
- }
- // Integer
- else if (clazz.equals(Integer.class))
- {
- if (columnName.endsWith("_ID"))
- {
- if (isMandatory) // check mandatory ID
- {
- int firstOK = 1; // Valid ID 0
- if (columnName.equals("AD_Client_ID") || columnName.equals("AD_Org_ID")
- || columnName.equals("Record_ID") || columnName.equals("C_DocType_ID")
- || columnName.equals("Node_ID") || columnName.equals("AD_Role_ID")
- || columnName.equals("M_AttributeSet_ID") || columnName.equals("M_AttributeSetInstance_ID"))
- firstOK = 0;
- sb.append("if (").append (columnName)
- .append (" < ").append(firstOK).append(") throw new IllegalArgumentException (\"")
- .append(columnName).append(" is mandatory.\");");
- }
- else // set optional _ID to null if 0
- sb.append("if (").append (columnName).append (" <= 0) ")
- .append(setValue).append(" (\"").append(columnName).append("\", null); else \n");
- }
- sb.append(setValue).append(" (\"").append(columnName).append("\", Integer.valueOf(").append(columnName).append("));");
- }
- // Boolean
- else if (clazz.equals(Boolean.class))
- sb.append(setValue).append(" (\"").append(columnName).append("\", Boolean.valueOf(").append(columnName).append("));");
- else
- {
- if (isMandatory && AD_Reference_ID == 0) // does not apply to int/boolean
- {
- sb.append("if (")
- .append (columnName).append (" == null)"
- + " throw new IllegalArgumentException (\"")
- .append(columnName).append(" is mandatory.\");");
- }
- // String length check
- if (clazz.equals(String.class) && fieldLength > 0)
- {
- sb.append ("if (");
- if (!isMandatory)
- sb.append(columnName).append(" != null && ");
- sb.append(columnName).append(".length() > ").append(fieldLength)
- .append("){log.warning(\"Length > ")
- .append(fieldLength).append(" - truncated\");")
- .append(columnName).append(" = ")
- .append(columnName).append(".substring(0,").append(fieldLength-1).append(");}");
- }
-
- //
- sb.append (setValue).append(" (\"").append (columnName).append ("\", ")
- .append (columnName).append (");");
- }
- sb.append("}");
-
- // Mandatory call in constructor
- if (isMandatory)
- {
- mandatory.append("set").append(columnName).append(" (");
- if (clazz.equals(Integer.class))
- mandatory.append("0");
- else if (clazz.equals(Boolean.class))
- {
- if (defaultValue.indexOf('Y') != -1)
- mandatory.append(true);
- else
- mandatory.append("false");
- }
- else if (clazz.equals(BigDecimal.class))
- mandatory.append("Env.ZERO");
- else if (clazz.equals(Timestamp.class))
- mandatory.append("new Timestamp(System.currentTimeMillis())");
- else
- mandatory.append("null");
- mandatory.append(");");
- if (defaultValue.length() > 0)
- mandatory.append("// ").append(defaultValue).append(Env.NL);
- }
-
-
- // ****** Get Comment ******
- sb.append("/** Get ").append(Name);
- if (Description != null && Description.length() > 0)
- sb.append(".\n@return ").append(Description);
- else
- sb.append(".\n@return ").append(Name);
- sb.append(" */\n");
-
- // Get ********
- String getValue = "get_Value";
- if (IsEncrypted)
- getValue = "get_ValueE";
- sb.append("public ").append(dataType);
- if (clazz.equals(Boolean.class))
- {
- sb.append(" is");
- if (columnName.toLowerCase().startsWith("is"))
- sb.append(columnName.substring(2));
- else
- sb.append(columnName);
- }
- else
- sb.append(" get").append(columnName);
- sb.append("() {");
- if (clazz.equals(Integer.class))
- sb.append("Integer ii = (Integer)")
- .append(getValue).append("(\"").append(columnName).append("\");"
- + "if (ii == null)"
- + " return 0;"
- + "return ii.intValue();");
- else if (clazz.equals(BigDecimal.class))
- sb.append("BigDecimal bd = (BigDecimal)").append(getValue)
- .append("(\"").append(columnName).append("\");"
- + "if (bd == null)"
- + " return Env.ZERO;"
- + "return bd;");
- else if (clazz.equals(Boolean.class))
- sb.append("Object oo = ").append(getValue)
- .append("(\"").append(columnName).append("\");"
- + "if (oo != null) { if (oo instanceof Boolean) return ((Boolean)oo).booleanValue(); return \"Y\".equals(oo);}"
- + "return false;");
- else if (dataType.equals("Object"))
- sb.append("return ").append(getValue)
- .append("(\"").append(columnName).append("\");");
- else
- sb.append("return (").append(dataType).append(")").append(getValue)
- .append("(\"").append(columnName).append("\");");
- sb.append("}");
- //
- return sb.toString();
- } // createColumnMethods
-
-
- /**
- * Add List Validation
- * @param sb buffer - example:
- if (NextAction.equals("N") || NextAction.equals("F"));
- else throw new IllegalArgumentException ("NextAction Invalid value - Reference_ID=219 - N - F");
- * @param AD_Reference_ID reference
- * @param columnName column
- * @param nullable the validation must allow null values
- * @return static parameter - Example:
- public static final int NEXTACTION_AD_Reference_ID=219;
- public static final String NEXTACTION_None = "N";
- public static final String NEXTACTION_FollowUp = "F";
- */
- private String addListValidation (StringBuffer sb, int AD_Reference_ID,
- String columnName, boolean nullable)
- {
- StringBuffer retValue = new StringBuffer();
- retValue.append("\n/** ").append(columnName).append(" AD_Reference_ID=").append(AD_Reference_ID) .append(" */\n")
- .append("public static final int ").append(columnName.toUpperCase())
- .append("_AD_Reference_ID=").append(AD_Reference_ID).append(";");
- //
- boolean found = false;
- StringBuffer values = new StringBuffer("Reference_ID=")
- .append(AD_Reference_ID);
- StringBuffer statement = new StringBuffer();
- if (nullable)
- statement.append("if (").append(columnName).append(" == null");
- //
- String sql = "SELECT Value, Name FROM AD_Ref_List WHERE AD_Reference_ID=?";
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement(sql, null);
- pstmt.setInt(1, AD_Reference_ID);
- ResultSet rs = pstmt.executeQuery();
- while (rs.next())
- {
- String value = rs.getString(1);
- values.append(" - ").append(value);
- if (statement.length() == 0)
- statement.append("if (").append(columnName)
- .append(".equals(\"").append(value).append("\")");
- else
- statement.append(" || ").append(columnName)
- .append(".equals(\"").append(value).append("\")");
- //
- if (!found)
- {
- found = true;
- if (!nullable)
- sb.append("if (")
- .append (columnName).append (" == null)"
- + " throw new IllegalArgumentException (\"")
- .append(columnName).append(" is mandatory\");");
- }
-
-
- // Name (SmallTalkNotation)
- String name = rs.getString(2);
- char[] nameArray = name.toCharArray();
- StringBuffer nameClean = new StringBuffer();
- boolean initCap = true;
- for (int i = 0; i < nameArray.length; i++)
- {
- char c = nameArray[i];
- if (Character.isJavaIdentifierPart(c))
- {
- if (initCap)
- nameClean.append(Character.toUpperCase(c));
- else
- nameClean.append(c);
- initCap = false;
- }
- else
- {
- if (c == '+')
- nameClean.append("Plus");
- else if (c == '-')
- nameClean.append("_");
- else if (c == '>')
- {
- if (name.indexOf('<') == -1) // ignore
- nameClean.append("Gt");
- }
- else if (c == '<')
- {
- if (name.indexOf('>') == -1) // ignore
- nameClean.append("Le");
- }
- else if (c == '!')
- nameClean.append("Not");
- else if (c == '=')
- nameClean.append("Eq");
- else if (c == '~')
- nameClean.append("Like");
- initCap = true;
- }
- }
- retValue.append("/** ").append(name).append(" = ").append(value).append(" */\n");
- retValue.append("public static final String ").append(columnName.toUpperCase())
- .append("_").append(nameClean)
- .append(" = \"").append(value).append("\";");
- }
- rs.close();
- pstmt.close();
- pstmt = null;
- }
- catch (Exception e)
- {
- log.log(Level.SEVERE, sql, e);
- found = false;
- }
- finally
- {
- try
- {
- if (pstmt != null)
- pstmt.close ();
- }
- catch (Exception e)
- {}
- pstmt = null;
- }
- statement.append(")"
- + "; "
- + "else "
- + "throw new IllegalArgumentException (\"").append(columnName)
- .append(" Invalid value - \" + ").append(columnName)
- .append(" + \" - ").append(values).append("\");");
- //
- if (found && !columnName.equals("EntityType"))
- sb.append (statement);
- return retValue.toString();
- } // addListValidation
-
- /**
- * Create getKeyNamePair() method with first identifier
- * @param columnName name
- * * @param displayType int
- @return method code
- */
- private StringBuffer createKeyNamePair (String columnName, int displayType)
- {
- String method = "get" + columnName + "()";
- if (displayType != DisplayType.String)
- method = "String.valueOf(" + method + ")";
- StringBuffer sb = new StringBuffer("/** Get Record ID/ColumnName\n@return ID/ColumnName pair\n*/"
- + "public KeyNamePair getKeyNamePair() "
- + "{return new KeyNamePair(get_ID(), ").append(method).append(");}");
- return sb;
- } // createKeyNamePair
-
-
- /**************************************************************************
- * Write to file
- * @param sb string buffer
- * @param fileName file name
- */
- private void writeToFile (StringBuffer sb, String fileName)
- {
- try
- {
- File out = new File (fileName);
- // FileWriter fw = new FileWriter (out);
- // http://sourceforge.net/tracker/index.php?func=detail&aid=1629947&group_id=176962&atid=879332
- Writer fw = new OutputStreamWriter(new FileOutputStream(out, false), "UTF-8");
- for (int i = 0; i < sb.length(); i++)
- {
- char c = sb.charAt(i);
- // after
- if (c == ';' || c == '}')
- {
- fw.write (c);
- if (sb.substring(i+1).startsWith("//"))
- fw.write('\t');
- else
- fw.write(Env.NL);
- }
- // before & after
- else if (c == '{')
- {
- fw.write(Env.NL);
- fw.write (c);
- fw.write(Env.NL);
- }
- else
- fw.write (c);
- }
- fw.flush ();
- fw.close ();
- float size = out.length();
- size /= 1024;
- log.info(out.getAbsolutePath() + " - " + size + " kB");
- }
- catch (Exception ex)
- {
- log.log(Level.SEVERE, fileName, ex);
- }
- } // writeToFile
-
- /**
- * String representation
- * @return string representation
- */
- public String toString()
- {
- StringBuffer sb = new StringBuffer ("GenerateModel[")
- .append("]");
- return sb.toString();
- } // toString
-
-
-
- /**************************************************************************
- * Generate PO Model Class.
- *
- * Example: java GenerateModel.class mydirectory myPackage 'U','A'
- * would generate entity type User and Application classes into mydirectory.
- * Without parameters, the default is used:
- * C:\Adempiere\adempiere-all\extend\src\adempiere\model\ adempiere.model 'U','A'
- *
- * @param args directory package entityType
- * - directory where to save the generated file
- * - package of the classes to be generated
- * - entityType to be generated
- */
- public static void main (String[] args)
- {
- org.compiere.Adempiere.startupEnvironment(true);
- CLogMgt.setLevel(Level.FINE);
- // CLogMgt.setLevel(Level.ALL);
- log.info("Generate Model $Revision: 1.5 $");
- log.info("----------------------------------");
- // first parameter
- String directory = "/Users/Horus/Documents/adempiere/clientes/libero/src/org/eevolution/model/";
- if (args.length > 0)
- directory = args[0];
- if (directory == null || directory.length() == 0)
- {
- System.err.println("No Directory");
- System.exit(1);
- }
- log.info("Directory: " + directory);
-
- // second parameter
- String packageName = "org.eevolution.model";
- if (args.length > 1)
- packageName = args[1];
- if (packageName == null || packageName.length() == 0)
- {
- System.err.println("No package");
- System.exit(1);
- }
- log.info("Package: " + packageName);
-
- // third parameter
- String entityType = "'U','A','D','EE01'"; // User, Application
- if (args.length > 2)
- entityType = args[2];
- if (entityType == null || entityType.length() == 0)
- {
- System.err.println("No EntityType");
- System.exit(1);
- }
- StringBuffer sql = new StringBuffer("EntityType IN (")
- .append(entityType).append(")");
- log.info(sql.toString());
- log.info("----------------------------------");
-
- // globalqss - add filter LIKE table
- String tableLike = "'%PP_%'"; // All tables
- if (args.length > 3)
- tableLike = args[3];
- log.info("Table Like: " + tableLike);
-
- // complete sql
- sql.insert(0, "SELECT AD_Table_ID "
- + "FROM AD_Table "
- + "WHERE (TableName IN ('RV_WarehousePrice','RV_BPartner')" // special views
- + " OR IsView='N')"
- + " AND TableName NOT LIKE '%_Trl' AND ");
- // globalqss
- sql.append(" AND TableName LIKE ").append(tableLike);
- //
- sql.append(" ORDER BY TableName");
-
- //
- int count = 0;
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement(sql.toString(), null);
- ResultSet rs = pstmt.executeQuery();
- while (rs.next())
- {
- new GenerateModel(rs.getInt(1), directory, packageName);
- count++;
- }
- rs.close();
- pstmt.close();
- pstmt = null;
- }
- catch (Exception e)
- {
- log.severe("main - " + e);
- }
- finally
- {
- try
- {
- if (pstmt != null)
- pstmt.close ();
- }
- catch (Exception e)
- {}
- pstmt = null;
- }
- log.info("Generated = " + count);
-
- } // main
-
-} // GenerateModel
diff --git a/base/src/org/eevolution/tools/PLoader.java b/base/src/org/eevolution/tools/PLoader.java
deleted file mode 100644
index 700ae3b424..0000000000
--- a/base/src/org/eevolution/tools/PLoader.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-package org.eevolution.tools;
-
-import java.io.InputStream;
-import java.util.Properties;
-
-/**
-* @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
-* @version 1.0, October 14th 2005
-*/
-public class PLoader {
-
- protected Properties properties;
-
- public PLoader(String properties) {
-
- init(getClass(), properties);
- }
-
- public PLoader(Class clazz, String properties) {
-
- init(clazz, properties);
- }
-
- protected void init(Class clazz, String name) {
-
- properties = new Properties();
- InputStream is = clazz.getResourceAsStream(name);
- try {
-
- if(is != null) {
-
- properties.load(is);
- }
- }
- catch(Exception e) {
-
- e.printStackTrace();
- }
- finally {
-
- try {
-
- if(is != null) {
-
- is.close();
- }
- }
- catch(Exception ee) {
-
- ee.printStackTrace();
- }
- }
- }
-
- public Properties getProperties() {
-
- return properties;
- }
-}
diff --git a/base/src/org/eevolution/tools/swing/AbstractLimiterPlainDocument.java b/base/src/org/eevolution/tools/swing/AbstractLimiterPlainDocument.java
deleted file mode 100644
index 35cbf9fce1..0000000000
--- a/base/src/org/eevolution/tools/swing/AbstractLimiterPlainDocument.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.tools.swing;
-
-import java.math.BigDecimal;
-
-import javax.swing.text.AttributeSet;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.PlainDocument;
-
-/**
-* @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
-* @version 1.0, October 14th 2005
-*/
-public abstract class AbstractLimiterPlainDocument extends PlainDocument {
-
- protected int charCount;
- protected BigDecimal maxNumber;
- protected BigDecimal minNumber;
-
- protected CharDefinition charDefinition;
-
- public abstract void action(String value);
-
- public AbstractLimiterPlainDocument(CharDefinition def){
-
- super();
-
- charDefinition = def;
-
- charCount = -1;
- }
-
- public int getCharCount() {
-
- return charCount;
- }
-
- public void setCharCount(int charCount) {
-
- this.charCount = charCount;
- }
-
- public BigDecimal getMaxNumber() {
-
- return maxNumber;
- }
-
- public BigDecimal getMinNumber() {
-
- return minNumber;
- }
-
- public void setMaxNumber(BigDecimal number) {
-
- this.maxNumber = number;
- }
-
- public void setMinNumber(BigDecimal number) {
-
- this.minNumber = number;
- }
-
- public CharDefinition getCharDefinition() {
-
- return charDefinition;
- }
-
- public void insertString (int offset, String str, AttributeSet attr) throws BadLocationException {
-
- if ((str == null) || !charDefinition.contains(str.charAt(0)) ) {
-
- return;
- }
-
- if(getCharCount() > 0) {
-
- if ((getLength() + str.length()) > charCount){
-
- return;
- }
- }
- String value = getText(0, offset)+str;
- if(!isValidNumber(value)) {
-
- return;
- }
-
- action(value);
- super.insertString(offset, str, attr);
- }
-
- protected boolean isValidNumber(String str) {
-
- if(str == null || str.length() == 0) {
-
- return true;
- }
-
- boolean valid = true;
-
- if(maxNumber != null) {
-
- BigDecimal actual = new BigDecimal(str);
-
- valid = maxNumber.compareTo(actual) >= 0;
- if(valid && minNumber != null) {
-
- valid = minNumber.compareTo(actual) < 0;
- }
- }
-
- return valid;
- }
-}
-
diff --git a/base/src/org/eevolution/tools/swing/CharDefinition.java b/base/src/org/eevolution/tools/swing/CharDefinition.java
deleted file mode 100644
index d469fd6aab..0000000000
--- a/base/src/org/eevolution/tools/swing/CharDefinition.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.tools.swing;
-
-
-/**
-* @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
-* @version 1.0, October 14th 2005
-*/
-public class CharDefinition {
-
- public CharDefinition() {
- }
-
-
- public static CharDefinition getDefaultDef() {
-
- CharDefinition def = new CharDefinition();
- def.setAllowed("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 .,&-/+*$%");
-
- return def;
- }
- public static CharDefinition getNumberDef() {
-
- CharDefinition def = new CharDefinition();
- def.setAllowed("1234567890");
-
- return def;
- }
- public static CharDefinition getLetterDef() {
-
- CharDefinition def = new CharDefinition();
- def.setAllowed("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
-
- return def;
- }
- public static CharDefinition getCurrencyDef() {
-
- CharDefinition def = new CharDefinition();
- def.setAllowed("1234567890,");
-
- return def;
- }
-
- public boolean contains(char c) {
-
- for(int i = 0; i < g_definition.length; i++) {
-
- if(c == g_definition[i]) return true;
- }
-
- return false;
- }
-
- public void setAllowed(String str) {
-
- g_definition = str.toCharArray();
- }
-
-
- private char[] g_definition;
-}
\ No newline at end of file
diff --git a/base/src/org/eevolution/tools/swing/SwingTool.java b/base/src/org/eevolution/tools/swing/SwingTool.java
deleted file mode 100644
index 86e6697180..0000000000
--- a/base/src/org/eevolution/tools/swing/SwingTool.java
+++ /dev/null
@@ -1,267 +0,0 @@
-package org.eevolution.tools.swing;
-
-import java.awt.Adjustable;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Cursor;
-import java.awt.Event;
-import java.awt.ItemSelectable;
-import java.awt.event.ContainerAdapter;
-import java.awt.event.ContainerEvent;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.swing.JComponent;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.KeyStroke;
-import javax.swing.text.JTextComponent;
-
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-/**
-* @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
-* @version 1.0, October 14th 2005
-*/
-public class SwingTool {
-
- public static synchronized void setCursorsFromChild(Component child, boolean waiting) {
-
- Component com = child;
-
- while(com.getParent() != null) {
-
- com = (Component)(com.getParent());
- }
-
- setCursorsFromParent((Container)com, waiting);
- }
-
- protected static boolean isIgnoredComponent(Component c) {
-
- boolean retVal = true;
-
- if(c instanceof ItemSelectable && c.isEnabled()) {
-
- retVal = false;
- }
- else if(c instanceof JTextComponent && c.isEnabled()) {
-
- retVal = false;
- }
- else if(c instanceof JFrame && c.isEnabled()) {
-
- retVal = false;
- }
- else if(c instanceof JPanel && c.isEnabled()) {
-
- retVal = false;
- }
- else if(c instanceof JLabel && c.isEnabled()) {
-
- retVal = false;
- }
- else if(c instanceof Adjustable && c.isEnabled()) {
-
- retVal = false;
- }
-
- return retVal;
- }
-
- public static void setCursor(Component c, boolean waiting) {
-
- if(isIgnoredComponent(c)) {
-
- return;
- }
-
- Cursor cursor_wait = new Cursor(Cursor.WAIT_CURSOR);
- Cursor cursor_def = getPredefinedCursor(c);
-
- Component com = c;
-
- if(waiting) {
-
- com.setCursor(cursor_wait);
- }
- else {
-
- com.setCursor(cursor_def);
- }
- }
-
- public static Cursor getPredefinedCursor(Component c) {
-
- Cursor cursor = Cursor.getDefaultCursor();
-
- if(c instanceof JTextComponent) {
-
- cursor = Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR);
- }
- else if(c instanceof ItemSelectable || c instanceof Adjustable) {
-
- cursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);
- }
-
- return cursor;
- }
-
- public static void setCursors(Component[] components, boolean waiting) {
-
- for( int i = 0; i < components.length; i++) {
-
- setCursor(components[i], waiting);
- }
- }
-
- public synchronized static void setCursorsFromParent(Container parent, boolean waiting) {
-
- Container con = parent;
-
- for(int i = 0; i < con.getComponentCount(); i++) {
-
- setCursor(con.getComponent(i), waiting);
-
- if(con.getComponent(i) instanceof Container) {
-
- setCursorsFromParent((Container)con.getComponent(i), waiting);
- }
- }
- }
-
- public static Component searchComponent(Container parent, Class clazz, boolean remove) {
-
- Container con = parent;
- Component retVal = null;
- Component c = null;
-
- for(int i = 0; i < con.getComponentCount(); i++) {
-
- c = con.getComponent(i);
-
- //Found the given class and breaks the loop
- if(clazz.isInstance(c)) {
-
- if(remove) {
-
- con.remove(c);
- }
-
- return c;
- }
-
- //Recursively calling this method to search in deep
- if(c instanceof Container) {
-
- c = searchComponent((Container)c , clazz, remove);
-
- if(clazz.isInstance(c)) {
-
- if(remove) {
-
- con.remove(retVal);
- }
-
- return c;
- }
- }
- }
-
- return null;
- }
-
- public static void addOpaque(JComponent c, final boolean opaque) {
-
- ContainerAdapter ca = new ContainerAdapter() {
-
- public void componentAdded(ContainerEvent e) {
-
- setOpaque(e.getChild());
- }
-
- private void setOpaque(Component c) {
-
- //ignores all selectable items, like buttons
- if(c instanceof ItemSelectable) {
-
- return;
- }
- // sets transparent
- else if(c instanceof JComponent) {
-
- ((JComponent)c).setOpaque(opaque);
- }
- // recursively calls this method for all container components
- else if(c instanceof Container) {
-
- for(int i = 0; i > ((Container)c).getComponentCount(); i++) {
-
- setOpaque(((Container)c).getComponent(i));
- }
- }
- }
- };
- c.addContainerListener(ca);
- }
-
-
-
- public static KeyStroke getKeyStrokeFor(String name, List usedStrokes) {
-
- return (name == null) ? null : getKeyStrokeFor(name.charAt(0), usedStrokes);
- }
-
- public static KeyStroke getKeyStrokeFor(char c, List usedStrokes) {
-
- int m = Event.CTRL_MASK;
-
- KeyStroke o = null;
- for(Iterator i = usedStrokes.iterator(); i.hasNext();) {
-
- o = (KeyStroke)i.next();
- if(c == o.getKeyChar()) {
-
- if(c == o.getKeyChar()) {
-
- if(o.getModifiers() != Event.SHIFT_MASK+Event.CTRL_MASK) {
-
- m = Event.SHIFT_MASK+Event.CTRL_MASK;
- }
- else if(o.getModifiers() != Event.SHIFT_MASK+Event.ALT_MASK) {
-
- m = Event.SHIFT_MASK+Event.ALT_MASK;
- }
- else {
-
- m = -1;
- }
- }
- }
- }
-
- KeyStroke s = null;
- if(m != -1) {
-
- s = KeyStroke.getKeyStroke(c, m);
- usedStrokes.add(s);
- }
-
- return s;
- }
-}
diff --git a/base/src/org/eevolution/tools/worker/MultiWorker.java b/base/src/org/eevolution/tools/worker/MultiWorker.java
deleted file mode 100644
index cb8009d65e..0000000000
--- a/base/src/org/eevolution/tools/worker/MultiWorker.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.tools.worker;
-
-/**
-* @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
-* @version 1.0, October 14th 2005
-*/
-public abstract class MultiWorker {
-
- protected abstract class WorkerThread extends Thread {
-
- abstract public Object doWork();
-
- public void run() {
-
- isWorking = true;
- value = doWork();
- isWorking = false;
- }
-
- public void interrupt() {
-
- super.interrupt();
- isWorking = false;
- }
- }
-
- protected boolean isWorking;
- protected WorkerThread workerThread;
- protected int timeout;
- protected Object value;
-
- public MultiWorker() {
-
- setTimeout(-1);
- }
-
- public abstract void start();
-
-
- public int getTimeout() {
-
- return timeout;
- }
-
- public void setTimeout(int timeout) {
-
- this.timeout = timeout;
- }
-
- public boolean isWorking() {
-
- return isWorking;
- }
-
- public void waitForComplete(int timeout) {
-
- setTimeout(timeout);
- waitForComplete();
- }
-
- public void stop() {
-
- workerThread.interrupt();
- }
-
- public void waitForComplete() {
-
- boolean to = getTimeout() > -1;
-
- int c = 0;
- int i = 1000;
- while(isWorking()) {
-
- try {
-
- Thread.sleep(i);
- c+= to ? c+=i : -1;
- }
- catch(Exception e) {}
-
- if(to && c >= getTimeout()) {
-
- workerThread.interrupt();
- workerThread = null;
- break;
- }
- }
- }
-}
diff --git a/base/src/org/eevolution/tools/worker/SingleWorker.java b/base/src/org/eevolution/tools/worker/SingleWorker.java
deleted file mode 100644
index 47119cdab6..0000000000
--- a/base/src/org/eevolution/tools/worker/SingleWorker.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- * Contributor(s): Victor Perez www.e-evolution.com *
- *****************************************************************************/
-
-package org.eevolution.tools.worker;
-
-/**
-* @author Gunther Hoppe, tranSIT GmbH Ilmenau/Germany
-* @version 1.0, October 14th 2005
-*/
-public abstract class SingleWorker extends MultiWorker {
-
- public SingleWorker() {
-
- super();
- }
-
- public void start() {
-
- workerThread = new WorkerThread() {
-
- public Object doWork() {
-
- return doIt();
- };
- };
- workerThread.start();
- }
-
- protected abstract Object doIt();
-}
diff --git a/client/src/org/compiere/grid/ed/VLookup.java b/client/src/org/compiere/grid/ed/VLookup.java
index 6414f850b3..9b52d7824a 100644
--- a/client/src/org/compiere/grid/ed/VLookup.java
+++ b/client/src/org/compiere/grid/ed/VLookup.java
@@ -75,7 +75,7 @@ import org.compiere.util.Ini;
import org.compiere.util.Msg;
import org.compiere.util.NamePair;
import org.compiere.util.ValueNamePair;
-import org.eevolution.model.MPPProductBOMLine;
+import org.eevolution.model.X_PP_Product_BOMLine;
/**
* Lookup Visual Field.
@@ -822,7 +822,7 @@ public class VLookup extends JComponent
{
int AD_Table_ID = MColumn.getTable_ID(Env.getCtx(), m_mField.getAD_Column_ID(), null);
- multipleSelection = (MOrderLine.Table_ID == AD_Table_ID) || (MInvoiceLine.Table_ID == AD_Table_ID) || (MPPProductBOMLine.Table_ID == AD_Table_ID) || (MProductPrice.Table_ID == AD_Table_ID);
+ multipleSelection = (MOrderLine.Table_ID == AD_Table_ID) || (MInvoiceLine.Table_ID == AD_Table_ID) || (X_PP_Product_BOMLine.Table_ID == AD_Table_ID) || (MProductPrice.Table_ID == AD_Table_ID);
}
// Show Info
InfoProduct ip = new InfoProduct (frame, true, m_lookup.getWindowNo(),
diff --git a/extend/src/org/adempiere/model/ExportModelValidator.java b/extend/src/org/adempiere/model/ExportModelValidator.java
deleted file mode 100644
index dd043f0b1e..0000000000
--- a/extend/src/org/adempiere/model/ExportModelValidator.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/**********************************************************************
-* This file is part of Adempiere ERP Bazaar *
-* http://www.adempiere.org *
-* *
-* Copyright (C) Trifon Trifonov. *
-* Copyright (C) Contributors *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; either version 2 *
-* of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* You should have received a copy of the GNU General Public License *
-* along with this program; if not, write to the Free Software *
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
-* MA 02110-1301, USA. *
-* *
-* Contributors: *
-* - Trifon Trifonov (trifonnt@users.sourceforge.net) *
-* *
-* Sponsors: *
-* - E-evolution (http://www.e-evolution.com) *
-***********************************************************************/
-
-package org.adempiere.model;
-
-import org.adempiere.process.rpl.exp.ExportHelper;
-import org.compiere.model.MClient;
-import org.compiere.model.MReplicationStrategy;
-import org.compiere.model.MTable;
-import org.compiere.model.ModelValidationEngine;
-import org.compiere.model.ModelValidator;
-import org.compiere.model.PO;
-import org.compiere.model.X_AD_ReplicationDocument;
-import org.compiere.model.X_AD_ReplicationTable;
-import org.compiere.util.CLogger;
-
-
-/**
- * Export Validator which is responsible to create XML document.
- *
- * @author Trifon Trifonov
- * @version $Id$
- */
-public class ExportModelValidator implements ModelValidator
-{
-
- /** Logger */
- private static CLogger log = CLogger.getCLogger(ExportModelValidator.class);
-
- /** Client */
- private int m_AD_Client_ID = -1;
-
- /** Organization */
- private int m_AD_Org_ID = -1;
-
- /** Role */
- private int m_AD_Role_ID = -1;
-
- /** User */
- private int m_AD_User_ID = -1;
-
- /** Replication Strategy **/
- private int m_AD_ReplicationStrategy_ID = -1;
-
- /** Export Helper */
- ExportHelper expHelper = null;
-
- /**
- * Constructor.
- * The class is instantiated when logging in and client is selected/known
- */
- public ExportModelValidator ()
- {
- super ();
- }
-
- /**
- * Initialize Validation
- * @param engine validation engine
- * @param client client
- */
- public void initialize (ModelValidationEngine engine, MClient client)
- {
- m_AD_Client_ID = client.getAD_Client_ID();
- log.info(client.toString());
-
- MReplicationStrategy rplStrategy = null;
-
- m_AD_ReplicationStrategy_ID = client.getAD_ReplicationStrategy_ID();
- log.info("client.getAD_ReplicationStrategy_ID() = " + m_AD_ReplicationStrategy_ID);
-
- if (m_AD_ReplicationStrategy_ID > 0) {
- rplStrategy = new MReplicationStrategy(client.getCtx(), m_AD_ReplicationStrategy_ID, null);
- expHelper = new ExportHelper(client, rplStrategy);
- }
- // Add Tables
- // We want to be informed when records in Replication tables are created/updated/deleted!
- //engine.addModelChange(MBPartner.Table_Name, this);
- //engine.addModelChange(MOrder.Table_Name, this);
- //engine.addModelChange(MOrderLine.Table_Name, this);
- if (rplStrategy != null) {
-
- for (X_AD_ReplicationTable rplTable : rplStrategy.getReplicationTables()) {
- if (X_AD_ReplicationTable.REPLICATIONTYPE_Merge.equals(rplTable.getReplicationType())
- || X_AD_ReplicationTable.REPLICATIONTYPE_Reference.equals(rplTable.getReplicationType()))
- {
- MTable table = MTable.get (client.getCtx(), rplTable.getAD_Table_ID());
- engine.addModelChange(table.getTableName(), this);
- }
- }
- }
- // Add Documents
- // We want to be informed when Replication documents are created/updated/deleted!
- if (rplStrategy != null) {
- for (X_AD_ReplicationDocument rplDocument : rplStrategy.getReplicationDocuments()) {
- if (X_AD_ReplicationDocument.REPLICATIONTYPE_Merge.equals(rplDocument.getReplicationType())
- || X_AD_ReplicationDocument.REPLICATIONTYPE_Reference.equals(rplDocument.getReplicationType()))
- {
- //MDocType docType = MDocType.get(client.getCtx(), rplDocuments[i].getC_DocType_ID());
- MTable table = MTable.get (client.getCtx(), rplDocument.getAD_Table_ID());
- engine.addDocValidate(table.getTableName(), this);
- }
- }
- }
-
- }
-
- /**
- * Model Change of a monitored Table.
- * Called after PO.beforeSave/PO.beforeDelete
- * @param po persistent object
- * @param type TYPE_
- * @return error message or null
- * @exception Exception if the recipient wishes the change to be not accept.
- */
- public String modelChange (PO po, int type) throws Exception
- {
- String Mode = "Table";
- log.info("po.get_TableName() = " + po.get_TableName());
- if (expHelper != null) {
- if ( type == TYPE_AFTER_CHANGE
- || type == TYPE_AFTER_NEW
- || type == TYPE_BEFORE_DELETE) // After Change or After New
- {
- expHelper.exportRecord( po,
- MReplicationStrategy.REPLICATION_TABLE,
- MReplicationStrategy.getReplicationDocument(po.getCtx(), m_AD_ReplicationStrategy_ID, po.get_Table_ID()).getReplicationType(),
- type);
- }
- }
-
- return null;
- }
-
- /**
- * Validate Document.
- * Called as first step of DocAction.prepareIt
- * when you called addDocValidate for the table.
- * @param po persistent object
- * @param type see TIMING_ constants
- * @return error message or null
- * @throws Exception
- */
- public String docValidate (PO po, int type)
- {
- log.info("po.get_TableName() = " + po.get_TableName());
- String result = null;
- if (expHelper != null) {
- try {
- if ( type == TIMING_AFTER_COMPLETE
- || type == TIMING_AFTER_CLOSE
- || type == TIMING_AFTER_REVERSECORRECT
- || type == TIMING_AFTER_VOID
- || type == TIMING_AFTER_VOID
- || type == TIMING_AFTER_PREPARE
- )
- {
- expHelper.exportRecord( po,
- MReplicationStrategy.REPLICATION_DOCUMENT ,
- MReplicationStrategy.getReplicationDocument(po.getCtx(), m_AD_ReplicationStrategy_ID, po.get_Table_ID()).getReplicationType(),
- type);
-
- }
- } catch (Exception e) {
- e.printStackTrace();
- result = e.toString();
- }
- }
- return result;
- }
-
- /**
- * User Login.
- * Called when preferences are set
- * @param AD_Org_ID org
- * @param AD_Role_ID role
- * @param AD_User_ID user
- * @return error message or null
- */
- public String login (int AD_Org_ID, int AD_Role_ID, int AD_User_ID)
- {
- m_AD_Org_ID = AD_Org_ID;
- m_AD_Role_ID = AD_Role_ID;
- m_AD_User_ID = AD_User_ID;
-
- log.info("AD_Org_ID =" + m_AD_Org_ID);
- log.info("AD_Role_ID =" + m_AD_Role_ID);
- log.info("AD_User_ID =" + m_AD_User_ID);
- return null;
- }
-
-
- /**
- * Get Client to be monitored
- * @return AD_Client_ID client
- */
- public int getAD_Client_ID()
- {
- return m_AD_Client_ID;
- }
-
- /**
- * String Representation
- * @return info
- */
- public String toString ()
- {
- StringBuffer sb = new StringBuffer (ExportModelValidator.class.getName());
- return sb.toString();
- }
-
-}
diff --git a/extend/src/org/adempiere/process/rpl/IExportProcessor.java b/extend/src/org/adempiere/process/rpl/IExportProcessor.java
deleted file mode 100644
index 579dafacfb..0000000000
--- a/extend/src/org/adempiere/process/rpl/IExportProcessor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/**********************************************************************
-* This file is part of Adempiere ERP Bazaar *
-* http://www.adempiere.org *
-* *
-* Copyright (C) Trifon Trifonov. *
-* Copyright (C) Contributors *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; either version 2 *
-* of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* You should have received a copy of the GNU General Public License *
-* along with this program; if not, write to the Free Software *
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
-* MA 02110-1301, USA. *
-* *
-* Contributors: *
-* - Trifon Trifonov (trifonnt@users.sourceforge.net) *
-* *
-* Sponsors: *
-* - E-evolution (http://www.e-evolution.com) *
-***********************************************************************/
-
-package org.adempiere.process.rpl;
-
-import java.util.Properties;
-
-import org.compiere.util.Trx;
-import org.eevolution.model.MEXPProcessor;
-import org.w3c.dom.Document;
-
-/**
- * @author Trifon N. Trifonov
- */
-public interface IExportProcessor {
-
- public void process(Properties ctx, MEXPProcessor expProcessor, Document document, Trx trx)
- throws Exception;
-
-}
diff --git a/extend/src/org/adempiere/process/rpl/exp/ExportHelper.java b/extend/src/org/adempiere/process/rpl/exp/ExportHelper.java
deleted file mode 100644
index fd93a66673..0000000000
--- a/extend/src/org/adempiere/process/rpl/exp/ExportHelper.java
+++ /dev/null
@@ -1,599 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * - Antonio Cañaveral, e-Evolution *
- * *
- * Sponsors: *
- * - E-evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-package org.adempiere.process.rpl.exp;
-
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Timestamp;
-import java.text.SimpleDateFormat;
-import java.util.HashMap;
-import java.util.Properties;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.adempiere.process.rpl.IExportProcessor;
-import org.compiere.model.MClient;
-import org.compiere.model.MColumn;
-import org.compiere.model.MReplicationStrategy;
-import org.compiere.model.MTable;
-import org.compiere.model.PO;
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-import org.compiere.util.DisplayType;
-import org.compiere.util.Env;
-import org.compiere.util.Language;
-import org.compiere.util.Msg;
-import org.compiere.util.Trx;
-import org.eevolution.model.MEXPFormat;
-import org.eevolution.model.MEXPFormatLine;
-import org.eevolution.model.MEXPProcessor;
-import org.eevolution.model.MEXPProcessorType;
-import org.eevolution.model.X_EXP_FormatLine;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Text;
-
-/**
- * @author Trifon N. Trifonov
- * @author Antonio Cañaveral, e-Evolution
- * [ 2195016 ] Implementation delete records messages
- * http://sourceforge.net/tracker/index.php?func=detail&aid=2195016&group_id=176962&atid=879332
- */
-public class ExportHelper {
-
- /** Logger */
- private static CLogger log = CLogger.getCLogger(ExportHelper.class);
-
- /** XML Document */
- private Document outDocument = null;
-
- /** Date Time Format */
- private SimpleDateFormat m_dateTimeFormat = null;
-
- /** Date Format */
- private SimpleDateFormat m_dateFormat = null;
-
- /** Custom Date Format */
- private SimpleDateFormat m_customDateFormat = null;
-
- /** Client */
- private int m_AD_Client_ID = -1;
-
- /** Replication Strategy */
- MReplicationStrategy m_rplStrategy = null;
-
-
- public ExportHelper(MClient client, MReplicationStrategy rplStrategy) {
- m_AD_Client_ID = client.getAD_Client_ID();
- m_rplStrategy = rplStrategy;
-
- m_dateTimeFormat = DisplayType.getDateFormat(DisplayType.DateTime, Language.getLanguage(Env.getAD_Language(client.getCtx())));
- m_dateFormat = DisplayType.getDateFormat(DisplayType.Date, Language.getLanguage(Env.getAD_Language(client.getCtx())));
- }
-
- public ExportHelper(Properties ctx , int AD_Client_ID) {
- m_AD_Client_ID = AD_Client_ID;
- m_dateTimeFormat = DisplayType.getDateFormat(DisplayType.DateTime, Language.getLanguage(Env.getAD_Language(ctx)));
- m_dateFormat = DisplayType.getDateFormat(DisplayType.Date, Language.getLanguage(Env.getAD_Language(ctx)));
- }
-
- /**
- * Process - Generate Export Format
- * @return info
- */
- @SuppressWarnings("unchecked")
- public String exportRecord (PO po, Integer ReplicationMode , String ReplicationType, Integer ReplicationEvent) throws Exception
- {
- MClient client = MClient.get (po.getCtx(), m_AD_Client_ID);
- log.info("Client = " + client.toString());
-
- log.info("TRIFON - po.getAD_Org_ID() = " + po.getAD_Org_ID());
-
- log.info("TRIFON - po.get_TrxName() = " + po.get_TrxName());
- if (po.get_TrxName() == null || po.get_TrxName().equals("")) {
- po.set_TrxName("exportRecord");
- }
-
-
- log.info("Table = " + po.get_TableName());
- //PO po = table.getPO (po.get_ID(), po.get_TrxName());
-
- if (po.get_KeyColumns().length > 1 || po.get_KeyColumns().length < 1) {
- throw new Exception(Msg.getMsg (po.getCtx(), "ExportMultiColumnNotSupported"));
- }
- // TODO - get proper Export Format!
- String version = "3.2.0";
- //int EXP_Format_ID = 1000006;
- MEXPFormat exportFormat = null;
- //exportFormat = new MFormat(po.getCtx(), EXP_Format_ID, po.get_TrxName());
- exportFormat = MEXPFormat.getFormatByAD_Client_IDAD_Table_IDAndVersion(po.getCtx(), m_AD_Client_ID, po.get_Table_ID(), version, po.get_TrxName());
- log.fine("exportFormat = " + exportFormat);
- if (exportFormat == null || exportFormat.getEXP_Format_ID() == 0) {
- // Fall back to System Client
- MClient systemClient = MClient.get (po.getCtx(), 0);
- log.info(systemClient.toString());
- exportFormat = MEXPFormat.getFormatByAD_Client_IDAD_Table_IDAndVersion(po.getCtx(), 0, po.get_Table_ID(), version, po.get_TrxName());
-
- if (exportFormat == null || exportFormat.getEXP_Format_ID() == 0) {
- throw new Exception(Msg.getMsg(po.getCtx(), "EXPFormatNotFound"));
- }
- }
-
- outDocument = createNewDocument();
-
- StringBuffer sql = new StringBuffer("SELECT * ")
- .append("FROM ").append(po.get_TableName()).append(" ")
- .append("WHERE ").append(po.get_KeyColumns()[0]).append("=?")
- ;
-
- if (exportFormat.getWhereClause() != null & !"".equals(exportFormat.getWhereClause())) {
- sql.append(" AND ").append(exportFormat.getWhereClause());
- }
-
- ResultSet rs = null;
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement(sql.toString(), po.get_TrxName());
- pstmt.setInt(1, po.get_ID());
- rs = pstmt.executeQuery();
- if (rs.next())
- {
- HashMap variableMap = new HashMap();
- //variableMap.put(TOTAL_SEGMENTS, new Integer(1));
-
- Element rootElement = outDocument.createElement(exportFormat.getValue());
- if (exportFormat.getDescription() != null && !"".equals(exportFormat.getDescription())) {
- rootElement.appendChild(outDocument.createComment(exportFormat.getDescription()));
- }
- rootElement.setAttribute("AD_Client_Value", client.getValue());
- rootElement.setAttribute("Version", exportFormat.getVersion());
- rootElement.setAttribute("ReplicationMode", ReplicationMode.toString());
- rootElement.setAttribute("ReplicationType", ReplicationType);
- rootElement.setAttribute("ReplicationEvent", ReplicationEvent.toString());
- outDocument.appendChild(rootElement);
- generateExportFormat(rootElement, exportFormat, rs, po, po.get_ID(), variableMap);
- }
-
- } finally {
- try {
- if (rs != null) rs.close();
- if (pstmt != null) pstmt.close();
- } catch (SQLException ex) {/*ignored*/}
- rs = null;
- pstmt = null;
- }
-
- MEXPProcessor mExportProcessor = null;
- mExportProcessor = new MEXPProcessor (po.getCtx(), m_rplStrategy.getEXP_Processor_ID(), po.get_TrxName() );
- log.fine("ExportProcessor = " + mExportProcessor);
- int EXP_ProcessorType_ID = 0;
- EXP_ProcessorType_ID = mExportProcessor.getEXP_Processor_Type_ID();
- MEXPProcessorType expProcessor_Type = new MEXPProcessorType(po.getCtx(), EXP_ProcessorType_ID, po.get_TrxName() );
-
-
- String javaClass = expProcessor_Type.getJavaClass();
- try {
- Class clazz = Class.forName(javaClass);
- IExportProcessor exportProcessor = (IExportProcessor)clazz.newInstance();
-
- exportProcessor.process(po.getCtx(), mExportProcessor, outDocument, Trx.get( po.get_TrxName(), false ));
-
- } catch (Exception e) {
- log.severe(e.toString());
- throw e;
- }
-
- return outDocument.toString();
- }
-
-
- /**
- * Process - Generate Export Format
- * @param
- *
- * @return Document
- */
- @SuppressWarnings("unchecked")
- public Document exportRecord (MEXPFormat exportFormat, String where , Integer ReplicationMode , String ReplicationType, Integer ReplicationEvent) throws Exception
- {
- MClient client = MClient.get (exportFormat.getCtx(), m_AD_Client_ID);
- MTable table = MTable.get(exportFormat.getCtx(), exportFormat.getAD_Table_ID());
- log.info("Table = " + table);
- int[] ids = MTable.getAllIDs(table.getTableName(), where, null);
-
- for (int id : ids)
- {
- PO po = table.getPO(id, null);
- log.info("Client = " + client.toString());
-
- log.info("TRIFON - po.getAD_Org_ID() = " + po.getAD_Org_ID());
-
- log.info("TRIFON - po.get_TrxName() = " + po.get_TrxName());
- if (po.get_TrxName() == null || po.get_TrxName().equals("")) {
- po.set_TrxName("exportRecord");
- }
-
- if (po.get_KeyColumns().length > 1 || po.get_KeyColumns().length < 1) {
- throw new Exception(Msg.getMsg (po.getCtx(), "ExportMultiColumnNotSupported"));
- }
- // TODO - get proper Export Format!
- String version = "3.2.0";
- outDocument = createNewDocument();
-
- StringBuffer sql = new StringBuffer("SELECT * ")
- .append("FROM ").append(table.getTableName()).append(" ")
- .append("WHERE ").append(po.get_KeyColumns()[0]).append("=?")
- ;
-
- if (exportFormat.getWhereClause() != null & !"".equals(exportFormat.getWhereClause())) {
- sql.append(" AND ").append(exportFormat.getWhereClause());
- }
-
- ResultSet rs = null;
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement(sql.toString(), po.get_TrxName());
- pstmt.setInt(1, po.get_ID());
- rs = pstmt.executeQuery();
- if (rs.next())
- {
- HashMap variableMap = new HashMap();
- //variableMap.put(TOTAL_SEGMENTS, new Integer(1));
-
- Element rootElement = outDocument.createElement(exportFormat.getValue());
- if (exportFormat.getDescription() != null && !"".equals(exportFormat.getDescription())) {
- rootElement.appendChild(outDocument.createComment(exportFormat.getDescription()));
- }
- rootElement.setAttribute("AD_Client_Value", client.getValue());
- rootElement.setAttribute("Version", exportFormat.getVersion());
- rootElement.setAttribute("ReplicationMode", ReplicationMode.toString());
- rootElement.setAttribute("ReplicationType", ReplicationType);
- rootElement.setAttribute("ReplicationEvent", ReplicationEvent.toString());
- outDocument.appendChild(rootElement);
- generateExportFormat(rootElement, exportFormat, rs, po, po.get_ID(), variableMap);
- }
-
- } finally {
- try {
- if (rs != null) rs.close();
- if (pstmt != null) pstmt.close();
- } catch (SQLException ex) {/*ignored*/}
- rs = null;
- pstmt = null;
- }
- }// finish record read
- return outDocument;
- }
-
-
- /*
- * Trifon Generate Export Format process; RESULT =
- *
- * 101
- *
- */
- private void generateExportFormat(Element rootElement, MEXPFormat exportFormat, ResultSet rs, PO masterPO, int masterID, HashMap variableMap) throws SQLException, Exception
- {
- MEXPFormatLine[] formatLines = (MEXPFormatLine[]) exportFormat.getFormatLines();
- @SuppressWarnings("unused")
- boolean elementHasValue = false;
-
- for (int i = 0; i < formatLines.length; i++) {
- if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_XMLElement) ) {
- // process single XML Attribute
- // Create new element
- Element newElement = outDocument.createElement(formatLines[i].getValue());
-
- if (formatLines[i].getAD_Column_ID() == 0) {
- throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory"));
- }
- MColumn column = MColumn.get(masterPO.getCtx(), formatLines[i].getAD_Column_ID());
- if (column == null) {
- throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory"));
- }
- if ( column.isVirtualColumn() ) {
- log.info("This is Virtual Column!");
- } else { }
- //log.info("["+column.getColumnName()+"]");
-
- Object value = rs.getObject(column.getColumnName());
- String valueString = null;
- if (value != null) {
- valueString = value.toString();
- } else {
- // Could remove this exception and create empty XML Element when column do not have value.
- if (formatLines[i].isMandatory()) {
- //throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPFieldMandatory"));
- }
- }
- if (column.getAD_Reference_ID() == DisplayType.Date) {
- if (valueString != null) {
- if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) {
- m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy"
- //Date date = m_customDateFormat.parse ( valueString );
- valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
- newElement.setAttribute("DateFormat", m_customDateFormat.toPattern()); // Add "DateForamt attribute"
- } else {
- //valueString = m_dateFormat.format (Timestamp.valueOf (valueString));
- //newElement.setAttribute("DateFormat", m_dateTimeFormat.toPattern()); // Add "DateForamt attribute
- //Standard Japanese Format (default) works better (yyyy-mm-dd)
- newElement.setAttribute("DateFormat", valueString);
- }
-
- }
- } else if (column.getAD_Reference_ID() == DisplayType.DateTime) {
- if (valueString != null) {
- if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) {
- m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy"
- //Date date = m_customDateFormat.parse ( valueString );
- valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
- newElement.setAttribute("DateFormat", m_customDateFormat.toPattern()); // Add "DateForamt attribute"
- } else {
- //valueString = m_dateTimeFormat.format (Timestamp.valueOf (valueString));
- //newElement.setAttribute("DateFormat", m_dateTimeFormat.toPattern()); // Add "DateForamt attribute
- //Standard Japanese Format (default) works better (yyyy-mm-dd hh:mm:ss m.mm)
- newElement.setAttribute("DateFormat", valueString);
- }
- }
- }
- log.info("EXP Field - column=["+column.getColumnName()+"]; value=" + value);
- if (valueString != null && !"".equals(valueString) && !"null".equals(valueString)) {
- Text newText = outDocument.createTextNode(valueString);
- newElement.appendChild(newText);
- rootElement.appendChild(newElement);
- elementHasValue = true;
- //increaseVariable(variableMap, formatLines[i].getVariableName()); // Increase value of Variable if any Variable
- //increaseVariable(variableMap, TOTAL_SEGMENTS);
- } else {
- // Empty field.
- if (formatLines[i].isMandatory()) {
- Text newText = outDocument.createTextNode("");
- newElement.appendChild(newText);
- rootElement.appendChild(newElement);
- elementHasValue = true;
- }
- }
- } else if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_XMLAttribute) ) {
- // process single XML Attribute
- if (formatLines[i].getAD_Column_ID() == 0) {
- throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory"));
- }
- MColumn column = MColumn.get(masterPO.getCtx(), formatLines[i].getAD_Column_ID());
- if (column == null) {
- throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory"));
- }
- if ( column.isVirtualColumn() ) {
- log.info("This is Virtual Column!");
- } else { }
- //log.info("["+column.getColumnName()+"]");
-
- Object value = rs.getObject(column.getColumnName());
- String valueString = null;
- if (value != null) {
- valueString = value.toString();
- } else {
- if (formatLines[i].isMandatory()) {
- throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPFieldMandatory"));
- }
- }
-/* if (column.getAD_Reference_ID() == DisplayType.Date) {
- if (valueString != null) {
- if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) {
- m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy"
- //Date date = m_customDateFormat.parse ( valueString );
- valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
- } else {
- valueString = m_dateFormat.format (Timestamp.valueOf (valueString));
- }
-
- }
- } else if (column.getAD_Reference_ID() == DisplayType.DateTime) {
- if (valueString != null) {
- if (formatLines[i].getDateFormat() != null && !"".equals(formatLines[i].getDateFormat())) {
- m_customDateFormat = new SimpleDateFormat( formatLines[i].getDateFormat() ); // "MM/dd/yyyy"
- //Date date = m_customDateFormat.parse ( valueString );
- valueString = m_customDateFormat.format(Timestamp.valueOf (valueString));
- } else {
- valueString = m_dateTimeFormat.format (Timestamp.valueOf (valueString));
- }
- }
- }*/
- log.info("EXP Field - column=["+column.getColumnName()+"]; value=" + value);
- if (valueString != null && !"".equals(valueString) && !"null".equals(valueString)) {
- rootElement.setAttribute(formatLines[i].getValue(), valueString);
- elementHasValue = true;
- //increaseVariable(variableMap, formatLines[i].getVariableName()); // Increase value of Variable if any Variable
- //increaseVariable(variableMap, TOTAL_SEGMENTS);
- } else {
- // Empty field.
- }
- } else if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_EmbeddedEXPFormat) ) {
- // process Embedded Export Format
-
- int embeddedFormat_ID = formatLines[i].getEXP_EmbeddedFormat_ID();
- MEXPFormat embeddedFormat = new MEXPFormat(masterPO.getCtx(), embeddedFormat_ID, masterPO.get_TrxName());
-
- MTable tableEmbedded = MTable.get(masterPO.getCtx(), embeddedFormat.getAD_Table_ID());
- log.info("Table Embedded = " + tableEmbedded);
- StringBuffer sql = new StringBuffer("SELECT * ")
- .append("FROM ").append(tableEmbedded.getTableName()).append(" ")
- .append("WHERE ").append(masterPO.get_KeyColumns()[0]).append("=?")
- //+ "WHERE " + po.get_WhereClause(false)
- ;
- if (embeddedFormat.getWhereClause() != null & !"".equals(embeddedFormat.getWhereClause())) {
- sql.append(" AND ").append(embeddedFormat.getWhereClause());
- }
- log.info(sql.toString());
- ResultSet rsEmbedded = null;
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement(sql.toString(), masterPO.get_TrxName());
- pstmt.setInt(1, masterID);
- rsEmbedded = pstmt.executeQuery();
- while (rsEmbedded.next())
- {
- //System.out.println("Trifon - tableEmbedded.getTableName()_ID = "+ tableEmbedded.getTableName() + "_ID");
- int embeddedID = rsEmbedded.getInt(tableEmbedded.getTableName() + "_ID");
- PO poEmbedded = tableEmbedded.getPO (embeddedID, masterPO.get_TrxName());
-
- Element embeddedElement = outDocument.createElement(formatLines[i].getValue());
- if (formatLines[i].getDescription() != null && !"".equals(formatLines[i].getDescription())) {
- embeddedElement.appendChild(outDocument.createComment(formatLines[i].getDescription()));
- }
- generateExportFormat(embeddedElement, embeddedFormat, rsEmbedded, poEmbedded, embeddedID, variableMap);
- rootElement.appendChild(embeddedElement);
- }
-
- } finally {
- try {
- if (rsEmbedded != null) rsEmbedded.close();
- if (pstmt != null) pstmt.close();
- } catch (SQLException ex) { }
- rsEmbedded = null;
- pstmt = null;
- }
-
- } else if ( formatLines[i].getType().equals(X_EXP_FormatLine.TYPE_ReferencedEXPFormat) ) {
- // process Referenced Export Format
-
- int embeddedFormat_ID = formatLines[i].getEXP_EmbeddedFormat_ID();
- MEXPFormat embeddedFormat = new MEXPFormat(masterPO.getCtx(), embeddedFormat_ID, masterPO.get_TrxName());
-
- MTable tableEmbedded = MTable.get(masterPO.getCtx(), embeddedFormat.getAD_Table_ID());
- log.info("Table Embedded = " + tableEmbedded);
- StringBuffer sql = new StringBuffer("SELECT * ")
- .append("FROM ").append(tableEmbedded.getTableName()).append(" ")
- .append("WHERE ").append(tableEmbedded.getTableName() + "_ID").append("=?")
- //+ "WHERE " + po.get_WhereClause(false)
- ;
- if (embeddedFormat.getWhereClause() != null & !"".equals(embeddedFormat.getWhereClause())) {
- sql.append(" AND ").append(embeddedFormat.getWhereClause());
- }
- log.info(sql.toString());
- if (formatLines[i].getAD_Column_ID() == 0) {
- throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory"));
- }
- MColumn column = MColumn.get(masterPO.getCtx(), formatLines[i].getAD_Column_ID());
- if (column == null) {
- throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPColumnMandatory"));
- }
- if ( column.isVirtualColumn() ) {
- log.info("This is Virtual Column!");
- } else { }
- //log.info("["+column.getColumnName()+"]");
- Object value = rs.getObject(column.getColumnName());
-/* String valueString = null;
- if (value != null) {
- valueString = value.toString();
- } else {
- throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPFieldMandatory"));
- }
-*/
- log.info(sql.toString());
- ResultSet rsEmbedded = null;
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement(sql.toString(), masterPO.get_TrxName());
- pstmt.setObject(1, value);
- rsEmbedded = pstmt.executeQuery();
- while (rsEmbedded.next())
- {
- //System.out.println("Trifon - tableEmbedded.getTableName()_ID = "+ tableEmbedded.getTableName() + "_ID");
- int embeddedID = rsEmbedded.getInt(tableEmbedded.getTableName() + "_ID");
- PO poEmbedded = tableEmbedded.getPO (embeddedID, masterPO.get_TrxName());
-
- Element embeddedElement = outDocument.createElement(formatLines[i].getValue());
- if (formatLines[i].getDescription() != null && !"".equals(formatLines[i].getDescription())) {
- embeddedElement.appendChild(outDocument.createComment(formatLines[i].getDescription()));
- }
- generateExportFormat(embeddedElement, embeddedFormat, rsEmbedded, poEmbedded, embeddedID, variableMap);
- rootElement.appendChild(embeddedElement);
- }
-
- } finally {
- try {
- if (rsEmbedded != null) rsEmbedded.close();
- if (pstmt != null) pstmt.close();
- } catch (SQLException ex) { }
- rsEmbedded = null;
- pstmt = null;
- }
-
- }
-
- else {
- throw new Exception(Msg.getMsg (masterPO.getCtx(), "EXPUnknownLineType"));
- }
- }
- }
-
- /**
- * @param variableMap
- * @param variableName
- */
- @SuppressWarnings("unused")
- private void increaseVariable(HashMap variableMap, String variableName) {
- if (variableName != null && !"".equals(variableName) ) {
- Integer var = variableMap.get(variableName);
- if (var == null) {
- var = new Integer(0);
- }
- int intValue = var.intValue();
- intValue++;
- variableMap.put(variableName, new Integer(intValue));
- }
- }
-
- /**
- * Utility method which is responsible to create new XML Document
- *
- * @return Document
- * @throws ParserConfigurationException
- */
- // create new Document
- Document createNewDocument() throws ParserConfigurationException
- {
- Document result = null;
- DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
-
- result = documentBuilder.newDocument();
- return result;
- }
-
-
-}
diff --git a/extend/src/org/adempiere/process/rpl/exp/HDDExportProcessor.java b/extend/src/org/adempiere/process/rpl/exp/HDDExportProcessor.java
deleted file mode 100644
index 3ca534974f..0000000000
--- a/extend/src/org/adempiere/process/rpl/exp/HDDExportProcessor.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/**********************************************************************
-* This file is part of Adempiere ERP Bazaar *
-* http://www.adempiere.org *
-* *
-* Copyright (C) Trifon Trifonov. *
-* Copyright (C) Contributors *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; either version 2 *
-* of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* You should have received a copy of the GNU General Public License *
-* along with this program; if not, write to the Free Software *
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
-* MA 02110-1301, USA. *
-* *
-* Contributors: *
-* - Trifon Trifonov (trifonnt@users.sourceforge.net) *
-* *
-* Sponsors: *
-* - E-evolution (http://www.e-evolution.com) *
-***********************************************************************/
-package org.adempiere.process.rpl.exp;
-
-import java.io.File;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.Properties;
-
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.adempiere.process.rpl.IExportProcessor;
-import org.compiere.util.CLogger;
-import org.compiere.util.Trx;
-import org.eevolution.model.MEXPProcessor;
-import org.eevolution.model.X_EXP_ProcessorParameter;
-import org.w3c.dom.Document;
-
-/**
- * @author Trifon N. Trifonov
- */
-public class HDDExportProcessor implements IExportProcessor {
-
- /** Logger */
- protected CLogger log = CLogger.getCLogger (getClass());
-
- public void process(Properties ctx, MEXPProcessor expProcessor, Document document, Trx trx)
- throws Exception
- {
- //String host = expProcessor.getHost();
- //int port = expProcessor.getPort();
- //String account = expProcessor.getAccount();
- //String password = expProcessor.getPasswordInfo();
- String fileName = "";
-
- // Read all processor parameters and set them!
- X_EXP_ProcessorParameter[] processorParameters = expProcessor.getEXP_ProcessorParameters(trx.getTrxName());
- if (processorParameters != null && processorParameters.length > 0) {
- for (int i = 0; i < processorParameters.length; i++) {
-
- // One special parameter which will be used for remote folder name.
- // Or could add flag to ProcessorParameters table which will distinguish between
- // connection parameters and FTP Upload parameters.
- log.info("ProcesParameter Value = " + processorParameters[i].getValue());
- log.info("ProcesParameter ParameterValue = " + processorParameters[i].getParameterValue());
- if (! processorParameters[i].getValue().equals("fileName")) {
- //pt.setProperty(processorParameters[i].getValue(), processorParameters[i].getParameterValue());
- } else {
- fileName = processorParameters[i].getParameterValue();
- }
- }
- }
-
- if (fileName == null || fileName.length() == 0) {
- throw new Exception("Missing EXP_ProcessorParameter with key 'fileName'!");
- }
- // Save the document to the disk file
- TransformerFactory tranFactory = TransformerFactory.newInstance();
- tranFactory.setAttribute("indent-number", Integer.valueOf(1));
-
- Transformer aTransformer = tranFactory.newTransformer();
- aTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
- Source src = new DOMSource(document);
-
- // =================================== Write to String
- Writer writer = new StringWriter();
- Result dest2 = new StreamResult(writer);
- aTransformer.transform(src, dest2);
- System.err.println(writer.toString());
-
- //writer = new OutputStreamWriter(new FileOutputStream(out), "utf-8");
- // =================================== Write to Disk
- try {
- Result dest = new StreamResult(new File("XmlExport-test-" + fileName + ".xml"));
- aTransformer.transform(src, dest);
-
- writer.close();
- } catch (TransformerException ex) {
- ex.printStackTrace();
- throw ex;
- }
-
- }
-
-}
diff --git a/extend/src/org/adempiere/process/rpl/exp/ModelExporter.java b/extend/src/org/adempiere/process/rpl/exp/ModelExporter.java
deleted file mode 100644
index d2e2c68426..0000000000
--- a/extend/src/org/adempiere/process/rpl/exp/ModelExporter.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/******************************************************************************
- * Product: Adempiere ERP & CRM Smart Business Solution *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms version 2 of the GNU General Public License as published *
- * by the Free Software Foundation. This program is distributed in the hope *
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU General Public License for more details. *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
- * For the text or an alternative of this public license, you may reach us *
- * Contributor(s): Victor Perez www.e-evolution.com *
- * Copyright (C) 2003-2007 e-Evolution,SC. All Rights Reserved. *
- *****************************************************************************/
-package org.adempiere.process.rpl.exp;
-
-import java.io.File;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.logging.Level;
-
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.compiere.Adempiere;
-import org.compiere.model.MReplicationStrategy;
-import org.compiere.model.ModelValidator;
-import org.compiere.model.X_AD_ReplicationTable;
-import org.compiere.process.ProcessInfo;
-import org.compiere.process.ProcessInfoParameter;
-import org.compiere.process.SvrProcess;
-import org.compiere.util.CLogMgt;
-import org.compiere.util.Env;
-import org.eevolution.model.MEXPFormat;
-import org.w3c.dom.Document;
-
-/**
- *
- * @author victor.perez@e-evolution.com
- * FB [1963487 ] Is necessary new process to export and import with an Export
- * @see http://sourceforge.net/tracker/?func=detail&atid=879335&aid=1963487&group_id=176962
- * @version $Id:$
- */
-public class ModelExporter extends SvrProcess {
-
- /** Client Parameter */
- protected int p_AD_Client_ID = 0;
-
- /** Document Type Parameter */
- protected int p_C_DocType_ID = 0;
-
- /** Record ID */
- protected int p_Record_ID = 0;
- /** EXP_Format_ID */
- protected int p_EXP_Format_ID = 0;
- /** File Name **/
- protected String p_FileName = "";
-
- /** Table ID */
- int AD_Table_ID = 0;
-
-
- /**
- * Get Parameters
- */
- protected void prepare() {
-
- p_Record_ID = getRecord_ID();
- if (p_AD_Client_ID == 0)
- p_AD_Client_ID = Env.getAD_Client_ID(getCtx());
- AD_Table_ID = getTable_ID();
-
- StringBuffer sb = new StringBuffer("AD_Table_ID=").append(AD_Table_ID);
- sb.append("; Record_ID=").append(getRecord_ID());
- // Parameter
- ProcessInfoParameter[] para = getParameter();
- for (int i = 0; i < para.length; i++) {
- String name = para[i].getParameterName();
- if (para[i].getParameter() == null)
- ;
- else if (name.equals("EXP_Format_ID"))
- p_EXP_Format_ID = para[i].getParameterAsInt();
- else if (name.equals("FileName"))
- p_FileName = (String)para[i].getParameter();
- else
- log.log(Level.SEVERE, "Unknown Parameter: " + name);
- }
-
- if(p_EXP_Format_ID == 0)
- p_EXP_Format_ID = p_Record_ID;
- if(p_FileName == null)
- {
- // Load XML file and parse it
- String fileNameOr = org.compiere.util.Ini.findAdempiereHome()
- + System.getProperty("file.separator")
- + "data"
- + System.getProperty("file.separator")
- + "ExportFile.xml";
- p_FileName = fileNameOr;
- }
- log.info(sb.toString());
- }
-
- /**
- * Process
- *
- * @return info
- */
- protected String doIt() throws Exception
- {
- ExportHelper expHelper = new ExportHelper(getCtx(),p_AD_Client_ID);
- MEXPFormat exportFormat = new MEXPFormat (getCtx(), p_EXP_Format_ID, get_TrxName() );
- File file = new File(p_FileName);
- Document doc = expHelper.exportRecord(exportFormat,"", MReplicationStrategy.REPLICATION_TABLE, X_AD_ReplicationTable.REPLICATIONTYPE_Merge,ModelValidator.TYPE_AFTER_CHANGE);
- // Save the document to the disk file
- TransformerFactory tranFactory = TransformerFactory.newInstance();
-
- tranFactory.setAttribute("indent-number", 4);
-
- Transformer aTransformer = tranFactory.newTransformer();
- //aTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
- //aTransformer.setOutputProperty("omit-xml-declaration","yes");
- aTransformer.setOutputProperty(OutputKeys.METHOD, "xml");
- aTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
- Source src = new DOMSource(doc);
-
- // =================================== Write to String
- Writer writer = new StringWriter();
- Result dest2 = new StreamResult(writer);
- aTransformer.transform(src, dest2);
- // =================================== Write to Disk
- try {
- Result dest = new StreamResult(file);
- aTransformer.transform(src, dest);
- writer.flush();
- writer.close();
-
- } catch (TransformerException ex) {
- ex.printStackTrace();
- throw ex;
- }
- return "Exported";
- }
-
- public static void main(String[] args)
- {
- CLogMgt.setLoggerLevel(Level.INFO, null);
- CLogMgt.setLevel(Level.INFO);
-
- Adempiere.startupEnvironment(true);
- ProcessInfo pi = new ProcessInfo("Test Import Model", 1000000);
- pi.setAD_Client_ID(11);
- pi.setAD_User_ID(100);
-
- ModelExporter modelExporter = new ModelExporter();
- modelExporter.startProcess(Env.getCtx(), pi, null);
-
- System.out.println("Process=" + pi.getTitle() + " Error="+pi.isError() + " Summary=" + pi.getSummary());
- }
-
-}
\ No newline at end of file
diff --git a/extend/src/org/adempiere/process/rpl/exp/MultiplePublisher.java b/extend/src/org/adempiere/process/rpl/exp/MultiplePublisher.java
deleted file mode 100644
index cef12d4164..0000000000
--- a/extend/src/org/adempiere/process/rpl/exp/MultiplePublisher.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.adempiere.process.rpl.exp;
-
-//MultiplePublisher.java
-
-import javax.jms.JMSException;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-import javax.jms.Topic;
-import javax.jms.TopicConnection;
-import javax.jms.TopicConnectionFactory;
-import javax.jms.TopicPublisher;
-import javax.jms.TopicSession;
-import javax.naming.InitialContext;
-
-public class MultiplePublisher {
- TopicConnection topicConnection = null;
- TopicSession topicSession = null;
- Topic topic = null;
- TopicPublisher topicPublisher = null;
- public final String topicName = "asunto";
- static int startindex = 0;
-
- public MultiplePublisher() {
- TopicConnectionFactory topicConnectionFactory = null;
-
- try {
- InitialContext contexto = new InitialContext();
- topicConnectionFactory = (TopicConnectionFactory) contexto.lookup("TopicDurable");
- topicConnection = topicConnectionFactory.createTopicConnection();
- topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
- topic = (Topic) contexto.lookup("asunto");
- topicPublisher = topicSession.createPublisher(topic);
- } catch (Exception e) {
- System.out.println("Error en constructor de MultiplePublisher");
- }
- }
-
- public void publishMessages() {
- TextMessage message = null;
- int i;
- final int NUMMSGS = 3;
- final String MSG_TEXT = new String("Message");
-
- try {
- message = topicSession.createTextMessage();
- for (i = startindex; i < startindex + NUMMSGS; i++) {
- message.setText(MSG_TEXT + " " + (i + 1));
- System.out.println("Publicado mensaje: " + message.getText());
- topicPublisher.publish( message );
- }
-
- topicPublisher.publish( topicSession.createMessage() );
- startindex = i;
- } catch (Exception e) {
- System.out.println("Error en metodo publishMessages() de MultiplePublisher");
- e.printStackTrace();
- }
- }
-
- public void finish() {
- if (topicConnection != null) {
- try {
- topicConnection.close();
- } catch (JMSException e) {
- }
- }
- }
-}
diff --git a/extend/src/org/adempiere/process/rpl/exp/TopicExportProcessor.java b/extend/src/org/adempiere/process/rpl/exp/TopicExportProcessor.java
deleted file mode 100644
index 87d2b7a5c3..0000000000
--- a/extend/src/org/adempiere/process/rpl/exp/TopicExportProcessor.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/**********************************************************************
-* This file is part of Adempiere ERP Bazaar *
-* http://www.adempiere.org *
-* *
-* Copyright (C) Trifon Trifonov. *
-* Copyright (C) Contributors *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; either version 2 *
-* of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* You should have received a copy of the GNU General Public License *
-* along with this program; if not, write to the Free Software *
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
-* MA 02110-1301, USA. *
-* *
-* Contributors: *
-* - Trifon Trifonov (trifonnt@users.sourceforge.net)
-* - Antonio Cañaveral, e-Evolution
-* *
-* Sponsors: *
-* - E-evolution (http://www.e-evolution.com) *
-***********************************************************************/
-package org.adempiere.process.rpl.exp;
-
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.Properties;
-
-import javax.jms.Connection;
-import javax.jms.DeliveryMode;
-import javax.jms.Destination;
-import javax.jms.JMSException;
-import javax.jms.MessageProducer;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.adempiere.process.rpl.IExportProcessor;
-import org.apache.activemq.ActiveMQConnectionFactory;
-import org.compiere.util.CLogger;
-import org.compiere.util.Trx;
-import org.eevolution.model.MEXPProcessor;
-import org.eevolution.model.X_EXP_ProcessorParameter;
-import org.w3c.dom.Document;
-
-/**
- * @author Trifon N. Trifonov
- * @author Antonio Cañaveral, e-Evolution
- * [ 2195051 ] Implementing Message Transaction
- * http://sourceforge.net/tracker/index.php?func=detail&aid=2195051&group_id=176962&atid=879335
-
- */
-public class TopicExportProcessor implements IExportProcessor {
-
- /** Logger */
- protected CLogger log = CLogger.getCLogger (getClass());
-
- /**
- *
- */
- public void process(Properties ctx, MEXPProcessor expProcessor, Document document, Trx trx)
- throws Exception
- {
- String host = expProcessor.getHost();
- int port = expProcessor.getPort();
- String account = expProcessor.getAccount();
- String password = expProcessor.getPasswordInfo();
- String protocol = null;
- String topicName = "";
- String clientID = null;
- String timeToLiveStr = null;
- int timeToLive = 10000;
- boolean isDeliveryModePersistent = true;
-
- // Read all processor parameters and set them!
- X_EXP_ProcessorParameter[] processorParameters = expProcessor.getEXP_ProcessorParameters(trx.getTrxName());
- if (processorParameters != null && processorParameters.length > 0) {
- for (int i = 0; i < processorParameters.length; i++) {
- log.info("ProcesParameter Value = " + processorParameters[i].getValue());
- log.info("ProcesParameter ParameterValue = " + processorParameters[i].getParameterValue());
- if (processorParameters[i].getValue().equals("topicName")) {
- topicName = processorParameters[i].getParameterValue();
- } else if (processorParameters[i].getValue().equals("protocol")) {
- protocol = processorParameters[i].getParameterValue();
- } else if (processorParameters[i].getValue().equals("clientID")) {
- clientID = processorParameters[i].getParameterValue();
- } else if (processorParameters[i].getValue().equals("timeToLive")) {
- timeToLiveStr = processorParameters[i].getParameterValue();
- timeToLive = Integer.parseInt( timeToLiveStr );
- } else if (processorParameters[i].getValue().equals("isDeliveryModePersistent")) {
- isDeliveryModePersistent = Boolean.parseBoolean( processorParameters[i].getParameterValue() );
- } else {
- // Some other mandatory parameter here
- }
- }
- }
-
- if (topicName == null || topicName.length() == 0) {
- throw new Exception("Missing "+X_EXP_ProcessorParameter.Table_Name+" with key 'topicName'!");
- }
- if (protocol == null || protocol.length() == 0) {
- throw new Exception("Missing "+X_EXP_ProcessorParameter.Table_Name+" with key 'protocol'!");
- }
- if (clientID == null || clientID.length() == 0) {
- throw new Exception("Missing "+X_EXP_ProcessorParameter.Table_Name+" with key 'clientID'!");
- }
- if (timeToLiveStr == null || timeToLiveStr.length() == 0) {
- throw new Exception("Missing "+X_EXP_ProcessorParameter.Table_Name+" with key 'timeToLive'!");
- }
-
- // Construct Transformer Factory and Transformer
- TransformerFactory tranFactory = TransformerFactory.newInstance();
- tranFactory.setAttribute("indent-number", Integer.valueOf(1));
-
- Transformer aTransformer = tranFactory.newTransformer();
- aTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
- Source src = new DOMSource( document );
-
- // =================================== Write to String
- Writer writer = new StringWriter();
- Result dest2 = new StreamResult(writer);
- aTransformer.transform(src, dest2);
-
- sendJMSMessage(host, port, writer.toString(), protocol, topicName, clientID, account, password, timeToLive, isDeliveryModePersistent);
-
- }
-
- private void sendJMSMessage(String host, int port, String msg, String protocol, String topicName
- , String clientID, String userName, String password, int timeToLive
- , boolean isDeliveryModePersistent) throws JMSException
- {
- // Create a ConnectionFactory
- // network protocol (tcp, ...) set as EXP_ProcessorParameter
- ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(protocol + "://" + host + ":" + port);
-
- Connection connection = null;
- Session session = null;
- try {
- // Create a Connection
- if (userName != null && password != null) {
- connection = connectionFactory.createConnection(userName, password);
- } else {
- connection = connectionFactory.createConnection();
- }
-
- connection.setClientID( clientID );// Commented by Victor as he had issue!
- connection.start();
-
- // Create a Session
- session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE); //TODO - Trifon could be EXP_ProcessorParameter
-
- // Create the destination (Topic or Queue)
- Destination destination = session.createTopic(topicName);
-
- // Create a MessageProducer from the Session to the Topic or Queue
- MessageProducer producer = session.createProducer( destination );
- producer.setTimeToLive( timeToLive ); // EXP_ProcessorParameter
- if ( isDeliveryModePersistent ) {
- producer.setDeliveryMode( DeliveryMode.PERSISTENT ); // EXP_ProcessorParameter
- } else {
- producer.setDeliveryMode( DeliveryMode.NON_PERSISTENT ); // EXP_ProcessorParameter
- }
-
- // How to send to multiple destinations.
- //MessageProducer producer = session.createProducer(null);
- //producer.send(someDestination, message);
- //producer.send(anotherDestination, message);
-
- // Create a message
- TextMessage message = session.createTextMessage( msg );
-
- // Tell the producer to send the message
- try
- {
- producer.send(destination, message);
- session.commit();
- log.info("JMS Message sent!");
- }catch(JMSException ex)
- {
- session.rollback();
- log.info("JMS Can't send the message!");
- throw ex;
- }
-
- } finally {
- // Clean up
- if (session != null) {
- try { session.close(); } catch (JMSException ex) {}
- }
- if (connection != null) {
- try { connection.close(); } catch (JMSException ex) {}
- }
- }
- }
-
-
-}
diff --git a/serverRoot/src/main/server/org/adempiere/server/JAXPParserMaker.java b/serverRoot/src/main/server/org/adempiere/server/JAXPParserMaker.java
deleted file mode 100644
index ed2c9e8f96..0000000000
--- a/serverRoot/src/main/server/org/adempiere/server/JAXPParserMaker.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/**********************************************************************
-* This file is part of Adempiere ERP Bazaar *
-* http://www.adempiere.org *
-* *
-* Copyright (C) Trifon Trifonov. *
-* Copyright (C) Contributors *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; either version 2 *
-* of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* You should have received a copy of the GNU General Public License *
-* along with this program; if not, write to the Free Software *
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
-* MA 02110-1301, USA. *
-* *
-* Contributors: *
-* - Trifon Trifonov (trifonnt@users.sourceforge.net) *
-* *
-* Sponsors: *
-* - E-evolution (http://www.e-evolution.com) *
-***********************************************************************/
-package org.adempiere.server;
-
-import java.io.IOException;
-import java.io.StringReader;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- *
- * @author Trifon N. Trifonov
- *
- */
-public class JAXPParserMaker {
-
- public static StringBuffer text = new StringBuffer("")
- .append("")
- .append(" ")
- .append(" GardenWorld ")
- .append(" ")
- .append(" ")
- .append(" 0 ")
- .append(" ")
- .append(" SYSTEM ")
- .append(" ")
- .append(" ")
- .append(" C&W-test05 ")
- .append(" C&W Construction-05 ")
- .append(" ")
- .append(" Standard ")
- .append(" ")
- .append(" GardenWorld ")
- .append(" ")
- .append(" ")
- .append(" 04/11/2001 09:11:36 ")
- .append(" ")
- .append(" SuperUser ")
- .append(" ")
- .append(" SYSTEM ")
- .append(" ")
- .append(" ")
- .append(" 11/17/2007 01:49:50 ")
- .append(" ")
- .append(" System ")
- .append(" ")
- .append(" SYSTEM ")
- .append(" ")
- .append(" ")
- .append(" ")
- ;
-
- public static void main(String[] args) {
-
- try {
- DocumentBuilderFactory builderFactory = DocumentBuilderFactory
- .newInstance();
- DocumentBuilder parser = builderFactory.newDocumentBuilder();
-
- try {
- // Read the entire document into memory
- Document document = parser.parse( new InputSource(new StringReader( text.toString() ) ) );
-
- System.out.println( "Document = " + document);
- // work with the document...
- } catch (SAXException e) {
- System.err.println(e);
- } catch (IOException e) {
- System.err.println(e);
- }
-
-
- } catch (ParserConfigurationException e) {
- System.err.println("You need to install a JAXP aware parser.");
- }
-
- }
-
-}
-
diff --git a/serverRoot/src/main/server/org/adempiere/server/SimpleMessageToTopic.java b/serverRoot/src/main/server/org/adempiere/server/SimpleMessageToTopic.java
deleted file mode 100644
index b34e2dd119..0000000000
--- a/serverRoot/src/main/server/org/adempiere/server/SimpleMessageToTopic.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - E-evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-package org.adempiere.server;
-
-import javax.jms.Connection;
-import javax.jms.DeliveryMode;
-import javax.jms.Destination;
-import javax.jms.MessageProducer;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-
-import org.apache.activemq.ActiveMQConnectionFactory;
-
-public class SimpleMessageToTopic {
-
- private static final String TOPIC_NAME = "ExampleTopic";
-
- private static StringBuffer text = new StringBuffer("")
- .append("")
- .append(" ")
- .append(" GardenWorld ")
- .append(" ")
- .append(" ")
- .append(" 0 ")
- .append(" ")
- .append(" SYSTEM ")
- .append(" ")
- .append(" ")
- .append(" C&W-test06 ")
- .append(" C&W Construction-06 ")
- .append(" ")
- .append(" Standard ")
- .append(" ")
- .append(" GardenWorld ")
- .append(" ")
- .append(" ")
- .append(" 04/11/2001 09:11:36 ")
- .append(" ")
- .append(" SuperUser ")
- .append(" ")
- .append(" SYSTEM ")
- .append(" ")
- .append(" ")
- .append(" 11/17/2007 01:49:50 ")
- .append(" ")
- .append(" System ")
- .append(" ")
- .append(" SYSTEM ")
- .append(" ")
- .append(" ")
- .append(" ")
- ;
-
-
-
- public static void main(String[] args) {
- runTool("localhost", 61616);
- }
-
- public static void runTool(String host, int port) {
- try {
- // Create a ConnectionFactory
- ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
- "tcp://"+host+":"+port);
-
- // Create a Connection
- Connection connection = connectionFactory.createConnection();
- connection.setClientID("GardenWorld");
- connection.start();
-
- // Create a Session
- Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
- // Create the destination (Topic or Queue)
- Destination destination = session.createTopic(TOPIC_NAME);
-
- // Create a MessageProducer from the Session to the Topic or Queue
- MessageProducer producer = session.createProducer(destination);
- producer.setTimeToLive(10000);
- producer.setDeliveryMode(DeliveryMode.PERSISTENT);
-
- // Create a message
-
- TextMessage message = session.createTextMessage(text.toString());
-
- // Tell the producer to send the message
- System.out.println("Sent message");
- producer.send(message);
-
- // Clean up
- session.close();
- connection.close();
- } catch (Exception e) {
- System.out.println("Caught: " + e);
- e.printStackTrace();
- }
- }
-}
diff --git a/serverRoot/src/main/server/org/adempiere/server/rpl/IImportProcessor.java b/serverRoot/src/main/server/org/adempiere/server/rpl/IImportProcessor.java
deleted file mode 100644
index 7afc009a6f..0000000000
--- a/serverRoot/src/main/server/org/adempiere/server/rpl/IImportProcessor.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/**********************************************************************
-* This file is part of Adempiere ERP Bazaar *
-* http://www.adempiere.org *
-* *
-* Copyright (C) Trifon Trifonov. *
-* Copyright (C) Contributors *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; either version 2 *
-* of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* You should have received a copy of the GNU General Public License *
-* along with this program; if not, write to the Free Software *
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
-* MA 02110-1301, USA. *
-* *
-* Contributors: *
-* - Trifon Trifonov (trifonnt@users.sourceforge.net) *
-* *
-* Sponsors: *
-* - E-evolution (http://www.e-evolution.com) *
-***********************************************************************/
-package org.adempiere.server.rpl;
-
-import java.util.Properties;
-
-import org.compiere.server.ReplicationProcessor;
-
-/**
- * Interface for Import processor
- * @author Trifon Trifonov
- *
- */
-public interface IImportProcessor {
-
- /**
- * @param ctx
- * @param expProcessor
- * @param trxName
- * @return void
- * @throws Exception
- */
- public void process(Properties ctx, ReplicationProcessor replicationProcessor, String trxName) throws Exception;
-
- /**
- *
- * @throws Exception
- */
- public void stop() throws Exception;
-
-}
diff --git a/serverRoot/src/main/server/org/adempiere/server/rpl/XMLHelper.java b/serverRoot/src/main/server/org/adempiere/server/rpl/XMLHelper.java
deleted file mode 100644
index fc894d6dd0..0000000000
--- a/serverRoot/src/main/server/org/adempiere/server/rpl/XMLHelper.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/**********************************************************************
-* This file is part of Adempiere ERP Bazaar *
-* http://www.adempiere.org *
-* *
-* Copyright (C) Trifon Trifonov. *
-* Copyright (C) Contributors *
-* *
-* This program is free software; you can redistribute it and/or *
-* modify it under the terms of the GNU General Public License *
-* as published by the Free Software Foundation; either version 2 *
-* of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* You should have received a copy of the GNU General Public License *
-* along with this program; if not, write to the Free Software *
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
-* MA 02110-1301, USA. *
-* *
-* Contributors: *
-* - Trifon Trifonov (trifonnt@users.sourceforge.net) *
-* *
-* Sponsors: *
-* - E-evolution (http://www.e-evolution.com) *
-***********************************************************************/
-package org.adempiere.server.rpl;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.StringReader;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpressionException;
-import javax.xml.xpath.XPathFactory;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- * Utility class which helps with XML processing.
- *
- * @author Trifon Trifonov
- * @version $Id$
- */
-public class XMLHelper {
-
- private static XPath xPath = XPathFactory.newInstance().newXPath();
-
- public static Element getElement(String xPathExpression, Node node)
- throws XPathExpressionException {
- return (Element) xPath.evaluate(xPathExpression, node,
- XPathConstants.NODE);
- }
-
- public static Node getNode(String xPathExpression, Node node)
- throws XPathExpressionException {
- return (Node) xPath
- .evaluate(xPathExpression, node, XPathConstants.NODE);
- }
-
- public static NodeList getNodeList(String xPathExpression, Node node)
- throws XPathExpressionException {
- return (NodeList) xPath.evaluate(xPathExpression, node,
- XPathConstants.NODESET);
- }
-
- public static Double getNumber(String xPathExpression, Node node)
- throws XPathExpressionException {
- return (Double) xPath.evaluate(xPathExpression, node,
- XPathConstants.NUMBER);
- }
-
- public static String getString(String xPathExpression, Node node)
- throws XPathExpressionException {
- return (String) xPath.evaluate(xPathExpression, node,
- XPathConstants.STRING);
- }
-
- public static Boolean getBoolean(String xPathExpression, Node node)
- throws XPathExpressionException {
- return (Boolean) xPath.evaluate(xPathExpression, node,
- XPathConstants.BOOLEAN);
- }
-
-
-
- public static Document createDocumentFromFile(String pathToXmlFile)
- throws ParserConfigurationException, SAXException, IOException {
- // path to file is global
- String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
- String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
- // String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";
-
- DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
- // validate against XML Schema in dbsql2xml.xsd
- // documentBuilderFactory.setNamespaceAware(true);
-
- //INFO change validation to true. Someday when xsd file is complete...
- documentBuilderFactory.setValidating(false);
- documentBuilderFactory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
- // documentBuilderFactory.setAttribute(JAXP_SCHEMA_SOURCE, new File(pathToXsdFile));
- DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
- Document document = documentBuilder.parse(new File(pathToXmlFile));
-
- return document;
- }
-
- public static Document createDocumentFromString(String str)
- throws ParserConfigurationException, SAXException, IOException {
- // path to file is global
-// String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
-// String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
- // String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";
-
- DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
- // validate against XML Schema in dbsql2xml.xsd
- // documentBuilderFactory.setNamespaceAware(true);
-
- //INFO change validation to true. Someday when xsd file is complete...
- documentBuilderFactory.setValidating(false);
-// documentBuilderFactory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
- // documentBuilderFactory.setAttribute(JAXP_SCHEMA_SOURCE, new File(pathToXsdFile));
- DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
- Document document = documentBuilder.parse( new InputSource(new StringReader( str ) ) );
-
- return document;
- }
-
-}
diff --git a/serverRoot/src/main/server/org/adempiere/server/rpl/imp/FileImportProcessor.java b/serverRoot/src/main/server/org/adempiere/server/rpl/imp/FileImportProcessor.java
deleted file mode 100644
index 557bf3464b..0000000000
--- a/serverRoot/src/main/server/org/adempiere/server/rpl/imp/FileImportProcessor.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - E-evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-package org.adempiere.server.rpl.imp;
-
-import java.util.Properties;
-
-import org.adempiere.server.rpl.IImportProcessor;
-import org.adempiere.server.rpl.XMLHelper;
-import org.compiere.server.ReplicationProcessor;
-import org.compiere.util.CLogger;
-import org.eevolution.model.MIMPProcessor;
-import org.eevolution.model.X_IMP_ProcessorParameter;
-import org.w3c.dom.Document;
-
-/**
- *
- * @author Trifon N. Trifonov
- * @version $Id:$
- */
-public class FileImportProcessor implements IImportProcessor {
-
- /** Logger */
- protected CLogger log = CLogger.getCLogger (FileImportProcessor.class);
-
- public void process(Properties ctx, ReplicationProcessor replicationProcessor, String trxName)
- throws Exception {
-
- MIMPProcessor impProcessor = replicationProcessor.getMImportProcessor();
-
- X_IMP_ProcessorParameter[] processorParameters = impProcessor.getIMP_ProcessorParameters(trxName);
-
- String fileName = null;
- if (processorParameters != null && processorParameters.length > 0) {
- for (int i = 0; i < processorParameters.length; i++) {
- log.info("ProcesParameter Value = " + processorParameters[i].getValue());
- log.info("ProcesParameter ParameterValue = " + processorParameters[i].getParameterValue());
- if (processorParameters[i].getValue().equals("fileName")) {
- fileName = processorParameters[i].getParameterValue();
- } else {
- // Some other mandatory parameter here
- }
- }
- }
-
- if (fileName == null || fileName.length() == 0) {
- throw new Exception("Missing IMP_ProcessorParameter with key 'fileName'!");
- }
-
- Document documentToBeImported = XMLHelper.createDocumentFromFile(fileName);
- StringBuffer result = new StringBuffer();
-
- ImportHelper impHelper = new ImportHelper( ctx );
- impHelper.importXMLDocument(result, documentToBeImported, trxName );
-
-// addLog(0, null, null, Msg.getMsg(ctx, "ImportModelProcessResult") + "\n" + result.toString());
- }
-
- public void stop() throws Exception {
- // do nothing!
-
- }
-
-}
diff --git a/serverRoot/src/main/server/org/adempiere/server/rpl/imp/ImportHelper.java b/serverRoot/src/main/server/org/adempiere/server/rpl/imp/ImportHelper.java
deleted file mode 100644
index 7b6434272b..0000000000
--- a/serverRoot/src/main/server/org/adempiere/server/rpl/imp/ImportHelper.java
+++ /dev/null
@@ -1,671 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - E-evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-package org.adempiere.server.rpl.imp;
-
-import java.math.BigDecimal;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Timestamp;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Properties;
-import java.util.logging.Level;
-
-import javax.xml.xpath.XPathExpressionException;
-
-import org.adempiere.server.rpl.XMLHelper;
-import org.compiere.model.MClient;
-import org.compiere.model.MColumn;
-import org.compiere.model.MTable;
-import org.compiere.model.ModelValidator;
-import org.compiere.model.PO;
-import org.compiere.model.X_AD_Client;
-import org.compiere.util.CLogger;
-import org.compiere.util.DB;
-import org.compiere.util.DisplayType;
-import org.compiere.util.Env;
-import org.compiere.util.Msg;
-import org.compiere.util.Util;
-import org.eevolution.model.MEXPFormat;
-import org.eevolution.model.MEXPFormatLine;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-/**
- * @author Trifon N. Trifonov
-* @author Antonio Cañaveral, e-Evolution
- * [ 2195016 ] Implementation delete records messages
- * http://sourceforge.net/tracker/index.php?func=detail&aid=2195016&group_id=176962&atid=879332
- */
-public class ImportHelper {
-
- /** Instance Logger */
- private CLogger log = CLogger.getCLogger(ImportHelper.class);
-
- /** Static Logger */
- private static CLogger s_log = CLogger.getCLogger(ImportHelper.class);
-
- /** Date Time Format */
- private SimpleDateFormat m_dateTimeFormat = null;
-
- /** Date Format */
- private SimpleDateFormat m_dateFormat = null;
-
- /** Custom Date Format */
- private SimpleDateFormat m_customDateFormat = null;
-
- /** Context */
- private Properties ctx = null;
-
- public ImportHelper(Properties ctx) {
- this.ctx = ctx;
- // Construct DateFromat and DateTimeFormat
- m_dateTimeFormat = DisplayType.getDateFormat(DisplayType.DateTime, Env.getLanguage(ctx));
- m_dateFormat = DisplayType.getDateFormat(DisplayType.Date, Env.getLanguage(ctx));
- }
-
- /**
- * @param ctx
- * @param result
- * @param documentToBeImported
- * @param trxName
- * @throws Exception
- * @throws SQLException
- * @throws XPathExpressionException
- */
- public void importXMLDocument(StringBuffer result, Document documentToBeImported, String trxName)
- throws Exception, SQLException, XPathExpressionException
- {
- //Element rootNode = importedDocument.getFirstChild();
- Element rootElement = documentToBeImported.getDocumentElement();
- //NodeList nl = rootElement.getChildNodes();
- // iterate over all address nodes and find the one that has the correct addressee
- //for (int i = 0; i < nl.getLength(); i++) { /* */ }
-
- // Find which Export format to Load...
- String AD_Client_Value = null;
- //AD_Client_Value = XMLHelper.getString("@AD_Client_Value", rootNode);
- AD_Client_Value = rootElement.getAttribute("AD_Client_Value");
- log.info("AD_Client_Value = " + AD_Client_Value);
- if (AD_Client_Value == null || "".equals(AD_Client_Value)) {
- throw new Exception(Msg.getMsg(ctx, "XMLClientValueMandatory"));
- }
- String version = null;
- version = rootElement.getAttribute("Version");
- log.info("Version = " + version);
- if (version == null || "".equals(version)) {
- throw new Exception(Msg.getMsg(ctx, "XMLVersionAttributeMandatory"));
- }
- ///Getting Attributes.
-
- ;
-
- int ReplicationMode = new Integer(rootElement.getAttribute("ReplicationMode"));
- String ReplicationType = rootElement.getAttribute("ReplicationType");
- int ReplicationEvent = new Integer(rootElement.getAttribute("ReplicationEvent"));
-
- MClient client = null;
- client = getAD_ClientByValue(ctx, AD_Client_Value, trxName);
- if (client == null) {
- throw new Exception(Msg.getMsg(ctx, "XMLClientNotFound"));
- }
- log.info(client.toString());
-
- String EXP_Format_Value = null;
- EXP_Format_Value = rootElement.getNodeName();
- log.info("EXP_Format_Value = " + EXP_Format_Value);
-
- MEXPFormat expFormat = null;
- expFormat = MEXPFormat.getFormatByValueAD_Client_IDAndVersion(ctx, EXP_Format_Value, client.getAD_Client_ID(), version, trxName);
- if (expFormat == null || expFormat.getEXP_Format_ID() == 0) {
- // Fall back to SYSTEM Client.
- // Try to search Export format defined for SYSTEM Client!!!
- MClient systemClient = null;
- systemClient = MClient.get(ctx, 0);
- if (systemClient == null) {
- throw new Exception(Msg.getMsg(ctx, "XMLClientNotFound"));
- }
- log.info(systemClient.toString());
- expFormat = MEXPFormat.getFormatByValueAD_Client_IDAndVersion(ctx, EXP_Format_Value, systemClient.getAD_Client_ID(), version, trxName);
- }
- if (expFormat == null || expFormat.getEXP_Format_ID() == 0) {
- throw new Exception(Msg.getMsg(ctx, "EXPFormatNotFound"));
- }
- log.info("expFormat = " + expFormat.toString());
-
- PO po = importElement(ctx, result, rootElement, expFormat, trxName);
- // Here must invoke other method else we get cycle...
- boolean resultSave=false;
- if(ReplicationEvent == ModelValidator.TYPE_BEFORE_DELETE ||
- ReplicationEvent == ModelValidator.TYPE_BEFORE_DELETE_REPLICATION ||
- ReplicationEvent == ModelValidator.TYPE_DELETE)
- resultSave=po.delete(true);
- else
- resultSave = po.saveReplica(true);
-
- result.append("ResultSave=").append(resultSave).append("; ");
- /*if (resultSave)
- {
- if(ReplicationMode == MReplicationStrategy.REPLICATION_DOCUMENT &&
- ReplicationType == X_AD_ReplicationDocument.REPLICATIONTYPE_Merge)
- {
- String status = po.get_ValueAsString("DocStatus");
- String action = po.get_ValueAsString("DocAction");
- DocAction m_document;
- m_document=(DocAction) po;
- DocumentEngine engine = new DocumentEngine (m_document, status);
- engine.processIt (action);
- }
- // Success in save
- } else {
- // Failed in save
- throw new Exception(Msg.getMsg(ctx, "EXPFormatFailedSave"));
- }*/
- }
-
- /**
- * @param result
- * @param rootElement
- * @param expFormat
- * @throws Exception
- * @throws XPathExpressionException
- */
- @SuppressWarnings("unchecked")
- private PO importElement(Properties ctx, StringBuffer result, Element rootElement,
- MEXPFormat expFormat, String trxName) throws Exception, XPathExpressionException
- {
- // get AD_Table ID from export Format.
- int AD_Table_ID = expFormat.getAD_Table_ID();
-
- // Load appropriate Model class...
- MTable table = MTable.get(ctx, AD_Table_ID);
- log.info("Table = " + table);
-
- int record_ID = 0;
- // Find Record_ID by ???Value??? In fact by Columns set as Part Of Unique Index in Export Format!
- record_ID = getID(ctx, expFormat, rootElement, rootElement.getNodeName(), trxName);
- log.info("record_ID = " + record_ID);
-
- PO po = table.getPO(record_ID, trxName);
- log.info("PO.toString() = " + po.toString());
-
- if (po.get_KeyColumns().length > 1 || po.get_KeyColumns().length < 1) {
- throw new Exception(Msg.getMsg(ctx, "EDIMultiColumnNotSupported"));
- }
-
- StringBuffer orderBy = new StringBuffer(MEXPFormatLine.COLUMNNAME_IsMandatory).append(" DESC ")
- .append(", ").append(MEXPFormatLine.COLUMNNAME_Position)
- ;
- MEXPFormatLine[] formatLines = expFormat.getFormatLinesOrderedBy(orderBy.toString());
- if (formatLines == null || formatLines.length < 1) {
- throw new Exception(Msg.getMsg(ctx, "EXPFormatNoLines"));
- }
- Object value = null;
- // Iterate all Export Format Lines (even this marked as part of unique index)
- // and set value of column!
- for (int i = 0; i < formatLines.length; i++) {
- log.info("=================== Beginnig of Format Line ===============================");
- log.info("formatLines["+i+"]=[" + formatLines[i].toString() + "]");
-
- if (MEXPFormatLine.TYPE_XMLElement.equals(formatLines[i].getType())) {
- // XML Element
- value = XMLHelper.getString(formatLines[i].getValue(), rootElement);
- log.info("value=[" + value + "]");
-
- } else if (MEXPFormatLine.TYPE_ReferencedEXPFormat.equals(formatLines[i].getType())) {
- // Referenced Export Format
-/*
-
- 0
-
- SYSTEM
-
-
- ...
- */
-
- MEXPFormat referencedExpFormat = new MEXPFormat(ctx, formatLines[i].getEXP_EmbeddedFormat_ID(), trxName);
- log.info("referencedExpFormat = " + referencedExpFormat);
-
- int refRecord_ID = 0;
- // Find Record_ID by ???Value??? In fact by Columns set as Part Of Unique Index in Export Format!
- String xPath = null;
- //xPath = ""+rootElement.getNodeName() + "/" + formatLines[i].getValue() + ""; // Do not work
- xPath = "" + formatLines[i].getValue() + ""; //
-
- log.info("SEARCH FOR XML Element = " + xPath);
- Element referencedNode = XMLHelper.getElement(xPath, rootElement);
-
- //NodeList nodeList = XMLHelper.getNodeList(xPath, rootElement);
- //referencedNode = (Element)nodeList.item(0);
-
- log.info("referencedNode = " + referencedNode);
- if(referencedNode!=null)
- {
- refRecord_ID = getID(ctx, referencedExpFormat, referencedNode, formatLines[i].getValue(), trxName);
- log.info("refRecord_ID = " + refRecord_ID);
- value = new Integer(refRecord_ID);
- }
- else
- {
- log.info("NULL VALUE FOR " + xPath.toString());
- value=null;
- }
- log.info("value=[" + value + "]");
- } else if (MEXPFormatLine.TYPE_EmbeddedEXPFormat.equals(formatLines[i].getType())) {
- boolean resSave = false;
- if (po.get_ID() == 0) {
- resSave = po.saveReplica(true);
- result.append("ResultSave-MasterPO=").append(resSave).append("; ");
- log.info("ResultSave-MasterPO = " + resSave);
- } else {
- resSave = true;
- }
- if (resSave) {
- // Success in save
- } else {
- throw new Exception("Failed to save Master PO");
- }
- // Embedded Export Format
-/*
- GardenWorls
- ...
- ... <-- MUST save Master Record here! Else we can't set orderLine.setC_Order_ID(..)
- ...
- ...
- */
- MEXPFormat referencedExpFormat = new MEXPFormat(ctx, formatLines[i].getEXP_EmbeddedFormat_ID(), trxName);
- log.info("embeddedExpFormat = " + referencedExpFormat);
-
- NodeList nodeList = XMLHelper.getNodeList("/"+rootElement.getNodeName() + "/" + formatLines[i].getValue(), rootElement);
- for (int j = 0; j < nodeList.getLength(); j++) {
- Element referencedElement = (Element)nodeList.item(j);
- log.info("EmbeddedEXPFormat - referencedElement.getNodeName = " + referencedElement.getNodeName());
-
- PO embeddedPo = null;
- // Import embedded PO
- log.info("=== BEGIN RECURSION CALL ===");
- embeddedPo = importElement(ctx, result, referencedElement, referencedExpFormat, trxName);
- log.info("embeddedPo = " + embeddedPo);
-
- //embeddedPo.set_CustomColumn(po.get_KeyColumns()[0], po.get_ID());
- //log.info("embeddedPo.set"+po.get_KeyColumns()[0]+" = [" + po.get_ID()+"]");
-
- boolean rSave = embeddedPo.saveReplica(true);
- result.append("ResultSave-EmbeddedPO=").append(rSave).append("; ");
- }
-
- } else if (MEXPFormatLine.TYPE_XMLAttribute.equals(formatLines[i].getType())) {
- // XML Attribute
- value = XMLHelper.getString("@" + formatLines[i].getValue(), rootElement);
- log.info("value=[" + value + "]");
- } else {
- // Export Format Line is not one of two possible values...ERROR
- throw new Exception(Msg.getMsg(ctx, "EXPFormatLineNonValidType"));
- }
- if (value == null) {
-
- } else {
-/* if (column.getColumnName().equals("AD_Client_ID")) {
- //Env.setContext(Env.getCtx(), "#AD_Client_ID", value.toString());
- }
- if (column.getColumnName().equals("AD_Org_ID")) {
- //Env.setContext(Env.getCtx(), "#AD_Org_ID", value.toString());
- } */
- if ( MEXPFormatLine.TYPE_EmbeddedEXPFormat.equals(formatLines[i].getType()) ) {
- // do nothing
- } else {
- MColumn column = MColumn.get(ctx, formatLines[i].getAD_Column_ID());
- log.info("column=[" + column + "]");
-
- // Clazz
- Class clazz = DisplayType.getClass(column.getAD_Reference_ID(), true);
- // Handle Posted
- if (column.getColumnName().equalsIgnoreCase("Posted")
- || column.getColumnName().equalsIgnoreCase("Processed")
- || column.getColumnName().equalsIgnoreCase("Processing"))
- {
- clazz = Boolean.class;
- } else if (column.getColumnName().equalsIgnoreCase("Record_ID"))
- {
- clazz = Integer.class;
- } else if (column.getColumnName().equalsIgnoreCase("AD_Language")
- || column.getColumnName().equalsIgnoreCase("EntityType"))
- {
- clazz = String.class;
- }
- log.info("clazz = " + clazz.getName());
- // Handle Date and Time
- value = handleDateTime(value, column, formatLines[i]);
-
- log.info("formatLinesType = " + formatLines[i].getType());
- if (MEXPFormatLine.TYPE_EmbeddedEXPFormat.equals( formatLines[i].getType() ) ) {
- // DO NOTHING
- throw new Exception("We can't be here!!!");
- } else {
- if (column.getAD_Reference_ID() == DisplayType.DateTime
- || column.getAD_Reference_ID() == DisplayType.Date
- )
- {
- //
- po.set_ValueOfColumn(formatLines[i].getAD_Column_ID(), value);
- log.info("Set value of column ["+column.getColumnName()+"]=["+value+"]");
- } else if (column.getAD_Reference_ID() == DisplayType.ID
- || column.getAD_Reference_ID() == DisplayType.Integer
- || column.getAD_Reference_ID() == DisplayType.Search
- || column.getAD_Reference_ID() == DisplayType.TableDir
- || column.getAD_Reference_ID() == DisplayType.Table
- )
- {
- //
- if (! Util.isEmpty(value.toString()))
- {
- int intValue = Integer.parseInt(value.toString());
- value = new Integer( intValue );
- }else
- value=null;
- log.info("Abut to set int value of column ["+column.getColumnName()+"]=["+value+"]");
- po.set_ValueOfColumn(formatLines[i].getAD_Column_ID(), value);
- log.info("Set int value of column ["+column.getColumnName()+"]=["+value+"]");
- } else if (column.getAD_Reference_ID() == DisplayType.Amount
- || column.getAD_Reference_ID() == DisplayType.Number
- || column.getAD_Reference_ID() == DisplayType.CostPrice
- || column.getAD_Reference_ID() == DisplayType.Quantity
- )
- {
- //
- if (! Util.isEmpty(value.toString()))
- {
- double doubleValue = Double.parseDouble(value.toString());
- value = new BigDecimal(doubleValue);
- }else
- value=null;
- //value = new Double( doubleValue );
- log.info("About to set BigDecimal value of column ["+column.getColumnName()+"]=["+value+"]");
- po.set_ValueOfColumn(formatLines[i].getAD_Column_ID(), value);
- log.info("Set BigDecimal value of column ["+column.getColumnName()+"]=["+value+"]");
- }
- else if(column.getAD_Reference_ID() == DisplayType.YesNo)
- {
- po.set_ValueOfColumn(formatLines[i].getAD_Column_ID(), value);
- }
- else {
- //
- try {
- log.info("About to set value of column ["+column.getColumnName()+"]=["+value+"]");
- if(clazz == Boolean.class)
- po.set_ValueOfColumn(formatLines[i].getAD_Column_ID(), value);
- else
- po.set_ValueOfColumn(formatLines[i].getAD_Column_ID(), clazz.cast(value));
- log.info("Set value of column ["+column.getColumnName()+"]=["+value+"]");
- } catch (ClassCastException ex) {
- ex.printStackTrace();
- throw new Exception(ex);
- }
-
- //po.set_ValueOfColumn(formatLines[i].getAD_Column_ID(), value);
- }
- result.append(column.getColumnName()).append("=").append(value).append("; ");
- }
- }
- }
-
- }
-
- return po;
- }
-
- public static MClient getAD_ClientByValue(Properties ctx, String value, String trxName)
- throws SQLException
- {
- MClient result = null;
-
- StringBuffer sql = new StringBuffer("SELECT AD_Client_ID ")
- .append(" FROM ").append(X_AD_Client.Table_Name)
- .append(" WHERE ").append(X_AD_Client.COLUMNNAME_Value).append(" = ?")
- // .append(" AND IsActive = ?")
- ;
- //s_log.info(sql.toString());
- s_log.info("Client_Value =[" + value + "]");
-
- PreparedStatement pstmt = null;
- try {
- pstmt = DB.prepareStatement(sql.toString(), trxName);
- pstmt.setString(1, value);
- ResultSet rs = pstmt.executeQuery();
- if (rs.next()) {
- int AD_Client_ID = rs.getInt(1);
- s_log.info("AD_Client_ID = " + AD_Client_ID);
- result = new MClient(ctx, AD_Client_ID, trxName);
- }
- rs.close();
- pstmt.close();
- pstmt = null;
- } catch (SQLException e) {
- s_log.log(Level.SEVERE, sql.toString(), e);
- throw e;
- } finally {
- try {
- if (pstmt != null)
- pstmt.close();
- pstmt = null;
- } catch (Exception e) {
- pstmt = null;
- }
- }
-
- return result;
- }
-
- public int getID(Properties ctx, MEXPFormat expFormat, Element rootElement, String rootNodeName, String trxName) throws Exception {
- int result = 0;
-
- if (expFormat == null || rootElement == null || rootNodeName == null) {
- throw new IllegalArgumentException("expFormat, rootNode and RootnodeName can't be null!");
- }
- log.info("expFormat = " + expFormat);
- log.info("rootNode.getNodeName() = " + rootElement.getNodeName());
- log.info("rootNodeName = " + rootNodeName);
- if (rootElement.getParentNode() != null) {
- log.info("rootNode.ParentName = " + rootElement.getParentNode().getNodeName());
- }
-
- // get AD_Table ID from export Format.
- int AD_Table_ID = expFormat.getAD_Table_ID();
-
- // Load appropriate Model class...
- MTable table = MTable.get(ctx, AD_Table_ID);
- log.info("Table = " + table);
-
- //Select * FROM table.getTableName() WHERE Value or ANY IDENTIFIER column
- StringBuffer sql = new StringBuffer("SELECT * ")
- .append(" FROM ").append(table.getTableName())
- .append(" WHERE ")
- ;
- // Get list with all Unique columns!
- MEXPFormatLine[] uniqueFormatLines = expFormat.getUniqueColumns();
- if (uniqueFormatLines == null || uniqueFormatLines.length < 1) {
- throw new Exception(Msg.getMsg(ctx, "EXPFormatLineNoUniqueColumns"));
- }
- Object[] values = new Object[uniqueFormatLines.length];
- for (int i = 0; i < uniqueFormatLines.length; i++) {
- log.info("--- iterate unique column with index = ["+i+"]");
- MColumn column = MColumn.get(ctx, uniqueFormatLines[i].getAD_Column_ID());
- log.info("column = ["+column+"]");
- String valuecol=column.getColumnName();
- if(column.getAD_Reference_ID() == DisplayType.Amount
- || column.getAD_Reference_ID() == DisplayType.Number
- || column.getAD_Reference_ID() == DisplayType.CostPrice
- || column.getAD_Reference_ID() == DisplayType.Quantity)
- {
- valuecol="Round("+valuecol+",2)";
- }
-
- if (MEXPFormatLine.TYPE_XMLElement.equals(uniqueFormatLines[i].getType())) {
- // XML Element
- //values[i] = XMLHelper.getString("/"+rootElement.getNodeName() + "/" + uniqueFormatLines[i].getValue(), rootElement);
- String xPath = null;
- //xPath = "/"+rootNodeName + "/" + uniqueFormatLines[i].getValue(); -- works
- //xPath = "/"+ uniqueFormatLines[i].getValue(); // do not work
- xPath = ""+ uniqueFormatLines[i].getValue();
-
- values[i] = XMLHelper.getString(xPath, rootElement);
- //log.info("xml PATH =" + rootElement.getNodeName() + "." + xPath );
- log.info("values[" + i + "]=" + values[i]);
-
- } else if (MEXPFormatLine.TYPE_ReferencedEXPFormat.equals(uniqueFormatLines[i].getType())) {
- // Referenced Export Format
- log.info("referencedExpFormat.EXP_EmbeddedFormat_ID = " + uniqueFormatLines[i].getEXP_EmbeddedFormat_ID());
- MEXPFormat referencedExpFormat = new MEXPFormat(ctx, uniqueFormatLines[i].getEXP_EmbeddedFormat_ID(), trxName);
- log.info("referencedExpFormat = " + referencedExpFormat);
- /*
-
-
- 0
-
- SYSTEM
-
-
- ...
-
- */
- int record_ID = 0;
- // Find Record_ID by ???Value??? In fact by Columns set as Part Of Unique Index in Export Format!
- Element referencedNode = ((Element) rootElement.getElementsByTagName(uniqueFormatLines[i].getValue()).item(0));
- log.info("referencedNode = " + referencedNode);
-
- record_ID = getID(ctx, referencedExpFormat, referencedNode, uniqueFormatLines[i].getValue(), trxName);
- log.info("record_ID = " + record_ID);
-
- values[i] = new Integer(record_ID);
- } else {
- // Export Format Line is not one of two possible values...ERROR
- throw new Exception(Msg.getMsg(ctx, "EXPFormatLineNonValidType"));
- }
- if (i == 0) {
- sql.append(" ").append(valuecol).append(" = ? ");
- } else {
- sql.append(" AND ").append(valuecol).append(" = ? ");
- }
-
- }
- log.info("sql = " + sql.toString());
-
- PreparedStatement pstmt = null;
- try {
- pstmt = DB.prepareStatement (sql.toString(), trxName);
- for (int i = 0; i < uniqueFormatLines.length; i++) {
- MColumn col = MColumn.get(ctx, uniqueFormatLines[i].getAD_Column_ID());
-
- if (col.getAD_Reference_ID() == DisplayType.DateTime
- || col.getAD_Reference_ID() == DisplayType.Date)
- {
-
- Timestamp value = (Timestamp)handleDateTime(values[i], col , uniqueFormatLines[i]);
- pstmt.setTimestamp(i+1, value);
- }
- else if(col.getAD_Reference_ID() == DisplayType.String)
- {
- String value = (String)values[i];
- pstmt.setString(i+1, value);
- }
- else if(col.getAD_Reference_ID() == DisplayType.Amount
- || col.getAD_Reference_ID() == DisplayType.Number
- || col.getAD_Reference_ID() == DisplayType.CostPrice
- || col.getAD_Reference_ID() == DisplayType.Quantity)
- {
- BigDecimal value = new BigDecimal((String)values[i]);
- pstmt.setBigDecimal(i+1, value.setScale(2, BigDecimal.ROUND_HALF_UP));
- }
- else
- {
- pstmt.setObject(i+1, values[i]);
- log.info("pstmt.setObject["+(i+1)+"] = [" + values[i]+"]");
- }
-
- }
- ResultSet rs = pstmt.executeQuery();
- if ( rs.next() ) {
- result = rs.getInt(1);
- }
- rs.close ();
- pstmt.close ();
- pstmt = null;
- } catch (SQLException e) {
- s_log.log(Level.SEVERE, sql.toString(), e);
- throw e;
- } finally {
- try {
- if (pstmt != null) pstmt.close ();
- pstmt = null;
- } catch (Exception e) { pstmt = null; }
- }
- log.info("result = " + result);
- return result;
- }
-
- private Object handleDateTime(Object value, MColumn column, MEXPFormatLine formatLine) throws ParseException {
- String valueString = null;
- valueString = value.toString(); // We are sure that value is not null
- Object result = value;
-
- if (column.getAD_Reference_ID() == DisplayType.Date) {
- if (valueString != null) {
- if (formatLine.getDateFormat() != null && !"".equals(formatLine.getDateFormat())) {
- m_customDateFormat = new SimpleDateFormat( formatLine.getDateFormat() ); // "MM/dd/yyyy"; MM/dd/yyyy hh:mm:ss
- result = new Timestamp(m_customDateFormat.parse(valueString).getTime());
- log.info("Custom Date Format; Parsed value = " + result.toString());
- } else {
- //result = new Timestamp(m_dateFormat.parse(valueString).getTime());
- //log.info("Custom Date Format; Parsed value = " + result.toString());
- //NOW Using Standard Japanese Format yyyy-mm-dd hh:mi:ss.mil so don't care about formats....
- result = Timestamp.valueOf(valueString);
- }
- }
- } else if (column.getAD_Reference_ID() == DisplayType.DateTime) {
- if (valueString != null) {
- if (formatLine.getDateFormat() != null && !"".equals(formatLine.getDateFormat())) {
- m_customDateFormat = new SimpleDateFormat( formatLine.getDateFormat() ); // "MM/dd/yyyy"
- result = new Timestamp(m_customDateFormat.parse(valueString).getTime());
- log.info("Custom Date Format; Parsed value = " + result.toString());
- } else {
- //result = new Timestamp(m_dateTimeFormat.parse(valueString).getTime());
- //log.info("Custom Date Format; Parsed value = " + result.toString());
- //NOW Using Standard Japanese Format yyyy-mm-dd hh:mi:ss.mil so don't care about formats....
- result = Timestamp.valueOf(valueString);
- }
-
- }
-
- }
- return result;
- }
-
-}
diff --git a/serverRoot/src/main/server/org/adempiere/server/rpl/imp/ModelImporter.java b/serverRoot/src/main/server/org/adempiere/server/rpl/imp/ModelImporter.java
deleted file mode 100644
index aba442b57d..0000000000
--- a/serverRoot/src/main/server/org/adempiere/server/rpl/imp/ModelImporter.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - E-evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-package org.adempiere.server.rpl.imp;
-
-import java.util.logging.Level;
-
-import org.adempiere.server.rpl.XMLHelper;
-import org.compiere.Adempiere;
-import org.compiere.process.ProcessInfo;
-import org.compiere.process.ProcessInfoParameter;
-import org.compiere.process.SvrProcess;
-import org.compiere.util.CLogMgt;
-import org.compiere.util.Env;
-import org.compiere.util.Msg;
-import org.w3c.dom.Document;
-
-/**
- *
- * @author Trifon N. Trifonov
- * @author victor.perez@e-evolution.com
- * FB [1963487 ] Is necessary new process to export and import with an Export
- * @see http://sourceforge.net/tracker/?func=detail&atid=879335&aid=1963487&group_id=176962
- * @version $Id:$
- */
-public class ModelImporter extends SvrProcess {
-
- /** Client Parameter */
- protected int p_AD_Client_ID = 0;
-
- /** Document Type Parameter */
- protected int p_C_DocType_ID = 0;
-
- /** Record ID */
- protected int p_Record_ID = 0;
- /** EXP_Format_ID */
- protected int p_EXP_Format_ID = 0;
- /** File Name **/
- protected String p_FileName = "";
-
- /** Table ID */
- int AD_Table_ID = 0;
-
-
- /**
- * Get Parameters
- */
- protected void prepare() {
-
- p_Record_ID = getRecord_ID();
- if (p_AD_Client_ID == 0)
- p_AD_Client_ID = Env.getAD_Client_ID(getCtx());
- AD_Table_ID = getTable_ID();
-
- StringBuffer sb = new StringBuffer("AD_Table_ID=").append(AD_Table_ID);
- sb.append("; Record_ID=").append(getRecord_ID());
- // Parameter
- ProcessInfoParameter[] para = getParameter();
- for (int i = 0; i < para.length; i++) {
- String name = para[i].getParameterName();
- if (para[i].getParameter() == null)
- ;
- else if (name.equals("EXP_Format_ID"))
- p_EXP_Format_ID = para[i].getParameterAsInt();
- else if (name.equals("FileName"))
- p_FileName = (String)para[i].getParameter();
- else
- log.log(Level.SEVERE, "Unknown Parameter: " + name);
- }
-
- if(p_EXP_Format_ID == 0)
- p_EXP_Format_ID = p_Record_ID;
- if(p_FileName == null)
- {
- // Load XML file and parse it
- String fileNameOr = org.compiere.util.Ini.findAdempiereHome()
- + System.getProperty("file.separator")
- + "data"
- + System.getProperty("file.separator")
- + "ExportFile.xml";
- p_FileName = fileNameOr;
- }
-
- log.info(sb.toString());
- }
-
- /**
- * Process
- *
- * @return info
- */
- protected String doIt() throws Exception
- {
- StringBuffer result = new StringBuffer("");
-
- // Load XML file and parse it
- /*String fileNameOr = org.compiere.util.Ini.findAdempiereHome()
- + System.getProperty("file.separator")
- + "data"
- + System.getProperty("file.separator");
-
- String pathToXmlFile = fileNameOr+"XmlExport-test.xml";
- Document documentToBeImported = XMLHelper.createDocumentFromFile(pathToXmlFile);*/
- Document documentToBeImported = XMLHelper.createDocumentFromFile(p_FileName);
-
- ImportHelper impHelper = new ImportHelper(getCtx());
- impHelper.importXMLDocument(result, documentToBeImported, get_TrxName());
-
- addLog(0, null, null, Msg.getMsg(getCtx(), "ImportModelProcessResult") + "\n" + result.toString());
- return result.toString();
- }
-
- public static void main(String[] args)
- {
- CLogMgt.setLoggerLevel(Level.INFO, null);
- CLogMgt.setLevel(Level.INFO);
-
- Adempiere.startupEnvironment(false);
- ProcessInfo pi = new ProcessInfo("Test Import Model", 1000000);
- pi.setAD_Client_ID(11);
- pi.setAD_User_ID(100);
-
- ModelImporter modelImporter = new ModelImporter();
- modelImporter.startProcess(Env.getCtx(), pi, null);
-
- System.out.println("Process=" + pi.getTitle() + " Error="+pi.isError() + " Summary=" + pi.getSummary());
- }
-
-}
\ No newline at end of file
diff --git a/serverRoot/src/main/server/org/adempiere/server/rpl/imp/TopicImportProcessor.java b/serverRoot/src/main/server/org/adempiere/server/rpl/imp/TopicImportProcessor.java
deleted file mode 100644
index 39718ded48..0000000000
--- a/serverRoot/src/main/server/org/adempiere/server/rpl/imp/TopicImportProcessor.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - E-evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-package org.adempiere.server.rpl.imp;
-
-import java.util.Properties;
-
-import org.adempiere.server.rpl.IImportProcessor;
-import org.compiere.server.ReplicationProcessor;
-import org.compiere.util.CLogger;
-import org.eevolution.model.MIMPProcessor;
-import org.eevolution.model.X_IMP_ProcessorParameter;
-
-/**
- * Aim of this class is to import records from JMS Server.
- *
- * @author Trifon N. Trifonov
- * @version $Id:$
- */
-public class TopicImportProcessor implements IImportProcessor {
-
- /** Logger */
- protected CLogger log = CLogger.getCLogger (TopicImportProcessor.class);
-
- /**
- * Topic Listener
- */
- private TopicListener topicListener = null;
-
-
- public void process(Properties ctx, ReplicationProcessor replicationProcessor, String trxName)
- throws Exception {
-
- log.info("replicationProcessor = " + replicationProcessor);
- log.info("replicationProcessor.getMImportProcessor() = " + replicationProcessor.getMImportProcessor());
-
- MIMPProcessor impProcessor = replicationProcessor.getMImportProcessor();
-
- X_IMP_ProcessorParameter[] processorParameters = impProcessor.getIMP_ProcessorParameters(trxName);
-
- String host = impProcessor.getHost();
- int port = impProcessor.getPort();
- String account = impProcessor.getAccount();
- String password = impProcessor.getPasswordInfo();
-
- // mandatory parameters!
- String topicName = null;
- String protocol = null;
- boolean isDurableSubscription = true;
- String subscriptionName = null;
- String options = null;
- String clientID = null;
-
- if (processorParameters != null && processorParameters.length > 0) {
- for (int i = 0; i < processorParameters.length; i++) {
- log.info("ProcesParameter Value = " + processorParameters[i].getValue());
- log.info("ProcesParameter ParameterValue = " + processorParameters[i].getParameterValue());
- if (processorParameters[i].getValue().equals("topicName")) {
- topicName = processorParameters[i].getParameterValue();
- } else if (processorParameters[i].getValue().equals("protocol")) {
- protocol = processorParameters[i].getParameterValue();
- } else if (processorParameters[i].getValue().equals("isDurableSubscription")) {
- isDurableSubscription = Boolean.parseBoolean( processorParameters[i].getParameterValue() );
- } else if (processorParameters[i].getValue().equals("subscriptionName")) {
- subscriptionName = processorParameters[i].getParameterValue();
- } else if (processorParameters[i].getValue().equals("clientID")) {
- clientID = processorParameters[i].getParameterValue();
- } else {
- // Some other mandatory parameter here
- }
- }
- }
-
- if (topicName == null || topicName.length() == 0) {
- throw new Exception("Missing "+X_IMP_ProcessorParameter.Table_Name+" with key 'topicName'!");
- }
- if (protocol == null || protocol.length() == 0) {
- throw new Exception("Missing "+X_IMP_ProcessorParameter.Table_Name+" with key 'protocol'!");
- }
- if (isDurableSubscription && subscriptionName == null || subscriptionName.length() == 0) {
- throw new Exception("Missing "+X_IMP_ProcessorParameter.Table_Name+" with key 'subscriptionName'!");
- }
- if (clientID == null || clientID.length() == 0) {
- throw new Exception("Missing "+X_IMP_ProcessorParameter.Table_Name+" with key 'clientID'!");
- }
-
- topicListener = new TopicListener(ctx, replicationProcessor, protocol, host, port
- , isDurableSubscription, subscriptionName, topicName, clientID
- , account, password, options, trxName);
-
- topicListener.run();
- log.info("Started topicListener = " + topicListener);
- }
-
- public void stop() throws Exception {
-
- if ( topicListener != null ) {
- topicListener.stop();
- log.info("Stoped topicListener." );
- }
-
- }
-
-
-}
diff --git a/serverRoot/src/main/server/org/adempiere/server/rpl/imp/TopicListener.java b/serverRoot/src/main/server/org/adempiere/server/rpl/imp/TopicListener.java
deleted file mode 100644
index 79e35f822b..0000000000
--- a/serverRoot/src/main/server/org/adempiere/server/rpl/imp/TopicListener.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * - Antonio Cañaveral (antonio.canaveral@e-evolution.com)
- * *
- * Sponsors: *
- * - E-evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-
-package org.adempiere.server.rpl.imp;
-
-import java.util.Properties;
-
-import javax.jms.Connection;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageListener;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-import javax.jms.Topic;
-
-import org.adempiere.server.rpl.XMLHelper;
-import org.apache.activemq.ActiveMQConnectionFactory;
-import org.compiere.server.ReplicationProcessor;
-import org.compiere.util.CLogger;
-import org.eevolution.model.MIMPProcessorLog;
-import org.w3c.dom.Document;
-
-/**
- * Listen for JMS Messages
- * @author Trifon N. Trifonov
- * @author Antonio Cañaveral, e-Evolution
- * [ 2194986 ] Already connected ClientID issue.
- * http://sourceforge.net/tracker/index.php?func=detail&aid=2194986&group_id=176962&atid=879332
- */
-public class TopicListener implements MessageListener {
-
- /**
- * Connection to JMS Server
- */
- private Connection conn;
-
- /**
- * JMS Session
- */
- private Session session;
-
- /**
- * JMS Topic
- */
- private Topic topic;
-
-// private String url="tcp://localhost:61616?jms.dispatchAsync=true&jms.useAsyncSend=true&jms.optimizeAcknowledge=true&jms.disableTimeStampsByDefault=true&jms.optimizedMessageDispatch=true&wireFormat.cacheEnabled=false&wireFormat.tightEncodingEnabled=false";
- private String url="tcp://localhost:61616";
-
- /**
- * host where JMS server is running
- */
- private String host = "localhost";
-
- /**
- * port of JMS Server
- */
- private int port = 61616;
-
- /**
- * Network protocol
- */
- private String protocol = "tcp";
-
- /**
- * Context
- */
- private Properties ctx = null;
-
- /**
- * Transaction name
- */
- private String trxName = null;
-
- /**
- * Topic Name
- */
- private String topicName = null;
-
- /**
- * Replication processor
- */
- private ReplicationProcessor replicationProcessor = null;
-
- /** Logger */
- protected CLogger log = CLogger.getCLogger (TopicListener.class);
-
- /**
- * Is Durable Subscription
- */
- private boolean isDurableSubscription = false;
-
- /**
- * Subscription Name
- */
- private String subscriptionName = null;
-
- /**
- * JMS Connection ClientID
- */
- private String clientID = null;
-
- /**
- * String User Name
- */
- private String userName = null;
-
- /**
- * Password
- */
- private String password = null;
-
-
- /**
- *
- */
- public TopicListener(Properties ctx, ReplicationProcessor replicationProcessor, String protocol, String host, int port
- , boolean isDurableSubscription, String subscriptionName, String topicName
- , String clientID, String userName, String password
- , String options, String trxName) {
- if ( host != null && !host.equals("") ) {
- this.host = host;
- }
-
- if ( port > 0 ) {
- this.port = port;
- }
-
- if ( protocol != null && !protocol.equals("") ) {
- this.protocol = protocol;
- }
-
- this.topicName = topicName;
-
- String uri=this.protocol + "://" + this.host + ":" + this.port;
-
- if(options!=null && options.length()>0)
- {
- if(!options.contains("?"))
- uri+="?"+options;
- }
- this.setUrl(uri);
-
- this.ctx = ctx;
-
- this.trxName = trxName;
-
- this.replicationProcessor = replicationProcessor;
-
- this.isDurableSubscription = isDurableSubscription;
-
- this.subscriptionName = subscriptionName;
-
- this.clientID = clientID;
-
- this.userName = userName;
-
- this.password = password;
-
- }
-
- public void run() throws JMSException {
- ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory( url );
- log.finest("ActiveMQConnectionFactory = " + factory);
-
- if (userName !=null && password != null) {
- conn = factory.createConnection(userName, password);
- } else {
- conn = factory.createConnection();
- }
-
- log.finest("conn = " + conn );
-
- if(conn.getClientID()==null)
- {
- conn.setClientID( clientID );
- }else
- {
- if(conn.getClientID().equals(clientID))
- {
- log.warning("Connection with clientID '" + clientID
- + "' already exists");
- return;
- }else
- conn.setClientID( clientID );
- }
-
-
- session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE); // TODO - could be parameter
- log.finest("session = " + session );
-
- log.finest("topicName = " + topicName );
- log.finest("subscriptionName = " + subscriptionName);
-
- topic = session.createTopic( topicName );
- log.finest("topic = " + topic );
-
- MessageConsumer consumer = null;
- if (isDurableSubscription) {
- // http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.pmc.express.doc/tasks/tjn0012_.html
- // The subscriptionName assigned to a durable subscription must be unique within a given client ID.
- consumer = session.createDurableSubscriber( topic, subscriptionName );
- } else {
- consumer = session.createConsumer( topic );
- }
-
- log.finest("consumer = " + consumer );
-
- consumer.setMessageListener( this );
-
- conn.start();
- log.finest("Waiting for JMS messages...");
- //
- MIMPProcessorLog pLog = new MIMPProcessorLog(replicationProcessor.getMImportProcessor(), "Connected to JMS Server. Waiting for messages!");
- StringBuffer logReference = new StringBuffer("topicName = ").append(topicName)
- .append(", subscriptionName = ").append( subscriptionName )
- ;
- pLog.setReference( logReference.toString() );
- boolean resultSave = pLog.save();
- log.finest("Result Save = " + resultSave);
- }
-
- /**
- *
- */
- public void onMessage(Message message) {
- if ( message instanceof TextMessage ) {
-
- try {
- TextMessage txtMessage = (TextMessage) message;
-
- String text = txtMessage.getText();
- //log.finest("Received message: \n" + text );
-
- Document documentToBeImported = XMLHelper.createDocumentFromString( text );
- StringBuffer result = new StringBuffer();
-
- ImportHelper impHelper = new ImportHelper( ctx );
-
- impHelper.importXMLDocument(result, documentToBeImported, trxName );
-
- //
- MIMPProcessorLog pLog = new MIMPProcessorLog(replicationProcessor.getMImportProcessor(), "Imported Document!");
- //pLog.setReference("topicName = " + topicName );
- if (text.length() > 2000 ) {
- pLog.setTextMsg( text.substring(0, 1999) );
- } else {
- pLog.setTextMsg( text);
- }
-
- boolean resultSave = pLog.save();
- log.finest("Result Save = " + resultSave);
-
- session.commit();
-
- } catch (Exception e) {
- replicationProcessor.setProcessRunning(false);
- try {
- session.rollback();
- } catch (JMSException e1) {
- e1.printStackTrace();
- }
- e.printStackTrace();
- }
-
- } else {
- log.finest("Received NO TEXT Message: " );
- // Received non text message!!!
- }
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public void stop() throws JMSException {
- // Close JMS Connection
- log.finest("Closing JMS Connection!");
- conn.close();
- }
-}
diff --git a/serverRoot/src/main/server/org/compiere/server/AdempiereServer.java b/serverRoot/src/main/server/org/compiere/server/AdempiereServer.java
index 34462dc705..2a92ba63c4 100644
--- a/serverRoot/src/main/server/org/compiere/server/AdempiereServer.java
+++ b/serverRoot/src/main/server/org/compiere/server/AdempiereServer.java
@@ -35,7 +35,6 @@ import org.compiere.util.CLogger;
import org.compiere.util.Env;
import org.compiere.util.TimeUtil;
import org.compiere.wf.MWorkflowProcessor;
-import org.eevolution.model.MIMPProcessor;
/**
* Adempiere Server Base
@@ -64,8 +63,6 @@ public abstract class AdempiereServer extends Thread
return new Scheduler ((MScheduler)model);
if (model instanceof MLdapProcessor)
return new LdapProcessor((MLdapProcessor)model);
- if (model instanceof MIMPProcessor) // @Trifon
- return new ReplicationProcessor((MIMPProcessor)model);
//
throw new IllegalArgumentException("Unknown Processor");
} // create
diff --git a/serverRoot/src/main/server/org/compiere/server/AdempiereServerMgr.java b/serverRoot/src/main/server/org/compiere/server/AdempiereServerMgr.java
index d9a7fd9702..d9a7145022 100644
--- a/serverRoot/src/main/server/org/compiere/server/AdempiereServerMgr.java
+++ b/serverRoot/src/main/server/org/compiere/server/AdempiereServerMgr.java
@@ -31,7 +31,6 @@ import org.compiere.model.MSession;
import org.compiere.util.CLogger;
import org.compiere.util.Env;
import org.compiere.wf.MWorkflowProcessor;
-import org.eevolution.model.MIMPProcessor;
/**
* Adempiere Server Manager
@@ -164,18 +163,7 @@ public class AdempiereServerMgr
server.start();
server.setPriority(Thread.NORM_PRIORITY-1);
m_servers.add(server);
- }
- // ImportProcessor - @Trifon
- MIMPProcessor[] importModels = MIMPProcessor.getActive(m_ctx);
- for (int i = 0; i < importModels.length; i++)
- {
- MIMPProcessor lp = importModels[i];
- AdempiereServer server = AdempiereServer.create(lp);
- server.start();
- server.setPriority(Thread.NORM_PRIORITY-1);
- m_servers.add(server);
- }
-
+ }
log.fine("#" + noServers);
return startAll();
} // startEnvironment
diff --git a/serverRoot/src/main/server/org/compiere/server/ReplicationProcessor.java b/serverRoot/src/main/server/org/compiere/server/ReplicationProcessor.java
deleted file mode 100644
index b4309d9d94..0000000000
--- a/serverRoot/src/main/server/org/compiere/server/ReplicationProcessor.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/**********************************************************************
- * This file is part of Adempiere ERP Bazaar *
- * http://www.adempiere.org *
- * *
- * Copyright (C) Trifon Trifonov. *
- * Copyright (C) Contributors *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
- * MA 02110-1301, USA. *
- * *
- * Contributors: *
- * - Trifon Trifonov (trifonnt@users.sourceforge.net) *
- * *
- * Sponsors: *
- * - E-evolution (http://www.e-evolution.com/) *
- **********************************************************************/
-package org.compiere.server;
-
-import java.sql.Timestamp;
-
-import org.adempiere.server.rpl.IImportProcessor;
-import org.compiere.model.MClient;
-import org.compiere.util.TimeUtil;
-import org.eevolution.model.MIMPProcessor;
-import org.eevolution.model.MIMPProcessorLog;
-import org.eevolution.model.X_IMP_Processor_Type;
-
-/**
- *
- * @author Trifon N. Trifonov
- *
- */
-public class ReplicationProcessor extends AdempiereServer {
-
- /** Last Summary */
- private StringBuffer m_summary = new StringBuffer();
-
- /** Client info */
- private MClient m_client = null;
-
- private MIMPProcessor mImportProcessor = null;
-
- /**
- * flag showing if process is working!
- */
- private boolean isProcessRunning = false;
-
-
- protected ReplicationProcessor(MIMPProcessor model, int initialNap) {
- super (model, initialNap);
- mImportProcessor = model;
- m_client = MClient.get(mImportProcessor.getCtx(), mImportProcessor.getAD_Client_ID());
- }
-
- protected ReplicationProcessor(MIMPProcessor model) {
- super (model, 30);
- mImportProcessor = model;
- m_client = MClient.get(mImportProcessor.getCtx(), mImportProcessor.getAD_Client_ID());
- }
-
- @SuppressWarnings("unchecked")
- @Override
- protected void doWork() {
- if (isProcessRunning) {
- // process is already started successfully!
-
- } else {
- // process is not started!
-
- m_summary = new StringBuffer();
- String trxName = mImportProcessor.get_TrxName();
- if ( trxName == null || "".equals(trxName) ) {
-// trxName = "ImportProcessor-" + System.currentTimeMillis();
- }
- log.fine("trxName = " + trxName);
- log.fine("ImportProcessor = " + mImportProcessor);
-
- int IMP_ProcessorType_ID = 0;
- IMP_ProcessorType_ID = mImportProcessor.getIMP_Processor_Type_ID();
- X_IMP_Processor_Type impProcessor_Type = new X_IMP_Processor_Type(mImportProcessor.getCtx(), IMP_ProcessorType_ID, trxName );
- log.fine("impProcessor_Type = " + impProcessor_Type); // TODO --- REMOVE
-
- String javaClass = impProcessor_Type.getJavaClass();
- IImportProcessor importProcessor = null;
- try {
- Class clazz = Class.forName(javaClass);
- importProcessor = (IImportProcessor)clazz.newInstance();
-
- importProcessor.process(mImportProcessor.getCtx(), this, trxName );
-
- } catch (Exception e) {
- isProcessRunning = false;
- log.fine("ReplicationProcessor caught an exception !!!" );
- e.printStackTrace();
-
- log.severe( e.getMessage() );
-
- MIMPProcessorLog pLog = new MIMPProcessorLog(mImportProcessor, e.getMessage() );
- pLog.setReference("#" + String.valueOf(p_runCount) + " - " + TimeUtil.formatElapsed(new Timestamp(p_startWork)));
- boolean resultSave = pLog.save();
-
- try {
- importProcessor.stop();
- } catch (Exception e1) {
- e1.printStackTrace();
- MIMPProcessorLog pLog2 = new MIMPProcessorLog(mImportProcessor, e1.getMessage() );
-
- boolean resultSave2 = pLog2.save();
- }
- }
-
- //
- int no = mImportProcessor.deleteLog();
- m_summary.append("Logs Records deleted=").append(no).append("; ");
- //
- MIMPProcessorLog pLog = new MIMPProcessorLog(mImportProcessor, m_summary.toString());
- pLog.setReference("#" + String.valueOf(p_runCount) + " - " + TimeUtil.formatElapsed(new Timestamp(p_startWork)));
- boolean resultSave = pLog.save();
- }
- }
-
- @Override
- public String getServerInfo()
- {
- return "#" + p_runCount + " - Last=" + m_summary.toString();
- }
-
- /**
- * @return the isProcessRunning
- */
- public boolean isProcessRunning() {
- return isProcessRunning;
- }
-
- /**
- * @param isProcessRunning the isProcessRunning to set
- */
- public void setProcessRunning(boolean isProcessRunning) {
- this.isProcessRunning = isProcessRunning;
- }
-
- /**
- * @return the mImportProcessor
- */
- public MIMPProcessor getMImportProcessor() {
- return mImportProcessor;
- }
-
- /**
- * @param importProcessor the mImportProcessor to set
- */
- public void setMImportProcessor(MIMPProcessor importProcessor) {
- mImportProcessor = importProcessor;
- }
-
-}