|
|
|
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<ResultObject<IQueryable<V_TB_INVOICE>>> p_action)
|
|
|
|
{
|
|
|
|
ResultObject<IQueryable<V_TB_INVOICE>> _ret = new ResultObject<IQueryable<V_TB_INVOICE>>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
IQueryable<V_TB_INVOICE> 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.UserInSubSite != null && p_entity.UserInSubSite.Count > 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p_entity.UserInSubSite.Contains(p.SubSite));
|
|
|
|
}
|
|
|
|
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<string> Get_V_TB_INVOICE_BY_TIME(string p_begin,string p_end,string p_po,string p_asn)
|
|
|
|
{
|
|
|
|
List<string> _list = new List<string>();
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
|
|
|
|
StringBuilder _builder = new StringBuilder();
|
|
|
|
_builder.Append( "SELECT DISTINCT InvcBillNum FROM TB_INVOICE_DETAIL a Inner join TB_RECEIVE B on A.RecvBillNum = B.RecvBillNum\r\n");
|
|
|
|
_builder.AppendFormat(" WHERE 1=1 \r\n");
|
|
|
|
if (!string.IsNullOrEmpty(p_begin))
|
|
|
|
{
|
|
|
|
_builder.AppendFormat(" and B.ShipTime >= cast('{0}' as datetime) \r\n", p_begin);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_end))
|
|
|
|
{
|
|
|
|
_builder.AppendFormat(" and B.ShipTime <= 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<string>(_builder.ToString()).ToList();
|
|
|
|
|
|
|
|
}
|
|
|
|
return _list;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void Get_V_TB_INVOICE_List(V_TB_INVOICE p_entity, Action<ResultObject<IQueryable<V_TB_INVOICE>>> p_action)
|
|
|
|
{
|
|
|
|
ResultObject<IQueryable<V_TB_INVOICE>> _ret = new ResultObject<IQueryable<V_TB_INVOICE>>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
IQueryable<V_TB_INVOICE> 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));
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty( p_entity.Site))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.Site == p_entity.Site);
|
|
|
|
}
|
|
|
|
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));
|
|
|
|
}
|
|
|
|
if (p_entity.EndTimeb!= null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.EndTimeb == p_entity.EndTimeb);
|
|
|
|
}
|
|
|
|
if (p_entity.StartTime != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.StartTime == p_entity.StartTime);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.SubSite))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.SubSite == p_entity.SubSite);
|
|
|
|
}
|
|
|
|
// 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_List(List<string> p_ls, Action<ResultObject<IQueryable<V_TB_INVOICE>>> p_action)
|
|
|
|
{
|
|
|
|
ResultObject<IQueryable<V_TB_INVOICE>> _ret = new ResultObject<IQueryable<V_TB_INVOICE>>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
IQueryable<V_TB_INVOICE> q = db.V_TB_INVOICE;
|
|
|
|
//if (p_entity.UID != 0)
|
|
|
|
//{
|
|
|
|
// q = q.Where(p => p.UID == p_entity.UID);
|
|
|
|
//}
|
|
|
|
if (p_ls!=null && p_ls.Count>0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p_ls.Contains(p.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_ERP_List(V_TB_INVOICE p_entity, Action<ResultObject<IQueryable<V_TB_INVOICE>>> p_action)
|
|
|
|
{
|
|
|
|
ResultObject<IQueryable<V_TB_INVOICE>> _ret = new ResultObject<IQueryable<V_TB_INVOICE>>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
IQueryable<V_TB_INVOICE> 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_DETAIL_List(V_TB_INVOICE_DETAIL p_entity, Action<ResultObject<IQueryable<V_TB_INVOICE_DETAIL>>> p_action)
|
|
|
|
{
|
|
|
|
ResultObject<IQueryable<V_TB_INVOICE_DETAIL>> _ret = new ResultObject<IQueryable<V_TB_INVOICE_DETAIL>>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
IQueryable<V_TB_INVOICE_DETAIL> 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.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 void Get_V_TB_INVOICE_DETAIL_List(List<string> p_list, Action<ResultObject<IQueryable<V_TB_INVOICE_DETAIL>>> p_action)
|
|
|
|
{
|
|
|
|
ResultObject<IQueryable<V_TB_INVOICE_DETAIL>> _ret = new ResultObject<IQueryable<V_TB_INVOICE_DETAIL>>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
IQueryable<V_TB_INVOICE_DETAIL> q = db.V_TB_INVOICE_DETAIL;
|
|
|
|
if (p_list.Count>0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p_list.Contains(p.InvcBillNum));
|
|
|
|
}
|
|
|
|
//if (p_entity.UID != 0)
|
|
|
|
//{
|
|
|
|
// q = q.Where(p => p.UID == p_entity.UID);
|
|
|
|
//}
|
|
|
|
|
|
|
|
//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<bool> CREATE_TB_INVOICE(V_TB_INVOICE p_entity,List<V_TB_RECEIVE_LIST> p_list)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
var _tax=db.TA_VENDER.Where(p => p.VendId == p_entity.VendId).Select(p => p.Tax).FirstOrDefault();
|
|
|
|
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;
|
|
|
|
invoice.ContractPrice = p_entity.ContractPrice;
|
|
|
|
invoice.BlancePrice = p_entity.BlancePrice;
|
|
|
|
invoice.SubSite = p_entity.SubSite;
|
|
|
|
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.CreateUser = invoice.CreateUser;
|
|
|
|
invocieDetail.CreateTime = invoice.CreateTime;
|
|
|
|
invocieDetail.PoUnit = p.PoUnit; //自己改数据库
|
|
|
|
//invocieDetail.LocUnit = p.LocUnit;//自己改数据库
|
|
|
|
invocieDetail.PartCode = p.PartCode;
|
|
|
|
invocieDetail.Price = p.Price;//自己改数据库
|
|
|
|
invocieDetail.DiscountPrice = p.DiscountPrice;//供应商价格
|
|
|
|
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;
|
|
|
|
invocieDetail.BlancePrice = p.BlancePrice;
|
|
|
|
invocieDetail.SubSite = p.SubSite;
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 创建发票(模具分摊计数)
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="p_entity"></param>
|
|
|
|
/// <param name="p_list"></param>
|
|
|
|
/// <param name="p_quota">是否限额验证</param>
|
|
|
|
/// <returns></returns>
|
|
|
|
public static ResultObject<bool> CREATE_TB_INVOICE_MOLDSHARING(V_TB_INVOICE p_entity, List<V_TB_RECEIVE_LIST> p_list)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
List<string> _list = new List<string>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
// var _tax = db.TA_VENDER.Where(p => p.VendId == p_entity.VendId).Select(p => p.Tax).FirstOrDefault();
|
|
|
|
var _quota = db.TA_VENDER.Where(p => p.VendId == p_entity.VendId).Select(p => p.Quota).FirstOrDefault();
|
|
|
|
decimal _total = 0;
|
|
|
|
TB_INVOICE invoice = new TB_INVOICE();
|
|
|
|
invoice.InvcBillNum = SCP_BILLCODE_CONTROLLER.MakeInvoiceCode(p_entity.VendId);
|
|
|
|
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;
|
|
|
|
invoice.ContractPrice = p_entity.ContractPrice;
|
|
|
|
invoice.BlancePrice = p_entity.BlancePrice;
|
|
|
|
invoice.SubSite = p_entity.SubSite;
|
|
|
|
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.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;
|
|
|
|
invocieDetail.BlancePrice = p.BlancePrice;//模具分摊价格
|
|
|
|
invocieDetail.DiscountPrice = p.DiscountPrice;//供应商价格
|
|
|
|
invocieDetail.SubSite = p.SubSite;
|
|
|
|
invocieDetail.Site = p.Site;
|
|
|
|
invocieDetail.TemporaryPrice = p.TemporaryPrice;
|
|
|
|
db.TB_INVOICE_DETAIL.AddOrUpdate(invocieDetail);
|
|
|
|
//var _moldsharing = db.TA_MoldSharing.SingleOrDefault(t => t.VendId == p.VendId.ToUpper() && t.PartCode == p.PartCode.ToUpper() && t.Qty != t.Count);
|
|
|
|
//var _price = db.TB_PRICE.Where(q => p.State != (int)PriceState.Reject && q.PartCode == p.PartCode).ToList();
|
|
|
|
//if (_moldsharing != null && p.BlancePrice > 0)
|
|
|
|
//{
|
|
|
|
// var _num = _moldsharing.Count + p.Qty;
|
|
|
|
// if (_moldsharing.Qty < _num)
|
|
|
|
// {
|
|
|
|
// string _str = "供应商" + _moldsharing.VendId + "零件名称" + _moldsharing.PartCode + "超过分摊数量" + (_num - _moldsharing.Qty).ToString();
|
|
|
|
// _list.Add(_str);
|
|
|
|
// }
|
|
|
|
// if (_num == _moldsharing.Qty && _price.Count > 0)
|
|
|
|
// {
|
|
|
|
// _price.ForEach(t =>
|
|
|
|
// {
|
|
|
|
// t.State = (int)PriceState.New;
|
|
|
|
// db.TB_PRICE.AddOrUpdate(t);
|
|
|
|
// });
|
|
|
|
// }
|
|
|
|
// _moldsharing.Count = _num;
|
|
|
|
// db.TA_MoldSharing.AddOrUpdate(_moldsharing);
|
|
|
|
// TA_MOLDSHARING_INVOICE MoldSharingInvoice = new TA_MOLDSHARING_INVOICE();
|
|
|
|
// MoldSharingInvoice.InvcBillNum = invoice.InvcBillNum;
|
|
|
|
// MoldSharingInvoice.MoldSharingId = _moldsharing.UID;
|
|
|
|
// db.TA_MoldSharing_Invoice.Add(MoldSharingInvoice);
|
|
|
|
//}
|
|
|
|
//_total += Convert.ToDecimal(p.Qty * p.Price + p.Qty * p.Price * p_entity.Tax + p.BlancePrice * p.Qty);
|
|
|
|
});
|
|
|
|
|
|
|
|
#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 (_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;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 创建发票(模具分摊计数)
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="p_entity"></param>
|
|
|
|
/// <param name="p_list"></param>
|
|
|
|
/// <param name="p_quota">是否限额验证</param>
|
|
|
|
/// <returns></returns>
|
|
|
|
public static ResultObject<bool> CREATE_TB_INVOICE_MOLDSHARING(V_TB_INVOICE p_entity, List<V_TB_RECEIVE_LIST> p_list, bool p_quota)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
List<string> _list = new List<string>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
// var _tax = db.TA_VENDER.Where(p => p.VendId == p_entity.VendId).Select(p => p.Tax).FirstOrDefault();
|
|
|
|
var _quota = db.TA_VENDER.Where(p => p.VendId == p_entity.VendId).Select(p => p.Quota).FirstOrDefault();
|
|
|
|
decimal _total = 0;
|
|
|
|
TB_INVOICE invoice = new TB_INVOICE();
|
|
|
|
invoice.InvcBillNum = SCP_BILLCODE_CONTROLLER.MakeInvoiceCode(p_entity.VendId);
|
|
|
|
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;
|
|
|
|
invoice.ContractPrice = p_entity.ContractPrice;
|
|
|
|
invoice.BlancePrice = p_entity.BlancePrice;
|
|
|
|
invoice.SubSite = p_entity.SubSite;
|
|
|
|
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.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;
|
|
|
|
invocieDetail.BlancePrice = p.BlancePrice;//模具分摊价格
|
|
|
|
invocieDetail.DiscountPrice = p.DiscountPrice;//供应商价格
|
|
|
|
invocieDetail.SubSite = p.SubSite;
|
|
|
|
invocieDetail.Site = p.Site;
|
|
|
|
invocieDetail.TemporaryPrice = p.TemporaryPrice;
|
|
|
|
db.TB_INVOICE_DETAIL.AddOrUpdate(invocieDetail);
|
|
|
|
var _moldsharing = db.TA_MoldSharing.SingleOrDefault(t => t.VendId == p.VendId.ToUpper() && t.PartCode == p.PartCode.ToUpper() && t.Qty != t.Count);
|
|
|
|
var _price = db.TB_PRICE.Where(q => p.State != (int)PriceState.Reject && q.PartCode == p.PartCode).ToList();
|
|
|
|
if (_moldsharing != null && p.BlancePrice > 0)
|
|
|
|
{
|
|
|
|
if (p.Qty > 0)
|
|
|
|
{
|
|
|
|
var _num = _moldsharing.Count + p.Qty;
|
|
|
|
|
|
|
|
if (_moldsharing.Qty < _num)
|
|
|
|
{
|
|
|
|
string _str = "供应商" + _moldsharing.VendId + "零件名称" + _moldsharing.PartCode + "超过分摊数量" + (_num - _moldsharing.Qty).ToString();
|
|
|
|
_list.Add(_str);
|
|
|
|
}
|
|
|
|
if (_num == _moldsharing.Qty && _price.Count > 0)
|
|
|
|
{
|
|
|
|
_price.ForEach(t =>
|
|
|
|
{
|
|
|
|
t.State = (int)PriceState.New;
|
|
|
|
db.TB_PRICE.AddOrUpdate(t);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
_moldsharing.Count = _num;
|
|
|
|
db.TA_MoldSharing.AddOrUpdate(_moldsharing);
|
|
|
|
TA_MOLDSHARING_INVOICE MoldSharingInvoice = new TA_MOLDSHARING_INVOICE();
|
|
|
|
MoldSharingInvoice.InvcBillNum = invoice.InvcBillNum;
|
|
|
|
MoldSharingInvoice.MoldSharingId = _moldsharing.UID;
|
|
|
|
db.TA_MoldSharing_Invoice.Add(MoldSharingInvoice);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_total += Convert.ToDecimal(p.Qty * p.Price + p.Qty * p.Price * p_entity.Tax + p.BlancePrice * p.Qty);
|
|
|
|
});
|
|
|
|
if (_total > _quota && _quota != 0 && p_quota)
|
|
|
|
{
|
|
|
|
string _str = "发票总额超过限额:" + _quota;
|
|
|
|
_list.Add(_str);
|
|
|
|
}
|
|
|
|
#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 (_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<bool> SAVE_TB_INVOICE_STATE(string p_billno, InvoiceState p_state)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
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<TB_ASN> _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<bool> SAVE_TB_INVOICE_STATE(V_TB_INVOICE invoice, InvoiceState p_state,string p_username="", string p_flag = "")
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
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.ContractPrice = invoice.ContractPrice;
|
|
|
|
_entity.BlancePrice = invoice.BlancePrice;
|
|
|
|
_entity.StartTime = invoice.StartTime;
|
|
|
|
_entity.EndTimeb = invoice.EndTimeb;
|
|
|
|
|
|
|
|
}
|
|
|
|
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<TB_ASN> _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;
|
|
|
|
|
|
|
|
_entity.ContractPrice = invoice.ContractPrice;
|
|
|
|
_entity.BlancePrice = invoice.BlancePrice;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
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.VendId == invoice.VendId.ToUpper() && t.PartCode == p.PartCode.ToUpper());
|
|
|
|
if (_moldsharing != null)
|
|
|
|
{
|
|
|
|
var _deletelist = db.TA_MoldSharing_Invoice.Where(q => q.MoldSharingId == _moldsharing.UID && q.InvcBillNum == invoice.InvcBillNum).ToList();
|
|
|
|
if (_deletelist != null && _deletelist.Count > 0)
|
|
|
|
{
|
|
|
|
var emu = db.TA_MoldSharing_Invoice.RemoveRange(_deletelist.ToArray());
|
|
|
|
}
|
|
|
|
if (_moldsharing != null)
|
|
|
|
{
|
|
|
|
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<bool> Del_TB_INVOICE(List<TB_INVOICE> p_entitys)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
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<bool> SAVE_TB_INVOICE_APPLY(V_TB_INVOICE p_invoice, List<V_TB_INVOICE_DETAIL> p_list,string p_flag="")
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
List<string> _list = new List<string>();
|
|
|
|
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.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;
|
|
|
|
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)&& p.BlancePrice>0)
|
|
|
|
{
|
|
|
|
var _ms = db.TA_MoldSharing.SingleOrDefault(t => t.PartCode == _detail.PartCode && t.VendId == _bill.VendId);
|
|
|
|
var _price = db.TB_PRICE.Where(q => p.State != (int)PriceState.Reject && q.PartCode == p.PartCode).ToList();
|
|
|
|
if (_ms != 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);
|
|
|
|
}
|
|
|
|
if(_ms.Count == _ms.Qty&& _price.Count>0)
|
|
|
|
{
|
|
|
|
_price.ForEach(t =>
|
|
|
|
{
|
|
|
|
t.State = (int)PriceState.New;
|
|
|
|
db.TB_PRICE.AddOrUpdate(t);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
db.TA_MoldSharing.AddOrUpdate(_ms);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
#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<bool> SAVE_TB_INVOICE_RED(V_TB_INVOICE p_invoice, List<V_TB_INVOICE_DETAIL> p_list)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
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<bool> Del_TB_INVOICE_DETAIL(List<TB_INVOICE_DETAIL> p_entitys)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
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<bool> CaiWu_Return_Reason(string p_InvcBillNum,string p_Memo)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
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<TB_INVOICE_DETAIL> 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<bool> UpdateMemoByInvcBillNum(string p_InvcBillNum, string p_Memo)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
TB_INVOICE invoice = db.TB_INVOICE.Where(p => p.InvcBillNum == p_InvcBillNum).FirstOrDefault();
|
|
|
|
|
|
|
|
invoice.Remark = p_Memo;
|
|
|
|
|
|
|
|
|
|
|
|
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<bool> UpdateMemoByInvcBillNum(string p_InvcBillNum, string p_Memo, decimal p_blan, string p_inv)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
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;
|
|
|
|
|
|
|
|
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<bool> UpdateMemoByInvcBillNum(string p_InvcBillNum, string p_Memo, decimal p_blan, string p_inv,
|
|
|
|
string p_CInvoiceCostCenterCode ,
|
|
|
|
string p_CInvoiceDescription,
|
|
|
|
string p_CInvoiceDivisionCode,
|
|
|
|
string p_CInvoiceType,
|
|
|
|
DateTime? p_PostingDate
|
|
|
|
)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
TB_INVOICE invoice = db.TB_INVOICE.Where(p => p.InvcBillNum == p_InvcBillNum).FirstOrDefault();
|
|
|
|
invoice.CInvoiceCostCenterCode = p_CInvoiceCostCenterCode;
|
|
|
|
invoice.CInvoiceDescription = p_CInvoiceDescription;
|
|
|
|
invoice.CInvoiceDivisionCode = p_CInvoiceDivisionCode;
|
|
|
|
invoice.CInvoiceType = p_CInvoiceType;
|
|
|
|
invoice.PostingDate = p_PostingDate;
|
|
|
|
invoice.Remark = p_Memo;
|
|
|
|
invoice.BlancePrice = p_blan;
|
|
|
|
invoice.InvoiceNum = p_inv;
|
|
|
|
|
|
|
|
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<bool> SET_INVOICE_STATE(string p_InvcBillNum, InvoiceState p_state)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
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<TB_INVOICE_DETAIL> 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)
|
|
|
|
{
|
|
|
|
List<TB_PENING_ITEMS> 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<V_TB_INVOICE_DETAIL> _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<TB_PENING_ITEMS> 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<bool> SET_INVOICE_STATE(string p_InvcBillNum, InvoiceState p_state,
|
|
|
|
string p_CInvoiceCostCenterCode,
|
|
|
|
string p_CInvoiceDescription,
|
|
|
|
string p_CInvoiceDivisionCode,
|
|
|
|
string p_CInvoiceType,
|
|
|
|
DateTime? p_PostingDate
|
|
|
|
)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
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;
|
|
|
|
|
|
|
|
invoice.CInvoiceCostCenterCode = p_CInvoiceCostCenterCode;
|
|
|
|
invoice.CInvoiceDescription = p_CInvoiceDescription;
|
|
|
|
invoice.CInvoiceDivisionCode = p_CInvoiceDivisionCode;
|
|
|
|
invoice.CInvoiceType = p_CInvoiceType;
|
|
|
|
invoice.PostingDate = p_PostingDate;
|
|
|
|
|
|
|
|
|
|
|
|
db.TB_INVOICE.AddOrUpdate(invoice);
|
|
|
|
|
|
|
|
List<TB_INVOICE_DETAIL> 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)
|
|
|
|
{
|
|
|
|
List<TB_PENING_ITEMS> 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<V_TB_INVOICE_DETAIL> _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();
|
|
|
|
|
|
|
|
var _colne=ConvertHelper.GetObjectClone(_bill);
|
|
|
|
|
|
|
|
_colne.CInvoiceCostCenterCode = p_CInvoiceCostCenterCode;
|
|
|
|
_colne.CInvoiceDescription = p_CInvoiceDescription;
|
|
|
|
_colne.CInvoiceDivisionCode = p_CInvoiceDivisionCode;
|
|
|
|
_colne.CInvoiceType = p_CInvoiceType;
|
|
|
|
_colne.PostingDate = p_PostingDate;
|
|
|
|
|
|
|
|
|
|
|
|
foreach (V_TB_INVOICE_DETAIL itm in _ls)
|
|
|
|
{
|
|
|
|
TS_UNI_API _api = UniApiController.CreateBy(_colne, 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", 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<bool> SET_INVOICE_STATE(List<string> p_ls, InvoiceState p_state,
|
|
|
|
// string p_CInvoiceCostCenterCode,
|
|
|
|
// string p_CInvoiceDescription,
|
|
|
|
// string p_CInvoiceDivisionCode,
|
|
|
|
// string p_CInvoiceType,
|
|
|
|
// DateTime? p_PostingDate
|
|
|
|
// )
|
|
|
|
//{
|
|
|
|
// ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
// try
|
|
|
|
// {
|
|
|
|
// using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
// {
|
|
|
|
// var invoiceList = db.TB_INVOICE.Where(p =>p_ls.Contains(p.InvcBillNum) ).ToList();
|
|
|
|
// foreach (var invoice in invoiceList)
|
|
|
|
// {
|
|
|
|
// invoice.State = (int)p_state;
|
|
|
|
// invoice.CInvoiceCostCenterCode = p_CInvoiceCostCenterCode;
|
|
|
|
// invoice.CInvoiceDescription = p_CInvoiceDescription;
|
|
|
|
// invoice.CInvoiceDivisionCode = p_CInvoiceDivisionCode;
|
|
|
|
// invoice.CInvoiceType = p_CInvoiceType;
|
|
|
|
// invoice.PostingDate = p_PostingDate;
|
|
|
|
// }
|
|
|
|
// db.TB_INVOICE.AddOrUpdate(invoiceList.ToArray());
|
|
|
|
|
|
|
|
|
|
|
|
// List<TB_INVOICE_DETAIL> invoicedetail = db.TB_INVOICE_DETAIL.Where(p =>p_ls.Contains(p.InvcBillNum) ).ToList();
|
|
|
|
|
|
|
|
// foreach (TB_INVOICE_DETAIL det in invoicedetail)
|
|
|
|
// {
|
|
|
|
// det.State = (int)p_state;
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (p_state == InvoiceState.FinanceReceive)
|
|
|
|
// {
|
|
|
|
// //List<TB_PENING_ITEMS> 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<V_TB_INVOICE_DETAIL> _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();
|
|
|
|
|
|
|
|
// var _colne = ConvertHelper.GetObjectClone(_bill);
|
|
|
|
|
|
|
|
// _colne.CInvoiceCostCenterCode = p_CInvoiceCostCenterCode;
|
|
|
|
// _colne.CInvoiceDescription = p_CInvoiceDescription;
|
|
|
|
// _colne.CInvoiceDivisionCode = p_CInvoiceDivisionCode;
|
|
|
|
// _colne.CInvoiceType = p_CInvoiceType;
|
|
|
|
// _colne.PostingDate = p_PostingDate;
|
|
|
|
|
|
|
|
|
|
|
|
// foreach (V_TB_INVOICE_DETAIL itm in _ls)
|
|
|
|
// {
|
|
|
|
// TS_UNI_API _api = UniApiController.CreateBy(_colne, itm, UniApiType.Invoice);
|
|
|
|
// _api.State = 1;
|
|
|
|
// db.TS_UNI_API.AddOrUpdate(_api);
|
|
|
|
// itm.State = (int)p_state;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// if (invoice != null)
|
|
|
|
// {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// List<TB_INVOICE_DETAIL> 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)
|
|
|
|
// {
|
|
|
|
// List<TB_PENING_ITEMS> 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<V_TB_INVOICE_DETAIL> _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();
|
|
|
|
|
|
|
|
// var _colne = ConvertHelper.GetObjectClone(_bill);
|
|
|
|
|
|
|
|
// _colne.CInvoiceCostCenterCode = p_CInvoiceCostCenterCode;
|
|
|
|
// _colne.CInvoiceDescription = p_CInvoiceDescription;
|
|
|
|
// _colne.CInvoiceDivisionCode = p_CInvoiceDivisionCode;
|
|
|
|
// _colne.CInvoiceType = p_CInvoiceType;
|
|
|
|
// _colne.PostingDate = p_PostingDate;
|
|
|
|
|
|
|
|
|
|
|
|
// foreach (V_TB_INVOICE_DETAIL itm in _ls)
|
|
|
|
// {
|
|
|
|
// TS_UNI_API _api = UniApiController.CreateBy(_colne, 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", 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<bool> Add_New_Red_Invoice(V_TB_INVOICE p_entity)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
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), "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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|