コード例 #1
0
 /// <summary>
 /// Eliminate Reserved/Ordered
 /// </summary>
 /// <param name="target">target Storage</param>
 private void EliminateReservation(MStorage target)
 {
     //	Negative Ordered / Reserved Qty
     if (Env.Signum(target.GetQtyReserved()) != 0 || Env.Signum(target.GetQtyOrdered()) != 0)
     {
         int      M_Locator_ID = target.GetM_Locator_ID();
         MStorage storage0     = MStorage.Get(GetCtx(), M_Locator_ID,
                                              target.GetM_Product_ID(), 0, Get_Trx());
         if (storage0 == null)
         {
             MLocator defaultLoc = MLocator.GetDefault(GetCtx(), M_Locator_ID);
             if (M_Locator_ID != defaultLoc.GetM_Locator_ID())
             {
                 M_Locator_ID = defaultLoc.GetM_Locator_ID();
                 storage0     = MStorage.Get(GetCtx(), M_Locator_ID,
                                             target.GetM_Product_ID(), 0, Get_Trx());
             }
         }
         if (storage0 != null)
         {
             Decimal reserved = Env.ZERO;
             Decimal ordered  = Env.ZERO;
             if (Env.Signum(Decimal.Add(target.GetQtyReserved(), storage0.GetQtyReserved())) >= 0)
             {
                 reserved = target.GetQtyReserved();             //	negative
             }
             if (Env.Signum(Decimal.Add(target.GetQtyOrdered(), storage0.GetQtyOrdered())) >= 0)
             {
                 ordered = target.GetQtyOrdered();               //	negative
             }
             //	Eliminate Reservation
             if (Env.Signum(reserved) != 0 || Env.Signum(ordered) != 0)
             {
                 if (MStorage.Add(GetCtx(), target.GetM_Warehouse_ID(), target.GetM_Locator_ID(),
                                  target.GetM_Product_ID(),
                                  target.GetM_AttributeSetInstance_ID(), target.GetM_AttributeSetInstance_ID(),
                                  Env.ZERO, Decimal.Negate(reserved), Decimal.Negate(ordered), Get_Trx()))
                 {
                     if (MStorage.Add(GetCtx(), storage0.GetM_Warehouse_ID(), storage0.GetM_Locator_ID(),
                                      storage0.GetM_Product_ID(),
                                      storage0.GetM_AttributeSetInstance_ID(), storage0.GetM_AttributeSetInstance_ID(),
                                      Env.ZERO, reserved, ordered, Get_Trx()))
                     {
                         log.Info("Reserved=" + reserved + ",Ordered=" + ordered);
                     }
                     else
                     {
                         log.Warning("Failed Storage0 Update");
                     }
                 }
                 else
                 {
                     log.Warning("Failed Target Update");
                 }
             }
         }
     }
 }
コード例 #2
0
        /**
         * Creates a Work Order Transaction header for a given Work Order assumes locator is same locator as on Work Order
         * @param ctx
         * @param VAMFG_M_WorkOrder_ID Work Order
         * @param TxnType valid values are CI (Component Issue), CR (Component Return), RU (Resource Usage)
         * @param trx
         * @return MVAMFGMWrkOdrTransaction on success, null otherwise
         */
        public ViennaAdvantage.Model.MVAMFGMWrkOdrTransaction CreateWOTxn(Ctx ctx, int VAMFG_M_WorkOrder_ID, String TxnType, Trx trx)
        {
            ViennaAdvantage.Model.MVAMFGMWorkOrder wo = new ViennaAdvantage.Model.MVAMFGMWorkOrder(ctx, VAMFG_M_WorkOrder_ID, trx);
            if (wo == null || !wo.GetDocStatus().Equals(ViennaAdvantage.Model.MVAMFGMWorkOrder.DOCSTATUS_InProgress))
            {
                log.Severe("Work Order number not valid for transactions.");
                return(null);
            }

            log.Info("Getting Default Locator of Work Order Warehouse.");
            MLocator loc = MWarehouse.Get(ctx, wo.GetM_Warehouse_ID()).GetDefaultLocator();

            return(createWOTxn(ctx, VAMFG_M_WorkOrder_ID, TxnType, 0, loc.GetM_Locator_ID(), Decimal.Zero, trx));
        }