From 3595b13324044656dfd77063245a4d25ad00b49c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Tue, 7 Nov 2023 13:30:33 +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 --- .../Entities/BQ/Dtos/INVOICE_GRP_DTO.cs | 9 +- .../Entities/BQ/HBPO_CAN_SA_SERVICE.cs | 14 ++- .../Entities/BQ/INVOICE_SERVICE.cs | 6 ++ .../BQ/Syncs/GenerateJisInvoiceService.cs | 34 ++++++-- ...ttleAccountApplicationAutoMapperProfile.cs | 1 - .../Entities/BQ/INVOICE_GRP.cs | 2 + .../Entities/BQ/Managers/INV_MNG.cs | 86 ++++++++++++++----- 7 files changed, 119 insertions(+), 33 deletions(-) diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/INVOICE_GRP_DTO.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/INVOICE_GRP_DTO.cs index c860f4f1..3828a308 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/INVOICE_GRP_DTO.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/INVOICE_GRP_DTO.cs @@ -159,6 +159,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos //public decimal TaxDiff { get; set; } [ExporterHeader(DisplayName = "客户代码")] public string ClientCode { get; set; } + [ExporterHeader(DisplayName = "发票日期")] + public string CreationTime { get; set; } + + + } @@ -198,7 +203,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos public decimal PreTaxDiff { get; set; } - + [ImporterHeader(Name = "发票日期", FixAllSpace = true)] + [Required(ErrorMessage = "{0}是必填项")] + public DateTime InvoiceDate { get; set; } //[ImporterHeader(Name = "税后金额", FixAllSpace = true)] //[Required(ErrorMessage = "{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 cfc3f9dc..9c15f384 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 @@ -45,7 +45,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ private readonly INormalEfCoreRepository _priceRepository; private readonly HBPO_CAN_SA_MNG _hbpoMng; private readonly TaskJobService _service; - + private readonly INormalEfCoreRepository _saRepository; public HBPO_CAN_SA_SERVICE(IExcelImportAppService excelImportService, @@ -56,12 +56,13 @@ namespace Win.Sfs.SettleAccount.Entities.BQ INV_MNG invmng, INormalEfCoreRepository notRepository, INormalEfCoreRepository priceRepository, + INormalEfCoreRepository saRepository, HBPO_CAN_SA_MNG hbpoMng, BaseDomainService baseservice, TaskJobService service ) : base(excelImportService, snowflakeIdGenerator, commonManager, repository, detailRepository, invmng, baseservice) { - + _saRepository = saRepository; _priceRepository = priceRepository; _notRepository = notRepository; _hbpoMng = hbpoMng; @@ -86,6 +87,15 @@ namespace Win.Sfs.SettleAccount.Entities.BQ return new JsonResult(new { Code = 400, Message = "已创建发票不能重复创建" }); } var entitys = await _hbpoMng.GetDetalListAsync(invbillnum).ConfigureAwait(false); + + var settleBillList= entitys.Select(p => p.SettleBillNum).Distinct(); + + + + //_saRepository.Where(p=>settleBillList.Contains(p.BillNum) && p.State==0) + + + var priceList = _priceRepository.Where(p => p.IsCancel == false).ToList(); //价格单 var errorList = await CheckInvoiceGenerationRules(entitys, main.Site, priceList, main.BusinessType).ConfigureAwait(false);//校验生成规则 if (errorList.Count > 0) diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs index c87c5297..dc8e8264 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs @@ -948,6 +948,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ var first = ls.FirstOrDefault(); foreach (var inv in invlist) { + var newinv1= result.Where(p => p.InvbillNum == inv.InvbillNum).FirstOrDefault(); var newinv = ls.Where(p => p.InvbillNum == inv.InvbillNum).FirstOrDefault(); inv.Tax = 0.13m; //inv.RealAmt = Math.Round(inv.Amt * newinv.Tax, 2); @@ -955,8 +956,13 @@ namespace Win.Sfs.SettleAccount.Entities.BQ inv.RealnvBillNum = newinv.RealnvBillNum; // inv.RealAmt = newinv.RealAmt; inv.TaxDiff = newinv.PreTaxDiff; + inv.CreationTime = newinv1.InvoiceDate; // inv.ClientCode = newinv.ClientCode; } + + + + //foreach (var detail in invdetail)//明细EXTEND1字段BBAC不能占用 //{ // detail.Extend1 = Math.Round(detail.Amt * first.Tax, 2).ToString(); diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/GenerateJisInvoiceService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/GenerateJisInvoiceService.cs index 84a539cb..75340448 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/GenerateJisInvoiceService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/GenerateJisInvoiceService.cs @@ -29,6 +29,15 @@ using Win.Sfs.Shared.RepositoryBase; namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs { + public class tempAmt + { + public decimal Amt { set; get; } + public decimal TaxAmt { set; get; } + + public decimal Tax { set; get;} + + } + public class GenerateJisInvoiceService : ApplicationService, ITransientDependency, IExportJob { @@ -346,9 +355,20 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs { detailList.AddRange(_entityDetailList); } - 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);//税额 + + List amtList = new List(); + foreach (var itm in detailList) + { + amtList.Add(new tempAmt() { + Amt=itm.Amt, + Tax=Math.Round(itm.Amt*0.13m,2), + TaxAmt=itm.Amt+ Math.Round(itm.Amt * 0.13m, 2) + }); + } + + decimal amt = amtList.Sum(k => k.Amt);//金额 + decimal txtAmt = amtList.Sum(k => k.TaxAmt) ;//税后金额 + decimal readAmt = amtList.Sum(k=>k.Tax);//税额 //decimal amt = detailList.Sum(k => k.Amt); //decimal txtAmt = Math.Round(detailList.Sum(k => k.Amt), 2); @@ -570,14 +590,16 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs LU = itm.Key.LU, ContactDocID = itm.Key.ContractDocID, Price = itm.Key.Price, - Amt = Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2), + Amt = Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2),//税前 + Tax = Math.Round(Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2) * 0.13m, 2),//税 + TaxAmt = Math.Round(Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2) * 0.13m, 2)+ Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2),//税后进 Qty = itm.Sum(k => k.Qty), 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(detailDtos.Sum(k => k.Amt) * 0.13m, 2);//税后金额 - decimal realAmt = Math.Round(detailDtos.Sum(k => k.Amt) * 0.13m, 2);//税额 + decimal txtAmt = detailDtos.Sum(k => k.TaxAmt);//税后金额 + decimal realAmt =detailDtos.Sum(k => k.Tax);//税额 var mapList = new List(); foreach (var groupnum in ls) diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs index f08e1bd3..8e7bbbed 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/SettleAccountApplicationAutoMapperProfile.cs @@ -286,7 +286,6 @@ namespace Win.Sfs.SettleAccount { CreateMap().ReverseMap(); CreateMap().ReverseMap(); - CreateMap().ReverseMap(); } diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/INVOICE_GRP.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/INVOICE_GRP.cs index 2a74fac8..6e788228 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/INVOICE_GRP.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/INVOICE_GRP.cs @@ -57,6 +57,8 @@ namespace SettleAccount.Domain.BQ [Display(Name = "地点")] public string Site { get; set; } + + public INVOICE_GRP(Guid guid, string realnvBillNum, string invbillNum, decimal amt, decimal taxAmt, string invGroupNum, string fileName, 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 e46177ff..fe40ef52 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 @@ -19,6 +19,19 @@ using Win.Sfs.Shared.RepositoryBase; namespace Win.Sfs.SettleAccount.Entities.BQ.Managers { + + public class tempAmt1 + { + public decimal Amt { set; get; } + public decimal TaxAmt { set; get; } + + public decimal Tax { set; get; } + + } + + + + public partial class INV_MNG : DomainService { //private readonly INormalEfCoreRepository _canRepository; @@ -521,7 +534,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers await _repository.DbContext.BulkUpdateAsync(invList).ConfigureAwait(false); return true; } - else if (inv.BusinessType == EnumBusinessType.JisHBPO || inv.BusinessType == EnumBusinessType.MaiDanJianHBPO) { var pdlist = _pdhbpoRepository.Where(p => p_invs.Contains(p.BillNum)).ToList();//包含发票号的代扣减单 @@ -545,7 +557,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers oldlist = pdoldlist.Select(p => p.BillNum).ToList();//已经存在扣减记录,的发票号 } newlist = p_invs.Where(p => !oldlist.Contains(p)).ToList();//不存在扣减记录的发票号 - List entityList = new List();//结算明细 var namelist = invList.Select(p => p.InvbillNum).ToList(); if (oldlist.Count > 0) @@ -1092,18 +1103,28 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers { detailList.AddRange(_entityDetailList); } - 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);//税额 - //decimal amt = detailList.Sum(k => k.Amt); - //decimal txtAmt = Math.Round(detailList.Sum(k => k.Amt), 2); + List amtList = new List(); + foreach (var itm in detailList) + { + amtList.Add(new tempAmt1() + { + Amt = itm.Amt, + Tax = Math.Round(itm.Amt * 0.13m, 2), + TaxAmt = itm.Amt + Math.Round(itm.Amt * 0.13m, 2) + }); + } + decimal amt = amtList.Sum(k => k.Amt);//金额 + decimal txtAmt = amtList.Sum(k => k.TaxAmt);//税后金额 + decimal readAmt = amtList.Sum(k => k.Tax);//税额 + + //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(); foreach (var en in _groupList) @@ -1317,13 +1338,16 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers ContactDocID = itm.Key.ContractDocID, Price = itm.Key.Price, Amt = Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2), + Tax = Math.Round(Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2) * 0.13m, 2),//税 + TaxAmt = Math.Round(Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2) * 0.13m, 2) + Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2),//税后进 + Qty = itm.Sum(k => k.Qty), 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(detailDtos.Sum(k => k.Amt) * 0.13m, 2);//税后金额 - decimal realAmt = Math.Round(detailDtos.Sum(k => k.Amt) * 0.13m, 2);//税额 + decimal txtAmt = detailDtos.Sum(k => k.TaxAmt);//税后金额 + decimal realAmt = detailDtos.Sum(k => k.Tax);//税额 var mapList = new List(); foreach (var groupnum in ls) @@ -1770,9 +1794,21 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers } } } - 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);//税额 + List templs = new List(); + foreach (var itm in _entityDetailList) + { + templs.Add(new tempAmt1() + { + Amt = itm.Amt, + Tax = Math.Round(itm.Amt * 0.13m, 2), + TaxAmt = itm.Amt + Math.Round(itm.Amt * 0.13m, 2) + }); + } + + decimal amt = templs.Sum(k => k.Amt);//金额 + decimal txtAmt = templs.Sum(k => k.TaxAmt);//税后金额 + decimal realAmt = templs.Sum(k => k.Tax); + var invbill = new INVOICE_GRP (guid: GuidGenerator.Create(), realnvBillNum: string.Empty, @@ -1918,14 +1954,16 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers ContactDocID = itm.Key.ContractDocID, Price = itm.Key.Price, Amt = Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2), + Tax = Math.Round(Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2) * 0.13m, 2),//税 + TaxAmt = Math.Round(Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2) * 0.13m, 2) + Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2),//税后进 Qty = itm.Sum(k => k.Qty), 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(detailDtos.Sum(k => k.Amt) * 0.13m, 2);//税后金额 - decimal realAmt = Math.Round(detailDtos.Sum(k => k.Amt) * 0.13m, 2);//税额 + decimal txtAmt = detailDtos.Sum(k => k.TaxAmt) ;//税后金额 + decimal realAmt = detailDtos.Sum(k => k.Tax);//税额 var mapList = new List(); foreach (var groupnum in ls) { @@ -2212,7 +2250,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers LU = itm.Key.PartCode, ContactDocID = itm.Key.ContractDocID, Price = itm.Key.Price, - Amt = Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2), + Amt = Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2),//税前 + Tax = Math.Round(Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2) * 0.13m, 2),//税 + TaxAmt = Math.Round(Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2) * 0.13m, 2) + Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2),//税后 Qty = itm.Sum(k => k.Qty), BeginDate = itm.Key.BeginDate, EndDate = itm.Key.EndDate @@ -2254,8 +2294,8 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers }; 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);//税额 + decimal txtAmt = detailDtos.Sum(k => k.TaxAmt);//税后金额 + decimal realAmt = detailDtos.Sum(k => k.Tax);//税额 var mapList = new List(); foreach (var groupnum in ls) @@ -2323,12 +2363,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers invGroupNum: p_InvGroupNum, state: SettleBillState.已开票, invoiceBillState: InvoiceBillState.正常, - tax: 0.13m, - parent: !string.IsNullOrEmpty(p_parentInvBillNum) ? p_parentInvBillNum : string.Empty, - preTaxDiff: 0, + tax: 0.13m, + parent: !string.IsNullOrEmpty(p_parentInvBillNum) ? p_parentInvBillNum : string.Empty, + preTaxDiff: 0, taxDiff: 0, clientCode: string.Empty, - realAmt: readAmt + realAmt: realAmt ); invbill.Site = "1049"; invbill.CreationTime = DateTime.Now;