delete org.eevolution.process.RequisitionPOCreate because is not used nowhere
This commit is contained in:
parent
26b5f8ddee
commit
c9c38dfe6d
|
@ -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
|
Loading…
Reference in New Issue