Search in sources :

Example 1 with MUOM

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++;
    }
}
Also used : MUOM(org.compiere.model.MUOM) GregorianCalendar(java.util.GregorianCalendar) ArrayList(java.util.ArrayList) Timestamp(java.sql.Timestamp) X_T_MRP_CRP(org.eevolution.model.X_T_MRP_CRP) MResourceType(org.compiere.model.MResourceType)

Example 2 with MUOM

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();
    }
}
Also used : MResource(org.compiere.model.MResource) MUOM(org.compiere.model.MUOM) ChartPanel(org.jfree.chart.ChartPanel) DefaultCategoryDataset(org.jfree.data.category.DefaultCategoryDataset) CategoryDataset(org.jfree.data.category.CategoryDataset) Timestamp(java.sql.Timestamp) JFreeChart(org.jfree.chart.JFreeChart)

Example 3 with MUOM

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);
}
Also used : DBException(org.adempiere.exceptions.DBException) MUOM(org.compiere.model.MUOM) SQLException(java.sql.SQLException) ResultSet(java.sql.ResultSet) PreparedStatement(java.sql.PreparedStatement) KeyNamePair(org.compiere.util.KeyNamePair) ALayoutConstraint(org.compiere.apps.ALayoutConstraint) BigDecimal(java.math.BigDecimal)

Example 4 with MUOM

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;
}
Also used : MUOM(org.compiere.model.MUOM) GregorianCalendar(java.util.GregorianCalendar) Timestamp(java.sql.Timestamp) DefaultCategoryDataset(org.jfree.data.category.DefaultCategoryDataset) MResourceType(org.compiere.model.MResourceType)

Example 5 with MUOM

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";
}
Also used : MUOMConversion(org.compiere.model.MUOMConversion) MProduct(org.compiere.model.MProduct) MUOM(org.compiere.model.MUOM) AdempiereUserError(org.compiere.util.AdempiereUserError) BigDecimal(java.math.BigDecimal)

Aggregations

MUOM (org.compiere.model.MUOM)21 BigDecimal (java.math.BigDecimal)11 MProduct (org.compiere.model.MProduct)9 DefaultMutableTreeNode (javax.swing.tree.DefaultMutableTreeNode)7 KeyNamePair (org.compiere.util.KeyNamePair)7 Vector (java.util.Vector)5 Timestamp (java.sql.Timestamp)4 MProductBOM (org.compiere.model.MProductBOM)4 MResourceType (org.compiere.model.MResourceType)4 MResource (org.compiere.model.MResource)3 Query (org.compiere.model.Query)3 MPPProductBOM (org.eevolution.model.MPPProductBOM)3 DefaultCategoryDataset (org.jfree.data.category.DefaultCategoryDataset)3 PreparedStatement (java.sql.PreparedStatement)2 ResultSet (java.sql.ResultSet)2 SQLException (java.sql.SQLException)2 GregorianCalendar (java.util.GregorianCalendar)2 DBException (org.adempiere.exceptions.DBException)2 JFreeChart (org.jfree.chart.JFreeChart)2 CategoryDataset (org.jfree.data.category.CategoryDataset)2