/// <summary>
        /// Create VmiOutputDetailInfo
        /// </summary>
        /// <param name="loginUser"></param>
        /// <returns>VmiOutputDetailInfo</returns>
        public static VmiOutputDetailInfo CreateVmiOutputDetailInfo(string loginUser)
        {
            VmiOutputDetailInfo info = new VmiOutputDetailInfo();

            ///FID,
            info.Fid = Guid.NewGuid();
            ///VALID_FLAG,逻辑删除标记
            info.ValidFlag = true;
            ///CREATE_USER,创建人
            info.CreateUser = loginUser;
            ///CREATE_DATE,创建时间
            info.CreateDate = DateTime.Now;


            ///PLANT,工厂模型_工厂
            info.Plant = null;
            ///DLOC,库位
            info.Dloc = null;
            ///BARCODE_DATA,条码
            info.BarcodeData = null;
            ///IDENTIFY_PART_NO,车辆模型_标识零件号
            info.IdentifyPartNo = null;
            ///ASSEMBLY_LINE,工厂模型_流水线
            info.AssemblyLine = null;
            ///SEQUENCE_NO,排序号
            info.SequenceNo = null;
            ///PICKUP_SEQ_NO,捡料顺序号
            info.PickupSeqNo = null;
            ///RDC_DLOC,供应商库位
            info.RdcDloc = null;
            ///SUPPLIER_NUM_SHEET,基础数据组单_供应商
            info.SupplierNumSheet = null;
            ///BOX_PARTS_SHEET,基础数据_零件类组单
            info.BoxPartsSheet = null;
            ///ORDER_NO,订单号
            info.OrderNo = null;
            ///ITEM_NO,ITEM号
            info.ItemNo = null;
            ///REPACKAGE_FLAG,翻包处理标记
            info.RepackageFlag = null;
            ///ORIGIN_PLACE,产地
            info.OriginPlace = null;
            ///SALE_UNIT_PRICE,销售单价
            info.SaleUnitPrice = null;
            ///PART_PRICE,物料金额
            info.PartPrice = null;
            ///PICKUP_NUM,拣配包装数
            info.PickupNum = null;
            ///PICKUP_QTY,拣配数量
            info.PickupQty = null;
            ///IS_SCAN_BOX,是否扫箱
            info.IsScanBox = null;
            ///MODIFY_USER,最后修改人
            info.ModifyUser = null;
            ///MODIFY_DATE,最后修改时间
            info.ModifyDate = null;
            ///FROZEN_STOCK_FLAG,
            info.FrozenStockFlag = null;
            return(info);
        }
 /// <summary>
 /// -> VmiOutputDetailInfo
 /// </summary>
 /// <param name="info"></param>
 public static void GetVmiOutputDetailInfo(ref VmiOutputDetailInfo info)
 {
     ///REQUIRED_BOX_NUM,需求包装数
     if (info.Package.GetValueOrDefault() > 0)
     {
         info.RequiredBoxNum = Convert.ToInt32(Math.Ceiling(info.RequiredQty.GetValueOrDefault() / info.Package.GetValueOrDefault()));
     }
     ///SUM_WEIGHT,合计毛重
     info.SumWeight = info.RequiredBoxNum.GetValueOrDefault() * info.PerpackageGrossWeight.GetValueOrDefault();
     ///SUM_VOLUME,合计体积
     info.SumVolume = info.RequiredBoxNum.GetValueOrDefault() * info.PackageVolume.GetValueOrDefault();
 }
 /// <summary>
 /// PartsStockInfo -> VmiOutputDetailInfo
 /// </summary>
 /// <param name="partsStockInfo"></param>
 /// <param name="info"></param>
 public static void GetVmiOutputDetailInfo(PartsStockInfo partsStockInfo, ref VmiOutputDetailInfo info)
 {
     if (partsStockInfo == null)
     {
         return;
     }
     ///TARGET_DLOC,目的库位
     info.TargetDloc = partsStockInfo.Dloc;
     ///PACKAGE,单包装数
     info.Package = partsStockInfo.InboundPackage;
     ///PACKAGE_MODEL,包装型号
     info.PackageModel = partsStockInfo.InboundPackageModel;
     ///MEASURING_UNIT_NO,单位
     info.MeasuringUnitNo = partsStockInfo.PartUnits;
     ///INHOUSE_PACKAGE,上线包装数量
     info.InhousePackage = partsStockInfo.InhousePackage;
     ///INHOUSE_PACKAGE_MODEL,上线包装型号
     info.InhousePackageModel = partsStockInfo.InhousePackageModel;
     ///PART_CLS,零件类别
     info.PartCls = partsStockInfo.PartCls;
     ///PART_ENAME,车辆模型_零件德文名
     info.PartEname = partsStockInfo.PartEname;
 }
 /// <summary>
 /// VmiOutputInfo -> VmiOutputDetailInfo
 /// </summary>
 /// <param name="vmiOutputInfo"></param>
 /// <param name="info"></param>
 public static void GetVmiOutputDetailInfo(VmiOutputInfo vmiOutputInfo, ref VmiOutputDetailInfo info)
 {
     if (vmiOutputInfo == null)
     {
         return;
     }
     ///OUTPUT_FID,出库单外键
     info.OutputFid = vmiOutputInfo.Fid;
     ///WM_NO,仓库编码
     info.WmNo = vmiOutputInfo.WmNo;
     ///ZONE_NO,存贮区编码
     info.ZoneNo = vmiOutputInfo.ZoneNo;
     ///TRAN_NO,交易编码
     info.TranNo = vmiOutputInfo.OutputNo;
     ///TARGET_WM,目的仓库
     info.TargetWm = vmiOutputInfo.TWmNo;
     ///TARGET_ZONE,目的存贮区
     info.TargetZone = vmiOutputInfo.TZoneNo;
     ///DOCK,工厂模型_DOCK
     info.Dock = vmiOutputInfo.TDock;
     ///BOX_PARTS,基础数据_零件类
     info.BoxParts = vmiOutputInfo.PartBoxCode;
 }
        /// <summary>
        /// InsertInfo
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public long InsertInfo(VmiOutputDetailInfo info)
        {
            VmiOutputInfo outputInfo = new VmiOutputDAL().GetInfo(info.OutputFid.GetValueOrDefault());

            if (outputInfo == null)
            {
                throw new Exception("MC:0x00000084");///数据错误
            }
            if (outputInfo.Status.GetValueOrDefault() != (int)WmmOrderStatusConstants.Created)
            {
                throw new Exception("MC:0x00000506");///出库单为已创建状态才能添加物料
            }
            ///
            if (dal.GetList("[OUTPUT_FID] = N'" + info.OutputFid + "' and [PART_NO] = N'" + info.PartNo + "' and [SUPPLIER_NUM] = N'" + info.SupplierNum + "'", string.Empty).Count > 0)
            {
                throw new Exception("MC:0x00000464");///同物料号供应商不能一致
            }
            ///
            if (info.RequiredQty.GetValueOrDefault() <= 0)
            {
                throw new Exception("MC:0x00000507");///物料需求数量不能小于等于零
            }
            ///有单包装数量时需要计算
            if (info.Package.GetValueOrDefault() > 0)
            {
                info.RequiredBoxNum = Convert.ToInt32(Math.Ceiling(info.RequiredQty.GetValueOrDefault() / info.Package.GetValueOrDefault()));
            }

            ///单据号
            if (string.IsNullOrEmpty(info.TranNo))
            {
                info.TranNo = outputInfo.OutputNo;
            }
            ///仓库
            if (string.IsNullOrEmpty(info.WmNo))
            {
                info.WmNo = outputInfo.WmNo;
            }
            if (string.IsNullOrEmpty(info.TargetWm))
            {
                info.TargetWm = outputInfo.TWmNo;
            }
            ///存储区
            if (string.IsNullOrEmpty(info.ZoneNo))
            {
                info.ZoneNo = outputInfo.ZoneNo;
            }
            if (string.IsNullOrEmpty(info.TargetZone))
            {
                info.TargetZone = outputInfo.TZoneNo;
            }
            ///创建VMI出库单时实发数量等于需求数量
            string create_vmi_output_actual_qty_equals_required = new ConfigDAL().GetValueByCode("CREATE_VMI_OUTPUT_ACTUAL_QTY_EQUALS_REQUIRED");

            if (!string.IsNullOrEmpty(create_vmi_output_actual_qty_equals_required) && create_vmi_output_actual_qty_equals_required.ToLower() == "true")
            {
                if (info.ActualQty == null)
                {
                    info.ActualQty = info.RequiredQty;
                }
                if (info.ActualBoxNum == null)
                {
                    info.ActualBoxNum = info.RequiredBoxNum;
                }
            }
            ///
            return(dal.Add(info));
        }
 /// <summary>
 /// PackageApplianceInfo -> VmiOutputDetailInfo
 /// </summary>
 /// <param name="packageApplianceInfo"></param>
 /// <param name="info"></param>
 public static void GetVmiOutputDetailInfo(PackageApplianceInfo packageApplianceInfo, ref VmiOutputDetailInfo info)
 {
     if (packageApplianceInfo == null)
     {
         return;
     }
     ///PACKAGE_LENGTH,包装长
     info.PackageLength = packageApplianceInfo.PackageLength;
     ///PACKAGE_WIDTH,包装宽
     info.PackageWidth = packageApplianceInfo.PackageWidth;
     ///PACKAGE_HEIGHT,包装高
     info.PackageHeight = packageApplianceInfo.PackageHeight;
     ///PERPACKAGE_GROSS_WEIGHT,单包装毛重
     info.PerpackageGrossWeight = packageApplianceInfo.MaxWeight;
     ///PACKAGE_VOLUME,单包装体积
     info.PackageVolume = info.PackageLength.GetValueOrDefault() * info.PackageWidth.GetValueOrDefault() * info.PackageHeight.GetValueOrDefault();
 }
 /// <summary>
 /// VmiShippingPartInfo -> VmiOutputDetailInfo
 /// </summary>
 /// <param name="vmiShippingPartInfo"></param>
 /// <param name="info"></param>
 public static void GetVmiOutputDetailInfo(VmiShippingPartInfo vmiShippingPartInfo, ref VmiOutputDetailInfo info)
 {
     if (vmiShippingPartInfo == null)
     {
         return;
     }
     ///SUPPLIER_NUM,基础数据_供应商
     info.SupplierNum = vmiShippingPartInfo.SupplierNum;
     ///PART_NO,车辆模型_零件号
     info.PartNo = vmiShippingPartInfo.PartNo;
     ///PART_CNAME,车辆模型_零件中文名
     info.PartCname = vmiShippingPartInfo.PartCname;
     ///REQUIRED_QTY,需求数量
     info.RequiredQty = vmiShippingPartInfo.RequiredPartQty;
     ///RUNSHEET_NO,拉动单号
     info.RunsheetNo = vmiShippingPartInfo.OrderCode;
     ///COMMENTS,备注
     info.Comments = vmiShippingPartInfo.Comments;
 }
        /// <summary>
        /// UpdateInfo
        /// </summary>
        /// <param name="fields"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool UpdateInfo(string fields, long id)
        {
            VmiOutputDetailInfo vmiOutputDetailInfo = dal.GetInfo(id);

            if (vmiOutputDetailInfo == null)
            {
                throw new Exception("MC:0x00000084");///数据错误
            }
            VmiOutputInfo vmiOutputInfo = new VmiOutputDAL().GetInfo(vmiOutputDetailInfo.OutputFid.GetValueOrDefault());

            if (vmiOutputInfo == null)
            {
                throw new Exception("MC:0x00000084");///出库单数据错误
            }
            if (vmiOutputInfo.Status == (int)WmmOrderStatusConstants.Completed ||
                vmiOutputInfo.Status == (int)WmmOrderStatusConstants.Closed)
            {
                throw new Exception("MC:0x00000412");///出库单状态为已关闭或已完成时不能修改其内容
            }
            ///修改用户
            string loginUser = CommonBLL.GetFieldValue(fields, "MODIFY_USER");

            if (vmiOutputInfo.Status == (int)WmmOrderStatusConstants.Published)
            {
                ///实收数量
                string actualQty = CommonBLL.GetFieldValue(fields, "ACTUAL_QTY");
                if (string.IsNullOrEmpty(actualQty))
                {
                    actualQty = "NULL";
                }
                if (Convert.ToDecimal(actualQty) > vmiOutputDetailInfo.RequiredQty.GetValueOrDefault())
                {
                    throw new Exception("MC:0x00000424");///实收数不能大于需求数
                }
                ///实收箱数
                string actualBoxNum = CommonBLL.GetFieldValue(fields, "ACTUAL_BOX_NUM");
                if (string.IsNullOrEmpty(actualBoxNum))
                {
                    actualBoxNum = "NULL";
                }

                fields = "[ACTUAL_QTY] = " + actualQty + ",[ACTUAL_BOX_NUM] = " + actualBoxNum + ",[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' ";
                ///
                return(dal.UpdateInfo(fields, id) > 0 ? true : false);
            }
            ///
            string partNo      = CommonBLL.GetFieldValue(fields, "PART_NO");
            string supplierNum = CommonBLL.GetFieldValue(fields, "SUPPLIER_NUM");

            ///
            if (dal.GetList("[OUTPUT_FID] = N'" + vmiOutputInfo.Fid.GetValueOrDefault() + "' and " +
                            "[PART_NO] = N'" + partNo + "' and " +
                            "[SUPPLIER_NUM] = N'" + supplierNum + "' and " +
                            "[ID] <> " + id + "", string.Empty).Count > 0)
            {
                throw new Exception("MC:0x00000464");///同物料号供应商不能一致
            }
            ///实收数量
            string requiredQty = CommonBLL.GetFieldValue(fields, "REQUIRED_QTY");

            if (string.IsNullOrEmpty(requiredQty))
            {
                requiredQty = "0";
            }
            if (Convert.ToDecimal(requiredQty) <= 0)
            {
                throw new Exception("MC:0x00000507");///物料需求数量不能小于等于零
            }
            ///创建VMI出库单时实发数量等于需求数量
            string create_vmi_output_actual_qty_equals_required = new ConfigDAL().GetValueByCode("CREATE_VMI_OUTPUT_ACTUAL_QTY_EQUALS_REQUIRED");
            ///实收数量
            string package = CommonBLL.GetFieldValue(fields, "PACKAGE");

            if (string.IsNullOrEmpty(package))
            {
                package = "0";
            }
            ///有单包装数量时需要计算
            if (Convert.ToDecimal(package) > 0)
            {
                int requiredBoxNum = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(requiredQty) / Convert.ToDecimal(package)));
                fields = CommonBLL.SetFieldValue(fields, "REQUIRED_BOX_NUM", requiredBoxNum.ToString(), false);
                if (!string.IsNullOrEmpty(create_vmi_output_actual_qty_equals_required) && create_vmi_output_actual_qty_equals_required.ToLower() == "true")
                {
                    fields = CommonBLL.SetFieldValue(fields, "ACTUAL_BOX_NUM", requiredBoxNum.ToString(), false);
                }
            }
            if (!string.IsNullOrEmpty(create_vmi_output_actual_qty_equals_required) && create_vmi_output_actual_qty_equals_required.ToLower() == "true")
            {
                fields = CommonBLL.SetFieldValue(fields, "ACTUAL_QTY", requiredQty.ToString(), false);
            }

            return(dal.UpdateInfo(fields, id) > 0 ? true : false);
        }
        /// <summary>
        /// 发货(提交)
        /// </summary>
        /// <param name="rowsKeyValues"></param>
        /// <param name="loginUser"></param>
        /// <returns></returns>
        public bool ReleaseInfos(List <string> rowsKeyValues, string loginUser)
        {
            if (rowsKeyValues.Count == 0)
            {
                throw new Exception("MC:0x00000084");///数据错误
            }
            List <VmiShippingPartInfo> vmiShippingPartInfos = new List <VmiShippingPartInfo>();

            foreach (var rowsKeyValue in rowsKeyValues)
            {
                string[] keyValues = rowsKeyValue.Split(new char[] { '^' }, StringSplitOptions.RemoveEmptyEntries);
                if (keyValues.Length == 0)
                {
                    throw new Exception("MC:0x00000084");///数据错误
                }
                if (keyValues.Length == 1)
                {
                    throw new Exception("MC:0x00000496");///预发货数量不能为空
                }
                VmiShippingPartInfo vmiShippingPartInfo = new VmiShippingPartInfo();
                vmiShippingPartInfo.Id            = Convert.ToInt64(keyValues[0]);
                vmiShippingPartInfo.AsnConfirmQty = Convert.ToDecimal(keyValues[1]);
                vmiShippingPartInfos.Add(vmiShippingPartInfo);
            }

            List <VmiShippingPartInfo> vmiShippingParts = dal.GetList("[ID] in (" + string.Join(",", vmiShippingPartInfos.Select(d => d.Id).ToArray()) + ")", string.Empty);

            if (vmiShippingParts.Count == 0)
            {
                throw new Exception("MC:0x00000084");///数据错误
            }
            List <VmiPullOrderInfo> vmiPullOrderInfos = new VmiPullOrderDAL().GetList("" +
                                                                                      "[FID] in ('" + string.Join("','", vmiShippingParts.Select(d => d.OrderFid.GetValueOrDefault().ToString()).ToArray()) + "') and " +
                                                                                      "[ORDER_STATUS] <> " + (int)PullOrderStatusConstants.Released + "", string.Empty);

            if (vmiPullOrderInfos.Count > 0)
            {
                throw new Exception("MC:0x00000378");///状态为已发布时才能进行发货操作
            }
            ///TODO:此时对应购物车中的相关数据是否需要清理

            ///预执行SQL脚本
            StringBuilder @string = new StringBuilder();
            ///根据零件类、拉动模式等条件分组
            var vmiShippingPartBoxs = vmiShippingParts.
                                      GroupBy(d => new { d.PartBoxCode, d.PullMode, d.RouteCode, d.Plant, d.SWmNo, d.SZoneNo, d.TWmNo, d.TZoneNo, d.TDock }).
                                      Select(d => new { d.Key }).ToList();

            ///获取零件仓储信息集合
            List <PartsStockInfo> partsStockInfos = new PartsStockDAL().GetList("[PART_NO] in ('" + string.Join("','", vmiShippingParts.Select(d => d.PartNo).ToArray()) + "')", string.Empty);
            ///发布VMI出库单时实发数量等于需求数量
            string release_vmi_output_actual_qty_equals_required = new ConfigDAL().GetValueByCode("RELEASE_VMI_OUTPUT_ACTUAL_QTY_EQUALS_REQUIRED");

            ///遍历零件类
            foreach (var vmiShippingPartBox in vmiShippingPartBoxs)
            {
                ///
                List <VmiShippingPartInfo> partInfos = vmiShippingParts.Where(d =>
                                                                              d.PartBoxCode == vmiShippingPartBox.Key.PartBoxCode &&
                                                                              d.PullMode == vmiShippingPartBox.Key.PullMode &&
                                                                              d.RouteCode == vmiShippingPartBox.Key.RouteCode &&
                                                                              d.Plant == vmiShippingPartBox.Key.Plant &&
                                                                              d.SWmNo == vmiShippingPartBox.Key.SWmNo &&
                                                                              d.SZoneNo == vmiShippingPartBox.Key.SZoneNo &&
                                                                              d.TWmNo == vmiShippingPartBox.Key.TWmNo &&
                                                                              d.TZoneNo == vmiShippingPartBox.Key.TZoneNo &&
                                                                              d.TDock == vmiShippingPartBox.Key.TDock).ToList();
                if (partInfos.Count == 0)
                {
                    throw new Exception("MC:0x00000084");///数据错误
                }
                ///
                VmiOutputInfo vmiOutputInfo = VmiOutputBLL.CreateVmiOutputInfo(loginUser);
                ///OUTPUT_NO,出库单号
                vmiOutputInfo.OutputNo = new SeqDefineDAL().GetCurrentCode("VMI_OUTPUT_NO");
                ///ASN_NO,ASN编号,TODO:目前以是否写入了ASN_NO作为区别是否编辑ASN的分类,后续考虑增加字段ASN_FLAG?
                vmiOutputInfo.AsnNo = vmiOutputInfo.OutputNo;
                ///WM_NO,仓库编码
                vmiOutputInfo.WmNo = vmiShippingPartBox.Key.SWmNo;
                ///ZONE_NO,存贮区编码
                vmiOutputInfo.ZoneNo = vmiShippingPartBox.Key.SZoneNo;
                ///T_WM_NO,目标仓库代码
                vmiOutputInfo.TWmNo = vmiShippingPartBox.Key.TWmNo;
                ///T_ZONE_NO,目标存储区代码
                vmiOutputInfo.TZoneNo = vmiShippingPartBox.Key.TZoneNo;
                ///T_DOCK,目标道口代码
                vmiOutputInfo.TDock = vmiShippingPartBox.Key.TDock;
                ///PART_BOX_CODE,零件类代码
                vmiOutputInfo.PartBoxCode = vmiShippingPartBox.Key.PartBoxCode;
                ///ROUTE,送货路径
                vmiOutputInfo.Route = vmiShippingPartBox.Key.RouteCode;
                ///PULL_MODE,拉动方式
                vmiOutputInfo.PullMode = vmiShippingPartBox.Key.PullMode;
                ///OUTPUT_TYPE,出库类型
                vmiOutputInfo.OutputType = (int)VmiOutputTypeConstants.PullingOutbound;
                ///SEND_TIME,发送时间
                vmiOutputInfo.SendTime = DateTime.Now;
                ///STATUS,出库单状态
                vmiOutputInfo.Status = (int)WmmOrderStatusConstants.Published;
                ///
                @string.AppendLine(VmiOutputDAL.GetInsertSql(vmiOutputInfo));
                ///行号
                int rowNo = 0;
                foreach (var partInfo in partInfos)
                {
                    VmiShippingPartInfo shippingPartInfo = vmiShippingPartInfos.FirstOrDefault(d => d.Id == partInfo.Id);
                    if (shippingPartInfo == null)
                    {
                        throw new Exception("MC:0x00000084");///数据错误
                    }
                    if (partInfo.AsnDraftQty.GetValueOrDefault() < shippingPartInfo.AsnConfirmQty.GetValueOrDefault())
                    {
                        throw new Exception("MC:0x00000501");///发货数量不能超过预发货数量
                    }
                    ///获取对应零件仓储信息
                    PartsStockInfo partsStockInfo = partsStockInfos.FirstOrDefault(d =>
                                                                                   d.WmNo == partInfo.TWmNo &&
                                                                                   d.ZoneNo == partInfo.TZoneNo &&
                                                                                   d.PartNo == partInfo.PartNo &&
                                                                                   d.SupplierNum == partInfo.SupplierNum);
                    if (partsStockInfo == null)
                    {
                        throw new Exception("MC:0x00000451");///物料仓储信息错误
                    }
                    ///页面提交来的发货数量
                    partInfo.RequiredPartQty = shippingPartInfo.AsnConfirmQty;
                    ///
                    VmiOutputDetailInfo vmiOutputDetailInfo = VmiOutputDetailBLL.CreateVmiOutputDetailInfo(loginUser);
                    ///ROW_NO,行号
                    vmiOutputDetailInfo.RowNo = ++rowNo;
                    VmiOutputDetailBLL.GetVmiOutputDetailInfo(partInfo, ref vmiOutputDetailInfo);
                    VmiOutputDetailBLL.GetVmiOutputDetailInfo(vmiOutputInfo, ref vmiOutputDetailInfo);
                    VmiOutputDetailBLL.GetVmiOutputDetailInfo(partsStockInfo, ref vmiOutputDetailInfo);
                    VmiOutputDetailBLL.GetVmiOutputDetailInfo(ref vmiOutputDetailInfo);
                    if (!string.IsNullOrEmpty(release_vmi_output_actual_qty_equals_required) && release_vmi_output_actual_qty_equals_required.ToLower() == "true")
                    {
                        ///ACTUAL_BOX_NUM,实际包装数
                        vmiOutputDetailInfo.ActualBoxNum = vmiOutputDetailInfo.RequiredBoxNum;
                        ///ACTUAL_QTY,实际数量
                        vmiOutputDetailInfo.ActualQty = vmiOutputDetailInfo.RequiredQty;
                    }
                    @string.AppendLine(VmiOutputDetailDAL.GetInsertSql(vmiOutputDetailInfo));
                    ///
                    string validFlagSql = string.Empty;
                    if (partInfo.AsnDraftQty.GetValueOrDefault() == shippingPartInfo.AsnConfirmQty.GetValueOrDefault())
                    {
                        validFlagSql = ",[VALID_FLAG] = 0";
                    }
                    ///
                    @string.AppendLine("update [LES].[TE_MPM_VMI_SHIPPING_PART] " +
                                       "set [ASN_DRAFT_QTY] = isnull([ASN_DRAFT_QTY],0) - " + shippingPartInfo.AsnConfirmQty.GetValueOrDefault() + "" + validFlagSql + ",[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' " +
                                       "where [ID] = " + shippingPartInfo.Id + ";");
                    ///
                    @string.AppendLine("update [LES].[TT_MPM_VMI_PULL_ORDER_DETAIL] " +
                                       "set [ASN_DRAFT_QTY] = isnull([ASN_DRAFT_QTY],0) - " + shippingPartInfo.AsnConfirmQty.GetValueOrDefault() + "," +
                                       "[ASN_CONFIRM_QTY] = isnull([ASN_CONFIRM_QTY],0) + " + shippingPartInfo.AsnConfirmQty.GetValueOrDefault() + "," +
                                       "[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' " +
                                       "where [FID] = N'" + partInfo.Fid.GetValueOrDefault() + "';");
                }
            }
            ///
            using (var trans = new TransactionScope())
            {
                if (!CommonDAL.ExecuteNonQueryBySql(@string.ToString()))
                {
                    throw new Exception("MC:0x00000173");///操作失败
                }
                trans.Complete();
            }

            return(true);
        }
Ejemplo n.º 10
0
 /// <summary>
 /// VmiOutputDetailInfo -> OutputDetailInfo
 /// </summary>
 /// <param name="vmiOutputDetailInfo"></param>
 /// <param name="info"></param>
 public static void GetOutputDetailInfo(VmiOutputDetailInfo vmiOutputDetailInfo, ref OutputDetailInfo info)
 {
     if (vmiOutputDetailInfo == null)
     {
         return;
     }
     ///ID,出库单明细ID
     info.Id = vmiOutputDetailInfo.Id;
     ///FID,
     info.Fid = vmiOutputDetailInfo.Fid;
     ///OUTPUT_FID,出库单外键
     info.OutputFid = vmiOutputDetailInfo.OutputFid;
     ///PLANT,工厂模型_工厂
     info.Plant = vmiOutputDetailInfo.Plant;
     ///SUPPLIER_NUM,基础数据_供应商
     info.SupplierNum = vmiOutputDetailInfo.SupplierNum;
     ///WM_NO,仓库编码
     info.WmNo = vmiOutputDetailInfo.WmNo;
     ///ZONE_NO,存贮区编码
     info.ZoneNo = vmiOutputDetailInfo.ZoneNo;
     ///DLOC,库位
     info.Dloc = vmiOutputDetailInfo.Dloc;
     ///TRAN_NO,交易编码
     info.TranNo = vmiOutputDetailInfo.TranNo;
     ///TARGET_WM,目的仓库
     info.TargetWm = vmiOutputDetailInfo.TargetWm;
     ///TARGET_ZONE,目的存贮区
     info.TargetZone = vmiOutputDetailInfo.TargetZone;
     ///TARGET_DLOC,目的库位
     info.TargetDloc = vmiOutputDetailInfo.TargetDloc;
     ///PART_NO,车辆模型_零件号
     info.PartNo = vmiOutputDetailInfo.PartNo;
     ///PART_CNAME,车辆模型_零件中文名
     info.PartCname = vmiOutputDetailInfo.PartCname;
     ///REQUIRED_BOX_NUM,需求包装数
     info.RequiredBoxNum = vmiOutputDetailInfo.RequiredBoxNum;
     ///REQUIRED_QTY,需求数量
     info.RequiredQty = vmiOutputDetailInfo.RequiredQty;
     ///ACTUAL_BOX_NUM,实际包装数
     info.ActualBoxNum = vmiOutputDetailInfo.ActualBoxNum;
     ///ACTUAL_QTY,实际数量
     info.ActualQty = vmiOutputDetailInfo.ActualQty;
     ///PACKAGE,单包装数
     info.Package = vmiOutputDetailInfo.Package;
     ///PACKAGE_MODEL,包装型号
     info.PackageModel = vmiOutputDetailInfo.PackageModel;
     ///BARCODE_DATA,条码
     info.BarcodeData = vmiOutputDetailInfo.BarcodeData;
     ///MEASURING_UNIT_NO,单位
     info.MeasuringUnitNo = vmiOutputDetailInfo.MeasuringUnitNo;
     ///IDENTIFY_PART_NO,车辆模型_标识零件号
     info.IdentifyPartNo = vmiOutputDetailInfo.IdentifyPartNo;
     ///PART_ENAME,车辆模型_零件德文名
     info.PartEname = vmiOutputDetailInfo.PartEname;
     ///DOCK,工厂模型_DOCK
     info.Dock = vmiOutputDetailInfo.Dock;
     ///ASSEMBLY_LINE,工厂模型_流水线
     info.AssemblyLine = vmiOutputDetailInfo.AssemblyLine;
     ///BOX_PARTS,基础数据_零件类
     info.BoxParts = vmiOutputDetailInfo.BoxParts;
     ///SEQUENCE_NO,排序号
     info.SequenceNo = vmiOutputDetailInfo.SequenceNo;
     ///PICKUP_SEQ_NO,捡料顺序号
     info.PickupSeqNo = vmiOutputDetailInfo.PickupSeqNo;
     ///RDC_DLOC,供应商库位
     info.RdcDloc = vmiOutputDetailInfo.RdcDloc;
     ///INHOUSE_PACKAGE,上线包装数量
     info.InhousePackage = vmiOutputDetailInfo.InhousePackage;
     ///INHOUSE_PACKAGE_MODEL,上线包装型号
     info.InhousePackageModel = vmiOutputDetailInfo.InhousePackageModel;
     ///SUPPLIER_NUM_SHEET,基础数据组单_供应商
     info.SupplierNumSheet = vmiOutputDetailInfo.SupplierNumSheet;
     ///BOX_PARTS_SHEET,基础数据_零件类组单
     info.BoxPartsSheet = vmiOutputDetailInfo.BoxPartsSheet;
     ///ORDER_NO,订单号
     info.OrderNo = vmiOutputDetailInfo.OrderNo;
     ///ITEM_NO,ITEM号
     info.ItemNo = vmiOutputDetailInfo.ItemNo;
     ///RUNSHEET_NO,拉动单号
     info.RunsheetNo = vmiOutputDetailInfo.RunsheetNo;
     ///REPACKAGE_FLAG,翻包处理标记
     info.RepackageFlag = vmiOutputDetailInfo.RepackageFlag;
     ///ROW_NO,行号
     info.RowNo = vmiOutputDetailInfo.RowNo;
     ///ORIGIN_PLACE,产地
     info.OriginPlace = vmiOutputDetailInfo.OriginPlace;
     ///SALE_UNIT_PRICE,销售单价
     info.SaleUnitPrice = vmiOutputDetailInfo.SaleUnitPrice;
     ///PART_PRICE,物料金额
     info.PartPrice = vmiOutputDetailInfo.PartPrice;
     ///PART_CLS,零件类别
     info.PartCls = vmiOutputDetailInfo.PartCls;
     ///PICKUP_NUM,拣配包装数
     info.PickupNum = vmiOutputDetailInfo.PickupNum;
     ///PICKUP_QTY,拣配数量
     info.PickupQty = vmiOutputDetailInfo.PickupQty;
     ///IS_SCAN_BOX,是否扫箱
     info.IsScanBox = vmiOutputDetailInfo.IsScanBox;
     ///PACKAGE_LENGTH,包装长
     info.PackageLength = vmiOutputDetailInfo.PackageLength;
     ///PACKAGE_WIDTH,包装宽
     info.PackageWidth = vmiOutputDetailInfo.PackageWidth;
     ///PACKAGE_HEIGHT,包装高
     info.PackageHeight = vmiOutputDetailInfo.PackageHeight;
     ///PERPACKAGE_GROSS_WEIGHT,单包装毛重
     info.PerpackageGrossWeight = vmiOutputDetailInfo.PerpackageGrossWeight;
     ///COMMENTS,备注
     info.Comments = vmiOutputDetailInfo.Comments;
     ///VALID_FLAG,逻辑删除标记
     info.ValidFlag = vmiOutputDetailInfo.ValidFlag;
     ///CREATE_USER,创建人
     info.CreateUser = vmiOutputDetailInfo.CreateUser;
     ///CREATE_DATE,创建时间
     info.CreateDate = vmiOutputDetailInfo.CreateDate;
     ///MODIFY_USER,最后修改人
     info.ModifyUser = vmiOutputDetailInfo.ModifyUser;
     ///MODIFY_DATE,最后修改时间
     info.ModifyDate = vmiOutputDetailInfo.ModifyDate;
     ///PACKAGE_VOLUME,单包装体积
     info.PackageVolume = vmiOutputDetailInfo.PackageVolume;
     ///SUM_WEIGHT,合计毛重
     info.SumWeight = vmiOutputDetailInfo.SumWeight;
     ///SUM_VOLUME,合计体积
     info.SumVolume = vmiOutputDetailInfo.SumVolume;
     ///FROZEN_STOCK_FLAG,已冻结库存标记
     info.FrozenStockFlag = vmiOutputDetailInfo.FrozenStockFlag;
 }