/// <summary>
        /// MaintainInhouseLogisticStandardInfo=>TranDetailsInfo
        /// </summary>
        /// <param name="maintainInhouseLogisticStandardInfo"></param>
        /// <param name="tranDetailsInfo"></param>
        /// <returns></returns>
        public static void GetTranDetailsInfo(MaintainInhouseLogisticStandardInfo maintainInhouseLogisticStandardInfo,
                                              string stockCheckLockMaterialSyncUpdatePartStockFlag,
                                              ref TranDetailsInfo tranDetailsInfo)
        {
            if (maintainInhouseLogisticStandardInfo == null)
            {
                return;
            }
            ///工位
            tranDetailsInfo.Location = maintainInhouseLogisticStandardInfo.Location;
            ///库位
            tranDetailsInfo.StorageLocation = maintainInhouseLogisticStandardInfo.StorageLocation;
            /////是否排查锁定库存
            //if (stockCheckLockMaterialSyncUpdatePartStockFlag.ToLower() == "true"
            //    && maintainInhouseLogisticStandardInfo.CheckMaterialStockFlag.GetValueOrDefault())

            ///是否排查锁定库存
            if (stockCheckLockMaterialSyncUpdatePartStockFlag.ToLower() == "true")
            {
                ///将物料出库交易类型变更为物料解冻
                if (tranDetailsInfo.TranType.GetValueOrDefault() == (int)WmmTranTypeConstants.Outbound)
                {
                    tranDetailsInfo.TranType = (int)WmmTranTypeConstants.MaterialThawing;
                }
                if (tranDetailsInfo.TranType.GetValueOrDefault() == (int)WmmTranTypeConstants.StateFreezing)
                {
                    tranDetailsInfo.TranType = (int)WmmTranTypeConstants.None;
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 将交易记录加工为库存投放数据
        /// </summary>
        /// <param name="tranDetailsInfo"></param>
        /// <param name="zonesInfo"></param>
        /// <param name="sourceFlag"></param>
        /// <returns></returns>
        private StocksInfo HandlingStocksData(TranDetailsInfo tranDetailsInfo, MaintainPartsInfo maintainPartsInfo, ZonesInfo zonesInfo, bool sourceFlag)
        {
            ///新建库存对象
            StocksInfo stocksInfo = stocksBLL.CreateStocksInfo(loginUser);

            ///更新物料基础信息
            stocksBLL.UpdateMaintainPartsInfo(maintainPartsInfo, ref stocksInfo);
            ///来源库存对象信息填充
            if (sourceFlag)
            {
                stocksBLL.GetSourceStocksInfo(tranDetailsInfo, ref stocksInfo);
            }
            ///目标库存对象信息填充
            else
            {
                stocksBLL.GetTargetStocksInfo(tranDetailsInfo, zonesInfo, ref stocksInfo);
            }
            ///根据库存管理维度获取更新条件
            string stockUpdateConditions = GetStockUpdateConditions(ref stocksInfo);

            ///若交易数据指定了库存数据外键,则根据外键获取主键
            if (sourceFlag && tranDetailsInfo.StocksFid != null)
            {
                stocksInfo.Id = stocksBLL.GetStocksId(tranDetailsInfo.StocksFid.GetValueOrDefault());
            }
            ///获取库存数据主键
            if (stocksInfo.Id == 0)
            {
                stocksInfo.Id = stocksBLL.GetStocksId(stocksInfo, stockUpdateConditions);
            }
            return(stocksInfo);
        }
 /// <summary>
 /// 根据匹配库存数据更新交易记录
 /// </summary>
 /// <param name="stocksInfo"></param>
 /// <param name="tranDetailsInfo"></param>
 public static void GetTranDetailsInfo(StocksInfo stocksInfo, ref TranDetailsInfo tranDetailsInfo)
 {
     if (stocksInfo == null)
     {
         return;
     }
     ///是否已结算
     tranDetailsInfo.SettledFlag = stocksInfo.SettledFlag;
     ///库存的逻辑外键
     //tranDetailsInfo.StocksFid = stocksInfo.Fid;
     ///来源库位
     tranDetailsInfo.Dloc = stocksInfo.Dloc;
     ///匹配数量
     if (stocksInfo.MatchedQty != null)
     {
         tranDetailsInfo.ActualQty = stocksInfo.MatchedQty;
         ///重新计算包装数量
         if (tranDetailsInfo.Package == null || tranDetailsInfo.Package.GetValueOrDefault() == 0)
         {
             tranDetailsInfo.Package = 1;
         }
         tranDetailsInfo.ActualPackageQty = Convert.ToInt32(Math.Ceiling(stocksInfo.MatchedQty.GetValueOrDefault() / tranDetailsInfo.Package.GetValueOrDefault()));
     }
     ///如果没有供应商则根据库存数据中的供应商赋值
     if (string.IsNullOrEmpty(tranDetailsInfo.SupplierNum))
     {
         tranDetailsInfo.SupplierNum = stocksInfo.SupplierNum;
     }
     ///SETTLED_FLAG
 }
Esempio n. 4
0
        /// <summary>
        /// 036 wms Create By Xue 待商议
        /// </summary>
        /// <param name="tranDetailsInfo"></param>
        private string CreateWmsTranData(TranDetailsInfo tranDetailsInfo)
        {
            string sql = string.Empty;

            if (tranDetailsInfo == null)
            {
                return(string.Empty);
            }
            int orderType = 0;

            if (tranDetailsInfo.TranNo != tranDetailsInfo.RunsheetNo)
            {
                orderType = 40;
            }
            else if (tranDetailsInfo.TranNo == tranDetailsInfo.RunsheetNo)
            {
                if (!string.IsNullOrEmpty(tranDetailsInfo.BoxParts))
                {
                    PartsBoxInfo partsBoxInfo = new PartsBoxBLL().GetInfoByPartBox(tranDetailsInfo.BoxParts);
                    orderType = partsBoxInfo.PullMode;
                }
                else
                {
                    if (string.IsNullOrEmpty(tranDetailsInfo.RunsheetNo) && string.IsNullOrEmpty(tranDetailsInfo.BoxParts))
                    {
                        orderType = 50;
                    }
                    else
                    {
                        orderType = 30;
                    }
                }
            }
            return(sql = string.Format(@"insert into [LES].[TI_IFM_WMS_TRAN_OUT]([FID],[SOURCE_ORDER_CODE],[SOURCE_ORDER_TYPE],[PART_NO],[DELIVERY_QTY],[PROCESS_FLAG],[PROCESS_TIME],[LOG_FID],[VALID_FLAG],[CREATE_DATE],[CREATE_USER],[SUPPLIER_NUM],[SUPPLIER_NAME]) values(newid(),'{0}',{1},'{2}',{3},10,getdate(),null,1,getdate(),'{4}','{5}','{6}');", tranDetailsInfo.TranNo, orderType, tranDetailsInfo.PartNo, tranDetailsInfo.ActualQty, loginUser, tranDetailsInfo.SupplierNum, tranDetailsInfo.SupplierName));
        }
 /// <summary>
 /// OutputInfo=>TranDetailsInfo
 /// </summary>
 /// <param name="outputInfo"></param>
 /// <param name="tranDetailsInfo"></param>
 /// <returns></returns>
 public static void GetTranDetailsInfo(OutputInfo outputInfo, ref TranDetailsInfo tranDetailsInfo)
 {
     ///交易时间
     tranDetailsInfo.TranDate = outputInfo.TranTime;
     if (tranDetailsInfo.TranDate == null)
     {
         tranDetailsInfo.TranDate = DateTime.Now;
     }
     ///成本中心
     //tranDetailsInfo.CostCenter = outputInfo.CostCenter;
     ///单据号
     if (string.IsNullOrEmpty(tranDetailsInfo.TranNo))
     {
         tranDetailsInfo.TranNo = outputInfo.OutputNo;
     }
     ///没有目标仓库存储区时为出库
     if (string.IsNullOrEmpty(outputInfo.WmNo) && string.IsNullOrEmpty(outputInfo.ZoneNo) && tranDetailsInfo.TranType.GetValueOrDefault() == (int)WmmTranTypeConstants.Movement)
     {
         tranDetailsInfo.TranType = (int)WmmTranTypeConstants.Outbound;
     }
     ///仓储单据类型,INBOUND+1000,OUTBOUND+2000
     tranDetailsInfo.TranOrderType = outputInfo.OutputType.GetValueOrDefault() + 2000;
     ///拉动方式
     //tranDetailsInfo.RunsheetType = outputInfo.PullMode;
 }
 /// <summary>
 /// 用于单据衔接
 /// </summary>
 /// <param name="stocksInfo"></param>
 /// <param name="tranDetailsInfo"></param>
 public static void GetTranDetailsInfo2(StocksInfo stocksInfo, ref TranDetailsInfo tranDetailsInfo)
 {
     if (stocksInfo == null)
     {
         return;
     }
     tranDetailsInfo.BatchNo         = stocksInfo.BatchNo;
     tranDetailsInfo.PartNo          = stocksInfo.PartNo;
     tranDetailsInfo.BarcodeData     = stocksInfo.BarcodeData;
     tranDetailsInfo.WmNo            = stocksInfo.WmNo;
     tranDetailsInfo.ZoneNo          = stocksInfo.ZoneNo;
     tranDetailsInfo.Dloc            = stocksInfo.Dloc;
     tranDetailsInfo.MeasuringUnitNo = stocksInfo.PartUnits;
     tranDetailsInfo.Package         = stocksInfo.Package;
     tranDetailsInfo.Max             = stocksInfo.Max;
     tranDetailsInfo.Min             = stocksInfo.Min;
     tranDetailsInfo.SupplierNum     = stocksInfo.SupplierNum;
     tranDetailsInfo.PartCname       = stocksInfo.PartCname;
     tranDetailsInfo.PartNickname    = stocksInfo.PartNickname;
     tranDetailsInfo.PackageModel    = stocksInfo.PackageModel;
     tranDetailsInfo.PartCls         = stocksInfo.PartCls;
     tranDetailsInfo.PartUnits       = stocksInfo.PartUnits;
     tranDetailsInfo.IsBatch         = stocksInfo.IsBatch;
     //tranDetailsInfo.OriginPlace = stocksInfo.OriginPlace;
     tranDetailsInfo.PartPrice = stocksInfo.PartPrice;
     //tranDetailsInfo.CostCenter = stocksInfo.CostCenter;
     //tranDetailsInfo.SettledFlag = stocksInfo.SettledFlag;
     tranDetailsInfo.Keeper    = stocksInfo.Keeper;
     tranDetailsInfo.StocksFid = stocksInfo.Fid;
 }
 /// <summary>
 /// PartsStockInfo -> TranDetailsInfo
 /// </summary>
 /// <param name="partsStockInfo"></param>
 /// <param name="tranDetailsInfo"></param>
 /// <returns></returns>
 public static void GetTranDetailsInfo(PartsStockInfo partsStockInfo, ref TranDetailsInfo tranDetailsInfo)
 {
     if (partsStockInfo == null)
     {
         return;
     }
     ///零件呢称
     tranDetailsInfo.PartNickname = partsStockInfo.PartNickname;
     ///是否按批次
     tranDetailsInfo.IsBatch = partsStockInfo.IsBatch;
     ///MAX
     tranDetailsInfo.Max = partsStockInfo.Max;
     ///MIN
     tranDetailsInfo.Min = partsStockInfo.Min;
     ///PACKAGE
     tranDetailsInfo.Package = partsStockInfo.InboundPackage;
     ///PACKAGE_MODEL
     tranDetailsInfo.PackageModel = partsStockInfo.InboundPackageModel;
     ///KEEPER
     tranDetailsInfo.Keeper = partsStockInfo.Keeper;
     ///INHOUSE_PACKAGE_MODEL
     tranDetailsInfo.InhousePackageModel = partsStockInfo.InhousePackageModel;
     ///INHOUSE_PACKAGE
     tranDetailsInfo.InhousePackage = partsStockInfo.InhousePackage;
 }
 /// <summary>
 /// 包装数量计算
 /// </summary>
 /// <param name="tranDetailsInfo"></param>
 public static void CalculateTranDetailsInfo(ref TranDetailsInfo tranDetailsInfo)
 {
     ///ACTUAL_PACKAGE_QTY
     if (tranDetailsInfo.ActualPackageQty.GetValueOrDefault() == 0 && tranDetailsInfo.Package.GetValueOrDefault() > 0)
     {
         tranDetailsInfo.ActualPackageQty = Convert.ToInt32(Math.Ceiling(tranDetailsInfo.ActualQty.GetValueOrDefault() / tranDetailsInfo.Package.GetValueOrDefault()));
     }
 }
 /// <summary>
 /// 是否关注结算?
 /// </summary>
 /// <param name="settledFlag"></param>
 /// <param name="tranDetailsInfo"></param>
 public static void GetTranDetailsInfo(bool?settledFlag, ref TranDetailsInfo tranDetailsInfo)
 {
     ///如果被定义为需要结算,则不再进行变更
     if (tranDetailsInfo.SettledFlag.GetValueOrDefault())
     {
         return;
     }
     ///是否结算
     tranDetailsInfo.SettledFlag = settledFlag;
 }
 /// <summary>
 /// SupplierInfo -> TranDetailsInfo
 /// </summary>
 /// <param name="supplierInfo"></param>
 /// <param name="tranDetailsInfo"></param>
 /// <returns></returns>
 public static void GetTranDetailsInfo(SupplierInfo supplierInfo, ref TranDetailsInfo tranDetailsInfo)
 {
     if (supplierInfo == null)
     {
         return;
     }
     ///供应商名称
     tranDetailsInfo.SupplierName = supplierInfo.SupplierName;
     ///供应商简称
     tranDetailsInfo.SupplierSname = supplierInfo.SupplierSname;
 }
        /// <summary>
        /// ReceiveInfo=>TranDetailsInfo
        /// </summary>
        /// <param name="receiveInfo"></param>
        /// <param name="tranDetailsInfo"></param>
        /// <returns></returns>
        public static void GetTranDetailsInfo(ReceiveInfo receiveInfo, ref TranDetailsInfo tranDetailsInfo)
        {
            ///交易时间
            tranDetailsInfo.TranDate = receiveInfo.TranTime;
            if (tranDetailsInfo.TranDate == null)
            {
                tranDetailsInfo.TranDate = DateTime.Now;
            }
            ///成本中心
            //tranDetailsInfo.CostCenter = receiveInfo.CostCenter;
            ///单据号
            if (string.IsNullOrEmpty(tranDetailsInfo.TranNo))
            {
                tranDetailsInfo.TranNo = receiveInfo.ReceiveNo;
            }
            ///保管员
            tranDetailsInfo.Keeper = receiveInfo.BookKeeper;
            ///仓储单据类型,INBOUND+1000,OUTBOUND+2000
            tranDetailsInfo.TranOrderType = receiveInfo.ReceiveType.GetValueOrDefault() + 1000;
            ///若有入库单来源则对交易单据类型进行重新标识
            //if (receiveInfo.SourceCreateType != null)
            //    tranDetailsInfo.TranOrderType = receiveInfo.ReceiveType.GetValueOrDefault() + receiveInfo.SourceCreateType.GetValueOrDefault() * 100;
            ///拉动方式
            //tranDetailsInfo.RunsheetType = receiveInfo.PullMode;
            ///特殊入库类型处理
            switch (receiveInfo.ReceiveType.GetValueOrDefault())
            {
            ///返利入库 -> 无价值物料入库
            case (int)InboundTypeConstants.RebateInbound:
                tranDetailsInfo.TranType    = (int)WmmTranTypeConstants.Inbound;
                tranDetailsInfo.SettledFlag = true;    ///无价值入库为已结算状态,无须付款而已
                break;

            ///物料预留 -> 冻结入库
            case (int)InboundTypeConstants.ReserveInbound:
                tranDetailsInfo.TranType    = (int)WmmTranTypeConstants.FrozenInbound;
                tranDetailsInfo.SettledFlag = true;    ///物料预留需要结算
                break;

            ///采购订单 -> 物料入库
            case (int)InboundTypeConstants.PurchaseOrder:
                tranDetailsInfo.TranType    = (int)WmmTranTypeConstants.Inbound;
                tranDetailsInfo.SettledFlag = true;    ///需要结算
                break;

            default:
                tranDetailsInfo.TranType    = (int)WmmTranTypeConstants.Inbound;
                tranDetailsInfo.SettledFlag = null;
                break;
            }
        }
        /// <summary>
        /// 创建交易记录
        /// </summary>
        /// <param name="tranType"></param>
        /// <param name="tranState"></param>
        /// <param name="loginUser"></param>
        /// <returns></returns>
        public static TranDetailsInfo CreateTranDetailsInfo(int tranType, int tranState, string loginUser)
        {
            TranDetailsInfo tranDetailsInfo = new TranDetailsInfo();

            ///交易类型
            tranDetailsInfo.TranType = tranType;
            ///交易状态
            tranDetailsInfo.TranState = tranState;
            ///CreateUser
            tranDetailsInfo.CreateUser = loginUser;
            ///CreateDate
            tranDetailsInfo.CreateDate = DateTime.Now;
            ///ValidFlag
            tranDetailsInfo.ValidFlag = true;
            ///Fid
            tranDetailsInfo.Fid = Guid.NewGuid();

            return(tranDetailsInfo);
        }
 /// <summary>
 /// MaintainPartsInfo -> TranDetailsInfo
 /// </summary>
 /// <param name="maintainPartsInfo"></param>
 /// <param name="tranDetailsInfo"></param>
 public static void GetTranDetailsInfo(MaintainPartsInfo maintainPartsInfo, ref TranDetailsInfo tranDetailsInfo)
 {
     if (maintainPartsInfo == null)
     {
         return;
     }
     ///PART_NO
     tranDetailsInfo.PartNo = maintainPartsInfo.PartNo;
     ///MEASURING_UNIT_NO
     tranDetailsInfo.MeasuringUnitNo = maintainPartsInfo.PartUnits;
     ///PART_CNAME
     tranDetailsInfo.PartCname = maintainPartsInfo.PartCname;
     ///PART_NICKNAME
     tranDetailsInfo.PartNickname = maintainPartsInfo.PartNickname;
     ///PART_CLS
     tranDetailsInfo.PartCls = maintainPartsInfo.PartCls;
     ///PART_UNITS
     tranDetailsInfo.PartUnits = maintainPartsInfo.PartUnits;
     ///ORIGIN_PLACE
     // tranDetailsInfo.OriginPlace = maintainPartsInfo.OriginPlace;
 }
 /// <summary>
 /// ReceiveDetailInfo=>TranDetailsInfo
 /// </summary>
 /// <param name="receiveDetailInfo"></param>
 /// <param name="tranDetailsInfo"></param>
 /// <returns></returns>
 public static void GetTranDetailsInfo(ReceiveDetailInfo receiveDetailInfo, ref TranDetailsInfo tranDetailsInfo)
 {
     ///单据号
     tranDetailsInfo.TranNo = receiveDetailInfo.TranNo;
     ///零件号
     tranDetailsInfo.PartNo = receiveDetailInfo.PartNo;
     ///零件中文名
     tranDetailsInfo.PartCname = receiveDetailInfo.PartCname;
     ///零件类别
     tranDetailsInfo.PartCls = receiveDetailInfo.PartCls;
     ///条码
     tranDetailsInfo.BarcodeData = receiveDetailInfo.BarcodeData;
     ///供应商
     tranDetailsInfo.SupplierNum = receiveDetailInfo.SupplierNum;
     ///工厂
     tranDetailsInfo.Plant = receiveDetailInfo.Plant;
     ///源仓库编码
     tranDetailsInfo.WmNo = receiveDetailInfo.WmNo;
     ///源存贮区编码
     tranDetailsInfo.ZoneNo = receiveDetailInfo.ZoneNo;
     ///源库位
     tranDetailsInfo.Dloc = receiveDetailInfo.Dloc;
     ///目的仓库
     tranDetailsInfo.TargetWm = receiveDetailInfo.TargetWm;
     ///目的存贮区
     tranDetailsInfo.TargetZone = receiveDetailInfo.TargetZone;
     ///目的库位
     tranDetailsInfo.TargetDloc = receiveDetailInfo.TargetDloc;
     ///单位
     tranDetailsInfo.MeasuringUnitNo = receiveDetailInfo.MeasuringUnitNo;
     ///包装类型
     tranDetailsInfo.PackageModel = receiveDetailInfo.PackageModel;
     ///单包装数
     tranDetailsInfo.Package = receiveDetailInfo.Package;
     ///需求包装数量
     tranDetailsInfo.RequiredPackageQty = receiveDetailInfo.RequiredBoxNum;
     ///需求数量
     tranDetailsInfo.RequiredQty = receiveDetailInfo.RequiredQty;
     ///实收包装数
     tranDetailsInfo.ActualPackageQty = receiveDetailInfo.ActualBoxNum;
     ///实收数量
     tranDetailsInfo.ActualQty = receiveDetailInfo.ActualQty;
     ///物料金额
     tranDetailsInfo.PartPrice = receiveDetailInfo.PartPrice;
     ///零件类
     tranDetailsInfo.BoxParts = receiveDetailInfo.BoxParts;
     ///捡料顺序号
     tranDetailsInfo.PickupSeqNo = receiveDetailInfo.PickupSeqNo;
     ///供应商库位
     tranDetailsInfo.RdcDloc = receiveDetailInfo.RdcDloc;
     ///DOCK
     tranDetailsInfo.Dock = receiveDetailInfo.Dock;
     ///上线包装型号
     tranDetailsInfo.InhousePackageModel = receiveDetailInfo.InhousePackageModel;
     ///上线包装数
     tranDetailsInfo.InhousePackage = receiveDetailInfo.InhousePackage;
     ///产地
     tranDetailsInfo.OriginPlace = receiveDetailInfo.OriginPlace;
     ///拉动单号
     tranDetailsInfo.RunsheetNo = receiveDetailInfo.RunsheetNo;
     ///备注
     tranDetailsInfo.Comments = receiveDetailInfo.Comments;
 }
 /// <summary>
 /// WmsVmiTranDetailInfo -> TranDetailsInfo
 /// </summary>
 /// <param name="wmsVmiTranDetailInfo"></param>
 /// <param name="tranDetailsInfo"></param>
 public static void GetTranDetailsInfo(WmsVmiTranDetailInfo wmsVmiTranDetailInfo, ref TranDetailsInfo tranDetailsInfo)
 {
     if (wmsVmiTranDetailInfo == null)
     {
         return;
     }
     ///PART_NO
     tranDetailsInfo.PartNo = wmsVmiTranDetailInfo.PartNo;
     ///SUPPLIER_CODE
     tranDetailsInfo.SupplierNum = wmsVmiTranDetailInfo.SupplierCode;
     ///ORDER_NO
     tranDetailsInfo.TranNo = wmsVmiTranDetailInfo.OrderNo;
     ///QTY
     tranDetailsInfo.ActualQty = wmsVmiTranDetailInfo.Qty;
     ///TRAN_TYPE,DP-收货,WD-出库(负数),AJ-调整(正负数都有)
     if (tranDetailsInfo.ActualQty.GetValueOrDefault() >= 0)
     {
         tranDetailsInfo.TranType = (int)WmmTranTypeConstants.Inbound;
         ///TARGET_WM
         tranDetailsInfo.TargetWm = wmsVmiTranDetailInfo.VmiWarehouseCode;
         ///TARGET_ZONE
         tranDetailsInfo.TargetZone = wmsVmiTranDetailInfo.ZoneNo;
         ///TARGET_DLOC
         tranDetailsInfo.TargetDloc = wmsVmiTranDetailInfo.Dloc;
     }
     else
     {
         tranDetailsInfo.TranType  = (int)WmmTranTypeConstants.Outbound;
         tranDetailsInfo.ActualQty = 0 - tranDetailsInfo.ActualQty.GetValueOrDefault();
         ///WM_NO
         tranDetailsInfo.WmNo = wmsVmiTranDetailInfo.VmiWarehouseCode;
         ///ZONE_NO
         tranDetailsInfo.ZoneNo = wmsVmiTranDetailInfo.ZoneNo;
         ///DLOC
         tranDetailsInfo.Dloc = wmsVmiTranDetailInfo.Dloc;
     }
     ///TIMES
     tranDetailsInfo.TranDate = wmsVmiTranDetailInfo.Times;
 }
        /// <summary>
        /// Create TranDetailsInfo
        /// </summary>
        /// <param name="loginUser"></param>
        /// <returns>TranDetailsInfo</returns>
        public static TranDetailsInfo CreateTranDetailsInfo(string loginUser)
        {
            TranDetailsInfo info = new TranDetailsInfo();

            ///ID
            info.Id = 0;
            ///FID
            info.Fid = Guid.NewGuid();
            ///PLANT
            info.Plant = null;
            ///BATCH_NO
            info.BatchNo = null;
            ///BARCODE_DATA
            info.BarcodeData = null;
            ///NUM
            info.Num = null;
            ///BOX_NUM
            info.BoxNum = null;
            ///BOX_PARTS
            info.BoxParts = null;
            ///PICKUP_SEQ_NO
            info.PickupSeqNo = null;
            ///RDC_DLOC
            info.RdcDloc = null;
            ///INNER_LOCATION
            info.InnerLocation = null;
            ///LOCATION
            info.Location = null;
            ///STORAGE_LOCATION
            info.StorageLocation = null;
            ///REQUIRED_PACKAGE_QTY
            info.RequiredPackageQty = null;
            ///REQUIRED_QTY
            info.RequiredQty = null;
            ///BARCODE_TYPE
            info.BarcodeType = null;
            ///REQUIRED_DATE
            info.RequiredDate = null;
            ///PACHAGE_TYPE
            info.PachageType = null;
            ///LINE_POSITION
            info.LinePosition = null;
            ///RUNSHEET_NO
            info.RunsheetNo = null;
            ///DOCK
            info.Dock = null;
            ///PART_PRICE
            info.PartPrice = null;
            ///COST_CENTER
            info.CostCenter = null;
            ///COMMENTS
            info.Comments = null;
            ///SETTLED_FLAG
            info.SettledFlag = null;
            ///STOCKS_FID
            info.StocksFid = null;
            ///VALID_FLAG
            info.ValidFlag = true;
            ///CREATE_USER
            info.CreateUser = loginUser;
            ///CREATE_DATE
            info.CreateDate = DateTime.Now;
            ///MODIFY_USER
            info.ModifyUser = null;
            ///MODIFY_DATE
            info.ModifyDate = null;
            ///TRAN_ORDER_TYPE
            info.TranOrderType = null;
            ///RUNSHEET_TYPE
            info.RunsheetType = null;
            ///TRAN_STATE
            info.TranState = (int)WmmTranStateConstants.Created;
            return(info);
        }
        /// <summary>
        /// OutputDetailInfo=>TranDetailsInfo
        /// </summary>
        /// <param name="outputDetailInfo"></param>
        /// <param name="tranDetailsInfo"></param>
        /// <returns></returns>
        public static void GetTranDetailsInfo(OutputDetailInfo outputDetailInfo, ref TranDetailsInfo tranDetailsInfo)
        {
            if (outputDetailInfo == null)
            {
                return;
            }
            ///单据号
            tranDetailsInfo.TranNo = outputDetailInfo.TranNo;
            ///零件号
            tranDetailsInfo.PartNo = outputDetailInfo.PartNo;
            ///零件中文名
            tranDetailsInfo.PartCname = outputDetailInfo.PartCname;
            ///零件类别
            tranDetailsInfo.PartCls = outputDetailInfo.PartCls;
            ///条码
            tranDetailsInfo.BarcodeData = outputDetailInfo.BarcodeData;
            ///供应商
            tranDetailsInfo.SupplierNum = outputDetailInfo.SupplierNum;
            ///工厂
            tranDetailsInfo.Plant = outputDetailInfo.Plant;
            ///源仓库编码
            tranDetailsInfo.WmNo = outputDetailInfo.WmNo;
            ///源存贮区编码
            tranDetailsInfo.ZoneNo = outputDetailInfo.ZoneNo;
            ///源库位
            tranDetailsInfo.Dloc = outputDetailInfo.Dloc;
            ///目的仓库
            tranDetailsInfo.TargetWm = outputDetailInfo.TargetWm;
            ///目的存贮区
            tranDetailsInfo.TargetZone = outputDetailInfo.TargetZone;
            ///目的库位
            tranDetailsInfo.TargetDloc = outputDetailInfo.TargetDloc;
            ///单位
            tranDetailsInfo.MeasuringUnitNo = outputDetailInfo.MeasuringUnitNo;
            ///包装类型
            tranDetailsInfo.PackageModel = outputDetailInfo.PackageModel;
            ///单包装数
            tranDetailsInfo.Package = outputDetailInfo.Package;
            ///需求包装数量
            tranDetailsInfo.RequiredPackageQty = outputDetailInfo.RequiredBoxNum;
            ///需求数量
            tranDetailsInfo.RequiredQty = outputDetailInfo.RequiredQty;
            ///实收包装数
            tranDetailsInfo.ActualPackageQty = outputDetailInfo.ActualBoxNum;
            ///实收数量
            tranDetailsInfo.ActualQty = outputDetailInfo.ActualQty;
            ///物料金额
            tranDetailsInfo.PartPrice = outputDetailInfo.PartPrice;
            ///零件类
            tranDetailsInfo.BoxParts = outputDetailInfo.BoxParts;
            ///捡料顺序号
            tranDetailsInfo.PickupSeqNo = outputDetailInfo.PickupSeqNo;
            ///供应商库位
            tranDetailsInfo.RdcDloc = outputDetailInfo.RdcDloc;
            ///DOCK
            tranDetailsInfo.Dock = outputDetailInfo.Dock;
            ///上线包装型号
            tranDetailsInfo.InhousePackageModel = outputDetailInfo.InhousePackageModel;
            ///上线包装数
            tranDetailsInfo.InhousePackage = outputDetailInfo.InhousePackage;
            ///产地
            tranDetailsInfo.OriginPlace = outputDetailInfo.OriginPlace;
            ///拉动单号
            tranDetailsInfo.RunsheetNo = outputDetailInfo.RunsheetNo;
            ///备注
            tranDetailsInfo.Comments = outputDetailInfo.Comments;

            ///如果当前交易类型为状态冻结,而出库单明细中已标记为冻结库存,则不能重复进行冻结返回不产生交易记录
            if (tranDetailsInfo.TranType.GetValueOrDefault() == (int)WmmTranTypeConstants.StateFreezing && outputDetailInfo.FrozenStockFlag.GetValueOrDefault())
            {
                tranDetailsInfo.TranType = (int)WmmTranTypeConstants.None;
            }
        }
Esempio n. 18
0
        /// <summary>
        /// 037 vmi Create By Xue 未完成
        /// </summary>
        /// <param name="tranDetailsInfo"></param>
        private string CreateVmiTranData(TranDetailsInfo tranDetailsInfo, SupplierInfo supplierInfo, WarehouseInfo warehouseInfo)
        {
            ///若未启用外部供应商系统,TODO:考虑内部供应商模块如何处理
            if (string.IsNullOrEmpty(vmiTranDataEnableFlag) || vmiTranDataEnableFlag.ToLower() != "true")
            {
                return(string.Empty);
            }

            ///交易记录NULL,肯定生成不了记录
            if (tranDetailsInfo == null)
            {
                return(string.Empty);
            }
            if (warehouseInfo == null)
            {
                return(string.Empty);
            }
            ///不是RDC类型的仓库的数据不发送给SRM
            if (warehouseInfo.WarehouseType.GetValueOrDefault() != (int)WarehouseTypeConstants.RDC)
            {
                return(string.Empty);
            }
            ///非物料入库不传SRM
            if (tranDetailsInfo.TranType.GetValueOrDefault() != (int)WmmTranTypeConstants.Inbound)
            {
                return(string.Empty);
            }

            if (tranDetailsInfo.TranOrderType.GetValueOrDefault() != 4010)
            {
                return(string.Empty);
            }

            WmsTranOutInfo wmsTranOutInfo = new WmsTranOutInfo();

            // planmod转换为ordertype
            switch ((PullModeConstants)tranDetailsInfo.RunsheetType)
            {
            case PullModeConstants.Twd:
                wmsTranOutInfo.SourceOrderType = (int)WmsOrderTypeConstants.Twd;
                break;

            case PullModeConstants.Plan:
                wmsTranOutInfo.SourceOrderType = (int)WmsOrderTypeConstants.Plan;
                break;

            case PullModeConstants.Jis:
                wmsTranOutInfo.SourceOrderType = (int)WmsOrderTypeConstants.Jis;
                break;
            }


            wmsTranOutInfo.SourceOrderCode = tranDetailsInfo.TranNo;
            wmsTranOutInfo.RunsheetNo      = tranDetailsInfo.RunsheetNo;
            wmsTranOutInfo.WmNo            = tranDetailsInfo.WmNo;
            wmsTranOutInfo.Plant           = tranDetailsInfo.Plant;

            wmsTranOutInfo.PartNo      = tranDetailsInfo.PartNo;
            wmsTranOutInfo.DeliveryQty = tranDetailsInfo.ActualQty;
            wmsTranOutInfo.ProcessFlag = (int)ProcessFlagConstants.Untreated;
            wmsTranOutInfo.CreateUser  = loginUser;
            return(WmsTranOutDAL.GetInsertSql(wmsTranOutInfo));
        }
Esempio n. 19
0
        /// <summary>
        /// 根据交易记录以及基础数据配置数据,产生交易接口数据 Create By Xue
        /// </summary>
        private string CreateSapTranData(TranDetailsInfo tranDetailsInfo, ZonesInfo sourceZonesInfo, ZonesInfo targetZonesInfo, PlantInfo sourcePlantInfo, PlantInfo targetPlantInfo)
        {
            ///
            if (tranDetailsInfo == null)
            {
                return(string.Empty);
            }
            ///是否启用SAP交易记录同步接口
            if (string.IsNullOrEmpty(sapTranDataEnableFlag) || sapTranDataEnableFlag.ToLower() != "true")
            {
                return(string.Empty);
            }
            ///
            StringBuilder stringBuilder = new StringBuilder();

            #region SapTranOutInfo
            SapTranOutInfo sapTranOutInfo = new SapTranOutInfo();
            sapTranOutInfo.Matnr       = tranDetailsInfo.PartNo;
            sapTranOutInfo.Menge       = tranDetailsInfo.ActualQty;
            sapTranOutInfo.Budat       = tranDetailsInfo.TranDate;
            sapTranOutInfo.Lifnr       = tranDetailsInfo.SupplierNum;
            sapTranOutInfo.ProcessFlag = (int)ProcessFlagConstants.Untreated;
            sapTranOutInfo.CreateUser  = loginUser;
            #endregion

            ///如果没有目标库区则有可能是出成本中心的业务数据
            if (targetZonesInfo == null)
            {
                ///若单据类型为物料预留、物料退货
                if (tranDetailsInfo.TranOrderType.GetValueOrDefault() == ((int)OutboundTypeConstants.ReserveOutbound + 2000) ||
                    tranDetailsInfo.TranOrderType.GetValueOrDefault() == ((int)OutboundTypeConstants.MaterialReturns + 2000))
                {
                    SapPurchaseOrderDetailInfo sapPurchaseOrderDetailInfo = new SapPurchaseOrderDetailBLL().GetInfo(tranDetailsInfo.TranNo, tranDetailsInfo.PartNo);
                    if (sapPurchaseOrderDetailInfo == null)
                    {
                        return(string.Empty);                                   ///TODO:物料预留未能找到原始单据
                    }
                    ///如果没有成本中心则不具备产生SAP事务数据的条件
                    if (string.IsNullOrEmpty(sapPurchaseOrderDetailInfo.SapKostl))
                    {
                        return(string.Empty);
                    }

                    ///采购订单中有SAP采购订单号的需要生成101入库交易
                    if (!string.IsNullOrEmpty(sapPurchaseOrderDetailInfo.SapEbeln))
                    {
                        #region 转入库存地点收货数据
                        SapTranOutInfo sapTranOut = sapTranOutInfo.Clone();
                        ///目标库存地点
                        sapTranOut.Lgort = sapPurchaseOrderDetailInfo.SapLgort;
                        sapTranOut.Werks = sourcePlantInfo == null ? string.Empty : sourcePlantInfo.SapPlantCode;
                        ///采购订单
                        sapTranOut.Ebeln = sapPurchaseOrderDetailInfo.SapEbeln;
                        sapTranOut.Ebelp = sapPurchaseOrderDetailInfo.SapEbelp;
                        ///101
                        sapTranOut.Bwart = ((int)SapTranTypeConstants.Inbound).ToString();
                        #endregion
                        stringBuilder.AppendLine(SapTranOutDAL.GetInsertSql(sapTranOut));
                    }
                    ///来源库存地点
                    sapTranOutInfo.Lgort = sapPurchaseOrderDetailInfo.SapLgort;
                    sapTranOutInfo.Werks = sourcePlantInfo == null ? string.Empty : sourcePlantInfo.SapPlantCode;
                    ///目标库存地点
                    sapTranOutInfo.Umlgo = sapPurchaseOrderDetailInfo.SapUmlgo;
                    sapTranOutInfo.Unwrk = targetPlantInfo == null ? string.Empty : targetPlantInfo.SapPlantCode;
                    ///成本中心
                    sapTranOutInfo.Kostl = sapPurchaseOrderDetailInfo.SapKostl;
                    ///预留单号
                    sapTranOutInfo.Rsnum = sapPurchaseOrderDetailInfo.SapRsnum;
                    ///采购订单
                    sapTranOutInfo.Ebeln = sapPurchaseOrderDetailInfo.SapEbeln;
                    sapTranOutInfo.Ebelp = sapPurchaseOrderDetailInfo.SapEbelp;
                    ///移动类型
                    sapTranOutInfo.Bwart = sapPurchaseOrderDetailInfo.SapBwart;
                    stringBuilder.AppendLine(SapTranOutDAL.GetInsertSql(sapTranOutInfo));
                    return(stringBuilder.ToString());
                }
            }
            ///据交易记录中的目标存储区是否结算标记
            //todo
            if (targetZonesInfo != null /*&& targetZonesInfo.SettlementFlag.GetValueOrDefault()*/)
            {
                ///接收工厂
                sapTranOutInfo.Unwrk = targetPlantInfo == null ? string.Empty : targetPlantInfo.SapPlantCode;
                ///接收库存地点
                sapTranOutInfo.Umlgo = targetZonesInfo.StockPlaceNo;
                ///发出工厂
                string werks = (sourcePlantInfo == null ? string.Empty : sourcePlantInfo.SapPlantCode);
                ///发出库存地点
                string lgort = (sourceZonesInfo == null ? string.Empty : sourceZonesInfo.StockPlaceNo);

                ///如果没有来源库存地点,并且物料未结算
                if (string.IsNullOrEmpty(lgort) && !tranDetailsInfo.SettledFlag.GetValueOrDefault())
                {
                    ///正常入库
                    if (tranDetailsInfo.TranOrderType.GetValueOrDefault() == ((int)InboundTypeConstants.NormalInbound + 1000))
                    {
                        sapTranOutInfo.Bwart = ((int)SapTranTypeConstants.Inbound).ToString();
                    }
                    ///返利入库单 -> 免费收货
                    if (tranDetailsInfo.TranOrderType.GetValueOrDefault() == ((int)InboundTypeConstants.RebateInbound + 1000))
                    {
                        sapTranOutInfo.Bwart = ((int)SapTranTypeConstants.RebateInbound).ToString();
                    }
                    ///采购订单 -> 正常入库
                    if (tranDetailsInfo.TranOrderType.GetValueOrDefault() == ((int)InboundTypeConstants.PurchaseOrder + 1000))
                    {
                        SapPurchaseOrderDetailInfo sapPurchaseOrderDetailInfo = new SapPurchaseOrderDetailBLL().GetInfo(tranDetailsInfo.RunsheetNo, tranDetailsInfo.PartNo);
                        if (sapPurchaseOrderDetailInfo == null)
                        {
                            return(string.Empty);                                   ///TODO:物料预留未能找到原始单据
                        }
                        sapTranOutInfo.Umlgo = sapPurchaseOrderDetailInfo.SapUmlgo;
                        sapTranOutInfo.Bwart = ((int)SapTranTypeConstants.Inbound).ToString();
                        sapTranOutInfo.Ebeln = sapPurchaseOrderDetailInfo.SapEbeln;
                        sapTranOutInfo.Ebelp = sapPurchaseOrderDetailInfo.SapEbelp;
                    }
                    return(SapTranOutDAL.GetInsertSql(sapTranOutInfo));
                }
                ///如果有发出库存地点,并且物料已结算
                if (!string.IsNullOrEmpty(lgort) && tranDetailsInfo.SettledFlag.GetValueOrDefault())
                {
                    ///如果来源与目标的SAP库存地点相同则不产生移动数据
                    if (lgort == sapTranOutInfo.Umlgo)
                    {
                        return(string.Empty);
                    }
                    sapTranOutInfo.Lgort = lgort;
                    sapTranOutInfo.Werks = werks;
                    sapTranOutInfo.Bwart = ((int)SapTranTypeConstants.Movement).ToString();
                    return(SapTranOutDAL.GetInsertSql(sapTranOutInfo));
                }
            }
            return(string.Empty);
        }
 public long InsertInfo(TranDetailsInfo info)
 {
     return(dal.Add(info));
 }
Esempio n. 21
0
        /// <summary>
        /// Sync
        /// </summary>
        public static void Sync(string loginUser)
        {
            ///获取未处理的检验模式中间表数据
            List <WmsVmiTranDetailInfo> wmsVmiTranDetailInfos = new WmsVmiTranDetailBLL().GetList("[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Untreated + "", string.Empty);

            if (wmsVmiTranDetailInfos.Count == 0)
            {
                return;
            }
            StringBuilder @string = new StringBuilder();

            ///获取仓库信息
            List <WarehouseInfo> warehouseInfos = new WarehouseBLL().GetList("" +
                                                                             "[WAREHOUSE] in ('" + string.Join("','", wmsVmiTranDetailInfos.Select(d => d.VmiWarehouseCode).ToArray()) + "') "
                                                                             // + " and [WAREHOUSE_TYPE] = " + (int)WarehouseTypeConstants.VMI + ""
                                                                             , string.Empty);

            if (warehouseInfos.Count == 0)
            {
                @string.AppendLine("update [LES].[TI_IFM_WMS_VMI_TRAN_DETAIL] set " +
                                   "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                   "[PROCESS_TIME] = GETDATE()," +
                                   "[COMMENTS] = N'0x00000230' where " +
                                   "[ID] in (" + string.Join(",", wmsVmiTranDetailInfos.Select(d => d.Id).ToArray()) + ");");
                BLL.SYS.CommonBLL.ExecuteNonQueryBySql(@string.ToString());
                return;
            }
            ///获取供应商信息
            List <SupplierInfo> supplierInfos = new SupplierBLL().GetList("" +
                                                                          "[SUPPLIER_NUM] in ('" + string.Join("','", wmsVmiTranDetailInfos.Select(d => d.SupplierCode).ToArray()) + "') and " +
                                                                          "[SUPPLIER_TYPE] = " + (int)SupplierTypeConstants.MaterialSupplier + "", string.Empty);

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

            if (vmiSupplierInfos.Count == 0)
            {
                @string.AppendLine("update [LES].[TI_IFM_WMS_VMI_TRAN_DETAIL] set " +
                                   "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                   "[PROCESS_TIME] = GETDATE()," +
                                   "[COMMENTS] = N'0x00000429' where " +
                                   "[ID] in (" + string.Join(",", wmsVmiTranDetailInfos.Select(d => d.Id).ToArray()) + ");");
                BLL.SYS.CommonBLL.ExecuteNonQueryBySql(@string.ToString());
                return;
            }

            ///获取相关物料基础信息
            List <MaintainPartsInfo> maintainPartsInfos = new MaintainPartsBLL().GetList("[PART_NO] in ('" + string.Join("','", wmsVmiTranDetailInfos.Select(d => d.PartNo).ToArray()) + "')", string.Empty);
            ///获取相关物料仓储信息
            List <PartsStockInfo> partsStockInfos = new PartsStockBLL().GetList("" +
                                                                                "[PART_NO] in ('" + string.Join("','", wmsVmiTranDetailInfos.Select(d => d.PartNo).ToArray()) + "') and " +
                                                                                "[WM_NO] in ('" + string.Join("','", warehouseInfos.Select(d => d.Warehouse).ToArray()) + "')", string.Empty);
            ///

            List <long> dealedIds = new List <long>();

            foreach (WmsVmiTranDetailInfo wmsVmiTranDetailInfo in wmsVmiTranDetailInfos)
            {
                var vmiWareHouseInfo = warehouseInfos.FirstOrDefault(fod => fod.Warehouse == wmsVmiTranDetailInfo.VmiWarehouseCode);
                if (vmiWareHouseInfo == null)
                {
                    @string.AppendLine("update [LES].[TI_IFM_WMS_VMI_TRAN_DETAIL] set " +
                                       "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                       "[PROCESS_TIME] = GETDATE()," +
                                       "[COMMENTS] = N'0x00000230' where " +///VMI供应商信息未维护
                                       "[ID] = " + wmsVmiTranDetailInfo.Id + ";");
                    continue;
                }
                if (vmiWareHouseInfo.WarehouseType != (int)WarehouseTypeConstants.VMI)
                {
                    @string.AppendLine("update [LES].[TI_IFM_WMS_VMI_TRAN_DETAIL] set " +
                                       "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Processed + "," +
                                       "[PROCESS_TIME] = GETDATE()," +
                                       "[COMMENTS] = N'0x00000518' where " +///VMI供应商信息未维护
                                       "[ID] = " + wmsVmiTranDetailInfo.Id + ";");
                    continue;
                }

                ///VMI供应商关系
                VmiSupplierInfo vmiSupplierInfo = vmiSupplierInfos.FirstOrDefault(d => d.SupplierNum == wmsVmiTranDetailInfo.SupplierCode && d.WmNo == wmsVmiTranDetailInfo.VmiWarehouseCode);
                if (vmiSupplierInfo == null)
                {
                    @string.AppendLine("update [LES].[TI_IFM_WMS_VMI_TRAN_DETAIL] set " +
                                       "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                       "[PROCESS_TIME] = GETDATE()," +
                                       "[COMMENTS] = N'0x00000429' where " +///VMI供应商信息未维护
                                       "[ID] = " + wmsVmiTranDetailInfo.Id + ";");
                    continue;
                }
                if (!vmiSupplierInfo.VmiFlag.GetValueOrDefault())
                {
                    @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] = " + wmsVmiTranDetailInfo.Id + ";");
                    continue;
                }
                if (string.IsNullOrEmpty(vmiSupplierInfo.ZoneNo))
                {
                    @string.AppendLine("update [LES].[TI_IFM_WMS_VMI_TRAN_DETAIL] set " +
                                       "[PROCESS_FLAG] = " + (int)ProcessFlagConstants.Suspend + "," +
                                       "[PROCESS_TIME] = GETDATE()," +
                                       "[COMMENTS] = N'0x00000481' where " +///VMI存储区未配置
                                       "[ID] = " + wmsVmiTranDetailInfo.Id + ";");
                    continue;
                }

                ///指定存储区
                wmsVmiTranDetailInfo.ZoneNo = vmiSupplierInfo.ZoneNo;
                ///创建交易
                TranDetailsInfo tranDetailsInfo = TranDetailsBLL.CreateTranDetailsInfo(loginUser);
                ///PartsStockInfo -> TranDetailsInfo
                PartsStockInfo partsStockInfo = partsStockInfos.FirstOrDefault(d =>
                                                                               d.PartNo == wmsVmiTranDetailInfo.PartNo && d.WmNo == vmiSupplierInfo.WmNo && d.ZoneNo == vmiSupplierInfo.ZoneNo);
                TranDetailsBLL.GetTranDetailsInfo(partsStockInfo, ref tranDetailsInfo);

                ///WmsVmiTranDetailInfo -> TranDetailsInfo
                wmsVmiTranDetailInfo.Dloc = partsStockInfo.Dloc;

                TranDetailsBLL.GetTranDetailsInfo(wmsVmiTranDetailInfo, ref tranDetailsInfo);
                ///MaintainPartsInfo -> TranDetailsInfo
                MaintainPartsInfo maintainPartsInfo = maintainPartsInfos.FirstOrDefault(d => d.PartNo == tranDetailsInfo.PartNo);
                TranDetailsBLL.GetTranDetailsInfo(maintainPartsInfo, ref tranDetailsInfo);

                ///SupplierInfo -> TranDetailsInfo
                SupplierInfo supplierInfo = supplierInfos.FirstOrDefault(d => d.SupplierNum == tranDetailsInfo.SupplierNum);
                TranDetailsBLL.GetTranDetailsInfo(supplierInfo, ref tranDetailsInfo);
                ///包装数量计算
                TranDetailsBLL.CalculateTranDetailsInfo(ref tranDetailsInfo);

                ///获取库存交易记录的生成语句
                @string.AppendLine(TranDetailsDAL.GetInsertSql(tranDetailsInfo));
                dealedIds.Add(wmsVmiTranDetailInfo.Id);
            }
            if (dealedIds.Count > 0)
            {
                ///已处理的中间表数据更新为已处理状态
                @string.AppendLine("update [LES].[TI_IFM_WMS_VMI_TRAN_DETAIL] 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();
            }
        }
Esempio n. 22
0
        /// <summary>
        /// CreateSrmTranData
        /// </summary>
        /// <param name="tranDetailsInfo"></param>
        private string CreateSrmTranData(TranDetailsInfo tranDetailsInfo, SupplierInfo supplierInfo, WarehouseInfo warehouseInfo)
        {
            ///若未启用外部供应商系统,TODO:考虑内部供应商模块如何处理
            if (string.IsNullOrEmpty(srmTranDataEnableFlag) || srmTranDataEnableFlag.ToLower() != "true")
            {
                return(string.Empty);
            }
            ///若不是物料供应商则不需要生成记录
            if (supplierInfo.SupplierType.GetValueOrDefault() != (int)SupplierTypeConstants.MaterialSupplier)
            {
                return(string.Empty);
            }
            ///交易记录NULL,肯定生成不了记录
            if (tranDetailsInfo == null)
            {
                return(string.Empty);
            }
            if (warehouseInfo == null)
            {
                return(string.Empty);
            }
            ///不是RDC类型的仓库的数据不发送给SRM
            if (warehouseInfo.WarehouseType.GetValueOrDefault() != (int)WarehouseTypeConstants.RDC)
            {
                return(string.Empty);
            }
            ///非物料入库不传SRM
            if (tranDetailsInfo.TranType.GetValueOrDefault() != (int)WmmTranTypeConstants.Inbound)
            {
                return(string.Empty);
            }
            ///SRM单据类型
            int orderType = 0;

            switch (tranDetailsInfo.TranOrderType.GetValueOrDefault())
            {
            case (int)InboundTypeConstants.RebateInbound + 1000:
                if (string.IsNullOrEmpty(rebateInboundReceiveReleaseToSrm) || rebateInboundReceiveReleaseToSrm.ToLower() != "true")
                {
                    return(string.Empty);
                }
                orderType = (int)SrmOrderTypeConstants.Reserve;    ///TODO:返利
                break;

            ///采购订单
            case (int)InboundTypeConstants.PurchaseOrder + 1000: orderType = (int)SrmOrderTypeConstants.Purchase; break;

            ///预留
            case (int)InboundTypeConstants.ReserveInbound + 1000: orderType = (int)SrmOrderTypeConstants.Reserve; break;

            default:
                switch (tranDetailsInfo.RunsheetType.GetValueOrDefault())
                {
                case (int)PullModeConstants.Jis: orderType = (int)SrmOrderTypeConstants.Jis; break;

                case (int)PullModeConstants.Plan: orderType = (int)SrmOrderTypeConstants.Plan; break;

                case (int)PullModeConstants.Twd: orderType = (int)SrmOrderTypeConstants.Twd; break;

                default: return(string.Empty);
                }
                break;
            }
            ///
            SrmTranOutInfo srmTranOutInfo = new SrmTranOutInfo();

            srmTranOutInfo.SourceOrderCode = tranDetailsInfo.TranNo;///TODO:SRM要哪个编号?
            srmTranOutInfo.SourceOrderType = orderType;
            srmTranOutInfo.PartNo          = tranDetailsInfo.PartNo;
            srmTranOutInfo.DeliveryQty     = tranDetailsInfo.ActualQty;
            srmTranOutInfo.ProcessFlag     = (int)ProcessFlagConstants.Untreated;
            srmTranOutInfo.CreateUser      = loginUser;
            return(SrmTranOutDAL.GetInsertSql(srmTranOutInfo));
        }