Browse Source

修改提交QAD接口

master
mahao 1 year ago
parent
commit
1df4c6c32a
  1. 236
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs

236
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs

@ -129,89 +129,91 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
[HttpPost] [HttpPost]
public virtual async Task<IActionResult> SubmitToQad(List<string> invbillNums) public virtual async Task<IActionResult> SubmitToQad(List<string> invbillNums)
{ {
var invoiceGrps = _settleAccountDbContext.Set<INVOICE_GRP>() for (var i = 0; i < invbillNums.Count; i++)
.Where(t => invbillNums.Contains(t.InvbillNum)) {
await SubmitToQadSingle(invbillNums[i]).ConfigureAwait(false);
}
return new OkResult();
}
/// <summary>
/// 提交到QAD
/// </summary>
private async Task SubmitToQadSingle(string invbillNum)
{
var invoiceGrp = _settleAccountDbContext.Set<INVOICE_GRP>()
.Where(t => t.InvbillNum == invbillNum)
.Where(t => t.State == SettleBillState.) .Where(t => t.State == SettleBillState.)
.ToList(); .FirstOrDefault();
invbillNums = invoiceGrps.Select(t => t.InvbillNum).ToList(); if (invoiceGrp == null)
{
return;
}
var invoiceGrpDetails = _settleAccountDbContext.Set<INVOICE_WAIT_DETAIL>() var invoiceGrpDetails = _settleAccountDbContext.Set<INVOICE_WAIT_DETAIL>()
.Where(t => invbillNums.Contains(t.InvbillNum)) .Where(t => t.InvbillNum == invbillNum)
.ToList(); .ToList();
var taskId = GuidGenerator.Create(); if (invoiceGrpDetails.Any())
var teaTaskSub = new TEA_TASK_SUB()
{ {
GUID = taskId, var tedSaInvs = new List<TED_SAS_INVOICE>();
TaskState = 0, var taskId = GuidGenerator.Create();
TaskID = taskId, var teaTaskSub = new TEA_TASK_SUB()
TableName = "TED_SAS_INVOICE",
Creator = "SAS",
Subscriber = "QAD",
Domain = "BJBMPT",
Site = "BJ02",
CreateTime = DateTime.Now,
UpdateTime = DateTime.Now,
};
var tedSaInvs = invoiceGrpDetails.Join(invoiceGrps, x => x.InvbillNum, y => y.InvbillNum, (x, y) =>
{
return new TED_SAS_INVOICE()
{ {
GUID = GuidGenerator.Create(), GUID = taskId,
Dataid = GuidGenerator.Create(), TaskState = 0,
Taskid = taskId, TaskID = taskId,
invoiceNumber = y.RealnvBillNum, TableName = "TED_SAS_INVOICE",
sasInvoiceNumber = y.InvbillNum, Creator = "SAS",
Customer = y.ClientCode, Subscriber = "QAD",
BillTo = y.ClientCode, Domain = "BJBMPT",
InvoiceDate = y.CreationTime,
Site = "BJ02", Site = "BJ02",
PartNumber = x.LU, CreateTime = DateTime.Now,
InvoiceQuatity = x.Qty, UpdateTime = DateTime.Now,
Price = x.PRICE,
InvoiceNetAmount = x.Amt,
InvoiceTaxAmount = Math.Round(x.Amt * 0.13m, 2),
TaxRate = 0.13m,
Location = $"C{y.ClientCode}",
begintime = x.BeginDate,
endtime = x.EndDate,
domain = "BJBMPT"
}; };
}).ToList();
var invoiceGrpTedSaInvs = invoiceGrps.Select(t => for (var i = 0; i < invoiceGrpDetails.Count; i++)
{
return new TED_SAS_INVOICE()
{ {
GUID = GuidGenerator.Create(), var invoiceGrpDetail = invoiceGrpDetails[i];
Taskid = taskId, tedSaInvs.Add(new TED_SAS_INVOICE()
invoiceNumber = t.RealnvBillNum, {
sasInvoiceNumber = t.InvbillNum, GUID = GuidGenerator.Create(),
Customer = t.ClientCode, Dataid = GuidGenerator.Create(),
BillTo = t.ClientCode, Taskid = taskId,
InvoiceDate = t.CreationTime, invoiceNumber = invoiceGrp.RealnvBillNum,
Site = "BJ02", sasInvoiceNumber = invoiceGrp.InvbillNum,
TaxRate = 0.13m, Customer = invoiceGrp.ClientCode,
Location = $"C{t.ClientCode}", BillTo = invoiceGrp.ClientCode,
InvoiceTax = t.TaxDiff, InvoiceDate = invoiceGrp.CreationTime,
domain = "BJBMPT" Site = "BJ02",
}; PartNumber = invoiceGrpDetail.PartCode,
}); InvoiceQuatity = invoiceGrpDetail.Qty,
Price = invoiceGrpDetail.PRICE,
InvoiceNetAmount = invoiceGrpDetail.Amt,
InvoiceTaxAmount = Math.Round(invoiceGrpDetail.Amt * 0.13m, 2),
TaxRate = 0.13m,
Location = $"C{invoiceGrp.ClientCode}",
begintime = invoiceGrpDetail.BeginDate,
endtime = invoiceGrpDetail.EndDate,
domain = "BJBMPT",
LINE = (i + 1).ToString()
});
}
tedSaInvs.FirstOrDefault().InvoiceTaxAmount += invoiceGrp.TaxDiff;
tedSaInvs.AddRange(invoiceGrpTedSaInvs);
if (tedSaInvs.Any())
{
//红冲发票提交QAD //红冲发票提交QAD
await SubmitToQadHongChong(invoiceGrps.Select(t => t.ParentInvbillNum).ToList()).ConfigureAwait(false); if (!string.IsNullOrEmpty(invoiceGrp.ParentInvbillNum))
{
await SubmitToQadHongChong(invoiceGrp.ParentInvbillNum).ConfigureAwait(false);
}
await _exChangeCenterDbContext.Set<TEA_TASK_SUB>().AddAsync(teaTaskSub).ConfigureAwait(false); await _exChangeCenterDbContext.Set<TEA_TASK_SUB>().AddAsync(teaTaskSub).ConfigureAwait(false);
await _exChangeCenterDbContext.Set<TED_SAS_INVOICE>().AddRangeAsync(tedSaInvs).ConfigureAwait(false); await _exChangeCenterDbContext.Set<TED_SAS_INVOICE>().AddRangeAsync(tedSaInvs).ConfigureAwait(false);
invoiceGrps.ForEach(t => t.State = SettleBillState.QAD); //invoiceGrp.State = SettleBillState.已提交QAD;
await _exChangeCenterDbContext.SaveChangesAsync().ConfigureAwait(false); await _exChangeCenterDbContext.SaveChangesAsync().ConfigureAwait(false);
var retryPolicyAsync = Policy.Handle<Exception>().WaitAndRetryAsync(new[] { var retryPolicyAsync = Policy.Handle<Exception>().WaitAndRetryAsync(new[] {
TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1),
TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5),
@ -223,74 +225,70 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
}); });
await retryPolicyAsync.ExecuteAsync(async () => await _settleAccountDbContext.SaveChangesAsync().ConfigureAwait(false)).ConfigureAwait(false); await retryPolicyAsync.ExecuteAsync(async () => await _settleAccountDbContext.SaveChangesAsync().ConfigureAwait(false)).ConfigureAwait(false);
} }
await Task.CompletedTask.ConfigureAwait(false);
return new OkResult();
} }
/// <summary> /// <summary>
/// 红冲发票提交到QAD /// 红冲发票提交到QAD
/// </summary> /// </summary>
private async Task SubmitToQadHongChong(List<string> invbillNums) private async Task SubmitToQadHongChong(string invbillNum)
{ {
if (!invbillNums.Any()) var invoiceGrp = _settleAccountDbContext.Set<INVOICE_GRP>()
.Where(t => t.State == SettleBillState.QAD)
.Where(t => t.InvbillNum == invbillNum)
.FirstOrDefault();
if (invoiceGrp == null)
{ {
return; return;
} }
var invoiceGrps = _settleAccountDbContext.Set<INVOICE_GRP>()
.Where(t => t.State == SettleBillState.QAD)
.Where(t => invbillNums.Contains(t.InvbillNum))
.ToList();
invbillNums = invoiceGrps.Select(t => t.InvbillNum).ToList();
var invoiceGrpDetails = _settleAccountDbContext.Set<INVOICE_WAIT_DETAIL>() var invoiceGrpDetails = _settleAccountDbContext.Set<INVOICE_WAIT_DETAIL>()
.Where(t => invbillNums.Contains(t.InvbillNum)) .Where(t => t.InvbillNum == invbillNum)
.ToList(); .ToList();
var taskId = GuidGenerator.Create(); if (invoiceGrpDetails.Any())
var teaTaskSub = new TEA_TASK_SUB()
{
GUID = taskId,
TaskState = 0,
TaskID = taskId,
TableName = "TED_SAS_INVOICE",
Creator = "SAS",
Subscriber = "QAD",
Domain = "BJBMPT",
Site = "BJ02",
CreateTime = DateTime.Now,
UpdateTime = DateTime.Now,
};
var tedSaInvs = invoiceGrpDetails.Join(invoiceGrps, x => x.InvbillNum, y => y.InvbillNum, (x, y) =>
{ {
return new TED_SAS_INVOICE() var tedSaInvs = new List<TED_SAS_INVOICE>();
var taskId = GuidGenerator.Create();
var teaTaskSub = new TEA_TASK_SUB()
{ {
GUID = GuidGenerator.Create(), GUID = taskId,
Dataid = GuidGenerator.Create(), TaskState = 0,
Taskid = taskId, TaskID = taskId,
invoiceNumber = y.RealnvBillNum, TableName = "TED_SAS_INVOICE",
sasInvoiceNumber = y.InvbillNum, Creator = "SAS",
Customer = y.ClientCode, Subscriber = "QAD",
BillTo = y.ClientCode, Domain = "BJBMPT",
InvoiceDate = y.CreationTime,
Site = "BJ02", Site = "BJ02",
PartNumber = x.LU, CreateTime = DateTime.Now,
InvoiceQuatity = -x.Qty, UpdateTime = DateTime.Now,
Price = x.PRICE,
InvoiceNetAmount = x.Amt,
InvoiceTaxAmount = Math.Round(x.Amt * 0.13m, 2),
TaxRate = 0.13m,
Location = $"C{y.ClientCode}",
begintime = x.BeginDate,
endtime = x.EndDate,
domain = "BJBMPT"
}; };
}).ToList();
if (tedSaInvs.Any()) for (var i = 0; i < invoiceGrpDetails.Count; i++)
{ {
var invoiceGrpDetail = invoiceGrpDetails[i];
tedSaInvs.Add(new TED_SAS_INVOICE()
{
GUID = GuidGenerator.Create(),
Dataid = GuidGenerator.Create(),
Taskid = taskId,
invoiceNumber = invoiceGrp.RealnvBillNum,
sasInvoiceNumber = invoiceGrp.InvbillNum,
Customer = invoiceGrp.ClientCode,
BillTo = invoiceGrp.ClientCode,
InvoiceDate = invoiceGrp.CreationTime,
Site = "BJ02",
PartNumber = invoiceGrpDetail.PartCode,
InvoiceQuatity = -invoiceGrpDetail.Qty,
Price = invoiceGrpDetail.PRICE,
InvoiceNetAmount = invoiceGrpDetail.Amt,
InvoiceTaxAmount = Math.Round(invoiceGrpDetail.Amt * 0.13m, 2),
TaxRate = 0.13m,
Location = $"C{invoiceGrp.ClientCode}",
begintime = invoiceGrpDetail.BeginDate,
endtime = invoiceGrpDetail.EndDate,
domain = "BJBMPT",
LINE = (i + 1).ToString()
});
}
await _exChangeCenterDbContext.Set<TEA_TASK_SUB>().AddAsync(teaTaskSub).ConfigureAwait(false); await _exChangeCenterDbContext.Set<TEA_TASK_SUB>().AddAsync(teaTaskSub).ConfigureAwait(false);
await _exChangeCenterDbContext.Set<TED_SAS_INVOICE>().AddRangeAsync(tedSaInvs).ConfigureAwait(false); await _exChangeCenterDbContext.Set<TED_SAS_INVOICE>().AddRangeAsync(tedSaInvs).ConfigureAwait(false);
} }
@ -492,8 +490,8 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
SettleDate = itm.SettleDate, SettleDate = itm.SettleDate,
ProductionGroup = itm.ProductionGroup, ProductionGroup = itm.ProductionGroup,
LineCode = itm.LineCode, LineCode = itm.LineCode,
ContractID=itm.ContractID ContractID = itm.ContractID
}; };
entity.INVOICE_WAIT_DETAIL_BJ = bjquery.OrderBy(p => p.LineCode).ToList(); entity.INVOICE_WAIT_DETAIL_BJ = bjquery.OrderBy(p => p.LineCode).ToList();
@ -588,7 +586,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
SettleGroupNum = p.FirstOrDefault().SettleGroupNum, SettleGroupNum = p.FirstOrDefault().SettleGroupNum,
} }
); );
if (first.BusinessType == EnumBusinessType.ZhiGongJianBBAC || first.BusinessType==EnumBusinessType.YinDuJian)//BBAC直供未结 if (first.BusinessType == EnumBusinessType.ZhiGongJianBBAC || first.BusinessType == EnumBusinessType.YinDuJian)//BBAC直供未结
{ {
entity.INVOICE_MAP_GROUP = mdtos; entity.INVOICE_MAP_GROUP = mdtos;
//var all = entity.INVOICE_NOT_SETTLE.Select(p => p.SettleGroupNum).Distinct().ToList();//全部分组号 //var all = entity.INVOICE_NOT_SETTLE.Select(p => p.SettleGroupNum).Distinct().ToList();//全部分组号
@ -755,7 +753,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
_excel.Append(hbpounsettle, "未结零件汇总"); _excel.Append(hbpounsettle, "未结零件汇总");
} }
} }
if (first.BusinessType == EnumBusinessType.ZhiGongJianBBAC || first.BusinessType== EnumBusinessType.YinDuJian) if (first.BusinessType == EnumBusinessType.ZhiGongJianBBAC || first.BusinessType == EnumBusinessType.YinDuJian)
{ {
if (jitunsettle != null) if (jitunsettle != null)
{ {

Loading…
Cancel
Save