Search in sources :

Example 11 with AdempiereException

use of org.adempiere.exceptions.AdempiereException in project adempiere by adempiere.

the class DistributionRun method distributionOrders.

//	insertDetails
/**************************************************************************
	 * 	Create Orders
	 * 	@return true if created
	 */
private boolean distributionOrders() {
    //The Quantity Available is distribute with respect to Distribution Order Demand
    if (p_BasedInDamnd) {
        int M_Warehouse_ID = 0;
        if (p_M_Warehouse_ID <= 0) {
            MOrgInfo oi_source = MOrgInfo.get(getCtx(), m_run.getAD_Org_ID(), get_TrxName());
            MWarehouse m_source = MWarehouse.get(getCtx(), oi_source.getM_Warehouse_ID());
            if (m_source == null)
                throw new AdempiereException("Do not exist Defautl Warehouse Source");
            M_Warehouse_ID = m_source.getM_Warehouse_ID();
        } else
            M_Warehouse_ID = p_M_Warehouse_ID;
        //			For all lines
        for (int i = 0; i < m_details.length; i++) {
            MDistributionRunDetail detail = m_details[i];
            StringBuffer sql = new StringBuffer("SELECT * FROM DD_OrderLine ol INNER JOIN DD_Order o ON (o.DD_Order_ID=ol.DD_Order_ID)  INNER JOIN M_Locator l ON (l.M_Locator_ID=ol.M_Locator_ID) ");
            //sql.append(" WHERE o.DocStatus IN ('DR','IN') AND o.C_BPartner_ID = ? AND M_Product_ID=? AND  l.M_Warehouse_ID=?  AND ol.DatePromised BETWEEN ? AND ? ");
            sql.append(" WHERE o.DocStatus IN ('DR','IN') AND o.C_BPartner_ID = ? AND M_Product_ID=? AND  l.M_Warehouse_ID=?  AND ol.DatePromised <=?");
            PreparedStatement pstmt = null;
            ResultSet rs = null;
            try {
                pstmt = DB.prepareStatement(sql.toString(), get_TrxName());
                pstmt.setInt(1, detail.getC_BPartner_ID());
                pstmt.setInt(2, detail.getM_Product_ID());
                pstmt.setInt(3, M_Warehouse_ID);
                pstmt.setTimestamp(4, p_DatePromised);
                //pstmt.setTimestamp(5, p_DatePromised_To);
                rs = pstmt.executeQuery();
                while (rs.next()) {
                    //	Create Order Line
                    MDDOrderLine line = new MDDOrderLine(getCtx(), rs, get_TrxName());
                    line.setM_Product_ID(detail.getM_Product_ID());
                    line.setConfirmedQty(line.getTargetQty().add(detail.getActualAllocation()));
                    if (p_M_Warehouse_ID > 0)
                        line.setDescription(Msg.translate(getCtx(), "PlannedQty"));
                    else
                        line.setDescription(m_run.getName());
                    line.saveEx();
                    break;
                //addLog(0,null, detail.getActualAllocation(), order.getDocumentNo() 
                //	+ ": " + bp.getName() + " - " + product.getName());
                }
            } catch (Exception e) {
                log.log(Level.SEVERE, "doIt - " + sql, e);
                return false;
            } finally {
                DB.close(rs, pstmt);
                rs = null;
                pstmt = null;
            }
        }
        return true;
    }
    //		Get Counter Org/BP
    int runAD_Org_ID = m_run.getAD_Org_ID();
    if (runAD_Org_ID == 0)
        runAD_Org_ID = Env.getAD_Org_ID(getCtx());
    MOrg runOrg = MOrg.get(getCtx(), runAD_Org_ID);
    int runC_BPartner_ID = runOrg.getLinkedC_BPartner_ID(get_TrxName());
    boolean counter = //	no single Order 
    !m_run.isCreateSingleOrder() && //	Org linked to BP
    runC_BPartner_ID > 0 && //	PO
    !m_docType.isSOTrx();
    MBPartner runBPartner = counter ? new MBPartner(getCtx(), runC_BPartner_ID, get_TrxName()) : null;
    if (!counter || runBPartner == null || runBPartner.get_ID() != runC_BPartner_ID)
        counter = false;
    if (counter)
        log.info("RunBP=" + runBPartner + " - " + m_docType);
    log.info("Single=" + m_run.isCreateSingleOrder() + " - " + m_docType + ",SO=" + m_docType.isSOTrx());
    log.fine("Counter=" + counter + ",C_BPartner_ID=" + runC_BPartner_ID + "," + runBPartner);
    //
    MBPartner bp = null;
    MDDOrder singleOrder = null;
    MProduct product = null;
    MWarehouse m_source = null;
    MLocator m_locator = null;
    MWarehouse m_target = null;
    MLocator m_locator_to = null;
    MWarehouse[] ws = null;
    MOrgInfo oi_source = MOrgInfo.get(getCtx(), m_run.getAD_Org_ID(), get_TrxName());
    m_source = MWarehouse.get(getCtx(), oi_source.getM_Warehouse_ID());
    if (m_source == null)
        throw new AdempiereException("Do not exist Defautl Warehouse Source");
    m_locator = MLocator.getDefault(m_source);
    //get the warehouse in transit
    ws = MWarehouse.getInTransitForOrg(getCtx(), m_source.getAD_Org_ID());
    if (ws == null)
        throw new AdempiereException("Warehouse Intransit do not found");
    //	Consolidated Single Order 
    if (m_run.isCreateSingleOrder()) {
        bp = new MBPartner(getCtx(), m_run.getC_BPartner_ID(), get_TrxName());
        if (bp.get_ID() == 0)
            throw new IllegalArgumentException("Business Partner not found - C_BPartner_ID=" + m_run.getC_BPartner_ID());
        //
        if (!p_IsTest) {
            singleOrder = new MDDOrder(getCtx(), 0, get_TrxName());
            singleOrder.setC_DocType_ID(m_docType.getC_DocType_ID());
            singleOrder.setIsSOTrx(m_docType.isSOTrx());
            singleOrder.setBPartner(bp);
            if (m_run.getC_BPartner_Location_ID() != 0)
                singleOrder.setC_BPartner_Location_ID(m_run.getC_BPartner_Location_ID());
            singleOrder.setDateOrdered(m_DateOrdered);
            singleOrder.setDatePromised(p_DatePromised);
            singleOrder.setM_Warehouse_ID(ws[0].getM_Warehouse_ID());
            if (!singleOrder.save()) {
                log.log(Level.SEVERE, "Order not saved");
                return false;
            }
            m_counter++;
        }
    }
    int lastC_BPartner_ID = 0;
    int lastC_BPartner_Location_ID = 0;
    MDDOrder order = null;
    //	For all lines
    for (int i = 0; i < m_details.length; i++) {
        MDistributionRunDetail detail = m_details[i];
        //	Create Order Header
        if (m_run.isCreateSingleOrder())
            order = singleOrder;
        else //	New Business Partner
        if (lastC_BPartner_ID != detail.getC_BPartner_ID() || lastC_BPartner_Location_ID != detail.getC_BPartner_Location_ID()) {
            //	finish order
            order = null;
        }
        lastC_BPartner_ID = detail.getC_BPartner_ID();
        lastC_BPartner_Location_ID = detail.getC_BPartner_Location_ID();
        bp = new MBPartner(getCtx(), detail.getC_BPartner_ID(), get_TrxName());
        MOrgInfo oi_target = MOrgInfo.get(getCtx(), bp.getAD_OrgBP_ID_Int(), get_TrxName());
        m_target = MWarehouse.get(getCtx(), oi_target.getM_Warehouse_ID());
        if (m_target == null)
            throw new AdempiereException("Do not exist Default Warehouse Target");
        m_locator_to = MLocator.getDefault(m_target);
        if (m_locator == null || m_locator_to == null) {
            throw new AdempiereException("Do not exist default Locator for Warehouses");
        }
        if (p_ConsolidateDocument) {
            String whereClause = "DocStatus IN ('DR','IN') AND AD_Org_ID=" + bp.getAD_OrgBP_ID_Int() + " AND " + MDDOrder.COLUMNNAME_C_BPartner_ID + "=? AND " + MDDOrder.COLUMNNAME_M_Warehouse_ID + "=?  AND " + MDDOrder.COLUMNNAME_DatePromised + "<=? ";
            order = new Query(getCtx(), MDDOrder.Table_Name, whereClause, get_TrxName()).setParameters(new Object[] { lastC_BPartner_ID, ws[0].getM_Warehouse_ID(), p_DatePromised }).setOrderBy(MDDOrder.COLUMNNAME_DatePromised + " DESC").first();
        }
        //	New Order
        if (order == null) {
            if (!p_IsTest) {
                order = new MDDOrder(getCtx(), 0, get_TrxName());
                order.setAD_Org_ID(bp.getAD_OrgBP_ID_Int());
                order.setC_DocType_ID(m_docType.getC_DocType_ID());
                order.setIsSOTrx(m_docType.isSOTrx());
                //	Counter Doc
                if (counter && bp.getAD_OrgBP_ID_Int() > 0) {
                    log.fine("Counter - From_BPOrg=" + bp.getAD_OrgBP_ID_Int() + "-" + bp + ", To_BP=" + runBPartner);
                    order.setAD_Org_ID(bp.getAD_OrgBP_ID_Int());
                    if (ws[0].getM_Warehouse_ID() > 0)
                        order.setM_Warehouse_ID(ws[0].getM_Warehouse_ID());
                    order.setBPartner(runBPartner);
                } else //	normal
                {
                    log.fine("From_Org=" + runAD_Org_ID + ", To_BP=" + bp);
                    order.setAD_Org_ID(bp.getAD_OrgBP_ID_Int());
                    order.setBPartner(bp);
                    if (detail.getC_BPartner_Location_ID() != 0)
                        order.setC_BPartner_Location_ID(detail.getC_BPartner_Location_ID());
                }
                order.setM_Warehouse_ID(ws[0].getM_Warehouse_ID());
                order.setDateOrdered(m_DateOrdered);
                order.setDatePromised(p_DatePromised);
                order.setIsInDispute(false);
                order.setIsInTransit(false);
                if (!order.save()) {
                    log.log(Level.SEVERE, "Order not saved");
                    return false;
                }
            }
        }
        //	Line
        if (product == null || product.getM_Product_ID() != detail.getM_Product_ID())
            product = MProduct.get(getCtx(), detail.getM_Product_ID());
        if (p_IsTest) {
            addLog(0, null, detail.getActualAllocation(), bp.getName() + " - " + product.getName());
            continue;
        }
        if (p_ConsolidateDocument) {
            String sql = "SELECT DD_OrderLine_ID FROM DD_OrderLine ol INNER JOIN DD_Order o ON (o.DD_Order_ID=ol.DD_Order_ID) WHERE o.DocStatus IN ('DR','IN') AND o.C_BPartner_ID = ? AND M_Product_ID=? AND  ol.M_Locator_ID=?  AND ol.DatePromised <= ?";
            int DD_OrderLine_ID = DB.getSQLValueEx(get_TrxName(), sql, new Object[] { detail.getC_BPartner_ID(), product.getM_Product_ID(), m_locator.getM_Locator_ID(), p_DatePromised });
            if (DD_OrderLine_ID <= 0) {
                MDDOrderLine line = new MDDOrderLine(order);
                line.setAD_Org_ID(bp.getAD_OrgBP_ID_Int());
                line.setM_Locator_ID(m_locator.getM_Locator_ID());
                line.setM_LocatorTo_ID(m_locator_to.getM_Locator_ID());
                line.setIsInvoiced(false);
                line.setProduct(product);
                BigDecimal QtyAllocation = detail.getActualAllocation();
                if (QtyAllocation == null)
                    QtyAllocation = Env.ZERO;
                line.setQty(QtyAllocation);
                line.setQtyEntered(QtyAllocation);
                //line.setTargetQty(detail.getActualAllocation());
                line.setTargetQty(Env.ZERO);
                String Description = "";
                if (m_run.getName() != null)
                    Description = Description.concat(m_run.getName());
                line.setDescription(Description + " " + Msg.translate(getCtx(), "Qty") + " = " + QtyAllocation + " ");
                //line.setConfirmedQty(QtyAllocation);
                line.saveEx();
            } else {
                MDDOrderLine line = new MDDOrderLine(getCtx(), DD_OrderLine_ID, get_TrxName());
                BigDecimal QtyAllocation = detail.getActualAllocation();
                if (QtyAllocation == null)
                    QtyAllocation = Env.ZERO;
                String Description = line.getDescription();
                if (Description == null)
                    Description = "";
                if (m_run.getName() != null)
                    Description = Description.concat(m_run.getName());
                line.setDescription(Description + " " + Msg.translate(getCtx(), "Qty") + " = " + QtyAllocation + " ");
                line.setQty(line.getQtyEntered().add(QtyAllocation));
                //line.setConfirmedQty(line.getConfirmedQty().add( QtyAllocation));
                line.saveEx();
            }
        } else {
            //	Create Order Line
            MDDOrderLine line = new MDDOrderLine(order);
            if (counter && bp.getAD_OrgBP_ID_Int() > 0)
                //	don't overwrite counter doc
                ;
            /*else	//	normal - optionally overwrite
				{
					line.setC_BPartner_ID(detail.getC_BPartner_ID());
					if (detail.getC_BPartner_Location_ID() != 0)
						line.setC_BPartner_Location_ID(detail.getC_BPartner_Location_ID());
				}*/
            //
            line.setAD_Org_ID(bp.getAD_OrgBP_ID_Int());
            line.setM_Locator_ID(m_locator.getM_Locator_ID());
            line.setM_LocatorTo_ID(m_locator_to.getM_Locator_ID());
            line.setIsInvoiced(false);
            line.setProduct(product);
            line.setQty(detail.getActualAllocation());
            line.setQtyEntered(detail.getActualAllocation());
            //line.setTargetQty(detail.getActualAllocation());
            line.setTargetQty(Env.ZERO);
            //line.setConfirmedQty(detail.getActualAllocation());
            String Description = "";
            if (m_run.getName() != null)
                Description = Description.concat(m_run.getName());
            line.setDescription(Description + " " + Msg.translate(getCtx(), "Qty") + " = " + detail.getActualAllocation() + " ");
            line.saveEx();
        }
        addLog(0, null, detail.getActualAllocation(), order.getDocumentNo() + ": " + bp.getName() + " - " + product.getName());
    }
    //	finish order
    order = null;
    return true;
}
Also used : MProduct(org.compiere.model.MProduct) Query(org.compiere.model.Query) PreparedStatement(java.sql.PreparedStatement) MBPartner(org.compiere.model.MBPartner) MWarehouse(org.compiere.model.MWarehouse) AdempiereException(org.adempiere.exceptions.AdempiereException) BigDecimal(java.math.BigDecimal) MDistributionRunDetail(org.compiere.model.MDistributionRunDetail) MDDOrderLine(org.eevolution.model.MDDOrderLine) MOrg(org.compiere.model.MOrg) AdempiereException(org.adempiere.exceptions.AdempiereException) MLocator(org.compiere.model.MLocator) MOrgInfo(org.compiere.model.MOrgInfo) ResultSet(java.sql.ResultSet) MDDOrder(org.eevolution.model.MDDOrder)

Example 12 with AdempiereException

use of org.adempiere.exceptions.AdempiereException in project adempiere by adempiere.

the class CalculateReplenishPlan method setConfirmProductQty.

/**
	 * Product wise Get confirmed Qty. If Product is BOM then Production else
	 * from PO.
	 * 
	 * @param mrp
	 */
private void setConfirmProductQty(MiniMRPProduct mrp) {
    int productID = mrp.getM_Product_ID();
    boolean isBOM = mrp.isBOM();
    Map<Date, BigDecimal> mapConfirmQty = new TreeMap<Date, BigDecimal>();
    String sql = (isBOM ? SQL_PRODUCTWISE_CONFIRM_PRODUCTION_QTY : SQL_PRODUCTWISE_CONFIRM_PO_RQ_QTY);
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
        pstmt = DB.prepareStatement(sql, trx);
        pstmt.setInt(1, productID);
        pstmt.setTimestamp(2, dateFrom);
        pstmt.setTimestamp(3, dateTo);
        if (isBOM)
            pstmt.setInt(4, docType_PlannedOrder);
        else {
            pstmt.setInt(4, productID);
            pstmt.setTimestamp(5, dateFrom);
            pstmt.setTimestamp(6, dateTo);
            pstmt.setInt(7, AD_Client_ID);
            pstmt.setInt(8, docType_MRPRequisition);
        }
        rs = pstmt.executeQuery();
        while (rs.next()) {
            Date datePromised = rs.getDate("DatePromised");
            BigDecimal qty = rs.getBigDecimal("Qty");
            if (mapConfirmQty.containsKey(datePromised))
                mapConfirmQty.put(datePromised, mapConfirmQty.get(datePromised).add(qty));
            else
                mapConfirmQty.put(datePromised, qty);
            if (mrp.isBOM()) {
                PreparedStatement pstatement = null;
                ResultSet rset = null;
                try {
                    pstatement = DB.prepareStatement(SQL_GET_PRODUCTIONLINE_INFO, trx);
                    pstatement.setInt(1, rs.getInt("M_Production_ID"));
                    rset = pstatement.executeQuery();
                    while (rset.next()) {
                        setQtyAsDemand(rset.getInt("M_Product_ID"), rset.getBigDecimal("QtyUsed"), rset.getTimestamp("DatePromised"));
                    }
                } catch (SQLException e) {
                    throw new AdempiereException("Could not process, Retrieve Confirm production line info.", e);
                } finally {
                    DB.close(rset, pstatement);
                    rset = null;
                    pstatement = null;
                }
            }
        }
    } catch (SQLException e) {
        throw new AdempiereException("Could not process, Retrieve weekly confirm production qty of Product:" + mrp.getName(), e);
    } finally {
        DB.close(rs, pstmt);
        rs = null;
        pstmt = null;
    }
    mrp.setMapConfirmProductQty(mapConfirmQty);
}
Also used : SQLException(java.sql.SQLException) AdempiereException(org.adempiere.exceptions.AdempiereException) ResultSet(java.sql.ResultSet) PreparedStatement(java.sql.PreparedStatement) TreeMap(java.util.TreeMap) Date(java.util.Date) BigDecimal(java.math.BigDecimal)

Example 13 with AdempiereException

use of org.adempiere.exceptions.AdempiereException in project adempiere by adempiere.

the class CalculateReplenishPlan method doRunProductsSO.

/**
	 * @param miniMrpProducts
	 * @param productIds
	 * @param productSO
	 */
@SuppressWarnings("resource")
private void doRunProductsSO(Map<Integer, MiniMRPProduct> miniMrpProducts, Set<Integer> productIds) {
    String sql = getQueryForProductSO();
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    int paramCount = 1;
    try {
        pstmt = DB.prepareStatement(sql, trx);
        pstmt.setTimestamp(paramCount++, dateFrom);
        pstmt.setTimestamp(paramCount++, dateFrom);
        pstmt.setTimestamp(paramCount++, dateTo);
        pstmt.setInt(paramCount++, AD_Client_ID);
        // Productids
        pstmt.setArray(paramCount++, getSqlArray(productIds.toArray(), "numeric", DB.getConnectionRW(false)));
        rs = pstmt.executeQuery();
        while (rs.next()) {
            int mProductID = rs.getInt("m_product_id");
            int mOrderID = rs.getInt("c_order_id");
            BigDecimal orderQty = rs.getBigDecimal("orderedqty");
            int weekPromised = rs.getInt("weekordered");
            BigDecimal qty = rs.getBigDecimal("orderedqty");
            Date date = rs.getDate("datepromised");
            if (miniMrpProducts.containsKey(mProductID)) {
                MiniMRPProduct mrpProduct = miniMrpProducts.get(mProductID);
                if (mrpProduct.isPhantom())
                    continue;
                if (!mrpProduct.isPhantom)
                    setQtyAsDemand(mProductID, qty, date);
                mrpProduct.explodeDemand(mOrderID, orderQty, weekPromised, miniMrpProducts);
            } else {
                log.log(Level.SEVERE, "Error in miniMrpProducts setup.");
                getProcessInfo().setError(true);
                getProcessInfo().addLog(new ProcessInfoLog(getProcessInfo().getAD_Process_ID(), new Timestamp(System.currentTimeMillis()), null, "Error in miniMrpProducts setup.>> "));
                throw new AdempiereException("Error in miniMrpProducts setup.");
            }
        }
    } catch (Exception e) {
        log.log(Level.SEVERE, sql.toString(), e);
        getProcessInfo().setError(true);
        getProcessInfo().addLog(new ProcessInfoLog(getProcessInfo().getAD_Process_ID(), new Timestamp(System.currentTimeMillis()), null, "Failed to fetch products for mini MRP >> " + e.getMessage()));
        throw new AdempiereException(e);
    } finally {
        DB.close(rs, pstmt);
        rs = null;
        pstmt = null;
    }
}
Also used : AdempiereException(org.adempiere.exceptions.AdempiereException) ResultSet(java.sql.ResultSet) PreparedStatement(java.sql.PreparedStatement) ProcessInfoLog(org.compiere.process.ProcessInfoLog) Timestamp(java.sql.Timestamp) BigDecimal(java.math.BigDecimal) Date(java.util.Date) SQLException(java.sql.SQLException) AdempiereException(org.adempiere.exceptions.AdempiereException)

Example 14 with AdempiereException

use of org.adempiere.exceptions.AdempiereException in project adempiere by adempiere.

the class CalculateReplenishPlan method runProcessCalculatePlannedQty.

private void runProcessCalculatePlannedQty(Map<Integer, MiniMRPProduct> miniMrpProducts) {
    for (Date date : mapDemand.keySet()) {
        Map<Integer, BigDecimal> mapOrderQty = mapDemand.get(date);
        for (Integer productID : mapOrderQty.keySet()) {
            MProduct product = new MProduct(getCtx(), productID, get_TrxName());
            if (!product.isStocked())
                return;
            BigDecimal demandQty = mapOrderQty.get(productID);
            if (demandQty.compareTo(Env.ZERO) != 0) {
                MiniMRPProduct mrp = miniMrpProducts.get(productID);
                if (mrp == null) {
                    MProduct p = MProduct.get(ctx, productID);
                    String error = "Please check Product=" + p.getValue() + " replenishment parameters may not be setup properly.";
                    log.severe(error);
                    throw new AdempiereException(error);
                }
                Integer nonPhantomProduct = (mrp.isPhantom() && mrp.isBOM() ? 0 : productID);
                // (MRP,DateOfDemand,PID,DQty,Level,NonPhontomPID)
                createPlannedQtyMap(miniMrpProducts, date, productID, demandQty, 0, nonPhantomProduct);
            }
        }
    }
}
Also used : MProduct(org.compiere.model.MProduct) AdempiereException(org.adempiere.exceptions.AdempiereException) Date(java.util.Date) BigDecimal(java.math.BigDecimal)

Example 15 with AdempiereException

use of org.adempiere.exceptions.AdempiereException in project adempiere by adempiere.

the class CalculateReplenishPlan method processBOMLines.

/**
	 * Process of BOM Product lines
	 * 
	 * @author Sachin Bhimani
	 * @param miniMrpProducts
	 * @param productIds
	 * @param M_Product_ID
	 */
public void processBOMLines(Map<Integer, MiniMRPProduct> miniMrpProducts, Set<Integer> productIds, int M_Product_ID) {
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
        if (M_Product_ID > 0) {
            MProduct product = new MProduct(getCtx(), M_Product_ID, get_TrxName());
            if (!product.isStocked())
                return;
            //MPPProductBOM bom = MPPProductBOM.getDefault(finishedProduct, get_TrxName());
            pstmt = DB.prepareStatement(SQL_GET_BOMLINE_FOR_PROCESS, trx);
            pstmt.setInt(1, M_Product_ID);
            pstmt.setInt(2, AD_Client_ID);
            pstmt.setInt(3, M_WarehouseID);
            rs = pstmt.executeQuery();
            while (rs.next()) {
                int mProductID = rs.getInt(1);
                BigDecimal qtyBom = rs.getBigDecimal(2);
                MiniMRPProduct parentProduct = miniMrpProducts.get(M_Product_ID);
                parentProduct.addMatireals(mProductID, qtyBom);
                MiniMRPProduct miniMrpProduct = null;
                // If material is already exploded.
                if (miniMrpProducts.containsKey(mProductID)) {
                    miniMrpProduct = miniMrpProducts.get(mProductID);
                    explodeRequiredMaterials(miniMrpProduct, parentProduct, qtyBom);
                } else {
                    miniMrpProduct = addProductToProcess(mProductID, rs, miniMrpProducts, productIds);
                    if (miniMrpProduct.isBOM() && miniMrpProduct.isVerified()) {
                        processBOMLines(miniMrpProducts, productIds, mProductID);
                        explodeRequiredMaterials(miniMrpProduct, parentProduct, qtyBom);
                    }
                }
            }
        }
    } catch (Exception e) {
        log.log(Level.SEVERE, SQL_GET_BOMLINE_FOR_PROCESS, e);
        getProcessInfo().setError(true);
        getProcessInfo().addLog(new ProcessInfoLog(getProcessInfo().getAD_Process_ID(), new Timestamp(System.currentTimeMillis()), null, "Failed to process BOMLine : >> " + e.getMessage()));
        throw new AdempiereException(e);
    } finally {
        DB.close(rs, pstmt);
        rs = null;
        pstmt = null;
    }
}
Also used : MProduct(org.compiere.model.MProduct) AdempiereException(org.adempiere.exceptions.AdempiereException) ResultSet(java.sql.ResultSet) PreparedStatement(java.sql.PreparedStatement) ProcessInfoLog(org.compiere.process.ProcessInfoLog) Timestamp(java.sql.Timestamp) BigDecimal(java.math.BigDecimal) SQLException(java.sql.SQLException) AdempiereException(org.adempiere.exceptions.AdempiereException)

Aggregations

AdempiereException (org.adempiere.exceptions.AdempiereException)216 BigDecimal (java.math.BigDecimal)64 SQLException (java.sql.SQLException)42 ResultSet (java.sql.ResultSet)29 PreparedStatement (java.sql.PreparedStatement)28 MProduct (org.compiere.model.MProduct)28 ArrayList (java.util.ArrayList)27 Timestamp (java.sql.Timestamp)23 Query (org.compiere.model.Query)19 PO (org.compiere.model.PO)16 MBPartner (org.compiere.model.MBPartner)14 Properties (java.util.Properties)13 File (java.io.File)12 List (java.util.List)12 ProcessInfo (org.compiere.process.ProcessInfo)12 Arrays (java.util.Arrays)10 Env (org.compiere.util.Env)10 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)9 MMovement (org.compiere.model.MMovement)9 Date (java.util.Date)8