/// <summary>
 /// VmiPullOrderInfo -> VmiShippingPartInfo
 /// </summary>
 /// <param name="vmiPullOrderInfo"></param>
 /// <param name="info"></param>
 public static void GetVmiShippingPartInfo(VmiPullOrderInfo vmiPullOrderInfo, ref VmiShippingPartInfo info)
 {
     if (vmiPullOrderInfo == null)
     {
         return;
     }
     ///PULL_MODE,拉动模式
     info.PullMode = vmiPullOrderInfo.PullMode;
     ///PART_BOX_CODE,零件类代码
     info.PartBoxCode = vmiPullOrderInfo.PartBoxCode;
     ///ROUTE_CODE,路径代码
     info.RouteCode = vmiPullOrderInfo.RouteCode;
     ///PLANT,工厂
     info.Plant = vmiPullOrderInfo.Plant;
     ///S_WM_NO,来源仓库
     info.SWmNo = vmiPullOrderInfo.SWmNo;
     ///S_ZONE_NO,来源存储区
     info.SZoneNo = vmiPullOrderInfo.SZoneNo;
     ///T_WM_NO,目标仓库
     info.TWmNo = vmiPullOrderInfo.TWmNo;
     ///T_ZONE_NO,目标存储区
     info.TZoneNo = vmiPullOrderInfo.TZoneNo;
     ///T_DOCK,目标道口
     info.TDock = vmiPullOrderInfo.Dock;
 }
Ejemplo n.º 2
0
 public long InsertInfo(VmiPullOrderInfo info)
 {
     return(dal.Add(info));
 }
        /// <summary>
        /// 加入VMI物料购物车
        /// </summary>
        /// <returns></returns>
        public static void AddCartVmiShippingPartInfo(List <VmiPullOrderDetailInfo> vmiPullOrderDetailInfos, string loginUser)
        {
            if (vmiPullOrderDetailInfos.Count == 0)
            {
                throw new Exception("MC:3x00000027");///传入参数异常
            }
            ///现有数据库中的VMI拉动单明细
            List <VmiPullOrderDetailInfo> vmiPullOrderDetails = new VmiPullOrderDetailDAL().GetList("" +
                                                                                                    "[ID] in (" + string.Join(",", vmiPullOrderDetailInfos.Select(w => w.Id).ToArray()) + ")", string.Empty);

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

            if (vmiPullOrderInfos.Count == 0)
            {
                throw new Exception("MC:0x00000084");///数据错误
            }
            ///当前登录用户的预发货集合
            List <VmiShippingPartInfo> vmiShippingPartInfos = new VmiShippingPartDAL().GetList("[CREATE_USER] = N'" + loginUser + "'", string.Empty);
            StringBuilder @string = new StringBuilder();

            foreach (var vmiPullOrderDetail in vmiPullOrderDetails)
            {
                ///本次预发货数量
                VmiPullOrderDetailInfo orderDetailInfo = vmiPullOrderDetailInfos.FirstOrDefault(d => d.Id == vmiPullOrderDetail.Id);
                if (orderDetailInfo == null)
                {
                    throw new Exception("MC:0x00000084");///数据错误
                }
                VmiPullOrderInfo vmiPullOrderInfo = vmiPullOrderInfos.FirstOrDefault(d => d.Fid.GetValueOrDefault() == vmiPullOrderDetail.OrderFid.GetValueOrDefault());
                if (vmiPullOrderInfo == null)
                {
                    throw new Exception("MC:0x00000084");///数据错误
                }
                if (vmiPullOrderDetail.RequiredPartQty.GetValueOrDefault() -
                    vmiPullOrderDetail.AsnDraftQty.GetValueOrDefault() -
                    vmiPullOrderDetail.AsnConfirmQty.GetValueOrDefault() -
                    orderDetailInfo.AsnQty < 0)
                {
                    throw new Exception("MC:0x00000497");///需求数量扣除草稿数量以及确认数量后不够本次预发货数量
                }
                ///更新VMI拉动单草稿数量
                @string.AppendLine("update [LES].[TT_MPM_VMI_PULL_ORDER_DETAIL] " +
                                   "set [ASN_DRAFT_QTY] = isnull([ASN_DRAFT_QTY],0) + " + orderDetailInfo.AsnQty + ",[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' " +
                                   "where [ID] = " + orderDetailInfo.Id + ";");

                ///预发货集合中是否已存在拉动单明细,存在则累加数量
                VmiShippingPartInfo vmiShippingPartInfo = vmiShippingPartInfos.FirstOrDefault(d => d.Fid.GetValueOrDefault() == vmiPullOrderDetail.Fid.GetValueOrDefault());
                if (vmiShippingPartInfo == null)
                {
                    ///
                    vmiShippingPartInfo = CreateVmiShippingPartInfo(loginUser);
                    GetVmiShippingPartInfo(vmiPullOrderDetail, ref vmiShippingPartInfo);
                    GetVmiShippingPartInfo(vmiPullOrderInfo, ref vmiShippingPartInfo);
                    ///ASN_DRAFT_QTY,ASN草稿物料数量
                    vmiShippingPartInfo.AsnDraftQty = orderDetailInfo.AsnQty;
                    @string.AppendLine(VmiShippingPartDAL.GetInsertSql(vmiShippingPartInfo));
                }
                else
                {
                    @string.AppendLine("update [LES].[TE_MPM_VMI_SHIPPING_PART] " +
                                       "set [ASN_DRAFT_QTY] = isnull([ASN_DRAFT_QTY],0) + " + orderDetailInfo.AsnQty + ",[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' " +
                                       "where [ID] = " + vmiShippingPartInfo.Id + ";");
                }
            }
            ///执行
            using (TransactionScope trans = new TransactionScope())
            {
                if (@string.Length > 0)
                {
                    CommonDAL.ExecuteNonQueryBySql(@string.ToString());
                }
                trans.Complete();
            }
        }