Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        private List <InventoryTransactionDTO> ConvertDataTableToList(DataTable dt, DataDefine.eIN_OUT_CLASS in_out)
        {
            List <InventoryTransactionDTO> list = new List <InventoryTransactionDTO>();

            foreach (DataRow dr in dt.Rows)
            {
                InventoryTransactionDTO dto       = new InventoryTransactionDTO();
                DataRowVersion          drVersion = DataRowVersion.Current;
                if (dr.RowState == DataRowState.Deleted)
                {
                    drVersion = DataRowVersion.Original;
                }
                dto.ITEM_CD.Value = dr[(int)eColView.ITEM_CODE, drVersion];       // PART_NO,
                dto.LOT_NO.Value  = dr[eColView.LOT_NO.ToString(), drVersion];    //LOT_NO,
                dto.QTY.Value     = dr[eColView.ISSUE_QTY.ToString(), drVersion]; //ISSUE_QTY,
                if (in_out == DataDefine.eIN_OUT_CLASS.Out)
                {
                    dto.TRANS_ID.Value = dr[eColView.TRANS_ID.ToString(), drVersion];
                    dto.REF_NO.Value   = dr[eColView.REF_NO.ToString(), drVersion];
                }
                else
                {
                    dto.REF_NO.Value   = dr[eColView.TRANS_ID.ToString(), drVersion];
                    dto.TRANS_ID.Value = dr[eColView.REF_NO.ToString(), drVersion];
                }
                list.Add(dto);
            }
            return(list);
        }
Exemplo n.º 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, 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);
        }
Exemplo n.º 3
0
        /// <summary>
        /// คัดลอกค่าที่เป็น Header ของ Model ไปเก็บไว้ใน DTO
        /// </summary>
        /// <param name="model"></param>
        /// <param name="dto"></param>
        ///
        private void AssignHeaderToDTO(IssueByOrderUIDM model, InventoryTransactionDTO dto, DataDefine.eIN_OUT_CLASS in_out)
        {
            dto.TRANS_DATE = model.TRANS_DATE;
            //dto.REF_SLIP_NO = model.SLIP_NO;
            dto.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.Issuing).ToNZString();//model.TRANS_CLS;
            //dto.REF_SLIP_NO = model.INVOICE_NO;
            //dto.OTHER_DL_NO = model.INVOICE_NO;
            dto.REMARK        = model.REMARK;
            dto.OBJ_ITEM_CD   = model.OBJ_ITEM_CD;
            dto.OBJ_ORDER_QTY = model.OBJ_ORDER_QTY;
            dto.REF_SLIP_CLS  = (NZString)DataDefine.Convert2ClassCode(DataDefine.eREF_SLIP_CLS.Issue);
            dto.FOR_CUSTOMER  = model.FOR_CUSTOMER;
            dto.FOR_MACHINE   = model.FOR_MACHINE;
            dto.REF_SLIP_NO2  = model.REF_SLIP_NO2;
            dto.REF_SLIP_NO   = model.REF_SLIP_NO;
            dto.TRAN_SUB_CLS  = model.TRAN_SUB_CLS;
            dto.SCREEN_TYPE   = DataDefine.ScreenType.IssueByOrder.ToNZString();

            if (in_out == DataDefine.eIN_OUT_CLASS.In)
            {
                dto.REF_SLIP_NO      = model.SLIP_NO;
                dto.LOC_CD           = model.TO_LOC_CD;
                dto.IN_OUT_CLS.Value = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.In);
            }
            else
            {
                dto.SLIP_NO          = model.SLIP_NO;
                dto.LOC_CD           = model.FROM_LOC_CD;
                dto.IN_OUT_CLS.Value = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.Out);
            }
        }