@Override public void addQtyReserved( final Properties ctx, final I_M_Locator locator, final int productId, final int attributeSetInstanceId, final BigDecimal diffQtyReserved, final String trxName) { final boolean ok = MStorage.add( ctx, locator.getM_Warehouse_ID(), locator.getM_Locator_ID(), productId, // M_Product_ID, attributeSetInstanceId, // M_AttributeSetInstance_ID, attributeSetInstanceId, // reservationAttributeSetInstance_ID, BigDecimal.ZERO, // diffQtyOnHand, diffQtyReserved, // diffQtyReserved, BigDecimal.ZERO, // diffQtyOrdered trxName); if (!ok) { throw new AdempiereException(); } }
/** * Add Product * * @param element panel * @param product product */ private void addProduct(CPanel element, MProduct product) { Insets ii = new Insets(2, 4, 2, 4); int M_Product_ID = product.getM_Product_ID(); CPanel pe = new CPanel(); pe.setBorder(BorderFactory.createLineBorder(Color.BLUE, 1)); pe.setLayout(new GridBagLayout()); // Product Value - Price pe.add( new JLabel(product.getValue()), new GridBagConstraints( 0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, ii, 0, 0)); String formatted = ""; if (m_M_PriceList_Version_ID != 0) { MProductPrice pp = MProductPrice.get(Env.getCtx(), m_M_PriceList_Version_ID, M_Product_ID, null); if (pp != null) { BigDecimal price = pp.getPriceStd(); formatted = m_price.format(price); } else formatted = "-"; } pe.add( new JLabel(formatted, JLabel.RIGHT), new GridBagConstraints( 1, 0, 1, 1, .5, 0, GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, ii, 0, 0)); // Product Name - Qty pe.add( new JLabel(product.getName()), new GridBagConstraints( 0, 1, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, ii, 0, 0)); formatted = ""; if (m_M_Warehouse_ID != 0) { BigDecimal qty = MStorage.getQtyAvailable(m_M_Warehouse_ID, M_Product_ID, 0, null); if (qty == null) formatted = "-"; else formatted = m_qty.format(qty); } pe.add( new JLabel(formatted, JLabel.RIGHT), new GridBagConstraints( 1, 1, 1, 1, .5, 0, GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, ii, 0, 0)); // element.add(pe); } // addProduct
/** Create Inventory Movements */ private void createMovements() { int noMoves = 0; String info = ""; // MClient client = null; MMovement move = null; int M_Warehouse_ID = 0; int M_WarehouseSource_ID = 0; MWarehouse whSource = null; MWarehouse wh = null; X_T_Replenish[] replenishs = getReplenish("M_WarehouseSource_ID IS NOT NULL"); for (int i = 0; i < replenishs.length; i++) { X_T_Replenish replenish = replenishs[i]; if (whSource == null || whSource.getM_WarehouseSource_ID() != replenish.getM_WarehouseSource_ID()) whSource = MWarehouse.get(getCtx(), replenish.getM_WarehouseSource_ID()); if (wh == null || wh.getM_Warehouse_ID() != replenish.getM_Warehouse_ID()) wh = MWarehouse.get(getCtx(), replenish.getM_Warehouse_ID()); if (client == null || client.getAD_Client_ID() != whSource.getAD_Client_ID()) client = MClient.get(getCtx(), whSource.getAD_Client_ID()); // if (move == null || M_WarehouseSource_ID != replenish.getM_WarehouseSource_ID() || M_Warehouse_ID != replenish.getM_Warehouse_ID()) { M_WarehouseSource_ID = replenish.getM_WarehouseSource_ID(); M_Warehouse_ID = replenish.getM_Warehouse_ID(); move = new MMovement(getCtx(), 0, get_TrxName()); move.setC_DocType_ID(p_C_DocType_ID); move.setDescription( Msg.getMsg(getCtx(), "Replenishment") + ": " + whSource.getName() + "->" + wh.getName()); // Set Org move.setAD_Org_ID(whSource.getAD_Org_ID()); if (!move.save()) return; log.debug(move.toString()); noMoves++; info += " - " + move.getDocumentNo(); } // To int M_LocatorTo_ID = wh.getDefaultLocator().getM_Locator_ID(); // From: Look-up Storage MProduct product = MProduct.get(getCtx(), replenish.getM_Product_ID()); String MMPolicy = product.getMMPolicy(); MStorage[] storages = MStorage.getWarehouse( getCtx(), whSource.getM_Warehouse_ID(), replenish.getM_Product_ID(), 0, 0, true, null, MClient.MMPOLICY_FiFo.equals(MMPolicy), get_TrxName()); // BigDecimal target = replenish.getQtyToOrder(); for (int j = 0; j < storages.length; j++) { MStorage storage = storages[j]; if (storage.getQtyOnHand().signum() <= 0) continue; BigDecimal moveQty = target; if (storage.getQtyOnHand().compareTo(moveQty) < 0) moveQty = storage.getQtyOnHand(); // MMovementLine line = new MMovementLine(move); line.setM_Product_ID(replenish.getM_Product_ID()); line.setMovementQty(moveQty); if (replenish.getQtyToOrder().compareTo(moveQty) != 0) line.setDescription("Total: " + replenish.getQtyToOrder()); line.setM_Locator_ID(storage.getM_Locator_ID()); // from line.setM_AttributeSetInstance_ID(storage.getM_AttributeSetInstance_ID()); line.setM_LocatorTo_ID(M_LocatorTo_ID); // to line.setM_AttributeSetInstanceTo_ID(storage.getM_AttributeSetInstance_ID()); line.save(); // target = target.subtract(moveQty); if (target.signum() == 0) break; } } if (replenishs.length == 0) { m_info = "No Source Warehouse"; log.warn(m_info); } else { m_info = "#" + noMoves + info; log.info(m_info); } } // createRequisition