use of org.compiere.model.MUOM in project adempiere by adempiere.
the class CRPSummary method Summary.
public void Summary(Timestamp start, Timestamp finish, MResource r) {
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);
GregorianCalendar gc2 = new GregorianCalendar();
gc2.setTimeInMillis(finish.getTime());
gc2.clear(Calendar.MILLISECOND);
gc2.clear(Calendar.SECOND);
gc2.clear(Calendar.MINUTE);
gc2.clear(Calendar.HOUR_OF_DAY);
MResourceType t = MResourceType.get(Env.getCtx(), r.getS_ResourceType_ID());
long hours = 0;
if (t.isTimeSlot())
hours = getHoursAvailable(t.getTimeSlotStart(), t.getTimeSlotStart());
else
hours = 24;
boolean available = false;
ArrayList<Col> list = new ArrayList<Col>();
int col = 0;
int row = 1;
int summary = 0;
Col cols = new Col();
cols.setFrom("Past Due");
cols.setTo(start.toString());
cols.setDays(0);
cols.setCapacity(0);
cols.setLoad(0);
cols.setSummary(0);
list.add(0, cols);
col++;
while (gc1.before(gc2)) {
gc1.add(Calendar.DATE, 1);
switch(gc1.get(Calendar.DAY_OF_WEEK)) {
case Calendar.SUNDAY:
if (t.isOnSunday())
available = true;
break;
case Calendar.MONDAY:
if (t.isOnMonday())
available = true;
break;
case Calendar.TUESDAY:
if (t.isOnTuesday())
available = true;
break;
case Calendar.WEDNESDAY:
if (t.isOnWednesday())
available = true;
break;
case Calendar.THURSDAY:
if (t.isOnThursday())
available = true;
break;
case Calendar.FRIDAY:
if (t.isOnFriday())
available = true;
break;
case Calendar.SATURDAY:
if (t.isOnSaturday())
available = true;
break;
}
if (available) {
cols = new Col();
cols.setFrom(gc1.getTime().toString());
cols.setTo(gc1.getTime().toString());
cols.setDays(1);
Long Hours = new Long(hours);
cols.setCapacity(Hours.intValue());
int C_UOM_ID = DB.getSQLValue(null, "SELECT C_UOM_ID FROM M_Product WHERE S_Resource_ID = ? ", r.getS_Resource_ID());
MUOM oum = MUOM.get(getCtx(), C_UOM_ID);
if (oum.isHour()) {
Timestamp date = new Timestamp(gc1.getTimeInMillis());
int seconds = getLoad(r.getS_Resource_ID(), date, date);
cols.setLoad(seconds / 3600);
}
cols.setSummary(summary + cols.getDifference());
summary = cols.getSummary();
list.add(col, cols);
}
}
col = 0;
boolean newrow = true;
Col[] lines = new Col[list.size()];
//set Title
for (int z = 0; z <= lines.length; z++) {
}
for (int i = 0; i <= lines.length; i++) {
if (newrow) {
X_T_MRP_CRP crp = new X_T_MRP_CRP(getCtx(), 0, null);
crp.setDescription("CRP Resource" + r.getName());
//crp.setRange00(lines[i].getFrom() + "/" + lines[i].getTo());
}
switch(col) {
case 0:
col++;
case 1:
col++;
case 2:
col++;
case 3:
col++;
case 4:
col++;
case 5:
col++;
case 6:
col++;
case 7:
col++;
case 8:
col++;
case 9:
col++;
case 10:
col++;
case 11:
col++;
case 12:
col = 0;
newrow = true;
}
col++;
}
}
use of org.compiere.model.MUOM in project adempiere by adempiere.
the class VCRP method actionPerformed.
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals(ConfirmPanel.A_OK)) {
Timestamp date = null;
if (dateFrom.getValue() != null)
date = (Timestamp) dateFrom.getValue();
int S_Resource_ID = 0;
if (resource.getValue() != null)
S_Resource_ID = ((Integer) resource.getValue()).intValue();
if (date != null && S_Resource_ID != 0) {
MResource r = MResource.get(Env.getCtx(), S_Resource_ID);
int uom_id = r.getResourceType().getC_UOM_ID();
MUOM uom = MUOM.get(Env.getCtx(), uom_id);
CategoryDataset dataset = null;
if (uom.isHour()) {
dataset = createDataset(date, r);
} else {
dataset = createWeightDataset(date, r);
}
String title = r.getName() != null ? r.getName() : "";
title = title + " " + r.getDescription() != null ? r.getDescription() : "";
JFreeChart jfreechart = createChart(dataset, title, uom);
centerPanel.removeAll();
chartPanel = new ChartPanel(jfreechart, false);
centerPanel.add(chartPanel, BorderLayout.CENTER);
centerPanel.setVisible(true);
m_frame.pack();
}
}
if (e.getActionCommand().equals(ConfirmPanel.A_CANCEL)) {
dispose();
}
}
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";
}
Aggregations