public long InsertInfo(SapTranOutInfo info) { return(dal.Add(info)); }
/// <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); }