use of org.compiere.model.MUOM in project adempiere by adempiere.
the class VMRPDetailed method setMRP.
/**
* Fill header MRP information
*/
private void setMRP() {
int M_Product_ID = getM_Product_ID();
int M_AttributeSetInstance_ID = getM_AttributeSetInstance_ID();
int M_Warehouse_ID = getM_Warehouse_ID();
// Check Product (mandatory):
if (M_Product_ID <= 0)
return;
// Set Quantities
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
StringBuffer sql = new StringBuffer("SELECT ").append("BOMQtyOnHandASI(M_Product_ID,?,?,?) as qtyonhand, ").append("BOMQtyReservedASI(M_Product_ID,?,?,?) as qtyreserved, ").append("BOMQtyAvailableASI(M_Product_ID,?,?,?) as qtyavailable, ").append("BOMQtyOrderedASI(M_Product_ID,?,?,?) as qtyordered").append(" FROM M_Product WHERE M_Product_ID=?");
pstmt = DB.prepareStatement(sql.toString(), null);
DB.setParameters(pstmt, new Object[] { getM_AttributeSetInstance_ID(), getM_Warehouse_ID(), 0, getM_AttributeSetInstance_ID(), getM_Warehouse_ID(), 0, getM_AttributeSetInstance_ID(), getM_Warehouse_ID(), 0, getM_AttributeSetInstance_ID(), getM_Warehouse_ID(), 0, getM_Product_ID() });
rs = pstmt.executeQuery();
while (rs.next()) {
fOnhand.setValue(rs.getBigDecimal(1));
fReserved.setValue(rs.getBigDecimal(2));
fAvailable.setValue(rs.getBigDecimal(3));
fOrdered.setValue(rs.getBigDecimal(4));
}
} catch (SQLException ex) {
throw new DBException(ex);
} finally {
DB.close(rs, pstmt);
rs = null;
pstmt = null;
}
//
// Set UOM:
int uom_id = MProduct.get(getCtx(), M_Product_ID).getC_UOM_ID();
MUOM um = MUOM.get(getCtx(), uom_id);
KeyNamePair kum = new KeyNamePair(um.getC_UOM_ID(), um.get_Translation(MUOM.COLUMNNAME_Name));
fUOM.setText(kum.toString());
//
// Set Replenish Min Level:
BigDecimal replenishLevelMin = Env.ZERO;
if (getM_Warehouse_ID() > 0) {
String sql = "SELECT Level_Min FROM M_Replenish" + " WHERE AD_Client_ID=? AND M_Product_ID=? AND M_Warehouse_ID=?";
replenishLevelMin = DB.getSQLValueBD(null, sql, AD_Client_ID, M_Product_ID, M_Warehouse_ID);
}
fReplenishMin.setValue(replenishLevelMin);
}
use of org.compiere.model.MUOM in project adempiere by adempiere.
the class CRP method createDataset.
/**
* Create Category Dataset based on date start and resource
* @param start
* @param resource
* @return CategoryDataset
*/
protected CategoryDataset createDataset(Timestamp start, MResource resource) {
GregorianCalendar gc1 = new GregorianCalendar();
gc1.setTimeInMillis(start.getTime());
gc1.clear(Calendar.MILLISECOND);
gc1.clear(Calendar.SECOND);
gc1.clear(Calendar.MINUTE);
gc1.clear(Calendar.HOUR_OF_DAY);
Timestamp date = start;
String namecapacity = Msg.translate(Env.getCtx(), "Capacity");
String nameload = Msg.translate(Env.getCtx(), "Load");
String namesummary = Msg.translate(Env.getCtx(), "Summary");
MResourceType t = MResourceType.get(Env.getCtx(), resource.getS_ResourceType_ID());
int days = 1;
long hours = t.getTimeSlotHours();
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// Long Hours = new Long(hours);
int C_UOM_ID = DB.getSQLValue(null, "SELECT C_UOM_ID FROM M_Product WHERE S_Resource_ID = ? ", resource.getS_Resource_ID());
MUOM uom = MUOM.get(Env.getCtx(), C_UOM_ID);
if (!uom.isHour()) {
return dataset;
}
long summary = 0;
while (days < 32) {
String day = new String(new Integer(date.getDate()).toString());
long HoursLoad = getLoad(resource, date).longValue();
Long Hours = new Long(hours);
switch(gc1.get(Calendar.DAY_OF_WEEK)) {
case Calendar.SUNDAY:
days++;
if (t.isOnSunday()) {
dataset.addValue(hours, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary + Hours.intValue() - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
} else {
dataset.addValue(0, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
}
case Calendar.MONDAY:
days++;
if (t.isOnMonday()) {
dataset.addValue(hours, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary + Hours.intValue() - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
} else {
dataset.addValue(0, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
}
case Calendar.TUESDAY:
days++;
if (t.isOnTuesday()) {
dataset.addValue(hours, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary + Hours.intValue() - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
} else {
dataset.addValue(0, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
}
case Calendar.WEDNESDAY:
days++;
if (t.isOnWednesday()) {
dataset.addValue(hours, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary + Hours.intValue() - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
} else {
dataset.addValue(0, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
}
case Calendar.THURSDAY:
days++;
if (t.isOnThursday()) {
dataset.addValue(hours, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary + Hours.intValue() - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
} else {
dataset.addValue(0, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
}
case Calendar.FRIDAY:
days++;
if (t.isOnFriday()) {
dataset.addValue(hours, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary + Hours.intValue() - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
} else {
dataset.addValue(0, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
}
case Calendar.SATURDAY:
days++;
if (t.isOnSaturday()) {
dataset.addValue(hours, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary + Hours.intValue() - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
} else {
dataset.addValue(0, namecapacity, day);
dataset.addValue(HoursLoad, nameload, day);
dataset.addValue(summary, namesummary, day);
summary = summary - (HoursLoad);
gc1.add(Calendar.DATE, 1);
date = new Timestamp(gc1.getTimeInMillis());
break;
}
}
}
return dataset;
}
use of org.compiere.model.MUOM in project adempiere by adempiere.
the class ProductUOMConvert method doIt.
// prepare
/**
* Process
* @return message
* @throws Exception
*/
protected String doIt() throws Exception {
if (p_M_Product_ID == 0 || p_M_Product_To_ID == 0 || p_M_Locator_ID == 0 || p_Qty == null || Env.ZERO.compareTo(p_Qty) == 0)
throw new AdempiereUserError("Invalid Parameter");
//
MProduct product = MProduct.get(getCtx(), p_M_Product_ID);
MProduct productTo = MProduct.get(getCtx(), p_M_Product_To_ID);
log.info("Product=" + product + ", ProductTo=" + productTo + ", M_Locator_ID=" + p_M_Locator_ID + ", Qty=" + p_Qty);
MUOMConversion[] conversions = MUOMConversion.getProductConversions(getCtx(), product.getM_Product_ID());
MUOMConversion conversion = null;
for (int i = 0; i < conversions.length; i++) {
if (conversions[i].getC_UOM_To_ID() == productTo.getC_UOM_ID())
conversion = conversions[i];
}
if (conversion == null)
throw new AdempiereUserError("@NotFound@: @C_UOM_Conversion_ID@");
MUOM uomTo = MUOM.get(getCtx(), productTo.getC_UOM_ID());
BigDecimal qtyTo = p_Qty.divide(conversion.getDivideRate(), uomTo.getStdPrecision(), BigDecimal.ROUND_HALF_UP);
BigDecimal qtyTo6 = p_Qty.divide(conversion.getDivideRate(), 6, BigDecimal.ROUND_HALF_UP);
if (qtyTo.compareTo(qtyTo6) != 0)
throw new AdempiereUserError("@StdPrecision@: " + qtyTo + " <> " + qtyTo6 + " (" + p_Qty + "/" + conversion.getDivideRate() + ")");
log.info(conversion + " -> " + qtyTo);
// Set to Beta
return "Not completed yet";
}
use of org.compiere.model.MUOM in project adempiere by adempiere.
the class myJTree method addChild.
// action_fillTree
public void addChild(MProductBOM bomline, DefaultMutableTreeNode parent) {
//System.out.println("-------------------------Parent:" + bom.getName());
MProduct M_Product = MProduct.get(getCtx(), bomline.getM_ProductBOM_ID());
Vector<Object> line = new Vector<Object>(17);
// 0 Select
line.add(new Boolean(false));
// 1 IsActive
line.add(new Boolean(bomline.isActive()));
// 2 Line
line.add(new Integer(bomline.getLine()));
KeyNamePair pp = new KeyNamePair(M_Product.getM_Product_ID(), M_Product.getValue().concat("_").concat(M_Product.getName()));
// 3 M_Product_ID
line.add(pp);
MUOM u = new MUOM(M_Product.getCtx(), M_Product.getC_UOM_ID(), M_Product.get_TrxName());
KeyNamePair uom = new KeyNamePair(M_Product.getC_UOM_ID(), u.getUOMSymbol());
// 4 C_UOM_ID
line.add(uom);
// 5 QtyBOM
line.add((BigDecimal) ((bomline.getBOMQty() != null) ? bomline.getBOMQty() : new BigDecimal(0)));
DefaultMutableTreeNode child = new DefaultMutableTreeNode(line);
parent.add(child);
if (m_selected_id == bomline.getM_Product_ID() || getM_Product_ID() == bomline.getM_Product_ID())
dataBOM.add(line);
if (reload)
return;
for (MProductBOM bom : getChildBOMs(bomline.getM_ProductBOM_ID(), false)) {
addChild(bom, child);
}
}
use of org.compiere.model.MUOM in project adempiere by adempiere.
the class myJTree method addParent.
public void addParent(MProductBOM bom, DefaultMutableTreeNode parent) {
MProduct M_Product = MProduct.get(getCtx(), bom.getM_Product_ID());
Vector<Object> line = new Vector<Object>(17);
// 0 Select
line.add(new Boolean(false));
// 1 IsActive
line.add(new Boolean(M_Product.isActive()));
// 2 Line
line.add(new Integer(bom.getLine()));
KeyNamePair pp = new KeyNamePair(M_Product.getM_Product_ID(), M_Product.getValue().concat("_").concat(M_Product.getName()));
// 3 M_Product_ID
line.add(pp);
MUOM u = new MUOM(M_Product.getCtx(), M_Product.getC_UOM_ID(), M_Product.get_TrxName());
KeyNamePair uom = new KeyNamePair(M_Product.getC_UOM_ID(), u.getUOMSymbol());
// 6 C_UOM_ID
line.add(uom);
// 9 QtyBOM
line.add((BigDecimal) ((bom.getBOMQty() != null) ? bom.getBOMQty() : new BigDecimal(0)));
dataBOM.add(line);
DefaultMutableTreeNode child = new DefaultMutableTreeNode(line);
parent.add(child);
if (reload)
return;
for (MProductBOM bomline : getParentBOMs(bom.getM_Product_ID())) {
addParent(bomline, child);
}
//dataBOM.add(line);
}
Aggregations