using CK.SCP.Models; using CK.SCP.Models.Enums; using CK.SCP.Models.ExchangeCenterTables; using CK.SCP.Models.AppBoxEntity; using CK.SCP.Models.ScpEntity; using CK.SCP.Models.ScpEntity.ExcelExportEnttity; using CK.SCP.Utils; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data.Entity.Migrations; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Transactions; using System.Data.Entity.Core; //using WebSrvAPITest; namespace CK.SCP.Controller { public class SCP_DC_UNI_CONTROLLER { public SCP_DC_UNI_CONTROLLER() { } public static ResultObject> Get_TEA_SUBSCRIBE_List(TEA_SUBSCRIBE p_entity) { ResultObject> _ret = new ResultObject>(); try { using (var db = EntitiesFactory.CreateExchangeCenterInstance()) { IQueryable q = db.TEA_SUBSCRIBE; if (!string.IsNullOrEmpty(p_entity.TableName)) { q = q.Where(p => p.TableName.Contains(p_entity.TableName)); } if (!string.IsNullOrEmpty(p_entity.Creator)) { q = q.Where(p => p.Creator.Contains(p_entity.Creator)); } if (!string.IsNullOrEmpty(p_entity.Subscriber)) { q = q.Where(p => p.Subscriber.Contains(p_entity.Subscriber)); } if (p_entity.UID != 0) { q = q.Where(p => p.UID == p_entity.UID); } if (!string.IsNullOrEmpty(p_entity.CreateUser)) { q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser)); } if (!string.IsNullOrEmpty(p_entity.Remark)) { q = q.Where(p => p.Remark.Contains(p_entity.Remark)); } if (!string.IsNullOrEmpty(p_entity.UpdateUser)) { q = q.Where(p => p.UpdateUser.Contains(p_entity.UpdateUser)); } if (p_entity.IsChecked != false) { q = q.Where(p => p.IsChecked == p_entity.IsChecked); } if (p_entity.Enable != false) { q = q.Where(p => p.Enable == p_entity.Enable); } _ret.State = ReturnStatus.Succeed; _ret.Result = q.ToList(); } } catch (Exception e) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "Get_TEA_SUBSCRIBE_List", e.Message); throw e; } return _ret; } public ResultObject Save_TEA_SUBSCRIBE(List p_entitys) { ResultObject _ret = new ResultObject(); try { using (var db = EntitiesFactory.CreateExchangeCenterInstance()) { foreach (var itm in p_entitys) { db.TEA_SUBSCRIBE.AddOrUpdate(itm); } if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "Save_TEA_SUBSCRIBE", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public ResultObject Del_TEA_SUBSCRIBE(List p_entitys) { ResultObject _ret = new ResultObject(); try { using (var db = EntitiesFactory.CreateExchangeCenterInstance()) { foreach (var itm in p_entitys) { db.TEA_SUBSCRIBE.Remove(itm); } if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } catch (Exception e) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "Del_TEA_SUBSCRIBE", e.Message); throw e; } return _ret; } public static ResultObject> Get_TEA_TASK_SUB_List(TEA_TASK_SUB p_entity) { ResultObject> _ret = new ResultObject>(); try { using (var db = EntitiesFactory.CreateExchangeCenterInstance()) { IQueryable q = db.TEA_TASK_SUB; if (!string.IsNullOrEmpty(p_entity.TableName)) { q = q.Where(p => p.TableName.Contains(p_entity.TableName)); } if (!string.IsNullOrEmpty(p_entity.Creator)) { q = q.Where(p => p.Creator.Contains(p_entity.Creator)); } if (p_entity.DataCount != 0) { q = q.Where(p => p.DataCount == p_entity.DataCount); } if (!string.IsNullOrEmpty(p_entity.Subscriber)) { q = q.Where(p => p.Subscriber.Contains(p_entity.Subscriber)); } if (p_entity.FailedCount != 0) { q = q.Where(p => p.FailedCount == p_entity.FailedCount); } if (!string.IsNullOrEmpty(p_entity.FailedInfo)) { q = q.Where(p => p.FailedInfo.Contains(p_entity.FailedInfo)); } if (!string.IsNullOrEmpty(p_entity.Domain)) { q = q.Where(p => p.Domain.Contains(p_entity.Domain)); } if (!string.IsNullOrEmpty(p_entity.Site)) { q = q.Where(p => p.Site.Contains(p_entity.Site)); } if (p_entity.UID != 0) { q = q.Where(p => p.UID == p_entity.UID); } if (!string.IsNullOrEmpty(p_entity.CreateUser)) { q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser)); } if (!string.IsNullOrEmpty(p_entity.Remark)) { q = q.Where(p => p.Remark.Contains(p_entity.Remark)); } if (!string.IsNullOrEmpty(p_entity.UpdateUser)) { q = q.Where(p => p.UpdateUser.Contains(p_entity.UpdateUser)); } if (p_entity.IsChecked != false) { q = q.Where(p => p.IsChecked == p_entity.IsChecked); } //if (!string.IsNullOrEmpty(p_entity.TaskState)) //{ // q = q.Where(p => p.UpdateUser.Contains(p_entity.UpdateUser)); //} q = q.Where(p => p.TaskState==p_entity.TaskState); _ret.State = ReturnStatus.Succeed; _ret.Result = q.OrderBy(p => p.CreateTime).ToList(); } } catch (Exception e) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "Get_TEA_TASK_SUB_List", e.Message); throw e; } return _ret; } public static ResultObject Update_TEA_TASK_SUB(ExchangeCenterContext db, TEA_TASK_SUB p_task) { ResultObject _ret = new ResultObject(); try { var _task = db.TEA_TASK_SUB.Where(p => p.TaskID == p_task.TaskID && p.TableName == p.TableName && p.Subscriber == "SCP").FirstOrDefault(); if (_task != null) { _task.TaskState = EnumTaskState.Success; _task.DataCount = p_task.DataCount; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "Update_TEA_TASK_SUB", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject CREATE_TEA_TASK_SUB(ExchangeCenterContext db, bool p_ismasterslave ,TEA_TASK_SUB p_task) { ResultObject _ret = new ResultObject(); try { var _list = db.TEA_SUBSCRIBE.Where(p => p.Creator == "SCP" && p.TableName == p_task.TableName).ToList(); foreach (var itm in _list) { var _task = new TEA_TASK_SUB(); _task.GUID = Guid.NewGuid(); _task.TaskID = p_task.TaskID; _task.TaskState = EnumTaskState.Unread; _task.TableName = p_task.TableName; _task.Domain = p_task.Domain; _task.Site = p_task.Site; _task.DataCount = p_task.DataCount; _task.Creator = itm.Creator; _task.CreateTime = DateTime.Now; _task.CreateUser = itm.CreateUser; _task.UpdateTime = DateTime.Now; _task.UpdateUser = itm.CreateUser; _task.Subscriber = itm.Subscriber; db.TEA_TASK_SUB.Add(_task); } var _task1 = new TEA_TASK(); _task1.GUID = p_task.GUID; _task1.DataCount = _list.Count; _task1.TaskID = p_task.TaskID; _task1.TableName = p_task.TableName; _task1.Domain = p_task.Domain; _task1.Site = p_task.Site; _task1.IsMasterSlave = p_ismasterslave; _task1.Creator = "SCP"; _task1.CreateTime = DateTime.Now; _task1.CreateUser = "SCP"; _task1.UpdateTime = DateTime.Now; _task1.UpdateUser = "SCP"; db.TEA_TASK.Add(_task1); _ret.State = ReturnStatus.Succeed; } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List", ex.ToString()); if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException)) { var inner = (UpdateException)ex.InnerException; throw new ScpException(ResultCode.Exception, "0000", ex.ToString()); } else { if (ex.InnerException != null) throw ex.InnerException; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "CREATE_TEA_TASK_SUB", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public ResultObject Del_TEA_TASK_SUB(List p_entitys) { ResultObject _ret = new ResultObject(); try { using (var db = EntitiesFactory.CreateExchangeCenterInstance()) { foreach (var itm in p_entitys) { db.TEA_TASK_SUB.Remove(itm); } } } catch (Exception e) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "Del_TEA_TASK_SUB", e.Message); throw e; } return _ret; } public static void ReadService(Action> p_action) { ResultObject result = new ResultObject(); // ResultObject> result = new ResultObject>(); var _result = Get_TEA_TASK_SUB_List(new TEA_TASK_SUB() { TaskState = EnumTaskState.Unread, Subscriber = "SCP" }); if (_result.State == ReturnStatus.Succeed) { foreach (var _task in _result.Result) { ScpEntities scpdb = EntitiesFactory.CreateScpInstance(); ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance(); DataCenterContext dc = EntitiesFactory.CreateDataCenterInstance(); AppBoxContext authdb = EntitiesFactory.CreateAppBoxInstance(); using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.Serializable, Timeout = new TimeSpan(0, 20, 0) })) { try { switch (_task.TableName) { case "TED_PO_MSTR": result = UpdatePo(db, scpdb, _task); result.Message = _task.TaskID.ToString(); Update_TEA_TASK_SUB(db, _task); EntitiesFactory.SaveDb(scpdb); EntitiesFactory.SaveDb(db); EntitiesFactory.SaveDb(dc); scope.Complete(); break; case "TED_RECEIPT_MSTR": if (_task.Creator == "QAD") { result = UpdateReciveQAD(db, scpdb, _task); result.Message = _task.TaskID.ToString(); Update_TEA_TASK_SUB(db, _task); EntitiesFactory.SaveDb(scpdb); EntitiesFactory.SaveDb(db); EntitiesFactory.SaveDb(dc); scope.Complete(); } else { result = UpdateRecive(db, scpdb, _task); result.Message = _task.TaskID.ToString(); Update_TEA_TASK_SUB(db, _task); EntitiesFactory.SaveDb(scpdb); EntitiesFactory.SaveDb(db); EntitiesFactory.SaveDb(dc); scope.Complete(); } break; case "TED_RETURN_MSTR": result = UpdateARRIVE(db, scpdb, _task); result.Message = _task.TaskID.ToString(); Update_TEA_TASK_SUB(db, _task); EntitiesFactory.SaveDb(scpdb); EntitiesFactory.SaveDb(db); EntitiesFactory.SaveDb(dc); scope.Complete(); break; case "TES_SUPPLIER": result = UpdateSupplier(db, scpdb,authdb, _task); result.Message = _task.TaskID.ToString(); Update_TEA_TASK_SUB(db, _task); EntitiesFactory.SaveDb(scpdb); EntitiesFactory.SaveDb(db); EntitiesFactory.SaveDb(dc); scope.Complete(); break; case "TES_SUPPLIER_PART": result = UpdateSupplierPart(dc, db, scpdb, _task); result.Message = _task.TaskID.ToString(); Update_TEA_TASK_SUB(db, _task); EntitiesFactory.SaveDb(scpdb); EntitiesFactory.SaveDb(db); EntitiesFactory.SaveDb(dc); scope.Complete(); break; case "TES_PART_MSTR": result = UpdatePart(db, scpdb, _task); result.Message = _task.TaskID.ToString(); Update_TEA_TASK_SUB(db, _task); EntitiesFactory.SaveDb(scpdb); EntitiesFactory.SaveDb(db); EntitiesFactory.SaveDb(dc); scope.Complete(); break; //case "TES_SITE": // result = UpdateFactory(db, scpdb, appscpdb, _task); // break; case "TES_PURCHASE_PRICE": result = UpdatePrice(db, scpdb, authdb, _task); result.Message = _task.TaskID.ToString(); Update_TEA_TASK_SUB(db, _task); EntitiesFactory.SaveDb(scpdb); EntitiesFactory.SaveDb(db); EntitiesFactory.SaveDb(dc); scope.Complete(); break; } // p_action(result); result.State = ReturnStatus.Succeed; result.Result = true; } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常 { var sb = new StringBuilder(); foreach (var error in dbEx.EntityValidationErrors.ToList()) { error.ValidationErrors.ToList().ForEach(i => { sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage); }); } scope.Dispose(); result.State = ReturnStatus.Failed; result.ErrorList.Add(dbEx); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { scope.Dispose(); result.State = ReturnStatus.Failed; result.ErrorList.Add(ex); } catch (Exception ex) { scope.Dispose(); result.State = ReturnStatus.Failed; result.ErrorList.Add(ex); result.Message = _task.TaskID.ToString(); // result.MessageList.Add("任务编号:" + _task.TaskID + "错误信息:" + ex.Message); } } p_action(result); } } p_action(result); } public static void WriteService(Action>> p_action) { ResultObject> result = new ResultObject>(); List _msglist = new List(); using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.Serializable, Timeout = new TimeSpan(0, 20, 0) })) { try { ScpEntities scpdb = EntitiesFactory.CreateScpInstance(); ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance(); var _list = scpdb.TS_UNI_API.Where(p => p.State == (int)DataState.Enabled).OrderBy(p => p.UID).ToList(); var billNumList = _list.Select(p => p.BillNum).Distinct(); //if (DateTime.Today.DayOfWeek.ToString() == "Sunday" && DateTime.Now.Hour == 12)//向历史记录表里写入记录 //{ // List _hisList = new List(); // var _taskList = db.TEA_TASK_SUB.Where(p => p.Subscriber == "SCP" && p.TaskState == EnumTaskState.Success).ToList(); // foreach (var itm in _taskList) // { // TEA_TASK_SUB_HIS _entity = new TEA_TASK_SUB_HIS(); // _entity.Creator = itm.Creator; // _entity.Subscriber = itm.Subscriber; // _entity.Domain = itm.Domain; // _entity.Site = itm.Site; // _entity.UID = itm.UID; // _entity.CreateUser = itm.CreateUser; // _entity.CreateTime = itm.CreateTime; // _entity.Remark = itm.Remark; // _entity.UpdateUser = itm.UpdateUser; // _entity.UpdateTime = itm.UpdateTime; // _entity.IsChecked = itm.IsChecked; // _entity.TaskID = itm.TaskID; // _entity.TaskState = itm.TaskState; // _entity.GUID = itm.GUID; // _hisList.Add(_entity); // } // db.TEA_TASK_SUB_HIS.AddOrUpdate(_hisList.ToArray()); // db.TEA_TASK_SUB.RemoveRange(_taskList.ToArray()); //} foreach (var itm in billNumList) { var _dataList = _list.Where(p => p.BillNum == itm).ToList(); var _asnList = _dataList.Where(P => P.InterfaceType == UniApiType.Receive.ToString()).ToList(); if (_asnList.Count > 0) { var _taskId = Guid.NewGuid(); _msglist.Add(new LogModel() { LogMessage = string.Format("发现发货单信息{0}条", _asnList.Count), LogTime = DateTime.Now.ToString(), TaskId = _taskId.ToString(), TableName = "TED_ASN_MSTR" }); var ret = UpdateAsn(db, scpdb, _asnList, _taskId); if (ret.State == ReturnStatus.Succeed) { _msglist.Add(ret.Result); } } var _invoiceList = _dataList.Where(p => p.InterfaceType == UniApiType.Invoice.ToString()).ToList(); if (_invoiceList.Count > 0) { var _taskId = Guid.NewGuid(); _msglist.Add(new LogModel() { LogMessage = string.Format("发现发票信息{0}条", _invoiceList.Count), LogTime = DateTime.Now.ToString(), TaskId = _taskId.ToString(), TableName = "TED_INVOICE_MSTR" }); var ret = UpdateInvoice(db, scpdb,_invoiceList, _taskId); if (ret.State == ReturnStatus.Succeed) { _msglist.Add(ret.Result); } } Thread.Sleep(10); } EntitiesFactory.SaveDb(scpdb); EntitiesFactory.SaveDb(db); scope.Complete(); result.State = ReturnStatus.Succeed; result.Result = _msglist; } catch(Exception e) { _msglist.Add(new LogModel() { LogMessage = e.Message, LogTime = DateTime.Now.ToString(), TaskId =string.Empty, TableName = "ERROR" }); result.State = ReturnStatus.Failed; result.Result = _msglist; scope.Dispose(); } //finally //{ //} } p_action(result); } //public static ResultObject UpdateAsnDetail(ExchangeCenterContext db, ScpEntities scpdb,List p_asnDetailList) //{ // ResultObject _ret = new ResultObject(); // try // { // foreach (var itm in p_asnDetailList) // { // } // } // catch (Exception e) // { // _ret.State = ReturnStatus.Failed; // LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateAsnDetail", e.Message); // _ret.Result = false; // _ret.ErrorList.Add(e); // throw e; // } // return _ret; //} public static List GetASN(string p_asn) { List _ls = new List(); using (var db = EntitiesFactory.CreateExchangeCenterInstance()) { _ls = db.TED_ASN_MSTR.Where(p => p.ASN == p_asn).ToList(); } return _ls; } public static ResultObject UpdateAsn(ExchangeCenterContext db, ScpEntities scpdb, List _asnList, Guid p_taskID/*EnumCommandType p_command*/) { ResultObject _ret = new ResultObject(); try { List _ls = new List(); if (_asnList.FirstOrDefault() != null) { var _api = _asnList.FirstOrDefault(); TED_ASN_MSTR _asn = new TED_ASN_MSTR(); var asn = JsonConvert.DeserializeObject(_api.Extend1); _asn.ASN = _api.BillNum; _asn.CommandType = "A"; _asn.CreateTime = _api.CreateTime; _asn.CreateUser = _api.CreateOper; _asn.KanbanBillNum = asn.AskBillNum; _asn.PurchaseOrder = asn.PoBillNum; _asn.Site = asn.SubSite; _asn.Domain = asn.Site; _asn.Supplier = asn.VendId; _asn.TaskID = p_taskID; _asn.DataID = Guid.NewGuid(); _asn.ShippingDate = asn.ShipTime == null ? DateTime.Now : asn.ShipTime.Value; _asn.PromiseDate = asn.ReceiveTime == null ? DateTime.Now : asn.ReceiveTime.Value; db.TED_ASN_MSTR.Add(_asn); foreach (var detail in _asnList) { TED_ASN_DET _entity = new TED_ASN_DET(); var asnDetail = JsonConvert.DeserializeObject(_api.Extend2); _entity.ASN = detail.BillNum; _entity.PurchaseOrder = asn.PoBillNum; _entity.Line = detail.ErpLineNum; _entity.PartCode = detail.PartCode; _entity.Lot = detail.Batch; _entity.Qty = detail.Qty; _entity.TaskID = p_taskID; _entity.PackQty = detail.PackQty; _entity.Location = asnDetail.DockCode; _entity.Reference = ""; _entity.SupplierLot = detail.VendBatch; _entity.WareClass = ""; _entity.WareId = ""; _entity.Price = detail.Price; _entity.PoUm = detail.PoUnit; _entity.LocUm = detail.LocUnit; _entity.Conv = detail.UmConv; _entity.PartType = ""; _entity.VendBatch = detail.VendBatch; _entity.ProduceDate = asnDetail.ProduceDate == null ? DateTime.Now : asnDetail.ProduceDate.Value; _entity.DueDate = asnDetail.EndTime == null ? DateTime.Now : asnDetail.EndTime.Value; _entity.CreateUser = detail.CreateOper; _entity.CreateTime = detail.CreateTime; _entity.CommandType = "A"; _entity.Domain = asn.Site; _entity.Site = asn.SubSite; _entity.DataID = Guid.NewGuid(); db.TED_ASN_DET.Add(_entity); _ls.Add(_entity); detail.State = (int)BillState.Finish; detail.PutTime = DateTime.Now; } var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB() { DataCount = _asnList.Count, TaskID = p_taskID, TableName = "TED_ASN_MSTR", Site = asn.SubSite, Domain = asn.Site, CreateTime = _api.CreateTime, CreateUser = _api.CreateOper, Creator = "SCP", }); } _ret.State = ReturnStatus.Succeed; _ret.Result = new LogModel() { LogMessage=string.Format("成功发布发货单信息{0}条", _asnList.Count), LogTime=DateTime.Now.ToString(), TaskId= p_taskID.ToString(), TableName= "TED_ASN_MSTR" }; } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateAsn", e.Message); _ret.Result = new LogModel() { LogMessage = "发布发货单信息失败", LogTime = DateTime.Now.ToString(), TaskId = p_taskID.ToString(), TableName = "TED_ASN_MSTR" }; ; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject UpdateReciveDetail(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity) { ResultObject _ret = new ResultObject(); try { var scpRcveDetailList = new List(); var _reciveDetailList = db.TED_RECEIPT_DET.Where(p => p.TaskID == p_entity.TaskID).ToList(); foreach (var detail in _reciveDetailList) { var poLineNum = Convert.ToInt32(detail.Line); var scpRcvDetail = scpdb.TB_RECEIVE_DETAIL_QAD.SingleOrDefault( p => p.RecvBillNum == detail.ReceiveNbr && p.PoBillNum == detail.PurchaseOrder && p.PoLine == detail.Line && p.PartCode == detail.PartCode && p.Batch == detail.Lot ); if (scpRcvDetail == null) { //int istate = 0; //if (isRerviceOk == false) //{ // istate = (int)FormState.关闭; //} //else //{ // istate = (int)FormState.开放; //} scpRcvDetail = new TB_RECEIVE_DETAIL_QAD(); scpRcvDetail.RecvBillNum = detail.ReceiveNbr;//收货单号 scpRcvDetail.PoBillNum = detail.PurchaseOrder;//采购单 scpRcvDetail.PoLine = detail.Line;//订单行 scpRcvDetail.PartCode = detail.PartCode.ToUpper();//零件号 scpRcvDetail.Batch = detail.PartCode;//批次 scpRcvDetail.VendBatch = detail.SupplierLot;//供应商批号 scpRcvDetail.PoUnit = detail.Um;//采购单位 scpRcvDetail.LocUnit = detail.logisticsUm;//物流单位 scpRcvDetail.Qty = detail.ReceiveQuantity;//收货总量 //DockCode = ?,//收货口 scpRcvDetail.State = 0;// (int)FormState.关闭, scpRcvDetail.Remark = detail.Remark; scpRcvDetail.CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime;//创建日期 scpRcvDetail.CreateUser = detail.CreateUser;//创建用户 scpRcvDetail.IsDeleted = false; scpRcvDetail.GUID = detail.TaskID; scpRcvDetail.BillType = 0; scpRcvDetail.SubSite = detail.Shipto; scpRcvDetail.Site = detail.Domain; //scpRcvDetail.Currency = detail.Currency; //scpRcvDetail.Currencyamount = detail.Currencyamount; //scpRcvDetail.ExchangeRateType = detail.Exchangeratetype; //scpRcvDetail.WorkOrderID = detail.WorkOrderID; //scpRcvDetail.POSite = detail.Posite; //scpRcvDetail.POCost = detail.Purchasecost; //scpRcvDetail.POStandardCost = detail.Purchasestandardcost; //scpRcvDetail.ReceiptType = detail.receipttype; //scpRcvDetail.ReturnReasonCode = detail.Returnreason; //scpRcvDetail.Requestedby = detail.Requestby; //scpRcvDetail.TaxEnvironment = detail.Taxenvironment; //scpRcvDetail.TaxIn = detail.taxin; //scpRcvDetail.TaxUsage = detail.Taxusage; //scpRcvDetail.TaxClass = detail.Taxclass; //scpRcvDetail.PurchaseType = detail.Purchasetype; //scpRcvDetail.UMConversion = detail.Umconversion; scpRcveDetailList.Add(scpRcvDetail); } } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateAsnDetail", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject UpdateReciveQAD(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity) { ResultObject _ret = new ResultObject(); try { var _reciveList = db.TED_RECEIPT_MSTR.Where(p => p.TaskID == p_entity.TaskID).ToList(); var _scpPoDetailList = new List(); foreach (var detail in _reciveList) { var scpRcv = scpdb.TB_RECEIVE_QAD.SingleOrDefault(p => p.RecvBillNum != null && p.RecvBillNum == detail.ReceiveNbr && p.Site == detail.Domain && p.SubSite == detail.Site); var scpRcvList = new List(); bool isRerviceOk = false; if (!string.IsNullOrEmpty(detail.Site) && !string.IsNullOrEmpty(detail.Domain)) { string _domain = detail.Domain; string _site = detail.Site; List configs = scpdb.TA_FACTORY_CONFIG.Where(p => p.FactoryId == _domain).ToList(); foreach (TA_FACTORY_CONFIG cfg in configs) { TA_CONFIG tacfg = scpdb.TA_CONFIG.Where(p => p.UID == cfg.ConfigId).SingleOrDefault(); if (tacfg != null && !string.IsNullOrEmpty(tacfg.ParamName) && tacfg.ParamName == "收货自动审核") { if ("允许" == tacfg.ParamValue) { isRerviceOk = true; } } } } if (scpRcv == null) { int istate = 0; if (isRerviceOk == false) { istate = (int)FormState.关闭; } else { istate = (int)FormState.开放; } scpRcv = new TB_RECEIVE_QAD { RecvBillNum = detail.ReceiveNbr,//收货单号 ErpRecvBillNum = detail.ReceiveNbr, State = istate, Remark = "", CreateTime = detail.ReceiptDate == null ? DateTime.Now : (DateTime)detail.ReceiptDate,//创建日期 CreateUser = detail.CreateUser,//创建用户 IsDeleted = false, GUID = detail.TaskID, BillType = 0, Site = detail.Domain,//地点 SubSite = detail.Site,//域 }; scpRcvList.Add(scpRcv); } scpRcv.PoBillNum = detail.PurchaseOrder;//采购单 scpRcv.AsnBillNum = detail.ASN;//发货单号 scpRcv.VendId = detail.Supplier;//供货商名称 scpRcv.ShipTime = detail.ReceiptDate;//收货日期 scpdb.TB_RECEIVE_QAD.AddOrUpdate(scpRcvList.ToArray()); } var scpRcveDetailList = new List(); var _reciveDetailList = db.TED_RECEIPT_DET.Where(p => p.TaskID == p_entity.TaskID).ToList(); foreach (var detail in _reciveDetailList) { var poLineNum = Convert.ToInt32(detail.Line); var scpRcvDetail = scpdb.TB_RECEIVE_DETAIL_QAD.FirstOrDefault( p => p.RecvBillNum == detail.ReceiveNbr && p.PoBillNum == detail.PurchaseOrder && p.PoLine == detail.Line && p.PartCode == detail.PartCode && p.SubSite==detail.Site ); if (scpRcvDetail == null) { //int istate = 0; //if (isRerviceOk == false) //{ // istate = (int)FormState.关闭; //} //else //{ // istate = (int)FormState.开放; //} scpRcvDetail = new TB_RECEIVE_DETAIL_QAD(); scpRcvDetail.RecvBillNum = detail.ReceiveNbr;//收货单号 scpRcvDetail.ErpRecvBillNum = detail.ReceiveNbr;//收货单号 scpRcvDetail.PoBillNum = detail.PurchaseOrder;//采购单 scpRcvDetail.PoLine = detail.Line;//订单行 scpRcvDetail.PartCode = detail.PartCode;//零件号 scpRcvDetail.Batch = detail.Lot;//批次 scpRcvDetail.VendBatch = detail.SupplierLot;//供应商批号 scpRcvDetail.PoUnit = detail.Um;//采购单位 scpRcvDetail.LocUnit = detail.logisticsUm;//物流单位 scpRcvDetail.Qty = detail.ReceiveQuantity; //收货总量 //DockCode = ?,//收货口 scpRcvDetail.State = 1;// (int)FormState.关闭, scpRcvDetail.CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime;//创建日期 scpRcvDetail.CreateUser = detail.CreateUser;//创建用户 scpRcvDetail.IsDeleted = false; scpRcvDetail.GUID = detail.TaskID; scpRcvDetail.BillType = 0; scpRcvDetail.Remark = detail.Remark; scpRcvDetail.SubSite = detail.Shipto; scpRcvDetail.Site = detail.Domain; scpRcvDetail.PurCost = detail.Purchasecost; scpRcvDetail.StdCost = detail.Purchasestandardcost; scpRcvDetail.Rate = detail.Exchangerate; scpRcvDetail.Tax = detail.Taxclass; scpRcvDetail.CurAmt = detail.Currencyamount; scpRcvDetail.DockCode =detail.Location; } scpRcvDetail.RecvBillNum = detail.ReceiveNbr;//收货单号; scpRcvDetail.CurAmt = detail.Currencyamount; scpRcvDetail.PurCost = detail.Purchasecost; scpRcvDetail.StdCost = detail.Purchasestandardcost; scpRcvDetail.Rate = detail.Exchangerate; scpRcvDetail.Tax = detail.Taxclass; scpRcveDetailList.Add(scpRcvDetail); } // var _str=JsonHelper.GetJson>(scpRcveDetailList); scpdb.TB_RECEIVE_DETAIL_QAD.AddOrUpdate(scpRcveDetailList.ToArray()); _ret.State = ReturnStatus.Succeed; _ret.MessageList.Add(string.Format("QAD收货单更新{0}任务编号{1}", _reciveDetailList.Count().ToString(), p_entity.TaskID)); _ret.Result = true; // var retDetail=UpdateReciveDetail(db, scpdb, p_entity); } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateRecive", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); _ret.MessageList.Add(string.Format("QAD收货单更新失败任务编号{0}", p_entity.TaskID)); throw e; } return _ret; } public static ResultObject UpdateRecive(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity) { ResultObject _ret = new ResultObject(); try { var _reciveList = db.TED_RECEIPT_MSTR.Where(p => p.TaskID == p_entity.TaskID).ToList(); var _scpPoDetailList = new List(); foreach (var detail in _reciveList) { var scpRcv = scpdb.TB_RECEIVE.SingleOrDefault(p => p.RecvBillNum != null && p.RecvBillNum == detail.ReceiveNbr && p.Site == detail.Domain && p.SubSite == detail.Site); var scpRcvList = new List(); bool isRerviceOk = false; if (!string.IsNullOrEmpty(detail.Site) && !string.IsNullOrEmpty(detail.Domain)) { string _domain = detail.Domain; string _site = detail.Site; List configs = scpdb.TA_FACTORY_CONFIG.Where(p => p.FactoryId == _domain).ToList(); foreach (TA_FACTORY_CONFIG cfg in configs) { TA_CONFIG tacfg = scpdb.TA_CONFIG.Where(p => p.UID == cfg.ConfigId).SingleOrDefault(); if (tacfg != null && !string.IsNullOrEmpty(tacfg.ParamName) && tacfg.ParamName == "收货自动审核") { if ("允许" == tacfg.ParamValue) { isRerviceOk = true; } } } } if (scpRcv == null) { int istate = 0; if (isRerviceOk == false) { istate = (int)FormState.关闭; } else { istate = (int)FormState.开放; } scpRcv = new TB_RECEIVE { RecvBillNum = detail.ReceiveNbr,//收货单号 State = istate, Remark = "", CreateTime = detail.ReceiptDate == null ? DateTime.Now : (DateTime)detail.ReceiptDate,//创建日期 CreateUser = detail.CreateUser,//创建用户 IsDeleted = false, GUID = detail.TaskID, BillType = 0 }; scpRcvList.Add(scpRcv); } scpRcv.PoBillNum = detail.PurchaseOrder;//采购单 scpRcv.AsnBillNum = detail.ASN;//发货单号 scpRcv.Site = detail.Domain;//地点 scpRcv.VendId = detail.Supplier;//供货商名称 scpRcv.ShipTime = detail.ReceiptDate;//收货日期 scpRcv.SubSite = detail.Site; scpdb.TB_RECEIVE.AddOrUpdate(scpRcvList.ToArray()); } var scpRcveDetailList = new List(); var _reciveDetailList = db.TED_RECEIPT_DET.Where(p => p.TaskID == p_entity.TaskID).ToList(); foreach (var detail in _reciveDetailList) { var poLineNum = Convert.ToInt32(detail.Line); var scpRcvDetail = scpdb.TB_RECEIVE_DETAIL.FirstOrDefault( p => p.RecvBillNum == detail.ReceiveNbr && p.PoBillNum == detail.PurchaseOrder && p.PoLine == detail.Line && p.PartCode == detail.PartCode && p.SubSite == detail.Site ); if (scpRcvDetail == null) { scpRcvDetail = new TB_RECEIVE_DETAIL(); scpRcvDetail.RecvBillNum = detail.ReceiveNbr;//收货单号 scpRcvDetail.PoBillNum = detail.PurchaseOrder;//采购单 scpRcvDetail.PoLine = detail.Line;//订单行 scpRcvDetail.PartCode = detail.PartCode;//零件号 scpRcvDetail.Batch = detail.Lot;//批次 scpRcvDetail.VendBatch = detail.SupplierLot;//供应商批号 scpRcvDetail.PoUnit = detail.Um;//采购单位 scpRcvDetail.LocUnit = detail.logisticsUm;//物流单位 //收货总量 //DockCode = ?,//收货口 scpRcvDetail.State = 1;// (int)FormState.关闭, scpRcvDetail.Remark = detail.Remark; scpRcvDetail.CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime;//创建日期 scpRcvDetail.CreateUser = detail.CreateUser;//创建用户 scpRcvDetail.IsDeleted = false; scpRcvDetail.GUID = detail.TaskID; scpRcvDetail.BillType = 0; scpRcvDetail.SubSite = detail.Shipto; scpRcvDetail.Site = detail.Domain; scpRcveDetailList.Add(scpRcvDetail); } scpRcvDetail.Qty = detail.ReceiveQuantity; } // var _str=JsonHelper.GetJson>(scpRcveDetailList); scpdb.TB_RECEIVE_DETAIL.AddOrUpdate(scpRcveDetailList.ToArray()); _ret.State = ReturnStatus.Succeed; _ret.MessageList.Add(string.Format("QAD收货单更新{0}任务编号{1}", _reciveDetailList.Count().ToString(), p_entity.TaskID)); _ret.Result = true; // var retDetail=UpdateReciveDetail(db, scpdb, p_entity); } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateRecive", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); _ret.MessageList.Add(string.Format("QAD收货单更新失败任务编号{0}", p_entity.TaskID)); throw e; } return _ret; } public static ResultObject UpdateARRIVE(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity) { ResultObject _ret = new ResultObject(); try { var _reciveList = db.TED_RECEIPT_MSTR.Where(p => p.TaskID == p_entity.TaskID && !string.IsNullOrEmpty(p.ReceiveNbr)).ToList(); var _scpPoDetailList = new List(); foreach (var detail in _reciveList) { var scpRcv = scpdb.TB_ARRIVE.SingleOrDefault(p => p.ArrvBillNum != null && p.ArrvBillNum == detail.ReceiveNbr && p.Site == detail.Domain /*&& p.SubSite == detail.Site*/); var scpRcvList = new List(); bool isRerviceOk = false; if (!string.IsNullOrEmpty(detail.Site) && !string.IsNullOrEmpty(detail.Domain)) { string _domain = detail.Domain; string _site = detail.Site; List configs = scpdb.TA_FACTORY_CONFIG.Where(p => p.FactoryId == _domain).ToList(); foreach (TA_FACTORY_CONFIG cfg in configs) { TA_CONFIG tacfg = scpdb.TA_CONFIG.Where(p => p.UID == cfg.ConfigId).SingleOrDefault(); if (tacfg != null && !string.IsNullOrEmpty(tacfg.ParamName) && tacfg.ParamName == "收货自动审核") { if ("允许" == tacfg.ParamValue) { isRerviceOk = true; } } } } if (scpRcv == null) { int istate = 0; if (isRerviceOk == false) { istate = (int)FormState.关闭; } else { istate = (int)FormState.开放; } scpRcv = new TB_ARRIVE { ArrvBillNum = detail.ReceiveNbr,//收货单号 State = istate, Remark = "", CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime,//创建日期 CreateUser = detail.CreateUser,//创建用户 IsDeleted = false, GUID = detail.TaskID, BillType = 0 }; scpRcvList.Add(scpRcv); } scpRcv.PoBillNum = detail.PurchaseOrder;//采购单 scpRcv.AsnBillNum = detail.ASN;//发货单号 if (!string.IsNullOrEmpty(detail.ASN)) { var _entity = scpdb.TB_ASN.Where(p => p.AsnBillNum == detail.ASN).FirstOrDefault(); if (_entity != null) { _entity.State = 4; } } scpRcv.Site = detail.Domain;//地点 scpRcv.VendId = detail.Supplier.Trim();//供货商名称 scpRcv.ShipTime = detail.ReceiptDate;//收货日期 // scpRcv.SubSite = detail.Site; scpdb.TB_ARRIVE.AddOrUpdate(scpRcvList.ToArray()); } var scpRcveDetailList = new List(); var _reciveDetailList = db.TED_RECEIPT_DET.Where(p => p.TaskID == p_entity.TaskID && !string.IsNullOrEmpty(p.ReceiveNbr)).ToList(); foreach (var detail in _reciveDetailList) { var poLineNum = Convert.ToInt32(detail.Line); var scpRcvDetail = scpdb.TB_ARRIVE_DETAIL.SingleOrDefault( p => p.ArrvBillNum == detail.ReceiveNbr && p.PoBillNum == detail.PurchaseOrder && p.PoLine == detail.Line && p.PartCode == detail.PartCode && p.Batch == detail.Lot //&& p.SubSite == detail.Site ); if (scpRcvDetail == null) { //int istate = 0; //if (isRerviceOk == false) //{ // istate = (int)FormState.关闭; //} //else //{ // istate = (int)FormState.开放; //} scpRcvDetail = new TB_ARRIVE_DETAIL(); scpRcvDetail.ArrvBillNum = detail.ReceiveNbr;//收货单号 scpRcvDetail.PoBillNum = detail.PurchaseOrder.Trim();//采购单 scpRcvDetail.PoLine = detail.Line;//订单行 scpRcvDetail.PartCode = detail.PartCode;//零件号 scpRcvDetail.Batch = detail.Lot;//批次 scpRcvDetail.VendBatch = detail.SupplierLot;//供应商批号 scpRcvDetail.PoUnit = detail.Um;//采购单位 scpRcvDetail.LocUnit = detail.logisticsUm;//物流单位 scpRcvDetail.Qty = detail.ReceiveQuantity;//收货总量 //DockCode = ?,//收货口 scpRcvDetail.State = 1;// (int)FormState.关闭, scpRcvDetail.Remark = detail.Remark; scpRcvDetail.CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime;//创建日期 scpRcvDetail.CreateUser = detail.CreateUser;//创建用户 scpRcvDetail.IsDeleted = false; scpRcvDetail.GUID = detail.TaskID; scpRcvDetail.BillType = 0; // scpRcvDetail.SubSite = detail.Site; // scpRcvDetail.Site = detail.Domain; scpRcveDetailList.Add(scpRcvDetail); } } var _str = JsonHelper.GetJson>(scpRcveDetailList); scpdb.TB_ARRIVE_DETAIL.AddOrUpdate(scpRcveDetailList.ToArray()); _ret.State = ReturnStatus.Succeed; _ret.MessageList.Add(string.Format("到货单更新{0}任务编号{1}", _reciveDetailList.Count().ToString(), p_entity.TaskID)); _ret.Result = true; // var retDetail=UpdateReciveDetail(db, scpdb, p_entity); } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateRecive", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); _ret.MessageList.Add(string.Format("到货单更新失败任务编号{0}", p_entity.TaskID)); throw e; } return _ret; } public static ResultObject UpdateInvoiceDetail(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity) { ResultObject _ret = new ResultObject(); try { } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateAsnDetail", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject UpdateInvoice(ExchangeCenterContext db, ScpEntities scpdb, List p_invoiceList, Guid p_taskId) { ResultObject _ret = new ResultObject(); List _mstList = new List(); List _detList = new List(); //List _addList = new List(); try { if (p_invoiceList.FirstOrDefault() != null) { var _api = p_invoiceList.FirstOrDefault(); #region 发票主表 TED_INVOICE_MSTR _invMast = new TED_INVOICE_MSTR(); var _vinvoice = JsonConvert.DeserializeObject(_api.Extend1); _invMast.GUID = Guid.NewGuid(); _invMast.Status = "0"; _invMast.Invoice_ID = 1000; _invMast.InvoiceReference = _vinvoice.InvoiceNum; _invMast.CreateInvoice = true; _invMast.Supplier = _vinvoice.VendId.Trim(); _invMast.SupplierName = _vinvoice.VendName.Trim(); _invMast.Rowid = Guid.NewGuid().ToString(); _invMast.InvoiceIsTaxable = true; _invMast.InvoiceHoldAmountTC = _vinvoice.Amount.Value; _invMast.InvoiceVoucher = 0; _invMast.InvoiceRegistrationNbr = 1000; _invMast.PostingDate = DateTime.Now; _invMast.Currency = "CNY"; _invMast.InvoiceDate = _vinvoice.UpdateTime == null ? DateTime.Now : _vinvoice.UpdateTime.Value; _invMast.GUID = Guid.NewGuid(); _invMast.Invoice_ID = 1000; _invMast.CreateInvoice = true; _invMast.PaymentCondCode = "90"; _invMast.InvoiceDueDate = _invMast.InvoiceDate.AddDays(int.Parse(_invMast.PaymentCondCode)); _invMast.InvoiceIsStatusFinal = true; _invMast.InvoicePostingYear = DateTime.Now.Year; _invMast.APMatchingIsStatusFinal = true; _invMast.InvoiceRemark = _vinvoice.InvcBillNum;//发票编号 _invMast.CreateWithAmountIsTax = true; _invMast.InvoiceAmountTC = _vinvoice.TaxAmount == null ? 0 : _vinvoice.TaxAmount.Value; _invMast.InvoiceIsTaxable = true; _invMast.CreateUser = _vinvoice.CreateUser; _invMast.CreateTime = DateTime.Now; _invMast.Remark = _vinvoice.Remark; _invMast.TaskID = p_taskId; _invMast.CommandType = "A"; _invMast.DataID = Guid.NewGuid(); _invMast.Domain = _vinvoice.Site; _invMast.Site = _vinvoice.SubSite; // _invMast.CInvoiceCostCenterCode = _vinvoice.CInvoiceCostCenterCode; _invMast.CInvoiceReference = _vinvoice.InvoiceNum; // _invMast.CInvoiceDescription = _vinvoice.CInvoiceDescription; // _invMast.CInvoiceType = _vinvoice.CInvoiceType; // _invMast.CInvoiceDivisionCode = _vinvoice.CInvoiceDivisionCode; _mstList.Add(_invMast); #endregion #region 发票差异 if ((_vinvoice.ContractPrice != null && _vinvoice.ContractPrice.Value != 0) ) { _invMast.InvoiceHoldAmountTC = _vinvoice.Amount.Value + _vinvoice.ContractPrice.Value; //_add.VatDebitCC = _vinvoice.ContractPrice.Value;//折扣 //_add.VatDebitLC = _vinvoice.BlancePrice.Value;//税额调整 //_add.VatDebitTC = _vinvoice.ContractPrice.Value; // _addList.Add(_add); } if ((_vinvoice.BlancePrice != null && _vinvoice.BlancePrice.Value != 0)) { _invMast.InvoiceAmountTC = (_vinvoice.TaxAmount == null ? 0 : _vinvoice.TaxAmount.Value) + _vinvoice.BlancePrice.Value; } #endregion #region 发票明细 foreach (var detail in p_invoiceList) { TED_INVOICE_DET _entity = new TED_INVOICE_DET(); var _invDetail = JsonConvert.DeserializeObject(detail.Extend2); _entity.CommandType = "A"; _entity.GUID = _invDetail.GUID; _entity.Status =_invMast.Status; _entity.PurchaseOrder = _invDetail.PoBillNum; _entity.Line = _invDetail.PoLineNum; _entity.ReceiveNbr = _invDetail.RecvBillNum; _entity.MatchQuantity = _invDetail.Qty; _entity.MatchPrice = _invDetail.Price + ((_invDetail.BlancePrice==null)?0: _invDetail.BlancePrice.Value); _entity.IsPvodFinished = true; _entity.UsageDate = DateTime.Now; _entity.IsRecalculateTaxes = true; _entity.ParentRowid = _invMast.Rowid; _entity.CreateUser = _invDetail.CreateUser; _entity.CreateTime = _invDetail.CreateTime; _entity.Remark = _invDetail.Remark; _entity.TaskID = p_taskId; _entity.CommandType = "A"; _entity.DataID = Guid.NewGuid(); _entity.Domain = _invDetail.Site; _entity.Site = _invDetail.SubSite; _entity.PartCode = _invDetail.PartCode; _entity.Tax = _invDetail.Tax.ToString(); _detList.Add(_entity); detail.State = (int)BillState.Finish; detail.PutTime = DateTime.Now; } #endregion var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB() { DataCount = p_invoiceList.Count, TaskID = p_taskId, TableName = "TED_INVOICE_MSTR", Site = _vinvoice.SubSite, Domain = _vinvoice.Site, CreateTime = _api.CreateTime, CreateUser = _api.CreateOper, Creator = "SCP", }); } db.TED_INVOICE_MSTR.AddOrUpdate(_mstList.ToArray()); db.TED_INVOICE_DET.AddOrUpdate(_detList.ToArray()); var str=JsonHelper.GetJson(_mstList.ToArray()); var str1=JsonHelper.GetJson(_detList.ToArray()); _ret.State = ReturnStatus.Succeed; _ret.Result = new LogModel() { LogMessage = string.Format("成功发布发票信息{0}条",_detList.Count), LogTime = DateTime.Now.ToString(), TaskId = p_taskId.ToString(), TableName = "TED_INVOICE_MSTR" }; } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateInvoice", e.Message); _ret.Result = new LogModel() { LogMessage = "发布发票信息失败", LogTime = DateTime.Now.ToString(), TaskId = p_taskId.ToString(), TableName = "TED_INVOICE_MSTR" }; ; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject UpdatePoDetail(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity) { ResultObject _ret = new ResultObject(); try { var _poDetailList = db.TED_POD_DET.Where(p => p.TaskID == p_entity.TaskID).ToList(); var _scpPoDetailList = new List(); foreach (var detail in _poDetailList) { var lineNum = Convert.ToInt32(detail.Line); var PoDetail = scpdb.TB_PO_DETAIL.SingleOrDefault( p => p.PoBillNum == detail.PurchaseOrder && p.PoLine == lineNum && p.Remark == detail.Domain); if (PoDetail == null) { PoDetail = new TB_PO_DETAIL { PoBillNum = detail.PurchaseOrder,//订单号 PoLine = lineNum,//订单行 IsDeleted = false, GUID = detail.TaskID }; _scpPoDetailList.Add(PoDetail); } PoDetail.PartCode = detail.PartCode;//零件号-物料号 PoDetail.PlanQty = detail.Qty;//订货数量-采购量 PoDetail.PoUnit = detail.PoUm;//采购单位 PoDetail.LocUnit = detail.LocUm;//存储单位 PoDetail.Price = ScpCache.Config.项目名称 == ProjectName.重庆北汽模塑.ToString()? 0 : detail.Price; PoDetail.Currency = detail.Currency;//币种 PoDetail.PackQty = detail.PackQty;//标包数量 PoDetail.UnConv = detail.Conv;//转换率 PoDetail.State = Convert.ToInt32(detail.Status);//状态 PoDetail.Remark = detail.Domain;//备注 PoDetail.CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime;//创建日期 PoDetail.CreateUser = detail.CreateUser;//创建用户 PoDetail.UpdateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime;//创建日期 PoDetail.UpdateUser = detail.CreateUser;//创建用户 } scpdb.TB_PO_DETAIL.AddOrUpdate(_scpPoDetailList.ToArray()); //Console.WriteLine($"更新 采购订单 数据:{qadPoDetailList.Count}"); } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "Save_TEA_TASK_SUB", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject UpdatePo(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity) { ResultObject _ret = new ResultObject(); try { var _poList = db.TED_PO_MSTR.Where(p => p.TaskID == p_entity.TaskID).ToList(); foreach (var po in _poList) { var scpPo = scpdb.TB_PO.SingleOrDefault(p => p.PoBillNum != null && p.PoBillNum == po.PurchaseOrder && p.Site == po.Domain && p.SubSite == po.Site); var scpPoList = new List(); if (scpPo == null) { int temp; scpPo = new TB_PO { PoBillNum = po.PurchaseOrder,//订单号 ErpBillNum = po.PurchaseOrder,//ERP订单号 VendId = po.Supplier.ToUpper(),//供应商编号 ModType = Int32.TryParse(po.ModeType, out temp) ? temp : (int?)null, //单据类型(1:日程单,2:离散订单) Contacter = po.Contact,//联系人 Site = po.Domain,//地点 SubSite = po.Site, State = po.Status, Remark = po.Remark,//说明 CreateTime = po.CreateTime == null ? DateTime.Now : (DateTime)po.CreateTime,//创建日期 CreateUser = po.CreateUser,//创建用户 IsDeleted = false, GUID = System.Guid.NewGuid(), BeginTime = po.OrderDate == null ? DateTime.Now : (DateTime)po.OrderDate,//创建日期 EndTime = po.DueDate//收货结束时间 }; scpPoList.Add(scpPo); } scpPo.Contacter = po.Contact;//联系人 scpPo.Buyer = po.Buyer; scpPo.BuyerPhone = po.BuyerPhone; scpPo.UpdateTime = DateTime.Now;//更新日期 scpPo.UpdateUser = "QAD";//更新用户 scpPo.State = po.Status; scpdb.TB_PO.AddOrUpdate(scpPoList.ToArray()); } var scpPoDetailList = new List(); var _poDetailList = db.TED_POD_DET.Where(p => p.TaskID == p_entity.TaskID).ToList(); foreach (var podetail in _poDetailList) { var poLineNum = Convert.ToInt32(podetail.Line); var scpPoDetail =scpdb.TB_PO_DETAIL.SingleOrDefault( p => p.PoBillNum == podetail.PurchaseOrder && p.PoLine == poLineNum && p.Site == podetail.Domain&&p.SubSite==podetail.Site); if (scpPoDetail == null) { scpPoDetail = new TB_PO_DETAIL { PoBillNum = podetail.PurchaseOrder,//订单号 PoLine = poLineNum,//订单行 IsDeleted = false, GUID = System.Guid.NewGuid() }; scpPoDetailList.Add(scpPoDetail); } scpPoDetail.PartCode = podetail.PartCode.ToUpper();//零件号-物料号 scpPoDetail.PlanQty = podetail.Qty;//订货数量-采购量 scpPoDetail.BeginTime = podetail.StartDate;//收货开始时间 scpPoDetail.EndTime = podetail.EndDate;//收货结束时间 scpPoDetail.PoUnit = podetail.PoUm;//采购单位 scpPoDetail.LocUnit = podetail.LocUm.ToUpper();//存储单位 scpPoDetail.DockCode = podetail.Location; scpPoDetail.Price = podetail.Price; scpPoDetail.Currency = podetail.Currency;//币种 scpPoDetail.PackQty = podetail.PackQty;//标包数量 scpPoDetail.UnConv = podetail.Conv;//转换率 scpPoDetail.State = Convert.ToInt32(podetail.Status);//状态 scpPoDetail.Site = podetail.Domain; scpPoDetail.SubSite = podetail.Site; scpPoDetail.CreateTime = podetail.CreateTime == null ? DateTime.Now : (DateTime)podetail.CreateTime;//创建日期 scpPoDetail.CreateUser = podetail.CreateUser;//创建用户 scpPoDetail.UpdateTime = DateTime.Now;//更新日期 scpPoDetail.UpdateUser = "QAD";//更新用户 if (scpPoDetail.PlanQty != 0 && scpPoDetail.PlanQty <= scpPoDetail.ReceivedQty)scpPoDetail.State = (int)FormState.关闭; } scpdb.TB_PO_DETAIL.AddOrUpdate(scpPoDetailList.ToArray()); _ret.State = ReturnStatus.Succeed; _ret.MessageList.Add(string.Format("QAD订单更新{0}任务编号{1}", _poDetailList.Count().ToString(), p_entity.TaskID)); _ret.Result = true; } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdatePo", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); _ret.MessageList.Add(string.Format("QAD订单更新失败任务编号{0}", p_entity.TaskID)); throw e; } return _ret; } /// /// 价格 /// /// /// /// /// public static ResultObject UpdatePrice(ExchangeCenterContext db, ScpEntities scpdb, AppBoxContext authdb, TEA_TASK_SUB p_entity) { ResultObject _ret = new ResultObject(); try { var _pricelistqad = db.TES_PURCHASE_PRICE.Where(p => p.TaskID == p_entity.TaskID).ToList(); var _pricelistscp = new List(); foreach (var price in _pricelistqad) { var _price = new TB_PRICE { VendId = price.SupplierCode, Unit = price.Um, PartCode = price.PartCode, Site = price.Site, Remarks = price.Remark, StartTime = price.Start, EndTime = price.ExpireDate, Curr = price.Currency }; _price.Amt = price.Amount; _pricelistscp.Add(_price); } scpdb.TB_PRICE.AddOrUpdate(_pricelistscp.ToArray()); _ret.State = ReturnStatus.Succeed; _ret.MessageList.Add(string.Format("更新表{0}任务ID{1}成功!", "TES_PURCHASE_PRICE", p_entity.TaskID)); } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdatePrice", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 更新供应商 /// /// /// /// /// public static ResultObject UpdateSupplier(ExchangeCenterContext db, ScpEntities scpdb, AppBoxContext authdb, TEA_TASK_SUB p_entity) { ResultObject _ret = new ResultObject(); try { var _supplierlist = db.TES_SUPPLIER.Where(p => p.TaskID == p_entity.TaskID).ToList(); var _venderlist = new List(); foreach (var supplier in _supplierlist) { var _supplier = scpdb.TA_VENDER.SingleOrDefault(p => p.VendId == supplier.SupplierCode ); if (_supplier == null) { _supplier = new TA_VENDER { VendId = supplier.SupplierCode.ToUpper(), VendAbbCode = "0", State = 1, }; } _supplier.VendName = string.IsNullOrEmpty(supplier.SupplierName) ? supplier.SupplierName : supplier.SupplierName;//供应商名称 //_supplier.VendType = supplier.SupplierType.ToUpper().ToString();//供应商类型 //_supplier.Country = supplier.Country;//国家 //_supplier.City = supplier.City;//城市 //_supplier.Currency = supplier.Currency.ToUpper();//币总 //_supplier.Address = supplier.Address1 + supplier.Address2 + supplier.Address3;//地址 //_supplier.ZipCode = supplier.ZipCode.ToString();//邮编 //_supplier.Contacter = supplier.ContactName;//联系人 //_supplier.Phone = supplier.Telephone.ToString();//电话 //_supplier.Fax = supplier.Fax.ToString();//传真 //_supplier.SubSite = string.IsNullOrEmpty(supplier.Site)?"BJ01" : supplier.Site;//域 _supplier.Site = supplier.Domain;//域 _supplier.Tax = Convert.ToDecimal(supplier.TaxClass/100);//税率 _supplier.Remark = supplier.TaskID.ToString();//任务ID var vendname = string.Format("{0}@{1}",_supplier.VendId.ToUpper(), _supplier.Site.ToUpper()); var _first = authdb.Users.Where(p => p.Name == vendname).FirstOrDefault(); var _vend = authdb.Roles.Where(p => p.Name == "供应商").FirstOrDefault(); var _factory = authdb.TA_FACTORY.Where(p => p.ErpDomain == _supplier.Site.ToUpper()).FirstOrDefault(); if (_first == null && _vend != null && _factory != null) { User _entity = new User(); _entity.Name = vendname; _entity.Remark = _supplier.Site.ToUpper(); _entity.Password = PasswordUtil.CreateDbPassword("666666"); _entity.ChineseName = _supplier.VendName; _entity.Email = _supplier + "@163.com"; _entity.Gender = "男"; _entity.Enabled = true; _entity.Roles = new List(); Role t = authdb.Set().Local.Where(x => x.ID == _vend.ID).FirstOrDefault(); if (t == null) { t = new Role { ID = _vend.ID }; authdb.Set().Attach(t); } _entity.Roles.Add(t); _entity.TA_FACTORY = new List(); TA_FACTORY f = authdb.Set().Local.Where(x => x.ID == _factory.ID).FirstOrDefault(); if (f == null) { f = new TA_FACTORY { ID = _factory.ID }; authdb.Set().Attach(f); } _entity.TA_FACTORY.Add(f); authdb.Users.Add(_entity); } _venderlist.Add(_supplier); } scpdb.TA_VENDER.AddOrUpdate(_venderlist.ToArray()); _ret.State = ReturnStatus.Succeed; _ret.MessageList.Add(string.Format("更新表{0}任务ID{1}成功!", "TES_SUPPLIER", p_entity.TaskID)); } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateSupplier", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 更新供应商零件 /// /// /// /// /// /// public static ResultObject UpdateSupplierPart(DataCenterContext dc, ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity) { ResultObject _ret = new ResultObject(); try { var _supplierpartlist = db.TES_SUPPLIER_PART.Where(p => p.TaskID == p_entity.TaskID).ToList(); var _venderpartlist = new List(); decimal _packqty = 1; foreach (var supplierpart in _supplierpartlist) { var _supplierpart = scpdb.TA_VEND_PART.SingleOrDefault(p => p.VendId == supplierpart.Supplier && p.PartCode == supplierpart.PartCode && p.VendPartCode == supplierpart.SupplierPart && p.Site == supplierpart.Domain ); if (_supplierpart == null) { // var _pack = dc.TS_PACK.SingleOrDefault(p => p.PartCode == supplierpart.PartCode && p.Site == supplierpart.Domain && p.Site == supplierpart.Site); //if (_pack != null) //{ //} _supplierpart = new TA_VEND_PART { VendId = supplierpart.Supplier.ToUpper(),//供应商编号 PartCode = supplierpart.PartCode.ToUpper(),//对应物料号 VendPartCode = supplierpart.SupplierPart.ToUpper(),//供应商物料号 VendPackQty = _packqty,//供应商物料号 State = 1,//状态(0:失效 1:有效) Remark = "", CreateTime = supplierpart.CreateTime == null ? DateTime.Now : (DateTime)supplierpart.CreateTime,//创建日期 CreateUser = supplierpart.CreateUser,//创建用户 TransportationTime = 1, IsDeleted = false, GUID = new Guid() }; } _supplierpart.Site = string.IsNullOrEmpty(_supplierpart.Site) ? supplierpart.Domain : _supplierpart.Site; //_supplierpart.SubSite = string.IsNullOrEmpty(_supplierpart.SubSite) ? supplierpart.Site : _supplierpart.SubSite; _supplierpart.VendPartCode = supplierpart.SupplierPart?.ToUpper() ?? supplierpart.PartCode.ToUpper(); _supplierpart.VendPackQty = _packqty; _supplierpart.TransportationTime = 1; _supplierpart.UpdateTime = DateTime.Now;//更新日期 _supplierpart.UpdateUser = supplierpart.CreateUser;//更新用户 _supplierpart.Remark = supplierpart.TaskID.ToString();//任务ID _venderpartlist.Add(_supplierpart); } scpdb.TA_VEND_PART.AddOrUpdate(_venderpartlist.ToArray()); _ret.State = ReturnStatus.Succeed; _ret.MessageList.Add(string.Format("更新表{0}任务ID{1}成功!", "TES_SUPPLIER_PART", p_entity.TaskID)); } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateSupplierPart", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 更新零件 /// /// /// /// /// public static ResultObject UpdatePart(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity) { ResultObject _ret = new ResultObject(); try { var _partmstrlist = db.TES_PART_MSTR.Where(p => p.TaskID == p_entity.TaskID).ToList(); var _partlist = new List(); foreach (var part in _partmstrlist) { var _part = scpdb.TA_PART.SingleOrDefault(p => p.PartCode == part.PartCode && p.Site == part.Domain ); if (_part == null) { _part = new TA_PART { PartCode = part.PartCode.ToUpper(), ErpPartCode = part.PartCode.ToUpper(), }; } _part.PartDesc1 = part.Desc1; _part.PartDesc2 = string.IsNullOrEmpty(part.Desc2)?string.Empty: part.Desc2; if (!string.IsNullOrEmpty(part.Group)) { _part.ProjectId = part.Group; } else { _part.ProjectId ="public"; } _part.Unit = !string.IsNullOrEmpty(part.Um) ? part.Um.ToUpper() : "EA"; _part.State = part.Status; if (part.InspectType != null) { _part.Ischeck = (part.InspectType == 0) ? true : false; } if (!string.IsNullOrEmpty(part.PartType)) { if (part.PartType.Substring(0, 2) == "12") { _part.PartGroup = "AST"; } else { _part.PartGroup = "其他"; } } _part.Qlevel = string.IsNullOrEmpty(part.Qgrade)?string.Empty: part.Qgrade; _part.State = part.Status; _part.Site = part.Domain; // _part.SubSite = part.Site; _part.Remark = part.TaskID.ToString(); _partlist.Add(_part); } var str= JsonHelper.GetJson>(_partlist); scpdb.TA_PART.AddOrUpdate(_partlist.ToArray()); _ret.State = ReturnStatus.Succeed; _ret.MessageList.Add(string.Format("更新表{0}任务ID{1}成功!", "TES_PART_MSTR", p_entity.TaskID)); } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdatePart", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject UpdateFactory(ExchangeCenterContext db, ScpEntities scpdb, AppBoxContext appscpdb, TEA_TASK_SUB p_entity) { ResultObject _ret = new ResultObject(); try { var _factorylist = db.TES_SITE.Where(p => p.TaskID == p_entity.TaskID).ToList(); var _appboxfactorylist = new List(); var _scpfactorylist = new List(); foreach(var factory in _factorylist) { var item1 = appscpdb.TA_FACTORY.SingleOrDefault(p => p.ErpDomain == factory.Domain && p.ErpSite == factory.Site); if (item1 == null) { item1 = new TA_FACTORY { ErpDomain = factory.Domain, ErpSite = factory.Site, GUID = Guid.NewGuid(), State = 1, CreateTime = DateTime.Now, CreateUser= factory.CreateUser }; } item1.FactoryId = factory.Domain; item1.ZipCode = factory.Domain; item1.FactoryName = factory.Desc; item1.Address = ""; item1.Remark = factory.Remark; item1.Tel = ""; item1.Fax = ""; item1.UpdateTime = DateTime.Now; item1.UpdateUser = factory.CreateUser; _appboxfactorylist.Add(item1); var item2 = scpdb.TB_FACTORY.SingleOrDefault(p => p.ErpDomain == factory.Domain && p.ErpSite == factory.Site); if (item2 == null) { item2 = new TB_FACTORY { ErpDomain = factory.Domain, ErpSite = factory.Site, GUID = Guid.NewGuid(), State = 1, CreateTime = DateTime.Now, CreateUser = factory.CreateUser }; } item2.FactoryId = factory.Domain; item2.ZipCode = factory.Domain; item2.FactoryName = factory.Desc; item2.Address = ""; item2.Remark = factory.Remark; item2.Tel = ""; item2.Fax = ""; item2.UpdateTime = DateTime.Now; item2.UpdateUser = factory.CreateUser; _scpfactorylist.Add(item2); } appscpdb.TA_FACTORY.AddOrUpdate(_appboxfactorylist.ToArray()); scpdb.TB_FACTORY.AddOrUpdate(_scpfactorylist.ToArray()); if (appscpdb.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; } } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateFactory", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject WritePo(List p_order_list, string site, string p_creator, DateTime p_time, BillModType p_modtype, string subsite, string p_chineseName, string p_buyerPhone) { ResultObject _ret = new ResultObject(); using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.Serializable, Timeout = new TimeSpan(0, 20, 0) })) { try { ScpEntities scpdb = EntitiesFactory.CreateScpInstance(); ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance(); var OrderList = p_order_list.GroupBy(p => p.订单编号).ToList(); string _polist = ""; int _num = 1; OrderList.ForEach((p) => { Guid taskid = Guid.NewGuid(); var list = p.ToList(); if (list.Count > 0) { #region 日程单 if (p_modtype == BillModType.Contract) { var _entity = list.FirstOrDefault(); var _po = scpdb.TB_PO.SingleOrDefault(t => t.PoBillNum == _entity.订单编号/* && t.State == state*/ && t.Site == site && t.SubSite == subsite && t.VendId == _entity.供应商编号.ToUpper()); if (_po == null) { _po = new TB_PO { GUID = Guid.NewGuid(), PoBillNum = _entity.订单编号.ToUpper(), State = (int)PoState.Open, Site = site, SubSite = subsite, VendId = _entity.供应商编号.Trim().ToUpper() }; } _po.ErpBillNum = _entity.订单编号.Trim().ToUpper(); ; _po.ModType = (int)p_modtype; _po.Contacter = p_chineseName;// _entity.联系人; _po.Buyer = p_chineseName;// _entity.联系人; _po.Site = site.Trim().ToUpper(); _po.BuyerPhone = p_buyerPhone; _po.Remark = _entity.备注; _po.IsDeleted = false; _po.CreateTime = DateTime.Now; _po.CreateUser = p_creator; _po.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); _po.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.要求到货日期); scpdb.TB_PO.AddOrUpdate(_po); TED_PO_MSTR _po_mstr = new TED_PO_MSTR(); _po_mstr.GUID = Guid.NewGuid(); _po_mstr.PurchaseOrder = _entity.订单编号.Trim().ToUpper(); _po_mstr.Supplier = _entity.供应商编号.Trim().ToUpper(); _po_mstr.Contact = p_chineseName;// _entity.联系人; _po_mstr.ShipTo = subsite.Trim().ToUpper();//发往 _po_mstr.OrderDate = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); _po_mstr.DueDate = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期); _po_mstr.StartDate = string.IsNullOrEmpty(_entity.订单开始时间) ? DateTime.Now : DateTime.Parse(_entity.订单开始时间);//订单日期 _po_mstr.EndDate = string.IsNullOrEmpty(_entity.订单截至日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.订单截至日期); _po_mstr.MadeIn = ""; _po_mstr.Confirm = true; _po_mstr.Buyer = p_chineseName;//_entity.采购员; _po_mstr.BuyerPhone = p_buyerPhone;// _entity.采购员电话; _po_mstr.Status = (int)PoState.Open; _po_mstr.ScheduledOrder = true; _po_mstr.CreateUser = p_creator; _po_mstr.CreateTime = p_time; _po_mstr.Remark = _entity.备注; ; _po_mstr.TaskID = taskid; _po_mstr.Domain = site.Trim().ToUpper(); _po_mstr.ModeType = ((int)p_modtype).ToString(); _po_mstr.Site = subsite.Trim().ToUpper(); _po_mstr.DataID = Guid.NewGuid(); _po_mstr.Pricelist = _entity.供应商编号.ToUpper().Trim() + subsite.Trim().Substring(1, 1) + subsite.Substring(3, 1).Trim(); _po_mstr.Taxclass = _entity.税率; _po_mstr.CommandType = "A"; db.TED_PO_MSTR.Add(_po_mstr); list.ForEach((itm) => { int _poline = Int32.Parse(itm.行号); var _PO_Detail = scpdb.TB_PO_DETAIL.FirstOrDefault(t => t.PartCode == itm.零件号 && t.PoLine == _poline && t.PoBillNum == itm.订单编号 /*&& t.State == state*/ && t.Site == site && t.SubSite == subsite); TED_PO_DET _PO_Detail_Det = new TED_PO_DET(); _PO_Detail_Det.GUID = Guid.NewGuid(); _PO_Detail_Det.PurchaseOrder = itm.订单编号.Trim().ToUpper(); _PO_Detail_Det.Line = Int32.Parse(itm.行号); _PO_Detail_Det.Currency = "CNY"; _PO_Detail_Det.PoType = itm.订单类型; _PO_Detail_Det.PartCode = itm.零件号.Trim().ToUpper(); _PO_Detail_Det.Qty = decimal.Parse(itm.数量); _PO_Detail_Det.QtyOpen = 0; _PO_Detail_Det.PackQty = 1; _PO_Detail_Det.Currency = itm.币种; _PO_Detail_Det.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价); var _part = scpdb.TA_PART.FirstOrDefault(part => part.PartCode == itm.零件号.Trim().ToUpper()); if (_part == null) { _PO_Detail_Det.PoUm = itm.单位; _PO_Detail_Det.LocUm = itm.单位; } else { _PO_Detail_Det.PoUm = _part.Unit; _PO_Detail_Det.LocUm = _part.Unit; } _PO_Detail_Det.Conv = 1; _PO_Detail_Det.DueDate = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now : DateTime.Parse(itm.要求到货日期); _PO_Detail_Det.Status = (int)PoState.Open; _PO_Detail_Det.CreateTime = DateTime.Parse(itm.订单创建时间); _PO_Detail_Det.StartDate = string.IsNullOrEmpty(itm.零件开始时间) ? p_time : DateTime.Parse(itm.零件开始时间); _PO_Detail_Det.EndDate = string.IsNullOrEmpty(itm.零件截至日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(itm.零件截至日期); _PO_Detail_Det.CreateUser = p_creator; _PO_Detail_Det.TaskID = taskid; if (_PO_Detail != null) { _PO_Detail_Det.CommandType = "U"; } else { _PO_Detail = new TB_PO_DETAIL { GUID = Guid.NewGuid(), PartCode = itm.零件号.Trim().ToUpper(), PoLine = _poline, PoBillNum = itm.订单编号.Trim().ToUpper(), State = (int)PoState.Open, Site = site, SubSite = subsite }; _PO_Detail_Det.CommandType = "A"; } _PO_Detail_Det.DataID = Guid.NewGuid(); _PO_Detail_Det.Domain = site.Trim().ToUpper(); _PO_Detail_Det.Site = subsite.Trim().ToUpper(); _PO_Detail_Det.Workorderlot = itm.加工单号; _PO_Detail_Det.PoType = itm.订单类型; _PO_Detail_Det.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序); _PO_Detail_Det.Location = itm.库位; _PO_Detail_Det.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数); _PO_Detail_Det.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数); _PO_Detail_Det.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数); _PO_Detail_Det.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数); _PO_Detail_Det.Supplieritem = itm.供应商零件; _PO_Detail_Det.Dliverypatterncode = itm.发货样式; _PO_Detail_Det.Deliverytimecode = itm.发货时间样式; _PO_Detail_Det.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期); _PO_Detail_Det.Pricelist = _entity.供应商编号.Trim().ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1); db.TED_POD_DET.Add(_PO_Detail_Det); _PO_Detail.Currency = "CNY"; _PO_Detail.PoUnit = itm.单位; _PO_Detail.CreateTime = DateTime.Now; _PO_Detail.CreateUser = p_creator; _PO_Detail.BeginTime = string.IsNullOrEmpty(itm.订单创建时间) ? DateTime.Now : DateTime.Parse(itm.订单创建时间); _PO_Detail.EndTime = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(itm.要求到货日期); _PO_Detail.PlanQty = decimal.Parse(itm.数量); _PO_Detail.IsDeleted = false; _PO_Detail.LocUnit = itm.单位; _PO_Detail.PoUnit = itm.单位; _PO_Detail.UnConv = 1; _PO_Detail.Remark = itm.备注; _PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价); scpdb.TB_PO_DETAIL.AddOrUpdate(_PO_Detail); }); _polist = _polist + _po.PoBillNum + ","; } #endregion #region 离散单 (离散单只增加不修改) if (p_modtype == BillModType.Non_Contract) { var _entity = list.FirstOrDefault(); TB_PO _po = new TB_PO(); _po.GUID = Guid.NewGuid(); _po.PoBillNum = SCP_BILLCODE_CONTROLLER.MakePoNum(_num); _po.State = (int)PoState.Open; _po.Site = site.Trim().ToUpper(); _po.SubSite = subsite.Trim().ToUpper(); _po.VendId = _entity.供应商编号.Trim().ToUpper(); _po.ErpBillNum = _po.PoBillNum; _po.ModType = (int)p_modtype; _po.Contacter = p_chineseName;// _entity.联系人; _po.Buyer = p_chineseName;// _entity.联系人; _po.BuyerPhone = p_buyerPhone; _po.Site = site.Trim().ToUpper(); _po.Remark = _entity.备注; _po.IsDeleted = false; _po.CreateTime = DateTime.Now; _po.CreateUser = p_creator; _po.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); _po.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.要求到货日期); scpdb.TB_PO.AddOrUpdate(_po); TB_ASK _ask = new TB_ASK(); _ask.AskBillNum = SCP_BILLCODE_CONTROLLER.MakeASKCodeByNum(_num); _ask.GUID = Guid.NewGuid(); _ask.PoBillNum = _po.PoBillNum; _ask.VendId = _entity.供应商编号.Trim().ToUpper(); _ask.IsDeleted = false; _ask.CreateTime = DateTime.Now; _ask.CreateUser = p_creator; _ask.Site = site.Trim().ToUpper(); _ask.ReceivedPort = "";//交货口 _ask.State = (int)AskState.New; _ask.Remark = _entity.备注; _ask.ModType = (int)p_modtype; _ask.ErpBillNum = _po.PoBillNum; _ask.BeginTime = p_time; _ask.EndTime = DateTime.Parse(_entity.要求到货日期); _ask.Buyer = p_chineseName; _ask.BuyerPhone = p_buyerPhone; _ask.SubSite = subsite; scpdb.TB_ASK.Add(_ask); TED_PO_MSTR _po_mstr = new TED_PO_MSTR(); _po_mstr.GUID = Guid.NewGuid(); _po_mstr.PurchaseOrder = _po.PoBillNum; _po_mstr.Supplier = _entity.供应商编号.Trim().ToUpper(); _po_mstr.Contact = p_chineseName;// _entity.联系人; _po_mstr.ShipTo = subsite.Trim().ToUpper();//发往 _po_mstr.OrderDate = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); _po_mstr.DueDate = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期); _po_mstr.StartDate = string.IsNullOrEmpty(_entity.订单开始时间) ? DateTime.Now : DateTime.Parse(_entity.订单开始时间);//订单日期 _po_mstr.EndDate = string.IsNullOrEmpty(_entity.订单截至日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.订单截至日期); _po_mstr.MadeIn = ""; _po_mstr.Confirm = true; _po_mstr.Buyer = p_chineseName;// _entity.采购员; _po_mstr.BuyerPhone = p_buyerPhone;// _entity.采购员电话; _po_mstr.Status = (int)PoState.Open; _po_mstr.ScheduledOrder = false; _po_mstr.CreateUser = p_creator; _po_mstr.CreateTime = p_time; _po_mstr.Remark = _entity.备注; ; _po_mstr.TaskID = taskid; _po_mstr.CommandType = "A"; _po_mstr.Domain = site.Trim().ToUpper(); _po_mstr.ModeType = ((int)p_modtype).ToString(); _po_mstr.Site = subsite.Trim().ToUpper(); _po_mstr.DataID = Guid.NewGuid(); _po_mstr.Pricelist = _entity.供应商编号.ToUpper().Trim() + subsite.Substring(1, 1) + subsite.Substring(3, 1); _po_mstr.Taxclass = _entity.税率; db.TED_PO_MSTR.Add(_po_mstr); int _number = 1; list.ForEach((itm) => { TB_PO_DETAIL _PO_Detail = new TB_PO_DETAIL(); _PO_Detail.GUID = Guid.NewGuid(); _PO_Detail.PartCode = itm.零件号.Trim().ToUpper(); _PO_Detail.PoLine = _number; _PO_Detail.PoBillNum = _po.PoBillNum; _PO_Detail.State = (int)PoState.Open; _PO_Detail.Site = site.Trim().ToUpper(); _PO_Detail.SubSite = subsite.Trim().ToUpper(); _PO_Detail.Currency = "CNY"; _PO_Detail.PoUnit = itm.单位; _PO_Detail.Remark = itm.备注; _PO_Detail.CreateTime = DateTime.Now; _PO_Detail.CreateUser = p_creator; _PO_Detail.BeginTime = string.IsNullOrEmpty(itm.订单创建时间) ? DateTime.Now : DateTime.Parse(itm.订单创建时间); _PO_Detail.EndTime = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(itm.要求到货日期); _PO_Detail.PlanQty = decimal.Parse(itm.数量); _PO_Detail.IsDeleted = false; _PO_Detail.LocUnit = itm.单位; _PO_Detail.PoUnit = itm.单位; _PO_Detail.UnConv = 1; _PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价); _PO_Detail.TempQty = decimal.Parse(itm.数量); TB_ASK_DETAIL _tDetail = new TB_ASK_DETAIL(); _tDetail.Remark = itm.备注; _tDetail.PoBillNum = _po.PoBillNum; _tDetail.AskBillNum = _ask.AskBillNum; _tDetail.PoLine = _number; _tDetail.PoUnit = itm.单位; _tDetail.CreateTime = DateTime.Now; _tDetail.CreateUser = p_creator; _tDetail.PartCode = itm.零件号.ToUpper().Trim(); _tDetail.ReceivedPort = ""; _tDetail.BeginTime = p_time; _tDetail.EndTime = Convert.ToDateTime(itm.要求到货日期); _tDetail.TempQty = 0; _tDetail.AskQty = Decimal.Parse(itm.数量); _tDetail.IsDeleted = false; _tDetail.LocUnit = itm.单位; _tDetail.UnConv = 1; _tDetail.State = (int)PoState.Open; _tDetail.SubSite = subsite.Trim().ToUpper(); _tDetail.Site = site.Trim().ToUpper(); _tDetail.Price = Decimal.Parse(itm.单价); _tDetail.GUID = Guid.NewGuid(); _tDetail.Currency = itm.币种; scpdb.TB_ASK_DETAIL.Add(_tDetail); scpdb.TB_PO_DETAIL.AddOrUpdate(_PO_Detail); TED_PO_DET _PO_Detail_Det = new TED_PO_DET(); _PO_Detail_Det.GUID = Guid.NewGuid(); _PO_Detail_Det.PurchaseOrder = _po.PoBillNum; _PO_Detail_Det.Line = _number; _PO_Detail_Det.Currency = "CNY"; _PO_Detail_Det.PoType = itm.订单类型; _PO_Detail_Det.PartCode = itm.零件号.Trim().ToUpper(); _PO_Detail_Det.Qty = decimal.Parse(itm.数量); _PO_Detail_Det.QtyOpen = 0; _PO_Detail_Det.PackQty = 1; _PO_Detail_Det.Currency = itm.币种; _PO_Detail_Det.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价); _PO_Detail_Det.PoUm = itm.单位; _PO_Detail_Det.LocUm = itm.单位; _PO_Detail_Det.Conv = 1; _PO_Detail_Det.DueDate = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now : DateTime.Parse(itm.要求到货日期); _PO_Detail_Det.Status = (int)PoState.Open; _PO_Detail_Det.CreateTime = DateTime.Parse(itm.订单创建时间); _PO_Detail_Det.StartDate = string.IsNullOrEmpty(itm.零件开始时间) ? p_time : DateTime.Parse(itm.零件开始时间); _PO_Detail_Det.EndDate = string.IsNullOrEmpty(itm.零件截至日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(itm.零件截至日期); _PO_Detail_Det.CreateUser = p_creator; _PO_Detail_Det.TaskID = taskid; _PO_Detail_Det.CommandType = "A"; _PO_Detail_Det.DataID = Guid.NewGuid(); _PO_Detail_Det.Domain = site.Trim().ToUpper(); _PO_Detail_Det.Site = subsite.Trim().ToUpper(); _PO_Detail_Det.Workorderlot = itm.加工单号; _PO_Detail_Det.PoType = itm.订单类型; _PO_Detail_Det.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序); _PO_Detail_Det.Location = itm.库位; _PO_Detail_Det.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数); _PO_Detail_Det.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数); _PO_Detail_Det.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数); _PO_Detail_Det.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数); _PO_Detail_Det.Supplieritem = itm.供应商零件; _PO_Detail_Det.Dliverypatterncode = itm.发货样式; _PO_Detail_Det.Deliverytimecode = itm.发货时间样式; _PO_Detail_Det.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期); _PO_Detail_Det.Pricelist = _entity.供应商编号.ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1); db.TED_POD_DET.Add(_PO_Detail_Det); _number++; }); _polist = _polist + _po.PoBillNum + ","; } #endregion } var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB() { DataCount = 1, TaskID = taskid, TableName = "TED_PO_MSTR", Site = subsite.Trim().ToUpper(), Domain = site.Trim().ToUpper(), CreateTime = p_time, CreateUser = p_creator, Creator = "SCP", }); _num++; Thread.Sleep(10); } ); EntitiesFactory.SaveDb(scpdb); EntitiesFactory.SaveDb(db); scope.Complete(); _ret.State = ReturnStatus.Succeed; _ret.Result = true; _ret.Message = _polist; } catch (Exception e) { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "InsterPo", e.Message); _ret.Result = false; _ret.Message = e.InnerException.Message; scope.Dispose(); } } return _ret; } //public static ResultObject UpdateTES_PURCHASE_PRICE(List p_list, string domain, string site, string name, bool flag,int ConfirmState) //{ // ResultObject _ret = new ResultObject(); // if (ConfirmState!=(int)PriceState.FConfirm) // { // _ret.State = ReturnStatus.Succeed; // _ret.Result = true; // return _ret; // } // try // { // ScpEntities scpdb = EntitiesFactory.CreateScpInstance(); // ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance(); // List _teslist = new List(); // var _ls = scpdb.V_TB_PRICE.Where(p => p_list.Contains(p.UID)).ToList(); // foreach (var _price in _ls) // { // Guid _taskguid = Guid.NewGuid(); // TES_PURCHASE_PRICE _item = new TES_PURCHASE_PRICE(); // var apiitem = db.TES_PURCHASE_PRICE.Where(p => p.SupplierCode == _price.VendId && p.PartCode == _price.PartCode && p.Domain == _price.Site && p.Site == _price.SubSite && p.Start == _price.StartTime && p.ExpireDate == _price.EndTime).ToList(); // if (apiitem.Count <= 0) // { // _item.CommandType = "A";//命令类型 // _item.DataID = Guid.NewGuid();//DataID // } // else // { // var uid = apiitem.Select(p => p.UID).Max(); // var old_item = db.TES_PURCHASE_PRICE.FirstOrDefault(t => t.UID == uid); // _item.CommandType = "U";//命令类型 // _item.DataID = old_item.GUID; // } // _item.PartCode = _price.PartCode;//零件编号 // _item.Domain = _price.Site;//域 // _item.Site = _price.SubSite;//地点 // _item.Start = Convert.ToDateTime(_price.StartTime);//开始时间 // _item.ExpireDate = Convert.ToDateTime(_price.EndTime);//结束时间 // _item.CreateUser = "scp";//_price.CreateUser;//创建人 // _item.CreateTime = DateTime.Now;//_price.CreateTime;//创建时间 // _item.GUID = Guid.NewGuid();//GUID // _item.PriceList = (_price.VendId + _price.SubSite.Substring(1, 1) + _price.SubSite.Substring(3, 1)).Trim(); //价目表代码 // _item.Desc = "";//说明 // _item.ProductLine = "";//产品类 // _item.Currency = _price.Curr;//货币 // var _first = scpdb.TA_PART.Where(itm => itm.PartCode == _price.PartCode).FirstOrDefault(); // if (_first != null) // { // _item.Um = _first.Unit; // } // else // { // _item.Um = _price.Unit;//单位 // } // _item.AmountType = "P";//金额类型 // _item.Amount = _price.Amt+_price.SharingPrice;//金额(零件单价—+分摊单价) // _item.TaskID = _taskguid;//任务编号 // _item.Remark = _price.Remarks;//备注 // _item.SupplierCode = _price.VendId;//供应商 // _item.VendAmount = _price.Amt;//供应商金额 // _teslist.Add(_item); // var ret = CREATE_TEA_TASK_SUB(db, false, // new TEA_TASK_SUB() // { // DataCount = _teslist.Count, // TaskID = _taskguid, // TableName = "TES_PURCHASE_PRICE", // Site = _price.SubSite, // Domain = _price.Site, // CreateTime = DateTime.Now, // CreateUser = name, // Creator = name, // }); // } // db.TES_PURCHASE_PRICE.AddOrUpdate(_teslist.ToArray()); // if (db.SaveChanges() != -1) // { // _ret.State = ReturnStatus.Succeed; // _ret.Result = true; // } // else // { // _ret.State = ReturnStatus.Failed; // _ret.Result = false; // _ret.Message = "数据更新失败!"; // } // } // catch (Exception e) // { // _ret.State = ReturnStatus.Failed; // _ret.Result = false; // _ret.Message =e.InnerException.Message; // } // return _ret; //} //public static ResultObject WritePo(List p_order_list, string site, string p_creator, DateTime p_time, BillModType p_modtype, string subsite, string p_chineseName, string p_buyerPhone) //{ // ResultObject _ret = new ResultObject(); // using (var scope = // new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() // { // IsolationLevel = System.Transactions.IsolationLevel.Serializable, // Timeout = new TimeSpan(0, 20, 0) // })) // { // try // { // ScpEntities scpdb = EntitiesFactory.CreateScpInstance(); // ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance(); // var OrderList = p_order_list.GroupBy(p => p.订单编号).ToList(); // string _polist = ""; // int _num = 1; // OrderList.ForEach((p) => // { // Guid taskid = Guid.NewGuid(); // var list = p.ToList(); // if (list.Count > 0) // { // #region 日程单 // if (p_modtype == BillModType.Contract) // { // var _entity = list.FirstOrDefault(); // var _po = scpdb.TB_PO.SingleOrDefault(t => t.PoBillNum == _entity.订单编号/* && t.State == state*/ && t.Site == site && t.SubSite == subsite && t.VendId == _entity.供应商编号.ToUpper()); // TED_PO_MSTR _po_mstr = new TED_PO_MSTR(); // _po_mstr.GUID = Guid.NewGuid(); // _po_mstr.PurchaseOrder = _entity.订单编号.Trim().ToUpper(); // _po_mstr.Supplier = _entity.供应商编号.Trim().ToUpper(); // _po_mstr.Contact = p_chineseName;// _entity.联系人; // _po_mstr.ShipTo = subsite.Trim().ToUpper();//发往 // _po_mstr.OrderDate = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); // _po_mstr.DueDate = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期); // _po_mstr.StartDate = string.IsNullOrEmpty(_entity.订单开始时间) ? DateTime.Now : DateTime.Parse(_entity.订单开始时间);//订单日期 // _po_mstr.EndDate = string.IsNullOrEmpty(_entity.订单截至日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(_entity.订单截至日期); // _po_mstr.MadeIn = ""; // _po_mstr.Confirm = true; // _po_mstr.Buyer = p_chineseName;//_entity.采购员; // _po_mstr.BuyerPhone = p_buyerPhone;// _entity.采购员电话; // _po_mstr.Status = (int)PoState.Open; // _po_mstr.ScheduledOrder = true; // _po_mstr.CreateUser = p_creator; // _po_mstr.CreateTime = p_time; // _po_mstr.Remark = _entity.备注; ; // _po_mstr.TaskID = taskid; // _po_mstr.Domain = site.Trim().ToUpper(); // _po_mstr.ModeType = ((int)p_modtype).ToString(); // _po_mstr.Site = subsite.Trim().ToUpper(); // _po_mstr.DataID = Guid.NewGuid(); // _po_mstr.Pricelist = _entity.供应商编号.ToUpper().Trim() + subsite.Trim().Substring(1, 1) + subsite.Substring(3, 1).Trim(); // _po_mstr.Taxclass = _entity.税率; // if (_po != null) // { // _po_mstr.CommandType = "U"; // } // else // { // _po = new TB_PO { GUID = Guid.NewGuid(), PoBillNum = _entity.订单编号.ToUpper(), State = (int)PoState.Open, Site = site, SubSite = subsite, VendId = _entity.供应商编号.Trim().ToUpper() }; // _po_mstr.CommandType = "A"; // } // db.TED_PO_MSTR.Add(_po_mstr); // _po.ErpBillNum = _entity.订单编号.Trim().ToUpper(); ; // _po.ModType = (int)p_modtype; // _po.Contacter = p_chineseName;// _entity.联系人; // _po.Buyer = p_chineseName;// _entity.联系人; // _po.Site = site.Trim().ToUpper(); // _po.BuyerPhone = p_buyerPhone; // _po.Remark = _entity.备注; // _po.IsDeleted = false; // _po.CreateTime = DateTime.Now; // _po.CreateUser = p_creator; // _po.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); // _po.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(_entity.要求到货日期); // _po.Pricelist = _entity.供应商编号.Trim().ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1); // _po.Taxclass = _entity.税率; // scpdb.TB_PO.AddOrUpdate(_po); // list.ForEach((itm) => // { // int _poline = Int32.Parse(itm.行号); // var _PO_Detail = scpdb.TB_PO_DETAIL.FirstOrDefault(t => t.PartCode == itm.零件号 && t.PoLine == _poline && t.PoBillNum == itm.订单编号 /*&& t.State == state*/ && t.Site == site && t.SubSite == subsite); // TED_PO_DET _PO_Detail_Det = new TED_PO_DET(); // _PO_Detail_Det.GUID = Guid.NewGuid(); // _PO_Detail_Det.PurchaseOrder = itm.订单编号.Trim().ToUpper(); // _PO_Detail_Det.Line = Int32.Parse(itm.行号); // _PO_Detail_Det.Currency = "CNY"; // _PO_Detail_Det.PoType = itm.订单类型; // _PO_Detail_Det.PartCode = itm.零件号.Trim().ToUpper(); // _PO_Detail_Det.Qty = decimal.Parse(itm.数量); // _PO_Detail_Det.QtyOpen = 0; // _PO_Detail_Det.PackQty = 1; // _PO_Detail_Det.Currency = itm.币种; // _PO_Detail_Det.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价); // var _part = scpdb.TA_PART.FirstOrDefault(part => part.PartCode == itm.零件号.Trim().ToUpper()); // if (_part == null) // { // _PO_Detail_Det.PoUm = itm.单位; // _PO_Detail_Det.LocUm = itm.单位; // } // else // { // _PO_Detail_Det.PoUm = _part.Unit; // _PO_Detail_Det.LocUm = _part.Unit; // } // _PO_Detail_Det.Conv = 1; // _PO_Detail_Det.DueDate = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now : DateTime.Parse(itm.要求到货日期); // _PO_Detail_Det.Status = (int)PoState.Open; // _PO_Detail_Det.CreateTime = DateTime.Parse(itm.订单创建时间); // _PO_Detail_Det.StartDate = string.IsNullOrEmpty(itm.零件开始时间) ? p_time : DateTime.Parse(itm.零件开始时间); // _PO_Detail_Det.EndDate = string.IsNullOrEmpty(itm.零件截至日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(itm.零件截至日期); // _PO_Detail_Det.CreateUser = p_creator; // _PO_Detail_Det.TaskID = taskid; // if (_PO_Detail != null) // { // _PO_Detail_Det.CommandType = "U"; // } // else // { // _PO_Detail = new TB_PO_DETAIL { GUID = Guid.NewGuid(), PartCode = itm.零件号.Trim().ToUpper(), PoLine = _poline, PoBillNum = itm.订单编号.Trim().ToUpper(), State = (int)PoState.Open, Site = site, SubSite = subsite }; // _PO_Detail_Det.CommandType = "A"; // } // _PO_Detail_Det.DataID = Guid.NewGuid(); // _PO_Detail_Det.Domain = site.Trim().ToUpper(); // _PO_Detail_Det.Site = subsite.Trim().ToUpper(); // _PO_Detail_Det.Workorderlot = itm.加工单号; // _PO_Detail_Det.PoType = itm.订单类型; // _PO_Detail_Det.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序); // _PO_Detail_Det.Location = itm.库位; // _PO_Detail_Det.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数); // _PO_Detail_Det.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数); // _PO_Detail_Det.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数); // _PO_Detail_Det.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数); // _PO_Detail_Det.Supplieritem = itm.供应商零件; // _PO_Detail_Det.Dliverypatterncode = itm.发货样式; // _PO_Detail_Det.Deliverytimecode = itm.发货时间样式; // _PO_Detail_Det.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期); // _PO_Detail_Det.Pricelist = _entity.供应商编号.Trim().ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1); // db.TED_POD_DET.Add(_PO_Detail_Det); // _PO_Detail.Currency = "CNY"; // _PO_Detail.PoUnit = itm.单位; // _PO_Detail.CreateTime = DateTime.Now; // _PO_Detail.CreateUser = p_creator; // _PO_Detail.BeginTime = string.IsNullOrEmpty(itm.订单创建时间) ? DateTime.Now : DateTime.Parse(itm.订单创建时间); // _PO_Detail.EndTime = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(itm.要求到货日期); // _PO_Detail.PlanQty = decimal.Parse(itm.数量); // _PO_Detail.IsDeleted = false; // _PO_Detail.LocUnit = itm.单位; // _PO_Detail.PoUnit = itm.单位; // _PO_Detail.UnConv = 1; // _PO_Detail.Remark = itm.备注; // _PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价); // _PO_Detail.Workorderlot = string.IsNullOrEmpty(itm.加工单号) ? 0 : int.Parse(itm.加工单号); // _PO_Detail.PoType = itm.订单类型; // _PO_Detail.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序); // _PO_Detail.Location = itm.库位; // _PO_Detail.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数); // _PO_Detail.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数); // _PO_Detail.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数); // _PO_Detail.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数); // _PO_Detail.Supplieritem = itm.供应商零件; // _PO_Detail.Dliverypatterncode = itm.发货样式; // _PO_Detail.Deliverytimecode = itm.发货时间样式; // _PO_Detail.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期); // scpdb.TB_PO_DETAIL.AddOrUpdate(_PO_Detail); // }); // _polist = _polist + _po.PoBillNum + ","; // } // #endregion // #region 离散单 (离散单只增加不修改) // if (p_modtype == BillModType.Non_Contract) // { // var _entity = list.FirstOrDefault(); // TB_PO _po = new TB_PO(); // _po.GUID = Guid.NewGuid(); // _po.PoBillNum = SCP_BILLCODE_CONTROLLER.MakePoNum(_num); // _po.State = (int)PoState.Open; // _po.Site = site.Trim().ToUpper(); // _po.SubSite = subsite.Trim().ToUpper(); // _po.VendId = _entity.供应商编号.Trim().ToUpper(); // _po.ErpBillNum = _po.PoBillNum; // _po.ModType = (int)p_modtype; // _po.Contacter = p_chineseName;// _entity.联系人; // _po.Buyer = p_chineseName;// _entity.联系人; // _po.BuyerPhone = p_buyerPhone; // _po.Site = site.Trim().ToUpper(); // _po.Remark = _entity.备注; // _po.IsDeleted = false; // _po.CreateTime = DateTime.Now; // _po.CreateUser = p_creator; // _po.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); // _po.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(_entity.要求到货日期); // _po.Pricelist = _entity.供应商编号.ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1); // _po.Taxclass = _entity.税率; // scpdb.TB_PO.AddOrUpdate(_po); // TB_ASK _ask = new TB_ASK(); // _ask.AskBillNum = SCP_BILLCODE_CONTROLLER.MakeASKCode_BJBQ(_num); // _ask.GUID = Guid.NewGuid(); // _ask.PoBillNum = _po.PoBillNum; // _ask.VendId = _entity.供应商编号.Trim().ToUpper(); // _ask.IsDeleted = false; // _ask.CreateTime = DateTime.Now; // _ask.CreateUser = p_creator; // _ask.Site = site.Trim().ToUpper(); // _ask.ReceivedPort = "";//交货口 // _ask.State = (int)AskState.New; // _ask.Remark = _entity.备注; // _ask.ModType = (int)p_modtype; // _ask.ErpBillNum = _po.PoBillNum; // _ask.BeginTime = p_time; // _ask.EndTime = DateTime.Parse(_entity.要求到货日期); // _ask.Buyer = p_chineseName; // _ask.BuyerPhone = p_buyerPhone; // _ask.SubSite = subsite; // scpdb.TB_ASK.Add(_ask); // TED_PO_MSTR _po_mstr = new TED_PO_MSTR(); // _po_mstr.GUID = Guid.NewGuid(); // _po_mstr.PurchaseOrder = _po.PoBillNum; // _po_mstr.Supplier = _entity.供应商编号.Trim().ToUpper(); // _po_mstr.Contact = p_chineseName;// _entity.联系人; // _po_mstr.ShipTo = subsite.Trim().ToUpper();//发往 // _po_mstr.OrderDate = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); // _po_mstr.DueDate = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期); // _po_mstr.StartDate = string.IsNullOrEmpty(_entity.订单开始时间) ? DateTime.Now : DateTime.Parse(_entity.订单开始时间);//订单日期 // _po_mstr.EndDate = string.IsNullOrEmpty(_entity.订单截至日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(_entity.订单截至日期); // _po_mstr.MadeIn = ""; // _po_mstr.Confirm = true; // _po_mstr.Buyer = p_chineseName;// _entity.采购员; // _po_mstr.BuyerPhone = p_buyerPhone;// _entity.采购员电话; // _po_mstr.Status = (int)PoState.Open; // _po_mstr.ScheduledOrder = false; // _po_mstr.CreateUser = p_creator; // _po_mstr.CreateTime = p_time; // _po_mstr.Remark = _entity.备注; ; // _po_mstr.TaskID = taskid; // _po_mstr.CommandType = "A"; // _po_mstr.Domain = site.Trim().ToUpper(); // _po_mstr.ModeType = ((int)p_modtype).ToString(); // _po_mstr.Site = subsite.Trim().ToUpper(); // _po_mstr.DataID = Guid.NewGuid(); // _po_mstr.Pricelist = _entity.供应商编号.ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1); // _po_mstr.Taxclass = _entity.税率; // db.TED_PO_MSTR.Add(_po_mstr); // int _number = 1; // list.ForEach((itm) => // { // TB_PO_DETAIL _PO_Detail = new TB_PO_DETAIL(); // _PO_Detail.GUID = Guid.NewGuid(); // _PO_Detail.PartCode = itm.零件号.Trim().ToUpper(); // _PO_Detail.PoLine = _number; // _PO_Detail.PoBillNum = _po.PoBillNum; // _PO_Detail.State = (int)PoState.Open; // _PO_Detail.Site = site.Trim().ToUpper(); // _PO_Detail.SubSite = subsite.Trim().ToUpper(); // _PO_Detail.Currency = "CNY"; // _PO_Detail.PoUnit = itm.单位; // _PO_Detail.Remark = itm.备注; // _PO_Detail.CreateTime = DateTime.Now; // _PO_Detail.CreateUser = p_creator; // _PO_Detail.BeginTime = string.IsNullOrEmpty(itm.订单创建时间) ? DateTime.Now : DateTime.Parse(itm.订单创建时间); // _PO_Detail.EndTime = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(itm.要求到货日期); // _PO_Detail.PlanQty = decimal.Parse(itm.数量); // _PO_Detail.IsDeleted = false; // _PO_Detail.LocUnit = itm.单位; // _PO_Detail.PoUnit = itm.单位; // _PO_Detail.UnConv = 1; // _PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价); // _PO_Detail.Workorderlot = string.IsNullOrEmpty(itm.加工单号) ? 0 : int.Parse(itm.加工单号); // _PO_Detail.PoType = itm.订单类型; // _PO_Detail.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序); // _PO_Detail.Location = itm.库位; // _PO_Detail.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数); // _PO_Detail.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数); // _PO_Detail.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数); // _PO_Detail.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数); // _PO_Detail.Supplieritem = itm.供应商零件; // _PO_Detail.Dliverypatterncode = itm.发货样式; // _PO_Detail.Deliverytimecode = itm.发货时间样式; // _PO_Detail.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期); // _PO_Detail.TempQty = decimal.Parse(itm.数量); // TB_ASK_DETAIL _tDetail = new TB_ASK_DETAIL(); // _tDetail.Remark = itm.备注; // _tDetail.PoBillNum = _po.PoBillNum; // _tDetail.AskBillNum = _ask.AskBillNum; // _tDetail.PoLine = _number; // _tDetail.PoUnit = itm.单位; // _tDetail.CreateTime = DateTime.Now; // _tDetail.CreateUser = p_creator; // _tDetail.PartCode = itm.零件号.ToUpper(); // _tDetail.ReceivedPort = ""; // _tDetail.BeginTime = p_time; // _tDetail.EndTime = Convert.ToDateTime(itm.要求到货日期); // _tDetail.TempQty = 0; // _tDetail.AskQty = Decimal.Parse(itm.数量); // _tDetail.IsDeleted = false; // _tDetail.LocUnit = itm.单位; // _tDetail.UnConv = 1; // _tDetail.State = (int)PoState.Open; // _tDetail.SubSite = subsite.Trim().ToUpper(); // _tDetail.Site = site.Trim().ToUpper(); // _tDetail.Price = Decimal.Parse(itm.单价); // _tDetail.GUID = Guid.NewGuid(); // _tDetail.Currency = itm.币种; // scpdb.TB_ASK_DETAIL.Add(_tDetail); // scpdb.TB_PO_DETAIL.AddOrUpdate(_PO_Detail); // TED_PO_DET _PO_Detail_Det = new TED_PO_DET(); // _PO_Detail_Det.GUID = Guid.NewGuid(); // _PO_Detail_Det.PurchaseOrder = _po.PoBillNum; // _PO_Detail_Det.Line = _number; // _PO_Detail_Det.Currency = "CNY"; // _PO_Detail_Det.PoType = itm.订单类型; // _PO_Detail_Det.PartCode = itm.零件号.Trim().ToUpper(); // _PO_Detail_Det.Qty = decimal.Parse(itm.数量); // _PO_Detail_Det.QtyOpen = 0; // _PO_Detail_Det.PackQty = 1; // _PO_Detail_Det.Currency = itm.币种; // _PO_Detail_Det.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价); // _PO_Detail_Det.PoUm = itm.单位; // _PO_Detail_Det.LocUm = itm.单位; // _PO_Detail_Det.Conv = 1; // _PO_Detail_Det.DueDate = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now : DateTime.Parse(itm.要求到货日期); // _PO_Detail_Det.Status = (int)PoState.Open; // _PO_Detail_Det.CreateTime = DateTime.Parse(itm.订单创建时间); // _PO_Detail_Det.StartDate = string.IsNullOrEmpty(itm.零件开始时间) ? p_time : DateTime.Parse(itm.零件开始时间); // _PO_Detail_Det.EndDate = string.IsNullOrEmpty(itm.零件截至日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(itm.零件截至日期); // _PO_Detail_Det.CreateUser = p_creator; // _PO_Detail_Det.TaskID = taskid; // _PO_Detail_Det.CommandType = "A"; // _PO_Detail_Det.DataID = Guid.NewGuid(); // _PO_Detail_Det.Domain = site.Trim().ToUpper(); // _PO_Detail_Det.Site = subsite.Trim().ToUpper(); // _PO_Detail_Det.Workorderlot = itm.加工单号; // _PO_Detail_Det.PoType = itm.订单类型; // _PO_Detail_Det.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序); // _PO_Detail_Det.Location = itm.库位; // _PO_Detail_Det.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数); // _PO_Detail_Det.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数); // _PO_Detail_Det.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数); // _PO_Detail_Det.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数); // _PO_Detail_Det.Supplieritem = itm.供应商零件; // _PO_Detail_Det.Dliverypatterncode = itm.发货样式; // _PO_Detail_Det.Deliverytimecode = itm.发货时间样式; // _PO_Detail_Det.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期); // _PO_Detail_Det.Pricelist = _entity.供应商编号.ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1); // db.TED_POD_DET.Add(_PO_Detail_Det); // _number++; // }); // _polist = _polist + _po.PoBillNum + ","; // } // #endregion // } // var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB() // { // DataCount = 1, // TaskID = taskid, // TableName = "TED_PO_MSTR", // Site = subsite.Trim().ToUpper(), // Domain = site.Trim().ToUpper(), // CreateTime = p_time, // CreateUser = p_creator, // Creator = "SCP", // }); // _num++; // Thread.Sleep(10); // } // ); // EntitiesFactory.SaveDb(scpdb); // EntitiesFactory.SaveDb(db); // scope.Complete(); // _ret.State = ReturnStatus.Succeed; // _ret.Result = true; // _ret.Message = _polist; // } // catch (Exception e) // { // _ret.State = ReturnStatus.Failed; // LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "InsterPo", e.Message); // _ret.Result = false; // _ret.Message = e.InnerException.Message; // scope.Dispose(); // } // } // return _ret; //} //public static ResultObject InsterPo(List p_order_list, string site, string p_creator, DateTime p_time, BillModType p_modtype, string subsite) //{ // ScpEntities scpdb = EntitiesFactory.CreateScpInstance(); // ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance(); // ResultObject _ret = new ResultObject(); // try // { // var OrderList = p_order_list.GroupBy(p => p.订单编号).ToList(); // OrderList.ForEach((p) => // { // Guid taskid = Guid.NewGuid(); // var list = p.ToList(); // if (list.Count > 0) // { // var _entity = list.FirstOrDefault(); // // int state = (int)PoState.Open; // var update_po = scpdb.TB_PO.FirstOrDefault(t => t.PoBillNum == _entity.订单编号/* && t.State == state*/ && t.Site == site && t.SubSite == subsite && t.VendId == _entity.供应商编号.ToUpper()); // TED_PO_MSTR _po = new TED_PO_MSTR(); // _po.GUID = Guid.NewGuid(); // _po.PurchaseOrder = _entity.订单编号; // _po.Supplier = _entity.供应商编号.ToUpper(); // _po.Contact = _entity.联系人; // _po.ShipTo = subsite.Trim().ToUpper();//发往 // _po.OrderDate = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间); // _po.DueDate = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期); // _po.StartDate = string.IsNullOrEmpty(_entity.订单开始时间) ? DateTime.Now : DateTime.Parse(_entity.订单开始时间);//订单日期 // _po.EndDate = string.IsNullOrEmpty(_entity.订单截至日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(_entity.订单截至日期); // _po.MadeIn = ""; // _po.Confirm = true; // _po.Buyer = _entity.采购员; // _po.BuyerPhone = _entity.采购员电话; // _po.Status = (int)PoState.Open; // if (p_modtype == BillModType.Contract) // { // _po.ScheduledOrder = true; // } // else // { // _po.ScheduledOrder = false; // } // _po.CreateUser = p_creator; // _po.CreateTime = p_time; // _po.Remark = _entity.备注; ; // _po.TaskID = taskid; // if (update_po != null) // { // _po.CommandType = "U"; // } // else // { // _po.CommandType = "A"; // } // _po.Domain = site.Trim().ToUpper(); // _po.ModeType = ((int)p_modtype).ToString(); // _po.Site = subsite.Trim().ToUpper(); // _po.DataID = Guid.NewGuid(); // _po.Pricelist = _entity.供应商编号 + subsite.Substring(1, 1) + subsite.Substring(3, 1); // _po.Taxclass = _entity.税率; // db.TED_PO_MSTR.Add(_po); // list.ForEach((itm) => // { // int _poline = Int32.Parse(itm.行号); // var update_po_detail = scpdb.TB_PO_DETAIL.FirstOrDefault(t => t.PartCode == itm.零件号 && t.PoLine == _poline && t.PoBillNum == itm.订单编号 /*&& t.State == state*/ && t.Site == site && t.SubSite == subsite); // TED_PO_DET _PO_Detail = new TED_PO_DET(); // _PO_Detail.GUID = Guid.NewGuid(); // _PO_Detail.PurchaseOrder = itm.订单编号; // _PO_Detail.Line = Int32.Parse(itm.行号); // _PO_Detail.Currency = "CNY"; // _PO_Detail.PoType = itm.订单类型; // _PO_Detail.PartCode = itm.零件号.ToUpper(); // _PO_Detail.Qty = decimal.Parse(itm.数量); // _PO_Detail.QtyOpen = 0; // _PO_Detail.PackQty = 1; // _PO_Detail.Currency = itm.币种; // _PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价); // _PO_Detail.PoUm = itm.单位; // _PO_Detail.LocUm = itm.单位; // _PO_Detail.Conv = 1; // _PO_Detail.DueDate = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期); // _PO_Detail.Status = (int)PoState.Open; // _PO_Detail.CreateTime = DateTime.Parse(itm.订单创建时间); // _PO_Detail.StartDate = string.IsNullOrEmpty(_entity.零件开始时间) ? p_time : DateTime.Parse(_entity.零件开始时间); // _PO_Detail.EndDate = string.IsNullOrEmpty(_entity.零件截至日期) ? DateTime.Now.AddYears(30) : DateTime.Parse(_entity.零件截至日期); // _PO_Detail.CreateUser = p_creator; // _PO_Detail.TaskID = taskid; // if (update_po_detail != null) // { // _PO_Detail.CommandType = "U"; // } // else // { // _PO_Detail.CommandType = "A"; // } // _PO_Detail.DataID = Guid.NewGuid(); // _PO_Detail.Domain = site.Trim().ToUpper(); // _PO_Detail.Site = subsite.Trim().ToUpper(); // _PO_Detail.Workorderlot = itm.加工单号; // _PO_Detail.PoType = itm.订单类型; // _PO_Detail.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序); // _PO_Detail.Location = itm.库位; // _PO_Detail.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数); // _PO_Detail.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数); // _PO_Detail.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数); // _PO_Detail.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数); // _PO_Detail.Supplieritem = itm.供应商零件; // _PO_Detail.Dliverypatterncode = itm.发货样式; // _PO_Detail.Deliverytimecode = itm.发货时间样式; // _PO_Detail.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期); // _PO_Detail.Pricelist = _entity.供应商编号 + subsite.Substring(1, 1) + subsite.Substring(3, 1); // db.TED_POD_DET.Add(_PO_Detail); // }); // } // var ret = CREATE_TEA_TASK_SUB(db, true ,new TEA_TASK_SUB() // { // DataCount = 1, // TaskID = taskid, // TableName = "TED_PO_MSTR", // Site = subsite.Trim().ToUpper(), // Domain = site.Trim().ToUpper(), // CreateTime = p_time, // CreateUser = p_creator, // Creator = "SCP", // }); // }); // if (db.SaveChanges() != -1) // { // _ret.State = ReturnStatus.Succeed; // _ret.Result = true; // } // else // { // _ret.State = ReturnStatus.Failed; // _ret.Result = false; // _ret.Message = "数据更新失败!"; // } // } // catch (Exception e) // { // _ret.State = ReturnStatus.Failed; // LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "InsterPo", e.Message); // _ret.Result = false; // _ret.Message = e.InnerException.Message; // //throw e; // } // return _ret; //} //public static ResultObject UpdatePo(List p_po_list, string site, string p_creator, DateTime p_time, string subsite) //{ // ScpEntities scpdb = EntitiesFactory.CreateScpInstance(); // ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance(); // ResultObject _ret = new ResultObject(); // try // { // foreach(var _num in p_po_list) // { // Guid taskid = Guid.NewGuid(); // TED_PO_MSTR item = new TED_PO_MSTR(); // var _mstr = scpdb.TB_PO.FirstOrDefault(t => t.PoBillNum == _num && t.State == (int)PoState.Open); // if (_mstr!= null) // { // // var uid = oldpolist.Select(p => p.UID).Max(); // // var _mstr = db.TED_PO_MSTR.FirstOrDefault(t => t.UID == uid); // var oldpodetaillist = scpdb.TB_PO_DETAIL.Where(q => q.PoBillNum == _num && q.State == (int)PoState.Open).ToList() ; // item.CommandType = "U"; // item.GUID = Guid.NewGuid(); // item.DataID = _mstr.GUID; // item.Status = (int)PoState.Close; // item.TaskID = taskid; // item.PurchaseOrder = _mstr.PoBillNum; // item.Supplier = _mstr.VendId; // item.Contact = _mstr.Buyer; // item.ShipTo = _mstr.SubSite;//发往 // item.OrderDate = _mstr.CreateTime;//订单日期 // item.DueDate = Convert.ToDateTime(_mstr.EndTime); // item.StartDate = _mstr.CreateTime;//订单日期 // item.EndDate =Convert.ToDateTime( _mstr.EndTime); // item.MadeIn = ""; // item.Confirm = true; // item.Buyer = _mstr.Buyer; // item.BuyerPhone = _mstr.BuyerPhone; // item.ScheduledOrder = _mstr.ModType==1?true:false; // item.CreateUser = _mstr.CreateUser; // item.CreateTime = _mstr.CreateTime; // item.Remark = "订单关闭" ; // item.Domain = _mstr.Site; // item.ModeType = _mstr.ModType.ToString(); // item.Site = _mstr.SubSite; // item.Pricelist = _mstr.Pricelist; // item.Taxclass = _mstr.Taxclass; // db.TED_PO_MSTR.Add(item); // if (oldpodetaillist.Count > 0) // { // foreach (var po_detail in oldpodetaillist) // { // TED_PO_DET _PO_Detail = new TED_PO_DET(); // _PO_Detail.GUID = Guid.NewGuid(); // _PO_Detail.PurchaseOrder = po_detail.PoBillNum; // _PO_Detail.Line = po_detail.PoLine; // _PO_Detail.Currency = po_detail.Currency; // _PO_Detail.PoType = po_detail.PoType; // _PO_Detail.PartCode = po_detail.PartCode.ToUpper(); // _PO_Detail.Qty = po_detail.PlanQty; // _PO_Detail.QtyOpen = po_detail.ShippedQty; // _PO_Detail.PackQty = po_detail.PackQty; // _PO_Detail.Currency = po_detail.Currency; // _PO_Detail.Price = po_detail.Price; // _PO_Detail.PoUm = po_detail.PoUnit; // _PO_Detail.LocUm = po_detail.PoUnit; // _PO_Detail.Conv = 1; // _PO_Detail.Status = (int)PoState.Close; // _PO_Detail.CreateTime = po_detail.CreateTime; // _PO_Detail.StartDate = Convert.ToDateTime(po_detail.BeginTime); // _PO_Detail.EndDate = Convert.ToDateTime(po_detail.EndTime); // _PO_Detail.CreateUser = po_detail.CreateUser; // _PO_Detail.TaskID = taskid; // _PO_Detail.CommandType = "U"; // _PO_Detail.DataID = po_detail.GUID; // _PO_Detail.Domain = po_detail.Site; // _PO_Detail.Site = po_detail.SubSite; // _PO_Detail.Workorderlot = po_detail.Workorderlot.ToString(); // _PO_Detail.PoType = po_detail.PoType; // _PO_Detail.Operation = po_detail.Operation; // _PO_Detail.Location = po_detail.Location; // _PO_Detail.Firmdays = po_detail.Firmdays; // _PO_Detail.Scheduledays = po_detail.Scheduledays; // _PO_Detail.Scheduleweeks = po_detail.Scheduleweeks; // _PO_Detail.Schedulemonth = po_detail.Schedulemonth; // _PO_Detail.Supplieritem = po_detail.Supplieritem; // _PO_Detail.Dliverypatterncode = po_detail.Dliverypatterncode; // _PO_Detail.Deliverytimecode = po_detail.Deliverytimecode; // _PO_Detail.Transportdays = po_detail.Transportdays; // db.TED_POD_DET.Add(_PO_Detail); // } // } // var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB() // { // DataCount = 1, // TaskID = taskid, // TableName = "TED_PO_MSTR", // Site = subsite, // Domain = site, // CreateTime = p_time, // CreateUser = p_creator, // Creator = "SCP", // }); // } // } // } // catch (Exception e) // { // _ret.State = ReturnStatus.Failed; // LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "InsterPo", e.Message); // _ret.Result = false; // _ret.ErrorList.Add(e); // throw e; // } // if (db.SaveChanges() != -1) // { // _ret.State = ReturnStatus.Succeed; // _ret.Result = true; // } // else // { // _ret.State = ReturnStatus.Failed; // _ret.Result = false; // _ret.Message = "数据更新失败!"; // } // return _ret; //} } }