示例#1
0
        /// <summary>
        /// Check On hand Inventory function follow business rule
        /// </summary>
        /// <param name="eOperation"></param>
        /// <param name="eInoutCls"></param>
        /// <param name="QTY"></param>
        /// <param name="ItemCD"></param>
        /// <param name="LocationCD"></param>
        /// <param name="LotNo"></param>
        /// <param name="strTranID">in case of Update, this value must be sent, the others send null.</param>
        /// <returns></returns>
        public ErrorItem CheckOnhandQty(DataDefine.eOperationClass eOperation, DataDefine.eIN_OUT_CLASS eInoutCls, NZDecimal QTY, NZString ItemCD, NZString LocationCD, NZString LotNo, NZString strTranID)
        {
            // FIRST CHECK FOR LOCATION IF IT ALLOW NEGATIVE STOCK
            DealingBIZ bizLoc = new DealingBIZ();
            DealingDTO dtoLoc = bizLoc.LoadLocation(LocationCD);

            if (!dtoLoc.ALLOW_NEGATIVE.IsNull && dtoLoc.ALLOW_NEGATIVE.StrongValue == DataDefine.Convert2ClassCode(DataDefine.eALLOW_NEGATIVE.Yes))
            {
                // IF THE LOCATION IS ALLOW FOR NEGATIVE THEN NOT CHECK ONHAND
                return(null);
            }

            //Operation Class
            switch (eOperation)
            {
            case DataDefine.eOperationClass.Add:
                //Do notting
                break;

            case DataDefine.eOperationClass.Update:
                //Find Diff Qty
                InventoryTransBIZ       biz = new InventoryTransBIZ();
                InventoryTransactionDTO dto = biz.LoadByTransactionID(strTranID);
                if (dto != null)
                {
                    QTY = (QTY - dto.QTY).ToNZDecimal();
                }
                break;

            case DataDefine.eOperationClass.Delete:
                //Delete Inverse Qty
                QTY = (-1 * QTY.StrongValue).ToNZDecimal();
                break;
            }

            //inout Class
            if (eInoutCls == DataDefine.eIN_OUT_CLASS.Out)
            {
                QTY = (-1 * QTY.StrongValue).ToNZDecimal();
            }

            // CHECK FOR ONHAND WITH ACTUAL INVENTORY ONHAND
            InventoryBIZ        bizInv             = new InventoryBIZ();
            ActualOnhandViewDTO dtoActOnhand       = bizInv.LoadActualInventoryOnHand(ItemCD, LocationCD, LotNo);
            decimal             decActualOnhandQty = 0;

            if (dtoActOnhand != null && !dtoActOnhand.ONHAND_QTY.IsNull)
            {
                decActualOnhandQty = dtoActOnhand.ONHAND_QTY.StrongValue;
            }

            decActualOnhandQty = decActualOnhandQty + QTY;

            if (decActualOnhandQty < 0)
            {
                return(new ErrorItem(QTY.Owner, TKPMessages.eValidate.VLM0063.ToString(), new[] { ItemCD, LocationCD }));
            }
            return(null);
        }
示例#2
0
 /// <summary>
 /// Check On hand Inventory function follow business rule
 /// </summary>
 /// <param name="eOperation"></param>
 /// <param name="eInoutCls"></param>
 /// <param name="QTY"></param>
 /// <param name="ItemCD"></param>
 /// <param name="LocationCD"></param>
 /// <param name="LotNo"></param>
 /// <param name="strTranID">in case of Update, this value must be sent, the others send null.</param>
 /// <returns></returns>
 public ErrorItem CheckOnhandQty(DataDefine.eOperationClass eOperation, string strInOutClass, NZDecimal QTY, NZString ItemCD, NZString LocationCD, NZString LotNo, NZString strTranID)
 {
     return(CheckOnhandQty(eOperation, DataDefine.Convert2ClassCode(strInOutClass), QTY, ItemCD, LocationCD, LotNo, strTranID));
 }