- added method "get" on MStorageReservation
- change MProduct proses to get QtyOrdered and QtyReserved
This commit is contained in:
parent
4e119984a8
commit
2cc429a3dd
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue