From 89a166603afb7ee4974a1032939ee0474e0a33e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Mon, 11 Sep 2023 13:48:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Bases/BA_SERVICE.cs | 25 ++- .../Bases/CAN_SA_SERVICE.cs | 38 ++-- .../Entities/BQ/BBAC_BA_SERVICE.cs | 16 +- .../Entities/BQ/BBAC_CAN_SA_SERVICE.cs | 11 +- .../Entities/BQ/HBPO_CAN_SA_SERVICE.cs | 6 +- .../Entities/BQ/PUB_CAN_SA_SERVICE.cs | 6 +- .../BaseDomainServices/BaseDomainService.cs | 39 +++- .../Entities/BQ/Managers/INV_MNG.cs | 3 - .../Entities/BQ/Managers/INV_MNG_EXT.cs | 188 ++++++------------ 9 files changed, 154 insertions(+), 178 deletions(-) diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/BA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/BA_SERVICE.cs index c85fa2f2..3d5f2251 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/BA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/BA_SERVICE.cs @@ -525,19 +525,7 @@ namespace Win.Sfs.SettleAccount.Bases - - - - - - - - - - - - - + /// /// 校验规则 @@ -547,6 +535,10 @@ namespace Win.Sfs.SettleAccount.Bases /// protected async Task> CheckInvoiceGenerationRules(List dto1s, List p_pricelist, EnumBusinessType p_businessType) where T : SA_CAN_BASE { + var first= dto1s.FirstOrDefault(); + var usepriceList = p_pricelist.Where(p => p.ClientCode == first.Site && p.IsCancel == false).ToList(); + var errorlist= _baseservice.CheckPriceListContinuity(usepriceList); + var inner = from d in dto1s join p in p_pricelist on d.LU equals p.LU where @@ -593,6 +585,13 @@ namespace Win.Sfs.SettleAccount.Bases keyname = "交付识别号"; break; } + foreach (var error in errorlist) + { + errorList.Add(new ERR_EXP_DTO() { ItemCode = error.LU, CustomCode = $"{name}", Message = $"LU:{error.LU},价格表开始日期:{error.BeginTime}价格表结束日期:{error.EndTime}在用价格时间段有交集或价格时间不连续!" }); + } + + + foreach (var error in left) { errorList.Add(new ERR_EXP_DTO() { ItemCode = error.LU, CustomCode = $"{name}", Message = $"LU:{error.LU}{keyname}:{error.PN},下线日期:{error.SettleDate}没有对应区间销售价格表!" }); diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/CAN_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/CAN_SA_SERVICE.cs index 013bec78..6467f925 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/CAN_SA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/CAN_SA_SERVICE.cs @@ -26,6 +26,7 @@ using Volo.Abp.TenantManagement.EntityFrameworkCore; using Volo.Abp.Uow; using Win.Abp.Snowflakes; using Win.Sfs.BaseData.ImportExcelCommon; +using Win.Sfs.SettleAccount.Bases.DomainServices; using Win.Sfs.SettleAccount.CommonManagers; using Win.Sfs.SettleAccount.Constant; using Win.Sfs.SettleAccount.Entities.BQ; @@ -54,15 +55,15 @@ namespace Win.Sfs.SettleAccount.Bases protected readonly INormalEfCoreRepository _detailRepository; private readonly IExcelImportAppService _excelImportService; protected readonly INV_MNG _invmng; - + private readonly BaseDomainService _baseservice; protected CAN_SA_SERVICE( IExcelImportAppService excelImportService, ISnowflakeIdGenerator snowflakeIdGenerator, ICommonManager commonManager, INormalEfCoreRepository repository, INormalEfCoreRepository detailRepository, - INV_MNG invmng - + INV_MNG invmng, + BaseDomainService baseservice ) : base(excelImportService, snowflakeIdGenerator, commonManager) { @@ -70,6 +71,7 @@ namespace Win.Sfs.SettleAccount.Bases _excelImportService = excelImportService; _repository = repository; _detailRepository = detailRepository; + _baseservice = baseservice; } /// @@ -259,8 +261,12 @@ namespace Win.Sfs.SettleAccount.Bases protected async Task> CheckInvoiceGenerationRules(List dto1s,string p_site, List p_pricelist,EnumBusinessType p_businessType) where T : SA_CAN_BASE { - //var maxDate = p_pricelist.Max(p => p.Date); - + //var maxDate = p_pricelist.Max(p => p.Date); + + var first = dto1s.FirstOrDefault(); + var usepriceList = p_pricelist.Where(p => p.ClientCode == first.Site && p.IsCancel == false).ToList(); + var errorlist = _baseservice.CheckPriceListContinuity(usepriceList); + var prices = p_pricelist.Where(p =>p.ClientCode==p_site && p.IsCancel == false).ToList(); var inner = from d in dto1s @@ -277,24 +283,6 @@ namespace Win.Sfs.SettleAccount.Bases select d; - - - //var maxDate = p_pricelist.Max(p => p.Date); - - //var left = from a in dto1s - // join b in (from p in p_pricelist - // where p.Date == maxDate - // select p) on a.LU equals b.LU into joinedResult - // from jr in joinedResult.DefaultIfEmpty() - // where a.SettleDate >= jr.BeginTime && a.SettleDate <= jr.EndTime && jr.LU == null - // select a; - - - - - - - List errorList = new List (); string name = string.Empty; string keyname = string.Empty; @@ -329,6 +317,10 @@ namespace Win.Sfs.SettleAccount.Bases keyname = "交付识别号"; break; } + foreach (var error in errorlist) + { + errorList.Add(new ERR_EXP_DTO() { ItemCode = error.LU, CustomCode = $"{name}", Message = $"LU:{error.LU},价格表开始日期:{error.BeginTime}价格表结束日期:{error.EndTime}在用价格时间段有交集或价格时间不连续!" }); + } foreach (var error in left) { errorList.Add(new ERR_EXP_DTO() { ItemCode = error.LU, CustomCode = $"{name}", Message = $"LU:{error.LU}{keyname}:{error.PN},下线日期:{error.SettleDate}没有对应区间销售价格表!" }); diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_BA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_BA_SERVICE.cs index 86bb6fcc..0fb6605e 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_BA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_BA_SERVICE.cs @@ -4,6 +4,7 @@ using DocumentFormat.OpenXml.Spreadsheet; using EFCore.BulkExtensions; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.EntityFrameworkCore; using NPOI.HPSF; using SettleAccount.Domain.BQ; @@ -451,6 +452,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ }; var dtos = q.ToList(); + + + + + var testls = dtos.Where(p => string.IsNullOrEmpty(p.LU)).ToList(); + if (dtos != null && dtos.Count > 0) { if (invbillnum.Substring(0, 3) == "INV")//一次开票重开 @@ -465,15 +472,17 @@ namespace Win.Sfs.SettleAccount.Entities.BQ var entities = await ReissueSecInvoiceExtend(bbaclist, adjlist, dtos, version, invbillnum); var ls = ObjectMapper.Map, List>(entities); invBilllist.AddRange(ls); - } - } else { throw new UserFriendlyException($"不存发票号为:{invbillnum}发票"); } } + + var als= invBilllist.Where(p => string.IsNullOrEmpty(p.PartCode)).ToList(); + + var invlist=invBilllist.OrderBy(p => p.PartCode).ToList(); return new JsonResult(new { Code = 200, Data= invlist }); @@ -585,7 +594,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ { var entities = await ReissueFirstInvoiceExtend(bbaclist, adjlist, dtos, version, invbillnum); var ls = ObjectMapper.Map, List>(entities); - if (ls.Count > 0) { var invlist = ls.Select(p => p.InvbillNum).Distinct(); @@ -619,7 +627,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ var invBill = new INVOICE_REPEAT_DTO(); var invls = ls.Where(p => p.InvbillNum == itm).ToList(); var entitylist = entities.Where(p => p.InvbillNum == itm).ToList(); - var tax = inv.Tax;//税率 + var tax = inv.Tax==0?0.13m:inv.Tax;//税率 var amt = entitylist.Sum(p => p.Amt);//税前 var taxamt = amt + Math.Round(amt * tax, 2);//税后 var realamt = Math.Round(amt * tax, 2);//税额 diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs index 51038c01..b731a175 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs @@ -31,6 +31,7 @@ using Win.Sfs.SettleAccount.CommonManagers; using Volo.Abp; using Win.Sfs.SettleAccount.Entities.BQ.Temp; using Volo.Abp.Uow; +using Win.Sfs.SettleAccount.Bases.DomainServices; namespace Win.Sfs.SettleAccount.Entities.BQ { @@ -65,10 +66,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ INV_MNG invmng, INormalEfCoreRepository notRepository, INormalEfCoreRepository priceRepository, - BBAC_CAN_SA_MNG bbacMng - + BBAC_CAN_SA_MNG bbacMng, + BaseDomainService baseservice ) - : base(excelImportService, snowflakeIdGenerator, commonManager, repository, detailRepository, invmng) + : base(excelImportService, snowflakeIdGenerator, commonManager, repository, detailRepository, invmng,baseservice) { _notRepository = notRepository; _bbacMng = bbacMng; @@ -86,6 +87,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ [UnitOfWork(false)] public async Task GenerateInvoice([FromBody] string invbillNum) { + var main =await _bbacMng.GetMainAsync(invbillNum); if (main != null) { @@ -95,8 +97,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ } var entitys = await _bbacMng.GetDetalListAsync(invbillNum);//可结算 var priceList = _priceRepository.Where(p => p.IsCancel == false).ToList(); - - ;//价格单 + //价格单 var errorList = await CheckInvoiceGenerationRules(entitys,main.Site,priceList, main.BusinessType);//校验生成规则 if (errorList.Count() > 0) { diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_CAN_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_CAN_SA_SERVICE.cs index 9392f435..aecbd853 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_CAN_SA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_CAN_SA_SERVICE.cs @@ -19,6 +19,7 @@ using Volo.Abp.Uow; using Win.Abp.Snowflakes; using Win.Sfs.BaseData.ImportExcelCommon; using Win.Sfs.SettleAccount.Bases; +using Win.Sfs.SettleAccount.Bases.DomainServices; using Win.Sfs.SettleAccount.CommonManagers; using Win.Sfs.SettleAccount.Constant; using Win.Sfs.SettleAccount.Entities.BQ.Dtos; @@ -61,8 +62,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ INV_MNG invmng, INormalEfCoreRepository notRepository, INormalEfCoreRepository priceRepository, - HBPO_CAN_SA_MNG hbpoMng - ) : base(excelImportService, snowflakeIdGenerator, commonManager, repository, detailRepository, invmng) + HBPO_CAN_SA_MNG hbpoMng, + BaseDomainService baseservice + ) : base(excelImportService, snowflakeIdGenerator, commonManager, repository, detailRepository, invmng,baseservice) { _priceRepository = priceRepository; diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_CAN_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_CAN_SA_SERVICE.cs index 6941780c..64f2a82a 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_CAN_SA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_CAN_SA_SERVICE.cs @@ -15,6 +15,7 @@ using Volo.Abp.Uow; using Win.Abp.Snowflakes; using Win.Sfs.BaseData.ImportExcelCommon; using Win.Sfs.SettleAccount.Bases; +using Win.Sfs.SettleAccount.Bases.DomainServices; using Win.Sfs.SettleAccount.CommonManagers; using Win.Sfs.SettleAccount.Constant; using Win.Sfs.SettleAccount.Entities.BQ.Dtos; @@ -59,9 +60,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ INV_MNG invmng, INormalEfCoreRepository priceRepository, INormalEfCoreRepository pricebjRepository, - PUB_CAN_SA_MNG pubMng + PUB_CAN_SA_MNG pubMng, + BaseDomainService baseservice - ) : base(excelImportService, snowflakeIdGenerator, commonManager, repository, detailRepository, invmng) + ) : base(excelImportService, snowflakeIdGenerator, commonManager, repository, detailRepository, invmng,baseservice) { _pubMng = pubMng; _priceRepository = priceRepository; diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Bases/BaseDomainServices/BaseDomainService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Bases/BaseDomainServices/BaseDomainService.cs index 3a38ddd7..60a0965e 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Bases/BaseDomainServices/BaseDomainService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Bases/BaseDomainServices/BaseDomainService.cs @@ -201,13 +201,43 @@ namespace Win.Sfs.SettleAccount.Bases.DomainServices return errorList; } + + /// + /// 价格表时间是否连续 + /// + /// + /// + public List CheckPriceListContinuity(List priceList) + { + List prices = new List(); + if (priceList.Count <= 1) + return prices; // 只有一个或零个价格条目 + + var sortedList = priceList.OrderBy(item => item.BeginTime).ToList(); + + for (int i = 1; i < sortedList.Count; i++) + { + if (sortedList[i].LU== sortedList[i - 1].LU && sortedList[i].BeginTime != sortedList[i - 1].EndTime.AddDays(1)) + { + prices.Add(sortedList[i]); + } + } + return prices; // 所有价格时间都连续 + } + + + public static bool IsTimeOverlap(PriceList range1, PriceList range2) + { + return range1.BeginTime <= range2.EndTime && range1.EndTime >= range2.BeginTime; + } + public async Task> CheckPriceList(List p_list,string p_site,bool isBj=false) where TEntity : ISA_BASE,new() { List errorList = new List(); if (isBj == true) { - var pricebjlist = _pricebjRepository.ToList(); + var pricebjlist = _pricebjRepository.Where(p => p.ClientCode == p_site && p.IsCancel == false).ToList(); var inner = from d in p_list join p in pricebjlist on d.LU equals p.LU @@ -226,10 +256,11 @@ namespace Win.Sfs.SettleAccount.Bases.DomainServices } else { - var pricebjlist = _priceRepository.Where(p=>p.ClientCode==p_site).ToList(); - + var pricelist = _priceRepository.Where(p=>p.ClientCode==p_site && p.IsCancel==false).ToList(); + + var inner = from d in p_list - join p in pricebjlist on d.LU equals p.LU + join p in pricelist on d.LU equals p.LU where d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime select d; diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG.cs index 53d59c65..de8aabdc 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG.cs @@ -1370,12 +1370,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers BeginDate = itm.Key.BeginDate, EndDate = itm.Key.EndDate }).ToList(); - - decimal amt = detailDtos.Sum(k => k.Amt);//金额 decimal txtAmt =detailDtos.Sum(k => k.Amt) + Math.Round(detailList.Sum(k => k.Amt) * 0.13m, 2);//税后金额 decimal realAmt = Math.Round(detailDtos.Sum(k => k.Amt) * 0.13m, 2);//税额 - //decimal amt = detailDtos.Sum(k => k.Amt); //decimal txtAmt = Math.Round(detailDtos.Sum(k => k.Amt), 2); var mapList = new List(); diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG_EXT.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG_EXT.cs index 4507787b..dcbbde6d 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG_EXT.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG_EXT.cs @@ -194,33 +194,33 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers { detailList.AddRange(_entityDetailList); } - decimal amt = detailList.Sum(k => k.Amt); - decimal txtAmt = Math.Round(detailList.Sum(k => k.Amt), 2); - + decimal amt = detailList.Sum(k => k.Amt);//金额 + decimal txtAmt = detailList.Sum(k => k.Amt) + Math.Round(detailList.Sum(k => k.Amt) * 0.13m, 2);//税后金额 + decimal readAmt = Math.Round(detailList.Sum(k => k.Amt) * 0.13m, 2);//税额 var contractList = ls.Select(p => p.ContractDocID).Distinct(); var _groupList = dtos.Where(p => contractList.Contains(p.ContractDocID)).GroupBy(p => new { p.GroupNum }) .Select(p => new { GroupNum = p.Key.GroupNum, Amt = p.Sum(itm => itm.Amt) }).Distinct(); //var _groupList = dtos.GroupBy(p => new { p.GroupNum }) // .Select(p => new { GroupNum = p.Key.GroupNum, Amt = p.Sum(itm => itm.Amt) }).Distinct(); - List group1 = new List(); + //List group1 = new List(); - foreach (var en in _groupList) - { - group1.Add( - new INVOICE_MAP_GROUP( - guid: GuidGenerator.Create(), - version: p_version, - invbillNum: key, - invGroupNum: p_InvGroupNum, - settleGroupNum: en.GroupNum, - amt: en.Amt, - extend1: string.Empty, - extend2: string.Empty)); - } - if (group1.Count > 0) - { - groupList.AddRange(group1); - } + //foreach (var en in _groupList) + //{ + // group1.Add( + // new INVOICE_MAP_GROUP( + // guid: GuidGenerator.Create(), + // version: p_version, + // invbillNum: key, + // invGroupNum: p_InvGroupNum, + // settleGroupNum: en.GroupNum, + // amt: en.Amt, + // extend1: string.Empty, + // extend2: string.Empty)); + //} + //if (group1.Count > 0) + //{ + // groupList.AddRange(group1); + //} var invbill = new INVOICE_GRP (guid: GuidGenerator.Create(), @@ -238,26 +238,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers preTaxDiff: 0, taxDiff: 0, clientCode: string.Empty, - realAmt: 0 + realAmt: readAmt ); invlist.Add(invbill); } - - //await _repository.DbContext.BulkInsertAsync(invlist); - //await _repository.DbContext.BulkInsertAsync(groupList); - //await _repository.DbContext.BulkInsertAsync(detailList); - //if(salist.Count>0) - //{ - // await _repository.DbContext.BulkUpdateAsync(salist); - //} - //if (adjlist.Count > 0) - //{ - // await _repository.DbContext.BulkUpdateAsync(adjlist); - //} - - //await _repository.DbContext.BulkInsertAsync(notDetialList); - //_invls = invlist.Select(p => p.InvbillNum).ToList(); } return detailList; @@ -342,13 +327,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers // adjdetails.Add(detail); // } //} - - var detailDtos = dtos.Where(p => ls.Contains(p.GroupNum)).GroupBy(p => new { p.InvGroupNum, p.PartCode, p.Price, p.BeginDate, p.EndDate, p.ContractDocID }) + var detailDtos = dtos.Where(p => ls.Contains(p.GroupNum)).GroupBy(p => new { p.InvGroupNum, p.PartCode,p.LU, p.Price, p.BeginDate, p.EndDate, p.ContractDocID }) .Select(itm => new { PartCode = itm.Key.PartCode, InvGroupNum = itm.Key.InvGroupNum, - LU = itm.Key.PartCode, + LU = itm.Key.LU, ContactDocID = itm.Key.ContractDocID, Price = itm.Key.Price, Amt = Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2), @@ -357,27 +341,28 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers EndDate = itm.Key.EndDate }) .ToList(); - decimal amt = detailDtos.Sum(k => k.Amt); - decimal txtAmt = Math.Round(detailDtos.Sum(k => k.Amt), 2); - var mapList = new List(); - foreach (var groupnum in ls) - { - mapList.Add(new INVOICE_MAP_GROUP( - guid: GuidGenerator.Create(), - version: p_version, - invbillNum: key, - invGroupNum: p_InvGroupNum, - settleGroupNum: groupnum, - amt: 0, - extend1: string.Empty, - extend2: string.Empty - ) - ); - } - if (mapList.Count > 0) - { - groupList.AddRange(mapList); - } + decimal amt = detailDtos.Sum(k => k.Amt);//金额 + decimal txtAmt = detailDtos.Sum(k => k.Amt) + Math.Round(detailList.Sum(k => k.Amt) * 0.13m, 2);//税后金额 + decimal realAmt = Math.Round(detailDtos.Sum(k => k.Amt) * 0.13m, 2);//税额 + //var mapList = new List(); + //foreach (var groupnum in ls) + //{ + // mapList.Add(new INVOICE_MAP_GROUP( + // guid: GuidGenerator.Create(), + // version: p_version, + // invbillNum: key, + // invGroupNum: p_InvGroupNum, + // settleGroupNum: groupnum, + // amt: 0, + // extend1: string.Empty, + // extend2: string.Empty + // ) + // ); + //} + //if (mapList.Count > 0) + //{ + // groupList.AddRange(mapList); + //} List _entityDetailList = new List(); foreach (var detail in detailDtos) { @@ -444,7 +429,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers preTaxDiff: 0, taxDiff: 0, clientCode: string.Empty, - realAmt: 0 + realAmt: realAmt ); invlist.Add(invbill); } @@ -635,8 +620,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers { detailList.AddRange(_entityDetailList); } - decimal amt = detailList.Sum(k => k.Amt); - decimal txtAmt = Math.Round(detailList.Sum(k => k.Amt), 2); + decimal amt = detailList.Sum(k => k.Amt);//金额 + decimal txtAmt = detailList.Sum(k => k.Amt) + Math.Round(detailList.Sum(k => k.Amt) * 0.13m, 2);//税后金额 + decimal realAmt = Math.Round(detailList.Sum(k => k.Amt) * 0.13m, 2);//税额 var invbill = new INVOICE_GRP (guid: GuidGenerator.Create(), @@ -654,24 +640,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers preTaxDiff:0, taxDiff:0, clientCode:string.Empty, - realAmt:0 + realAmt:realAmt ); invlist.Add(invbill); } - //await _repository.DbContext.BulkInsertAsync(invlist); - ////await _repository.DbContext.BulkInsertAsync(groupList); - //await _repository.DbContext.BulkInsertAsync(detailList); - //if (salist.Count > 0) - //{ - // await _repository.DbContext.BulkUpdateAsync(salist); - //} - //if (adjlist.Count > 0) - //{ - // await _repository.DbContext.BulkUpdateAsync(adjlist); - //} - //await _repository.DbContext.BulkInsertAsync(notDetialList); - //_invls = invlist.Select(p => p.InvbillNum).ToList(); + } return detailList; } @@ -776,12 +750,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers adjdetails.Add(detail); } } - var detailDtos = dtos.Where(p => ls.Contains(p.GroupNum)).GroupBy(p => new { p.InvGroupNum, p.PartCode, p.Price, p.BeginDate, p.EndDate, p.ContractDocID }) + var detailDtos = dtos.Where(p => ls.Contains(p.GroupNum)).GroupBy(p => new { p.InvGroupNum, p.PartCode, p.Price, p.BeginDate, p.EndDate, p.ContractDocID,p.LU }) .Select(itm => new { PartCode=itm.Key.PartCode, InvGroupNum = itm.Key.InvGroupNum, - LU = itm.Key.PartCode, + LU = itm.Key.LU, ContactDocID = itm.Key.ContractDocID, Price = itm.Key.Price, Amt = Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2), @@ -790,8 +764,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers EndDate = itm.Key.EndDate }) .ToList(); - decimal amt = detailDtos.Sum(k => k.Amt); - decimal txtAmt = Math.Round(detailDtos.Sum(k => k.Amt), 2); + decimal amt = detailDtos.Sum(k => k.Amt);//金额 + decimal txtAmt = detailDtos.Sum(k => k.Amt) + Math.Round(detailDtos.Sum(k => k.Amt) * 0.13m, 2);//税后金额 + decimal realAmt = Math.Round(detailDtos.Sum(k => k.Amt) * 0.13m, 2);//税额 var mapList = new List(); foreach (var groupnum in ls) { @@ -876,27 +851,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers preTaxDiff: 0, taxDiff: 0, clientCode: string.Empty, - realAmt: 0 + realAmt: realAmt ); invlist.Add(invbill); } - //await _repository.DbContext.BulkInsertAsync(invlist); - //await _repository.DbContext.BulkInsertAsync(groupList); - //await _repository.DbContext.BulkInsertAsync(detailList); - - //if(salist.Count>0) - //{ - // await _repository.DbContext.BulkUpdateAsync(salist); - //} - //if (adjlist.Count > 0) - //{ - // await _repository.DbContext.BulkUpdateAsync(adjlist); - //} - //if (notDetialList.Count > 0) - //{ - // await _repository.DbContext.BulkInsertAsync(notDetialList); - //} - //_invls = invlist.Select(p => p.InvbillNum).ToList(); + } return detailList; @@ -1059,12 +1018,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers } } - var detailDtos = dtos.Where(p => ls.Contains(p.GroupNum)).GroupBy(p => new { p.InvGroupNum, p.PartCode, p.Price, p.BeginDate, p.EndDate, p.ContractDocID }) + var detailDtos = dtos.Where(p => ls.Contains(p.GroupNum)).GroupBy(p => new { p.InvGroupNum, p.PartCode, p.Price, p.BeginDate, p.EndDate, p.ContractDocID,p.LU }) .Select(itm => new { PartCode = itm.Key.PartCode, InvGroupNum = itm.Key.InvGroupNum, - LU = itm.Key.PartCode, + LU = itm.Key.LU, ContactDocID = itm.Key.ContractDocID, Price = itm.Key.Price, Amt = Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2), @@ -1097,8 +1056,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers PartName = inv1.GetProperty("PartName", ""),//零件名称 }; - decimal amt = detailDtos.Sum(k => k.Amt); - decimal txtAmt = Math.Round(detailDtos.Sum(k => k.Amt), 2); + decimal amt = detailDtos.Sum(k => k.Amt);//金额 + decimal txtAmt = detailDtos.Sum(k => k.Amt) + Math.Round(detailDtos.Sum(k => k.Amt) * 0.13m, 2);//税后金额 + decimal readAmt = Math.Round(detailDtos.Sum(k => k.Amt) * 0.13m, 2);//税额 var mapList = new List(); foreach (var groupnum in ls) { @@ -1191,27 +1151,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers preTaxDiff: 0, taxDiff: 0, clientCode: string.Empty, - realAmt: 0 + realAmt: readAmt ); invlist.Add(invbill); } - //await _repository.DbContext.BulkInsertAsync(invlist); - //await _repository.DbContext.BulkInsertAsync(groupList); - //await _repository.DbContext.BulkInsertAsync(detailList); - - //if (salist.Count > 0) - //{ - // await _repository.DbContext.BulkUpdateAsync(salist); - //} - //if (adjlist.Count > 0) - //{ - // await _repository.DbContext.BulkUpdateAsync(adjlist); - //} - //if (notDetialList.Count > 0) - //{ - // await _repository.DbContext.BulkInsertAsync(notDetialList); - //} - //_invls = invlist.Select(p => p.InvbillNum).ToList(); + } return detailList;