/// <summary>
 /// VmiReceiveInfo -> VmiReceiveDetailInfo
 /// </summary>
 /// <param name="vmiReceiveInfo"></param>
 /// <param name="vmiReceiveDetailInfo"></param>
 public static void GetVmiReceiveDetailInfo(VmiReceiveInfo vmiReceiveInfo, ref VmiReceiveDetailInfo vmiReceiveDetailInfo)
 {
     if (vmiReceiveInfo == null)
     {
         return;
     }
     ///RECEIVE_FID
     vmiReceiveDetailInfo.ReceiveFid = vmiReceiveInfo.Fid;
     ///PLANT
     vmiReceiveDetailInfo.Plant = vmiReceiveInfo.Plant;
     ///SUPPLIER_NUM
     vmiReceiveDetailInfo.SupplierNum = vmiReceiveInfo.SupplierNum;
     ///WM_NO
     vmiReceiveDetailInfo.WmNo = vmiReceiveInfo.SourceWmNo;
     ///ZONE_NO
     vmiReceiveDetailInfo.ZoneNo = vmiReceiveInfo.SourceZoneNo;
     ///TARGET_WM
     vmiReceiveDetailInfo.TargetWm = vmiReceiveInfo.WmNo;
     ///TARGET_ZONE
     vmiReceiveDetailInfo.TargetZone = vmiReceiveInfo.ZoneNo;
     ///TRAN_NO
     vmiReceiveDetailInfo.TranNo = vmiReceiveInfo.ReceiveNo;
     ///DOCK
     vmiReceiveDetailInfo.Dock = vmiReceiveInfo.Dock;
     ///RUNSHEET_NO
     vmiReceiveDetailInfo.RunsheetNo = vmiReceiveInfo.RunsheetNo;
 }
        /// <summary>
        /// Create VmiReceiveDetailInfo
        /// </summary>
        /// <param name="loginUser"></param>
        /// <returns></returns>
        public static VmiReceiveDetailInfo CreateVmiReceiveDetailInfo(string loginUser)
        {
            VmiReceiveDetailInfo vmiReceiveDetailInfo = new VmiReceiveDetailInfo
            {
                ///FID
                Fid = Guid.NewGuid(),
                ///VALID_FLAG
                ValidFlag = true,
                ///CREATE_DATE
                CreateDate = DateTime.Now,
                ///CREATE_USER
                CreateUser = loginUser,
                ///IDENTIFY_PART_NO
                IdentifyPartNo = string.Empty,
                ///PART_TYPE
                PartType = null,
                ///BARCODE_DATA
                BarcodeData = string.Empty,
                ///BOX_PARTS
                BoxParts = string.Empty,
                ///SEQUENCE_NO
                SequenceNo = null,
                ///PICKUP_SEQ_NO
                PickupSeqNo = null,
                ///RDC_DLOC
                RdcDloc = string.Empty,
                ///SUPPLIER_NUM_SHEET
                SupplierNumSheet = string.Empty,
                ///RETURN_REPORT_FLAG
                ReturnReportFlag = null,
                ///ORDER_NO
                OrderNo = string.Empty,
                ///ITEM_NO
                ItemNo = string.Empty,
                ///CURRENT_BOX_NUM
                CurrentBoxNum = null,
                ///CURRENT_QTY
                CurrentQty = null,
                ///FINAL_DLOC
                FinalDloc = string.Empty,
                ///IS_SCAN_BOX
                IsScanBox = null,
                ///ROW_NO
                RowNo = null,
                ///SUM_WEIGHT
                SumWeight = null,
                ///SUM_VOLUME
                SumVolume = null,
                ///DLOC
                Dloc = string.Empty
            };

            ///
            return(vmiReceiveDetailInfo);
        }
 /// <summary>
 /// PartsStockInfo -> VmiReceiveDetailInfo
 /// </summary>
 /// <param name="partsStockInfo"></param>
 /// <param name="vmiReceiveDetailInfo"></param>
 public static void GetVmiReceiveDetailInfo(PartsStockInfo partsStockInfo, ref VmiReceiveDetailInfo vmiReceiveDetailInfo)
 {
     if (partsStockInfo == null)
     {
         return;
     }
     ///PACKAGE_MODEL
     vmiReceiveDetailInfo.PackageModel = partsStockInfo.InboundPackageModel;
     ///PACKAGE
     vmiReceiveDetailInfo.Package = partsStockInfo.InboundPackage;
     ///ASSEMBLY_LINE
     vmiReceiveDetailInfo.AssemblyLine = partsStockInfo.AssemblyLine;
     ///INHOUSE_PACKAGE_MODEL
     vmiReceiveDetailInfo.PackageModel = partsStockInfo.InhousePackageModel;
     ///INHOUSE_PACKAGE
     vmiReceiveDetailInfo.Package = partsStockInfo.InhousePackage;
     /////FINAL_WM
     //vmiReceiveDetailInfo.FinalWm = partsStockInfo.SynchronousWmNo;
     /////FINAL_ZONE
     //vmiReceiveDetailInfo.FinalZone = partsStockInfo.SynchronousZoneNo;
     ///TARGET_DLOC
     vmiReceiveDetailInfo.TargetDloc = partsStockInfo.Dloc;
 }
Пример #4
0
 /// <summary>
 /// VmiReceiveDetailInfo  -> ReceiveDetailInfo
 /// </summary>
 /// <param name="vmiReceiveDetailInfo"></param>
 /// <param name="info"></param>
 public static void GetReceiveDetailInfo(VmiReceiveDetailInfo vmiReceiveDetailInfo, ref ReceiveDetailInfo info)
 {
     ///ID,明细流水号
     info.Id = vmiReceiveDetailInfo.Id;
     ///FID,FID
     info.Fid = vmiReceiveDetailInfo.Fid;
     ///RECEIVE_FID,
     info.ReceiveFid = vmiReceiveDetailInfo.ReceiveFid;
     ///PLANT,工厂模型_工厂
     info.Plant = vmiReceiveDetailInfo.Plant;
     ///SUPPLIER_NUM,基础数据_供应商
     info.SupplierNum = vmiReceiveDetailInfo.SupplierNum;
     ///WM_NO,仓库编码
     info.WmNo = vmiReceiveDetailInfo.WmNo;
     ///ZONE_NO,存贮区编码
     info.ZoneNo = vmiReceiveDetailInfo.ZoneNo;
     ///DLOC,库位
     info.Dloc = vmiReceiveDetailInfo.Dloc;
     ///TARGET_WM,目的仓库
     info.TargetWm = vmiReceiveDetailInfo.TargetWm;
     ///TARGET_ZONE,目的存储区
     info.TargetZone = vmiReceiveDetailInfo.TargetZone;
     ///TARGET_DLOC,目的库位
     info.TargetDloc = vmiReceiveDetailInfo.TargetDloc;
     ///PART_NO,车辆模型_零件号
     info.PartNo = vmiReceiveDetailInfo.PartNo;
     ///PART_CNAME,车辆模型_零件中文名
     info.PartCname = vmiReceiveDetailInfo.PartCname;
     ///PART_ENAME,车辆模型_零件德文名
     info.PartEname = vmiReceiveDetailInfo.PartEname;
     ///MEASURING_UNIT_NO,单位
     info.MeasuringUnitNo = vmiReceiveDetailInfo.MeasuringUnitNo;
     ///IDENTIFY_PART_NO,车辆模型_标识零件号
     info.IdentifyPartNo = vmiReceiveDetailInfo.IdentifyPartNo;
     ///PACKAGE_MODEL,包装型号
     info.PackageModel = vmiReceiveDetailInfo.PackageModel;
     ///PACKAGE,单包装数
     info.Package = vmiReceiveDetailInfo.Package;
     ///PART_TYPE,零件类型
     info.PartType = vmiReceiveDetailInfo.PartType;
     ///REQUIRED_BOX_NUM,需求包装数
     info.RequiredBoxNum = vmiReceiveDetailInfo.RequiredBoxNum;
     ///REQUIRED_QTY,需求数量
     info.RequiredQty = vmiReceiveDetailInfo.RequiredQty;
     ///ACTUAL_BOX_NUM,实际包装数
     info.ActualBoxNum = vmiReceiveDetailInfo.ActualBoxNum;
     ///ACTUAL_QTY,实际数量
     info.ActualQty = vmiReceiveDetailInfo.ActualQty;
     ///BARCODE_DATA,条码
     info.BarcodeData = vmiReceiveDetailInfo.BarcodeData;
     ///TRAN_NO,交易编码
     info.TranNo = vmiReceiveDetailInfo.TranNo;
     ///DOCK,工厂模型_DOCK
     info.Dock = vmiReceiveDetailInfo.Dock;
     ///ASSEMBLY_LINE,工厂模型_流水线
     info.AssemblyLine = vmiReceiveDetailInfo.AssemblyLine;
     ///BOX_PARTS,基础数据_零件类
     info.BoxParts = vmiReceiveDetailInfo.BoxParts;
     ///SEQUENCE_NO,排序号
     info.SequenceNo = vmiReceiveDetailInfo.SequenceNo;
     ///PICKUP_SEQ_NO,捡料顺序号
     info.PickupSeqNo = vmiReceiveDetailInfo.PickupSeqNo;
     ///RDC_DLOC,供应商库位
     info.RdcDloc = vmiReceiveDetailInfo.RdcDloc;
     ///INHOUSE_PACKAGE,上线包装数量
     info.InhousePackage = vmiReceiveDetailInfo.InhousePackage;
     ///INHOUSE_PACKAGE_MODEL,上线包装型号
     info.InhousePackageModel = vmiReceiveDetailInfo.InhousePackageModel;
     ///RUNSHEET_NO,拉动单号
     info.RunsheetNo = vmiReceiveDetailInfo.RunsheetNo;
     ///SUPPLIER_NUM_SHEET,基础数据组单_供应商
     info.SupplierNumSheet = vmiReceiveDetailInfo.SupplierNumSheet;
     ///BOX_PARTS_SHEET,基础数据_零件类组单
     info.BoxPartsSheet = vmiReceiveDetailInfo.BoxPartsSheet;
     ///RETURN_REPORT_FLAG,return_report_flag
     info.ReturnReportFlag = vmiReceiveDetailInfo.ReturnReportFlag;
     ///ORDER_NO,订单号
     info.OrderNo = vmiReceiveDetailInfo.OrderNo;
     ///ITEM_NO,ITEM号
     info.ItemNo = vmiReceiveDetailInfo.ItemNo;
     ///CURRENT_BOX_NUM,
     info.CurrentBoxNum = vmiReceiveDetailInfo.CurrentBoxNum;
     ///CURRENT_QTY,
     info.CurrentQty = vmiReceiveDetailInfo.CurrentQty;
     ///FINAL_WM,最终仓库
     info.FinalWm = vmiReceiveDetailInfo.FinalWm;
     ///FINAL_ZONE,最终存储区
     info.FinalZone = vmiReceiveDetailInfo.FinalZone;
     ///FINAL_DLOC,最终库位
     info.FinalDloc = vmiReceiveDetailInfo.FinalDloc;
     ///IS_SCAN_BOX,是否扫箱
     info.IsScanBox = vmiReceiveDetailInfo.IsScanBox;
     ///ROW_NO,行号
     info.RowNo = vmiReceiveDetailInfo.RowNo;
     ///ORIGIN_PLACE,产地
     info.OriginPlace = vmiReceiveDetailInfo.OriginPlace;
     ///PURCHASE_UNIT_PRICE,采购单价
     info.PurchaseUnitPrice = vmiReceiveDetailInfo.PurchaseUnitPrice;
     ///PART_PRICE,金额
     info.PartPrice = vmiReceiveDetailInfo.PartPrice;
     ///PART_CLS,零件类别
     info.PartCls = vmiReceiveDetailInfo.PartCls;
     ///COMMENTS,COMMON_备注
     info.Comments = vmiReceiveDetailInfo.Comments;
     ///VALID_FLAG,逻辑删除标记
     info.ValidFlag = vmiReceiveDetailInfo.ValidFlag;
     ///CREATE_USER,COMMON_CREATE_USER
     info.CreateUser = vmiReceiveDetailInfo.CreateUser;
     ///CREATE_DATE,COMMON_CREATE_DATE
     info.CreateDate = vmiReceiveDetailInfo.CreateDate;
     ///MODIFY_USER,COMMON_MODIFY_USER
     info.ModifyUser = vmiReceiveDetailInfo.ModifyUser;
     ///MODIFY_DATE,COMMON_MODIFY_DATE
     info.ModifyDate = vmiReceiveDetailInfo.ModifyDate;
     ///PACKAGE_LENGTH,包装长
     info.PackageLength = vmiReceiveDetailInfo.PackageLength;
     ///PACKAGE_WIDTH,包装宽
     info.PackageWidth = vmiReceiveDetailInfo.PackageWidth;
     ///PACKAGE_HEIGHT,包装高
     info.PackageHeight = vmiReceiveDetailInfo.PackageHeight;
     ///PERPACKAGE_GROSS_WEIGHT,单箱随货毛重
     info.PerpackageGrossWeight = vmiReceiveDetailInfo.PerpackageGrossWeight;
     ///INSPECTION_MODE,检验模式
     info.InspectionMode = vmiReceiveDetailInfo.InspectionMode;
     ///PACKAGE_VOLUME,单包装体积
     info.PackageVolume = vmiReceiveDetailInfo.PackageVolume;
     ///SUM_WEIGHT,合计毛重
     info.SumWeight = vmiReceiveDetailInfo.SumWeight;
     ///SUM_VOLUME,合计体积
     info.SumVolume = vmiReceiveDetailInfo.SumVolume;
 }
        /// <summary>
        /// InsertInfo
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public long InsertInfo(VmiReceiveDetailInfo info)
        {
            VmiReceiveInfo receiveInfo = new VmiReceiveDAL().GetInfo(info.ReceiveFid.GetValueOrDefault());

            if (receiveInfo == null)
            {
                throw new Exception("MC:0x00000084");///数据错误
            }
            if (receiveInfo.Status.GetValueOrDefault() != (int)WmmOrderStatusConstants.Created)
            {
                throw new Exception("MC:0x00000152");///入库单处理已创建状态时才能添加材料
            }
            ///明细中供应商缺失时,从单据上获取
            if (string.IsNullOrEmpty(info.SupplierNum))
            {
                info.SupplierNum = receiveInfo.SupplierNum;
            }
            ///单据号
            if (string.IsNullOrEmpty(info.TranNo))
            {
                info.TranNo = receiveInfo.ReceiveNo;
            }
            ///拉动单号
            if (string.IsNullOrEmpty(info.RunsheetNo))
            {
                info.RunsheetNo = receiveInfo.RunsheetNo;
            }
            ///工厂
            if (string.IsNullOrEmpty(info.Plant))
            {
                info.Plant = receiveInfo.Plant;
            }
            ///仓库
            if (string.IsNullOrEmpty(info.TargetWm))
            {
                info.TargetWm = receiveInfo.WmNo;
            }
            ///存储区
            if (string.IsNullOrEmpty(info.TargetZone))
            {
                info.TargetZone = receiveInfo.ZoneNo;
            }
            ///仓库
            if (string.IsNullOrEmpty(info.WmNo))
            {
                info.WmNo = receiveInfo.SourceWmNo;
            }
            ///存储区
            if (string.IsNullOrEmpty(info.ZoneNo))
            {
                info.ZoneNo = receiveInfo.SourceZoneNo;
            }
            ///创建VMI入库单时实收数量等于需求数量
            string create_vmi_receive_actual_qty_equals_required = new ConfigDAL().GetValueByCode("CREATE_VMI_RECEIVE_ACTUAL_QTY_EQUALS_REQUIRED");

            if (!string.IsNullOrEmpty(create_vmi_receive_actual_qty_equals_required) && create_vmi_receive_actual_qty_equals_required.ToLower() == "true")
            {
                if (info.ActualBoxNum == null)
                {
                    info.ActualBoxNum = info.RequiredBoxNum;
                }
                if (info.ActualQty == null)
                {
                    info.ActualQty = info.RequiredQty;
                }
            }
            ///如果需求箱数大于零
            if (info.RequiredBoxNum.GetValueOrDefault() > 0)
            {
                ///如果未填写单包装毛重,但是填写了总毛重,需要计算
                if (info.PerpackageGrossWeight.GetValueOrDefault() == 0 && info.SumWeight.GetValueOrDefault() > 0)
                {
                    info.PerpackageGrossWeight = info.SumWeight.GetValueOrDefault() / info.RequiredBoxNum.GetValueOrDefault();
                }
                ///体积也是如此处理
                if (info.PackageVolume.GetValueOrDefault() == 0 && info.SumVolume.GetValueOrDefault() > 0)
                {
                    info.PackageVolume = info.SumVolume.GetValueOrDefault() / info.RequiredBoxNum.GetValueOrDefault();
                }
                ///件数也是如此处理
                if (info.Package.GetValueOrDefault() == 0 && info.RequiredQty.GetValueOrDefault() > 0)
                {
                    info.Package = Math.Ceiling(info.RequiredQty.GetValueOrDefault() / info.RequiredBoxNum.GetValueOrDefault());
                }
            }
            ///
            return(dal.Add(info));
        }
 /// <summary>
 /// SrmVmiShippingNoteDetailInfo -> VmiReceiveDetailInfo
 /// </summary>
 /// <param name="vmiShippingNoteDetailInfo"></param>
 /// <param name="vmiReceiveDetailInfo"></param>
 public static void GetVmiReceiveDetailInfo(SrmVmiShippingNoteDetailInfo vmiShippingNoteDetailInfo, ref VmiReceiveDetailInfo vmiReceiveDetailInfo)
 {
     if (vmiShippingNoteDetailInfo == null)
     {
         return;
     }
     ///PART_NO
     vmiReceiveDetailInfo.PartNo = vmiShippingNoteDetailInfo.Partno;
     ///REQUIRED_QTY
     vmiReceiveDetailInfo.RequiredQty = vmiShippingNoteDetailInfo.Partqty;
     ///REQUIRED_BOX_NUM
     if (vmiReceiveDetailInfo.Package.GetValueOrDefault() > 0)
     {
         vmiReceiveDetailInfo.RequiredBoxNum = Convert.ToInt32(Math.Ceiling(vmiShippingNoteDetailInfo.Partqty.GetValueOrDefault() / vmiReceiveDetailInfo.Package.GetValueOrDefault()));
     }
     ///COMMENTS
     vmiReceiveDetailInfo.Comments = vmiShippingNoteDetailInfo.Remark;
 }
 /// <summary>
 /// PackageApplianceInfo -> VmiReceiveDetailInfo
 /// </summary>
 /// <param name="packageApplianceInfo"></param>
 /// <param name="vmiReceiveDetailInfo"></param>
 public static void GetVmiReceiveDetailInfo(PackageApplianceInfo packageApplianceInfo, ref VmiReceiveDetailInfo vmiReceiveDetailInfo)
 {
     if (packageApplianceInfo == null)
     {
         return;
     }
     ///PACKAGE_LENGTH
     vmiReceiveDetailInfo.PackageLength = packageApplianceInfo.PackageLength;
     ///PACKAGE_WIDTH
     vmiReceiveDetailInfo.PackageWidth = packageApplianceInfo.PackageWidth;
     ///PACKAGE_HEIGHT
     vmiReceiveDetailInfo.PackageHeight = packageApplianceInfo.PackageHeight;
     ///PERPACKAGE_GROSS_WEIGHT
     vmiReceiveDetailInfo.PerpackageGrossWeight = packageApplianceInfo.MaxWeight;
     ///PACKAGE_VOLUME
     vmiReceiveDetailInfo.PackageVolume = vmiReceiveDetailInfo.PackageLength * vmiReceiveDetailInfo.PackageWidth * vmiReceiveDetailInfo.PackageHeight;
 }
 /// <summary>
 /// MaintainPartsInfo -> VmiReceiveDetailInfo
 /// </summary>
 /// <param name="maintainPartsInfo"></param>
 /// <param name="vmiReceiveDetailInfo"></param>
 public static void GetVmiReceiveDetailInfo(MaintainPartsInfo maintainPartsInfo, ref VmiReceiveDetailInfo vmiReceiveDetailInfo)
 {
     if (maintainPartsInfo == null)
     {
         return;
     }
     ///PART_NO
     vmiReceiveDetailInfo.PartNo = maintainPartsInfo.PartNo;
     ///PART_CNAME
     vmiReceiveDetailInfo.PartCname = maintainPartsInfo.PartCname;
     ///PART_ENAME
     vmiReceiveDetailInfo.PartEname = maintainPartsInfo.PartEname;
     ///MEASURING_UNIT_NO
     vmiReceiveDetailInfo.MeasuringUnitNo = maintainPartsInfo.PartUnits;
     ///ORIGIN_PLACE
     //vmiReceiveDetailInfo.OriginPlace = maintainPartsInfo.OriginPlace;
     /////PURCHASE_UNIT_PRICE
     //vmiReceiveDetailInfo.PurchaseUnitPrice = maintainPartsInfo.PurchaseUnitPrice;
     ///PART_CLS
     vmiReceiveDetailInfo.PartCls = maintainPartsInfo.PartCls;
 }
        /// <summary>
        /// UpdateInfo
        /// </summary>
        /// <param name="fields"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool UpdateInfo(string fields, long id)
        {
            VmiReceiveDetailInfo vmiReceiveDetailInfo = dal.GetInfo(id);

            if (vmiReceiveDetailInfo == null)
            {
                throw new Exception("MC:0x00000084");///数据错误
            }
            VmiReceiveInfo receiveInfo = new VmiReceiveDAL().GetInfo(vmiReceiveDetailInfo.ReceiveFid.GetValueOrDefault());

            if (receiveInfo == null)
            {
                throw new Exception("MC:0x00000252");///入库单数据错误
            }
            if (receiveInfo.Status.GetValueOrDefault() == (int)WmmOrderStatusConstants.Completed || receiveInfo.Status.GetValueOrDefault() == (int)WmmOrderStatusConstants.Closed)
            {
                throw new Exception("MC:0x00000253");///入库单状态为已关闭或已完成时不能修改其内容
            }
            ///实收数量
            string actualQty = CommonBLL.GetFieldValue(fields, "ACTUAL_QTY");
            ///VMI入库单明细校验实收数量小于等于需求数量
            string vmi_receive_detail_valid_actual_qty_less_required = new ConfigDAL().GetValueByCode("VMI_RECEIVE_DETAIL_VALID_ACTUAL_QTY_LESS_EQUAL_REQUIRED");

            if (!string.IsNullOrEmpty(vmi_receive_detail_valid_actual_qty_less_required) && vmi_receive_detail_valid_actual_qty_less_required.ToLower() == "true")
            {
                decimal.TryParse(actualQty, out decimal dActualQty);
                if (dActualQty > vmiReceiveDetailInfo.RequiredQty.GetValueOrDefault())
                {
                    throw new Exception("MC:0x00000490");///物料实收数量不允许大于需求数量
                }
            }
            ///如果入库状态为已发布,则只能更新实收数量和实收箱数
            if (receiveInfo.Status.GetValueOrDefault() == (int)WmmOrderStatusConstants.Published)
            {
                if (string.IsNullOrEmpty(actualQty))
                {
                    actualQty = "NULL";
                }
                ///实收箱数
                string actualBoxNum = CommonBLL.GetFieldValue(fields, "ACTUAL_BOX_NUM");
                if (string.IsNullOrEmpty(actualBoxNum))
                {
                    actualBoxNum = "NULL";
                }
                ///修改用户
                string loginUser = CommonBLL.GetFieldValue(fields, "MODIFY_USER");
                fields = "[ACTUAL_QTY] = " + actualQty + ",[ACTUAL_BOX_NUM] = " + actualBoxNum + ",[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' ";
                return(dal.UpdateInfo(fields, id) > 0 ? true : false);
            }

            string requiredBoxNum = CommonBLL.GetFieldValue(fields, "REQUIRED_BOX_NUM");

            int.TryParse(requiredBoxNum, out int intRequiredBoxNum);
            ///如果需求箱数大于零
            if (intRequiredBoxNum > 0)
            {
                string perpackageGrossWeight = CommonBLL.GetFieldValue(fields, "PERPACKAGE_GROSS_WEIGHT");
                decimal.TryParse(perpackageGrossWeight, out decimal decimalPerpackageGrossWeight);
                string sumWeight = CommonBLL.GetFieldValue(fields, "SUM_WEIGHT");
                decimal.TryParse(sumWeight, out decimal decimalSumWeight);
                ///如果未填写单包装毛重,但是填写了总毛重,需要计算
                if (decimalPerpackageGrossWeight == 0 && decimalSumWeight > 0)
                {
                    decimalPerpackageGrossWeight = decimalSumWeight / intRequiredBoxNum;
                    fields = CommonBLL.SetFieldValue(fields, "PERPACKAGE_GROSS_WEIGHT", decimalPerpackageGrossWeight.ToString(), false);
                }

                string packageVolume = CommonBLL.GetFieldValue(fields, "PACKAGE_VOLUME");
                decimal.TryParse(packageVolume, out decimal decimalPackageVolume);
                string sumVolume = CommonBLL.GetFieldValue(fields, "SUM_VOLUME");
                decimal.TryParse(sumVolume, out decimal decimalSumVolume);
                ///体积也是如此处理
                if (decimalPackageVolume == 0 && decimalSumVolume > 0)
                {
                    decimalPackageVolume = decimalSumVolume / intRequiredBoxNum;
                    fields = CommonBLL.SetFieldValue(fields, "PACKAGE_VOLUME", decimalPackageVolume.ToString(), false);
                }

                string package = CommonBLL.GetFieldValue(fields, "PACKAGE");
                decimal.TryParse(package, out decimal decimalPackage);
                string requiredQty = CommonBLL.GetFieldValue(fields, "REQUIRED_QTY");
                decimal.TryParse(requiredQty, out decimal decimalRequiredQty);
                ///件数也是如此处理
                if (decimalPackage == 0 && decimalRequiredQty > 0)
                {
                    decimalPackage = Math.Ceiling(decimalRequiredQty / intRequiredBoxNum);
                    fields         = CommonBLL.SetFieldValue(fields, "PACKAGE", decimalPackage.ToString(), false);
                }
            }

            return(dal.UpdateInfo(fields, id) > 0 ? true : false);
        }
Пример #10
0
        /// <summary>
        /// 供应商发货单同步
        /// </summary>
        /// <param name="loginUser"></param>
        /// <returns></returns>
        public static void Sync(string loginUser)
        {
            ///获取没有处理的物料发货单表
            List <SrmVmiShippingNoteInfo> srmVmiShippingNoteInfos = new SrmVmiShippingNoteBLL().GetList("[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Untreated + "", "[ID]");

            if (srmVmiShippingNoteInfos.Count == 0)
            {
                return;
            }
            ///获取没有处理的物料发货单详情表
            List <SrmVmiShippingNoteDetailInfo> srmVmiShippingNoteDetailInfos = new SrmVmiShippingNoteDetailBLL().GetList("[NOTE_FID] in ('" + string.Join("','", srmVmiShippingNoteInfos.Select(d => d.LogFid).ToArray()) + "')", "[ID]");

            if (srmVmiShippingNoteDetailInfos.Count == 0)
            {
                return;
            }
            StringBuilder @string = new StringBuilder();
            ///获取相关仓库信息
            List <WarehouseInfo> warehouseInfos = new WarehouseBLL().GetList("[WAREHOUSE] in ('" + string.Join("','", srmVmiShippingNoteInfos.Select(d => d.VmiWmNo).ToArray()) + "')", string.Empty);

            if (warehouseInfos.Count == 0)
            {
                @string.AppendLine("update [LES].[TI_IFM_SRM_VMI_SHIPPING_NOTE] set " +
                                   "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                   "[PROCESS_TIME] = GETDATE()," +
                                   "[COMMENTS] = N'0x00000230' where " +///仓库信息不存在
                                   "[ID] in (" + string.Join("','", srmVmiShippingNoteInfos.Select(d => d.Id).ToArray()) + ");");
                BLL.SYS.CommonBLL.ExecuteNonQueryBySql(@string.ToString());
                return;
            }
            ///获取相关供应商基础信息
            List <SupplierInfo> supplierInfos = new SupplierBLL().GetList("[SUPPLIER_NUM] in ('" + string.Join("','", srmVmiShippingNoteInfos.Select(d => d.SupplierCode).ToArray()) + "')", string.Empty);

            if (supplierInfos.Count == 0)
            {
                @string.AppendLine("update [LES].[TI_IFM_SRM_VMI_SHIPPING_NOTE] set " +
                                   "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                   "[PROCESS_TIME] = GETDATE()," +
                                   "[COMMENTS] = N'0x00000229' where " +///供应商信息不存在
                                   "[ID] in (" + string.Join("','", srmVmiShippingNoteInfos.Select(d => d.Id).ToArray()) + ");");
                BLL.SYS.CommonBLL.ExecuteNonQueryBySql(@string.ToString());
                return;
            }
            ///获取VMI供应商关系
            List <VmiSupplierInfo> vmiSupplierInfos = new VmiSupplierBLL().GetList("" +
                                                                                   "[SUPPLIER_NUM] in ('" + string.Join("','", srmVmiShippingNoteInfos.Select(d => d.SupplierCode).ToArray()) + "') and " +
                                                                                   "[WM_NO] in ('" + string.Join("','", srmVmiShippingNoteInfos.Select(d => d.VmiWmNo).ToArray()) + "')", string.Empty);

            if (vmiSupplierInfos.Count == 0)
            {
                @string.AppendLine("update [LES].[TI_IFM_SRM_VMI_SHIPPING_NOTE] set " +
                                   "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                   "[PROCESS_TIME] = GETDATE()," +
                                   "[COMMENTS] = N'0x00000429' where " +///VMI供应商信息未维护
                                   "[ID] in (" + string.Join("','", srmVmiShippingNoteInfos.Select(d => d.Id).ToArray()) + ");");
                BLL.SYS.CommonBLL.ExecuteNonQueryBySql(@string.ToString());
                return;
            }
            ///获取相关物料基础信息
            List <MaintainPartsInfo> maintainPartsInfos = new MaintainPartsBLL().GetList("" +
                                                                                         "[PART_NO] in ('" + string.Join("','", srmVmiShippingNoteDetailInfos.Select(d => d.Partno).ToArray()) + "')", string.Empty);
            ///获取相关物料仓储信息
            List <PartsStockInfo> partsStockInfos = new PartsStockBLL().GetList("" +
                                                                                "[PART_NO] in ('" + string.Join("','", srmVmiShippingNoteDetailInfos.Select(d => d.Partno).ToArray()) + "') and " +
                                                                                "[WM_NO] in ('" + string.Join("','", warehouseInfos.Select(d => d.Warehouse).ToArray()) + "')", string.Empty);
            ///获取相关包装器具基础信息
            List <PackageApplianceInfo> packageApplianceInfos = new List <PackageApplianceInfo>();

            if (partsStockInfos.Count > 0)
            {
                ///标准包装
                List <string> packageModels = partsStockInfos.
                                              Where(d => !string.IsNullOrEmpty(d.PackageModel)).
                                              Select(d => d.PackageModel).ToList();
                ///入库包装
                packageModels.AddRange(partsStockInfos.
                                       Where(d => !string.IsNullOrEmpty(d.InboundPackageModel) && !packageModels.Contains(d.InboundPackageModel)).
                                       Select(d => d.InboundPackageModel).ToList());
                ///上线包装
                packageModels.AddRange(partsStockInfos.
                                       Where(d => !string.IsNullOrEmpty(d.InhousePackageModel) && !packageModels.Contains(d.InhousePackageModel)).
                                       Select(d => d.InhousePackageModel).ToList());
                ///
                packageApplianceInfos = new PackageApplianceBLL().GetList("[PAKCAGE_NO] in ('" + string.Join("','", packageModels.ToArray()) + "')", string.Empty);
            }

            ///获取系统配置
            Dictionary <string, string> configs = new ConfigBLL().GetValuesByCodes(new string[] {
                "RELEASE_VMI_RECEIVE_ACTUAL_QTY_EQUALS_REQUIRED",
                "ENABLE_VMI_FLAG"
            });
            ///
            List <long> dealedIds = new List <long>();

            ///如果数据不为空,按照规则分发
            foreach (SrmVmiShippingNoteInfo srmVmiShippingNoteInfo in srmVmiShippingNoteInfos)
            {
                ///本单据的对应仓库
                WarehouseInfo warehouseInfo = warehouseInfos.FirstOrDefault(d => d.Warehouse == srmVmiShippingNoteInfo.VmiWmNo);
                ///如果未处理的物料发货单中仓库码不存在, 修改中间表数据为挂起状态
                if (warehouseInfo == null)
                {
                    @string.AppendLine("update [LES].[TI_IFM_SRM_VMI_SHIPPING_NOTE] set " +
                                       "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                       "[PROCESS_TIME] = GETDATE()," +
                                       "[COMMENTS] = N'0x00000230' where " +///仓库信息不存在
                                       "[ID] = " + srmVmiShippingNoteInfo.Id + ";");
                    continue;
                }
                ///仓库类型不是VMI
                if (warehouseInfo.WarehouseType.GetValueOrDefault() != (int)WarehouseTypeConstants.VMI)
                {
                    @string.AppendLine("update [LES].[TI_IFM_SRM_VMI_SHIPPING_NOTE] set " +
                                       "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                       "[PROCESS_TIME] = GETDATE()," +
                                       "[COMMENTS] = N'0x00000219' where " +///仓库类型错误
                                       "[ID] = " + srmVmiShippingNoteInfo.Id + ";");
                    continue;
                }
                ///本发货单的物料明细
                List <SrmVmiShippingNoteDetailInfo> srmVmiShippingNoteDetails = srmVmiShippingNoteDetailInfos.Where(d =>
                                                                                                                    d.NoteFid.GetValueOrDefault() == srmVmiShippingNoteInfo.Fid).ToList();
                if (srmVmiShippingNoteDetails.Count == 0)
                {
                    @string.AppendLine("update [LES].[TI_IFM_SRM_VMI_SHIPPING_NOTE] set " +
                                       "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                       "[PROCESS_TIME] = GETDATE()," +
                                       "[COMMENTS] = N'0x00000465' where " +///发货单物料数据错误
                                       "[ID] = " + srmVmiShippingNoteInfo.Id + ";");
                    continue;
                }
                ///供应商
                SupplierInfo supplierInfo = supplierInfos.FirstOrDefault(d => d.SupplierNum == srmVmiShippingNoteInfo.SupplierCode);
                if (supplierInfo == null)
                {
                    @string.AppendLine("update [LES].[TI_IFM_SRM_VMI_SHIPPING_NOTE] set " +
                                       "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                       "[PROCESS_TIME] = GETDATE()," +
                                       "[COMMENTS] = N'0x00000229' where " +///供应商信息不存在
                                       "[ID] = " + srmVmiShippingNoteInfo.Id + ";");
                    continue;
                }
                ///VMI供应商关系
                VmiSupplierInfo vmiSupplierInfo = vmiSupplierInfos.FirstOrDefault(d => d.SupplierNum == supplierInfo.SupplierNum && d.WmNo == warehouseInfo.Warehouse);
                if (vmiSupplierInfo == null)
                {
                    @string.AppendLine("update [LES].[TI_IFM_SRM_VMI_SHIPPING_NOTE] set " +
                                       "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                       "[PROCESS_TIME] = GETDATE()," +
                                       "[COMMENTS] = N'0x00000429' where " +///VMI供应商信息未维护
                                       "[ID] = " + srmVmiShippingNoteInfo.Id + ";");
                    continue;
                }

                ///如果该仓库启用的是VMI模块则需要将单据写入VMI入库单
                if (warehouseInfo.VmiEnable.GetValueOrDefault())
                {
                    ///发布VMI入库单时实收数量默认等于需求数量
                    configs.TryGetValue("RELEASE_VMI_RECEIVE_ACTUAL_QTY_EQUALS_REQUIRED", out string release_vmi_receive_actual_qty_equals_required);
                    ///创建VMI入库单,TODO:默认类型与状态
                    VmiReceiveInfo vmiReceiveInfo = VmiReceiveBLL.CreateVmiReceiveInfo(
                        loginUser,
                        (int)VmiReceiveTypeConstants.ProductionWarehousing,
                        (int)WmmOrderStatusConstants.Published);
                    ///SrmVmiShippingNoteInfo -> VmiReceiveInfo
                    VmiReceiveBLL.GetVmiReceiveInfo(srmVmiShippingNoteInfo, ref vmiReceiveInfo);
                    ///SupplierInfo -> VmiReceiveInfo
                    VmiReceiveBLL.GetVmiReceiveInfo(supplierInfo, ref vmiReceiveInfo);
                    ///VmiSupplierInfo -> VmiReceiveInfo
                    VmiReceiveBLL.GetVmiReceiveInfo(vmiSupplierInfo, ref vmiReceiveInfo);
                    ///生成入库单语句
                    @string.AppendLine(VmiReceiveDAL.GetInsertSql(vmiReceiveInfo));
                    ///
                    foreach (SrmVmiShippingNoteDetailInfo srmVmiShippingNoteDetail in srmVmiShippingNoteDetails)
                    {
                        ///创建VMI入库单明细
                        VmiReceiveDetailInfo vmiReceiveDetailInfo = VmiReceiveDetailBLL.CreateVmiReceiveDetailInfo(loginUser);
                        ///VmiReceiveInfo -> VmiReceiveDetailInfo
                        VmiReceiveDetailBLL.GetVmiReceiveDetailInfo(vmiReceiveInfo, ref vmiReceiveDetailInfo);
                        ///MaintainPartsInfo -> VmiReceiveDetailInfo
                        MaintainPartsInfo maintainPartsInfo = maintainPartsInfos.FirstOrDefault(d => d.PartNo == srmVmiShippingNoteDetail.Partno);
                        VmiReceiveDetailBLL.GetVmiReceiveDetailInfo(maintainPartsInfo, ref vmiReceiveDetailInfo);
                        ///PartsStockInfo -> VmiReceiveDetailInfo
                        PartsStockInfo partsStockInfo = partsStockInfos.FirstOrDefault(d => d.PartNo == srmVmiShippingNoteDetail.Partno && d.WmNo == warehouseInfo.Warehouse);
                        VmiReceiveDetailBLL.GetVmiReceiveDetailInfo(partsStockInfo, ref vmiReceiveDetailInfo);
                        ///PackageApplianceInfo -> VmiReceiveDetailInfo
                        PackageApplianceInfo packageApplianceInfo = partsStockInfo == null ? null : packageApplianceInfos.FirstOrDefault(d => d.PackageNo == partsStockInfo.InboundPackageModel);
                        VmiReceiveDetailBLL.GetVmiReceiveDetailInfo(packageApplianceInfo, ref vmiReceiveDetailInfo);
                        ///SrmVmiShippingNoteDetailInfo -> VmiReceiveDetailInfo
                        VmiReceiveDetailBLL.GetVmiReceiveDetailInfo(srmVmiShippingNoteDetail, ref vmiReceiveDetailInfo);
                        ///发布VMI入库单时实收数量默认等于需求数量
                        if (!string.IsNullOrEmpty(release_vmi_receive_actual_qty_equals_required) && release_vmi_receive_actual_qty_equals_required.ToLower() == "true")
                        {
                            ///ACTUAL_BOX_NUM
                            vmiReceiveDetailInfo.ActualBoxNum = vmiReceiveDetailInfo.RequiredBoxNum;
                            ///ACTUAL_QTY
                            vmiReceiveDetailInfo.ActualQty = vmiReceiveDetailInfo.RequiredQty;
                        }
                        ///生成入库单明细语句
                        @string.AppendLine(VmiReceiveDetailDAL.GetInsertSql(vmiReceiveDetailInfo));
                    }
                    dealedIds.Add(srmVmiShippingNoteInfo.Id);
                }
                ///如果未启用VMI模块,则根据WMS系统开关决定是否写入中间表
                else
                {
                    ///是否启用WMS系统标记
                    configs.TryGetValue("ENABLE_VMI_FLAG", out string enable_vmi_flag);
                    if (!string.IsNullOrEmpty(enable_vmi_flag) && enable_vmi_flag.ToLower() == "true" && vmiSupplierInfo.VmiFlag.GetValueOrDefault())
                    {
                        ///创建WMS入库单
                        WmsVmiInboundOrderInfo wmsVmiInboundOrderInfo = WmsVmiInboundOrderBLL.CreateWmsVmiInboundOrderInfo((int)ProcessFlagConstants.Untreated, loginUser);
                        ///SrmVmiShippingNoteInfo -> WmsVmiInboundOrderInfo
                        WmsVmiInboundOrderBLL.GetWmsVmiInboundOrderInfo(srmVmiShippingNoteInfo, ref wmsVmiInboundOrderInfo);
                        ///生成入库单语句
                        @string.AppendLine(WmsVmiInboundOrderDAL.GetInsertSql(wmsVmiInboundOrderInfo));
                        ///
                        foreach (SrmVmiShippingNoteDetailInfo srmVmiShippingNoteDetail in srmVmiShippingNoteDetails)
                        {
                            ///创建WMS入库单明细
                            WmsVmiInboundOrderDetailInfo wmsVmiInboundOrderDetailInfo = WmsVmiInboundOrderDetailBLL.CreateWmsVmiInboundOrderDetailInfo(loginUser);
                            ///WmsVmiInboundOrderInfo -> WmsVmiInboundOrderDetailInfo
                            WmsVmiInboundOrderDetailBLL.GetWmsVmiInboundOrderDetailInfo(wmsVmiInboundOrderInfo, ref wmsVmiInboundOrderDetailInfo);
                            ///
                            PartsStockInfo partsStockInfo = partsStockInfos.FirstOrDefault(d => d.PartNo == srmVmiShippingNoteDetail.Partno && d.WmNo == warehouseInfo.Warehouse);
                            WmsVmiInboundOrderDetailBLL.GetWmsVmiInboundOrderDetailInfo(partsStockInfo, ref wmsVmiInboundOrderDetailInfo);
                            ///SrmVmiShippingNoteDetailInfo -> WmsVmiInboundOrderDetailInfo
                            WmsVmiInboundOrderDetailBLL.GetWmsVmiInboundOrderDetailInfo(srmVmiShippingNoteDetail, ref wmsVmiInboundOrderDetailInfo);
                            ///生成WMS入库单明细语句
                            @string.AppendLine(WmsVmiInboundOrderDetailDAL.GetInsertSql(wmsVmiInboundOrderDetailInfo));
                        }
                        ///
                        string targetSystem = "VMI";
                        string methodCode   = "LES-WMS-001";
                        @string.AppendLine(BLL.LES.CommonBLL.GetCreateOutboundLogSql(
                                               targetSystem,
                                               wmsVmiInboundOrderInfo.LogFid.GetValueOrDefault(),
                                               methodCode,
                                               srmVmiShippingNoteInfo.ShippingCode,
                                               loginUser));
                        dealedIds.Add(srmVmiShippingNoteInfo.Id);
                        continue;
                    }
                    @string.AppendLine("update [LES].[TI_IFM_SRM_VMI_SHIPPING_NOTE] set " +
                                       "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                       "[PROCESS_TIME] = GETDATE()," +
                                       "[COMMENTS] = N'0x00000466' where " +///该供应商未启用WMS功能
                                       "[ID] = " + srmVmiShippingNoteInfo.Id + ";");
                    continue;
                }
            }
            if (dealedIds.Count > 0)
            {
                ///已处理的中间表数据更新为已处理状态
                @string.AppendLine("update [LES].[TI_IFM_SRM_VMI_SHIPPING_NOTE] set " +
                                   "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Processed + "," +
                                   "[PROCESS_TIME] = GETDATE() where " +
                                   "[ID] in (" + string.Join(",", dealedIds.ToArray()) + ");");
            }
            ///执行
            using (var trans = new TransactionScope())
            {
                if (@string.Length > 0)
                {
                    BLL.SYS.CommonBLL.ExecuteNonQueryBySql(@string.ToString());
                }
                trans.Complete();
            }
        }
Пример #11
0
        /// <summary>
        /// 根据库存维度将入库单明细合并
        /// </summary>
        /// <param name="ids"></param>
        /// <param name="stockDimension"></param>
        /// <returns></returns>
        public List <VmiReceiveDetailInfo> GetStockDimensionList(List <long> ids, List <string> stockDimension)
        {
            string sql = "select " +
                         (stockDimension.Count > 0 ? string.Join(",", stockDimension.ToArray()) + "," : string.Empty) +
                         "PART_NO, " +
                         "TARGET_WM, " +
                         "TARGET_ZONE, " +
                         "TARGET_DLOC, " +
                         "PART_CNAME, " +
                         "PART_ENAME, " +
                         "MEASURING_UNIT_NO, " +
                         "IDENTIFY_PART_NO, " +
                         "PART_TYPE, " +
                         "REQUIRED_BOX_NUM = sum(REQUIRED_BOX_NUM), " +
                         "REQUIRED_QTY = sum(REQUIRED_QTY), " +
                         "ACTUAL_BOX_NUM = sum(ACTUAL_BOX_NUM), " +
                         "ACTUAL_QTY = sum(ACTUAL_QTY), " +
                         "TRAN_NO, " +
                         "ORIGIN_PLACE, " +
                         "PART_CLS, " +
                         "PACKAGE_LENGTH, " +
                         "PACKAGE_WIDTH, " +
                         "PACKAGE_HEIGHT, " +
                         "PERPACKAGE_GROSS_WEIGHT, " +
                         "PACKAGE_VOLUME, " +
                         "SUM_WEIGHT = sum(SUM_WEIGHT), " +
                         "SUM_VOLUME = sum(SUM_VOLUME) " +
                         "from [LES].[TT_WMM_VMI_RECEIVE_DETAIL] with(nolock) " +
                         "where [VALID_FLAG] = 1 and [ID] in (" + string.Join(",", ids.ToArray()) + ") " +
                         "group by [PART_NO],[PART_CNAME],[PART_ENAME],[MEASURING_UNIT_NO],[IDENTIFY_PART_NO],[PART_TYPE],[TRAN_NO],[ORIGIN_PLACE],[PART_CLS]," +
                         "[PACKAGE_LENGTH],[PACKAGE_WIDTH],[PACKAGE_HEIGHT],[PERPACKAGE_GROSS_WEIGHT],[PACKAGE_VOLUME],[TARGET_DLOC],[TARGET_WM],[TARGET_ZONE]"
                         + (stockDimension.Count > 0 ? "," + string.Join(",", stockDimension.ToArray()) : string.Empty) + ";";
            Database  db  = DatabaseFactory.CreateDatabase();
            DbCommand cmd = db.GetSqlStringCommand(sql);
            List <VmiReceiveDetailInfo> list = new List <VmiReceiveDetailInfo>();

            using (IDataReader dr = db.ExecuteReader(cmd))
            {
                while (dr.Read())
                {
                    VmiReceiveDetailInfo info = new VmiReceiveDetailInfo();
                    foreach (var dimension in stockDimension)
                    {
                        if (dimension.ToUpper() == "PLANT")
                        {
                            info.Plant = DBConvert.GetString(dr, dr.GetOrdinal("PLANT"));
                        }
                        if (dimension.ToUpper() == "SUPPLIER_NUM")
                        {
                            info.SupplierNum = DBConvert.GetString(dr, dr.GetOrdinal("SUPPLIER_NUM"));
                        }
                        if (dimension.ToUpper() == "PACKAGE_MODEL")
                        {
                            info.PackageModel = DBConvert.GetString(dr, dr.GetOrdinal("PACKAGE_MODEL"));
                        }
                        if (dimension.ToUpper() == "PACKAGE")
                        {
                            info.Package = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("PACKAGE"));
                        }
                        if (dimension.ToUpper() == "ORIGIN_PLACE")
                        {
                            info.Package = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("ORIGIN_PLACE"));
                        }
                        if (dimension.ToUpper() == "PART_CLS")
                        {
                            info.PartCls = DBConvert.GetString(dr, dr.GetOrdinal("PART_CLS"));
                        }
                    }
                    info.PartNo                = DBConvert.GetString(dr, dr.GetOrdinal("PART_NO"));
                    info.TargetWm              = DBConvert.GetString(dr, dr.GetOrdinal("TARGET_WM"));
                    info.TargetZone            = DBConvert.GetString(dr, dr.GetOrdinal("TARGET_ZONE"));
                    info.TargetDloc            = DBConvert.GetString(dr, dr.GetOrdinal("TARGET_DLOC"));
                    info.PartCname             = DBConvert.GetString(dr, dr.GetOrdinal("PART_CNAME"));
                    info.PartEname             = DBConvert.GetString(dr, dr.GetOrdinal("PART_ENAME"));
                    info.MeasuringUnitNo       = DBConvert.GetString(dr, dr.GetOrdinal("MEASURING_UNIT_NO"));
                    info.IdentifyPartNo        = DBConvert.GetString(dr, dr.GetOrdinal("IDENTIFY_PART_NO"));
                    info.PartType              = DBConvert.GetInt32Nullable(dr, dr.GetOrdinal("PART_TYPE"));
                    info.RequiredBoxNum        = DBConvert.GetInt32Nullable(dr, dr.GetOrdinal("REQUIRED_BOX_NUM"));
                    info.RequiredQty           = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("REQUIRED_QTY"));
                    info.ActualBoxNum          = DBConvert.GetInt32Nullable(dr, dr.GetOrdinal("ACTUAL_BOX_NUM"));
                    info.ActualQty             = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("ACTUAL_QTY"));
                    info.TranNo                = DBConvert.GetString(dr, dr.GetOrdinal("TRAN_NO"));
                    info.PackageLength         = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("PACKAGE_LENGTH"));
                    info.PackageWidth          = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("PACKAGE_WIDTH"));
                    info.PackageHeight         = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("PACKAGE_HEIGHT"));
                    info.PerpackageGrossWeight = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("PERPACKAGE_GROSS_WEIGHT"));
                    info.PackageVolume         = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("PACKAGE_VOLUME"));
                    info.SumWeight             = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("SUM_WEIGHT"));
                    info.SumVolume             = DBConvert.GetDecimalNullable(dr, dr.GetOrdinal("SUM_VOLUME"));
                    list.Add(info);
                }
            }
            return(list);
        }