using CK.SCP.Models;
using CK.SCP.Models.Enums;
using CK.SCP.Models.ExchangeCenterTables;
using CK.SCP.Models.AppBoxEntity;
using CK.SCP.Models.ScpEntity;
using CK.SCP.Models.ScpEntity.ExcelExportEnttity;
using CK.SCP.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data.Entity.Migrations;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Transactions;
using System.Data.Entity.Core;
using System.Security.Cryptography;
//using WebSrvAPITest;
namespace CK.SCP.Controller
{
public class SCP_DC_UNI_CONTROLLER
{
public SCP_DC_UNI_CONTROLLER()
{
}
///
/// 随机密码
///
///
public static string GenerateComplexPassword()
{
int length = 12;
StringBuilder password = new StringBuilder(length);
Random random = new Random();
for (int i = 0; i < length; i++)
{
int a = random.Next(0, 89);
password.Append((char)(a + '!'));
}
return password.ToString();
}
public static ResultObject> Get_TEA_SUBSCRIBE_List(TEA_SUBSCRIBE p_entity)
{
ResultObject> _ret = new ResultObject>();
try
{
using (var db = EntitiesFactory.CreateExchangeCenterInstance())
{
IQueryable q = db.TEA_SUBSCRIBE;
if (!string.IsNullOrEmpty(p_entity.TableName))
{
q = q.Where(p => p.TableName.Contains(p_entity.TableName));
}
if (!string.IsNullOrEmpty(p_entity.Creator))
{
q = q.Where(p => p.Creator.Contains(p_entity.Creator));
}
if (!string.IsNullOrEmpty(p_entity.Subscriber))
{
q = q.Where(p => p.Subscriber.Contains(p_entity.Subscriber));
}
if (p_entity.UID != 0)
{
q = q.Where(p => p.UID == p_entity.UID);
}
if (!string.IsNullOrEmpty(p_entity.CreateUser))
{
q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser));
}
if (!string.IsNullOrEmpty(p_entity.Remark))
{
q = q.Where(p => p.Remark.Contains(p_entity.Remark));
}
if (!string.IsNullOrEmpty(p_entity.UpdateUser))
{
q = q.Where(p => p.UpdateUser.Contains(p_entity.UpdateUser));
}
if (p_entity.IsChecked != false)
{
q = q.Where(p => p.IsChecked == p_entity.IsChecked);
}
if (p_entity.Enable != false)
{
q = q.Where(p => p.Enable == p_entity.Enable);
}
_ret.State = ReturnStatus.Succeed;
_ret.Result = q.ToList();
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
_ret.ErrorList.Add(e);
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "Get_TEA_SUBSCRIBE_List", e.Message);
throw e;
}
return _ret;
}
public ResultObject Save_TEA_SUBSCRIBE(List p_entitys)
{
ResultObject _ret = new ResultObject();
try
{
using (var db = EntitiesFactory.CreateExchangeCenterInstance())
{
foreach (var itm in p_entitys)
{
db.TEA_SUBSCRIBE.AddOrUpdate(itm);
}
if (db.SaveChanges() != -1)
{
_ret.State = ReturnStatus.Succeed;
_ret.Result = true;
}
else
{
_ret.State = ReturnStatus.Failed;
_ret.Result = false;
}
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "Save_TEA_SUBSCRIBE", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
public ResultObject Del_TEA_SUBSCRIBE(List p_entitys)
{
ResultObject _ret = new ResultObject();
try
{
using (var db = EntitiesFactory.CreateExchangeCenterInstance())
{
foreach (var itm in p_entitys)
{
db.TEA_SUBSCRIBE.Remove(itm);
}
if (db.SaveChanges() != -1)
{
_ret.State = ReturnStatus.Succeed;
_ret.Result = true;
}
else
{
_ret.State = ReturnStatus.Failed;
_ret.Result = false;
}
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
_ret.Result = false;
_ret.ErrorList.Add(e);
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "Del_TEA_SUBSCRIBE", e.Message); throw e;
}
return _ret;
}
public static ResultObject> Get_TEA_TASK_SUB_List(TEA_TASK_SUB p_entity)
{
ResultObject> _ret = new ResultObject>();
try
{
using (var db = EntitiesFactory.CreateExchangeCenterInstance())
{
IQueryable q = db.TEA_TASK_SUB;
if (!string.IsNullOrEmpty(p_entity.TableName))
{
q = q.Where(p => p.TableName.Contains(p_entity.TableName));
}
if (!string.IsNullOrEmpty(p_entity.Creator))
{
q = q.Where(p => p.Creator.Contains(p_entity.Creator));
}
if (p_entity.DataCount != 0)
{
q = q.Where(p => p.DataCount == p_entity.DataCount);
}
if (!string.IsNullOrEmpty(p_entity.Subscriber))
{
q = q.Where(p => p.Subscriber.Contains(p_entity.Subscriber));
}
if (p_entity.FailedCount != 0)
{
q = q.Where(p => p.FailedCount == p_entity.FailedCount);
}
if (!string.IsNullOrEmpty(p_entity.FailedInfo))
{
q = q.Where(p => p.FailedInfo.Contains(p_entity.FailedInfo));
}
if (!string.IsNullOrEmpty(p_entity.Domain))
{
q = q.Where(p => p.Domain.Contains(p_entity.Domain));
}
if (!string.IsNullOrEmpty(p_entity.Site))
{
q = q.Where(p => p.Site.Contains(p_entity.Site));
}
if (p_entity.UID != 0)
{
q = q.Where(p => p.UID == p_entity.UID);
}
if (!string.IsNullOrEmpty(p_entity.CreateUser))
{
q = q.Where(p => p.CreateUser.Contains(p_entity.CreateUser));
}
if (!string.IsNullOrEmpty(p_entity.Remark))
{
q = q.Where(p => p.Remark.Contains(p_entity.Remark));
}
if (!string.IsNullOrEmpty(p_entity.UpdateUser))
{
q = q.Where(p => p.UpdateUser.Contains(p_entity.UpdateUser));
}
if (p_entity.IsChecked != false)
{
q = q.Where(p => p.IsChecked == p_entity.IsChecked);
}
//if (!string.IsNullOrEmpty(p_entity.TaskState))
//{
// q = q.Where(p => p.UpdateUser.Contains(p_entity.UpdateUser));
//}
q = q.Where(p => p.TaskState==p_entity.TaskState);
_ret.State = ReturnStatus.Succeed;
_ret.Result = q.OrderBy(p => p.CreateTime).ToList();
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
_ret.ErrorList.Add(e);
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "Get_TEA_TASK_SUB_List", e.Message);
throw e;
}
return _ret;
}
public static ResultObject Update_TEA_TASK_SUB(ExchangeCenterContext db, TEA_TASK_SUB p_task)
{
ResultObject _ret = new ResultObject();
try
{
var _task = db.TEA_TASK_SUB.Where(p => p.TaskID == p_task.TaskID && p.TableName == p.TableName && p.Subscriber == "SCP").FirstOrDefault();
if (_task != null)
{
_task.TaskState = EnumTaskState.Success;
_task.DataCount = p_task.DataCount;
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "Update_TEA_TASK_SUB", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
public static ResultObject CREATE_TEA_TASK_SUB(ExchangeCenterContext db, bool p_ismasterslave ,TEA_TASK_SUB p_task)
{
ResultObject _ret = new ResultObject();
try
{
var _list = db.TEA_SUBSCRIBE.Where(p => p.Creator == "SCP" && p.TableName == p_task.TableName).ToList();
foreach (var itm in _list)
{
var _task = new TEA_TASK_SUB();
_task.GUID = Guid.NewGuid();
_task.TaskID = p_task.TaskID;
_task.TaskState = EnumTaskState.Unread;
_task.TableName = p_task.TableName;
_task.Domain = p_task.Domain;
_task.Site = p_task.Site;
_task.DataCount = p_task.DataCount;
_task.Creator = itm.Creator;
_task.CreateTime = DateTime.Now;
_task.CreateUser = itm.CreateUser;
_task.UpdateTime = DateTime.Now;
_task.UpdateUser = itm.CreateUser;
_task.Subscriber = itm.Subscriber;
db.TEA_TASK_SUB.Add(_task);
}
var _task1 = new TEA_TASK();
_task1.GUID = p_task.GUID;
_task1.DataCount = _list.Count;
_task1.TaskID = p_task.TaskID;
_task1.TableName = p_task.TableName;
_task1.Domain = p_task.Domain;
_task1.Site = p_task.Site;
_task1.IsMasterSlave = p_ismasterslave;
_task1.Creator = "SCP";
_task1.CreateTime = DateTime.Now;
_task1.CreateUser = "SCP";
_task1.UpdateTime = DateTime.Now;
_task1.UpdateUser = "SCP";
db.TEA_TASK.Add(_task1);
_ret.State = ReturnStatus.Succeed;
}
catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常
{
var sb = new StringBuilder();
foreach (var error in dbEx.EntityValidationErrors.ToList())
{
error.ValidationErrors.ToList().ForEach(i =>
{
sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage);
});
}
_ret.State = ReturnStatus.Failed;
_ret.ErrorList.Add(dbEx);
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List", sb.ToString());
throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "字段验证失败" + sb.ToString());
}
catch (OptimisticConcurrencyException ex)//并发冲突异常
{
_ret.State = ReturnStatus.Failed;
_ret.ErrorList.Add(ex);
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List", ex.ToString());
throw new ScpException(ResultCode.Exception, "9999", ex.ToString());
}
catch (ScpException ex)
{
_ret.State = ReturnStatus.Failed;
_ret.ErrorList.Add(ex);
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_ASK_CONTROLLER), "Get_V_TB_ASK_List", ex.ToString());
if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException))
{
var inner = (UpdateException)ex.InnerException;
throw new ScpException(ResultCode.Exception, "0000", ex.ToString());
}
else
{
if (ex.InnerException != null) throw ex.InnerException;
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "CREATE_TEA_TASK_SUB", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
public ResultObject Del_TEA_TASK_SUB(List p_entitys)
{
ResultObject _ret = new ResultObject();
try
{
using (var db = EntitiesFactory.CreateExchangeCenterInstance())
{
foreach (var itm in p_entitys)
{
db.TEA_TASK_SUB.Remove(itm);
}
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
_ret.Result = false;
_ret.ErrorList.Add(e);
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_DC_UNI_CONTROLLER), "Del_TEA_TASK_SUB", e.Message); throw e;
}
return _ret;
}
public static void ReadService(Action> p_action)
{
ResultObject result = new ResultObject();
// ResultObject> result = new ResultObject>();
var _result = Get_TEA_TASK_SUB_List(new TEA_TASK_SUB() { TaskState = EnumTaskState.Unread, Subscriber = "SCP" });
if (_result.State == ReturnStatus.Succeed)
{
foreach (var _task in _result.Result)
{
ScpEntities scpdb = EntitiesFactory.CreateScpInstance();
ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance();
DataCenterContext dc = EntitiesFactory.CreateDataCenterInstance();
AppBoxContext authdb = EntitiesFactory.CreateAppBoxInstance();
using (var scope =
new TransactionScope(TransactionScopeOption.Required, new TransactionOptions()
{
IsolationLevel = System.Transactions.IsolationLevel.Serializable,
Timeout = new TimeSpan(0, 20, 0)
}))
{
try
{
switch (_task.TableName)
{
//case "TED_POD":
// result = UpdatePo(db, scpdb, _task);
// break;
case "TED_RECEIPT_MSTR":
if (_task.Creator == "QAD")
{
result = UpdateRecive(db, scpdb, _task);
Update_TEA_TASK_SUB(db, _task);
EntitiesFactory.SaveDb(scpdb);
EntitiesFactory.SaveDb(db);
EntitiesFactory.SaveDb(dc);
scope.Complete();
result.Message = _task.TaskID.ToString();
}
else
{
result = UpdateARRIVE(db, scpdb, _task);
Update_TEA_TASK_SUB(db, _task);
EntitiesFactory.SaveDb(scpdb);
EntitiesFactory.SaveDb(db);
EntitiesFactory.SaveDb(dc);
scope.Complete();
result.Message = _task.TaskID.ToString();
}
break;
case "TED_RETURN_MSTR":
result = UpdateReturn(db, scpdb, _task);
result.Message = _task.TaskID.ToString();
Update_TEA_TASK_SUB(db, _task);
EntitiesFactory.SaveDb(scpdb);
EntitiesFactory.SaveDb(db);
EntitiesFactory.SaveDb(dc);
scope.Complete();
break;
case "TES_SUPPLIER":
var _supplierlist = db.TES_SUPPLIER.Where(p => p.TaskID == _task.TaskID).ToList();
result = UpdateSupplier(_supplierlist, scpdb,authdb, _task);
result.Message = _task.TaskID.ToString();
Update_TEA_TASK_SUB(db, _task);
EntitiesFactory.SaveDb(scpdb);
EntitiesFactory.SaveDb(db);
EntitiesFactory.SaveDb(dc);
EntitiesFactory.SaveDb(authdb);
scope.Complete();
UpdateSupplierExtend(_supplierlist);
break;
case "TES_PART_MSTR":
result = UpdatePart(db, scpdb, _task);
result.Message = _task.TaskID.ToString();
Update_TEA_TASK_SUB(db, _task);
EntitiesFactory.SaveDb(scpdb);
EntitiesFactory.SaveDb(db);
EntitiesFactory.SaveDb(dc);
scope.Complete();
break;
case "TED_PPOD_DET":
result = UpdatePPod(db, scpdb, _task);
result.Message = _task.TaskID.ToString();
Update_TEA_TASK_SUB(db, _task);
EntitiesFactory.SaveDb(scpdb);
EntitiesFactory.SaveDb(db);
EntitiesFactory.SaveDb(dc);
scope.Complete();
break;
//case "TES_SITE":
// result = UpdateFactory(db, scpdb, appscpdb, _task);
// break;
}
// p_action(result);
result.State = ReturnStatus.Succeed;
result.Result = true;
}
catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常
{
var sb = new StringBuilder();
foreach (var error in dbEx.EntityValidationErrors.ToList())
{
error.ValidationErrors.ToList().ForEach(i =>
{
sb.AppendFormat("表:{0},字段:{1},信息:{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage);
});
}
scope.Dispose();
result.State = ReturnStatus.Failed;
result.ErrorList.Add(dbEx);
}
catch (OptimisticConcurrencyException ex)//并发冲突异常
{
scope.Dispose();
result.State = ReturnStatus.Failed;
result.ErrorList.Add(ex);
}
catch (Exception ex)
{
scope.Dispose();
result.State = ReturnStatus.Failed;
result.ErrorList.Add(ex);
result.Message = _task.TaskID.ToString();
// result.MessageList.Add("任务编号:" + _task.TaskID + "错误信息:" + ex.Message);
}
}
p_action(result);
}
}
p_action(result);
}
public static void WriteService(Action>> p_action)
{
ResultObject> result = new ResultObject>();
List _msglist = new List();
using (var scope =
new TransactionScope(TransactionScopeOption.Required, new TransactionOptions()
{
IsolationLevel = System.Transactions.IsolationLevel.Serializable,
Timeout = new TimeSpan(0, 20, 0)
}))
{
try
{
ScpEntities scpdb = EntitiesFactory.CreateScpInstance();
ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance();
var _list = scpdb.TS_UNI_API.Where(p => p.State == (int)DataState.Enabled&&p.Domain== "BJBMPT").OrderBy(p => p.UID).ToList();
var _list1 = scpdb.TS_UNI_API.Where(p => p.State == (int)DataState.Enabled && p.Domain == "BJBMPT" && p.InterfaceType== "Price").OrderBy(p => p.UID).ToList();
var apiii = _list1.Count();
if (apiii > 0) {
var ret = UpdateTES_PURCHASE_PRICE(db, scpdb, _list1);
}
var billNumList = _list.Select(p => p.BillNum).Distinct();
foreach (var itm in billNumList)
{
var _dataList = _list.Where(p => p.BillNum == itm).ToList();
var _asnList = _dataList.Where(P => P.InterfaceType == UniApiType.Receive.ToString()).ToList();
if (_asnList.Count > 0)
{
var _taskId = Guid.NewGuid();
_msglist.Add(new LogModel() { LogMessage = string.Format("发现发货单信息{0}条", _asnList.Count), LogTime = DateTime.Now.ToString(), TaskId = _taskId.ToString(), TableName = "TED_ASN_MSTR" });
var ret = UpdateAsn(db, scpdb, _asnList, _taskId);
if (ret.State == ReturnStatus.Succeed)
{
_msglist.Add(ret.Result);
}
}
var _invoiceList = _dataList.Where(p => p.InterfaceType == UniApiType.Invoice.ToString()).ToList();
if (_invoiceList.Count > 0)
{
var _taskId = Guid.NewGuid();
_msglist.Add(new LogModel() { LogMessage = string.Format("发现发票信息{0}条", _invoiceList.Count), LogTime = DateTime.Now.ToString(), TaskId = _taskId.ToString(), TableName = "TED_INVOICE_MSTR" });
var ret = UpdateInvoice(db, scpdb,_invoiceList, _taskId);
if (ret.State == ReturnStatus.Succeed)
{
_msglist.Add(ret.Result);
}
}
var _poList = _dataList.Where(p => p.InterfaceType == UniApiType.PO.ToString()).ToList();
if (_poList.Count > 0)
{
var _taskId = Guid.NewGuid();
_msglist.Add(new LogModel() { LogMessage = string.Format("发现订单信息{0}条", _poList.Count), LogTime = DateTime.Now.ToString(), TaskId = _taskId.ToString(), TableName = "TED_PO_MSTR" });
var ret = UpdatePo(db, scpdb, _poList, _taskId);
if (ret.State == ReturnStatus.Succeed)
{
_msglist.Add(ret.Result);
}
}
//var _priceList = _dataList.Where(p => p.InterfaceType == UniApiType.Price.ToString()).ToList();
//if (_priceList.Count > 0)
//{
// var _taskId = Guid.NewGuid();
// _msglist.Add(new LogModel() { LogMessage = string.Format("发现价格单信息{0}条", _priceList.Count), LogTime = DateTime.Now.ToString(), TaskId = _taskId.ToString(), TableName = "TES_PURCHASE_PRICE" });
// var ret = UpdatePrice(db, scpdb, _priceList, _taskId);
// if (ret.State == ReturnStatus.Succeed)
// {
// _msglist.Add(ret.Result);
// }
//}
Thread.Sleep(10);
}
EntitiesFactory.SaveDb(scpdb);
EntitiesFactory.SaveDb(db);
scope.Complete();
result.State = ReturnStatus.Succeed;
result.Result = _msglist;
}
catch(Exception e)
{
_msglist.Add(new LogModel() { LogMessage = e.Message, LogTime = DateTime.Now.ToString(), TaskId =string.Empty, TableName = "ERROR" });
result.State = ReturnStatus.Failed;
result.Result = _msglist;
scope.Dispose();
}
//finally
//{
//}
}
p_action(result);
}
public static ResultObject UpdateTES_PURCHASE_PRICE(ExchangeCenterContext db, ScpEntities scpdb, List _priceList)
{
ResultObject _ret = new ResultObject();
try
{
List _teslist = new List();
var _api = _priceList.FirstOrDefault();
foreach (var detail in _priceList)
{
Guid _taskguid = Guid.NewGuid();
TES_PURCHASE_PRICE _entity = new TES_PURCHASE_PRICE();
_entity.GUID = Guid.NewGuid();
_entity.PriceList = detail.BillNum;
_entity.Currency = detail.Currency;
_entity.PartCode = detail.PartCode;
_entity.Um = detail.PoUnit;
_entity.Start = detail.CreateTime;
_entity.ExpireDate = detail.PutTime;
_entity.CreateUser = "scp";
_entity.ProductLine = "";
_entity.AmountType = "P";
_entity.CreateTime = DateTime.Now;
_entity.Remark = detail.Extend1;
_entity.TaskID = _taskguid;
_entity.CommandType = "A";
_entity.DataID = Guid.NewGuid();
_entity.Domain = detail.Domain;
_entity.Site = detail.Site;
_entity.SupplierCode = detail.VendId;
_entity.VendAmount = detail.Price;
_entity.Desc = detail.Batch;
_entity.Amount = detail.Qty;
_teslist.Add(_entity);
detail.State = (int)BillState.Finish;
var ret = CREATE_TEA_TASK_SUB(db, false,
new TEA_TASK_SUB()
{
DataCount = _teslist.Count,
TaskID = _taskguid,
TableName = "TES_PURCHASE_PRICE",
Site = _entity.Site,
Domain = _entity.Domain,
CreateTime = _entity.CreateTime,
CreateUser = _api.CreateOper,
Creator = "SCP",
});
}
db.TES_PURCHASE_PRICE.AddOrUpdate(_teslist.ToArray());
if (db.SaveChanges() != -1)
{
_ret.State = ReturnStatus.Succeed;
_ret.Result = true;
}
else
{
_ret.State = ReturnStatus.Failed;
_ret.Result = false;
_ret.Message = "数据更新失败!";
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
_ret.Result = false;
_ret.Message = e.InnerException.Message;
}
return _ret;
}
//public static ResultObject UpdateAsnDetail(ExchangeCenterContext db, ScpEntities scpdb,List p_asnDetailList)
//{
// ResultObject _ret = new ResultObject();
// try
// {
// foreach (var itm in p_asnDetailList)
// {
// }
// }
// catch (Exception e)
// {
// _ret.State = ReturnStatus.Failed;
// LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateAsnDetail", e.Message);
// _ret.Result = false;
// _ret.ErrorList.Add(e);
// throw e;
// }
// return _ret;
//}
public static List GetASN(string p_asn)
{
List _ls = new List();
using (var db = EntitiesFactory.CreateExchangeCenterInstance())
{
_ls = db.TED_ASN_MSTR.Where(p => p.ASN == p_asn).ToList();
}
return _ls;
}
public static List GetASN_ASN(string p_asn)
{
List _ls = new List();
using (var db = EntitiesFactory.CreateScpInstance())
{
_ls = db.TB_ASN.Where(p => p.AsnBillNum == p_asn&&p.State==3).ToList();
}
return _ls;
}
public static ResultObject UpdateAsn(ExchangeCenterContext db, ScpEntities scpdb, List _asnList, Guid p_taskID/*EnumCommandType p_command*/)
{
ResultObject _ret = new ResultObject();
try
{
List _ls = new List();
if (_asnList.FirstOrDefault() != null)
{
var _api = _asnList.FirstOrDefault();
TED_ASN_MSTR _asn = new TED_ASN_MSTR();
var asn = JsonConvert.DeserializeObject(_api.Extend1);
_asn.ASN = _api.BillNum;
_asn.CommandType = "A";
_asn.CreateTime = _api.CreateTime;
_asn.CreateUser = _api.CreateOper;
_asn.KanbanBillNum = asn.AskBillNum;
_asn.PurchaseOrder = asn.PoBillNum.Trim();
if(_api.Domain=="CQBMPT")
{
_asn.Domain = "CQBMPT";
_asn.Site = "CQ01";
}
else
{
_asn.Site = asn.SubSite;
_asn.Domain = asn.Site;
}
_asn.Supplier = asn.VendId.Trim();
_asn.TaskID = p_taskID;
_asn.DataID = Guid.NewGuid();
_asn.ShippingDate = asn.ShipTime == null ? DateTime.Now : asn.ShipTime.Value;
_asn.PromiseDate = asn.ReceiveTime == null ? DateTime.Now : asn.ReceiveTime.Value;
db.TED_ASN_MSTR.Add(_asn);
foreach (var detail in _asnList)
{
TED_ASN_DET _entity = new TED_ASN_DET();
var asnDetail = JsonConvert.DeserializeObject(_api.Extend2);
_entity.ASN = detail.BillNum;
_entity.PurchaseOrder = asn.PoBillNum.Trim();
_entity.Line = detail.ErpLineNum;
_entity.PartCode = detail.PartCode.Trim();
_entity.Lot = detail.Batch;
_entity.Qty = detail.Qty;
_entity.TaskID = p_taskID;
_entity.PackQty = detail.PackQty;
_entity.Location = asnDetail.DockCode;
_entity.Reference = "";
_entity.SupplierLot = detail.VendBatch;
_entity.WareClass = "";
_entity.WareId = "";
_entity.Price = detail.Price;
_entity.PoUm = detail.PoUnit;
_entity.LocUm = detail.LocUnit;
_entity.Conv = detail.UmConv;
_entity.PartType = "";
_entity.VendBatch = detail.VendBatch;
_entity.ProduceDate = asnDetail.ProduceDate == null ? DateTime.Now : asnDetail.ProduceDate.Value;
_entity.DueDate = asnDetail.EndTime == null ? DateTime.Now : asnDetail.EndTime.Value;
_entity.CreateUser = detail.CreateOper;
_entity.CreateTime = detail.CreateTime;
_entity.CommandType = "A";
if (_api.Domain == "CQBMPT")
{
_entity.Domain = "CQBMPT";
_entity.Site = "CQ01";
}
else
{
_entity.Site = asn.SubSite;
_entity.Domain = asn.Site;
}
_entity.DataID = Guid.NewGuid();
db.TED_ASN_DET.Add(_entity);
_ls.Add(_entity);
detail.State = (int)BillState.Finish;
detail.PutTime = DateTime.Now;
}
var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB()
{
DataCount = _asnList.Count,
TaskID = p_taskID,
TableName = "TED_ASN_MSTR",
Site = asn.SubSite,
Domain = asn.Site,
CreateTime = _api.CreateTime,
CreateUser = _api.CreateOper,
Creator = "SCP",
});
}
_ret.State = ReturnStatus.Succeed;
_ret.Result = new LogModel() { LogMessage=string.Format("成功发布发货单信息{0}条", _asnList.Count), LogTime=DateTime.Now.ToString(), TaskId= p_taskID.ToString(), TableName= "TED_ASN_MSTR" };
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateAsn", e.Message);
_ret.Result = new LogModel() { LogMessage = "发布发货单信息失败", LogTime = DateTime.Now.ToString(), TaskId = p_taskID.ToString(), TableName = "TED_ASN_MSTR" }; ;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
private static ResultObject UpdatePPod(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity /*UniApiEntities idb, ScpEntities wdb, string seq*/)
{
ResultObject _ret = new ResultObject();
string _sql = "SELECT a.*\n" +
"FROM (SELECT Ppod_Nbr, Ppod_Line, Ppod_Part, Ppod_Desc, Ppod_Type, Pod_Wolot, Ppod_pricum, Ppod_reccum, \n" +
" Ppod_qty_ord, Ppod_Qty_Std, Ppod_Due_Date, Ppod_Loc_Um, Ppod_Um, Ppod_Um_Conv, Ppod_Vend, \n" +
" Ppod_Buyer, Ppod_Buyer_Phone, Ppod_Prj, Ppod_Plan, GUID , UID, CreateUser, CreateTime, Remark, \n" +
" TaskID, CommandType, DataID, Domain, Site, CASE LEN(replace([Ppod_rev], '-', '')) \n" +
" WHEN 8 THEN replace([Ppod_rev], '-', '') + '000' WHEN 11 THEN replace([Ppod_rev], '-', '') \n" +
" END AS Ppod_rev\n" +
" FROM TED_PPOD_DET\n" +
" WHERE (TaskID = '{0}')) AS a INNER JOIN\n" +
" (SELECT TaskId, Ppod_nbr, Ppod_line, Domain, Ppod_part, Ppod_due_date, Ppod_vend, \n" +
" MAX(CASE LEN(replace([Ppod_rev], '-', '')) WHEN 8 THEN replace([Ppod_rev], '-', '') \n" +
" + '000' WHEN 11 THEN replace([Ppod_rev], '-', '') END) AS Ppod_rev\n" +
" FROM TED_PPOD_DET\n" +
" WHERE (TaskId = '{0}')\n" +
" GROUP BY TaskId, Ppod_nbr, Ppod_line, Domain, Ppod_part, Ppod_due_date, Ppod_vend) AS b ON \n" +
" a.TaskID = b.TaskId AND a.Domain = b.Domain AND a.Ppod_Due_Date = b.Ppod_due_date AND \n" +
" a.Ppod_Line = b.Ppod_line AND a.Ppod_Nbr = b.Ppod_nbr AND a.Ppod_Vend = b.Ppod_vend AND \n" +
" a.Ppod_Part = b.Ppod_part AND a.Ppod_rev = b.Ppod_rev";
//string _sql = "select * from\n" +
//"(SELECT [xxqad_ppod_uid]\n" +
//" ,[xxqad_ppod_seq]\n" +
//" ,[xxqad_ppod_nbr]\n" +
//" ,[xxqad_ppod_line]\n" +
//" ,case\n" +
//" LEN(replace([xxqad_ppod_rev],'-',''))\n" +
//" when 8 then replace([xxqad_ppod_rev],'-','')+'000'\n" +
//" when 11 then replace([xxqad_ppod_rev],'-','') end as xxqad_ppod_rev\n" +
//" ,[xxqad_ppod_site]\n" +
//" ,[xxqad_ppod_domain]\n" +
//" ,[xxqad_ppod_part]\n" +
//" ,[xxqad_ppod_desc]\n" +
//" ,[xxqad_ppod_type]\n" +
//" ,[xxqad_ppod_wolot]\n" +
//" ,[xxqad_ppod_pricum]\n" +
//" ,[xxqad_ppod_reccum]\n" +
//" ,[xxqad_ppod_qty_ord]\n" +
//" ,[xxqad_ppod_qty_std]\n" +
//" ,[xxqad_ppod_due_date]\n" +
//" ,[xxqad_ppod_loc_um]\n" +
//" ,[xxqad_ppod_um]\n" +
//" ,[xxqad_ppod_um_conv]\n" +
//" ,[xxqad_ppod_vend]\n" +
//" ,[xxqad_ppod_buyer]\n" +
//" ,[xxqad_ppod_buyer_phone]\n" +
//" ,[xxqad_ppod_status]\n" +
//" ,[xxqad_ppod_qadread]\n" +
//" ,[xxqad_ppod_wmsread]\n" +
//" ,[xxqad_ppod_scmread]\n" +
//" ,[xxqad_ppod_mesread]\n" +
//" ,[xxqad_ppod_rmks]\n" +
//" ,[xxqad_ppod_createdt]\n" +
//" ,[xxqad_ppod_createur]\n" +
//" ,[xxqad_ppod_updatedt]\n" +
//" ,[xxqad_ppod_prj]\n" + //其他地区注释此项
//" ,[xxqad_ppod_plan]\n" + //其他地区注释此项
//" ,[xxqad_ppod_updateur] from xxqad_ppod_det\n" +
//" where xxqad_ppod_seq = '{0}' and xxqad_ppod_scmread = '0'\n" +
//" ) as a\n" +
//"inner join\n" +
//"(\n" +
//"SELECT\n" +
//" xxqad_ppod_seq\n" +
//" ,[xxqad_ppod_nbr]\n" +
//" ,[xxqad_ppod_line]\n" +
//" ,[xxqad_ppod_domain]\n" +
//" ,[xxqad_ppod_part]\n" +
//" ,[xxqad_ppod_due_date]\n" +
//" ,[xxqad_ppod_vend]\n" +
//" ,max(\n" +
//" case\n" +
//" LEN(replace([xxqad_ppod_rev],'-',''))\n" +
//" when 8 then replace([xxqad_ppod_rev],'-','')+'000'\n" +
//" when 11 then replace([xxqad_ppod_rev],'-','') end\n" +
//" ) as xxqad_ppod_rev\n" +
//" FROM [xxqad_ppod_det]\n" +
//" where xxqad_ppod_seq = '{0}' and xxqad_ppod_scmread = '0'\n" +
//" group by\n" +
//" xxqad_ppod_seq\n" +
//" ,[xxqad_ppod_nbr]\n" +
//" ,[xxqad_ppod_line]\n" +
//" ,[xxqad_ppod_domain]\n" +
//" ,[xxqad_ppod_part]\n" +
//" ,[xxqad_ppod_due_date]\n" +
//" ,[xxqad_ppod_vend]) as b\n" +
//" on\n" +
//" a.xxqad_ppod_seq=b.xxqad_ppod_seq\n" +
//" and a.xxqad_ppod_domain=b.xxqad_ppod_domain\n" +
//" and a.xxqad_ppod_due_date=b.xxqad_ppod_due_date\n" +
//" and a.xxqad_ppod_line=b.xxqad_ppod_line\n" +
//" and a.xxqad_ppod_nbr=b.xxqad_ppod_nbr\n" +
//" and a.xxqad_ppod_vend=b.xxqad_ppod_vend\n" +
//" and a.xxqad_ppod_part=b.xxqad_ppod_part\n" +
//" and a.xxqad_ppod_rev=b.xxqad_ppod_rev";
_sql = string.Format(_sql, p_entity.TaskID.ToString());
var _ppodList = db.Database.SqlQuery(_sql).ToList();
List _list = new List();
try
{
foreach (var itm in _ppodList)
{
var _plan = scpdb.TB_PO_PLAN.Where(p => p.PoBillNum == itm.Ppod_Nbr && p.PartCode == itm.Ppod_Part && p.EndTime == itm.Ppod_Due_Date && p.Domain == itm.Domain && p.Site == itm.Site && p.Version == itm.Ppod_Rev).FirstOrDefault();
if (_plan != null)
{
_plan.PlanQty = itm.Ppod_qty_ord;
continue;
}
_plan = new TB_PO_PLAN();
_plan.PoBillNum = itm.Ppod_Nbr;
_plan.VendId = itm.Ppod_Vend;
_plan.IsDeleted = false;//操作员
_plan.CreateTime = DateTime.Parse(DateTime.Now.ToShortDateString());
_plan.CreateUser = itm.CreateUser;
_plan.Domain = itm.Domain;
_plan.Site = itm.Site;
_plan.PlanType = (int)PoPlanType.New;
_plan.ErpBillNum = itm.Ppod_Nbr;
_plan.BeginTime = itm.CreateTime == null ? DateTime.Now : itm.CreateTime;
_plan.EndTime = itm.Ppod_Due_Date;
_plan.Buyer = itm.Ppod_Buyer;
_plan.BuyerPhone = itm.Ppod_Buyer_Phone;
_plan.PoLine = itm.Ppod_Line;
_plan.PoUnit = itm.Ppod_Um;
_plan.PartCode = itm.Ppod_Part;
_plan.EndTime = itm.Ppod_Due_Date;
_plan.PlanQty = itm.Ppod_qty_ord;
_plan.IsDeleted = false;
_plan.LocUnit = itm.Ppod_Um;
_plan.UnConv = itm.Ppod_Um_Conv;
_plan.State = (int)AskState.New;
_plan.GUID = Guid.NewGuid();
_plan.Version = itm.Ppod_Rev;
_plan.Extend1 = itm.Ppod_Prj;
_plan.Extend2 = itm.Ppod_Plan;
//_plan.Extend3 = itm.LastRece;
//_plan.PackQty = itm.OutstandQty;
_list.Add(_plan);
}
List _ls = new List();
foreach (var itm in _list)
{
var _count = _ls.Count(p => p.PoBillNum == itm.PoBillNum && p.PartCode == itm.PartCode && p.EndTime == itm.EndTime && p.Domain == p.Domain && p.Site == itm.Site && p.Version == itm.Version);
if (_count == 0)
{
_ls.Add(itm);
}
}
scpdb.TB_PO_PLAN.AddOrUpdate(_ls.ToArray());
_ret.MessageList.Add(string.Format("更新计划数据{0}任务编号{1}", _ppodList.Count.ToString(), p_entity.TaskID));
Console.WriteLine($"更新看板数据:{_ppodList.Count}");
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateSupplierPart", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
public static ResultObject UpdatePo(ExchangeCenterContext db, ScpEntities scpdb, List _poList, Guid p_taskID/*EnumCommandType p_command*/)
{
ResultObject _ret = new ResultObject();
try
{
List _ls = new List();
if (_poList.FirstOrDefault() != null)
{
var _api = _poList.FirstOrDefault();
TED_PO_MSTR _po = new TED_PO_MSTR();
_po.GUID= Guid.NewGuid();
_po.PurchaseOrder = _api.BillNum;
_po.ModeType = _api.SubBillType.ToString();
_po.Supplier = _api.VendId;
_po.Contact = _api.Buyer;
_po.ShipTo = _api.Site;
_po.OrderDate = _api.CreateTime;
_po.DueDate = _api.PutTime;
_po.Confirm = true;
_po.Buyer= _api.Buyer;
if (_api.SubBillType == 1) {
_po.ScheduledOrder =true ;
}
else
{
_po.ScheduledOrder = false;
}
_po.BuyerPhone = _api.BuyerPhone;
_po.Status = (int)PoState.Open;
_po.Taxclass = _api.Extend1;
_po.StartDate = DateTime.Now;
_po.EndDate = _api.ValidDate;
_po.CreateUser = _api.VendBatch;
_po.CreateTime = DateTime.Now;
_po.Domain = _api.Domain;
_po.Site = _api.Site;
_po.Remark = _api.Extend2;
_po.CommandType = "A";
_po.TaskID = p_taskID;
_po.DataID = Guid.NewGuid();
_po.Pricelist= _api.VendId.ToUpper().Trim() + _api.Site.Trim().Substring(1, 1) + _api.Site.Substring(3, 1).Trim();
db.TED_PO_MSTR.Add(_po);
foreach (var detail in _poList)
{
TED_PO_DET _entity = new TED_PO_DET();
_entity.GUID= Guid.NewGuid();
_entity.PurchaseOrder = detail.BillNum;
_entity.Line = detail.ErpLineNum;
_entity.PartCode = detail.PartCode;
_entity.Qty = detail.Qty;
_entity.QtyOpen = 0;
_entity.PackQty = 1;
_entity.Currency = "CNY";
_entity.Price = detail.Price;
_entity.Pricelist = _po.Pricelist;
_entity.PoUm = detail.PoUnit;
_entity.LocUm = detail.LocUnit;
_entity.Conv = 1;
_entity.Status = 1;
_entity.Operation = 0;
_entity.Firmdays = 7;
_entity.Scheduledays = 7;
_entity.Schedulemonth = 1;
_entity.Transportdays = 0;
_entity.StartDate = DateTime.Now;
_entity.EndDate = detail.ValidDate;
_entity.CreateUser = detail.VendBatch;
_entity.CreateTime = DateTime.Now;
_entity.DataID= Guid.NewGuid();
_entity.TaskID = _po.TaskID;
_entity.CommandType = "A";
_entity.Domain = _po.Domain;
_entity.Site = _po.Site;
_entity.Scheduleweeks = 2;
_entity.DueDate = detail.PutTime;
_entity.PoType = detail.ModType;
db.TED_POD_DET.Add(_entity);
_ls.Add(_entity);
detail.State = (int)BillState.Finish;
}
var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB()
{
DataCount = _poList.Count,
TaskID = p_taskID,
TableName = "TED_PO_MSTR",
Site = _po.Site,
Domain = _po.Domain,
CreateTime = _api.CreateTime,
CreateUser = _api.CreateOper,
Creator = "SCP",
});
}
_ret.State = ReturnStatus.Succeed;
_ret.Result = new LogModel() { LogMessage = string.Format("成功发布采购订单信息{0}条", _poList.Count), LogTime = DateTime.Now.ToString(), TaskId = p_taskID.ToString(), TableName = "TED_PO_DET" };
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateAsn", e.Message);
_ret.Result = new LogModel() { LogMessage = "发布采购订单信息失败", LogTime = DateTime.Now.ToString(), TaskId = p_taskID.ToString(), TableName = "TED_PO_DET" }; ;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
//public static ResultObject UpdatePrice(ExchangeCenterContext db, ScpEntities scpdb, List _PriceList, Guid p_taskID/*EnumCommandType p_command*/)
//{
// ResultObject _ret = new ResultObject();
// try
// {
// List _ls = new List();
// TES_PURCHASE_PRICE _entity = new TES_PURCHASE_PRICE();
// var _api = _PriceList.FirstOrDefault();
// foreach (var detail in _PriceList)
// {
// _entity.GUID= Guid.NewGuid();
// _entity.PriceList = detail.BillNum;
// _entity.Currency = detail.Currency;
// _entity.PartCode = detail.PartCode;
// _entity.Um = detail.PoUnit;
// _entity.Start = detail.CreateTime;
// _entity.ExpireDate = detail.PutTime;
// _entity.CreateUser = "scp";
// _entity.ProductLine = "";
// _entity.AmountType = "P";
// _entity.CreateTime = DateTime.Now;
// _entity.Remark = detail.Extend1;
// _entity.TaskID = p_taskID;
// _entity.CommandType = "A";
// _entity.DataID = Guid.NewGuid();
// _entity.Domain = detail.Domain;
// _entity.Site = detail.Site;
// _entity.SupplierCode = detail.VendId;
// _entity.VendAmount = detail.Price;
// _entity.Desc = detail.Batch;
// _entity.Amount = detail.Qty;
// db.TES_PURCHASE_PRICE.Add(_entity);
// _ls.Add(_entity);
// detail.State = (int)BillState.Finish;
// }
// var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB()
// {
// DataCount = _PriceList.Count,
// TaskID = p_taskID,
// TableName = "TES_PURCHASE_PRICE",
// Site = _entity.Site,
// Domain = _entity.Domain,
// CreateTime = _entity.CreateTime,
// CreateUser = _api.CreateOper,
// Creator = "SCP",
// });
// _ret.State = ReturnStatus.Succeed;
// _ret.Result = new LogModel() { LogMessage = string.Format("成功发布价格单信息{0}条", _PriceList.Count), LogTime = DateTime.Now.ToString(), TaskId = p_taskID.ToString(), TableName = "TES_PURCHASE_PRICE" };
// }
// catch (Exception e)
// {
// _ret.State = ReturnStatus.Failed;
// LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateAsn", e.Message);
// _ret.Result = new LogModel() { LogMessage = "发布价格单信息失败", LogTime = DateTime.Now.ToString(), TaskId = p_taskID.ToString(), TableName = "TES_PURCHASE_PRICE" }; ;
// _ret.ErrorList.Add(e);
// throw e;
// }
// return _ret;
//}
public static ResultObject UpdateReciveDetail(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity)
{
ResultObject _ret = new ResultObject();
try
{
var scpRcveDetailList = new List();
var _reciveDetailList = db.TED_RECEIPT_DET.Where(p => p.TaskID == p_entity.TaskID).ToList();
foreach (var detail in _reciveDetailList)
{
var poLineNum = Convert.ToInt32(detail.Line);
var scpRcvDetail =
scpdb.TB_RECEIVE_DETAIL.SingleOrDefault(
p => p.RecvBillNum == detail.ReceiveNbr &&
p.PoBillNum == detail.PurchaseOrder &&
p.PoLine == detail.Line &&
p.PartCode == detail.PartCode &&
p.Batch == detail.Lot
);
if (scpRcvDetail == null)
{
//int istate = 0;
//if (isRerviceOk == false)
//{
// istate = (int)FormState.关闭;
//}
//else
//{
// istate = (int)FormState.开放;
//}
scpRcvDetail = new TB_RECEIVE_DETAIL();
scpRcvDetail.RecvBillNum = detail.ReceiveNbr.Trim();//收货单号
scpRcvDetail.PoBillNum = detail.PurchaseOrder.Trim();//采购单
scpRcvDetail.PoLine = detail.Line;//订单行
scpRcvDetail.PartCode = detail.PartCode.ToUpper().Trim();//零件号
scpRcvDetail.Batch = detail.PartCode;//批次
scpRcvDetail.VendBatch = detail.SupplierLot;//供应商批号
scpRcvDetail.PoUnit = detail.Um;//采购单位
scpRcvDetail.LocUnit = detail.logisticsUm;//物流单位
scpRcvDetail.Qty = detail.ReceiveQuantity;//收货总量 //DockCode = ?,//收货口
scpRcvDetail.State = 0;// (int)FormState.关闭,
scpRcvDetail.Remark = detail.Remark;
scpRcvDetail.CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime;//创建日期
scpRcvDetail.CreateUser = detail.CreateUser;//创建用户
scpRcvDetail.IsDeleted = false;
scpRcvDetail.GUID = detail.TaskID;
scpRcvDetail.BillType = 0;
scpRcvDetail.SubSite = detail.Shipto;
scpRcvDetail.Site = detail.Domain;
scpRcvDetail.Currency = detail.Currency;
scpRcvDetail.Currencyamount = detail.Currencyamount;
scpRcvDetail.ExchangeRateType = detail.Exchangeratetype;
scpRcvDetail.WorkOrderID = detail.WorkOrderID;
scpRcvDetail.POSite = detail.Posite;
scpRcvDetail.POCost = detail.Purchasecost;
scpRcvDetail.POStandardCost = detail.Purchasestandardcost;
scpRcvDetail.ReceiptType = detail.receipttype;
scpRcvDetail.ReturnReasonCode = detail.Returnreason;
scpRcvDetail.Requestedby = detail.Requestby;
scpRcvDetail.TaxEnvironment = detail.Taxenvironment;
scpRcvDetail.TaxIn = detail.taxin;
scpRcvDetail.TaxUsage = detail.Taxusage;
scpRcvDetail.TaxClass = detail.Taxclass;
scpRcvDetail.PurchaseType = detail.Purchasetype;
scpRcvDetail.UMConversion = detail.Umconversion;
scpRcveDetailList.Add(scpRcvDetail);
}
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateAsnDetail", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
public static ResultObject UpdateRecive(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity)
{
ResultObject _ret = new ResultObject();
try
{
var _reciveList = db.TED_RECEIPT_MSTR.Where(p => p.TaskID == p_entity.TaskID).ToList();
var _scpPoDetailList = new List();
foreach (var detail in _reciveList)
{
var scpRcv = scpdb.TB_RECEIVE.SingleOrDefault(p => p.RecvBillNum != null && p.RecvBillNum == detail.ReceiveNbr && p.Site == detail.Domain && p.SubSite == detail.Site);
var scpRcvList = new List();
bool isRerviceOk = false;
if (!string.IsNullOrEmpty(detail.Site) && !string.IsNullOrEmpty(detail.Domain))
{
string _domain = detail.Domain;
string _site = detail.Site;
List configs = scpdb.TA_FACTORY_CONFIG.Where(p => p.FactoryId == _domain).ToList();
foreach (TA_FACTORY_CONFIG cfg in configs)
{
TA_CONFIG tacfg = scpdb.TA_CONFIG.Where(p => p.UID == cfg.ConfigId).SingleOrDefault();
if (tacfg != null && !string.IsNullOrEmpty(tacfg.ParamName) && tacfg.ParamName == "收货自动审核")
{
if ("允许" == tacfg.ParamValue)
{
isRerviceOk = true;
}
}
}
}
if (scpRcv == null)
{
int istate = 0;
if (isRerviceOk == false)
{
istate = (int)FormState.关闭;
}
else
{
istate = (int)FormState.开放;
}
scpRcv = new TB_RECEIVE
{
RecvBillNum = detail.ReceiveNbr,//收货单号
State = istate,
Remark = "",
CreateTime = detail.ReceiptDate == null ? DateTime.Now : (DateTime)detail.ReceiptDate,//创建日期
CreateUser = detail.CreateUser,//创建用户
IsDeleted = false,
GUID = detail.TaskID,
BillType = 0
};
scpRcvList.Add(scpRcv);
}
scpRcv.PoBillNum = detail.PurchaseOrder.Trim();//采购单
scpRcv.AsnBillNum = detail.ASN;//发货单号
scpRcv.Site = detail.Domain;//地点
scpRcv.VendId = detail.Supplier.Trim();//供货商名称
scpRcv.ShipTime = detail.ReceiptDate;//收货日期
scpRcv.SubSite = detail.Site;
scpdb.TB_RECEIVE.AddOrUpdate(scpRcvList.ToArray());
}
var scpRcveDetailList = new List();
var _reciveDetailList = db.TED_RECEIPT_DET.Where(p => p.TaskID == p_entity.TaskID).ToList();
foreach (var detail in _reciveDetailList)
{
var poLineNum = Convert.ToInt32(detail.Line);
var scpRcvDetail =
scpdb.TB_RECEIVE_DETAIL.FirstOrDefault(
p => p.RecvBillNum == detail.ReceiveNbr &&
p.PoBillNum == detail.PurchaseOrder &&
p.PoLine == detail.Line &&
p.PartCode == detail.PartCode
&& p.SubSite==detail.Site
);
if (scpRcvDetail == null)
{
//int istate = 0;
//if (isRerviceOk == false)
//{
// istate = (int)FormState.关闭;
//}
//else
//{
// istate = (int)FormState.开放;
//}
scpRcvDetail = new TB_RECEIVE_DETAIL();
scpRcvDetail.RecvBillNum = detail.ReceiveNbr;//收货单号
scpRcvDetail.PoBillNum = detail.PurchaseOrder.Trim();//采购单
scpRcvDetail.PoLine = detail.Line;//订单行
scpRcvDetail.PartCode = detail.PartCode.Trim();//零件号
scpRcvDetail.Batch = detail.Lot;//批次
scpRcvDetail.VendBatch = detail.SupplierLot;//供应商批号
scpRcvDetail.PoUnit = detail.Um;//采购单位
scpRcvDetail.LocUnit = detail.logisticsUm;//物流单位
//收货总量 //DockCode = ?,//收货口
scpRcvDetail.State = 1;// (int)FormState.关闭,
scpRcvDetail.Remark = detail.Remark;
scpRcvDetail.CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime;//创建日期
scpRcvDetail.CreateUser = detail.CreateUser;//创建用户
scpRcvDetail.IsDeleted = false;
scpRcvDetail.GUID = detail.TaskID;
scpRcvDetail.BillType = 0;
scpRcvDetail.SubSite = detail.Shipto;
scpRcvDetail.Site = detail.Domain;
scpRcvDetail.Currency = detail.Currency;
scpRcvDetail.Currencyamount = detail.Currencyamount;
scpRcvDetail.ExchangeRate = detail.Exchangerate==null?"1":detail.Exchangerate.Value.ToString();
scpRcvDetail.ExchangeRate1 = detail.Exchangerate2 == null ? "1" : detail.Exchangerate2.Value.ToString();
scpRcvDetail.ExchangeRateType = detail.Exchangeratetype;
scpRcvDetail.WorkOrderID = detail.WorkOrderID;
scpRcvDetail.POSite = detail.Posite;
scpRcvDetail.POCost = detail.Purchasecost;
scpRcvDetail.POStandardCost = detail.Purchasestandardcost;
scpRcvDetail.ReceiptType = detail.receipttype;
scpRcvDetail.ReturnReasonCode = detail.Returnreason;
scpRcvDetail.Requestedby = detail.Requestby;
scpRcvDetail.TaxEnvironment = detail.Taxenvironment;
scpRcvDetail.TaxIn = detail.taxin;
scpRcvDetail.TaxUsage = detail.Taxusage;
scpRcvDetail.TaxClass = detail.Taxclass;
scpRcvDetail.PurchaseType = detail.Purchasetype;
scpRcvDetail.UMConversion = detail.Umconversion;
scpRcveDetailList.Add(scpRcvDetail);
}
scpRcvDetail.Qty = detail.ReceiveQuantity;
}
// var _str=JsonHelper.GetJson>(scpRcveDetailList);
scpdb.TB_RECEIVE_DETAIL.AddOrUpdate(scpRcveDetailList.ToArray());
_ret.State = ReturnStatus.Succeed;
_ret.MessageList.Add(string.Format("QAD收货单更新{0}任务编号{1}", _reciveDetailList.Count().ToString(), p_entity.TaskID));
_ret.Result = true;
// var retDetail=UpdateReciveDetail(db, scpdb, p_entity);
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateRecive", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
_ret.MessageList.Add(string.Format("QAD收货单更新失败任务编号{0}", p_entity.TaskID));
throw e;
}
return _ret;
}
public static ResultObject UpdateARRIVE(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity)
{
ResultObject _ret = new ResultObject();
try
{
var _reciveList = db.TED_RECEIPT_MSTR.Where(p => p.TaskID == p_entity.TaskID && !string.IsNullOrEmpty(p.ReceiveNbr)).ToList();
var _scpPoDetailList = new List();
foreach (var detail in _reciveList)
{
var scpRcv = scpdb.TB_ARRIVE.SingleOrDefault(p => p.ArrvBillNum != null && p.ArrvBillNum == detail.ReceiveNbr && p.Site == detail.Domain && p.SubSite == detail.Site);
var scpRcvList = new List();
bool isRerviceOk = false;
if (!string.IsNullOrEmpty(detail.Site) && !string.IsNullOrEmpty(detail.Domain))
{
string _domain = detail.Domain;
string _site = detail.Site;
List configs = scpdb.TA_FACTORY_CONFIG.Where(p => p.FactoryId == _domain).ToList();
foreach (TA_FACTORY_CONFIG cfg in configs)
{
TA_CONFIG tacfg = scpdb.TA_CONFIG.Where(p => p.UID == cfg.ConfigId).SingleOrDefault();
if (tacfg != null && !string.IsNullOrEmpty(tacfg.ParamName) && tacfg.ParamName == "收货自动审核")
{
if ("允许" == tacfg.ParamValue)
{
isRerviceOk = true;
}
}
}
}
if (scpRcv == null)
{
int istate = 0;
if (isRerviceOk == false)
{
istate = (int)FormState.关闭;
}
else
{
istate = (int)FormState.开放;
}
scpRcv = new TB_ARRIVE
{
ArrvBillNum = detail.ReceiveNbr,//收货单号
State = istate,
Remark = "",
CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime,//创建日期
CreateUser = detail.CreateUser,//创建用户
IsDeleted = false,
GUID = detail.TaskID,
BillType = 0
};
scpRcvList.Add(scpRcv);
}
scpRcv.PoBillNum = detail.PurchaseOrder;//采购单
scpRcv.AsnBillNum = detail.ASN;//发货单号
if (!string.IsNullOrEmpty(detail.ASN))
{
var _entity=scpdb.TB_ASN.Where(p => p.AsnBillNum == detail.ASN).FirstOrDefault();
if (_entity != null)
{
_entity.State = 4;
}
}
scpRcv.Site = detail.Domain;//地点
scpRcv.VendId = detail.Supplier.Trim();//供货商名称
scpRcv.ShipTime = detail.ReceiptDate;//收货日期
scpRcv.SubSite = detail.Site;
scpdb.TB_ARRIVE.AddOrUpdate(scpRcvList.ToArray());
}
var scpRcveDetailList = new List();
var _reciveDetailList = db.TED_RECEIPT_DET.Where(p => p.TaskID == p_entity.TaskID && !string.IsNullOrEmpty(p.ReceiveNbr)).ToList();
foreach (var detail in _reciveDetailList)
{
var poLineNum = Convert.ToInt32(detail.Line);
var scpRcvDetail =
scpdb.TB_ARRIVE_DETAIL.SingleOrDefault(
p => p.ArrvBillNum == detail.ReceiveNbr &&
p.PoBillNum == detail.PurchaseOrder &&
p.PoLine == detail.Line &&
p.PartCode == detail.PartCode &&
p.Batch == detail.Lot
&&p.SubSite==detail.Site
);
if (scpRcvDetail == null)
{
//int istate = 0;
//if (isRerviceOk == false)
//{
// istate = (int)FormState.关闭;
//}
//else
//{
// istate = (int)FormState.开放;
//}
scpRcvDetail = new TB_ARRIVE_DETAIL();
scpRcvDetail.ArrvBillNum = detail.ReceiveNbr;//收货单号
scpRcvDetail.PoBillNum = detail.PurchaseOrder.Trim();//采购单
scpRcvDetail.PoLine = detail.Line;//订单行
scpRcvDetail.PartCode = detail.PartCode;//零件号
scpRcvDetail.Batch = detail.Lot;//批次
scpRcvDetail.VendBatch = detail.SupplierLot;//供应商批号
scpRcvDetail.PoUnit = detail.Um;//采购单位
scpRcvDetail.LocUnit = detail.logisticsUm;//物流单位
scpRcvDetail.Qty = detail.ReceiveQuantity;//收货总量 //DockCode = ?,//收货口
scpRcvDetail.State = 1;// (int)FormState.关闭,
scpRcvDetail.Remark = detail.Remark;
scpRcvDetail.CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime;//创建日期
scpRcvDetail.CreateUser = detail.CreateUser;//创建用户
scpRcvDetail.IsDeleted = false;
scpRcvDetail.GUID = detail.TaskID;
scpRcvDetail.BillType = 0;
scpRcvDetail.SubSite = detail.Site;
scpRcvDetail.Site = detail.Domain;
scpRcveDetailList.Add(scpRcvDetail);
}
}
var _str = JsonHelper.GetJson>(scpRcveDetailList);
scpdb.TB_ARRIVE_DETAIL.AddOrUpdate(scpRcveDetailList.ToArray());
_ret.State = ReturnStatus.Succeed;
_ret.MessageList.Add(string.Format("到货单更新{0}任务编号{1}", _reciveDetailList.Count().ToString(), p_entity.TaskID));
_ret.Result = true;
// var retDetail=UpdateReciveDetail(db, scpdb, p_entity);
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateRecive", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
_ret.MessageList.Add(string.Format("到货单更新失败任务编号{0}", p_entity.TaskID));
throw e;
}
return _ret;
}
public static ResultObject UpdateInvoiceDetail(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity)
{
ResultObject _ret = new ResultObject();
try
{
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateAsnDetail", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
public static ResultObject UpdateInvoice(ExchangeCenterContext db, ScpEntities scpdb, List p_invoiceList, Guid p_taskId)
{
ResultObject _ret = new ResultObject();
List _mstList = new List();
List _detList = new List();
// List _addList = new List();
try
{
if (p_invoiceList.FirstOrDefault() != null)
{
var _api = p_invoiceList.FirstOrDefault();
#region 发票主表
TED_INVOICE_MSTR _invMast = new TED_INVOICE_MSTR();
var _vinvoice = JsonConvert.DeserializeObject(_api.Extend1);
_invMast.GUID = Guid.NewGuid();
_invMast.Status = "0";
_invMast.Invoice_ID = 1000;
_invMast.InvoiceReference = _vinvoice.InvoiceNum;
_invMast.CreateInvoice = true;
_invMast.Supplier = _vinvoice.VendId.Trim();
_invMast.SupplierName = _vinvoice.VendName.Trim();
_invMast.Rowid = Guid.NewGuid().ToString();
_invMast.InvoiceIsTaxable = true;
_invMast.InvoiceHoldAmountTC = _vinvoice.Amount.Value;
_invMast.InvoiceVoucher = 0;
_invMast.InvoiceRegistrationNbr = 1000;
_invMast.PostingDate = _vinvoice.PostingDate==null?DateTime.Now:_vinvoice.PostingDate.Value;
_invMast.Currency = "CNY";
_invMast.InvoiceDate = _vinvoice.UpdateTime == null ? DateTime.Now : _vinvoice.UpdateTime.Value;
_invMast.GUID = Guid.NewGuid();
_invMast.Invoice_ID = 1000;
_invMast.CreateInvoice = true;
_invMast.PaymentCondCode = "90";
_invMast.InvoiceDueDate = _invMast.InvoiceDate.AddDays(int.Parse(_invMast.PaymentCondCode));
_invMast.InvoiceIsStatusFinal = true;
_invMast.InvoicePostingYear = _vinvoice.PostingDate==null?DateTime.Now.Year: _vinvoice.PostingDate.Value.Year;
_invMast.APMatchingIsStatusFinal = true;
_invMast.InvoiceRemark = _vinvoice.InvcBillNum;//发票编号
_invMast.CreateWithAmountIsTax = true;
_invMast.InvoiceAmountTC = _vinvoice.TaxAmount == null ? 0 : _vinvoice.TaxAmount.Value;
_invMast.InvoiceIsTaxable = true;
_invMast.CreateUser = _vinvoice.CreateUser;
_invMast.CreateTime = DateTime.Now;
_invMast.Remark = _vinvoice.Remark;
_invMast.TaskID = p_taskId;
_invMast.CommandType = "A";
_invMast.DataID = Guid.NewGuid();
_invMast.Domain = _vinvoice.Site;
_invMast.Site = _vinvoice.SubSite;
_invMast.CInvoiceCostCenterCode = _vinvoice.CInvoiceCostCenterCode;
_invMast.CInvoiceReference = _vinvoice.InvoiceNum;
_invMast.CInvoiceDescription = _vinvoice.CInvoiceDescription;
_invMast.CInvoiceType = _vinvoice.CInvoiceType;
_invMast.CInvoiceDivisionCode = _vinvoice.CInvoiceDivisionCode;
_mstList.Add(_invMast);
#endregion
#region 发票差异
if ((_vinvoice.ContractPrice != null && _vinvoice.ContractPrice.Value != 0) )
{
_invMast.InvoiceHoldAmountTC = _vinvoice.Amount.Value + _vinvoice.ContractPrice.Value;
//_add.VatDebitCC = _vinvoice.ContractPrice.Value;//折扣
//_add.VatDebitLC = _vinvoice.BlancePrice.Value;//税额调整
//_add.VatDebitTC = _vinvoice.ContractPrice.Value;
// _addList.Add(_add);
}
if ((_vinvoice.BlancePrice != null && _vinvoice.BlancePrice.Value != 0))
{
_invMast.InvoiceAmountTC = (_vinvoice.TaxAmount == null ? 0 : _vinvoice.TaxAmount.Value) + _vinvoice.BlancePrice.Value;
}
#endregion
#region 发票明细
foreach (var detail in p_invoiceList)
{
TED_INVOICE_DET _entity = new TED_INVOICE_DET();
var _invDetail = JsonConvert.DeserializeObject(detail.Extend2);
_entity.CommandType = "A";
_entity.GUID = _invDetail.GUID;
_entity.Status =_invMast.Status;
_entity.PurchaseOrder = _invDetail.PoBillNum;
_entity.Line = _invDetail.PoLineNum;
_entity.ReceiveNbr = _invDetail.RecvBillNum;
_entity.MatchQuantity = _invDetail.Qty;
_entity.MatchPrice = _invDetail.Price + ((_invDetail.BlancePrice==null)?0: _invDetail.BlancePrice.Value);
_entity.IsPvodFinished = true;
_entity.UsageDate = DateTime.Now;
_entity.IsRecalculateTaxes = true;
_entity.ParentRowid = _invMast.Rowid;
_entity.CreateUser = _invDetail.CreateUser;
_entity.CreateTime = _invDetail.CreateTime;
_entity.Remark = _invDetail.Remark;
_entity.TaskID = p_taskId;
_entity.CommandType = "A";
_entity.DataID = Guid.NewGuid();
_entity.Domain = _invDetail.Site.Trim();
_entity.Site = _invDetail.SubSite.Trim();
_entity.PartCode = _invDetail.PartCode;
_entity.Tax = _invDetail.Tax.ToString();
_detList.Add(_entity);
detail.State = (int)BillState.Finish;
detail.PutTime = DateTime.Now;
}
#endregion
var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB()
{
DataCount = p_invoiceList.Count,
TaskID = p_taskId,
TableName = "TED_INVOICE_MSTR",
Site = _vinvoice.SubSite.Trim(),
Domain = _vinvoice.Site,
CreateTime = _api.CreateTime,
CreateUser = _api.CreateOper,
Creator = "SCP",
});
}
db.TED_INVOICE_MSTR.AddOrUpdate(_mstList.ToArray());
db.TED_INVOICE_DET.AddOrUpdate(_detList.ToArray());
//db.TED_INVOICE_ADD.AddOrUpdate(_addList.ToArray());
var str=JsonHelper.GetJson(_mstList.ToArray());
var str1=JsonHelper.GetJson(_detList.ToArray());
_ret.State = ReturnStatus.Succeed;
_ret.Result = new LogModel() { LogMessage = string.Format("成功发布发票信息{0}条",_detList.Count), LogTime = DateTime.Now.ToString(), TaskId = p_taskId.ToString(), TableName = "TED_INVOICE_MSTR" };
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateInvoice", e.Message);
_ret.Result = new LogModel() { LogMessage = "发布发票信息失败", LogTime = DateTime.Now.ToString(), TaskId = p_taskId.ToString(), TableName = "TED_INVOICE_MSTR" }; ;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
//public static ResultObject UpdateReturnDetail(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity)
//{
// ResultObject _ret = new ResultObject();
// try
// {
// var scpRcveDetailList = new List();
// var _reciveDetailList = db.TED_RETURN_DET.Where(p => p.TaskID == p_entity.TaskID).ToList();
// foreach (var detail in _reciveDetailList)
// {
// var poLineNum = Convert.ToInt32(detail.Line);
// var scpRcvDetail =
// scpdb.TB_RECEIVE_DETAIL.SingleOrDefault(
// p => p.RecvBillNum == detail.ReturnNbr &&
// p.PoBillNum == detail.PurchaseOrder &&
// p.PoLine == detail.Line &&
// p.PartCode == detail.PartCode &&
// p.Batch == detail.Lot
// );
// if (scpRcvDetail == null)
// {
// //int istate = 0;
// //if (isRerviceOk == false)
// //{
// // istate = (int)FormState.关闭;
// //}
// //else
// //{
// // istate = (int)FormState.开放;
// //}
// scpRcvDetail = new TB_RECEIVE_DETAIL
// {
// RecvBillNum = detail.ReturnNbr,//收货单号
// PoBillNum = detail.PurchaseOrder,//采购单
// PoLine = detail.Line,//订单行
// PartCode = detail.PartCode,//零件号
// Batch = detail.PartCode,//批次
// VendBatch = detail.SupplierLot,//供应商批号
// PoUnit = detail.Um,//采购单位
// LocUnit = detail.logisticsUm,//物流单位
// Qty = detail.ReturnQuantity,//收货总量 //DockCode = ?,//收货口
// State = 0,// (int)FormState.关闭,
// Remark = detail.Remark,
// CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime,//创建日期
// CreateUser = detail.CreateUser,//创建用户
// IsDeleted = false,
// GUID = System.Guid.NewGuid(),
// BillType = 0
// };
// scpRcveDetailList.Add(scpRcvDetail);
// }
// }
// }
// catch (Exception e)
// {
// _ret.State = ReturnStatus.Failed;
// LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateAsnDetail", e.Message);
// _ret.Result = false;
// _ret.ErrorList.Add(e);
// throw e;
// }
// return _ret;
//}
public static ResultObject UpdateReturn(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity)
{
ResultObject _ret = new ResultObject();
try
{
var _reciveList = db.TED_RETURN_MSTR.Where(p => p.TaskID == p_entity.TaskID && !string.IsNullOrEmpty(p.ReturnNbr)).ToList();
var _scpPoDetailList = new List();
foreach (var detail in _reciveList)
{
var scpRcv = scpdb.TB_ARRIVE.SingleOrDefault(p => p.ArrvBillNum != null && p.ArrvBillNum == detail.ReturnNbr && p.Site == detail.Domain && p.SubSite == detail.Site);
var scpRcvList = new List();
bool isRerviceOk = false;
if (!string.IsNullOrEmpty(detail.Site) && !string.IsNullOrEmpty(detail.Domain))
{
string _domain = detail.Domain;
string _site = detail.Site;
List configs = scpdb.TA_FACTORY_CONFIG.Where(p => p.FactoryId == _domain).ToList();
foreach (TA_FACTORY_CONFIG cfg in configs)
{
TA_CONFIG tacfg = scpdb.TA_CONFIG.Where(p => p.UID == cfg.ConfigId).SingleOrDefault();
if (tacfg != null && !string.IsNullOrEmpty(tacfg.ParamName) && tacfg.ParamName == "收货自动审核")
{
if ("允许" == tacfg.ParamValue)
{
isRerviceOk = true;
}
}
}
}
if (scpRcv == null)
{
int istate = 0;
if (isRerviceOk == false)
{
istate = (int)FormState.关闭;
}
else
{
istate = (int)FormState.开放;
}
scpRcv = new TB_ARRIVE
{
ArrvBillNum = detail.ReturnNbr,//收货单号
State = istate,
Remark = "",
CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime,//创建日期
CreateUser = detail.CreateUser,//创建用户
IsDeleted = false,
GUID = detail.TaskID,
BillType = 1
};
scpRcvList.Add(scpRcv);
}
scpRcv.PoBillNum = detail.PurchaseOrder;//采购单
scpRcv.AsnBillNum = detail.ASN;//发货单号
if (!string.IsNullOrEmpty(detail.ASN))
{
var _entity=scpdb.TB_ASN.Where(p => p.AsnBillNum == detail.ASN).FirstOrDefault();
if (_entity != null)
{
_entity.State = 4;
}
}
scpRcv.Site = detail.Domain;//地点
scpRcv.VendId = detail.Supplier;//供货商名称
scpRcv.ShipTime = detail.ReturnDate;//收货日期
scpRcv.SubSite = detail.Site;
scpdb.TB_ARRIVE.AddOrUpdate(scpRcvList.ToArray());
}
var scpRcveDetailList = new List();
var _reciveDetailList = db.TED_RETURN_DET.Where(p => p.TaskID == p_entity.TaskID ).ToList();
var _recive = db.TED_RETURN_MSTR.Where(p => p.TaskID == p_entity.TaskID && !string.IsNullOrEmpty(p.ReturnNbr)).FirstOrDefault();
if (_recive != null)
{
foreach (var detail in _reciveDetailList)
{
detail.ReturnNbr = _recive.ReturnNbr;
var poLineNum = Convert.ToInt32(detail.Line);
var scpRcvDetail =
scpdb.TB_ARRIVE_DETAIL.SingleOrDefault(
p => p.ArrvBillNum == detail.ReturnNbr &&
p.PoBillNum == detail.PurchaseOrder &&
p.PoLine == detail.Line &&
p.PartCode == detail.PartCode &&
p.Batch == detail.Lot
&& p.SubSite == detail.Site
);
if (scpRcvDetail == null)
{
//int istate = 0;
//if (isRerviceOk == false)
//{
// istate = (int)FormState.关闭;
//}
//else
//{
// istate = (int)FormState.开放;
//}
scpRcvDetail = new TB_ARRIVE_DETAIL();
scpRcvDetail.ArrvBillNum = detail.ReturnNbr;//收货单号
scpRcvDetail.PoBillNum = detail.PurchaseOrder;//采购单
scpRcvDetail.PoLine = detail.Line;//订单行
scpRcvDetail.PartCode = detail.PartCode;//零件号
scpRcvDetail.Batch = detail.Lot;//批次
scpRcvDetail.VendBatch = detail.SupplierLot;//供应商批号
scpRcvDetail.PoUnit = detail.Um;//采购单位
scpRcvDetail.LocUnit = detail.logisticsUm;//物流单位
scpRcvDetail.Qty = detail.ReturnQuantity;//收货总量 //DockCode = ?,//收货口
scpRcvDetail.State = 1;// (int)FormState.关闭,
scpRcvDetail.Remark = detail.Remark;
scpRcvDetail.CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime;//创建日期
scpRcvDetail.CreateUser = detail.CreateUser;//创建用户
scpRcvDetail.IsDeleted = false;
scpRcvDetail.GUID = detail.TaskID;
scpRcvDetail.BillType = 1;
scpRcvDetail.SubSite = detail.Site;
scpRcvDetail.Site = detail.Domain;
scpRcveDetailList.Add(scpRcvDetail);
}
}
var _str = JsonHelper.GetJson>(scpRcveDetailList);
scpdb.TB_ARRIVE_DETAIL.AddOrUpdate(scpRcveDetailList.ToArray());
}
_ret.State = ReturnStatus.Succeed;
_ret.MessageList.Add(string.Format("退货单更新{0}任务编号{1}", _reciveDetailList.Count().ToString(), p_entity.TaskID));
_ret.Result = true;
// var retDetail=UpdateReciveDetail(db, scpdb, p_entity);
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateRecive", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
_ret.MessageList.Add(string.Format("退货单更新失败任务编号{0}", p_entity.TaskID));
throw e;
}
return _ret;
}
public static ResultObject UpdatePoDetail(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity)
{
ResultObject _ret = new ResultObject();
try
{
var _poDetailList = db.TED_POD_DET.Where(p => p.TaskID == p_entity.TaskID).ToList();
var _scpPoDetailList = new List();
foreach (var detail in _poDetailList)
{
var lineNum = Convert.ToInt32(detail.Line);
var PoDetail =
scpdb.TB_PO_DETAIL.SingleOrDefault(
p => p.PoBillNum == detail.PurchaseOrder && p.PoLine == lineNum && p.SubSite == detail.Site && p.Site == detail.Domain);
if (PoDetail == null)
{
PoDetail = new TB_PO_DETAIL
{
PoBillNum = detail.PurchaseOrder,//订单号
PoLine = lineNum,//订单行
IsDeleted = false,
GUID = detail.TaskID
};
_scpPoDetailList.Add(PoDetail);
}
PoDetail.PartCode = detail.PartCode;//零件号-物料号
PoDetail.PlanQty = detail.Qty;//订货数量-采购量
PoDetail.PoUnit = detail.PoUm;//采购单位
PoDetail.LocUnit = detail.LocUm;//存储单位
PoDetail.Price = ScpCache.Config.项目名称 == ProjectName.重庆北汽模塑.ToString()? 0 : detail.Price;
PoDetail.Currency = detail.Currency;//币种
PoDetail.PackQty = detail.PackQty;//标包数量
PoDetail.UnConv = detail.Conv;//转换率
PoDetail.State = Convert.ToInt32(detail.Status);//状态
PoDetail.Remark = detail.Remark;//备注
PoDetail.CreateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime;//创建日期
PoDetail.CreateUser = detail.CreateUser;//创建用户
PoDetail.UpdateTime = detail.CreateTime == null ? DateTime.Now : (DateTime)detail.CreateTime;//创建日期
PoDetail.UpdateUser = detail.CreateUser;//创建用户
}
scpdb.TB_PO_DETAIL.AddOrUpdate(_scpPoDetailList.ToArray());
//Console.WriteLine($"更新 采购订单 数据:{qadPoDetailList.Count}");
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "Save_TEA_TASK_SUB", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
public static ResultObject UpdatePo(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity)
{
ResultObject _ret = new ResultObject();
try
{
var _poList = db.TED_PO_MSTR.Where(p => p.TaskID == p_entity.TaskID).ToList();
var _scpPolist = new List();
foreach (var po in _poList)
{
var _po = scpdb.TB_PO.SingleOrDefault(p => p.ErpBillNum == po.PurchaseOrder && p.Site == po.Domain && p.SubSite == po.Site);
if (_po == null)
{
int temp;
_po = new TB_PO
{
PoBillNum = po.PurchaseOrder,//订单号
ErpBillNum = po.PurchaseOrder,//ERP订单号
VendId = po.Supplier,//供应商编号
ModType = Int32.TryParse(po.ModeType, out temp) ? temp : (int?)null, //单据类型(1:日程单,2:离散订单)
Contacter = po.Contact,//联系人
Site = po.Domain,//地点
State = (int)FormState.开放,//状态
Remark = po.Remark,//说明
CreateTime = po.CreateTime == null ? DateTime.Now : (DateTime)po.CreateTime,//创建日期
CreateUser = po.CreateUser,//创建用户
IsDeleted = false,
GUID =po.TaskID,
BeginTime = po.OrderDate == null ? DateTime.Now : po.OrderDate,//创建日期
EndTime = po.DueDate//收货结束时间
};
int _count = _scpPolist.Count(p => p.ErpBillNum == po.PurchaseOrder && p.Site == po.Domain && p.SubSite == po.Site);
if (_count == 0)
{
_scpPolist.Add(_po);
}
}
_po.Contacter = po.Contact;
_po.Buyer = _po.Buyer;
_po.BuyerPhone = _po.BuyerPhone;
_po.UpdateTime = _po.UpdateTime;//更新日期
_po.UpdateUser = _po.UpdateUser;//更新用户
}
scpdb.TB_PO.AddOrUpdate(_scpPolist.ToArray());
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "Save_TEA_TASK_SUB", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
///
/// 更新供应商
///
///
///
///
///
public static ResultObject UpdateSupplier(List p_list, ScpEntities scpdb, AppBoxContext authdb, TEA_TASK_SUB p_entity)
{
Dictionary _dic = new Dictionary();
_dic.Add("BJBMPT", "BJ01");
_dic.Add("CQBMPT", "CQ01");
_dic.Add("ZZBMPT", "ZZ01");
_dic.Add("HFBMPT", "HF01");
ResultObject _ret = new ResultObject();
try
{
var _venderlist = new List();
foreach (var supplier in p_list)
{
foreach (var item in _dic)
{
var _supplier = scpdb.TA_VENDER.FirstOrDefault(p => p.VendId == supplier.SupplierCode && p.Site == item.Key);
if (_supplier == null)
{
_supplier = new TA_VENDER
{
VendId = supplier.SupplierCode.ToUpper(),
VendAbbCode = "0",
State = 1,
};
}
_supplier.VendName = string.IsNullOrEmpty(supplier.SupplierName) ? supplier.SupplierName : supplier.SupplierName;
_supplier.SubSite = item.Value;//地点
_supplier.Site = item.Key;//域
_supplier.Remark = supplier.TaskID.ToString();//任务ID
var vendname = string.Format("{0}@{1}", _supplier.VendId.ToUpper(), _supplier.Site.ToUpper());
var _first = authdb.Users.Where(p => p.Name == vendname).FirstOrDefault();
var _vend = authdb.Roles.Where(p => p.Name == "供应商").FirstOrDefault();
var _factory = authdb.TA_FACTORY.Where(p => p.ErpDomain == _supplier.Site.ToUpper()).FirstOrDefault();
if (_first == null && _vend != null && _factory != null)
{
User _entity = new User();
_entity.Name = vendname;
_entity.Remark = _supplier.Site.ToUpper();
// 随机密码
_entity.Password = GenerateComplexPassword(); //PasswordUtil.CreateDbPassword("99999999");
_entity.ChineseName = _supplier.VendName;
_entity.Email = _supplier.VendId + "@163.com";
_entity.Gender = "男";
_entity.Enabled = true;
_entity.Roles = new List();
Role t = authdb.Set().Local.Where(x => x.ID == _vend.ID).FirstOrDefault();
if (t == null)
{
t = new Role { ID = _vend.ID };
authdb.Set().Attach(t);
}
_entity.Roles.Add(t);
_entity.TA_FACTORY = new List();
TA_FACTORY f = authdb.Set().Local.Where(x => x.ID == _factory.ID).FirstOrDefault();
if (f == null)
{
f = new TA_FACTORY { ID = _factory.ID };
authdb.Set().Attach(f);
}
_entity.TA_FACTORY.Add(f);
authdb.Users.Add(_entity);
}
_venderlist.Add(_supplier);
}
}
scpdb.TA_VENDER.AddOrUpdate(_venderlist.ToArray());
_ret.State = ReturnStatus.Succeed;
_ret.MessageList.Add(string.Format("更新表{0}任务ID{1}成功!", "TES_SUPPLIER", p_entity.TaskID));
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateSupplier", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
private static void UpdateSupplierExtend(List p_vendList )
{
var _ls = new List();
using (var db = EntitiesFactory.CreateAppBoxInstance())
{
foreach (var qadData in p_vendList)
{
try
{
var vendname = string.Format("{0}@{1}", qadData.SupplierCode.ToUpper(), qadData.Domain.ToUpper());
var _first = db.Users.Where(p => p.Name == vendname).FirstOrDefault();
if (_first != null)
{
var _ef = db.VenderUsers.FirstOrDefault(p => p.VenderId == qadData.SupplierCode && p.UserId == _first.ID) ?? new VenderUsers()
{
UserId = _first.ID,
VenderId = qadData.SupplierCode.ToUpper()
};
_ls.Add(_ef);
}
}
catch
{
}
db.VenderUsers.AddOrUpdate(_ls.ToArray());
}
}
}
///
/// 更新供应商零件
///
///
///
///
///
///
public static ResultObject UpdateSupplierPart(DataCenterContext dc, ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity)
{
ResultObject _ret = new ResultObject();
try
{
var _supplierpartlist = db.TES_SUPPLIER_PART.Where(p => p.TaskID == p_entity.TaskID).ToList();
var _venderpartlist = new List();
decimal _packqty = 1;
foreach (var supplierpart in _supplierpartlist)
{
var _supplierpart = scpdb.TA_VEND_PART.SingleOrDefault(p => p.VendId == supplierpart.Supplier && p.PartCode == supplierpart.PartCode && p.VendPartCode == supplierpart.SupplierPart && p.Site == supplierpart.Domain );
if (_supplierpart == null)
{
var _pack = dc.TS_PACK.SingleOrDefault(p => p.PartCode == supplierpart.PartCode && p.Site == supplierpart.Domain && p.Site == supplierpart.Site);
if (_pack != null)
{
}
_supplierpart = new TA_VEND_PART
{
VendId = supplierpart.Supplier.ToUpper(),//供应商编号
PartCode = supplierpart.PartCode.ToUpper(),//对应物料号
VendPartCode = supplierpart.SupplierPart.ToUpper(),//供应商物料号
VendPackQty = _packqty,//供应商物料号
State = 1,//状态(0:失效 1:有效)
Remark = "",
CreateTime = supplierpart.CreateTime == null ? DateTime.Now : (DateTime)supplierpart.CreateTime,//创建日期
CreateUser = supplierpart.CreateUser,//创建用户
TransportationTime = 1,
IsDeleted = false,
GUID = new Guid()
};
}
_supplierpart.Site = string.IsNullOrEmpty(_supplierpart.Site) ? supplierpart.Domain : _supplierpart.Site;
_supplierpart.SubSite = string.IsNullOrEmpty(_supplierpart.SubSite) ? supplierpart.Site : _supplierpart.SubSite;
_supplierpart.VendPartCode = supplierpart.SupplierPart?.ToUpper() ?? supplierpart.PartCode.ToUpper();
_supplierpart.VendPackQty = _packqty;
_supplierpart.TransportationTime = 1;
_supplierpart.UpdateTime = DateTime.Now;//更新日期
_supplierpart.UpdateUser = supplierpart.CreateUser;//更新用户
_supplierpart.Remark = supplierpart.TaskID.ToString();//任务ID
_venderpartlist.Add(_supplierpart);
}
scpdb.TA_VEND_PART.AddOrUpdate(_venderpartlist.ToArray());
_ret.State = ReturnStatus.Succeed;
_ret.MessageList.Add(string.Format("更新表{0}任务ID{1}成功!", "TES_SUPPLIER_PART", p_entity.TaskID));
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateSupplierPart", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
///
/// 更新零件
///
///
///
///
///
public static ResultObject UpdatePart(ExchangeCenterContext db, ScpEntities scpdb, TEA_TASK_SUB p_entity)
{
ResultObject _ret = new ResultObject();
try
{
var _partmstrlist = db.TES_PART_MSTR.Where(p => p.TaskID == p_entity.TaskID&&p.CommandType!="D").ToList();
var _partmstrlistD = db.TES_PART_MSTR.Where(p => p.TaskID == p_entity.TaskID&&p.CommandType=="D").ToList();
var _partlist = new List();
var _partlistD = new List();
foreach (var part in _partmstrlist)
{
var _part = scpdb.TA_PART.SingleOrDefault(p => p.PartCode == part.PartCode && p.Site == part.Domain );
if (_part == null)
{
_part = new TA_PART
{
PartCode = part.PartCode.ToUpper(),
ErpPartCode = part.PartCode.ToUpper(),
};
}
_part.PartDesc1 = part.Desc1;
_part.PartDesc2 = string.IsNullOrEmpty(part.Desc2)?string.Empty: part.Desc2;
if (!string.IsNullOrEmpty(part.Group))
{
_part.ProjectId = part.Group;
}
else
{
_part.ProjectId ="public";
}
_part.Unit = !string.IsNullOrEmpty(part.Um) ? part.Um.ToUpper() : "EA";
_part.State = part.Status;
if (part.InspectType != null)
{
_part.Ischeck = (part.InspectType == 0) ? true : false;
}
if (!string.IsNullOrEmpty(part.PartType))
{
if (part.PartType.Substring(0, 2) == "12")
{
_part.PartGroup = "AST";
}
else
{
_part.PartGroup = "其他";
}
}
_part.Qlevel = string.IsNullOrEmpty(part.Qgrade)?string.Empty: part.Qgrade;
_part.State = part.Status;
_part.Site = part.Domain;
// _part.SubSite = part.Site;
_part.Remark = part.TaskID.ToString();
_partlist.Add(_part);
}
if (_partmstrlistD.Count() > 0)
{
foreach (var depart in _partmstrlistD)
{
var _part = scpdb.TA_PART.FirstOrDefault(p => p.PartCode == depart.PartCode && p.Site == depart.Domain);
if (_part != null)
{
_partlistD.Add(_part);
}
}
}
var str= JsonHelper.GetJson>(_partlist);
scpdb.TA_PART.AddOrUpdate(_partlist.ToArray());
if (_partlistD.Count() > 0)
{
scpdb.TA_PART.DeleteRangeByKey(_partlistD.ToArray());
}
_ret.State = ReturnStatus.Succeed;
_ret.MessageList.Add(string.Format("更新表{0}任务ID{1}成功!", "TES_PART_MSTR", p_entity.TaskID));
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdatePart", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
public static ResultObject UpdateFactory(ExchangeCenterContext db, ScpEntities scpdb, AppBoxContext appscpdb, TEA_TASK_SUB p_entity)
{
ResultObject _ret = new ResultObject();
try
{
var _factorylist = db.TES_SITE.Where(p => p.TaskID == p_entity.TaskID).ToList();
var _appboxfactorylist = new List();
var _scpfactorylist = new List();
foreach(var factory in _factorylist)
{
var item1 = appscpdb.TA_FACTORY.SingleOrDefault(p => p.ErpDomain == factory.Domain && p.ErpSite == factory.Site);
if (item1 == null)
{
item1 = new TA_FACTORY
{
ErpDomain = factory.Domain,
ErpSite = factory.Site,
GUID = Guid.NewGuid(),
State = 1,
CreateTime = DateTime.Now,
CreateUser= factory.CreateUser
};
}
item1.FactoryId = factory.Domain;
item1.ZipCode = factory.Domain;
item1.FactoryName = factory.Desc;
item1.Address = "";
item1.Remark = factory.Remark;
item1.Tel = "";
item1.Fax = "";
item1.UpdateTime = DateTime.Now;
item1.UpdateUser = factory.CreateUser;
_appboxfactorylist.Add(item1);
var item2 = scpdb.TB_FACTORY.SingleOrDefault(p => p.ErpDomain == factory.Domain && p.ErpSite == factory.Site);
if (item2 == null)
{
item2 = new TB_FACTORY
{
ErpDomain = factory.Domain,
ErpSite = factory.Site,
GUID = Guid.NewGuid(),
State = 1,
CreateTime = DateTime.Now,
CreateUser = factory.CreateUser
};
}
item2.FactoryId = factory.Domain;
item2.ZipCode = factory.Domain;
item2.FactoryName = factory.Desc;
item2.Address = "";
item2.Remark = factory.Remark;
item2.Tel = "";
item2.Fax = "";
item2.UpdateTime = DateTime.Now;
item2.UpdateUser = factory.CreateUser;
_scpfactorylist.Add(item2);
}
appscpdb.TA_FACTORY.AddOrUpdate(_appboxfactorylist.ToArray());
scpdb.TB_FACTORY.AddOrUpdate(_scpfactorylist.ToArray());
if (appscpdb.SaveChanges() != -1)
{
_ret.State = ReturnStatus.Succeed;
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "UpdateFactory", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
return _ret;
}
public static ResultObject UpdateTES_PURCHASE_PRICE(List p_list, string domain, string site, string name, bool flag,int ConfirmState)
{
ResultObject _ret = new ResultObject();
if (ConfirmState!=(int)PriceState.FConfirm)
{
_ret.State = ReturnStatus.Succeed;
_ret.Result = true;
return _ret;
}
try
{
ScpEntities scpdb = EntitiesFactory.CreateScpInstance();
ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance();
List _teslist = new List();
var _ls = scpdb.V_TB_PRICE.Where(p => p_list.Contains(p.UID)).ToList();
foreach (var _price in _ls)
{
Guid _taskguid = Guid.NewGuid();
TS_UNI_API _item = new TS_UNI_API();
var _vend = _price.VendId.Trim();
var _partCode = _price.PartCode.Trim();
var _domain = _price.Site.Trim();
var _site = _price.SubSite.Trim();
_item.BillNum = (_vend + _site.Substring(1, 1) + _site.Substring(3, 1)).Trim();
_item.InterfaceType = "Price";
if (_price.Extend2 == "是")
{
_item.Batch = "Yes";
}
else if (_price.Extend2 == "否")
{
_item.Batch = "No";
}
_item.Qty = _price.Amt+_price.SharingPrice;
_item.Price = _price.Amt;
_item.State = 1;
_item.ValidDate = DateTime.Now;
_item.ErpLineNum = 1;
_item.PartCode =_partCode;//零件编号
_item.Domain = _domain;//域
_item.Site = _site;//地点
_item.Extend1 = _price.Remarks;
_item.CreateTime = Convert.ToDateTime(_price.StartTime);//开始时间
_item.PutTime = Convert.ToDateTime(_price.EndTime);//结束时间
_item.CreateOper = _price.Creator;
_item.Currency = _price.Curr;//货币
var _first = scpdb.TA_PART.Where(itm => itm.PartCode == _partCode).FirstOrDefault();
if (_first != null)
{
_item.PoUnit = _first.Unit;
}
else
{
_item.PoUnit = _price.Unit;//单位
}
if(_domain == "BJBMPT")
{
var po = scpdb.V_TB_PO_DETAIL.Count(p => p.PartCode == _partCode&&p.Site== "BJBMPT"&&p.VendId== _vend.Trim());
if (po > 0)
{
var _list = scpdb.V_TB_PO_DETAIL.Where(p => p.PartCode == _partCode && p.Site == "BJBMPT" && p.VendId == _vend.Trim()).ToList();
foreach(var b in _list)
{
var PP = scpdb.TB_PO_DETAIL.FirstOrDefault(p => p.PartCode == b.PartCode && p.Site == "BJBMPT" && p.PoBillNum == b.PoBillNum);
PP.Price = _item.Price;
scpdb.TB_PO_DETAIL.AddOrUpdate(PP);
}
}
}
_teslist.Add(_item);
}
scpdb.TS_UNI_API.AddOrUpdate(_teslist.ToArray());
if (scpdb.SaveChanges() != -1)
{
_ret.State = ReturnStatus.Succeed;
_ret.Result = true;
}
else
{
_ret.State = ReturnStatus.Failed;
_ret.Result = false;
_ret.Message = "数据更新失败!";
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
_ret.Result = false;
_ret.Message =e.InnerException.Message;
}
return _ret;
}
public static ResultObject UpdateTES_PURCHASE_PRICE_TemporaryPrice(List p_list, string domain, string site, string name, bool flag)
{
ResultObject _ret = new ResultObject();
try
{
ScpEntities scpdb = EntitiesFactory.CreateScpInstance();
ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance();
List _teslist = new List();
var _ls = scpdb.V_TB_PRICE_TemporaryPrice.Where(p => p_list.Contains(p.UID)).ToList();
foreach (var _price in _ls)
{
Guid _taskguid = Guid.NewGuid();
TS_UNI_API _item = new TS_UNI_API();
var _vend = _price.VendId.Trim();
var _partCode = _price.PartCode.Trim();
var _domain = _price.Site.Trim();
var _site = _price.SubSite.Trim();
_item.BillNum = (_vend + _site.Substring(1, 1) + _site.Substring(3, 1)).Trim();
_item.InterfaceType = "Price";
_item.Batch = "No";
_item.Qty = _price.Amt + _price.SharingPrice;
_item.Price = _price.Amt;
_item.State = 1;
_item.ValidDate = DateTime.Now;
_item.ErpLineNum = 1;
_item.PartCode = _partCode;//零件编号
_item.Domain = _domain;//域
_item.Site = _site;//地点
_item.Extend1 = _price.Remarks;
_item.CreateTime = Convert.ToDateTime(_price.StartTime);//开始时间
_item.PutTime = Convert.ToDateTime(_price.EndTime);//结束时间
_item.CreateOper = _price.Creator;
_item.Currency = _price.Curr;//货币
var _first = scpdb.TA_PART.Where(itm => itm.PartCode == _partCode).FirstOrDefault();
if (_first != null)
{
_item.PoUnit = _first.Unit;
}
else
{
_item.PoUnit = _price.Unit;//单位
}
_teslist.Add(_item);
}
scpdb.TS_UNI_API.AddOrUpdate(_teslist.ToArray());
if (scpdb.SaveChanges() != -1)
{
_ret.State = ReturnStatus.Succeed;
_ret.Result = true;
}
else
{
_ret.State = ReturnStatus.Failed;
_ret.Result = false;
_ret.Message = "数据更新失败!";
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
_ret.Result = false;
_ret.Message = e.InnerException.Message;
}
return _ret;
}
public static ResultObject WritePo(List p_order_list, string site, string p_creator, DateTime p_time, BillModType p_modtype, string subsite, string p_chineseName, string p_buyerPhone)
{
ResultObject _ret = new ResultObject();
using (var scope =
new TransactionScope(TransactionScopeOption.Required, new TransactionOptions()
{
IsolationLevel = System.Transactions.IsolationLevel.Serializable,
Timeout = new TimeSpan(0, 20, 0)
}))
{
try
{
ScpEntities scpdb = EntitiesFactory.CreateScpInstance();
ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance();
var OrderList = p_order_list.GroupBy(p => p.订单编号).ToList();
string _polist = "";
int _num = 1;
OrderList.ForEach((p) =>
{
var list = p.ToList();
if (list.Count > 0)
{
#region 日程单
if (p_modtype == BillModType.Contract)
{
var _entity = list.FirstOrDefault();
var _po = scpdb.TB_PO.SingleOrDefault(t => t.PoBillNum == _entity.订单编号/* && t.State == state*/ && t.Site == site && t.SubSite == subsite && t.VendId == _entity.供应商编号.ToUpper());
if (_po == null)
{
_po = new TB_PO { GUID = Guid.NewGuid(), PoBillNum = _entity.订单编号.ToUpper(), State = (int)PoState.Open, Site = site, SubSite = subsite, VendId = _entity.供应商编号.Trim().ToUpper() };
}
_po.ErpBillNum = _entity.订单编号.Trim().ToUpper();;
_po.ModType = (int)p_modtype;
_po.Contacter = p_chineseName;// _entity.联系人;
_po.Buyer = p_chineseName;// _entity.联系人;
_po.Site = site.Trim().ToUpper();
_po.BuyerPhone = p_buyerPhone;
_po.Remark = _entity.备注;
_po.IsDeleted = false;
_po.State = (int)PoState.Open;
_po.CreateTime = DateTime.Now;
_po.CreateUser = p_creator;
_po.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
_po.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.要求到货日期);
_po.Pricelist = _entity.供应商编号.Trim().ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1);
_po.Taxclass = _entity.税率;
_po.SubSite= subsite.Trim().ToUpper();
scpdb.TB_PO.AddOrUpdate(_po);
list.ForEach((itm) =>
{
TB_PO_DETAIL _PO_Detail = new TB_PO_DETAIL();
_PO_Detail.Currency = "CNY";
_PO_Detail.PoBillNum = _po.PoBillNum;
_PO_Detail.PartCode = itm.零件号.Trim();
var part = scpdb.TA_PART.FirstOrDefault(t => t.PartCode == itm.零件号.Trim() && t.Site == _po.Site);
_PO_Detail.PoLine =int.Parse(itm.行号);
_PO_Detail.PoUnit = part.Unit;
_PO_Detail.CreateTime = DateTime.Now;
_PO_Detail.CreateUser = p_creator;
_PO_Detail.BeginTime = string.IsNullOrEmpty(itm.订单创建时间) ? DateTime.Now : DateTime.Parse(itm.订单创建时间);
_PO_Detail.EndTime = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(itm.要求到货日期);
_PO_Detail.PlanQty = decimal.Parse(itm.数量);
_PO_Detail.IsDeleted = false;
_PO_Detail.LocUnit = part.Unit;
_PO_Detail.UnConv = 1;
_PO_Detail.State= (int)PoState.Open;
_PO_Detail.Remark = itm.备注;
_PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价);
_PO_Detail.Workorderlot = string.IsNullOrEmpty(itm.加工单号) ? 0 : int.Parse(itm.加工单号);
_PO_Detail.PoType = itm.订单类型;
_PO_Detail.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序);
_PO_Detail.Location = itm.库位;
_PO_Detail.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数);
_PO_Detail.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数);
_PO_Detail.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数);
_PO_Detail.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数);
_PO_Detail.Supplieritem = itm.供应商零件;
_PO_Detail.Dliverypatterncode = itm.发货样式;
_PO_Detail.Deliverytimecode = itm.发货时间样式;
_PO_Detail.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期);
_PO_Detail.Site= site.Trim().ToUpper();
_PO_Detail.SubSite = subsite.Trim().ToUpper();
TS_UNI_API Ts = new TS_UNI_API();
Ts.InterfaceType = "PO";
Ts.TableName = "TS_UNI_API";
Ts.Batch = _entity.供应商编号.Trim().ToUpper();
Ts.BillType = 702;
Ts.SubBillType = 1;
Ts.BillNum = _entity.订单编号.Trim().ToUpper();
Ts.PartCode = _PO_Detail.PartCode.Trim();
Ts.Qty = decimal.Parse(_entity.数量);
Ts.State = 1;
Ts.CreateOper = _entity.联系人;
Ts.CreateTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
Ts.PutTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期);
Ts.VendId = _entity.供应商编号.Trim().ToUpper();
Ts.PoUnit = part.Unit;
Ts.LocUnit = part.Unit;
Ts.ValidDate = string.IsNullOrEmpty(_entity.订单截至日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.订单截至日期);
Ts.ErpBillNum = _entity.订单编号;
Ts.Buyer = _entity.采购员;
Ts.BuyerPhone = _entity.采购员电话;
Ts.Price = decimal.Parse(_entity.单价);
Ts.Site = subsite.Trim().ToUpper();
Ts.Domain = site.Trim().ToUpper();
Ts.Extend1 = _entity.税率;
Ts.Extend2 = _entity.备注;
Ts.CreateOper= _entity.采购员;
Ts.VendBatch= p_creator;
Ts.ErpLineNum = _PO_Detail.PoLine;
if (_entity.订单类型.ToUpper() == "S")
{
Ts.ModType = _entity.订单类型.ToUpper();
}
scpdb.TB_PO_DETAIL.AddOrUpdate(_PO_Detail);
scpdb.TS_UNI_API.Add(Ts);
});
_polist = _polist + _po.PoBillNum + ",";
}
#endregion
#region 离散单 (离散单只增加不修改)
if (p_modtype == BillModType.Non_Contract)
{
var _entity = list.FirstOrDefault();
TB_PO _po = new TB_PO();
_po.GUID = Guid.NewGuid();
_po.PoBillNum = SCP_BILLCODE_CONTROLLER.MakePoNum(_num);
_po.State = (int)PoState.Open;
_po.Site = site.Trim().ToUpper();
_po.SubSite = subsite.Trim().ToUpper();
_po.VendId = _entity.供应商编号.Trim().ToUpper();
_po.ErpBillNum = _po.PoBillNum;
_po.ModType = (int)p_modtype;
_po.Contacter = p_chineseName;// _entity.联系人;
_po.Buyer = p_chineseName;// _entity.联系人;
_po.BuyerPhone = p_buyerPhone;
_po.Site = site.Trim().ToUpper();
_po.Remark = _entity.备注;
_po.IsDeleted = false;
_po.CreateTime = DateTime.Now;
_po.CreateUser = p_creator;
_po.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
_po.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.要求到货日期);
_po.Pricelist = _entity.供应商编号.ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1);
_po.Taxclass = _entity.税率;
scpdb.TB_PO.AddOrUpdate(_po);
TB_ASK _ask = new TB_ASK();
_ask.AskBillNum = SCP_BILLCODE_CONTROLLER.MakeASKCode_BJBQ(_num);
_ask.GUID = Guid.NewGuid();
_ask.PoBillNum = _po.PoBillNum;
_ask.VendId = _entity.供应商编号.Trim().ToUpper();
_ask.IsDeleted = false;
_ask.CreateTime = DateTime.Now;
_ask.CreateUser = p_creator;
_ask.Site = site.Trim().ToUpper();
_ask.ReceivedPort = "";//交货口
_ask.State = (int)AskState.New;
_ask.Remark = _entity.备注;
_ask.ModType = (int)p_modtype;
_ask.ErpBillNum = _po.PoBillNum;
_ask.BeginTime = p_time;
_ask.EndTime = DateTime.Parse(_entity.要求到货日期);
_ask.Buyer = p_chineseName;
_ask.BuyerPhone = p_buyerPhone;
_ask.SubSite = subsite;
scpdb.TB_ASK.Add(_ask);
int _number = 1;
list.ForEach((itm) =>
{
TB_PO_DETAIL _PO_Detail = new TB_PO_DETAIL();
_PO_Detail.GUID = Guid.NewGuid();
_PO_Detail.PartCode = itm.零件号.Trim().ToUpper();
var part = scpdb.TA_PART.FirstOrDefault(t => t.PartCode == itm.零件号.Trim() && t.Site == _po.Site);
_PO_Detail.PoLine = _number;
_PO_Detail.PoBillNum = _po.PoBillNum;
_PO_Detail.State = (int)PoState.Open;
_PO_Detail.Site = site.Trim().ToUpper();
_PO_Detail.SubSite = subsite.Trim().ToUpper();
_PO_Detail.Currency = "CNY";
_PO_Detail.PoUnit = part.Unit;
_PO_Detail.Remark = itm.备注;
_PO_Detail.CreateTime = DateTime.Now;
_PO_Detail.CreateUser = p_creator;
_PO_Detail.BeginTime = string.IsNullOrEmpty(itm.订单创建时间) ? DateTime.Now : DateTime.Parse(itm.订单创建时间);
_PO_Detail.EndTime = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(itm.要求到货日期);
_PO_Detail.PlanQty = decimal.Parse(itm.数量);
_PO_Detail.IsDeleted = false;
_PO_Detail.LocUnit = part.Unit;
_PO_Detail.UnConv = 1;
_PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价);
_PO_Detail.Workorderlot = string.IsNullOrEmpty(itm.加工单号) ? 0 : int.Parse(itm.加工单号);
_PO_Detail.PoType = itm.订单类型;
_PO_Detail.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序);
_PO_Detail.Location = itm.库位;
_PO_Detail.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数);
_PO_Detail.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数);
_PO_Detail.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数);
_PO_Detail.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数);
_PO_Detail.Supplieritem = itm.供应商零件;
_PO_Detail.Dliverypatterncode = itm.发货样式;
_PO_Detail.Deliverytimecode = itm.发货时间样式;
_PO_Detail.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期);
_PO_Detail.TempQty = decimal.Parse(itm.数量);
//_PO_Detail.Extend = itm.供应商编号;
TB_ASK_DETAIL _tDetail = new TB_ASK_DETAIL();
_tDetail.Remark = itm.备注;
_tDetail.PoBillNum = _po.PoBillNum;
_tDetail.AskBillNum = _ask.AskBillNum;
_tDetail.PoLine = _number;
_tDetail.PoUnit = part.Unit;
_tDetail.CreateTime = DateTime.Now;
_tDetail.CreateUser = p_creator;
_tDetail.PartCode = itm.零件号.ToUpper().Trim();
_tDetail.ReceivedPort = "";
_tDetail.BeginTime = p_time;
_tDetail.EndTime = Convert.ToDateTime(itm.要求到货日期);
_tDetail.TempQty = 0;
_tDetail.AskQty = Decimal.Parse(itm.数量);
_tDetail.IsDeleted = false;
_tDetail.LocUnit = part.Unit;
_tDetail.UnConv = 1;
_tDetail.State = (int)PoState.Open;
_tDetail.SubSite = subsite.Trim().ToUpper();
_tDetail.Site = site.Trim().ToUpper();
_tDetail.Price = Decimal.Parse(itm.单价);
_tDetail.GUID = Guid.NewGuid();
_tDetail.Currency = itm.币种;
TS_UNI_API Ts = new TS_UNI_API();
Ts.InterfaceType = "PO";
Ts.TableName = "TS_UNI_API";
Ts.Batch = _entity.供应商编号.Trim().ToUpper();
Ts.BillType = 702;
Ts.SubBillType = 2;
Ts.BillNum = _po.PoBillNum.Trim().ToUpper();
Ts.PartCode = _tDetail.PartCode.Trim().ToUpper();
Ts.Qty = _tDetail.AskQty;
Ts.State = 1;
Ts.CreateOper = _entity.联系人;
Ts.CreateTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
Ts.PutTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期);
Ts.VendId = _entity.供应商编号.Trim().ToUpper();
Ts.PoUnit = part.Unit;
Ts.LocUnit = part.Unit;
Ts.ValidDate = string.IsNullOrEmpty(_entity.订单截至日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.订单截至日期);
Ts.Buyer = _entity.采购员;
Ts.BuyerPhone = _entity.采购员电话;
Ts.Price = _tDetail.Price;
Ts.Site = subsite.Trim().ToUpper();
Ts.Domain = site.Trim().ToUpper();
Ts.Extend1 = _entity.税率;
Ts.Extend2 = _entity.备注;
Ts.CreateOper = _entity.采购员;
Ts.VendBatch = p_creator;
Ts.ErpBillNum= _po.PoBillNum;
Ts.ErpLineNum = _PO_Detail.PoLine;
if (!string.IsNullOrEmpty(_entity.订单类型))
{
if (_entity.订单类型.ToUpper() == "S")
{
Ts.ModType = _entity.订单类型.ToUpper();
}
}
scpdb.TB_ASK_DETAIL.Add(_tDetail);
scpdb.TB_PO_DETAIL.AddOrUpdate(_PO_Detail);
scpdb.TS_UNI_API.Add(Ts);
_number++;
});
_polist = _polist + _po.PoBillNum + ",";
}
#endregion
}
//var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB()
//{
// DataCount = 1,
// TaskID = taskid,
// TableName = "TED_PO_MSTR",
// Site = subsite.Trim().ToUpper(),
// Domain = site.Trim().ToUpper(),
// CreateTime = p_time,
// CreateUser = p_creator,
// Creator = "SCP",
//});
_num++;
Thread.Sleep(10);
}
);
EntitiesFactory.SaveDb(scpdb);
EntitiesFactory.SaveDb(db);
scope.Complete();
_ret.State = ReturnStatus.Succeed;
_ret.Result = true;
_ret.Message= _polist;
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "InsterPo", e.Message);
_ret.Result = false;
_ret.Message = e.InnerException != null? e.Message+ e.InnerException.Message:e.Message;
scope.Dispose();
}
}
return _ret;
}
public static ResultObject WritePo_PO(List p_order_list, string site, string p_creator, DateTime p_time, BillModType p_modtype, string subsite, string p_chineseName, string p_buyerPhone)
{
ResultObject _ret = new ResultObject();
using (var scope =
new TransactionScope(TransactionScopeOption.Required, new TransactionOptions()
{
IsolationLevel = System.Transactions.IsolationLevel.Serializable,
Timeout = new TimeSpan(0, 20, 0)
}))
{
try
{
ScpEntities scpdb = EntitiesFactory.CreateScpInstance();
ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance();
var OrderList = p_order_list.GroupBy(p => p.订单编号).ToList();
string _polist = "";
int _num = 1;
OrderList.ForEach((p) =>
{
var list = p.ToList();
if (list.Count > 0)
{
#region 日程单
if (p_modtype == BillModType.Contract)
{
var _entity = list.FirstOrDefault();
var _po = scpdb.TB_PO.SingleOrDefault(t => t.PoBillNum == _entity.订单编号/* && t.State == state*/ && t.Site == site && t.SubSite == subsite && t.VendId == _entity.供应商编号.ToUpper());
if (_po == null)
{
_po = new TB_PO { GUID = Guid.NewGuid(), PoBillNum = _entity.订单编号.ToUpper(), State = (int)PoState.Open, Site = site, SubSite = subsite, VendId = _entity.供应商编号.Trim().ToUpper() };
}
_po.ErpBillNum = _entity.订单编号.Trim().ToUpper(); ;
_po.ModType = (int)p_modtype;
_po.Contacter = p_chineseName;// _entity.联系人;
_po.Buyer = p_chineseName;// _entity.联系人;
_po.Site = site.Trim().ToUpper();
_po.State= (int)PoState.Open;
_po.BuyerPhone = p_buyerPhone;
_po.Remark = _entity.备注;
_po.IsDeleted = false;
_po.CreateTime = DateTime.Now;
_po.CreateUser = p_creator;
_po.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
_po.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.要求到货日期);
_po.Pricelist = _entity.供应商编号.Trim().ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1);
_po.Taxclass = _entity.税率;
_po.SubSite = subsite.Trim().ToUpper();
scpdb.TB_PO.AddOrUpdate(_po);
list.ForEach((itm) =>
{
TB_PO_DETAIL _PO_Detail = new TB_PO_DETAIL();
_PO_Detail.Currency = "CNY";
_PO_Detail.PoBillNum = _po.PoBillNum;
_PO_Detail.PartCode = itm.零件号.Trim();
var part = scpdb.TA_PART.FirstOrDefault(t=>t.PartCode== itm.零件号.Trim()&&t.Site==_po.Site);
_PO_Detail.PoLine = int.Parse(itm.行号);
_PO_Detail.PoUnit = part.Unit;
_PO_Detail.CreateTime = DateTime.Now;
_PO_Detail.CreateUser = p_creator;
_PO_Detail.BeginTime = string.IsNullOrEmpty(itm.订单创建时间) ? DateTime.Now : DateTime.Parse(itm.订单创建时间);
_PO_Detail.EndTime = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(itm.要求到货日期);
_PO_Detail.PlanQty = decimal.Parse(itm.数量);
_PO_Detail.IsDeleted = false;
_PO_Detail.LocUnit = part.Unit;
_PO_Detail.UnConv = 1;
_PO_Detail.Remark = itm.备注;
_PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价);
_PO_Detail.Workorderlot = string.IsNullOrEmpty(itm.加工单号) ? 0 : int.Parse(itm.加工单号);
_PO_Detail.PoType = itm.订单类型;
_PO_Detail.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序);
_PO_Detail.Location = itm.库位;
_PO_Detail.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数);
_PO_Detail.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数);
_PO_Detail.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数);
_PO_Detail.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数);
_PO_Detail.Supplieritem = itm.供应商零件;
_PO_Detail.Dliverypatterncode = itm.发货样式;
_PO_Detail.Deliverytimecode = itm.发货时间样式;
_PO_Detail.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期);
_PO_Detail.Site = site.Trim().ToUpper();
_PO_Detail.State = (int)PoState.Open;
_PO_Detail.SubSite = subsite.Trim().ToUpper();
TS_UNI_API Ts = new TS_UNI_API();
Ts.InterfaceType = "PO";
Ts.TableName = "TS_UNI_API";
Ts.Batch = _entity.供应商编号.Trim();
Ts.BillType = 702;
Ts.SubBillType = 1;
Ts.BillNum = _entity.订单编号.Trim().ToUpper();
Ts.PartCode = _PO_Detail.PartCode.Trim();
Ts.Qty = decimal.Parse(_entity.数量);
Ts.State = 1;
Ts.CreateOper = _entity.联系人;
Ts.CreateTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
Ts.PutTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期);
Ts.VendId = _entity.供应商编号.Trim();
Ts.PoUnit = part.Unit;
Ts.LocUnit = part.Unit;
Ts.ValidDate = string.IsNullOrEmpty(_entity.订单截至日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.订单截至日期);
Ts.ErpBillNum = _entity.订单编号.Trim();
Ts.Buyer = _entity.采购员;
Ts.BuyerPhone = _entity.采购员电话;
Ts.Price = decimal.Parse(_entity.单价);
Ts.Site = subsite.Trim().ToUpper();
Ts.Domain = site.Trim().ToUpper();
Ts.Extend1 = _entity.税率;
Ts.Extend2 = _entity.备注;
Ts.CreateOper = _entity.采购员;
Ts.VendBatch = p_creator;
Ts.ErpLineNum = _PO_Detail.PoLine;
scpdb.TB_PO_DETAIL.AddOrUpdate(_PO_Detail);
scpdb.TS_UNI_API.Add(Ts);
});
_polist = _polist + _po.PoBillNum + ",";
}
#endregion
#region 离散单 (离散单只增加不修改)
if (p_modtype == BillModType.Non_Contract)
{
var _entity = list.FirstOrDefault();
TB_PO _po = new TB_PO();
_po.GUID = Guid.NewGuid();
_po.PoBillNum = SCP_BILLCODE_CONTROLLER.MakePoNum(_num);
_po.State = (int)PoState.Open;
_po.Site = site.Trim().ToUpper();
_po.SubSite = subsite.Trim().ToUpper();
_po.VendId = _entity.供应商编号.Trim().ToUpper();
_po.ErpBillNum = _po.PoBillNum;
_po.ModType = (int)p_modtype;
_po.Contacter = p_chineseName;// _entity.联系人;
_po.Buyer = p_chineseName;// _entity.联系人;
_po.BuyerPhone = p_buyerPhone;
_po.Site = site.Trim().ToUpper();
_po.Remark = _entity.备注;
_po.IsDeleted = false;
_po.CreateTime = DateTime.Now;
_po.CreateUser = p_creator;
_po.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
_po.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.要求到货日期);
_po.Pricelist = _entity.供应商编号.ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1);
_po.Taxclass = _entity.税率;
scpdb.TB_PO.AddOrUpdate(_po);
int _number = 1;
list.ForEach((itm) =>
{
TB_PO_DETAIL _PO_Detail = new TB_PO_DETAIL();
_PO_Detail.GUID = Guid.NewGuid();
_PO_Detail.PartCode = itm.零件号.Trim().ToUpper();
var part = scpdb.TA_PART.FirstOrDefault(t => t.PartCode == itm.零件号.Trim() && t.Site == _po.Site);
_PO_Detail.PoLine = _number;
_PO_Detail.PoBillNum = _po.PoBillNum.Trim();
_PO_Detail.State = (int)PoState.Open;
_PO_Detail.Site = site.Trim().ToUpper();
_PO_Detail.SubSite = subsite.Trim().ToUpper();
_PO_Detail.Currency = "CNY";
_PO_Detail.PoUnit = part.Unit;
_PO_Detail.Remark = itm.备注;
_PO_Detail.CreateTime = DateTime.Now;
_PO_Detail.CreateUser = p_creator;
_PO_Detail.BeginTime = string.IsNullOrEmpty(itm.订单创建时间) ? DateTime.Now : DateTime.Parse(itm.订单创建时间);
_PO_Detail.EndTime = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(itm.要求到货日期);
_PO_Detail.PlanQty = decimal.Parse(itm.数量);
_PO_Detail.IsDeleted = false;
_PO_Detail.LocUnit = part.Unit;
_PO_Detail.UnConv = 1;
_PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价);
_PO_Detail.Workorderlot = string.IsNullOrEmpty(itm.加工单号) ? 0 : int.Parse(itm.加工单号);
_PO_Detail.PoType = itm.订单类型;
_PO_Detail.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序);
_PO_Detail.Location = itm.库位;
_PO_Detail.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数);
_PO_Detail.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数);
_PO_Detail.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数);
_PO_Detail.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数);
_PO_Detail.Supplieritem = itm.供应商零件;
_PO_Detail.Dliverypatterncode = itm.发货样式;
_PO_Detail.Deliverytimecode = itm.发货时间样式;
_PO_Detail.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期);
_PO_Detail.TempQty = decimal.Parse(itm.数量);
//_PO_Detail.Extend = itm.供应商编号;
TS_UNI_API Ts = new TS_UNI_API();
Ts.InterfaceType = "PO";
Ts.TableName = "TS_UNI_API";
Ts.Batch = _entity.供应商编号.Trim();
Ts.BillType = 702;
Ts.SubBillType = 2;
Ts.BillNum = _po.PoBillNum.Trim().ToUpper();
Ts.PartCode = _PO_Detail.PartCode.Trim();
Ts.Qty = _PO_Detail.PlanQty;
Ts.State = 1;
Ts.CreateOper = _entity.联系人;
Ts.CreateTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
Ts.PutTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期);
Ts.VendId = _entity.供应商编号.Trim();
Ts.PoUnit = part.Unit;
Ts.LocUnit = part.Unit;
Ts.ValidDate = string.IsNullOrEmpty(_entity.订单截至日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.订单截至日期);
Ts.Buyer = _entity.采购员;
Ts.BuyerPhone = _entity.采购员电话;
Ts.Price = _PO_Detail.Price;
Ts.Site = subsite.Trim().ToUpper();
Ts.Domain = site.Trim().ToUpper();
Ts.Extend1 = _entity.税率;
Ts.Extend2 = _entity.备注;
Ts.CreateOper = _entity.采购员;
Ts.VendBatch = p_creator;
Ts.ErpBillNum = _po.PoBillNum.Trim();
Ts.ErpLineNum = _number;
scpdb.TB_PO_DETAIL.AddOrUpdate(_PO_Detail);
scpdb.TS_UNI_API.Add(Ts);
_number++;
});
_polist = _polist + _po.PoBillNum.Trim() + ",";
}
#endregion
}
//var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB()
//{
// DataCount = 1,
// TaskID = taskid,
// TableName = "TED_PO_MSTR",
// Site = subsite.Trim().ToUpper(),
// Domain = site.Trim().ToUpper(),
// CreateTime = p_time,
// CreateUser = p_creator,
// Creator = "SCP",
//});
_num++;
Thread.Sleep(10);
}
);
EntitiesFactory.SaveDb(scpdb);
EntitiesFactory.SaveDb(db);
scope.Complete();
_ret.State = ReturnStatus.Succeed;
_ret.Result = true;
_ret.Message = _polist;
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "InsterPo", e.Message);
_ret.Result = false;
_ret.Message = e.InnerException.Message;
scope.Dispose();
}
}
return _ret;
}
public static ResultObject WritePo_PO_PO(List p_order_list, string site, string p_creator, DateTime p_time, BillModType p_modtype, string subsite, string p_chineseName, string p_buyerPhone)
{
ResultObject _ret = new ResultObject();
using (var scope =
new TransactionScope(TransactionScopeOption.Required, new TransactionOptions()
{
IsolationLevel = System.Transactions.IsolationLevel.Serializable,
Timeout = new TimeSpan(0, 20, 0)
}))
{
try
{
ScpEntities scpdb = EntitiesFactory.CreateScpInstance();
ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance();
var OrderList = p_order_list.GroupBy(p => p.订单编号).ToList();
string _polist = "";
int _num = 1;
OrderList.ForEach((p) =>
{
var list = p.ToList();
if (list.Count > 0)
{
#region 日程单
if (p_modtype == BillModType.Contract)
{
var _entity = list.FirstOrDefault();
var _po = scpdb.TB_PO.SingleOrDefault(t => t.PoBillNum == _entity.订单编号/* && t.State == state*/ && t.Site == site && t.SubSite == subsite && t.VendId == _entity.供应商编号.ToUpper());
if (_po == null)
{
_po = new TB_PO { GUID = Guid.NewGuid(), PoBillNum = _entity.订单编号.ToUpper(), State = (int)PoState.Open, Site = site, SubSite = subsite, VendId = _entity.供应商编号.Trim().ToUpper() };
}
_po.ErpBillNum = _entity.订单编号.Trim().ToUpper(); ;
_po.ModType = (int)p_modtype;
_po.Contacter = p_chineseName;// _entity.联系人;
_po.Buyer = p_chineseName;// _entity.联系人;
_po.Site = site.Trim().ToUpper();
_po.BuyerPhone = p_buyerPhone;
_po.Remark = _entity.备注;
_po.IsDeleted = false;
_po.CreateTime = DateTime.Now;
_po.CreateUser = p_creator;
_po.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
_po.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.要求到货日期);
_po.Pricelist = _entity.供应商编号.Trim().ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1);
_po.Taxclass = _entity.税率;
_po.SubSite = subsite.Trim().ToUpper();
scpdb.TB_PO.AddOrUpdate(_po);
list.ForEach((itm) =>
{
TB_PO_DETAIL _PO_Detail = new TB_PO_DETAIL();
_PO_Detail.Currency = "CNY";
_PO_Detail.PoBillNum = _po.PoBillNum;
_PO_Detail.PartCode = itm.零件号.Trim();
_PO_Detail.PoLine = int.Parse(itm.行号);
_PO_Detail.PoUnit = itm.单位;
_PO_Detail.CreateTime = DateTime.Now;
_PO_Detail.CreateUser = p_creator;
_PO_Detail.BeginTime = string.IsNullOrEmpty(itm.订单创建时间) ? DateTime.Now : DateTime.Parse(itm.订单创建时间);
_PO_Detail.EndTime = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(itm.要求到货日期);
_PO_Detail.PlanQty = decimal.Parse(itm.数量);
_PO_Detail.IsDeleted = false;
_PO_Detail.LocUnit = itm.单位;
_PO_Detail.PoUnit = itm.单位;
_PO_Detail.UnConv = 1;
_PO_Detail.Remark = itm.备注;
_PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价);
_PO_Detail.Workorderlot = string.IsNullOrEmpty(itm.加工单号) ? 0 : int.Parse(itm.加工单号);
_PO_Detail.PoType = itm.订单类型;
_PO_Detail.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序);
_PO_Detail.Location = itm.库位;
_PO_Detail.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数);
_PO_Detail.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数);
_PO_Detail.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数);
_PO_Detail.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数);
_PO_Detail.Supplieritem = itm.供应商零件;
_PO_Detail.Dliverypatterncode = itm.发货样式;
_PO_Detail.Deliverytimecode = itm.发货时间样式;
_PO_Detail.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期);
_PO_Detail.Site = site.Trim().ToUpper();
_PO_Detail.SubSite = subsite.Trim().ToUpper();
TS_UNI_API Ts = new TS_UNI_API();
Ts.InterfaceType = "PO";
Ts.TableName = "TS_UNI_API";
Ts.Batch = _entity.供应商编号;
Ts.BillType = 702;
Ts.SubBillType = 1;
Ts.BillNum = _entity.订单编号;
Ts.PartCode = _PO_Detail.PartCode;
Ts.Qty = decimal.Parse(_entity.数量);
Ts.State = 1;
Ts.CreateOper = _entity.联系人;
Ts.CreateTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
Ts.PutTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期);
Ts.VendId = _entity.供应商编号;
Ts.PoUnit = _entity.单位;
Ts.LocUnit = _entity.单位;
Ts.ValidDate = string.IsNullOrEmpty(_entity.订单截至日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.订单截至日期);
Ts.ErpBillNum = _entity.订单编号;
Ts.Buyer = _entity.采购员;
Ts.BuyerPhone = _entity.采购员电话;
Ts.Price = decimal.Parse(_entity.单价);
Ts.Site = subsite.Trim().ToUpper();
Ts.Domain = site.Trim().ToUpper();
Ts.Extend1 = _entity.税率;
Ts.Extend2 = _entity.备注;
Ts.CreateOper = _entity.采购员;
Ts.VendBatch = p_creator;
Ts.ErpLineNum = _PO_Detail.PoLine;
scpdb.TB_PO_DETAIL.AddOrUpdate(_PO_Detail);
scpdb.TS_UNI_API.Add(Ts);
});
_polist = _polist + _po.PoBillNum + ",";
}
#endregion
#region 离散单 (离散单只增加不修改)
if (p_modtype == BillModType.Non_Contract)
{
var _entity = list.FirstOrDefault();
TB_PO _po = new TB_PO();
_po.GUID = Guid.NewGuid();
_po.PoBillNum = _entity.订单编号;
_po.State = (int)PoState.Open;
_po.Site = site.Trim().ToUpper();
_po.SubSite = subsite.Trim().ToUpper();
_po.VendId = _entity.供应商编号.Trim().ToUpper();
_po.ErpBillNum = _po.PoBillNum;
_po.ModType = (int)p_modtype;
_po.Contacter = p_chineseName;// _entity.联系人;
_po.Buyer = p_chineseName;// _entity.联系人;
_po.BuyerPhone = p_buyerPhone;
_po.Site = site.Trim().ToUpper();
_po.Remark = _entity.备注;
_po.IsDeleted = false;
_po.CreateTime = DateTime.Now;
_po.CreateUser = p_creator;
_po.BeginTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
_po.EndTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.要求到货日期);
_po.Pricelist = _entity.供应商编号.ToUpper() + subsite.Substring(1, 1) + subsite.Substring(3, 1);
_po.Taxclass = _entity.税率;
scpdb.TB_PO.AddOrUpdate(_po);
int _number = 1;
list.ForEach((itm) =>
{
TB_PO_DETAIL _PO_Detail = new TB_PO_DETAIL();
_PO_Detail.GUID = Guid.NewGuid();
_PO_Detail.PartCode = itm.零件号.Trim().ToUpper();
_PO_Detail.PoLine = int.Parse(itm.行号);
_PO_Detail.PoBillNum = _po.PoBillNum;
_PO_Detail.State = (int)PoState.Open;
_PO_Detail.Site = site.Trim().ToUpper();
_PO_Detail.SubSite = subsite.Trim().ToUpper();
_PO_Detail.Currency = "CNY";
_PO_Detail.PoUnit = itm.单位;
_PO_Detail.Remark = itm.备注;
_PO_Detail.CreateTime = DateTime.Now;
_PO_Detail.CreateUser = p_creator;
_PO_Detail.BeginTime = string.IsNullOrEmpty(itm.订单创建时间) ? DateTime.Now : DateTime.Parse(itm.订单创建时间);
_PO_Detail.EndTime = string.IsNullOrEmpty(itm.要求到货日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(itm.要求到货日期);
_PO_Detail.PlanQty = decimal.Parse(itm.数量);
_PO_Detail.IsDeleted = false;
_PO_Detail.LocUnit = itm.单位;
_PO_Detail.PoUnit = itm.单位;
_PO_Detail.UnConv = 1;
_PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价);
_PO_Detail.Workorderlot = string.IsNullOrEmpty(itm.加工单号) ? 0 : int.Parse(itm.加工单号);
_PO_Detail.PoType = itm.订单类型;
_PO_Detail.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序);
_PO_Detail.Location = itm.库位;
_PO_Detail.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数);
_PO_Detail.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数);
_PO_Detail.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数);
_PO_Detail.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数);
_PO_Detail.Supplieritem = itm.供应商零件;
_PO_Detail.Dliverypatterncode = itm.发货样式;
_PO_Detail.Deliverytimecode = itm.发货时间样式;
_PO_Detail.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期);
_PO_Detail.TempQty = decimal.Parse(itm.数量);
//_PO_Detail.Extend = itm.供应商编号;
TS_UNI_API Ts = new TS_UNI_API();
Ts.InterfaceType = "PO";
Ts.TableName = "TS_UNI_API";
Ts.Batch = _entity.供应商编号;
Ts.BillType = 702;
Ts.SubBillType = 2;
Ts.BillNum = _po.PoBillNum;
Ts.PartCode = _PO_Detail.PartCode;
Ts.Qty = _PO_Detail.PlanQty;
Ts.State = 1;
Ts.CreateOper = _entity.联系人;
Ts.CreateTime = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
Ts.PutTime = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期);
Ts.VendId = _entity.供应商编号;
Ts.PoUnit = _entity.单位;
Ts.LocUnit = _entity.单位;
Ts.ValidDate = string.IsNullOrEmpty(_entity.订单截至日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.订单截至日期);
Ts.Buyer = _entity.采购员;
Ts.BuyerPhone = _entity.采购员电话;
Ts.Price = _PO_Detail.Price;
Ts.Site = subsite.Trim().ToUpper();
Ts.Domain = site.Trim().ToUpper();
Ts.Extend1 = _entity.税率;
Ts.Extend2 = _entity.备注;
Ts.CreateOper = _entity.采购员;
Ts.VendBatch = p_creator;
Ts.ErpBillNum = _po.PoBillNum;
Ts.ErpLineNum = int.Parse(itm.行号);
scpdb.TB_PO_DETAIL.AddOrUpdate(_PO_Detail);
scpdb.TS_UNI_API.Add(Ts);
_number++;
});
_polist = _polist + _po.PoBillNum + ",";
}
#endregion
}
//var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB()
//{
// DataCount = 1,
// TaskID = taskid,
// TableName = "TED_PO_MSTR",
// Site = subsite.Trim().ToUpper(),
// Domain = site.Trim().ToUpper(),
// CreateTime = p_time,
// CreateUser = p_creator,
// Creator = "SCP",
//});
_num++;
Thread.Sleep(10);
}
);
EntitiesFactory.SaveDb(scpdb);
EntitiesFactory.SaveDb(db);
scope.Complete();
_ret.State = ReturnStatus.Succeed;
_ret.Result = true;
_ret.Message = _polist;
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "InsterPo", e.Message);
_ret.Result = false;
_ret.Message = e.InnerException.Message;
scope.Dispose();
}
}
return _ret;
}
public static ResultObject InsterPo(List p_order_list, string site, string p_creator, DateTime p_time, BillModType p_modtype, string subsite)
{
ScpEntities scpdb = EntitiesFactory.CreateScpInstance();
ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance();
ResultObject _ret = new ResultObject();
try
{
var OrderList = p_order_list.GroupBy(p => p.订单编号).ToList();
OrderList.ForEach((p) =>
{
Guid taskid = Guid.NewGuid();
var list = p.ToList();
if (list.Count > 0)
{
var _entity = list.FirstOrDefault();
// int state = (int)PoState.Open;
var update_po = scpdb.TB_PO.FirstOrDefault(t => t.PoBillNum == _entity.订单编号/* && t.State == state*/ && t.Site == site && t.SubSite == subsite && t.VendId == _entity.供应商编号.ToUpper());
TED_PO_MSTR _po = new TED_PO_MSTR();
_po.GUID = Guid.NewGuid();
_po.PurchaseOrder = _entity.订单编号;
_po.Supplier = _entity.供应商编号.ToUpper();
_po.Contact = _entity.联系人;
_po.ShipTo = subsite.Trim().ToUpper();//发往
_po.OrderDate = string.IsNullOrEmpty(_entity.订单创建时间) ? DateTime.Now : DateTime.Parse(_entity.订单创建时间);
_po.DueDate = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期);
_po.StartDate = string.IsNullOrEmpty(_entity.订单开始时间) ? DateTime.Now : DateTime.Parse(_entity.订单开始时间);//订单日期
_po.EndDate = string.IsNullOrEmpty(_entity.订单截至日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.订单截至日期);
_po.MadeIn = "";
_po.Confirm = true;
_po.Buyer = _entity.采购员;
_po.BuyerPhone = _entity.采购员电话;
_po.Status = (int)PoState.Open;
if (p_modtype == BillModType.Contract)
{
_po.ScheduledOrder = true;
}
else
{
_po.ScheduledOrder = false;
}
_po.CreateUser = p_creator;
_po.CreateTime = p_time;
_po.Remark = _entity.备注; ;
_po.TaskID = taskid;
if (update_po != null)
{
_po.CommandType = "U";
}
else
{
_po.CommandType = "A";
}
_po.Domain = site.Trim().ToUpper();
_po.ModeType = ((int)p_modtype).ToString();
_po.Site = subsite.Trim().ToUpper();
_po.DataID = Guid.NewGuid();
_po.Pricelist = _entity.供应商编号 + subsite.Substring(1, 1) + subsite.Substring(3, 1);
_po.Taxclass = _entity.税率;
db.TED_PO_MSTR.Add(_po);
list.ForEach((itm) =>
{
int _poline = Int32.Parse(itm.行号);
var update_po_detail = scpdb.TB_PO_DETAIL.FirstOrDefault(t => t.PartCode == itm.零件号 && t.PoLine == _poline && t.PoBillNum == itm.订单编号 /*&& t.State == state*/ && t.Site == site && t.SubSite == subsite);
TED_PO_DET _PO_Detail = new TED_PO_DET();
_PO_Detail.GUID = Guid.NewGuid();
_PO_Detail.PurchaseOrder = itm.订单编号;
_PO_Detail.Line = Int32.Parse(itm.行号);
_PO_Detail.Currency = "CNY";
_PO_Detail.PoType = itm.订单类型;
_PO_Detail.PartCode = itm.零件号.ToUpper();
_PO_Detail.Qty = decimal.Parse(itm.数量);
_PO_Detail.QtyOpen = 0;
_PO_Detail.PackQty = 1;
_PO_Detail.Currency = itm.币种;
_PO_Detail.Price = string.IsNullOrEmpty(itm.单价) ? 0 : decimal.Parse(itm.单价);
_PO_Detail.PoUm = itm.单位;
_PO_Detail.LocUm = itm.单位;
_PO_Detail.Conv = 1;
_PO_Detail.DueDate = string.IsNullOrEmpty(_entity.要求到货日期) ? DateTime.Now : DateTime.Parse(_entity.要求到货日期);
_PO_Detail.Status = (int)PoState.Open;
_PO_Detail.CreateTime = DateTime.Parse(itm.订单创建时间);
_PO_Detail.StartDate = string.IsNullOrEmpty(_entity.零件开始时间) ? p_time : DateTime.Parse(_entity.零件开始时间);
_PO_Detail.EndDate = string.IsNullOrEmpty(_entity.零件截至日期) ? DateTime.Now.AddYears(10) : DateTime.Parse(_entity.零件截至日期);
_PO_Detail.CreateUser = p_creator;
_PO_Detail.TaskID = taskid;
if (update_po_detail != null)
{
_PO_Detail.CommandType = "U";
}
else
{
_PO_Detail.CommandType = "A";
}
_PO_Detail.DataID = Guid.NewGuid();
_PO_Detail.Domain = site.Trim().ToUpper();
_PO_Detail.Site = subsite.Trim().ToUpper();
_PO_Detail.Workorderlot = itm.加工单号;
_PO_Detail.PoType = itm.订单类型;
_PO_Detail.Operation = string.IsNullOrEmpty(itm.工序) ? 0 : int.Parse(itm.工序);
_PO_Detail.Location = itm.库位;
_PO_Detail.Firmdays = string.IsNullOrEmpty(itm.固定天数) ? 7 : int.Parse(itm.固定天数);
_PO_Detail.Scheduledays = string.IsNullOrEmpty(itm.日程天数) ? 7 : int.Parse(itm.日程天数);
_PO_Detail.Scheduleweeks = string.IsNullOrEmpty(itm.日程周数) ? 2 : int.Parse(itm.日程周数);
_PO_Detail.Schedulemonth = string.IsNullOrEmpty(itm.日程月数) ? 1 : int.Parse(itm.日程月数);
_PO_Detail.Supplieritem = itm.供应商零件;
_PO_Detail.Dliverypatterncode = itm.发货样式;
_PO_Detail.Deliverytimecode = itm.发货时间样式;
_PO_Detail.Transportdays = string.IsNullOrEmpty(itm.运输周期) ? 0 : int.Parse(itm.运输周期);
_PO_Detail.Pricelist = _entity.供应商编号 + subsite.Substring(1, 1) + subsite.Substring(3, 1);
db.TED_POD_DET.Add(_PO_Detail);
});
}
var ret = CREATE_TEA_TASK_SUB(db, true ,new TEA_TASK_SUB()
{
DataCount = 1,
TaskID = taskid,
TableName = "TED_PO_MSTR",
Site = subsite.Trim().ToUpper(),
Domain = site.Trim().ToUpper(),
CreateTime = p_time,
CreateUser = p_creator,
Creator = "SCP",
});
});
if (db.SaveChanges() != -1)
{
_ret.State = ReturnStatus.Succeed;
_ret.Result = true;
}
else
{
_ret.State = ReturnStatus.Failed;
_ret.Result = false;
_ret.Message = "数据更新失败!";
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "InsterPo", e.Message);
_ret.Result = false;
_ret.Message = e.InnerException.Message;
//throw e;
}
return _ret;
}
public static ResultObject UpdatePo(List p_po_list, string site, string p_creator, DateTime p_time, string subsite)
{
ScpEntities scpdb = EntitiesFactory.CreateScpInstance();
ExchangeCenterContext db = EntitiesFactory.CreateExchangeCenterInstance();
ResultObject _ret = new ResultObject();
try
{
foreach(var _num in p_po_list)
{
Guid taskid = Guid.NewGuid();
TED_PO_MSTR item = new TED_PO_MSTR();
var _mstr = scpdb.TB_PO.FirstOrDefault(t => t.PoBillNum == _num && t.State == (int)PoState.Open);
if (_mstr!= null)
{
// var uid = oldpolist.Select(p => p.UID).Max();
// var _mstr = db.TED_PO_MSTR.FirstOrDefault(t => t.UID == uid);
var oldpodetaillist = scpdb.TB_PO_DETAIL.Where(q => q.PoBillNum == _num && q.State == (int)PoState.Open).ToList() ;
item.CommandType = "U";
item.GUID = Guid.NewGuid();
item.DataID = _mstr.GUID;
item.Status = (int)PoState.Close;
item.TaskID = taskid;
item.PurchaseOrder = _mstr.PoBillNum;
item.Supplier = _mstr.VendId;
item.Contact = _mstr.Buyer;
item.ShipTo = _mstr.SubSite;//发往
item.OrderDate = _mstr.CreateTime;//订单日期
item.DueDate = Convert.ToDateTime(_mstr.EndTime);
item.StartDate = _mstr.CreateTime;//订单日期
item.EndDate =Convert.ToDateTime( _mstr.EndTime);
item.MadeIn = "";
item.Confirm = true;
item.Buyer = _mstr.Buyer;
item.BuyerPhone = _mstr.BuyerPhone;
item.ScheduledOrder = _mstr.ModType==1?true:false;
item.CreateUser = _mstr.CreateUser;
item.CreateTime = _mstr.CreateTime;
item.Remark = "订单关闭" ;
item.Domain = _mstr.Site;
item.ModeType = _mstr.ModType.ToString();
item.Site = _mstr.SubSite;
item.Pricelist = _mstr.Pricelist;
item.Taxclass = _mstr.Taxclass;
db.TED_PO_MSTR.Add(item);
if (oldpodetaillist.Count > 0)
{
foreach (var po_detail in oldpodetaillist)
{
TED_PO_DET _PO_Detail = new TED_PO_DET();
_PO_Detail.GUID = Guid.NewGuid();
_PO_Detail.PurchaseOrder = po_detail.PoBillNum;
_PO_Detail.Line = po_detail.PoLine;
_PO_Detail.Currency = po_detail.Currency;
_PO_Detail.PoType = po_detail.PoType;
_PO_Detail.PartCode = po_detail.PartCode.ToUpper();
_PO_Detail.Qty = po_detail.PlanQty;
_PO_Detail.QtyOpen = po_detail.ShippedQty;
_PO_Detail.PackQty = po_detail.PackQty;
_PO_Detail.Currency = po_detail.Currency;
_PO_Detail.Price = po_detail.Price;
_PO_Detail.PoUm = po_detail.PoUnit;
_PO_Detail.LocUm = po_detail.PoUnit;
_PO_Detail.Conv = 1;
_PO_Detail.Status = (int)PoState.Close;
_PO_Detail.CreateTime = po_detail.CreateTime;
_PO_Detail.StartDate = Convert.ToDateTime(po_detail.BeginTime);
_PO_Detail.EndDate = Convert.ToDateTime(po_detail.EndTime);
_PO_Detail.CreateUser = po_detail.CreateUser;
_PO_Detail.TaskID = taskid;
_PO_Detail.CommandType = "U";
_PO_Detail.DataID = po_detail.GUID;
_PO_Detail.Domain = po_detail.Site;
_PO_Detail.Site = po_detail.SubSite;
_PO_Detail.Workorderlot = po_detail.Workorderlot.ToString();
_PO_Detail.PoType = po_detail.PoType;
_PO_Detail.Operation = po_detail.Operation;
_PO_Detail.Location = po_detail.Location;
_PO_Detail.Firmdays = po_detail.Firmdays;
_PO_Detail.Scheduledays = po_detail.Scheduledays;
_PO_Detail.Scheduleweeks = po_detail.Scheduleweeks;
_PO_Detail.Schedulemonth = po_detail.Schedulemonth;
_PO_Detail.Supplieritem = po_detail.Supplieritem;
_PO_Detail.Dliverypatterncode = po_detail.Dliverypatterncode;
_PO_Detail.Deliverytimecode = po_detail.Deliverytimecode;
_PO_Detail.Transportdays = po_detail.Transportdays;
db.TED_POD_DET.Add(_PO_Detail);
}
}
var ret = CREATE_TEA_TASK_SUB(db, true, new TEA_TASK_SUB()
{
DataCount = 1,
TaskID = taskid,
TableName = "TED_PO_MSTR",
Site = subsite,
Domain = site,
CreateTime = p_time,
CreateUser = p_creator,
Creator = "SCP",
});
}
}
}
catch (Exception e)
{
_ret.State = ReturnStatus.Failed;
LogHelper.Writlog(LogHelper.LogType.Error, typeof(TEA_TASK_SUB), "InsterPo", e.Message);
_ret.Result = false;
_ret.ErrorList.Add(e);
throw e;
}
if (db.SaveChanges() != -1)
{
_ret.State = ReturnStatus.Succeed;
_ret.Result = true;
}
else
{
_ret.State = ReturnStatus.Failed;
_ret.Result = false;
_ret.Message = "数据更新失败!";
}
return _ret;
}
}
}