diff --git a/base/src/org/eevolution/process/RequisitionPOCreate.java b/base/src/org/eevolution/process/RequisitionPOCreate.java deleted file mode 100644 index ff19673573..0000000000 --- a/base/src/org/eevolution/process/RequisitionPOCreate.java +++ /dev/null @@ -1,387 +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.sql.*; -import java.util.logging.*; - -import org.compiere.model.*; -import org.compiere.process.*; -import org.compiere.util.*; - -/** - * Create PO from Requisition - * - * - * @author CreateProductPlanning - * @version $Id: RequisitionPOCreate.java,v 1.4 2006/01/21 02:23:37 vpj-cd Exp $ - */ -public class RequisitionPOCreate extends SvrProcess -{ - /** Org */ - private int p_AD_Org_ID = 0; - /** Warehouse */ - private int p_M_Warehouse_ID = 0; - /** Doc Date From */ - private Timestamp p_DateDoc_From; - /** Doc Date To */ - private Timestamp p_DateDoc_To; - /** Doc Date From */ - private Timestamp p_DateRequired_From; - /** Doc Date To */ - private Timestamp p_DateRequired_To; - /** Priority */ - private String p_PriorityRule = null; - /** User */ - private int p_AD_User_ID = 0; - /** Product */ - private int p_M_Product_ID = 0; - /** Requisition */ - private int p_M_Requisition_ID = 0; - - /** Consolidate */ - private boolean p_ConsolidateDocument = false; - - /** Order */ - private MOrder m_order = null; - /** Order Line */ - private MOrderLine m_orderLine = 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 = para[i].getParameterAsInt(); - else if (name.equals("M_Warehouse_ID")) - p_M_Warehouse_ID = para[i].getParameterAsInt(); - else if (name.equals("DateDoc")) - { - p_DateDoc_From = (Timestamp)para[i].getParameter(); - p_DateDoc_To = (Timestamp)para[i].getParameter_To(); - } - else if (name.equals("DateRequired")) - { - p_DateRequired_From = (Timestamp)para[i].getParameter(); - p_DateRequired_To = (Timestamp)para[i].getParameter_To(); - } - else if (name.equals("PriorityRule")) - p_PriorityRule = (String)para[i].getParameter(); - else if (name.equals("AD_User_ID")) - p_AD_User_ID = para[i].getParameterAsInt(); - else if (name.equals("M_Product_ID")) - p_M_Product_ID = para[i].getParameterAsInt(); - else if (name.equals("M_Requisition_ID")) - p_M_Requisition_ID = para[i].getParameterAsInt(); - else if (name.equals("ConsolidateDocument")) - p_ConsolidateDocument = "Y".equals(para[i].getParameter()); - else - log.log(Level.SEVERE, "Unknown Parameter: " + name); - } - } // prepare - - /** - * Process - * @return info - * @throws Exception - */ - protected String doIt() throws Exception - { - // Specific - if (p_M_Requisition_ID != 0) - { - log.info("M_Requisition_ID=" + p_M_Requisition_ID); - MRequisition req = new MRequisition(getCtx(), p_M_Requisition_ID, get_TrxName()); - if (!MRequisition.DOCSTATUS_Completed.equals(req.getDocStatus())) - throw new AdempiereUserError("@DocStatus@ = " + req.getDocStatus()); - MRequisitionLine[] lines = req.getLines(); - for (int i = 0; i < lines.length; i++) - { - if (lines[i].getC_OrderLine_ID() == 0) - process (lines[i]); - } - closeOrder(); - return ""; - } // single Requisition - - // - log.info("AD_Org_ID=" + p_AD_Org_ID - + ", M_Warehouse_ID=" + p_M_Warehouse_ID - + ", DateDoc=" + p_DateDoc_From + "/" + p_DateDoc_To - + ", DateRequired=" + p_DateRequired_From + "/" + p_DateRequired_To - + ", PriorityRule=" + p_PriorityRule - + ", AD_User_ID=" + p_AD_User_ID - + ", M_Product_ID=" + p_M_Product_ID - + ", ConsolidateDocument" + p_ConsolidateDocument); - - StringBuffer sql = new StringBuffer("SELECT * FROM M_RequisitionLine rl ") - .append("WHERE rl.C_OrderLine_ID IS NULL"); - if (p_AD_Org_ID != 0) - sql.append(" AND AD_Org_ID=?"); - if (p_M_Product_ID != 0) - sql.append(" AND M_Product_ID=?"); - // Requisition Header - sql.append("AND EXISTS (SELECT * FROM M_Requisition r WHERE rl.M_Requisition_ID=r.M_Requisition_ID") - .append(" AND r.DocStatus='CO'"); - if (p_M_Warehouse_ID != 0) - sql.append(" AND r.M_Warehouse_ID=?"); - // - if (p_DateDoc_From != null && p_DateDoc_To != null) - sql.append(" AND r.DateDoc BETWEEN ? AND ?"); - else if (p_DateDoc_From != null) - sql.append(" AND r.DateDoc => ?"); - else if (p_DateDoc_To != null) - sql.append(" AND r.DateDoc <= ?"); - // - if (p_DateRequired_From != null && p_DateRequired_To != null) - sql.append(" AND r.DateRequired BETWEEN ? AND ?"); - else if (p_DateRequired_From != null) - sql.append(" AND r.DateRequired => ?"); - else if (p_DateRequired_To != null) - sql.append(" AND r.DateRequired <= ?"); - // - if (p_PriorityRule != null) - sql.append(" AND r.PriorityRule => ?"); - if (p_AD_User_ID != 0) - sql.append(" AND r.AD_User_ID=?"); - // - sql.append(") ORDER BY "); - if (!p_ConsolidateDocument) - sql.append("M_Requisition_ID, "); - sql.append("M_Product_ID, C_Charge_ID, M_AttributeSetInstance_ID"); - - PreparedStatement pstmt = null; - try - { - pstmt = DB.prepareStatement (sql.toString(), get_TrxName()); - int index = 1; - if (p_AD_Org_ID != 0) - pstmt.setInt (index++, p_AD_Org_ID); - if (p_M_Product_ID != 0) - pstmt.setInt (index++, p_M_Product_ID); - if (p_M_Warehouse_ID != 0) - pstmt.setInt (index++, p_M_Warehouse_ID); - if (p_DateDoc_From != null && p_DateDoc_To != null) - { - pstmt.setTimestamp(index++, p_DateDoc_From); - pstmt.setTimestamp(index++, p_DateDoc_To); - } - else if (p_DateDoc_From != null) - pstmt.setTimestamp(index++, p_DateDoc_From); - else if (p_DateDoc_To != null) - pstmt.setTimestamp(index++, p_DateDoc_To); - if (p_DateRequired_From != null && p_DateRequired_To != null) - { - pstmt.setTimestamp(index++, p_DateRequired_From); - pstmt.setTimestamp(index++, p_DateRequired_To); - } - else if (p_DateRequired_From != null) - pstmt.setTimestamp(index++, p_DateRequired_From); - else if (p_DateRequired_To != null) - pstmt.setTimestamp(index++, p_DateRequired_To); - if (p_PriorityRule != null) - pstmt.setString(index++, p_PriorityRule); - if (p_AD_User_ID != 0) - pstmt.setInt (index++, p_AD_User_ID); - ResultSet rs = pstmt.executeQuery (); - while (rs.next ()) - { - process (new MRequisitionLine (getCtx(), rs, get_TrxName())); - } - rs.close (); - pstmt.close (); - pstmt = null; - } - catch (Exception e) - { - log.log (Level.SEVERE, sql.toString(), e); - } - try - { - if (pstmt != null) - pstmt.close (); - pstmt = null; - } - catch (Exception e) - { - pstmt = null; - } - closeOrder(); - return ""; - } // doit - - private int m_M_Requisition_ID = 0; - private int m_M_Product_ID = 0; - private int m_M_AttributeSetInstance_ID = 0; - /** BPartner */ - private MBPartner m_bpartner = null; - - /** - * Process Line - * @param rLine request line - */ - private void process (MRequisitionLine rLine) throws Exception - { - if (rLine.getM_Product_ID() == 0 && rLine.getC_Charge_ID() == 0) - { - log.warning("Ignored Line" + rLine.getLine() - + " " + rLine.getDescription() - + " - " + rLine.getLineNetAmt()); - return; - } - - if (!p_ConsolidateDocument - && rLine.getM_Requisition_ID() != m_M_Requisition_ID) - closeOrder(); - if (m_orderLine == null - || rLine.getM_Product_ID() != m_M_Product_ID - || rLine.getM_AttributeSetInstance_ID() != m_M_AttributeSetInstance_ID - || rLine.getC_Charge_ID() != 0) // single line per charge - newLine(rLine); - - // Update Order Line - m_orderLine.setQty(m_orderLine.getQtyOrdered().add(rLine.getQty())); - // Update Requisition Line - rLine.setC_OrderLine_ID(m_orderLine.getC_OrderLine_ID()); - if (!rLine.save()) - throw new AdempiereSystemError("Cannot update Request Line"); - } // process - - /** - * Create new Order - * @param rLine request line - */ - private void newOrder(MRequisitionLine rLine, int C_BPartner_ID) throws Exception - { - if (m_order != null) - closeOrder(); - // BPartner - if (m_bpartner == null || C_BPartner_ID != m_bpartner.getC_BPartner_ID()) - m_bpartner = new MBPartner (getCtx(), C_BPartner_ID, null); - - // Order - m_order = new MOrder(getCtx(), 0, get_TrxName()); - m_order.setIsSOTrx(false); - m_order.setC_DocTypeTarget_ID(); - m_order.setBPartner(m_bpartner); - // default po document type - if (!p_ConsolidateDocument) - m_order.setDescription(Msg.getElement(getCtx(), "M_Requisition_ID") - + ": " + rLine.getParent().getDocumentNo()); - - // Prepare Save - m_M_Requisition_ID = rLine.getM_Requisition_ID(); - if (!m_order.save()) - throw new AdempiereSystemError("Cannot save Order"); - } // newOrder - - /** - * Close Order - */ - private void closeOrder() throws Exception - { - if (m_orderLine != null) - { - if (!m_orderLine.save()) - throw new AdempiereSystemError("Cannot update Order Line"); - } - if (m_order != null) - { - m_order.load(get_TrxName()); - addLog(0, null, m_order.getGrandTotal(), m_order.getDocumentNo()); - } - m_order = null; - m_orderLine = null; - } // closeOrder - - - /** - * New Order Line (different Product) - * @param rLine request line - */ - private void newLine(MRequisitionLine rLine) throws Exception - { - if (m_orderLine != null) - if (!m_orderLine.save()) - throw new AdempiereSystemError("Cannot update Order Line"); - m_orderLine = null; - MProduct product = null; - - // Get Business Partner - int C_BPartner_ID = rLine.getC_BPartner_ID(); - if (C_BPartner_ID != 0) - ; - else if (rLine.getC_Charge_ID() != 0) - { - //MCharge charge = MCharge.get(getCtx(), rLine.getC_Charge_ID()); - MCharge charge = new MCharge(getCtx(), rLine.getC_Charge_ID(),null); - - C_BPartner_ID = charge.getC_BPartner_ID(); - if (C_BPartner_ID == 0) - throw new AdempiereUserError("No Vendor for Charge " + charge.getName()); - } - else - { - // Find Vendor from Produt - product = MProduct.get(getCtx(), rLine.getM_Product_ID()); - MProductPO[] ppos = MProductPO.getOfProduct(getCtx(), product.getM_Product_ID(), null); - for (int i = 0; i < ppos.length; i++) - { - if (ppos[i].isCurrentVendor() && ppos[i].getC_BPartner_ID() != 0) - { - C_BPartner_ID = ppos[i].getC_BPartner_ID(); - break; - } - } - if (C_BPartner_ID == 0 && ppos.length > 0) - C_BPartner_ID = ppos[0].getC_BPartner_ID(); - if (C_BPartner_ID == 0) - throw new AdempiereUserError("No Vendor for " + product.getName()); - } - - // New Order - Different Vendor - if (m_order == null - || m_order.getC_BPartner_ID() != C_BPartner_ID) - newOrder(rLine, C_BPartner_ID); - - - // No Order Line - m_orderLine = new MOrderLine(m_order); - if (product != null) - { - m_orderLine.setProduct(product); - m_orderLine.setM_AttributeSetInstance_ID(rLine.getM_AttributeSetInstance_ID()); - } - else - { - m_orderLine.setC_Charge_ID(rLine.getC_Charge_ID()); - m_orderLine.setPriceActual(rLine.getPriceActual()); - } - m_orderLine.setAD_Org_ID(rLine.getAD_Org_ID()); - m_M_Product_ID = rLine.getM_Product_ID(); - m_M_AttributeSetInstance_ID = rLine.getM_AttributeSetInstance_ID(); - if (!m_orderLine.save()) - throw new AdempiereSystemError("Cannot save Order Line"); - } // newLine - -} // RequisitionPOCreate