- added method "get" on MStorageReservation

- change MProduct proses to get QtyOrdered and QtyReserved
This commit is contained in:
uthadehikaru 2012-10-23 10:46:01 +07:00
parent 4e119984a8
commit 2cc429a3dd
2 changed files with 61 additions and 8 deletions

View File

@ -571,16 +571,26 @@ public class MProduct extends X_M_Product
|| (is_ValueChanged("ProductType") // from Item || (is_ValueChanged("ProductType") // from Item
&& PRODUCTTYPE_Item.equals(get_ValueOld("ProductType"))))) && PRODUCTTYPE_Item.equals(get_ValueOld("ProductType")))))
{ {
MStorageOnHand[] storages = MStorageOnHand.getOfProduct(getCtx(), get_ID(), get_TrxName()); // large modified related to storages by zuhri
MStorageOnHand[] onHandStorages = MStorageOnHand.getOfProduct(getCtx(), get_ID(), get_TrxName());
MStorageReservation[] reservationStorages = MStorageReservation.getOfProduct(getCtx(), get_ID(), get_TrxName());
BigDecimal OnHand = Env.ZERO; BigDecimal OnHand = Env.ZERO;
BigDecimal Ordered = Env.ZERO; BigDecimal Ordered = Env.ZERO;
BigDecimal Reserved = Env.ZERO; BigDecimal Reserved = Env.ZERO;
for (int i = 0; i < storages.length; i++) for (int i = 0; i < onHandStorages.length; i++)
{ {
OnHand = OnHand.add(storages[i].getQtyOnHand()); OnHand = OnHand.add(onHandStorages[i].getQtyOnHand());
Ordered = Ordered.add(storages[i].getQtyOrdered()); //Ordered = Ordered.add(storages[i].getQtyOrdered());
Reserved = Reserved.add(storages[i].getQtyReserved()); //Reserved = Reserved.add(storages[i].getQtyReserved());
} }
for (int i = 0; i < reservationStorages.length; i++)
{
if(reservationStorages[i].isSOTrx())
Reserved = Reserved.add(reservationStorages[i].getQty());
else
Ordered = Ordered.add(reservationStorages[i].getQty());
}
// end large modified related to storages by zuhri
String errMsg = ""; String errMsg = "";
if (OnHand.signum() != 0) if (OnHand.signum() != 0)
errMsg = "@QtyOnHand@ = " + OnHand; errMsg = "@QtyOnHand@ = " + OnHand;
@ -717,8 +727,8 @@ public class MProduct extends X_M_Product
for (int i = 0; i < storages.length; i++) for (int i = 0; i < storages.length; i++)
{ {
OnHand = OnHand.add(storages[i].getQtyOnHand()); OnHand = OnHand.add(storages[i].getQtyOnHand());
Ordered = OnHand.add(storages[i].getQtyOrdered()); //Ordered = OnHand.add(storages[i].getQtyOrdered());
Reserved = OnHand.add(storages[i].getQtyReserved()); //Reserved = OnHand.add(storages[i].getQtyReserved());
} }
String errMsg = ""; String errMsg = "";
if (OnHand.signum() != 0) if (OnHand.signum() != 0)

View File

@ -3,6 +3,7 @@ package org.compiere.model;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import java.util.Properties; import java.util.Properties;
import org.compiere.util.CLogMgt; import org.compiere.util.CLogMgt;
@ -29,6 +30,49 @@ public class MStorageReservation extends X_M_StorageReservation {
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub
} }
/**
* Get Storage Info for Product on specified Warehouse
* @param ctx
* @param m_Warehouse_ID
* @param m_Product_ID
* @param i
* @param get_TrxName
* @return
*/
public static MStorageReservation[] get(Properties ctx, int m_Warehouse_ID,
int m_Product_ID, int i, String trxName) {
String sqlWhere = "M_Product_ID=? AND M_Warehouse_ID=?";
List<MStorageReservation> list = new Query(ctx, MStorageReservation.Table_Name, sqlWhere, trxName)
.setParameters(m_Product_ID, m_Warehouse_ID)
.list();
MStorageReservation[] retValue = new MStorageReservation[list.size()];
list.toArray(retValue);
return retValue;
}
/**
* Get Storage Info for Product across warehouses
* @param ctx context
* @param M_Product_ID product
* @param trxName transaction
* @return existing or null
*/
public static MStorageReservation[] getOfProduct (Properties ctx, int M_Product_ID, String trxName)
{
String sqlWhere = "M_Product_ID=?";
List<MStorageReservation> list = new Query(ctx, MStorageReservation.Table_Name, sqlWhere, trxName)
.setParameters(M_Product_ID)
.list();
MStorageReservation[] retValue = new MStorageReservation[list.size()];
list.toArray(retValue);
return retValue;
} // getOfProduct
/** /**
* Get Available Qty. * Get Available Qty.
* The call is accurate only if there is a storage record * The call is accurate only if there is a storage record
@ -90,5 +134,4 @@ public class MStorageReservation extends X_M_StorageReservation {
+ ",M_Product_ID=" + M_Product_ID + " = " + retValue); + ",M_Product_ID=" + M_Product_ID + " = " + retValue);
return retValue; return retValue;
} // getQtyAvailable } // getQtyAvailable
} }