using System; using System.Collections; using System.Collections.Generic; using System.Data.Entity.Migrations; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using CK.SCP.Models; using CK.SCP.Models.Enums; using CK.SCP.Models.ScpEntity; using CK.SCP.Models.ScpEntity.ExcelImportEntity; using CK.SCP.Utils; using System.Data.Entity.Core; namespace CK.SCP.Controller { public class SCP_INVOICE_CONTROLLER { public static void Get_V_TB_INVOICE_BY_CG_List(V_TB_INVOICE p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_INVOICE; if (p_entity.UID != 0) { q = q.Where(p => p.UID == p_entity.UID); } if (!string.IsNullOrEmpty(p_entity.InvcBillNum)) { q = q.Where(p => p.InvcBillNum.Contains(p_entity.InvcBillNum)); } if (!string.IsNullOrEmpty(p_entity.VendName)) { q = q.Where(p => p.VendName.Contains(p_entity.VendName)); } if (!string.IsNullOrEmpty(p_entity.VendId)) { q = q.Where(p => p.VendId.Contains(p_entity.VendId)); } //if (p_entity.BeginTime != null && !p_entity.BeginTime.ToString().Contains("0001/1/1")) //{ // q = q.Where(p => p.CreateTime >= p_entity.BeginTime); //} //if (p_entity.EndTime != null && !p_entity.EndTime.ToString().Contains("0001/1/1")) //{ // q = q.Where(p => p.CreateTime <= p_entity.EndTime); //} if (!string.IsNullOrEmpty(p_entity.InvoiceNum)) { q = q.Where(p => p.InvoiceNum.Contains(p_entity.InvoiceNum)); } if (p_entity.BillStateList != null && p_entity.BillStateList.Count > 0) { q = q.Where(p => p_entity.BillStateList.Contains(p.State)); } else if (p_entity.State != 0) { q = q.Where(p => p.State == p_entity.State); } if (!string.IsNullOrEmpty(p_entity.Remark)) { q = q.Where(p => p.Remark.Contains(p_entity.Remark)); } if (p_entity.Tax != null) { q = q.Where(p => p.Tax == p_entity.Tax); } if (p_entity.TaxAmount != null) { q = q.Where(p => p.TaxAmount == p_entity.TaxAmount); } if (p_entity.Amount != null) { q = q.Where(p => p.Amount == p_entity.Amount); } if (p_entity.Total != null) { q = q.Where(p => p.Total == p_entity.Total); } if (!string.IsNullOrEmpty(p_entity.ExpressNum)) { q = q.Where(p => p.ExpressNum.Contains(p_entity.ExpressNum)); } if (p_entity.UserInAddress != null && p_entity.UserInAddress.Count > 0) { q = q.Where(p => p_entity.UserInAddress.Contains(p.Site)); } if (p_entity.UserInVendIds != null && p_entity.UserInVendIds.Count > 0) { q = q.Where(p => p_entity.UserInVendIds.Contains(p.VendId)); } if (p_entity.InvoiceList != null && p_entity.InvoiceList.Count > 0) { q = q.Where(p => p_entity.InvoiceList.Contains(p.InvcBillNum)); } if (!string.IsNullOrEmpty(p_entity.CreateUser)) { q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser)); } q = q.Where(p => p_entity.IsRed == p.IsRed); _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } 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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_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; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_List", e.Message); throw e; } } public static List Get_V_TB_INVOICE_BY_TIME(string p_begin,string p_end,string p_po,string p_asn) { List _list = new List(); using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { StringBuilder _builder = new StringBuilder(); _builder.Append("SELECT DISTINCT InvcBillNum FROM TB_INVOICE_DETAIL a Inner join TB_RECEIVE_QAD B on A.ErpRecvBillNum = B.ErpRecvBillNum\r\n"); _builder.AppendFormat(" WHERE 1=1 \r\n"); if (!string.IsNullOrEmpty(p_begin)) { _builder.AppendFormat(" and B.CreateTime >= cast('{0}' as datetime) \r\n", p_begin); } if (!string.IsNullOrEmpty(p_end)) { _builder.AppendFormat(" and B.CreateTime <= cast('{0}' as datetime) \r\n", p_end); } if (!string.IsNullOrEmpty(p_po)) { _builder.AppendFormat(" AND A.PoBillNum='{0}' \r\n", p_po); } if (!string.IsNullOrEmpty(p_asn)) { _builder.AppendFormat(" and A.AsnBillNum='{0}' \r\n",p_asn); } _list =db.Database.SqlQuery(_builder.ToString()).ToList(); } return _list; } public static void Get_V_TB_INVOICE_List(V_TB_INVOICE p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_INVOICE; if (p_entity.UID != 0) { q = q.Where(p => p.UID == p_entity.UID); } if (!string.IsNullOrEmpty(p_entity.InvcBillNum)) { q = q.Where(p => p.InvcBillNum.Contains(p_entity.InvcBillNum)); } if (!string.IsNullOrEmpty(p_entity.VendId)) { q = q.Where(p => p.VendId==p_entity.VendId); } if (!string.IsNullOrEmpty(p_entity.VendName)) { q = q.Where(p => p.VendName.Contains(p_entity.VendName)); } if (!string.IsNullOrEmpty(p_entity.InvoiceNum)) { q = q.Where(p => p.InvoiceNum.Contains(p_entity.InvoiceNum)); } if (p_entity.BillStateList != null && p_entity.BillStateList.Count > 0) { q = q.Where(p => p_entity.BillStateList.Contains(p.State)); } else if (p_entity.State != 0) { q = q.Where(p => p.State == p_entity.State); } if (!string.IsNullOrEmpty(p_entity.Remark)) { q = q.Where(p => p.Remark.Contains(p_entity.Remark)); } if (p_entity.Tax != null) { q = q.Where(p => p.Tax == p_entity.Tax); } if (p_entity.TaxAmount != null) { q = q.Where(p => p.TaxAmount == p_entity.TaxAmount); } if (p_entity.Amount != null) { q = q.Where(p => p.Amount == p_entity.Amount); } if (p_entity.Total != null) { q = q.Where(p => p.Total == p_entity.Total); } if (!string.IsNullOrEmpty(p_entity.ExpressNum)) { q = q.Where(p => p.ExpressNum.Contains(p_entity.ExpressNum)); } if (p_entity.UserInAddress != null && p_entity.UserInAddress.Count > 0) { q = q.Where(p => p_entity.UserInAddress.Contains(p.Site)); } if (!string.IsNullOrEmpty(p_entity.CreateUser)) { q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser)); } if (!string.IsNullOrEmpty(p_entity.AskCreateUser)) { q = q.Where(p => p.AskCreateUser==p_entity.AskCreateUser); } if (p_entity.InvoiceList!=null && p_entity.InvoiceList.Count>0) { q = q.Where(p => p_entity.InvoiceList.Contains(p.InvcBillNum)); } // q = q.Where(p => p_entity.IsRed == p.IsRed); _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } 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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_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; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_List", e.Message); throw e; } } public static void Get_V_TB_INVOICE_ERP_List(V_TB_INVOICE p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_INVOICE; if (p_entity.UID != 0) { q = q.Where(p => p.UID == p_entity.UID); } if (!string.IsNullOrEmpty(p_entity.InvcBillNum)) { q = q.Where(p => p.InvcBillNum.Contains(p_entity.InvcBillNum)); } if (!string.IsNullOrEmpty(p_entity.VendId)) { q = q.Where(p => p.VendId.Contains(p_entity.VendId)); } if (!string.IsNullOrEmpty(p_entity.VendName)) { q = q.Where(p => p.VendName.Contains(p_entity.VendName)); } if (!string.IsNullOrEmpty(p_entity.InvoiceNum)) { q = q.Where(p => p.InvoiceNum.Contains(p_entity.InvoiceNum)); } if (p_entity.BillStateList != null && p_entity.BillStateList.Count > 0) { q = q.Where(p => p_entity.BillStateList.Contains(p.State)); } else if (p_entity.State != 0) { q = q.Where(p => p.State == p_entity.State); } if (!string.IsNullOrEmpty(p_entity.Remark)) { q = q.Where(p => p.Remark.Contains(p_entity.Remark)); } if (p_entity.Tax != null) { q = q.Where(p => p.Tax == p_entity.Tax); } if (p_entity.TaxAmount != null) { q = q.Where(p => p.TaxAmount == p_entity.TaxAmount); } if (p_entity.Amount != null) { q = q.Where(p => p.Amount == p_entity.Amount); } if (p_entity.Total != null) { q = q.Where(p => p.Total == p_entity.Total); } if (!string.IsNullOrEmpty(p_entity.ExpressNum)) { q = q.Where(p => p.ExpressNum.Contains(p_entity.ExpressNum)); } if (p_entity.UserInAddress != null && p_entity.UserInAddress.Count > 0) { q = q.Where(p => p_entity.UserInAddress.Contains(p.Site)); } if (!string.IsNullOrEmpty(p_entity.CreateUser)) { q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser)); } if (p_entity.InvoiceList != null && p_entity.InvoiceList.Count > 0) { q = q.Where(p => p_entity.InvoiceList.Contains(p.InvcBillNum)); } // q = q.Where(p => p_entity.IsRed == p.IsRed); _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } 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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_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; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_List", e.Message); throw e; } } public static void Get_V_TB_INVOICE_List2(V_TB_INVOICE p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_INVOICE_RED; if (p_entity.UID != 0) { q = q.Where(p => p.UID == p_entity.UID); } if (!string.IsNullOrEmpty(p_entity.InvcBillNum)) { q = q.Where(p => p.InvcBillNum.Contains(p_entity.InvcBillNum)); } if (!string.IsNullOrEmpty(p_entity.VendId)) { q = q.Where(p => p.VendId.Contains(p_entity.VendId)); } if (!string.IsNullOrEmpty(p_entity.VendName)) { q = q.Where(p => p.VendName.Contains(p_entity.VendName)); } if (p_entity.BeginTime != null && !p_entity.BeginTime.ToString().Contains("0001/1/1")) { q = q.Where(p => p.CreateTime >= p_entity.BeginTime); } if (p_entity.EndTime != null && !p_entity.EndTime.ToString().Contains("0001/1/1")) { q = q.Where(p => p.CreateTime <= p_entity.EndTime); } if (!string.IsNullOrEmpty(p_entity.InvoiceNum)) { q = q.Where(p => p.InvoiceNum.Contains(p_entity.InvoiceNum)); } if (p_entity.BillStateList != null && p_entity.BillStateList.Count > 0) { q = q.Where(p => p_entity.BillStateList.Contains(p.State)); } else if (p_entity.State != 0) { q = q.Where(p => p.State == p_entity.State); } if (!string.IsNullOrEmpty(p_entity.Remark)) { q = q.Where(p => p.Remark.Contains(p_entity.Remark)); } if (p_entity.Tax != null) { q = q.Where(p => p.Tax == p_entity.Tax); } if (p_entity.TaxAmount != null) { q = q.Where(p => p.TaxAmount == p_entity.TaxAmount); } if (p_entity.Amount != null) { q = q.Where(p => p.Amount == p_entity.Amount); } if (p_entity.Total != null) { q = q.Where(p => p.Total == p_entity.Total); } if (!string.IsNullOrEmpty(p_entity.ExpressNum)) { q = q.Where(p => p.ExpressNum.Contains(p_entity.ExpressNum)); } if (p_entity.UserInAddress != null && p_entity.UserInAddress.Count > 0) { q = q.Where(p => p_entity.UserInAddress.Contains(p.Site)); } if (!string.IsNullOrEmpty(p_entity.Site)) { q = q.Where(p => p.Site.Contains(p_entity.Site)); } if (!string.IsNullOrEmpty(p_entity.CreateUser)) { q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser)); } q = q.Where(p => p_entity.IsRed == p.IsRed); _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } 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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_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; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_List", e.Message); throw e; } } public static void Get_V_TB_INVOICE_DETAIL_List(V_TB_INVOICE_DETAIL p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_INVOICE_DETAIL; if (p_entity.UID != 0) { q = q.Where(p => p.UID == p_entity.UID); } if (!string.IsNullOrEmpty(p_entity.InvcBillNum)) { q = q.Where(p => p.InvcBillNum==(p_entity.InvcBillNum)); } if (!string.IsNullOrEmpty(p_entity.PoBillNum)) { q = q.Where(p => p.PoBillNum.Contains(p_entity.PoBillNum)); } if (p_entity.PoLineNum != 0) { q = q.Where(p => p.PoLineNum == p_entity.PoLineNum); } if (!string.IsNullOrEmpty(p_entity.AsnBillNum)) { q = q.Where(p => p.AsnBillNum.Contains(p_entity.AsnBillNum)); } if (!string.IsNullOrEmpty(p_entity.PartCode)) { q = q.Where(p => p.PartCode.Contains(p_entity.PartCode)); } if (!string.IsNullOrEmpty(p_entity.Batch)) { q = q.Where(p => p.Batch.Contains(p_entity.Batch)); } if (!string.IsNullOrEmpty(p_entity.VendBatch)) { q = q.Where(p => p.VendBatch.Contains(p_entity.VendBatch)); } if (p_entity.Qty != 0) { q = q.Where(p => p.Qty == p_entity.Qty); } if (!string.IsNullOrEmpty(p_entity.PoUnit)) { q = q.Where(p => p.PoUnit.Contains(p_entity.PoUnit)); } if (p_entity.Price != 0) { q = q.Where(p => p.Price == p_entity.Price); } if (!string.IsNullOrEmpty(p_entity.Currency)) { q = q.Where(p => p.Currency.Contains(p_entity.Currency)); } if (p_entity.PackQty != null) { q = q.Where(p => p.PackQty == p_entity.PackQty); } if (p_entity.State != null) { q = q.Where(p => p.State == p_entity.State); } if (!string.IsNullOrEmpty(p_entity.InvoiceNum)) { q = q.Where(p => p.InvoiceNum.Contains(p_entity.InvoiceNum)); } if (!string.IsNullOrEmpty(p_entity.ExpressNum)) { q = q.Where(p => p.ExpressNum.Contains(p_entity.ExpressNum)); } if (!string.IsNullOrEmpty(p_entity.VendId)) { q = q.Where(p => p.VendId.Contains(p_entity.VendId)); } if (!string.IsNullOrEmpty(p_entity.CurrencyDesc)) { q = q.Where(p => p.CurrencyDesc.Contains(p_entity.CurrencyDesc)); } if (!string.IsNullOrEmpty(p_entity.Site)) { q = q.Where(p => p.Site.Contains(p_entity.Site)); } if (p_entity.Tax != null) { q = q.Where(p => p.Tax == p_entity.Tax); } if (!string.IsNullOrEmpty(p_entity.RecvBillNum)) { q = q.Where(p => p.RecvBillNum.Contains(p_entity.RecvBillNum)); } if (!string.IsNullOrEmpty(p_entity.PartDesc1)) { q = q.Where(p => p.PartDesc1.Contains(p_entity.PartDesc1)); } if (!string.IsNullOrEmpty(p_entity.CreateUser)) { q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser)); } // q = q.Where(p => p.IsRed == p_entity.IsRed); _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } 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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_DETAIL_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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_DETAIL_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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_DETAIL_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; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_DETAIL_List", e.Message); throw e; } } public static void Get_V_TB_INVOICE_DETAIL_List2(V_TB_INVOICE_DETAIL p_entity, Action>> p_action) { ResultObject> _ret = new ResultObject>(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { IQueryable q = db.V_TB_INVOICE_DETAIL_RED; if (p_entity.UID != 0) { q = q.Where(p => p.UID == p_entity.UID); } if (!string.IsNullOrEmpty(p_entity.InvcBillNum)) { q = q.Where(p => p.InvcBillNum.Contains(p_entity.InvcBillNum)); } if (!string.IsNullOrEmpty(p_entity.PoBillNum)) { q = q.Where(p => p.PoBillNum.Contains(p_entity.PoBillNum)); } if (p_entity.PoLineNum != 0) { q = q.Where(p => p.PoLineNum == p_entity.PoLineNum); } if (!string.IsNullOrEmpty(p_entity.AsnBillNum)) { q = q.Where(p => p.AsnBillNum.Contains(p_entity.AsnBillNum)); } if (!string.IsNullOrEmpty(p_entity.PartCode)) { q = q.Where(p => p.PartCode.Contains(p_entity.PartCode)); } if (!string.IsNullOrEmpty(p_entity.Batch)) { q = q.Where(p => p.Batch.Contains(p_entity.Batch)); } if (!string.IsNullOrEmpty(p_entity.VendBatch)) { q = q.Where(p => p.VendBatch.Contains(p_entity.VendBatch)); } if (p_entity.Qty != 0) { q = q.Where(p => p.Qty == p_entity.Qty); } if (!string.IsNullOrEmpty(p_entity.PoUnit)) { q = q.Where(p => p.PoUnit.Contains(p_entity.PoUnit)); } if (p_entity.Price != 0) { q = q.Where(p => p.Price == p_entity.Price); } if (!string.IsNullOrEmpty(p_entity.Currency)) { q = q.Where(p => p.Currency.Contains(p_entity.Currency)); } if (p_entity.PackQty != null) { q = q.Where(p => p.PackQty == p_entity.PackQty); } if (p_entity.State != null) { q = q.Where(p => p.State == p_entity.State); } if (!string.IsNullOrEmpty(p_entity.InvoiceNum)) { q = q.Where(p => p.InvoiceNum.Contains(p_entity.InvoiceNum)); } if (!string.IsNullOrEmpty(p_entity.ExpressNum)) { q = q.Where(p => p.ExpressNum.Contains(p_entity.ExpressNum)); } if (!string.IsNullOrEmpty(p_entity.VendId)) { q = q.Where(p => p.VendId.Contains(p_entity.VendId)); } if (!string.IsNullOrEmpty(p_entity.CurrencyDesc)) { q = q.Where(p => p.CurrencyDesc.Contains(p_entity.CurrencyDesc)); } if (!string.IsNullOrEmpty(p_entity.Site)) { q = q.Where(p => p.Site.Contains(p_entity.Site)); } if (p_entity.Tax != null) { q = q.Where(p => p.Tax == p_entity.Tax); } if (!string.IsNullOrEmpty(p_entity.RecvBillNum)) { q = q.Where(p => p.RecvBillNum.Contains(p_entity.RecvBillNum)); } if (!string.IsNullOrEmpty(p_entity.PartDesc1)) { q = q.Where(p => p.PartDesc1.Contains(p_entity.PartDesc1)); } if (!string.IsNullOrEmpty(p_entity.CreateUser)) { q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser)); } q = q.Where(p => p.IsRed == p_entity.IsRed); _ret.State = ReturnStatus.Succeed; _ret.Result = q; p_action(_ret); } } 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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_DETAIL_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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_DETAIL_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_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_DETAIL_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; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Get_V_TB_INVOICE_DETAIL_List", e.Message); throw e; } } public static ResultObject CREATE_TB_INVOICE(V_TB_INVOICE p_entity,List p_list) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { var _tax=db.TA_VENDER.Where(p => p.VendId == p_entity.VendId).Select(p => p.Tax).FirstOrDefault(); var _ls=p_list.Where(p => p.BillType_DESC == "索赔单").ToList(); TB_INVOICE invoice = new TB_INVOICE(); invoice.InvcBillNum = SCP_BILLCODE_CONTROLLER.MakeInvoiceCode(); invoice.VendId = p_entity.VendId; invoice.CreateTime = DateTime.Now; invoice.InvoiceNum = ""; invoice.ExpressNum = ""; invoice.Remark = p_entity.Remark; invoice.CreateUser = p_entity.CreateUser; invoice.CreateTime = DateTime.Now; invoice.Site = p_entity.Site; invoice.State = (int)InvoiceState.New; invoice.IsDeleted = false; invoice.GUID = Guid.NewGuid(); invoice.Tax = p_entity.Tax; invoice.IsRed = false; if (_ls.Count > 0) { invoice.ContractPrice =0- _ls.Sum(p=>p.Price); } else { invoice.ContractPrice = 0; } invoice.BlancePrice = p_entity.BlancePrice; db.TB_INVOICE.AddOrUpdate(invoice); p_list.ForEach(p => { TB_INVOICE_DETAIL invocieDetail = new TB_INVOICE_DETAIL(); invocieDetail.InvcBillNum= invoice.InvcBillNum; invocieDetail.AsnBillNum = p.AsnBillNum; invocieDetail.PoBillNum = p.PoBillNum; invocieDetail.PoLineNum = p.PoLine; invocieDetail.RecvBillNum = p.RecvBillNum; invocieDetail.ErpRecvBillNum = p.ErpRecvBillNum; invocieDetail.CreateUser = invoice.CreateUser; invocieDetail.CreateTime = invoice.CreateTime; invocieDetail.PoUnit = p.PoUnit; //自己改数据库 //invocieDetail.LocUnit = p.LocUnit;//自己改数据库 invocieDetail.PartCode = p.PartCode; invocieDetail.Price = p.Price;//自己改数据库 invocieDetail.Batch = p.Batch; invocieDetail.VendBatch = p.VendBatch; invocieDetail.Qty = p.Qty; invocieDetail.Currency = p.Currency;//自己改数据库 invocieDetail.IsDeleted = false; invocieDetail.State = (int)InvoiceState.New; invocieDetail.GUID = Guid.NewGuid(); invocieDetail.Remark = p.Remark; invocieDetail.IsRed = false; db.TB_INVOICE_DETAIL.AddOrUpdate(invocieDetail); }); #region 采购员代办任务新 //TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); //_item.ROLE_NAME = "采购人员"; //_item.ITEM_ADDRESS = invoice.Site; //_item.ITEM_NO = invoice.InvcBillNum; //_item.ITEM_CONTENT = "新的采购发票申请!"; //_item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.APPLY_INVOICE; //_item.ITEM_STATE = (int)PENDING_STATE.WAITING; //_item.SENDER = invoice.CreateUser; //_item.VEND_ID = invoice.VendId; //_item.SENDING_TIME = DateTime.Now; ////_item.ITEM_ADDRESS = _entity.Site; //_item.GUID = Guid.NewGuid(); //db.TB_PENING_ITEMS.Add(_item); #endregion if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "CREATE_TB_INVOICE", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "CREATE_TB_INVOICE", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "CREATE_TB_INVOICE", 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_INVOICE_CONTROLLER), "CREATE_TB_INVOICE", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } /// /// 创建发票(模具分摊计数) /// /// /// /// 是否限额验证 /// public static ResultObject CREATE_TB_INVOICE_MOLDSHARING(V_TB_INVOICE p_entity, List p_list) { ResultObject _ret = new ResultObject(); List _list = new List(); List _listpartcode = new List();//超过分摊零件集合 try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { decimal _total = 0; TB_INVOICE invoice = new TB_INVOICE(); invoice.InvcBillNum = SCP_BILLCODE_CONTROLLER.MakeInvoiceCode(); invoice.VendId = p_entity.VendId; invoice.CreateTime = DateTime.Now; invoice.InvoiceNum = ""; invoice.ExpressNum = ""; invoice.Remark = p_entity.Remark; invoice.CreateUser = p_entity.CreateUser; invoice.CreateTime = DateTime.Now; invoice.Site = p_entity.Site; invoice.State = (int)InvoiceState.New; invoice.IsDeleted = false; invoice.GUID = Guid.NewGuid(); invoice.Tax = p_entity.Tax; invoice.IsRed = false; db.TB_INVOICE.AddOrUpdate(invoice); p_list.ForEach(p => { TB_INVOICE_DETAIL invocieDetail = new TB_INVOICE_DETAIL(); invocieDetail.InvcBillNum = invoice.InvcBillNum; invocieDetail.AsnBillNum = p.AsnBillNum; invocieDetail.AskBillNum = p.Remark; invocieDetail.PoBillNum = p.PoBillNum; invocieDetail.PoLineNum = p.PoLine; invocieDetail.RecvBillNum = p.RecvBillNum; invocieDetail.ErpRecvBillNum = p.ErpRecvBillNum; invocieDetail.CreateUser = invoice.CreateUser; invocieDetail.CreateTime = invoice.CreateTime; invocieDetail.PoUnit = p.PoUnit; //自己改数据库 invocieDetail.PartCode = p.PartCode; invocieDetail.Price = p.Price;//自己改数据库 invocieDetail.Batch = p.Batch; invocieDetail.VendBatch = p.VendBatch; invocieDetail.Qty = p.Qty; invocieDetail.Currency = p.Currency;//自己改数据库 invocieDetail.IsDeleted = false; invocieDetail.State = (int)InvoiceState.New; invocieDetail.GUID = Guid.NewGuid(); invocieDetail.Remark =""; invocieDetail.IsRed = false; invocieDetail.BlancePrice = p.BlancePrice;//模具分摊价格 invocieDetail.DiscountPrice = p.DiscountPrice;//供应商价格 db.TB_INVOICE_DETAIL.AddOrUpdate(invocieDetail); var _moldsharing = db.TA_MoldSharing.SingleOrDefault(t =>t.IsDeleted==false&& t.VendId == p.VendId.ToUpper() && t.PartCode == p.PartCode.ToUpper()&&t.Qty!=t.Count); if(_moldsharing!=null ) { var _num = _moldsharing.Count + p.Qty; if (_moldsharing.Qty < _num) { string _str = "供应商" + _moldsharing.VendId + "零件名称" + _moldsharing.PartCode + "超过分摊数量,分摊数量剩余" + (_moldsharing.Qty - _moldsharing.Count).ToString(); if (!_listpartcode.Contains(_moldsharing.PartCode)) { _listpartcode.Add(_moldsharing.PartCode); _list.Add(_str); } } else { _moldsharing.Count = _num; db.TA_MoldSharing.AddOrUpdate(_moldsharing); } TA_MOLDSHARING_INVOICE MoldSharingInvoice = new TA_MOLDSHARING_INVOICE(); MoldSharingInvoice.InvcBillNum = invoice.InvcBillNum; MoldSharingInvoice.MoldSharingId = _moldsharing.UID; MoldSharingInvoice.PoLineNum = p.PoLine; MoldSharingInvoice.PartCode = p.PartCode; MoldSharingInvoice.Batch = p.Batch; MoldSharingInvoice.ErpRecvBillNum = p.ErpRecvBillNum; MoldSharingInvoice.RecvBillNum = p.RecvBillNum; MoldSharingInvoice.Price = p.Price; MoldSharingInvoice.Qty = p.Qty; MoldSharingInvoice.InvcGUID = invocieDetail.GUID; db.TA_MoldSharing_Invoice.Add(MoldSharingInvoice); } _total += Convert.ToDecimal(p.Qty * p.Price); }); if (_list.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.MessageList = _list; } else { if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "CREATE_TB_INVOICE_MOLDSHARING", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "CREATE_TB_INVOICE_MOLDSHARING", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "CREATE_TB_INVOICE_MOLDSHARING", 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_INVOICE_CONTROLLER), "CREATE_TB_INVOICE_MOLDSHARING", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject SAVE_TB_INVOICE_STATE(string p_billno, InvoiceState p_state) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { var _entity = db.TB_INVOICE.Where(p => p.InvcBillNum == p_billno).FirstOrDefault(); if (p_state == InvoiceState.Apply) { #region 采购员代办任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "采购人员"; _item.ITEM_ADDRESS = _entity.Site; _item.ITEM_NO = p_billno; _item.ITEM_CONTENT = "新的采购发票申请!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.APPLY_INVOICE; _item.ITEM_STATE = (int)PENDING_STATE.WAITING; _item.SENDER = _entity.CreateUser; _item.VEND_ID = _entity.VendId; _item.SENDING_TIME = DateTime.Now; //_item.ITEM_ADDRESS = _entity.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion } if (p_state == InvoiceState.CheckFail) { #region 供应商代办采购退回任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "供应商"; _item.ITEM_NO = p_billno; _item.ITEM_CONTENT = "采购审核退回发票申请!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.PO_AUDIT_BACK; _item.ITEM_STATE = (int)PENDING_STATE.WAITING; _item.SENDER = _entity.CreateUser; _item.VEND_ID = _entity.VendId; _item.SENDING_TIME = DateTime.Now; //_item.ITEM_ADDRESS = _entity.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion } if (p_state == InvoiceState.CheckSuccess) { #region 供应商代办采购退回任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "供应商"; _item.ITEM_NO = p_billno; _item.ITEM_CONTENT = "采购审核通过发票申请!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.PO_AUDIT_PASS; _item.ITEM_STATE = (int)PENDING_STATE.WAITING; _item.SENDER = _entity.CreateUser; _item.VEND_ID = _entity.VendId; _item.SENDING_TIME = DateTime.Now; //_item.ITEM_ADDRESS = _entity.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion List _lists = db.TB_ASN.Where(p => p.AsnBillNum == "" && p.IsDeleted == false).ToList();//p_asnBillNum if (_lists.Count > 0) { _lists.ForEach(itm => itm.State = (int)AsnState.Receive); db.TB_ASN.AddOrUpdate(p => p.UID, _lists.ToArray()); var _entitys = _lists.FirstOrDefault(); var _asnList = db.TB_ASN.Where(p => p.AskBillNum == _entitys.AskBillNum && p.IsDeleted == false); var _count = _asnList.Count(p => p.State == (int)AsnState.Receive); if (_asnList.Count() == _count) { var _askList = db.TB_ASK.Where(p => p.AskBillNum == _entitys.AskBillNum && p.IsDeleted == false).ToList(); _askList.ForEach(itm => itm.State = (int)AskState.Receive); db.TB_ASK.AddOrUpdate(p => p.UID, _askList.ToArray()); } } } if (p_state == InvoiceState.FinanceFail) { #region 财务审核退回任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "供应商"; _item.ITEM_NO = p_billno; _item.ITEM_CONTENT = "财务审核退回发票申请!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.FC_AUDIT_BACK; _item.ITEM_STATE = (int)PENDING_STATE.WAITING; _item.SENDER = _entity.CreateUser; _item.VEND_ID = _entity.VendId; _item.SENDING_TIME = DateTime.Now; //_item.ITEM_ADDRESS = _entity.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion } if (p_state == InvoiceState.FinanceReceive) { var _ary=db.TB_PENING_ITEMS.Where(itm => itm.INVOICE_NO == _entity.InvcBillNum).ToArray(); db.TB_PENING_ITEMS.RemoveRange(_ary); #region 财务审核通过任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "供应商"; _item.ITEM_NO = p_billno; _item.ITEM_CONTENT = "财务审核接收发票!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.FC_AUDIT_PASS; _item.ITEM_STATE = (int)PENDING_STATE.COMPLETED; _item.SENDER = _entity.CreateUser; _item.VEND_ID = _entity.VendId; _item.SENDING_TIME = DateTime.Now; //_item.ITEM_ADDRESS = _entity.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion } if (p_state == InvoiceState.Mail) { #region 财务审核通过任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "财务人员"; _item.ITEM_NO = p_billno; _item.ITEM_CONTENT = "财务审核接收发票申请!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.NEW_ASK; _item.ITEM_STATE = (int)PENDING_STATE.COMPLETED; _item.SENDER = _entity.CreateUser; _item.VEND_ID = _entity.VendId; _item.SENDING_TIME = DateTime.Now; //_item.ITEM_ADDRESS = _entity.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion } var _list = db.TB_INVOICE_DETAIL.Where(p => p.InvcBillNum == p_billno).ToList(); _list.ForEach(p => { p.State = (int)p_state; }); _entity.State = (int)p_state; if (p_state == InvoiceState.Reject) { _entity.State = (int)p_state; _entity.IsDeleted = true; _list = db.TB_INVOICE_DETAIL.Where(p => p.InvcBillNum == p_billno).ToList(); _list.ForEach(p => { p.State = (int)p_state; p.IsDeleted = true; }); } db.TB_INVOICE_DETAIL.AddOrUpdate(p => p.UID, _list.ToArray()); db.TB_INVOICE.AddOrUpdate(p => p.UID,_entity); if (string.IsNullOrEmpty(_ret.Message)) { if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.Message = "数据更新失败!"; } } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_STATE", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_STATE", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_STATE", 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_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_STATE", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject SAVE_TB_INVOICE_STATE(V_TB_INVOICE invoice, InvoiceState p_state,string p_username="", string p_flag = "") { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { var _entity = db.TB_INVOICE.Where(p => p.InvcBillNum == invoice.InvcBillNum).FirstOrDefault(); if (p_state == InvoiceState.Apply) { #region 采购员代办任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "采购负责人"; _item.ITEM_ADDRESS = _entity.Site; _item.ITEM_NO = invoice.InvcBillNum; _item.ITEM_CONTENT = "新的采购发票申请!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.APPLY_INVOICE; _item.ITEM_STATE = (int)PENDING_STATE.WAITING; _item.SENDER = _entity.CreateUser; _item.VEND_ID = _entity.VendId; _item.SENDING_TIME = DateTime.Now; //_item.ITEM_ADDRESS = _entity.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion _entity.InvoiceNum = invoice.InvoiceNum; _entity.ExpressNum = invoice.ExpressNum; _entity.Extend1 = invoice.Extend1; _entity.Extend2 = invoice.Extend2; _entity.ContractPrice = invoice.ContractPrice; _entity.BlancePrice = invoice.BlancePrice; _entity.DiscountPrice = invoice.DiscountPrice;//问题 } if (p_state == InvoiceState.CheckFail) { #region 供应商代办采购退回任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "供应商"; _item.ITEM_NO = invoice.InvcBillNum; _item.ITEM_CONTENT = "采购审核退回发票申请!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.PO_AUDIT_BACK; _item.ITEM_STATE = (int)PENDING_STATE.WAITING; _item.SENDER = p_username; _item.VEND_ID = _entity.VendId; _item.SENDING_TIME = DateTime.Now; //_item.ITEM_ADDRESS = _entity.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion } if (p_state == InvoiceState.CheckSuccess) { #region 供应商代办采购退回任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "供应商"; _item.ITEM_NO = invoice.InvcBillNum; _item.ITEM_CONTENT = "采购审核通过发票申请!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.PO_AUDIT_PASS; _item.ITEM_STATE = (int)PENDING_STATE.WAITING; _item.SENDER = p_username; _item.VEND_ID = _entity.VendId; _item.SENDING_TIME = DateTime.Now; //_item.ITEM_ADDRESS = _entity.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion TB_INVOICE_DETAIL detail = db.TB_INVOICE_DETAIL.Where(p => p.InvcBillNum == invoice.InvcBillNum).FirstOrDefault(); if (detail != null) { List _lists = db.TB_ASN.Where(p => p.AsnBillNum == detail.AsnBillNum && p.IsDeleted == false).ToList();//p_asnBillNum if (_lists.Count > 0) { _lists.ForEach(itm => itm.State = (int)AsnState.Receive); db.TB_ASN.AddOrUpdate(p => p.UID, _lists.ToArray()); var _entitys = _lists.FirstOrDefault(); var _asnList = db.TB_ASN.Where(p => p.AskBillNum == _entitys.AskBillNum && p.IsDeleted == false); var _count = _asnList.Count(p => p.State == (int)AsnState.Receive); if (_asnList.Count() == _count) { var _askList = db.TB_ASK.Where(p => p.AskBillNum == _entitys.AskBillNum && p.IsDeleted == false).ToList(); _askList.ForEach(itm => itm.State = (int)AskState.Receive); db.TB_ASK.AddOrUpdate(p => p.UID, _askList.ToArray()); } } } } if (p_state == InvoiceState.FinanceFail) { #region 财务审核退回任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "供应商"; _item.ITEM_NO = invoice.InvcBillNum; _item.ITEM_CONTENT = "财务审核退回发票申请!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.FC_AUDIT_BACK; _item.ITEM_STATE = (int)PENDING_STATE.WAITING; _item.SENDER = p_username; _item.VEND_ID = _entity.VendId; _item.SENDING_TIME = DateTime.Now; //_item.ITEM_ADDRESS = _entity.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion } if (p_state == InvoiceState.FinanceReceive) { var _ary = db.TB_PENING_ITEMS.Where(itm => itm.INVOICE_NO == _entity.InvcBillNum).ToArray(); db.TB_PENING_ITEMS.RemoveRange(_ary); #region 财务审核通过任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "供应商"; _item.ITEM_NO = invoice.InvcBillNum; _item.ITEM_CONTENT = "财务审核接收发票!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.FC_AUDIT_PASS; _item.ITEM_STATE = (int)PENDING_STATE.COMPLETED; _item.SENDER = p_username; _item.VEND_ID = _entity.VendId; _item.SENDING_TIME = DateTime.Now; //_item.ITEM_ADDRESS = _entity.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion } if (p_state == InvoiceState.Mail) { #region 财务审核通过任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "财务人员"; _item.ITEM_NO = invoice.InvcBillNum; _item.ITEM_CONTENT = "财务审核接收发票申请!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.NEW_ASK; _item.ITEM_STATE = (int)PENDING_STATE.COMPLETED; _item.SENDER = p_username; _item.VEND_ID = _entity.VendId; _item.SENDING_TIME = DateTime.Now; //_item.ITEM_ADDRESS = _entity.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion _entity.InvoiceNum = invoice.InvoiceNum; _entity.ExpressNum = invoice.ExpressNum; if (invoice.UpdateTime != null) { _entity.UpdateTime = invoice.UpdateTime.Value; } _entity.Extend1 = invoice.Extend1; _entity.Extend2 = invoice.Extend2; _entity.ContractPrice = invoice.ContractPrice; _entity.BlancePrice = invoice.BlancePrice; _entity.DiscountPrice = invoice.DiscountPrice;//问题 } var _list = db.TB_INVOICE_DETAIL.Where(p => p.InvcBillNum == invoice.InvcBillNum).ToList(); _list.ForEach(p => { p.State = (int)p_state; }); _entity.State = (int)p_state; if (p_state == InvoiceState.Reject) { _entity.State = (int)p_state; _entity.IsDeleted = true; _list = db.TB_INVOICE_DETAIL.Where(p => p.InvcBillNum == invoice.InvcBillNum).ToList(); _list.ForEach(p => { p.State = (int)p_state; p.IsDeleted = true; if (!string.IsNullOrEmpty(p_flag))//修改分摊数量 { var _moldsharing = db.TA_MoldSharing.SingleOrDefault(t =>t.IsDeleted==false&& t.VendId == invoice.VendId.ToUpper() && t.PartCode == p.PartCode.ToUpper()); var _ms_detail = db.TA_MoldSharing_Invoice.SingleOrDefault(t =>t.InvcGUID==p.GUID); if (_moldsharing != null&& _ms_detail!=null) { db.TA_MoldSharing_Invoice.Remove(_ms_detail); var _num = _moldsharing.Count - p.Qty; _moldsharing.Count = _num; db.TA_MoldSharing.AddOrUpdate(_moldsharing); } } }); } db.TB_INVOICE_DETAIL.AddOrUpdate(p => p.UID, _list.ToArray()); db.TB_INVOICE.AddOrUpdate(p => p.UID, _entity); if (string.IsNullOrEmpty(_ret.Message)) { if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.Message = "数据更新失败!"; } } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_STATE", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_STATE", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_STATE", 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_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_STATE", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public ResultObject Del_TB_INVOICE(List p_entitys) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { foreach (var itm in p_entitys) { db.TB_INVOICE.Remove(itm); } if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Del_TB_INVOICE", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Del_TB_INVOICE", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Del_TB_INVOICE", 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; _ret.Result = false; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Del_TB_INVOICE", e.Message); throw e; } return _ret; } public static ResultObject SAVE_TB_INVOICE_APPLY(V_TB_INVOICE p_invoice, List p_list,string p_flag="") { ResultObject _ret = new ResultObject(); List _list = new List(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { var _bill=db.TB_INVOICE.Where(itm => itm.InvcBillNum == p_invoice.InvcBillNum).FirstOrDefault(); _bill.InvoiceNum = p_invoice.InvoiceNum; _bill.ExpressNum = p_invoice.ExpressNum; _bill.ContractPrice = p_invoice.ContractPrice; _bill.Extend1 = p_invoice.Extend1; _bill.Extend2 = p_invoice.Extend2; _bill.BlancePrice = p_invoice.BlancePrice; _bill.DiscountPrice = p_invoice.DiscountPrice; _bill.DiscountRemark = p_invoice.DiscountRemark; _bill.Tax = p_invoice.Tax; _bill.Remark = p_invoice.Remark; _bill.State = (int)p_invoice.State; if (p_invoice.UpdateTime != null) { _bill.UpdateTime = p_invoice.UpdateTime; } db.TB_INVOICE.AddOrUpdate(p => p.InvcBillNum, _bill); p_list.ForEach(p => { var _detail=db.TB_INVOICE_DETAIL.Where(itm => itm.UID == p.UID).FirstOrDefault(); var _qty = _detail.Qty - p.Qty; _detail.State =(int)p.State; _detail.Qty = p.Qty; _detail.Price = p.Price; _detail.ContractPrice = p.ContractPrice; _detail.BlancePrice = p.BlancePrice; _detail.DiscountPrice = p.DiscountPrice; _detail.DiscountRemark = p.DiscountRemark; if (_detail.Qty == 0) { _detail.State = (int)InvoiceState.Reject; _detail.IsDeleted = true; } _detail.Remark = p.Remark; db.TB_INVOICE_DETAIL.AddOrUpdate(itm=>itm.UID,_detail); if(!string.IsNullOrEmpty(p_flag))//修改发票数量对分摊数修改 { var _ms = db.TA_MoldSharing.SingleOrDefault(t =>t.IsDeleted==false&& t.PartCode == _detail.PartCode && t.VendId == _bill.VendId); var _ms_detail= db.TA_MoldSharing_Invoice.SingleOrDefault(t =>t.InvcGUID== _detail.GUID); if (_ms != null&& _ms_detail!=null) { _ms.Count = _ms.Count - _qty; if (_ms.Count > _ms.Qty) { string _str = "供应商" + _ms.VendId + "零件名称" + _ms.PartCode + "超出分摊数量" + (_ms.Count - _ms.Qty).ToString(); _list.Add(_str); } else { _ms_detail.Qty = p.Qty; } db.TA_MoldSharing.AddOrUpdate(_ms); db.TA_MoldSharing_Invoice.AddOrUpdate(_ms_detail); } } }); #region 供应商代办采购退回任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "供应商"; _item.ITEM_NO = _bill.InvcBillNum; _item.ITEM_CONTENT = "采购审核退回发票申请!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.PO_AUDIT_BACK; _item.ITEM_STATE = (int)PENDING_STATE.WAITING; _item.SENDER = _bill.CreateUser; _item.VEND_ID = _bill.VendId; _item.SENDING_TIME = DateTime.Now; _item.ITEM_ADDRESS = _bill.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion if (_list.Count > 0) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.MessageList = _list; } else { if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_APPLY", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_APPLY", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_APPLY", 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_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_APPLY", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject SAVE_TB_INVOICE_APPLY2(V_TB_INVOICE_RED p_invoice, List p_list) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { var _bill = db.TB_INVOICE.Where(itm => itm.InvcBillNum == p_invoice.InvcBillNum && itm.IsRed==true).FirstOrDefault(); _bill.InvoiceNum = p_invoice.InvoiceNum; _bill.ExpressNum = p_invoice.ExpressNum; _bill.ContractPrice = p_invoice.ContractPrice; _bill.BlancePrice = p_invoice.BlancePrice; _bill.DiscountPrice = p_invoice.DiscountPrice; _bill.DiscountRemark = p_invoice.DiscountRemark; _bill.Remark = p_invoice.Remark; _bill.State = (int)p_invoice.State; db.TB_INVOICE.AddOrUpdate(p => p.UID, _bill); p_list.ForEach(p => { var _detail = db.TB_INVOICE_DETAIL.Where(itm => itm.UID == p.UID).FirstOrDefault(); _detail.State = (int)p.State; _detail.Qty = p.Qty; _detail.Price = p.Price; _detail.ContractPrice = p.ContractPrice; _detail.BlancePrice = p.BlancePrice; _detail.DiscountPrice = p.DiscountPrice; _detail.DiscountRemark = p.DiscountRemark; //if (_detail.Qty == 0) //{ // _detail.State = (int)InvoiceState.Reject; // _detail.IsDeleted = true; //} _detail.Remark = p.Remark; db.TB_INVOICE_DETAIL.AddOrUpdate(itm => itm.UID, _detail); }); if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_APPLY", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_APPLY", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_APPLY", 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_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_APPLY", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public static ResultObject SAVE_TB_INVOICE_RED(V_TB_INVOICE p_invoice, List p_list) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { TB_INVOICE _bill = db.TB_INVOICE.Where(itm => itm.InvcBillNum == p_invoice.InvcBillNum && itm.IsDeleted==false).FirstOrDefault(); if (_bill != null) { _bill.InvcBillNum = p_invoice.InvcBillNum; _bill.Site = p_invoice.Site; _bill.InvoiceNum = p_invoice.InvoiceNum; _bill.ExpressNum = p_invoice.ExpressNum; _bill.VendId = p_invoice.VendId; _bill.Tax = p_invoice.Tax; _bill.State = (int)p_invoice.State; _bill.Remark = p_invoice.Remark; if (p_invoice.CreateTime != null) { _bill.CreateTime = DateTime.Parse(p_invoice.CreateTime.ToString()); } _bill.CreateUser = p_invoice.CreateUser; if (p_invoice.UpdateTime != null) { _bill.UpdateTime = DateTime.Parse(p_invoice.UpdateTime.ToString()); } _bill.UpdateUser = p_invoice.UpdateUser; _bill.UpdateInfo = p_invoice.UpdateInfo; _bill.IsDeleted = p_invoice.IsDeleted; _bill.GUID = p_invoice.GUID; _bill.ContractPrice = p_invoice.ContractPrice; _bill.BlancePrice = p_invoice.BlancePrice; _bill.DiscountPrice = p_invoice.DiscountPrice; _bill.DiscountRemark = p_invoice.DiscountRemark; _bill.IsRed = true; db.TB_INVOICE.AddOrUpdate(itm => itm.UID, _bill); p_list.ForEach(p => { TB_INVOICE_DETAIL _detail = new TB_INVOICE_DETAIL(); _detail.InvcBillNum = p.InvcBillNum; _detail.RecvBillNum = p.RecvBillNum; _detail.AsnBillNum = p.AsnBillNum; _detail.PoBillNum = p.PoBillNum; _detail.PoLineNum = p.PoLineNum; _detail.PartCode = p.PartCode; _detail.Batch = p.Batch; if (p.ProduceDate != null) { _detail.ProduceDate = DateTime.Parse(p.ProduceDate.ToString()); } _detail.VendBatch = p.VendBatch; _detail.Qty = p.Qty; _detail.PoUnit = p.PoUnit; _detail.Price = p.Price; _detail.Currency = p.Currency; if (p.PackQty != null) { _detail.PackQty = decimal.Parse(p.PackQty.ToString()); } if (p.State != null) { _detail.State = int.Parse(p.State.ToString()); } _detail.Remark = p.Remark; if (p.CreateTime != null) { _detail.CreateTime = DateTime.Parse(p.CreateTime.ToString()); } _detail.CreateUser = p.CreateUser; if (p.UpdateTime != null) { _detail.UpdateTime = DateTime.Parse(p.UpdateTime.ToString()); } _detail.UpdateUser = p.UpdateUser; _detail.UpdateInfo = p.UpdateInfo; _detail.IsDeleted = p.IsDeleted; _detail.GUID = p.GUID; if (p.BeginTime != null) { _detail.BeginTime = DateTime.Parse(p.BeginTime.ToString()); } _detail.ContractPrice = p.ContractPrice; _detail.BlancePrice = p.BlancePrice; _detail.DiscountPrice = p.DiscountPrice; _detail.DiscountRemark = p.DiscountRemark; _detail.IsRed =true; db.TB_INVOICE_DETAIL.Add(_detail); }); if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } else { _ret.State = ReturnStatus.Failed; LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE", "发票记录未查询到"); _ret.Result = false; } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_APPLY", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_APPLY", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_APPLY", 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_INVOICE_CONTROLLER), "SAVE_TB_INVOICE_APPLY", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } public ResultObject Del_TB_INVOICE_DETAIL(List p_entitys) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { foreach (var itm in p_entitys) { db.TB_INVOICE_DETAIL.Remove(itm); } if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Del_TB_INVOICE_DETAIL", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Del_TB_INVOICE_DETAIL", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Del_TB_INVOICE_DETAIL", 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; _ret.Result = false; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Del_TB_INVOICE_DETAIL", e.Message); throw e; } return _ret; } public static ResultObject CaiWu_Return_Reason(string p_InvcBillNum,string p_Memo) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { TB_INVOICE invoice = db.TB_INVOICE.Where(p => p.InvcBillNum == p_InvcBillNum).FirstOrDefault(); if (invoice != null) { invoice.State = (int)InvoiceState.FinanceFail; invoice.Remark = p_Memo; invoice.InvoiceNum = ""; invoice.ExpressNum = ""; db.TB_INVOICE.AddOrUpdate(invoice); List invoicedetail = db.TB_INVOICE_DETAIL.Where(p => p.InvcBillNum == p_InvcBillNum).ToList(); foreach (TB_INVOICE_DETAIL det in invoicedetail) { det.State = (int)InvoiceState.FinanceFail; } #region 财务审核退回任务新 TB_PENING_ITEMS _item = new TB_PENING_ITEMS(); _item.ROLE_NAME = "供应商"; _item.ITEM_NO = invoice.InvcBillNum; _item.ITEM_CONTENT = "财务审核退回发票申请!"; _item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.FC_AUDIT_BACK; _item.ITEM_STATE = (int)PENDING_STATE.WAITING; _item.SENDER = invoice.CreateUser; _item.VEND_ID = invoice.VendId; _item.SENDING_TIME = DateTime.Now; _item.ITEM_ADDRESS = invoice.Site; _item.GUID = Guid.NewGuid(); db.TB_PENING_ITEMS.Add(_item); #endregion if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; _ret.Message = invoice.VendId; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.Message = invoice.VendId; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.Message = invoice.VendId; } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "CaiWu_Return_Reason", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "CaiWu_Return_Reason", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "CaiWu_Return_Reason", 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; _ret.Result = false; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "CaiWu_Return_Reason", e.Message); throw e; } return _ret; } public static ResultObject UpdateMemoByInvcBillNum_SYJB(string p_InvcBillNum, string p_Memo, DateTime updatetime, decimal p_blan = 0, decimal p_contranctprice = 0, string p_InvoiceNumber = null) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { TB_INVOICE invoice = db.TB_INVOICE.Where(p => p.InvcBillNum == p_InvcBillNum).FirstOrDefault(); invoice.InvoiceNum = p_InvoiceNumber; invoice.BlancePrice = p_blan; invoice.ContractPrice = p_contranctprice; invoice.Remark = p_Memo; invoice.UpdateTime = updatetime; db.TB_INVOICE.AddOrUpdate(invoice); if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "UpdateMemoByInvcBillNum_SYJB", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "UpdateMemoByInvcBillNum_SYJB", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "UpdateMemoByInvcBillNum_SYJB", 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; _ret.Result = false; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "UpdateMemoByInvcBillNum_SYJB", e.Message); throw e; } return _ret; } public static ResultObject UpdateMemoByInvcBillNum(string p_InvcBillNum, string p_Memo, decimal p_blan, string p_inv,DateTime p_time) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { TB_INVOICE invoice = db.TB_INVOICE.Where(p => p.InvcBillNum == p_InvcBillNum).FirstOrDefault(); invoice.Remark = p_Memo; invoice.BlancePrice = p_blan; invoice.InvoiceNum = p_inv; invoice.UpdateTime = p_time; db.TB_INVOICE.AddOrUpdate(invoice); if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "UpdateMemoByInvcBillNum", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "UpdateMemoByInvcBillNum", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "UpdateMemoByInvcBillNum", 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; _ret.Result = false; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "UpdateMemoByInvcBillNum", e.Message); throw e; } return _ret; } public static ResultObject SET_INVOICE_STATE_SYJB(string p_InvcBillNum, InvoiceState p_state, string datetime = null) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { TB_INVOICE invoice = db.TB_INVOICE.Where(p => p.InvcBillNum == p_InvcBillNum).FirstOrDefault(); if (invoice != null) { invoice.State = (int)p_state; db.TB_INVOICE.AddOrUpdate(invoice); if (p_state == InvoiceState.Mail) { List invoicedetail = db.TB_INVOICE_DETAIL.Where(p => p.InvcBillNum == p_InvcBillNum).ToList(); foreach (TB_INVOICE_DETAIL det in invoicedetail) { det.State = (int)p_state; } } //财务审核通过,把所有代办信息设为已办状态 if (p_state == InvoiceState.FinanceReceive) { if (string.IsNullOrEmpty(datetime)) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.Message = "请填写确认收票时间"; return _ret; } DateTime updatetime = DateTime.Parse(datetime); invoice.UpdateTime = updatetime;//确认收票时间 List items = db.TB_PENING_ITEMS.Where(p => p.ITEM_NO == p_InvcBillNum).ToList(); foreach (TB_PENING_ITEMS item in items) { item.ITEM_STATE = (int)PENDING_STATE.COMPLETED; } List _ls = db.V_TB_INVOICE_DETAIL.Where(p => p.InvcBillNum == p_InvcBillNum).ToList(); V_TB_INVOICE _bill = db.V_TB_INVOICE.Where(p => p.InvcBillNum == p_InvcBillNum).FirstOrDefault(); foreach (V_TB_INVOICE_DETAIL itm in _ls) { _bill.UpdateTime = updatetime;//确认收票时间 itm.UpdateTime = updatetime;//确认收票时间 TS_UNI_API _api = UniApiController.CreateBy(_bill, itm, UniApiType.Invoice); _api.State = 1; db.TS_UNI_API.AddOrUpdate(_api); itm.State = (int)p_state; } } if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; _ret.Message = invoice.VendId; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.Message = invoice.VendId; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.Message = invoice.VendId; } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SET_INVOICE_STATE_SYJB", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SET_INVOICE_STATE_SYJB", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SET_INVOICE_STATE_SYJB", 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; _ret.Result = false; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SET_INVOICE_STATE_SYJB", e.Message); throw e; } return _ret; } public static ResultObject SET_INVOICE_STATE(string p_InvcBillNum, InvoiceState p_state) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { TB_INVOICE invoice = db.TB_INVOICE.Where(p => p.InvcBillNum == p_InvcBillNum).FirstOrDefault(); if (invoice != null) { invoice.State = (int)p_state; db.TB_INVOICE.AddOrUpdate(invoice); List invoicedetail = db.TB_INVOICE_DETAIL.Where(p => p.InvcBillNum == p_InvcBillNum).ToList(); foreach (TB_INVOICE_DETAIL det in invoicedetail) { det.State = (int)p_state; } if (p_state == InvoiceState.Mail) { db.Database.ExecuteSqlCommand(string.Format("delete FROM TS_UNI_API where InterfaceType = 'invoice' and billnum = '{0}'", p_InvcBillNum)); } //财务审核通过,把所有代办信息设为已办状态 if (p_state == InvoiceState.FinanceReceive) { List items = db.TB_PENING_ITEMS.Where(p => p.ITEM_NO == p_InvcBillNum).ToList(); foreach (TB_PENING_ITEMS item in items) { item.ITEM_STATE = (int)PENDING_STATE.COMPLETED; } List _ls = db.V_TB_INVOICE_DETAIL.Where(p => p.InvcBillNum == p_InvcBillNum).ToList(); V_TB_INVOICE _bill= db.V_TB_INVOICE.Where(p => p.InvcBillNum == p_InvcBillNum).FirstOrDefault(); foreach (V_TB_INVOICE_DETAIL itm in _ls) { TS_UNI_API _api = UniApiController.CreateBy(_bill,itm ,UniApiType.Invoice); _api.State = 1; db.TS_UNI_API.AddOrUpdate(_api); itm.State = (int)p_state; } } //财务取消收票,把所有代办信息设为等待状态 //if (p_state == InvoiceState.Mail) //{ // List items = db.TB_PENING_ITEMS.Where(p => p.ITEM_NO == p_InvcBillNum).ToList(); // foreach (TB_PENING_ITEMS item in items) // { // item.ITEM_STATE = (int)PENDING_STATE.WAITING; // } //} if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; _ret.Message = invoice.VendId; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.Message = invoice.VendId; } } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.Message = invoice.VendId; } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SET_INVOICE_STATE", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SET_INVOICE_STATE", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SET_INVOICE_STATE", 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; _ret.Result = false; _ret.ErrorList.Add(e); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "SET_INVOICE_STATE", e.Message); throw e; } return _ret; } public static ResultObject Add_New_Red_Invoice(V_TB_INVOICE p_entity) { ResultObject _ret = new ResultObject(); try { using (ScpEntities db = EntitiesFactory.CreateScpInstance()) { var _invoice = db.TB_INVOICE.Where(p => p.InvcBillNum == p_entity.InvcBillNum).FirstOrDefault(); var _invoicedetail = db.TB_INVOICE_DETAIL.Where(p => p.InvcBillNum == p_entity.InvcBillNum).FirstOrDefault(); if(_invoice !=null) { if (_invoicedetail != null) { TB_INVOICE_DETAIL invocieDetail = new TB_INVOICE_DETAIL(); invocieDetail.InvcBillNum = _invoicedetail.InvcBillNum; //invocieDetail.RecvBillNum = _invoicedetail.RecvBillNum; //invocieDetail.AsnBillNum = _invoicedetail.AsnBillNum; invocieDetail.PoBillNum = _invoicedetail.PoBillNum; invocieDetail.PoLineNum = 0;// _invoicedetail.PoLineNum; invocieDetail.PartCode = ""; // _invoicedetail.PartCode; invocieDetail.Batch = "";// _invoicedetail.Batch; //invocieDetail.VendBatch = _invoicedetail.VendBatch; invocieDetail.Qty = 0; //invocieDetail.PoUnit = _invoicedetail.PoUnit; //自己改数据库 invocieDetail.Price = 0;//自己改数据库 invocieDetail.Currency = _invoicedetail.Currency;//自己改数据库 invocieDetail.State = _invoicedetail.State; invocieDetail.Remark = "";//_invoicedetail.Remark; invocieDetail.CreateUser = _invoicedetail.CreateUser; invocieDetail.CreateTime = _invoicedetail.CreateTime; //invocieDetail.LocUnit = p.LocUnit;//自己改数据库 invocieDetail.IsDeleted = false; invocieDetail.GUID = Guid.NewGuid(); invocieDetail.IsRed = false; db.TB_INVOICE_DETAIL.Add(invocieDetail); } else { TB_INVOICE_DETAIL invocieDetail = new TB_INVOICE_DETAIL(); invocieDetail.InvcBillNum = _invoice.InvcBillNum; //invocieDetail.RecvBillNum = _invoicedetail.RecvBillNum; //invocieDetail.AsnBillNum = _invoicedetail.AsnBillNum; invocieDetail.PoBillNum = "";// _invoice.PoBillNum; invocieDetail.PoLineNum = 0;// _invoicedetail.PoLineNum; invocieDetail.PartCode = ""; // _invoicedetail.PartCode; invocieDetail.Batch = "";// _invoicedetail.Batch; //invocieDetail.VendBatch = _invoicedetail.VendBatch; invocieDetail.Qty = 0; //invocieDetail.PoUnit = _invoicedetail.PoUnit; //自己改数据库 invocieDetail.Price = 0;//自己改数据库 invocieDetail.Currency = "CNY";// _invoice.Currency;//自己改数据库 invocieDetail.State = _invoice.State; invocieDetail.Remark = "";//_invoicedetail.Remark; invocieDetail.CreateUser = _invoice.CreateUser; invocieDetail.CreateTime = _invoice.CreateTime; //invocieDetail.LocUnit = p.LocUnit;//自己改数据库 invocieDetail.IsDeleted = false; invocieDetail.GUID = Guid.NewGuid(); invocieDetail.IsRed = false; db.TB_INVOICE_DETAIL.Add(invocieDetail); } } if (db.SaveChanges() != -1) { _ret.State = ReturnStatus.Succeed; _ret.Result = true; } else { _ret.State = ReturnStatus.Failed; _ret.Result = false; } } } 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.Result = false; _ret.ErrorList.Add(dbEx); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Add_New_Red_Invoice", sb.ToString()); throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString()); } catch (OptimisticConcurrencyException ex)//并发冲突异常 { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Add_New_Red_Invoice", ex.ToString()); throw new ScpException(ResultCode.Exception, "9999", ex.ToString()); } catch (ScpException ex) { _ret.State = ReturnStatus.Failed; _ret.Result = false; _ret.ErrorList.Add(ex); LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_INVOICE_CONTROLLER), "Add_New_Red_Invoice", 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_INVOICE_CONTROLLER), "Add_New_Red_Invoice", e.Message); _ret.Result = false; _ret.ErrorList.Add(e); throw e; } return _ret; } } }