Search in sources :

Example 6 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 7 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 8 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)

Example 9 with MUOM

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);
    }
}
Also used : MProduct(org.compiere.model.MProduct) MUOM(org.compiere.model.MUOM) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) MProductBOM(org.compiere.model.MProductBOM) KeyNamePair(org.compiere.util.KeyNamePair) Vector(java.util.Vector) BigDecimal(java.math.BigDecimal)

Example 10 with MUOM

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);
}
Also used : MProduct(org.compiere.model.MProduct) MUOM(org.compiere.model.MUOM) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) MProductBOM(org.compiere.model.MProductBOM) KeyNamePair(org.compiere.util.KeyNamePair) Vector(java.util.Vector) BigDecimal(java.math.BigDecimal)

Aggregations

MUOM (org.compiere.model.MUOM)20 BigDecimal (java.math.BigDecimal)10 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