|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Data.Entity.Migrations;
|
|
|
|
using System.Linq;
|
|
|
|
using System.Text;
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
using CK.SCP.Models;
|
|
|
|
using CK.SCP.Models.Enums;
|
|
|
|
using CK.SCP.Models.ScpEntity;
|
|
|
|
using CK.SCP.Utils;
|
|
|
|
using System.Data.Entity.Core;
|
|
|
|
using System.Web;
|
|
|
|
using CK.SCP.Models.AppBoxEntity;
|
|
|
|
using System.Data.SqlClient;
|
|
|
|
using System.Collections;
|
|
|
|
|
|
|
|
namespace CK.SCP.Controller
|
|
|
|
{
|
|
|
|
|
|
|
|
public class SCP_ASK_CONTROLLER
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
public static void Get_V_TB_ASK_List(V_TB_ASK p_entity, Action<ResultObject<IQueryable<V_TB_ASK>>> p_action)
|
|
|
|
{
|
|
|
|
ResultObject<IQueryable<V_TB_ASK>> _ret = new ResultObject<IQueryable<V_TB_ASK>>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
|
|
|
|
IQueryable<V_TB_ASK> q = db.V_TB_ASK;
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.PoBillNum))
|
|
|
|
{
|
|
|
|
|
|
|
|
q = q.Where(p => p.PoBillNum.Contains(p_entity.PoBillNum));
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.AskBillNum))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.AskBillNum.Contains(p_entity.AskBillNum));
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.VendId))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.VendId == p_entity.VendId);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.Site))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.Site.Contains(p_entity.Site));
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.Buyer))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.Buyer.Contains(p_entity.Buyer));
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.BuyerPhone))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.BuyerPhone.Contains(p_entity.BuyerPhone));
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.Remark))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.Remark.Contains(p_entity.Remark));
|
|
|
|
}
|
|
|
|
if (p_entity.BillStateList != null && p_entity.BillStateList.Count > 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p_entity.BillStateList.Contains((int)p.State));
|
|
|
|
}
|
|
|
|
if (p_entity.BeginTime != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.BeginTime >= p_entity.BeginTime);
|
|
|
|
}
|
|
|
|
if (p_entity.EndTime != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.EndTime <= p_entity.EndTime);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.VendName))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.VendName.Contains(p_entity.VendName));
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.State_DESC))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.State_DESC.Contains(p_entity.State_DESC));
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.ModType_DESC))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.ModType_DESC.Contains(p_entity.ModType_DESC));
|
|
|
|
}
|
|
|
|
q = q.Where(p => p.IsDeleted == p_entity.IsDeleted);
|
|
|
|
|
|
|
|
if (p_entity.UserInAddress.FirstOrDefault() != 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 (!string.IsNullOrEmpty(p_entity.CreateUser))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.CreateUser == p_entity.CreateUser);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (p_entity.UserInVendIds != null && p_entity.UserInVendIds.Count > 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p_entity.UserInVendIds.Contains(p.VendId));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_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_ASK_CONTROLLER), "Get_V_TB_ASK_List", sb.ToString());
|
|
|
|
if (dbEx.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List(DbEntityValidationException)", LogHelper.GetExceptionMessage(dbEx).Message);
|
|
|
|
throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString());
|
|
|
|
}
|
|
|
|
catch (OptimisticConcurrencyException ex)//并发冲突异常
|
|
|
|
{
|
|
|
|
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.ErrorList.Add(ex);
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List", ex.Message.ToString());
|
|
|
|
if (ex.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List(OptimisticConcurrencyException)", LogHelper.GetExceptionMessage(ex).Message);
|
|
|
|
|
|
|
|
throw new ScpException(ResultCode.Exception, "9999", ex.ToString());
|
|
|
|
}
|
|
|
|
catch (ScpException ex)
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.ErrorList.Add(ex);
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List", ex.Message.ToString());
|
|
|
|
if (ex.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List(ScpException)", LogHelper.GetExceptionMessage(ex).Message);
|
|
|
|
|
|
|
|
if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException))
|
|
|
|
{
|
|
|
|
var inner = (UpdateException)ex.InnerException;
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List", inner.Message.ToString());
|
|
|
|
throw new ScpException(ResultCode.Exception, "0000", ex.ToString());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (ex.InnerException != null)
|
|
|
|
{
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List", ex.InnerException.Message);
|
|
|
|
throw ex.InnerException;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception e)
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.ErrorList.Add(e);
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List", e.Message);
|
|
|
|
if (e.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List(Exception)", LogHelper.GetExceptionMessage(e).Message);
|
|
|
|
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public static TB_ASK Getask(string ASK)
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
var site = db.TB_ASK.FirstOrDefault(p => p.AskBillNum == ASK);
|
|
|
|
return site;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
|
|
/// 要货看板减产数量
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="p_entitys">要货看板业务类</param>
|
|
|
|
/// <returns></returns>
|
|
|
|
public static ResultObject<bool> Update_ReduceQty(List<V_TB_ASK_DETAIL> p_entitys)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
foreach (var itm in p_entitys)
|
|
|
|
{
|
|
|
|
var _entity = db.TB_ASK_DETAIL.Where(p => p.UID == itm.UID).FirstOrDefault();
|
|
|
|
_entity.ReduceQty = itm.ReduceQty;
|
|
|
|
_entity.Remark = itm.Remark;
|
|
|
|
var asn = db.V_TB_ASN_DETAIL.Where(p => p.PoBillNum == itm.PoBillNum && p.AskBillNum == itm.AskBillNum && p.IsDeleted == false)
|
|
|
|
.GroupBy(p => new { p.PoBillNum, p.AskBillNum, p.PoLine, p.PartCode })
|
|
|
|
.Select(p => new { AsSum = p.Sum(item => item.Qty), PoLine = p.Key.PoLine, PoBillNum = p.Key.PoBillNum, PartCode = p.Key.PartCode, AskBillNum = p.Key.AskBillNum });
|
|
|
|
|
|
|
|
asn.ToList().ForEach(itm1 =>
|
|
|
|
{
|
|
|
|
if (itm.PoBillNum == itm1.PoBillNum && itm.PoLine == itm1.PoLine && itm.PartCode == itm1.PartCode && itm.AskBillNum == itm1.AskBillNum)
|
|
|
|
{
|
|
|
|
if (itm.ReduceQty > itm.AskQty - itm1.AsSum)
|
|
|
|
{
|
|
|
|
_ret.MessageList.Add(string.Format("零件编号{0}零件名称{1}减产数量>要货数量-发货数量", itm.PartCode, itm.PartDesc1 + itm.PartDesc2));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(p => p.UID, _entity);
|
|
|
|
}
|
|
|
|
if (_ret.MessageList.Count > 0)
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
|
|
|
|
}
|
|
|
|
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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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;
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Save_TB_ASK_DETAIL", e.Message);
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.ErrorList.Add(e);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
return _ret;
|
|
|
|
}
|
|
|
|
public static void DEL_V_TB_ASK_DETAIL(List<V_TB_ASK_DETAIL> p_list, Action<ResultObject<bool>> p_action)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
|
|
|
|
var _list = p_list.Select(itm => itm.UID).ToList();
|
|
|
|
|
|
|
|
var _ls = db.TB_ASK_DETAIL.Where(p => _list.Contains(p.UID)).ToList();
|
|
|
|
db.TB_ASK_DETAIL.RemoveRange(_ls);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (db.SaveChanges() != -1)
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Succeed;
|
|
|
|
_ret.Result = true;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
}
|
|
|
|
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_ASK_CONTROLLER), "Get_V_TB_ASK_ASN_View_List", sb.ToString());
|
|
|
|
throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString());
|
|
|
|
}
|
|
|
|
catch (OptimisticConcurrencyException ex)//并发冲突异常
|
|
|
|
{
|
|
|
|
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.ErrorList.Add(ex);
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_ASN_View_List", ex.ToString());
|
|
|
|
throw new ScpException(ResultCode.Exception, "9999", ex.ToString());
|
|
|
|
}
|
|
|
|
catch (ScpException ex)
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.ErrorList.Add(ex);
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_ASN_View_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_ASK_CONTROLLER), "Get_V_TB_ASK_ASN_View_List", e.Message);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void Get_V_TB_ASK_ASN_View_List(V_TB_INCOMPLETE_ASK p_entity, Action<ResultObject<IQueryable<V_TB_INCOMPLETE_ASK>>> p_action)
|
|
|
|
{
|
|
|
|
ResultObject<IQueryable<V_TB_INCOMPLETE_ASK>> _ret = new ResultObject<IQueryable<V_TB_INCOMPLETE_ASK>>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
|
|
|
|
IQueryable<V_TB_INCOMPLETE_ASK> q = db.V_TB_INCOMPLETE_ASK;
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.PoBillNum))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PoBillNum == p_entity.PoBillNum);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.AskBillNum))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.AskBillNum == p_entity.AskBillNum);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.PartCode))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PartCode.Contains(p_entity.PartCode));
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.PartDesc1))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PartDesc1.Contains(p_entity.PartDesc1));
|
|
|
|
}
|
|
|
|
if (p_entity.BeginTimeStart != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.BeginTime >= p_entity.BeginTimeStart);
|
|
|
|
}
|
|
|
|
if (p_entity.BeginTimeEnd != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.BeginTime <= p_entity.BeginTimeEnd);
|
|
|
|
}
|
|
|
|
if (p_entity.EndTimeStart != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.EndTime >= p_entity.EndTimeStart);
|
|
|
|
}
|
|
|
|
if (p_entity.EndTimeEnd != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.EndTime <= p_entity.EndTimeEnd);
|
|
|
|
}
|
|
|
|
if (p_entity.Buyer != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.Buyer == p_entity.Buyer);
|
|
|
|
}
|
|
|
|
if (p_entity.CreateUser != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.CreateUser == p_entity.CreateUser);
|
|
|
|
}
|
|
|
|
if (p_entity.EndTime != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.EndTime < p_entity.EndTime);
|
|
|
|
}
|
|
|
|
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.DayState == 0)
|
|
|
|
//{
|
|
|
|
// q = q.Where(p => p.ValidityDays <= 0);
|
|
|
|
//}
|
|
|
|
//if (p_entity.DayState > 0)
|
|
|
|
//{
|
|
|
|
// q = q.Where(p => (p.ValidityDays - p_entity.DayState)<=0 && p.ValidityDays>0);
|
|
|
|
//}
|
|
|
|
if (p_entity.SendState == 1)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.AskQty != p.ReduceQty + p.Qty);
|
|
|
|
}
|
|
|
|
if (p_entity.SendState == 2)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.AskQty == p.ReduceQty + p.Qty);
|
|
|
|
}
|
|
|
|
q = q.Where(p => p.IsDeleted == p_entity.IsDeleted);
|
|
|
|
_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_ASK_CONTROLLER), "Get_V_TB_ASK_ASN_View_List", sb.ToString());
|
|
|
|
if (dbEx.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASN_CONTROLLER), "Get_V_TB_ASK_ASN_View_List(DbEntityValidationException)", LogHelper.GetExceptionMessage(dbEx).Message);
|
|
|
|
|
|
|
|
throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString());
|
|
|
|
}
|
|
|
|
catch (OptimisticConcurrencyException ex)//并发冲突异常
|
|
|
|
{
|
|
|
|
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.ErrorList.Add(ex);
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_ASN_View_List", ex.ToString());
|
|
|
|
if (ex.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASN_CONTROLLER), "Get_V_TB_ASK_ASN_View_List(OptimisticConcurrencyException)", LogHelper.GetExceptionMessage(ex).Message);
|
|
|
|
|
|
|
|
throw new ScpException(ResultCode.Exception, "9999", ex.ToString());
|
|
|
|
}
|
|
|
|
catch (ScpException ex)
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.ErrorList.Add(ex);
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_ASN_View_List", ex.ToString());
|
|
|
|
if (ex.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASN_CONTROLLER), "Get_V_TB_ASK_ASN_View_List(ScpException)", LogHelper.GetExceptionMessage(ex).Message);
|
|
|
|
|
|
|
|
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_ASK_CONTROLLER), "Get_V_TB_ASK_ASN_View_List", e.Message);
|
|
|
|
if (e.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASN_CONTROLLER), "Get_V_TB_ASK_ASN_View_List(ScpException)", LogHelper.GetExceptionMessage(e).Message);
|
|
|
|
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void Get_V_TB_ASK_ASN_ARR_View_List(V_TB_INCOMOLETE_DETAIL p_entity, Action<ResultObject<IQueryable<V_TB_INCOMOLETE_DETAIL>>> p_action)
|
|
|
|
{
|
|
|
|
ResultObject<IQueryable<V_TB_INCOMOLETE_DETAIL>> _ret = new ResultObject<IQueryable<V_TB_INCOMOLETE_DETAIL>>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
|
|
|
|
IQueryable<V_TB_INCOMOLETE_DETAIL> q = db.V_TB_INCOMOLETE_DETAIL;
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.PoBillNum))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PoBillNum == p_entity.PoBillNum);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.PartCode))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PartCode == p_entity.PartCode);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.Buyer))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.Buyer == p_entity.Buyer);
|
|
|
|
}
|
|
|
|
if (p_entity.BeginTimeStart != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.BeginTime >= p_entity.BeginTimeStart);
|
|
|
|
}
|
|
|
|
if (p_entity.BeginTimeEnd != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.BeginTime <= p_entity.BeginTimeEnd);
|
|
|
|
}
|
|
|
|
if (p_entity.EndTimeStart != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.EndTime >= p_entity.EndTimeStart);
|
|
|
|
}
|
|
|
|
if (p_entity.EndTimeEnd != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.EndTime <= p_entity.EndTimeEnd);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.VendId))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.VendId == p_entity.VendId);
|
|
|
|
}
|
|
|
|
_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_ASK_CONTROLLER), "Get_V_TB_ASK_ASN_View_List", sb.ToString());
|
|
|
|
throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString());
|
|
|
|
}
|
|
|
|
catch (OptimisticConcurrencyException ex)//并发冲突异常
|
|
|
|
{
|
|
|
|
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.ErrorList.Add(ex);
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_ASN_View_List", ex.ToString());
|
|
|
|
throw new ScpException(ResultCode.Exception, "9999", ex.ToString());
|
|
|
|
}
|
|
|
|
catch (ScpException ex)
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.ErrorList.Add(ex);
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_ASN_View_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_ASK_CONTROLLER), "Get_V_TB_ASK_ASN_View_List", e.Message);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
public static List<V_TB_INCOMPLETE_ASK> RejectQty_SUM(List<V_TB_INCOMPLETE_ASK> p_list)
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
if (p_list.Count > 0)
|
|
|
|
{
|
|
|
|
//var _detail = p_list[0];
|
|
|
|
foreach (V_TB_INCOMPLETE_ASK _detail in p_list)
|
|
|
|
{
|
|
|
|
|
|
|
|
var reject = db.TB_ARRIVE_DETAIL.Where(p => p.Remark == _detail.AskBillNum && p.IsDeleted == false && p.State == (int)ArriveState.OK && p.BillType == 3).GroupBy(p => new { p.Remark, p.PoLine, p.PartCode }).Select(p => new { RejectSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, Remark = p.Key.Remark, PartCode = p.Key.PartCode });
|
|
|
|
reject.ToList().ForEach(itm =>
|
|
|
|
{
|
|
|
|
if (_detail.AskBillNum == itm.Remark && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
_detail.Number = _detail.Number + Math.Abs(itm.RejectSum);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
return p_list;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
|
|
/// 加载货物详细数量信息
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="p_list"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
public static List<V_TB_INCOMPLETE_ASK> Load_Qty_Sum(List<V_TB_INCOMPLETE_ASK> p_list)
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
if (p_list.Count > 0)
|
|
|
|
{
|
|
|
|
//var _detail = p_list[0];
|
|
|
|
foreach (V_TB_INCOMPLETE_ASK _detail in p_list)
|
|
|
|
{
|
|
|
|
//合格数量
|
|
|
|
var rec = db.TB_RECEIVE_DETAIL.Where(p => p.Remark == _detail.AskBillNum && p.IsDeleted == false && p.State == (int)ReceiveState.Check && p.BillType == 0)
|
|
|
|
.GroupBy(p => new { p.Remark, p.PoLine, p.PartCode }).Select(p => new { ReceiveSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, Remark = p.Key.Remark, PartCode = p.Key.PartCode });
|
|
|
|
//到货数量
|
|
|
|
var arrive = db.TB_ARRIVE_DETAIL.Where(p => p.Remark == _detail.AskBillNum && p.IsDeleted == false && p.State == (int)ArriveState.OK && p.Qty > 0).GroupBy(p => new { p.Remark, p.PoLine, p.PartCode }).Select(p => new { ArriveSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, Remark = p.Key.Remark, PartCode = p.Key.PartCode });
|
|
|
|
//退货数量
|
|
|
|
var back = db.TB_ARRIVE_DETAIL.Where(p => p.Remark == _detail.AskBillNum && p.IsDeleted == false && p.State == (int)ArriveState.OK && p.Qty < 0).GroupBy(p => new { p.Remark, p.PoLine, p.PartCode }).Select(p => new { ArriveSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, Remark = p.Key.Remark, PartCode = p.Key.PartCode });
|
|
|
|
//开票数量
|
|
|
|
var invoice = db.V_TB_INVOICE_ASK.Where(p => p.Remark == _detail.AskBillNum && p.State == (int)ReceiveState.Check && p.BillType == 0)
|
|
|
|
.GroupBy(p => new { p.Remark, p.PoLine, p.PartCode }).Select(p => new { InvoiceQty = p.Sum(itm => itm.InvoiceQty), PoLine = p.Key.PoLine, Remark = p.Key.Remark, PartCode = p.Key.PartCode });
|
|
|
|
//寄售退货
|
|
|
|
var reject = db.TB_ARRIVE_DETAIL.Where(p => p.Remark == _detail.AskBillNum && p.IsDeleted == false && p.State == (int)ArriveState.OK && p.BillType == 3).GroupBy(p => new { p.Remark, p.PoLine, p.PartCode }).Select(p => new { RejectSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, Remark = p.Key.Remark, PartCode = p.Key.PartCode });
|
|
|
|
reject.ToList().ForEach(itm =>
|
|
|
|
{
|
|
|
|
if (_detail.AskBillNum == itm.Remark && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
_detail.Number = _detail.Number + Math.Abs(itm.RejectSum);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
invoice.ToList().ForEach(itm =>
|
|
|
|
{
|
|
|
|
if (_detail.AskBillNum == itm.Remark && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
_detail.InvoiceQty = itm.InvoiceQty;
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
back.ToList().ForEach(itm =>
|
|
|
|
{
|
|
|
|
if (_detail.AskBillNum == itm.Remark && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
_detail.RejectQty = itm.ArriveSum;
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
arrive.ToList().ForEach(itm =>
|
|
|
|
{
|
|
|
|
if (_detail.AskBillNum == itm.Remark && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
_detail.ArriveQty = itm.ArriveSum;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
rec.ToList().ForEach(itm =>
|
|
|
|
{
|
|
|
|
if (_detail.AskBillNum == itm.Remark && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
_detail.ReceivedQty = itm.ReceiveSum;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
_detail.OnRoadQty = Convert.ToDecimal(_detail.Qty) - _detail.ArriveQty;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
return p_list;
|
|
|
|
}
|
|
|
|
public static List<V_TB_ASK_DETAIL> LOAD_ASK_DETAIL_SUM(List<V_TB_ASK_DETAIL> p_list)
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
if (p_list.Count > 0)
|
|
|
|
{
|
|
|
|
//var _detail = p_list[0];
|
|
|
|
foreach (V_TB_ASK_DETAIL _detail in p_list)
|
|
|
|
{
|
|
|
|
var _ask = db.TB_ASK_DETAIL.Where(p => p.AskBillNum == _detail.AskBillNum && p.IsDeleted == false).GroupBy(p => new { p.AskBillNum, p.PoLine, p.PartCode }).Select(p => new { AskSum = p.Sum(itm => itm.AskQty), PoLine = p.Key.PoLine, AskBillNum = p.Key.AskBillNum, PartCode = p.Key.PartCode });
|
|
|
|
|
|
|
|
//合格
|
|
|
|
var rec = db.TB_RECEIVE_DETAIL.Where(p => p.Remark == _detail.AskBillNum && p.IsDeleted == false && p.State == (int)ReceiveState.Check && p.BillType == 0)
|
|
|
|
.GroupBy(p => new { p.Remark, p.PoLine, p.PartCode }).Select(p => new { ReceiveSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, Remark = p.Key.Remark, PartCode = p.Key.PartCode });
|
|
|
|
|
|
|
|
// var reject = db.TB_RECEIVE_DETAIL.Where(p => p.Remark == _detail.AskBillNum && p.IsDeleted == false && p.State == (int)RejectState.Check && p.BillType == 1).GroupBy(p => new { p.Remark, p.PoLine, p.PartCode }).Select(p => new { RejectSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, Remark = p.Key.Remark , PartCode = p.Key.PartCode });
|
|
|
|
//发货
|
|
|
|
var asn = db.V_TB_ASN_DETAIL.Where(p => p.AskBillNum == _detail.AskBillNum && p.IsDeleted == false && p.State == (int)AsnState.Ship)
|
|
|
|
.GroupBy(p => new { p.AskBillNum, p.PoLine, p.PartCode })
|
|
|
|
.Select(p => new { AsSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, AskBillNum = p.Key.AskBillNum, PartCode = p.Key.PartCode });
|
|
|
|
|
|
|
|
//var arrive = db.TB_ARRIVE_DETAIL.Where(p => p.Remark == _detail.AskBillNum && p.IsDeleted == false && p.State == (int)ArriveState.OK && p.BillType == (int)ArriveBillType.Receive).GroupBy(p => new { p.Remark, p.PoLine, p.PartCode }).Select(p => new { ArriveSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, Remark = p.Key.Remark, PartCode = p.Key.PartCode });
|
|
|
|
//到货
|
|
|
|
var arrive = db.TB_ARRIVE_DETAIL.Where(p => p.Remark == _detail.AskBillNum && p.IsDeleted == false && p.State == (int)ArriveState.OK && p.Qty > 0).GroupBy(p => new { p.Remark, p.PoLine, p.PartCode }).Select(p => new { ArriveSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, Remark = p.Key.Remark, PartCode = p.Key.PartCode });
|
|
|
|
//退货
|
|
|
|
var reject = db.TB_ARRIVE_DETAIL.Where(p => p.Remark == _detail.AskBillNum && p.IsDeleted == false && p.State == (int)ArriveState.OK && p.Qty < 0).GroupBy(p => new { p.Remark, p.PoLine, p.PartCode }).Select(p => new { ArriveSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, Remark = p.Key.Remark, PartCode = p.Key.PartCode });
|
|
|
|
|
|
|
|
var invoice = db.V_TB_INVOICE_ASK.Where(p => p.Remark == _detail.AskBillNum && p.State == (int)ReceiveState.Check && p.BillType == 0)
|
|
|
|
.GroupBy(p => new { p.Remark, p.PoLine, p.PartCode }).Select(p => new { InvoiceQty = p.Sum(itm => itm.InvoiceQty), PoLine = p.Key.PoLine, Remark = p.Key.Remark, PartCode = p.Key.PartCode });
|
|
|
|
|
|
|
|
_detail.PartDesc1 = _detail.PartDesc1 + _detail.PartDesc2;
|
|
|
|
rec.ToList().ForEach(itm =>
|
|
|
|
{
|
|
|
|
if (_detail.AskBillNum == itm.Remark && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
_detail.ReceivedQty = itm.ReceiveSum;
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
reject.ToList().ForEach(itm =>
|
|
|
|
{
|
|
|
|
if (_detail.AskBillNum == itm.Remark && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
_detail.RejectQty = itm.ArriveSum;
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
asn.ToList().ForEach(itm =>
|
|
|
|
{
|
|
|
|
if (_detail.AskBillNum == itm.AskBillNum && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
_detail.ShippedQty = itm.AsSum;
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
_ask.ToList().ForEach(itm =>
|
|
|
|
{
|
|
|
|
if (_detail.AskBillNum == itm.AskBillNum && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
_detail.TempQty = itm.AskSum;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
arrive.ToList().ForEach(itm =>
|
|
|
|
{
|
|
|
|
if (_detail.AskBillNum == itm.Remark && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
_detail.ArriveQty = itm.ArriveSum;
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
invoice.ToList().ForEach(itm =>
|
|
|
|
{
|
|
|
|
if (_detail.AskBillNum == itm.Remark && _detail.PoLine == itm.PoLine && _detail.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
_detail.InvoiceQty = itm.InvoiceQty;
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
_detail.OnRoadQty = Convert.ToDecimal(_detail.ShippedQty) - _detail.ArriveQty;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
return p_list;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static List<V_TB_ASK> LOAD_ASK_DETAIL_CAN(List<V_TB_ASK> p_list)
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
|
|
|
|
if (p_list.ToList().Count > 0)
|
|
|
|
{
|
|
|
|
foreach (V_TB_ASK _detail in p_list)
|
|
|
|
{
|
|
|
|
_detail.Month = Convert.ToDateTime(_detail.EndTime).Month.ToString() + "月订单";
|
|
|
|
if (_detail.State == 0 || _detail.State == 1 || _detail.State == 2)
|
|
|
|
{
|
|
|
|
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
if (_detail.State == 6 || _detail.State == -1)
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
var _ask = db.V_TB_ASK_DETAIL.Where(p => p.AskBillNum == _detail.AskBillNum && p.IsDeleted == false).ToList();
|
|
|
|
var _ask_can = Get_CAN_SHIPQTY(_ask.ToList()).Where(p => p.CanQty > 0).ToList();
|
|
|
|
|
|
|
|
if (_ask_can.Count != 0)
|
|
|
|
{
|
|
|
|
_detail.Flag = "1";//未完成
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_detail.Flag = "0";//完成
|
|
|
|
}
|
|
|
|
//_detail.Flag = (_ask_can.Count).ToString()+ "/" +(_ask.Count).ToString();
|
|
|
|
//_detail.Month = _detail.CreateTime.Month.ToString() + "月订单";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return p_list;
|
|
|
|
}
|
|
|
|
public static ResultObject<bool> Save_TB_ASK_DETAIL_DATE(List<V_TB_ASK_DETAIL> p_entitys)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
string askBill = string.Empty;
|
|
|
|
DateTime beginTime = DateTime.Now;
|
|
|
|
DateTime endTime = DateTime.Now;
|
|
|
|
foreach (var itm in p_entitys)
|
|
|
|
{
|
|
|
|
var _entity = db.TB_ASK_DETAIL.Where(p => p.UID == itm.UID).FirstOrDefault();
|
|
|
|
askBill = _entity.AskBillNum;
|
|
|
|
_entity.BeginTime = (DateTime)itm.BeginTime;
|
|
|
|
beginTime = (DateTime)itm.BeginTime;
|
|
|
|
_entity.EndTime = (DateTime)itm.EndTime;
|
|
|
|
endTime = (DateTime)itm.EndTime;
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(p => p.UID, _entity);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(askBill))
|
|
|
|
{
|
|
|
|
var _entity = db.TB_ASK.Where(p => p.AskBillNum == askBill).FirstOrDefault();
|
|
|
|
_entity.BeginTime = beginTime;
|
|
|
|
_entity.EndTime = endTime;
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.UID, _entity);
|
|
|
|
}
|
|
|
|
if (_ret.MessageList.Count > 0)
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
|
|
|
|
}
|
|
|
|
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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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;
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Save_TB_ASK_DETAIL", e.Message);
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.ErrorList.Add(e);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
return _ret;
|
|
|
|
}
|
|
|
|
public static ResultObject<bool> Save_TB_ASK_DETAIL(List<TB_ASK_DETAIL> p_entitys, AskState p_state)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
foreach (var itm in p_entitys)
|
|
|
|
{
|
|
|
|
itm.State = (int)p_state;
|
|
|
|
var _entity = db.TB_ASK_DETAIL.Where(p => p.UID == itm.UID).FirstOrDefault();
|
|
|
|
_entity.AskQty = itm.AskQty;
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(p => p.UID, _entity);
|
|
|
|
}
|
|
|
|
if (_ret.MessageList.Count > 0)
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (db.SaveChanges() != -1)
|
|
|
|
{
|
|
|
|
using (ScpEntities db1 = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
var _ls = p_entitys.Select(p => p.UID).ToList();
|
|
|
|
if (_ls.Count > 0)
|
|
|
|
{
|
|
|
|
var _entityList = db.V_TB_ASK_DETAIL.Where(p => _ls.Contains(p.UID)).ToList();
|
|
|
|
var _item = _entityList.FirstOrDefault();
|
|
|
|
if (_item.AskBillNum.Contains("U"))
|
|
|
|
{
|
|
|
|
var _planList = db1.TB_PO_PLAN_EXTEND.Where(p => p.Domain == _item.Site && p.EndTime == _item.EndTime && p.PoBillNum == _item.PoBillNum).ToList();
|
|
|
|
_planList.ForEach(p =>
|
|
|
|
{
|
|
|
|
var _first = _entityList.Where(itm => itm.PoBillNum == p.PoBillNum && itm.PartCode == p.PartCode && itm.EndTime == p.EndTime).FirstOrDefault();
|
|
|
|
if (_first != null)
|
|
|
|
{
|
|
|
|
p.PlanQty = _first.AskQty;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
db1.SaveChanges();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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;
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Save_TB_ASK_DETAIL", e.Message);
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.ErrorList.Add(e);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
return _ret;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
|
|
///
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="p_entitys"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
public static ResultObject<bool> Save_TB_PO(List<TB_PO> p_entitys)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
foreach (var itm in p_entitys)
|
|
|
|
{
|
|
|
|
db.TB_PO.AddOrUpdate(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_ASK_CONTROLLER), "Save_TB_PO", 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_ASK_CONTROLLER), "Save_TB_PO", 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_ASK_CONTROLLER), "Save_TB_PO", 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_ASK_CONTROLLER), "Save_TB_PO", e.Message);
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.ErrorList.Add(e);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
return _ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void test(string p_askBillNum)
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
var _list = db.V_TB_ASK_DETAIL.Where(p => p.AskBillNum == p_askBillNum && p.IsDeleted == false).ToList();
|
|
|
|
var _lst = Get_CAN_SHIPQTY(_list);
|
|
|
|
if (_lst.Select(p => p.CanQty).Sum() <= 0)
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static ResultObject<bool> COPY_ASK(V_TB_ASK p_ask)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
var _ask = db.TB_ASK.Where(p => p.AskBillNum == p_ask.AskBillNum).FirstOrDefault();
|
|
|
|
_ask = ConvertHelper.GetObjectClone(_ask);
|
|
|
|
_ask.AskBillNum = SCP_BILLCODE_CONTROLLER.MakeASKCode();
|
|
|
|
_ask.GUID = Guid.NewGuid();
|
|
|
|
|
|
|
|
_ask.State = (int)AskState.New;
|
|
|
|
db.TB_ASK.Add(_ask);
|
|
|
|
var _askDetailList = db.TB_ASK_DETAIL.Where(p => p.AskBillNum == p_ask.AskBillNum).ToList();
|
|
|
|
_askDetailList = ConvertHelper.GetObjectClone(_askDetailList);
|
|
|
|
_askDetailList.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.AskBillNum = _ask.AskBillNum;
|
|
|
|
p.State = (int)AskState.New;
|
|
|
|
p.GUID = Guid.NewGuid();
|
|
|
|
db.TB_ASK_DETAIL.Add(p);
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
int state = db.SaveChanges();
|
|
|
|
if (state != -1)
|
|
|
|
{
|
|
|
|
_ret.MessageList.Add("复制要货单号" + _ask.AskBillNum + ",请去要货明细修改要货单订货日期和要货日期");
|
|
|
|
_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_PO_CONTROLLER), "Save_PO_TO_ASK", 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_PO_CONTROLLER), "Save_PO_TO_ASK", 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_PO_CONTROLLER), "Save_PO_TO_ASK", 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_PO_CONTROLLER), "Save_PO_TO_ASK", e.Message);
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.ErrorList.Add(e);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
return _ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static ResultObject<bool> Save_ASK_TO_ASN(V_TB_ASK p_ask, List<V_TB_ASK_DETAIL> p_order_list, string p_PlateNumber
|
|
|
|
, string p_buyer, string p_buyerPhone)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
TB_ASN _t = new TB_ASN();
|
|
|
|
string str1 = "N" + p_ask.VendId;
|
|
|
|
_t.AsnBillNum = SCP_BILLCODE_CONTROLLER.MakeASNCode_BJBQ(str1);
|
|
|
|
_t.AskBillNum = p_ask.AskBillNum;
|
|
|
|
_t.PoBillNum = p_ask.PoBillNum;
|
|
|
|
_t.ReceivedPort = p_ask.ReceivedPort;
|
|
|
|
_t.CreateUser = p_buyer;
|
|
|
|
_t.CreateTime = DateTime.Now;
|
|
|
|
_t.UpdateUser = p_buyer;
|
|
|
|
_t.UpdateTime = _t.CreateTime;
|
|
|
|
_t.ReceiveUser = p_ask.Buyer;
|
|
|
|
_t.ReceiveTime = p_ask.BeginTime;
|
|
|
|
_t.VendId = p_ask.VendId;
|
|
|
|
_t.IsDeleted = false;//操作员
|
|
|
|
_t.CreateTime = DateTime.Now;
|
|
|
|
_t.CreateUser = p_buyer;
|
|
|
|
_t.Site = p_ask.Site;
|
|
|
|
_t.Remark = p_ask.Remark;
|
|
|
|
_t.State = (int)AsnState.New;
|
|
|
|
_t.Remark = p_ask.Remark;
|
|
|
|
_t.GUID = Guid.NewGuid();
|
|
|
|
_t.PlateNumber = p_PlateNumber;
|
|
|
|
_t.ShipUser = p_ask.ShipUser;
|
|
|
|
_t.ShipTime = p_ask.ShipTime;
|
|
|
|
_t.SubSite = p_ask.SubSite;
|
|
|
|
_t.ReceiveTime = p_ask.ReceiveTime;
|
|
|
|
db.TB_ASN.AddOrUpdate(p => p.AsnBillNum, _t);
|
|
|
|
List<TB_ASN_DETAIL> _list = new List<TB_ASN_DETAIL>();
|
|
|
|
|
|
|
|
foreach (var itm in p_order_list)
|
|
|
|
{
|
|
|
|
TB_ASN_DETAIL _tDetail = new TB_ASN_DETAIL();
|
|
|
|
_tDetail.PoBillNum = _t.PoBillNum;
|
|
|
|
_tDetail.AsnBillNum = _t.AsnBillNum;
|
|
|
|
_tDetail.PoLine = itm.PoLine;
|
|
|
|
_tDetail.PoUnit = itm.PoUnit;
|
|
|
|
_tDetail.Batch = itm.Batch;
|
|
|
|
if (!string.IsNullOrEmpty(itm.VendBatch))
|
|
|
|
{
|
|
|
|
_tDetail.VendBatch = itm.VendBatch;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_tDetail.VendBatch = itm.Batch;
|
|
|
|
}
|
|
|
|
_tDetail.PackQty = itm.PackQty == 0 ? 1 : itm.PackQty;
|
|
|
|
_tDetail.PartCode = itm.PartCode;
|
|
|
|
_tDetail.State = (int)AsnState.New;
|
|
|
|
_tDetail.Qty = (decimal)itm.TempQty;
|
|
|
|
_tDetail.Price = itm.Price;
|
|
|
|
_tDetail.EndTime = itm.EndTime;
|
|
|
|
_tDetail.CreateTime = _t.CreateTime;
|
|
|
|
_tDetail.CreateUser = _t.CreateUser;
|
|
|
|
_tDetail.ProduceDate = itm.ProduceDate;
|
|
|
|
_tDetail.IsDeleted = false;
|
|
|
|
_tDetail.DockCode = itm.ReceivedPort;
|
|
|
|
_tDetail.LocUnit = itm.LocUnit;
|
|
|
|
_tDetail.UnConv = itm.UnConv;
|
|
|
|
_tDetail.State = _t.State;
|
|
|
|
_tDetail.Site = p_ask.Site;
|
|
|
|
_tDetail.ReceivedPort = itm.ReceivedPort;
|
|
|
|
_tDetail.SubSite = p_ask.SubSite;
|
|
|
|
_tDetail.Remark = itm.Remark;
|
|
|
|
_tDetail.GUID = Guid.NewGuid();
|
|
|
|
String str = itm.PartCode.Substring(0, 3);
|
|
|
|
if ((str == "EXP" || str == "SPA") && (_t.SubSite == "ZZ01" || _t.SubSite == "CQ01"))
|
|
|
|
{
|
|
|
|
_tDetail.Batch = "000000";
|
|
|
|
}
|
|
|
|
String str2 = itm.PartCode.Substring(0, 5);
|
|
|
|
if (str2 == "SPABJ" && _t.Site == "BJBMPT")
|
|
|
|
{
|
|
|
|
_tDetail.Batch = "000000";
|
|
|
|
}
|
|
|
|
db.TB_ASN_DETAIL.Add(_tDetail);
|
|
|
|
var _order_detail = db.TB_ASK_DETAIL.Where(p => p.UID == itm.UID).FirstOrDefault();
|
|
|
|
_order_detail.ShippedQty = (decimal)itm.ShippedQty;
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(p => p.UID, _order_detail);
|
|
|
|
|
|
|
|
}
|
|
|
|
var list_distinct = p_order_list.DistinctBy(x => new { x.PartCode, x.Site }).ToList();
|
|
|
|
foreach (var _itm in list_distinct)
|
|
|
|
{
|
|
|
|
//新增供应商零件
|
|
|
|
var _lst = db.TA_VEND_PART.Where(p => p.PartCode == _itm.PartCode && p.Site == p_ask.Site && p.VendId == p_ask.VendId).ToList();
|
|
|
|
if (_lst.Count > 0)
|
|
|
|
{
|
|
|
|
foreach (var part in _lst)
|
|
|
|
{
|
|
|
|
part.VendPackQty = _itm.PackQty == 0 ? 1 : _itm.PackQty;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_lst.Add(new TA_VEND_PART()
|
|
|
|
{
|
|
|
|
VendPackQty = _itm.PackQty == 0 ? 1 : _itm.PackQty,
|
|
|
|
PartCode = _itm.PartCode,
|
|
|
|
Site = _itm.Site,
|
|
|
|
VendId = p_ask.VendId
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
db.TA_VEND_PART.AddOrUpdate(_lst.ToArray());
|
|
|
|
}
|
|
|
|
int state = db.SaveChanges();
|
|
|
|
if (state != -1)
|
|
|
|
{
|
|
|
|
var _askDetailList = db.V_TB_ASK_DETAIL.Where(p => p.AskBillNum == p_ask.AskBillNum && p.IsDeleted == false).ToList();//查询要货单明细
|
|
|
|
var _lst = Get_CAN_SHIPQTY(_askDetailList);//算出可发数量
|
|
|
|
if (_lst.Select(p => p.CanQty).Sum() <= 0)//可发数量为零时,修改状态
|
|
|
|
{
|
|
|
|
var _ary = db.TB_ASK.Where(p => p.AskBillNum == p_ask.AskBillNum && p.IsDeleted == false).ToList();
|
|
|
|
_ary.ForEach(p => p.State = (int)AskState.Ship);
|
|
|
|
if (_ary.Count() > 0)
|
|
|
|
{
|
|
|
|
db.TB_ASK.AddOrUpdate(_ary.ToArray());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_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_ASK_CONTROLLER), "Save_ASK_TO_ASN", 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_ASK_CONTROLLER), "Save_ASK_TO_ASN", 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_ASK_CONTROLLER), "Save_ASK_TO_ASN", 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_ASK_CONTROLLER), "Save_ASK_TO_ASN", e.Message);
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.ErrorList.Add(e);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
return _ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 要货看板零件号零件名称模糊查询
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="p_list"></param>
|
|
|
|
/// <param name="PartCode"></param>
|
|
|
|
/// <param name="PartCodeDesc"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
public static List<V_TB_ASK> GET_Likesearch(List<V_TB_ASK> p_list, string PartCode, string PartCodeDesc)
|
|
|
|
{
|
|
|
|
if (string.IsNullOrEmpty(PartCode) && string.IsNullOrEmpty(PartCodeDesc))
|
|
|
|
{
|
|
|
|
return p_list;
|
|
|
|
}
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
var _ls = p_list.Select(p => p.AskBillNum).ToArray();
|
|
|
|
StringBuilder _buffer = new StringBuilder();
|
|
|
|
_buffer.Append(" SELECT Distinct(A.UID),A.* from V_TB_ASK A LEFT JOIN ");
|
|
|
|
_buffer.Append(" dbo.TB_ASK_DETAIL B on A.AskBillNum = B.AskBillNum and A.Site = B.Site LEFT JOIN ");
|
|
|
|
_buffer.Append(" dbo.TA_PART TP on TP.PartCode = B.PartCode and TP.Site = A.Site ");
|
|
|
|
_buffer.Append(" WHERE A.AskBillNum in ({0}) ");
|
|
|
|
|
|
|
|
string _str = string.Format(_buffer.ToString(), $"'{string.Join("','", _ls)}'");
|
|
|
|
if (!string.IsNullOrEmpty(PartCode))
|
|
|
|
{
|
|
|
|
//_buffer.Append(" and B.PartCode LIKE ('%{1}%')");
|
|
|
|
|
|
|
|
_str += " and B.PartCode LIKE '%" + PartCode + "%'";
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(PartCodeDesc))
|
|
|
|
{
|
|
|
|
_str += " and (TP.PartDesc1+ TP.PartDesc2 ) LIKE '%" + PartCodeDesc + "%'";
|
|
|
|
}
|
|
|
|
var _list = db.Database.SqlQuery<V_TB_ASK>(_str).ToList();
|
|
|
|
|
|
|
|
if (_list != null)
|
|
|
|
{
|
|
|
|
var S = _list.OrderBy(A => A.AskBillNum).ToList().Distinct();
|
|
|
|
return _list;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return p_list;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static List<V_TB_ASK> GET_IS_COMPLETED_SEND(List<V_TB_ASK> p_list)
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
var _ls = p_list.Select(p => p.AskBillNum);
|
|
|
|
StringBuilder _buffer = new StringBuilder();
|
|
|
|
_buffer.Append(" select distinct (C.AskBillNum)from V_TB_ASK_DETAIL C");
|
|
|
|
_buffer.Append(" left JOIN ");
|
|
|
|
_buffer.Append(" (select SUM(Qty) as Qty, a.PoLine, a.AskBillNum, a.PartCode from v_tb_asn_detail a where a.IsDeleted=0 ");
|
|
|
|
_buffer.Append(" group by a.PoLine, a.AskBillNum, a.PartCode) AS D ");
|
|
|
|
_buffer.Append(" ON C.AskBillNum = D.AskBillNum AND C.PoLine = D.PoLine AND C.PartCode = D.PartCode ");
|
|
|
|
_buffer.Append(" WHERE C.AskQty>isnull(D.Qty,0)");
|
|
|
|
_buffer.Append(" and c.AskBillNum in ('{0}')");
|
|
|
|
var _str = string.Format(_buffer.ToString(), string.Join("','", _ls.ToArray()));
|
|
|
|
var _list = db.Database.SqlQuery<string>(_str).ToList();
|
|
|
|
|
|
|
|
p_list.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.IsComplete = true;
|
|
|
|
if (_list.Contains(p.AskBillNum))
|
|
|
|
{
|
|
|
|
p.IsComplete = false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
return p_list;
|
|
|
|
}
|
|
|
|
public static List<V_TB_ASK_DETAIL> Get_CAN_SHIPQTY(List<V_TB_ASK_DETAIL> p_list)
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
if (p_list.Count > 0)
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
var detail = p_list[0];
|
|
|
|
var list = db.V_TB_ASN_DETAIL.Where(p => p.IsDeleted == false && detail.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
var list_back = db.TB_ARRIVE_DETAIL.Where(p => p.Remark == detail.AskBillNum && p.IsDeleted == false && p.State == (int)ArriveState.OK && p.Qty < 0 && p.BillType == 3).GroupBy(p => new { p.Remark, p.PoLine, p.PartCode, p.PoBillNum }).Select(p => new { BackSum = p.Sum(itm => itm.Qty), PoLine = p.Key.PoLine, Remark = p.Key.Remark, PartCode = p.Key.PartCode, PoBillNum = p.Key.PoBillNum }).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var groupList = list.GroupBy(p => new { p.PoBillNum, p.PoLine, p.PartCode, p.AskBillNum }).Select(
|
|
|
|
p => new
|
|
|
|
{
|
|
|
|
ShipSum = p.Sum(itm => itm.Qty),
|
|
|
|
PoLine = p.Key.PoLine,
|
|
|
|
PoBillNum = p.Key.PoBillNum,
|
|
|
|
PartCode = p.Key.PartCode,
|
|
|
|
AskBillNum = p.Key.AskBillNum
|
|
|
|
}).ToList();
|
|
|
|
|
|
|
|
p_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
|
|
|
|
groupList.ForEach(p =>
|
|
|
|
{
|
|
|
|
if (p.PoBillNum == itm.PoBillNum && p.PoLine == itm.PoLine && p.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
itm.ShippedQty = p.ShipSum;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
list_back.ForEach(p =>
|
|
|
|
{
|
|
|
|
if (p.PoBillNum == itm.PoBillNum && p.PoLine == itm.PoLine && p.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
itm.RejectQty = Math.Abs(p.BackSum);//寄售退货数
|
|
|
|
}
|
|
|
|
});
|
|
|
|
decimal a = itm.AskQty - (itm.ShippedQty == null ? 0 : (decimal)itm.ShippedQty) + itm.RejectQty - (itm.ReduceQty == null ? 0 : (decimal)itm.ReduceQty);
|
|
|
|
itm.CanQty = a;
|
|
|
|
itm.PackQty = (itm.PackQty == 0) ? 1 : itm.PackQty;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_list.Count > 0)
|
|
|
|
{
|
|
|
|
return p_list;
|
|
|
|
}
|
|
|
|
return new List<V_TB_ASK_DETAIL>();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void Get_V_TB_ASK_DETAIL_List(V_TB_ASK_DETAIL p_entity, Action<ResultObject<IQueryable<V_TB_ASK_DETAIL>>> p_action)
|
|
|
|
{
|
|
|
|
|
|
|
|
ResultObject<IQueryable<V_TB_ASK_DETAIL>> _ret = new ResultObject<IQueryable<V_TB_ASK_DETAIL>>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
IQueryable<V_TB_ASK_DETAIL> q = db.V_TB_ASK_DETAIL;
|
|
|
|
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.PoLine != 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PoLine == p_entity.PoLine);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.PartCode))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PartCode.Contains(p_entity.PartCode));
|
|
|
|
}
|
|
|
|
if (p_entity.ShippedQty != null && p_entity.ShippedQty != 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.ShippedQty == p_entity.ShippedQty);
|
|
|
|
}
|
|
|
|
if (p_entity.ReceivedQty != 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.ReceivedQty == p_entity.ReceivedQty);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.PoUnit))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PoUnit.Contains(p_entity.PoUnit));
|
|
|
|
}
|
|
|
|
|
|
|
|
if (p_entity.EndTime != null)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p_entity.EndTime < p.EndTime);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.LocUnit))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.LocUnit.Contains(p_entity.LocUnit));
|
|
|
|
}
|
|
|
|
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 != 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PackQty == p_entity.PackQty);
|
|
|
|
}
|
|
|
|
if (p_entity.UnConv != 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.UnConv == p_entity.UnConv);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.DockCode))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.DockCode.Contains(p_entity.DockCode));
|
|
|
|
}
|
|
|
|
if (p_entity.State != 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.State == p_entity.State);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.CreateUser))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser));
|
|
|
|
}
|
|
|
|
|
|
|
|
q = q.Where(p => p.IsDeleted == p_entity.IsDeleted);
|
|
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.Site))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.Site.Contains(p_entity.Site));
|
|
|
|
}
|
|
|
|
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 == p_entity.VendId);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.AskBillNum))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.AskBillNum.Contains(p_entity.AskBillNum));
|
|
|
|
}
|
|
|
|
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.PartDesc1))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PartDesc1.Contains(p_entity.PartDesc1));
|
|
|
|
}
|
|
|
|
|
|
|
|
_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_ASK_CONTROLLER), "Get_V_TB_ASK_DETAIL_List", sb.ToString());
|
|
|
|
if (dbEx.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_TB_PRICE_CONTROLLER), "Get_V_TB_ASK_DETAIL_List(DbEntityValidationException)", LogHelper.GetExceptionMessage(dbEx).Message);
|
|
|
|
|
|
|
|
throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString());
|
|
|
|
}
|
|
|
|
catch (OptimisticConcurrencyException ex)//并发冲突异常
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.ErrorList.Add(ex);
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_DETAIL_List", ex.ToString());
|
|
|
|
|
|
|
|
if (ex.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_DETAIL_List(OptimisticConcurrencyException)", LogHelper.GetExceptionMessage(ex).Message);
|
|
|
|
|
|
|
|
throw new ScpException(ResultCode.Exception, "9999", ex.ToString());
|
|
|
|
}
|
|
|
|
catch (ScpException ex)
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.ErrorList.Add(ex);
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_DETAIL_List", ex.ToString());
|
|
|
|
if (ex.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_DETAIL_List(ScpException)", LogHelper.GetExceptionMessage(ex).Message);
|
|
|
|
|
|
|
|
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_ASK_CONTROLLER), "Get_V_TB_ASK_DETAIL_List", e.Message);
|
|
|
|
if (e.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_DETAIL_List(Exception)", LogHelper.GetExceptionMessage(e).Message);
|
|
|
|
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void Get_V_TB_ASK_DETAIL_Sum(V_TB_ASK_DETAIL p_entity, Action<ResultObject<IQueryable<V_TB_ASK_DETAIL>>> p_action)
|
|
|
|
{
|
|
|
|
|
|
|
|
ResultObject<IQueryable<V_TB_ASK_DETAIL>> _ret = new ResultObject<IQueryable<V_TB_ASK_DETAIL>>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
IQueryable<V_TB_ASK_DETAIL> q = db.V_TB_ASK_DETAIL;
|
|
|
|
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.PoLine != 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PoLine == p_entity.PoLine);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.PartCode))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PartCode.Contains(p_entity.PartCode));
|
|
|
|
}
|
|
|
|
if (p_entity.ShippedQty != null && p_entity.ShippedQty != 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.ShippedQty == p_entity.ShippedQty);
|
|
|
|
}
|
|
|
|
if (p_entity.ReceivedQty != 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.ReceivedQty == p_entity.ReceivedQty);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.PoUnit))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PoUnit.Contains(p_entity.PoUnit));
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.LocUnit))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.LocUnit.Contains(p_entity.LocUnit));
|
|
|
|
}
|
|
|
|
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 != 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.PackQty == p_entity.PackQty);
|
|
|
|
}
|
|
|
|
if (p_entity.UnConv != 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.UnConv == p_entity.UnConv);
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.DockCode))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.DockCode.Contains(p_entity.DockCode));
|
|
|
|
}
|
|
|
|
if (p_entity.State != 0)
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.State == p_entity.State);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.CreateUser))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser));
|
|
|
|
}
|
|
|
|
|
|
|
|
q = q.Where(p => p.IsDeleted == p_entity.IsDeleted);
|
|
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.Site))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.Site.Contains(p_entity.Site));
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.VendName))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.VendName.Contains(p_entity.VendName));
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(p_entity.AskBillNum))
|
|
|
|
{
|
|
|
|
q = q.Where(p => p.AskBillNum.Contains(p_entity.AskBillNum));
|
|
|
|
}
|
|
|
|
_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_ASK_CONTROLLER), "Get_V_TB_ASK_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_ASK_CONTROLLER), "Get_V_TB_ASK_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_ASK_CONTROLLER), "Get_V_TB_ASK_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_ASK_CONTROLLER), "Get_V_TB_ASK_DETAIL_List", e.Message);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static ResultObject<bool> Save_TB_ASK_STATE_BJBQ(List<string> p_list, AskState p_state, List<string> p_list1)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
if (p_state == AskState.Confirm)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum) && p_list1.Contains(p.Site)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.Release);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Confirm;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum && itm.Site == p.Site).ToList();
|
|
|
|
_list.ForEach(itm => itm.State = (int)AskState.Confirm);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
#region 供应商确认要货状态完成
|
|
|
|
//var _pendingList = db.TB_PENING_ITEMS.Where(itm => itm.ITEM_NO == p.AskBillNum).ToList();
|
|
|
|
//_pendingList.ForEach(itm => {
|
|
|
|
// itm.ITEM_STATE = (int)PENDING_STATE.COMPLETED;
|
|
|
|
// itm.ITEM_CONTENT = "要货看板已完成!";
|
|
|
|
//}
|
|
|
|
//);
|
|
|
|
//db.TB_PENING_ITEMS.AddOrUpdate(itm => itm.GUID, _pendingList.ToArray());
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.UID, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是发布状态记录!";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p_state == AskState.New)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.Release);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.New;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm => itm.State = (int)AskState.New);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
// #region 供应商要货代办取消
|
|
|
|
// var _pendingList = db.TB_PENING_ITEMS.Where(itm => itm.ITEM_NO == p.AskBillNum).ToList();
|
|
|
|
//if (_pendingList.Count > 0)
|
|
|
|
//{
|
|
|
|
// db.TB_PENING_ITEMS.RemoveRange(_pendingList);
|
|
|
|
//}
|
|
|
|
// #endregion
|
|
|
|
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是发布状态记录!";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p_state == AskState.Release)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.New);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Release;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Release;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
#region 供应商代办任务新
|
|
|
|
TB_PENING_ITEMS _item = new TB_PENING_ITEMS();
|
|
|
|
_item.ROLE_NAME = "供应商";
|
|
|
|
_item.ITEM_NO = p.AskBillNum;
|
|
|
|
_item.ITEM_CONTENT = "要货看盘有信息";
|
|
|
|
_item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.NEW_ASK;
|
|
|
|
_item.ITEM_STATE = (int)PENDING_STATE.WAITING;
|
|
|
|
_item.SENDER = p.CreateUser;
|
|
|
|
_item.VEND_ID = p.VendId;
|
|
|
|
_item.SENDING_TIME = DateTime.Now;
|
|
|
|
_item.ITEM_ADDRESS = p.Site;
|
|
|
|
_item.GUID = Guid.NewGuid();
|
|
|
|
db.TB_PENING_ITEMS.Add(_item);
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是发布状态记录!";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p_state == AskState.Reject)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.New || p.State == (int)AskState.Release);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Reject;
|
|
|
|
p.IsDeleted = true;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Reject;
|
|
|
|
itm.IsDeleted = true;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
//#region 供应商要货代办作废
|
|
|
|
//var _pendingList = db.TB_PENING_ITEMS.Where(itm => itm.ITEM_NO == p.AskBillNum).ToList();
|
|
|
|
//db.TB_PENING_ITEMS.RemoveRange(_pendingList);
|
|
|
|
//#endregion
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是发布状态记录!";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_state == AskState.CompleteForce)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum) && p.IsDeleted == false).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.Confirm || p.State == (int)AskState.Ship);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
if (p.State == (int)AskState.Complete)
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Reject;
|
|
|
|
p.IsDeleted = true;
|
|
|
|
}
|
|
|
|
// p.State = (int)AskState.CompleteForce;
|
|
|
|
#region 修改发货单
|
|
|
|
var _asnList = db.TB_ASN.Where(itm => itm.IsDeleted == false && itm.AskBillNum == p.AskBillNum && itm.State == 0).ToList();
|
|
|
|
_asnList.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AsnState.Reject;
|
|
|
|
itm.IsDeleted = true;
|
|
|
|
var _asnDetailList = db.TB_ASN_DETAIL.Where(asn => asn.IsDeleted == false && asn.AsnBillNum == itm.AsnBillNum).ToList();
|
|
|
|
_asnDetailList.ForEach(ad =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AsnState.Reject;
|
|
|
|
ad.IsDeleted = true;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASN_DETAIL.AddOrUpdate(asndetail => asndetail.UID, _asnDetailList.ToArray());
|
|
|
|
});
|
|
|
|
db.TB_ASN.AddOrUpdate(_asnList.ToArray());
|
|
|
|
#endregion
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum && itm.IsDeleted == false).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.AskQty = 0;
|
|
|
|
var asn = db.V_TB_ASN_DETAIL.Where(ask => ask.AskBillNum == itm.AskBillNum && ask.IsDeleted == false && (ask.State == (int)AsnState.Ship || ask.State == (int)AsnState.Receive))
|
|
|
|
.GroupBy(ask => new { ask.AskBillNum, ask.PoLine, ask.PartCode })
|
|
|
|
.Select(ask => new { AsSum = ask.Sum(itm1 => itm1.Qty), PoLine = ask.Key.PoLine, AskBillNum = ask.Key.AskBillNum, PartCode = ask.Key.PartCode }).ToList();
|
|
|
|
|
|
|
|
asn.ForEach(itm1 =>
|
|
|
|
{
|
|
|
|
if (itm1.AskBillNum == itm.AskBillNum && itm1.PoLine == itm.PoLine && itm1.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
itm.AskQty = itm1.AsSum;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
//itm.State = (int)AskState.CompleteForce;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是【已确认】或【已发货】状态,【发布状态】请用取消发布或看板作废!";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_state == AskState.Receive)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.New || p.State == (int)AskState.Release);
|
|
|
|
if (count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Receive;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Receive;
|
|
|
|
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是新建或发布状态记录!";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_state == AskState.NoConfirm)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASN.Where(p => p_list.Contains(p.AskBillNum) && p.IsDeleted == false).ToList();
|
|
|
|
if (_ls.Count == 0)
|
|
|
|
{
|
|
|
|
var _askList = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum) && p.IsDeleted == false).ToList();
|
|
|
|
_askList.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Release;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Release;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _askList.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录已经有发货单据不能取消!";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//if (count > 0)
|
|
|
|
//{
|
|
|
|
// _ls.ForEach(p =>
|
|
|
|
// {
|
|
|
|
// p.State = (int)AskState.Receive;
|
|
|
|
// var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
// _list.ForEach(itm =>
|
|
|
|
// {
|
|
|
|
// itm.State = (int)AskState.Receive;
|
|
|
|
|
|
|
|
// }
|
|
|
|
// );
|
|
|
|
// db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
// }
|
|
|
|
// );
|
|
|
|
// db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
//}
|
|
|
|
//else
|
|
|
|
//{
|
|
|
|
// _ret.State = ReturnStatus.Failed;
|
|
|
|
// _ret.Result = false;
|
|
|
|
// _ret.Message = "选择的记录,有不是新建或发布状态记录!";
|
|
|
|
//}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(_ret.Message))
|
|
|
|
{
|
|
|
|
if (db.SaveChanges() != -1)
|
|
|
|
{
|
|
|
|
|
|
|
|
if (p_state == AskState.CompleteForce)
|
|
|
|
{
|
|
|
|
|
|
|
|
using (ScpEntities db1 = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
if (p_list.Count > 0)
|
|
|
|
{
|
|
|
|
var _entityList = db.V_TB_ASK_DETAIL.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
|
|
|
|
var _item = _entityList.FirstOrDefault();
|
|
|
|
|
|
|
|
if (_item.AskBillNum.Contains("U"))
|
|
|
|
{
|
|
|
|
var _planList = db1.TB_PO_PLAN_EXTEND.Where(p => p.Domain == _item.Site && p.EndTime == _item.EndTime && p.PoBillNum == _item.PoBillNum).ToList();
|
|
|
|
_planList.ForEach(p =>
|
|
|
|
{
|
|
|
|
|
|
|
|
var _first = _entityList.Where(itm => itm.PoBillNum == p.PoBillNum && itm.PartCode == p.PartCode && itm.EndTime == p.EndTime).FirstOrDefault();
|
|
|
|
if (_first != null)
|
|
|
|
{
|
|
|
|
p.PlanQty = _first.AskQty;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
db1.SaveChanges();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_STATE", e.Message);
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.ErrorList.Add(e);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
return _ret;
|
|
|
|
}
|
|
|
|
public static ResultObject<bool> Save_TB_ASK_STATE(List<string> p_list, AskState p_state)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
if (p_state == AskState.Confirm)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.Release);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Confirm;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm => itm.State = (int)AskState.Confirm);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
#region 供应商确认要货状态完成
|
|
|
|
//var _pendingList = db.TB_PENING_ITEMS.Where(itm => itm.ITEM_NO == p.AskBillNum).ToList();
|
|
|
|
//_pendingList.ForEach(itm => {
|
|
|
|
// itm.ITEM_STATE = (int)PENDING_STATE.COMPLETED;
|
|
|
|
// itm.ITEM_CONTENT = "要货看板已完成!";
|
|
|
|
//}
|
|
|
|
//);
|
|
|
|
//db.TB_PENING_ITEMS.AddOrUpdate(itm => itm.GUID, _pendingList.ToArray());
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是发布状态记录!";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p_state == AskState.New)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.Release);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.New;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm => itm.State = (int)AskState.New);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
// #region 供应商要货代办取消
|
|
|
|
// var _pendingList = db.TB_PENING_ITEMS.Where(itm => itm.ITEM_NO == p.AskBillNum).ToList();
|
|
|
|
//if (_pendingList.Count > 0)
|
|
|
|
//{
|
|
|
|
// db.TB_PENING_ITEMS.RemoveRange(_pendingList);
|
|
|
|
//}
|
|
|
|
// #endregion
|
|
|
|
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是发布状态记录!";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p_state == AskState.Release)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.New);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Release;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Release;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
#region 供应商代办任务新
|
|
|
|
TB_PENING_ITEMS _item = new TB_PENING_ITEMS();
|
|
|
|
_item.ROLE_NAME = "供应商";
|
|
|
|
_item.ITEM_NO = p.AskBillNum;
|
|
|
|
_item.ITEM_CONTENT = "要货看盘有信息";
|
|
|
|
_item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.NEW_ASK;
|
|
|
|
_item.ITEM_STATE = (int)PENDING_STATE.WAITING;
|
|
|
|
_item.SENDER = p.CreateUser;
|
|
|
|
_item.VEND_ID = p.VendId;
|
|
|
|
_item.SENDING_TIME = DateTime.Now;
|
|
|
|
_item.ITEM_ADDRESS = p.Site;
|
|
|
|
_item.GUID = Guid.NewGuid();
|
|
|
|
db.TB_PENING_ITEMS.Add(_item);
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是新建状态记录!";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p_state == AskState.Reject)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.New || p.State == (int)AskState.Release);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Reject;
|
|
|
|
p.IsDeleted = true;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Reject;
|
|
|
|
itm.IsDeleted = true;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
//#region 供应商要货代办作废
|
|
|
|
//var _pendingList = db.TB_PENING_ITEMS.Where(itm => itm.ITEM_NO == p.AskBillNum).ToList();
|
|
|
|
//db.TB_PENING_ITEMS.RemoveRange(_pendingList);
|
|
|
|
//#endregion
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是新建或发布状态记录!";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_state == AskState.CompleteForce)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum) && p.IsDeleted == false).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.Confirm || p.State == (int)AskState.Ship);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
if (p.State == (int)AskState.Complete)
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Reject;
|
|
|
|
p.IsDeleted = true;
|
|
|
|
}
|
|
|
|
// p.State = (int)AskState.CompleteForce;
|
|
|
|
#region 修改发货单
|
|
|
|
var _asnList = db.TB_ASN.Where(itm => itm.IsDeleted == false && itm.AskBillNum == p.AskBillNum && itm.State == 0).ToList();
|
|
|
|
_asnList.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AsnState.Reject;
|
|
|
|
itm.IsDeleted = true;
|
|
|
|
var _asnDetailList = db.TB_ASN_DETAIL.Where(asn => asn.IsDeleted == false && asn.AsnBillNum == itm.AsnBillNum).ToList();
|
|
|
|
_asnDetailList.ForEach(ad =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AsnState.Reject;
|
|
|
|
ad.IsDeleted = true;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASN_DETAIL.AddOrUpdate(asndetail => asndetail.UID, _asnDetailList.ToArray());
|
|
|
|
});
|
|
|
|
db.TB_ASN.AddOrUpdate(_asnList.ToArray());
|
|
|
|
#endregion
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum && itm.IsDeleted == false).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.AskQty = 0;
|
|
|
|
var asn = db.V_TB_ASN_DETAIL.Where(ask => ask.AskBillNum == itm.AskBillNum && ask.IsDeleted == false && (ask.State == (int)AsnState.Ship || ask.State == (int)AsnState.Receive))
|
|
|
|
.GroupBy(ask => new { ask.AskBillNum, ask.PoLine, ask.PartCode })
|
|
|
|
.Select(ask => new { AsSum = ask.Sum(itm1 => itm1.Qty), PoLine = ask.Key.PoLine, AskBillNum = ask.Key.AskBillNum, PartCode = ask.Key.PartCode }).ToList();
|
|
|
|
|
|
|
|
asn.ForEach(itm1 =>
|
|
|
|
{
|
|
|
|
if (itm1.AskBillNum == itm.AskBillNum && itm1.PoLine == itm.PoLine && itm1.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
itm.AskQty = itm1.AsSum;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
//itm.State = (int)AskState.CompleteForce;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是【已确认】或【已发货】状态,【发布状态】请用取消发布或看板作废!";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_state == AskState.Receive)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.New || p.State == (int)AskState.Release);
|
|
|
|
if (count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Receive;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Receive;
|
|
|
|
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是新建或发布状态记录!";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_state == AskState.NoConfirm)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASN.Where(p => p_list.Contains(p.AskBillNum) && p.IsDeleted == false).ToList();
|
|
|
|
if (_ls.Count == 0)
|
|
|
|
{
|
|
|
|
var _askList = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum) && p.IsDeleted == false).ToList();
|
|
|
|
_askList.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Release;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Release;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _askList.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录已经有发货单据不能取消!";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//if (count > 0)
|
|
|
|
//{
|
|
|
|
// _ls.ForEach(p =>
|
|
|
|
// {
|
|
|
|
// p.State = (int)AskState.Receive;
|
|
|
|
// var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
// _list.ForEach(itm =>
|
|
|
|
// {
|
|
|
|
// itm.State = (int)AskState.Receive;
|
|
|
|
|
|
|
|
// }
|
|
|
|
// );
|
|
|
|
// db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
// }
|
|
|
|
// );
|
|
|
|
// db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
//}
|
|
|
|
//else
|
|
|
|
//{
|
|
|
|
// _ret.State = ReturnStatus.Failed;
|
|
|
|
// _ret.Result = false;
|
|
|
|
// _ret.Message = "选择的记录,有不是新建或发布状态记录!";
|
|
|
|
//}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(_ret.Message))
|
|
|
|
{
|
|
|
|
if (db.SaveChanges() != -1)
|
|
|
|
{
|
|
|
|
|
|
|
|
if (p_state == AskState.CompleteForce)
|
|
|
|
{
|
|
|
|
|
|
|
|
using (ScpEntities db1 = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
if (p_list.Count > 0)
|
|
|
|
{
|
|
|
|
var _entityList = db.V_TB_ASK_DETAIL.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
|
|
|
|
var _item = _entityList.FirstOrDefault();
|
|
|
|
|
|
|
|
if (_item.AskBillNum.Contains("U"))
|
|
|
|
{
|
|
|
|
var _planList = db1.TB_PO_PLAN_EXTEND.Where(p => p.Domain == _item.Site && p.EndTime == _item.EndTime && p.PoBillNum == _item.PoBillNum).ToList();
|
|
|
|
_planList.ForEach(p =>
|
|
|
|
{
|
|
|
|
|
|
|
|
var _first = _entityList.Where(itm => itm.PoBillNum == p.PoBillNum && itm.PartCode == p.PartCode && itm.EndTime == p.EndTime).FirstOrDefault();
|
|
|
|
if (_first != null)
|
|
|
|
{
|
|
|
|
p.PlanQty = _first.AskQty;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
db1.SaveChanges();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_STATE", e.Message);
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.ErrorList.Add(e);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
return _ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static ResultObject<bool> Save_TB_ASK_STATE_BMPT(List<string> p_list, AskState p_state, string site)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
if (p_state == AskState.Confirm)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.Release);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Confirm;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm => itm.State = (int)AskState.Confirm);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
#region 供应商确认要货状态完成
|
|
|
|
//var _pendingList = db.TB_PENING_ITEMS.Where(itm => itm.ITEM_NO == p.AskBillNum).ToList();
|
|
|
|
//_pendingList.ForEach(itm => {
|
|
|
|
// itm.ITEM_STATE = (int)PENDING_STATE.COMPLETED;
|
|
|
|
// itm.ITEM_CONTENT = "要货看板已完成!";
|
|
|
|
//}
|
|
|
|
//);
|
|
|
|
//db.TB_PENING_ITEMS.AddOrUpdate(itm => itm.GUID, _pendingList.ToArray());
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是发布状态记录!";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p_state == AskState.New)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.Release);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.New;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm => itm.State = (int)AskState.New);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
// #region 供应商要货代办取消
|
|
|
|
// var _pendingList = db.TB_PENING_ITEMS.Where(itm => itm.ITEM_NO == p.AskBillNum).ToList();
|
|
|
|
//if (_pendingList.Count > 0)
|
|
|
|
//{
|
|
|
|
// db.TB_PENING_ITEMS.RemoveRange(_pendingList);
|
|
|
|
//}
|
|
|
|
// #endregion
|
|
|
|
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是发布状态记录!";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p_state == AskState.Release)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.New);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Release;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Release;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
#region 供应商代办任务新
|
|
|
|
TB_PENING_ITEMS _item = new TB_PENING_ITEMS();
|
|
|
|
_item.ROLE_NAME = "供应商";
|
|
|
|
_item.ITEM_NO = p.AskBillNum;
|
|
|
|
_item.ITEM_CONTENT = "要货看盘有信息";
|
|
|
|
_item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.NEW_ASK;
|
|
|
|
_item.ITEM_STATE = (int)PENDING_STATE.WAITING;
|
|
|
|
_item.SENDER = p.CreateUser;
|
|
|
|
_item.VEND_ID = p.VendId;
|
|
|
|
_item.SENDING_TIME = DateTime.Now;
|
|
|
|
_item.ITEM_ADDRESS = p.Site;
|
|
|
|
_item.GUID = Guid.NewGuid();
|
|
|
|
db.TB_PENING_ITEMS.Add(_item);
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是新建状态记录!";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p_state == AskState.Reject)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.New || p.State == (int)AskState.Release);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Reject;
|
|
|
|
p.IsDeleted = true;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Reject;
|
|
|
|
itm.IsDeleted = true;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
//#region 供应商要货代办作废
|
|
|
|
//var _pendingList = db.TB_PENING_ITEMS.Where(itm => itm.ITEM_NO == p.AskBillNum).ToList();
|
|
|
|
//db.TB_PENING_ITEMS.RemoveRange(_pendingList);
|
|
|
|
//#endregion
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是新建或发布状态记录!";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_state == AskState.CompleteForce)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum) && p.IsDeleted == false && p.Site == site).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.Confirm || p.State == (int)AskState.Ship);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
if (p.State == (int)AskState.Complete)
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Reject;
|
|
|
|
p.IsDeleted = true;
|
|
|
|
}
|
|
|
|
// p.State = (int)AskState.CompleteForce;
|
|
|
|
#region 修改发货单
|
|
|
|
var _asnList = db.TB_ASN.Where(itm => itm.IsDeleted == false && itm.AskBillNum == p.AskBillNum && itm.State == 0 && p.Site == site).ToList();
|
|
|
|
_asnList.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AsnState.Reject;
|
|
|
|
itm.IsDeleted = true;
|
|
|
|
var _asnDetailList = db.TB_ASN_DETAIL.Where(asn => asn.IsDeleted == false && asn.AsnBillNum == itm.AsnBillNum && asn.Site == site).ToList();
|
|
|
|
_asnDetailList.ForEach(ad =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AsnState.Reject;
|
|
|
|
ad.IsDeleted = true;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASN_DETAIL.AddOrUpdate(asndetail => asndetail.UID, _asnDetailList.ToArray());
|
|
|
|
});
|
|
|
|
db.TB_ASN.AddOrUpdate(_asnList.ToArray());
|
|
|
|
#endregion
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum && itm.IsDeleted == false && itm.Site == site).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.AskQty = 0;
|
|
|
|
var asn = db.V_TB_ASN_DETAIL.Where(ask => ask.AskBillNum == itm.AskBillNum && ask.IsDeleted == false && ask.Site == site && (ask.State == (int)AsnState.Ship || ask.State == (int)AsnState.Receive))
|
|
|
|
.GroupBy(ask => new { ask.AskBillNum, ask.PoLine, ask.PartCode, ask.Site })
|
|
|
|
.Select(ask => new { AsSum = ask.Sum(itm1 => itm1.Qty), PoLine = ask.Key.PoLine, AskBillNum = ask.Key.AskBillNum, PartCode = ask.Key.PartCode, Site = ask.Key.Site }).ToList();
|
|
|
|
|
|
|
|
asn.ForEach(itm1 =>
|
|
|
|
{
|
|
|
|
if (itm1.AskBillNum == itm.AskBillNum && itm1.PoLine == itm.PoLine && itm1.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
itm.AskQty = itm1.AsSum;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
//itm.State = (int)AskState.CompleteForce;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.UID, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是【已确认】或【已发货】状态,【发布状态】请用取消发布或看板作废!";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_state == AskState.Receive)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.New || p.State == (int)AskState.Release);
|
|
|
|
if (count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Receive;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Receive;
|
|
|
|
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是新建或发布状态记录!";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_state == AskState.NoConfirm)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASN.Where(p => p_list.Contains(p.AskBillNum) && p.IsDeleted == false).ToList();
|
|
|
|
if (_ls.Count == 0)
|
|
|
|
{
|
|
|
|
var _askList = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum) && p.IsDeleted == false).ToList();
|
|
|
|
_askList.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Release;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Release;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _askList.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录已经有发货单据不能取消!";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//if (count > 0)
|
|
|
|
//{
|
|
|
|
// _ls.ForEach(p =>
|
|
|
|
// {
|
|
|
|
// p.State = (int)AskState.Receive;
|
|
|
|
// var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
// _list.ForEach(itm =>
|
|
|
|
// {
|
|
|
|
// itm.State = (int)AskState.Receive;
|
|
|
|
|
|
|
|
// }
|
|
|
|
// );
|
|
|
|
// db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
// }
|
|
|
|
// );
|
|
|
|
// db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
//}
|
|
|
|
//else
|
|
|
|
//{
|
|
|
|
// _ret.State = ReturnStatus.Failed;
|
|
|
|
// _ret.Result = false;
|
|
|
|
// _ret.Message = "选择的记录,有不是新建或发布状态记录!";
|
|
|
|
//}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(_ret.Message))
|
|
|
|
{
|
|
|
|
if (db.SaveChanges() != -1)
|
|
|
|
{
|
|
|
|
|
|
|
|
if (p_state == AskState.CompleteForce)
|
|
|
|
{
|
|
|
|
|
|
|
|
using (ScpEntities db1 = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
if (p_list.Count > 0)
|
|
|
|
{
|
|
|
|
var _entityList = db.V_TB_ASK_DETAIL.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
|
|
|
|
var _item = _entityList.FirstOrDefault();
|
|
|
|
|
|
|
|
if (_item.AskBillNum.Contains("U"))
|
|
|
|
{
|
|
|
|
var _planList = db1.TB_PO_PLAN_EXTEND.Where(p => p.Domain == _item.Site && p.EndTime == _item.EndTime && p.PoBillNum == _item.PoBillNum).ToList();
|
|
|
|
_planList.ForEach(p =>
|
|
|
|
{
|
|
|
|
|
|
|
|
var _first = _entityList.Where(itm => itm.PoBillNum == p.PoBillNum && itm.PartCode == p.PartCode && itm.EndTime == p.EndTime).FirstOrDefault();
|
|
|
|
if (_first != null)
|
|
|
|
{
|
|
|
|
p.PlanQty = _first.AskQty;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
db1.SaveChanges();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_STATE", e.Message);
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.ErrorList.Add(e);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
return _ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static ResultObject<bool> Save_TB_ASK_STATE_BJBBMPT(List<string> p_list, AskState p_state, User p_user)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
if (p_state == AskState.Confirm)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.Release);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.UpdateUser = p_user.ChineseName;
|
|
|
|
p.UpdateTime = DateTime.Now;
|
|
|
|
|
|
|
|
p.State = (int)AskState.Confirm;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm => itm.State = (int)AskState.Confirm);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
#region 供应商确认要货状态完成
|
|
|
|
//var _pendingList = db.TB_PENING_ITEMS.Where(itm => itm.ITEM_NO == p.AskBillNum).ToList();
|
|
|
|
//_pendingList.ForEach(itm => {
|
|
|
|
// itm.ITEM_STATE = (int)PENDING_STATE.COMPLETED;
|
|
|
|
// itm.ITEM_CONTENT = "要货看板已完成!";
|
|
|
|
//}
|
|
|
|
//);
|
|
|
|
//db.TB_PENING_ITEMS.AddOrUpdate(itm => itm.GUID, _pendingList.ToArray());
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是发布状态记录!";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p_state == AskState.New)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.Release);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.UpdateUser = p_user.ChineseName;
|
|
|
|
p.UpdateTime = DateTime.Now;
|
|
|
|
p.State = (int)AskState.New;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm => itm.State = (int)AskState.New);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
// #region 供应商要货代办取消
|
|
|
|
// var _pendingList = db.TB_PENING_ITEMS.Where(itm => itm.ITEM_NO == p.AskBillNum).ToList();
|
|
|
|
//if (_pendingList.Count > 0)
|
|
|
|
//{
|
|
|
|
// db.TB_PENING_ITEMS.RemoveRange(_pendingList);
|
|
|
|
//}
|
|
|
|
// #endregion
|
|
|
|
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是发布状态记录!";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p_state == AskState.Release)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum) && p.State == (int)AskState.New).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.New);
|
|
|
|
if (count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.UpdateUser = p_user.ChineseName;
|
|
|
|
p.UpdateTime = DateTime.Now;
|
|
|
|
p.State = (int)AskState.Release;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Release;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
#region 供应商代办任务新
|
|
|
|
TB_PENING_ITEMS _item = new TB_PENING_ITEMS();
|
|
|
|
_item.ROLE_NAME = "供应商";
|
|
|
|
_item.ITEM_NO = p.AskBillNum;
|
|
|
|
_item.ITEM_CONTENT = "要货看盘有信息";
|
|
|
|
_item.ITEM_TYPE = (int)PENDING_MESSAGE_TYPE.NEW_ASK;
|
|
|
|
_item.ITEM_STATE = (int)PENDING_STATE.WAITING;
|
|
|
|
_item.SENDER = p.CreateUser;
|
|
|
|
_item.VEND_ID = p.VendId;
|
|
|
|
_item.SENDING_TIME = DateTime.Now;
|
|
|
|
_item.ITEM_ADDRESS = p.Site;
|
|
|
|
_item.GUID = Guid.NewGuid();
|
|
|
|
db.TB_PENING_ITEMS.Add(_item);
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,都不是新建状态记录!";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (p_state == AskState.Reject)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.New || p.State == (int)AskState.Release);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Reject;
|
|
|
|
p.IsDeleted = true;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Reject;
|
|
|
|
itm.IsDeleted = true;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
//#region 供应商要货代办作废
|
|
|
|
//var _pendingList = db.TB_PENING_ITEMS.Where(itm => itm.ITEM_NO == p.AskBillNum).ToList();
|
|
|
|
//db.TB_PENING_ITEMS.RemoveRange(_pendingList);
|
|
|
|
//#endregion
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是新建或发布状态记录!";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_state == AskState.CompleteForce)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum) && p.IsDeleted == false).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.Confirm || p.State == (int)AskState.Ship);
|
|
|
|
if (count == _ls.Count && _ls.Count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
if (p.State == (int)AskState.Complete)
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Reject;
|
|
|
|
p.IsDeleted = true;
|
|
|
|
}
|
|
|
|
// p.State = (int)AskState.CompleteForce;
|
|
|
|
#region 修改发货单
|
|
|
|
var _asnList = db.TB_ASN.Where(itm => itm.IsDeleted == false && itm.AskBillNum == p.AskBillNum && itm.State == 0).ToList();
|
|
|
|
_asnList.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AsnState.Reject;
|
|
|
|
itm.IsDeleted = true;
|
|
|
|
var _asnDetailList = db.TB_ASN_DETAIL.Where(asn => asn.IsDeleted == false && asn.AsnBillNum == itm.AsnBillNum).ToList();
|
|
|
|
_asnDetailList.ForEach(ad =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AsnState.Reject;
|
|
|
|
ad.IsDeleted = true;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASN_DETAIL.AddOrUpdate(asndetail => asndetail.UID, _asnDetailList.ToArray());
|
|
|
|
});
|
|
|
|
db.TB_ASN.AddOrUpdate(_asnList.ToArray());
|
|
|
|
#endregion
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum && itm.IsDeleted == false).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.AskQty = 0;
|
|
|
|
var asn = db.V_TB_ASN_DETAIL.Where(ask => ask.AskBillNum == itm.AskBillNum && ask.IsDeleted == false && (ask.State == (int)AsnState.Ship || ask.State == (int)AsnState.Receive))
|
|
|
|
.GroupBy(ask => new { ask.AskBillNum, ask.PoLine, ask.PartCode })
|
|
|
|
.Select(ask => new { AsSum = ask.Sum(itm1 => itm1.Qty), PoLine = ask.Key.PoLine, AskBillNum = ask.Key.AskBillNum, PartCode = ask.Key.PartCode }).ToList();
|
|
|
|
|
|
|
|
asn.ForEach(itm1 =>
|
|
|
|
{
|
|
|
|
if (itm1.AskBillNum == itm.AskBillNum && itm1.PoLine == itm.PoLine && itm1.PartCode == itm.PartCode)
|
|
|
|
{
|
|
|
|
itm.AskQty = itm1.AsSum;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
//itm.State = (int)AskState.CompleteForce;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是【已确认】或【已发货】状态,【发布状态】请用取消发布或看板作废!";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_state == AskState.Receive)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum)).ToList();
|
|
|
|
int count = _ls.Count(p => p.State == (int)AskState.New || p.State == (int)AskState.Release);
|
|
|
|
if (count > 0)
|
|
|
|
{
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Receive;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Receive;
|
|
|
|
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录,有不是新建或发布状态记录!";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (p_state == AskState.NoConfirm)
|
|
|
|
{
|
|
|
|
var _ls = db.TB_ASN.Where(p => p_list.Contains(p.AskBillNum) && p.IsDeleted == false).ToList();
|
|
|
|
if (_ls.Count == 0)
|
|
|
|
{
|
|
|
|
var _askList = db.TB_ASK.Where(p => p_list.Contains(p.AskBillNum) && p.IsDeleted == false).ToList();
|
|
|
|
_askList.ForEach(p =>
|
|
|
|
{
|
|
|
|
p.State = (int)AskState.Release;
|
|
|
|
var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
_list.ForEach(itm =>
|
|
|
|
{
|
|
|
|
itm.State = (int)AskState.Release;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
}
|
|
|
|
);
|
|
|
|
db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _askList.ToArray());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ret.State = ReturnStatus.Failed;
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.Message = "选择的记录已经有发货单据不能取消!";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//if (count > 0)
|
|
|
|
//{
|
|
|
|
// _ls.ForEach(p =>
|
|
|
|
// {
|
|
|
|
// p.State = (int)AskState.Receive;
|
|
|
|
// var _list = db.TB_ASK_DETAIL.Where(itm => itm.AskBillNum == p.AskBillNum).ToList();
|
|
|
|
// _list.ForEach(itm =>
|
|
|
|
// {
|
|
|
|
// itm.State = (int)AskState.Receive;
|
|
|
|
|
|
|
|
// }
|
|
|
|
// );
|
|
|
|
// db.TB_ASK_DETAIL.AddOrUpdate(itm => itm.UID, _list.ToArray());
|
|
|
|
// }
|
|
|
|
// );
|
|
|
|
// db.TB_ASK.AddOrUpdate(p => p.AskBillNum, _ls.ToArray());
|
|
|
|
//}
|
|
|
|
//else
|
|
|
|
//{
|
|
|
|
// _ret.State = ReturnStatus.Failed;
|
|
|
|
// _ret.Result = false;
|
|
|
|
// _ret.Message = "选择的记录,有不是新建或发布状态记录!";
|
|
|
|
//}
|
|
|
|
|
|
|
|
}
|
|
|
|
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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_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_ASK_CONTROLLER), "Save_TB_ASK_STATE", e.Message);
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.ErrorList.Add(e);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
return _ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static ResultObject<bool> Save_ASK_MODIF_QTY(V_TB_ASK p_ask, List<V_TB_ASK_DETAIL> p_list)
|
|
|
|
{
|
|
|
|
ResultObject<bool> _ret = new ResultObject<bool>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
|
|
|
|
var _list = db.V_TB_ASK_DETAIL.Where(p => p.AskBillNum == p_ask.AskBillNum && p.IsDeleted == false).ToList();
|
|
|
|
var _ls = Get_CAN_SHIPQTY(_list);
|
|
|
|
_ls.ForEach(p =>
|
|
|
|
{
|
|
|
|
var _entity = p_list.Where(itm => itm.AskBillNum == p.AskBillNum && itm.PoLine == p.PoLine && itm.PartCode == p.PartCode && itm.PoBillNum == p.PoBillNum).FirstOrDefault();
|
|
|
|
if (_entity != null)
|
|
|
|
{
|
|
|
|
p.AskQty = _entity.AskQty;
|
|
|
|
if (_entity.AskQty < p.ShippedQty)
|
|
|
|
{
|
|
|
|
_ret.MessageList.Add(string.Format("零件编号{0}行号{1},【要货数量】必须大于等于【已发数量】", p.PartCode, p.PoLine.ToString()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
if (_ret.MessageList.Count > 0)
|
|
|
|
{
|
|
|
|
|
|
|
|
_ret.State = ReturnStatus.Succeed;
|
|
|
|
_ret.Result = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
|
|
|
|
int state = db.SaveChanges();
|
|
|
|
if (state != -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_ASK_CONTROLLER), "Save_ASK_TO_ASN", 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_ASK_CONTROLLER), "Save_ASK_TO_ASN", 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_ASK_CONTROLLER), "Save_ASK_TO_ASN", 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_ASK_CONTROLLER), "Save_ASK_TO_ASN", e.Message);
|
|
|
|
_ret.Result = false;
|
|
|
|
_ret.ErrorList.Add(e);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
return _ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 报表
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="p_entity"></param>
|
|
|
|
/// <param name="p_action"></param>
|
|
|
|
public static List<V_TB_ASK_DETAIL_PO> Get_V_TB_ASK_DETAIL_PO_List(V_TB_ASK_DETAIL_PO p_entity)
|
|
|
|
{
|
|
|
|
List<V_TB_ASK_DETAIL_PO> list = new List<V_TB_ASK_DETAIL_PO>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
|
|
|
|
{
|
|
|
|
SqlParameter[] prams = new SqlParameter[7];
|
|
|
|
string TimeBegin = !p_entity.TimeBegin.HasValue ? "" : DateTime.Parse(p_entity.TimeBegin.ToString()).ToString("yyyy-MM-dd");
|
|
|
|
string TimeEnd = !p_entity.TimeEnd.HasValue ? "" : DateTime.Parse(p_entity.TimeEnd.ToString()).ToString("yyyy-MM-dd");
|
|
|
|
string PoBillNum = string.IsNullOrEmpty(p_entity.PoBillNum) ? "" : p_entity.PoBillNum;
|
|
|
|
string AskBillNum = string.IsNullOrEmpty(p_entity.AskBillNum) ? "" : p_entity.AskBillNum;
|
|
|
|
string PartCode = string.IsNullOrEmpty(p_entity.PartCode) ? "" : p_entity.PartCode;
|
|
|
|
string Buyer= string.IsNullOrEmpty(p_entity.Buyer) ? "" : p_entity.Buyer;
|
|
|
|
|
|
|
|
string VendId = string.IsNullOrEmpty(p_entity.VendId) ? "" : p_entity.VendId;
|
|
|
|
string UserInAddress_where = "";
|
|
|
|
string UserName = p_entity.UserName;
|
|
|
|
if (p_entity.UserInAddress != null)
|
|
|
|
{
|
|
|
|
UserInAddress_where = string.Join(", ", p_entity.UserInAddress);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string str = "exec PROC_test " + " @PONum_where = '" + PoBillNum + "' ,@AskBillNum_where = '" + AskBillNum + "' ,@PartCode_where = '" + PartCode + "' ,@Buyer_where = '" + Buyer + "' ,@BeginDate_where = '" + TimeBegin + "' ,@EndDate_where = '" + TimeEnd + "', @VenderID_where = '" + VendId + "'" + ", @UserInAddress_where = " + UserInAddress_where + " ,@UserName = " + UserName;
|
|
|
|
list = db.Database.SqlQuery<V_TB_ASK_DETAIL_PO>(str).ToList();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception e)
|
|
|
|
{
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_DETAIL_PO_List", e.Message);
|
|
|
|
if (e.InnerException != null)
|
|
|
|
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_DETAIL_PO_List(Exception)", LogHelper.GetExceptionMessage(e).Message);
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
return list;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|