Example #1
0
        /// <summary>
        /// 发布
        /// </summary>
        /// <param name="aId"></param>
        /// <param name="loginUser"></param>
        /// <returns></returns>
        public bool StartInfos(List <string> rowsKeyValues, string loginUser)
        {
            if (dal.GetList("[ID] IN (" + string.Join(",", rowsKeyValues) + ") and [STATUS] = " + (int)InventoryOrderStatusConstants.CREATED + "", string.Empty).Count == 0)
            {
                throw new Exception("MC:0x00000369");///状态为已创建的盘点单才允许进行发布
            }
            List <InventoryNoticeOrderInfo> info = dal.GetList("[ID] IN (" + string.Join(",", rowsKeyValues) + ")", string.Empty);

            if (info.Count == 0)
            {
                throw new Exception("MC:0x00000084");///数据错误
            }
            List <PartsStockInfo> partsStocks = new PartsStockDAL().GetList("[WM_NO] in ('" + string.Join("','", info.Select(d => d.WmNo).ToArray()) + "') and [ZONE_NO] in ('" + string.Join("','", info.Select(d => d.ZoneNo).ToArray()) + "') and [KEEPER] in ('" + string.Join("','", info.Select(d => d.Keeper).ToArray()) + "')", string.Empty);

            if (partsStocks.Count == 0)
            {
                throw new Exception("MC:0x00000370");///没有相关的物料仓储信息
            }
            List <StocksInfo> stocks = new StocksDAL().GetList("[WM_NO] in ('" + string.Join("','", partsStocks.Select(d => d.WmNo).ToArray()) + "') and [ZONE_NO] in ('" + string.Join("','", partsStocks.Select(d => d.ZoneNo).ToArray()) + "') and [PACKAGE_MODEL] in ('" + string.Join("','", partsStocks.Select(d => d.InboundPackageModel).ToArray()) + "') and [PART_NO] in ('" + string.Join("','", partsStocks.Select(d => d.PartNo).ToArray()) + "') and [SUPPLIER_NUM] in ('" + string.Join("','", partsStocks.Select(d => d.SupplierNum).ToArray()) + "')", string.Empty);
            string            check  = new ConfigBLL().GetValueByCode("NO_STOCK_MATERIAL_NOT_RELEASE_TO_INVENTORY_ORDER");
            string            stock  = new ConfigBLL().GetValueByCode("MATERIALS_USED_IN_AVAILABLE_STOCK");
            string            sql    = string.Empty;

            foreach (var item in info)
            {
                List <PartsStockInfo> partsStockInfos = partsStocks.Where(d => d.Keeper == item.Keeper && d.WmNo == item.WmNo && d.ZoneNo == item.ZoneNo).ToList();
                if (partsStockInfos.Count == 0)
                {
                    throw new Exception("MC:0x00000370");///没有相关的物料仓储信息
                }
                foreach (var items in partsStockInfos)
                {
                    List <StocksInfo> stocksInfos = stocks.Where(d => d.Keeper == items.Keeper && d.WmNo == items.WmNo && d.ZoneNo == item.ZoneNo && d.PartNo == items.PartNo).ToList();
                    string            Package     = items.Package == null ? "null" : items.Package.ToString();
                    if (check == "true")
                    {
                        int sum = 0;
                        if (stock == "true")
                        {
                            sum = (int)stocksInfos.Select(d => d.AvailbleStocks).Sum();
                        }
                        else
                        {
                            sum = (int)stocksInfos.Select(d => d.StocksNum).Sum();
                        }

                        if (sum > 0)
                        {
                            sql += "insert into [LES].[TT_WMM_INVENTORY_ORDER_PART] "
                                   + "([FID],[ORDER_CODE],[ORDER_FID],[WM_NO],[ZONE_NO],[DLOC],[PART_NO],[SUPPLIER_NUM],[PACKAGE_MODEL],[PACKAGE],[PART_CNAME],[PACKAGE_QTY],[REFERENCE_QTY],[VALID_FLAG],[CREATE_DATE],[CREATE_USER])"
                                   + "values("
                                   + "newid(),"
                                   + "N'" + item.OrderCode + "',"
                                   + "N'" + item.Fid + "',"
                                   + "N'" + items.WmNo + "',"
                                   + "N'" + items.ZoneNo + "',"
                                   + "N'" + items.Dloc + "',"
                                   + "N'" + items.PartNo + "',"
                                   + "N'" + items.SupplierNum + "',"
                                   + "N'" + items.InboundPackageModel + "',"
                                   + Package + ","
                                   + "N'" + items.PartCname + "',"
                                   + "N'" + stocksInfos.Select(d => d.Stocks).Sum() + "',"
                                   + "N'" + sum + "',"
                                   + "1,"
                                   + "GETDATE(),"
                                   + "N'" + loginUser + "'"
                                   + ")\n";
                        }
                    }
                    else
                    {
                        int sum = 0;
                        if (stock == "true")
                        {
                            sum = (int)stocksInfos.Select(d => d.AvailbleStocks).Sum();
                        }
                        else
                        {
                            sum = (int)stocksInfos.Select(d => d.StocksNum).Sum();
                        }
                        sql += "insert into [LES].[TT_WMM_INVENTORY_ORDER_PART] "
                               + "([FID],[ORDER_CODE],[ORDER_FID],[WM_NO],[ZONE_NO],[DLOC],[PART_NO],[SUPPLIER_NUM],[PACKAGE_MODEL],[PACKAGE],[PART_CNAME],[PACKAGE_QTY],[REFERENCE_QTY],[VALID_FLAG],[CREATE_DATE],[CREATE_USER])"
                               + "values("
                               + "newid(),"
                               + "N'" + item.OrderCode + "',"
                               + "N'" + item.Fid + "',"
                               + "N'" + items.WmNo + "',"
                               + "N'" + items.ZoneNo + "',"
                               + "N'" + items.Dloc + "',"
                               + "N'" + items.PartNo + "',"
                               + "N'" + items.SupplierNum + "',"
                               + "N'" + items.PackageModel + "',"
                               + Package + ","
                               + "N'" + items.PartCname + "',"
                               + "N'" + stocksInfos.Select(d => d.Stocks).Sum() + "',"
                               + "N'" + sum + "',"
                               + "1,"
                               + "GETDATE(),"
                               + "N'" + loginUser + "'"
                               + ")\n";
                    }
                }
            }


            using (TransactionScope trans = new TransactionScope())
            {
                if (string.IsNullOrEmpty(sql))
                {
                    throw new Exception("MC:0x00000440");///没有相关物料明细
                }
                sql += "update [LES].[TT_WMM_INVENTORY_NOTICE_ORDER] set [STATUS] = " + (int)InventoryOrderStatusConstants.PUBLISHED + ",[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' where [VALID_FLAG] = 1 and [ID] IN (" + string.Join(",", rowsKeyValues) + ") ";
                CommonDAL.ExecuteNonQueryBySql(sql);

                trans.Complete();
            }
            return(true);
        }