Search in sources :

Example 26 with MWarehouse

use of org.compiere.model.MWarehouse in project adempiere by adempiere.

the class ReplenishReport method createDO.

//	Create Inventory Movements
/**
	 * 	Create Distribution Order
	 */
private void createDO() throws Exception {
    int noMoves = 0;
    String info = "";
    //
    MClient client = null;
    MDDOrder order = null;
    int M_Warehouse_ID = 0;
    int M_WarehouseSource_ID = 0;
    MWarehouse whSource = null;
    MWarehouse wh = null;
    X_T_Replenish[] replenishs = getReplenishDO("M_WarehouseSource_ID IS NOT NULL");
    for (X_T_Replenish replenish : replenishs) {
        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 (order == 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();
            order = new MDDOrder(getCtx(), 0, get_TrxName());
            order.setC_DocType_ID(p_C_DocType_ID);
            order.setDescription(Msg.getMsg(getCtx(), "Replenishment") + ": " + whSource.getName() + "->" + wh.getName());
            //	Set Org
            order.setAD_Org_ID(whSource.getAD_Org_ID());
            // Set Org Trx
            MOrg orgTrx = MOrg.get(getCtx(), wh.getAD_Org_ID());
            order.setAD_OrgTrx_ID(orgTrx.getAD_Org_ID());
            int C_BPartner_ID = orgTrx.getLinkedC_BPartner_ID(get_TrxName());
            if (C_BPartner_ID == 0)
                throw new AdempiereUserError(Msg.translate(getCtx(), "C_BPartner_ID") + " @FillMandatory@ ");
            MBPartner bp = new MBPartner(getCtx(), C_BPartner_ID, get_TrxName());
            // Set BPartner Link to Org
            order.setBPartner(bp);
            order.setDateOrdered(new Timestamp(System.currentTimeMillis()));
            //order.setDatePromised(DatePromised);
            order.setDeliveryRule(MDDOrder.DELIVERYRULE_Availability);
            order.setDeliveryViaRule(MDDOrder.DELIVERYVIARULE_Delivery);
            order.setPriorityRule(MDDOrder.PRIORITYRULE_Medium);
            order.setIsInDispute(false);
            order.setIsApproved(false);
            order.setIsDropShip(false);
            order.setIsDelivered(false);
            order.setIsInTransit(false);
            order.setIsPrinted(false);
            order.setIsSelected(false);
            order.setIsSOTrx(false);
            // Warehouse in Transit
            MWarehouse[] whsInTransit = MWarehouse.getForOrg(getCtx(), whSource.getAD_Org_ID());
            for (MWarehouse whInTransit : whsInTransit) {
                if (whInTransit.isInTransit())
                    order.setM_Warehouse_ID(whInTransit.getM_Warehouse_ID());
            }
            if (order.getM_Warehouse_ID() == 0)
                throw new AdempiereUserError("Warehouse inTransit is @FillMandatory@ ");
            if (!order.save())
                return;
            log.fine(order.toString());
            noMoves++;
            info += " - " + order.getDocumentNo();
        }
        //	To
        int M_LocatorTo_ID = wh.getDefaultLocator().getM_Locator_ID();
        int M_Locator_ID = whSource.getDefaultLocator().getM_Locator_ID();
        if (M_LocatorTo_ID == 0 || M_Locator_ID == 0)
            throw new AdempiereUserError(Msg.translate(getCtx(), "M_Locator_ID") + " @FillMandatory@ ");
        //	From: Look-up Storage
        /*MProduct product = MProduct.get(getCtx(), replenish.getM_Product_ID());
			MProductCategory pc = MProductCategory.get(getCtx(), product.getM_Product_Category_ID());
			String MMPolicy = pc.getMMPolicy();
			if (MMPolicy == null || MMPolicy.length() == 0)
				MMPolicy = client.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();
				//
				MDDOrderLine line = new MDDOrderLine(order);
				line.setM_Product_ID(replenish.getM_Product_ID());
				line.setQtyEntered(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.setIsInvoiced(false);
				line.saveEx();
				//
				target = target.subtract(moveQty);
				if (target.signum() == 0)
					break;
			}*/
        MDDOrderLine line = new MDDOrderLine(order);
        line.setM_Product_ID(replenish.getM_Product_ID());
        line.setQty(replenish.getQtyToOrder());
        if (replenish.getQtyToOrder().compareTo(replenish.getQtyToOrder()) != 0)
            line.setDescription("Total: " + replenish.getQtyToOrder());
        //	from
        line.setM_Locator_ID(M_Locator_ID);
        line.setM_AttributeSetInstance_ID(0);
        //	to
        line.setM_LocatorTo_ID(M_LocatorTo_ID);
        line.setM_AttributeSetInstanceTo_ID(0);
        line.setIsInvoiced(false);
        line.saveEx();
    }
    if (replenishs.length == 0) {
        m_info = "No Source Warehouse";
        log.warning(m_info);
    } else {
        m_info = "#" + noMoves + info;
        log.info(m_info);
    }
}
Also used : AdempiereUserError(org.compiere.util.AdempiereUserError) MBPartner(org.compiere.model.MBPartner) Timestamp(java.sql.Timestamp) MWarehouse(org.compiere.model.MWarehouse) MClient(org.compiere.model.MClient) MDDOrderLine(org.eevolution.model.MDDOrderLine) MOrg(org.compiere.model.MOrg) X_T_Replenish(org.compiere.model.X_T_Replenish) MDDOrder(org.eevolution.model.MDDOrder)

Example 27 with MWarehouse

use of org.compiere.model.MWarehouse in project adempiere by adempiere.

the class ReplenishReport method createRequisition.

//	createPO
/**
	 * 	Create Requisition
	 */
private void createRequisition() {
    int noReqs = 0;
    String info = "";
    //
    MRequisition requisition = null;
    MWarehouse wh = null;
    X_T_Replenish[] replenishs = getReplenish("M_WarehouseSource_ID IS NULL");
    for (int i = 0; i < replenishs.length; i++) {
        X_T_Replenish replenish = replenishs[i];
        if (wh == null || wh.getM_Warehouse_ID() != replenish.getM_Warehouse_ID())
            wh = MWarehouse.get(getCtx(), replenish.getM_Warehouse_ID());
        //
        if (requisition == null || requisition.getM_Warehouse_ID() != replenish.getM_Warehouse_ID()) {
            requisition = new MRequisition(getCtx(), 0, get_TrxName());
            requisition.setAD_User_ID(getAD_User_ID());
            requisition.setC_DocType_ID(p_C_DocType_ID);
            requisition.setDescription(Msg.getMsg(getCtx(), "Replenishment"));
            //	Set Org/WH
            requisition.setAD_Org_ID(wh.getAD_Org_ID());
            requisition.setM_Warehouse_ID(wh.getM_Warehouse_ID());
            if (!requisition.save())
                return;
            log.fine(requisition.toString());
            noReqs++;
            info += " - " + requisition.getDocumentNo();
        }
        //
        MRequisitionLine line = new MRequisitionLine(requisition);
        line.setM_Product_ID(replenish.getM_Product_ID());
        line.setC_BPartner_ID(replenish.getC_BPartner_ID());
        line.setQty(replenish.getQtyToOrder());
        line.setPrice();
        line.saveEx();
    }
    m_info = "#" + noReqs + info;
    log.info(m_info);
}
Also used : X_T_Replenish(org.compiere.model.X_T_Replenish) MRequisitionLine(org.compiere.model.MRequisitionLine) MRequisition(org.compiere.model.MRequisition) MWarehouse(org.compiere.model.MWarehouse)

Example 28 with MWarehouse

use of org.compiere.model.MWarehouse in project adempiere by adempiere.

the class InventoryUtil method getCreateLocator.

/**
	 * Helper Method : Create Locator
	 */
public static MLocator getCreateLocator(int AD_Org_ID, String whValue, String value) {
    if (AD_Org_ID <= 0)
        AD_Org_ID = getFirst_Org_ID();
    MWarehouse wh = getCreateWarehouse(AD_Org_ID, whValue);
    MLocator locator = null;
    for (MLocator loc : wh.getLocators(false)) {
        if (loc.getValue().equals(value)) {
            locator = loc;
            break;
        }
    }
    if (locator == null) {
        locator = new MLocator(wh, value);
        locator.setXYZ(value, value, value);
    }
    if (wh.getLocators(false).length == 0) {
        locator.setIsDefault(true);
    }
    locator.saveEx();
    //
    return locator;
}
Also used : MLocator(org.compiere.model.MLocator) MWarehouse(org.compiere.model.MWarehouse)

Example 29 with MWarehouse

use of org.compiere.model.MWarehouse in project adempiere by adempiere.

the class InventoryUtil method getCreateWarehouse.

/**
	 * Helper Method : Create Warehouse
	 */
public static MWarehouse getCreateWarehouse(int AD_Org_ID, String value) {
    if (AD_Org_ID <= 0)
        AD_Org_ID = getFirst_Org_ID();
    Properties ctx = Env.getCtx();
    String whereClause = "AD_Org_ID=? AND Value=?";
    MWarehouse wh = new Query(ctx, MWarehouse.Table_Name, whereClause, null).setParameters(new Object[] { AD_Org_ID, value }).setClient_ID().firstOnly();
    if (wh != null)
        return wh;
    wh = new MWarehouse(ctx, 0, null);
    wh.setAD_Org_ID(AD_Org_ID);
    wh.setValue(value);
    wh.setName(value);
    MLocation loc = new MLocation(ctx, 0, null);
    loc.saveEx();
    wh.setC_Location_ID(loc.get_ID());
    wh.saveEx();
    return wh;
}
Also used : Query(org.compiere.model.Query) Properties(java.util.Properties) MLocation(org.compiere.model.MLocation) MWarehouse(org.compiere.model.MWarehouse)

Example 30 with MWarehouse

use of org.compiere.model.MWarehouse in project adempiere by adempiere.

the class MRPUtil method getCreateWarehouse.

/**
	 * Helper Method : Create Warehouse
	 */
public static I_M_Warehouse getCreateWarehouse(int AD_Org_ID, String value) {
    Properties ctx = Env.getCtx();
    int AD_Client_ID = Env.getAD_Client_ID(ctx);
    String whereClause = "AD_Client_ID=? AND AD_Org_ID=? AND Value=?";
    MWarehouse wh = new Query(ctx, MWarehouse.Table_Name, whereClause, null).setParameters(new Object[] { AD_Client_ID, AD_Org_ID, value }).firstOnly();
    if (wh != null)
        return wh;
    wh = new MWarehouse(ctx, 0, null);
    wh.setAD_Org_ID(AD_Org_ID);
    wh.setValue(value);
    wh.setName(value);
    MLocation loc = new MLocation(ctx, 0, null);
    loc.saveEx();
    wh.setC_Location_ID(loc.get_ID());
    wh.saveEx();
    return wh;
}
Also used : Query(org.compiere.model.Query) Properties(java.util.Properties) MLocation(org.compiere.model.MLocation) MWarehouse(org.compiere.model.MWarehouse)

Aggregations

MWarehouse (org.compiere.model.MWarehouse)39 MLocator (org.compiere.model.MLocator)12 BigDecimal (java.math.BigDecimal)9 X_T_Replenish (org.compiere.model.X_T_Replenish)9 MBPartner (org.compiere.model.MBPartner)8 MOrg (org.compiere.model.MOrg)8 Query (org.compiere.model.Query)8 MProduct (org.compiere.model.MProduct)6 MClient (org.compiere.model.MClient)5 AdempiereUserError (org.compiere.util.AdempiereUserError)5 MDDOrder (org.eevolution.model.MDDOrder)5 MDDOrderLine (org.eevolution.model.MDDOrderLine)5 MOrder (org.compiere.model.MOrder)4 MStorage (org.compiere.model.MStorage)4 Properties (java.util.Properties)3 AdempiereException (org.adempiere.exceptions.AdempiereException)3 MLocation (org.compiere.model.MLocation)3 MMovement (org.compiere.model.MMovement)3 MMovementLine (org.compiere.model.MMovementLine)3 MOrderLine (org.compiere.model.MOrderLine)3