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 0302785b..9c373a32 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 @@ -242,13 +242,22 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos public List INVOICE_WAIT_DETAIL_BBAC { get; set; } - + /// + /// 发票明细备件 + /// public List INVOICE_WAIT_DETAIL_BJ { get; set; } /// /// 发票和结算分组对应关系 /// public List INVOICE_MAP_GROUP { get; set; } + + /// + /// 买单发票和结算分组对应关系 + /// + public List MAIDAN_HBPO_INVOICE_MAP_GROUP { get; set; } + + /// /// 已结分组包含不可结算零件 /// @@ -257,22 +266,45 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos /// 发票调整明细 /// public List ADJ_DETAIL { get; set; } + /// + /// JIT全部未结明细 + /// + public List JIT_UNSETTLED_DETAIL { get; set; } + /// + /// JIT全部未结明细 + /// + public List MAIDAN_HBPO_UNSETTLED_DETAIL { get; set; } /// - /// 全部未结明细 + /// JIT全部未结明细 /// - public List UNSETTLED_DETAIL { get; set; } + public List UNSETTLED_DETAIL { get; set; } + } + public class JIT_UNSETTLED_DETAIL_DTO + { + [Display(Name = "结算分组号")] + public string GroupNum { set; get; } + + [Display(Name = "零件号")] + public string LU { set; get; } + [Display(Name = "数量")] + public decimal Qty { set; get; } } - public class UNSETTLED_DETAIL_DTO + public class MAIDAN_HBPO_UNSETTLED_DETAIL_DTO { - [Display(Name = "结算分组号")] + [Display(Name = "五联单号")] public string GroupNum { set; get; } + + [Display(Name = "生产码")] + public string PN { set; get; } + + [Display(Name = "零件号")] public string LU { set; get; } [Display(Name = "数量")] @@ -283,33 +315,49 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos + + + + + + + public class INVOICE_WAIT_DETAIL_BJ_DTO { - ///// - /////期间 - ///// - //[Display(Name = "行号")] - //public int LineCode { get; set; } - /// - ///期间 - /// - [Display(Name = "期间")] + public int Version { get; set; } [Display(Name = "金税发票号")] public string RealInvbillNum { get; set; } [Display(Name = "发票日期")] public DateTime? InvDate { set; get; } - /// ///扩展字段1 /// [Display(Name = "凭证号")] public string Extend1 { get; set; } + + [Display(Name = "交货号")] + public string DeliveryNumber { get; set; } /// ///发票号 /// [Display(Name = "发票号")] public string InvbillNum { get; set; } + [Display(Name = "供应商代码")] + public string VendorCode { get; set; } + [Display(Name = "供应商名称")] + public string VendorName { get; set; } + [Display(Name = "PurchaseOrderNumber")] + public string PurchaseOrderNumber { get; set; } + [Display(Name = "业务分类")] + public string DeliveryIndexNumber { get; set; } + /// + ///零件号 + /// + [Display(Name = "零件号")] + public string PartCode { get; set; } + [Display(Name = "PartName")] + public string PartName { get; set; } /// ///发票分组号 /// @@ -321,15 +369,8 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos [Display(Name = "客户零件号")] public string LU { get; set; } - /// - ///零件号 - /// - [Display(Name = "零件号")] - public string PartCode { get; set; } - [Display(Name = "零件描述")] public string PartDesc { get; set; } - /// ///单价 /// @@ -348,9 +389,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos /// ///业务分类 /// - [Display(Name = "业务分类")] - public string BussiessType { get; set; } - /// ///扩展字段3 @@ -587,6 +625,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos /// [Display(Name = "结算分组号")] public string SettleGroupNum { get; set; } + + + + /// ///金额 /// @@ -607,6 +649,26 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos } + public class MAIDAN_HBPO_INVOICE_MAP_GROUP_DTO + { + + /// + ///发票分组号 + /// + [Display(Name = "发票分组号")] + public string InvGroupNum { get; set; } + /// + ///结算分组号 + /// + [Display(Name = "五联单号")] + public string SettleGroupNum { get; set; } + + [Display(Name = "现生产码")] + public string Extend1 { get; set; } + + } + + public class INVOICE_MAP_GROUP_EXP_DTO { 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 7d2eb6cd..544ae483 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 @@ -158,7 +158,7 @@ namespace Win.Sfs.SettleAccount.Bases PRICE = itm.PRICE, Qty = itm.Qty, Amt = itm.Amt, - BussiessType = itm.BussiessType, + Extend1 = itm.Extend1, BeginDate = itm.BeginDate, EndDate = itm.EndDate, @@ -188,7 +188,7 @@ namespace Win.Sfs.SettleAccount.Bases PRICE = itm.PRICE, Qty = itm.Qty, Amt = itm.Amt, - BussiessType = itm.BussiessType, + Extend1 = itm.Extend1, BeginDate = itm.BeginDate, EndDate = itm.EndDate, diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/PD_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/PD_SERVICE.cs index 6cdf9052..3c537c2d 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/PD_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/PD_SERVICE.cs @@ -1,22 +1,39 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Reflection; -using System.Threading.Tasks; +using AutoMapper; +using DocumentFormat.OpenXml.Bibliography; +using DocumentFormat.OpenXml.Drawing.Charts; +using DocumentFormat.OpenXml.Office2010.Excel; +using EFCore.BulkExtensions; using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Csv; using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using SettleAccount.Bases; +using SettleAccount.Job.Services; using Shouldly; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using TaskJob.EventArgs; +using TaskJob.Services; +using Volo.Abp; using Volo.Abp.Application.Dtos; +using Volo.Abp.Uow; using Win.Abp.Snowflakes; using Win.Sfs.BaseData.ImportExcelCommon; using Win.Sfs.SettleAccount.CommonManagers; using Win.Sfs.SettleAccount.Constant; using Win.Sfs.SettleAccount.Entities.BQ; +using Win.Sfs.SettleAccount.Entities.BQ.Dtos; +using Win.Sfs.SettleAccount.Entities.BQ.Syncs; +using Win.Sfs.SettleAccount.Entities.BQ.Vmi; +using Win.Sfs.SettleAccount.Entities.TaskJobs; +using Win.Sfs.SettleAccount.ExcelImporter; +using Win.Sfs.SettleAccount.ExportReports; using Win.Sfs.Shared.RepositoryBase; namespace Win.Sfs.SettleAccount.Bases @@ -37,7 +54,7 @@ namespace Win.Sfs.SettleAccount.Bases protected readonly INormalEfCoreRepository _bbacSecRepository; protected readonly INormalEfCoreRepository _hbpoSecRepository; protected readonly INormalEfCoreRepository _pubSecRepository; - + private readonly TaskJobService _service; public PD_SERVICE( INormalEfCoreRepository bbacSecRepository, @@ -48,9 +65,11 @@ namespace Win.Sfs.SettleAccount.Bases ICommonManager commonManager, INormalEfCoreRepository repository, VmiAppService vimservice, - INormalEfCoreRepository detailRepository + INormalEfCoreRepository detailRepository, + TaskJobService service ) : base(excelImportService, snowflakeIdGenerator, commonManager) { + _service = service; _vimservice = vimservice; _repository = repository; _detailRepository = detailRepository; @@ -114,11 +133,78 @@ namespace Win.Sfs.SettleAccount.Bases return _fileName; } [HttpPost] - //[Route("generateinvoice")] + [UnitOfWork(false)] public virtual async Task ApprovalPassed(List p_list) { - return ApplicationConsts.SuccessStr; + return await InvokePD(p_list, _service, false); + } + [HttpPost] + [UnitOfWork(false)] + public virtual async Task RejectAsync(List p_list) + { + return await InvokePD(p_list, _service, true); + } + + + protected async Task InvokePD(List p_list, TaskJobService p_service, bool isback=false) + { + var detailist = _detailRepository.Where(p => p_list.Contains(p.BillNum)).ToList(); + var first=detailist.FirstOrDefault(); + List customConditionList = new List(); + customConditionList.Add(new CustomCondition() { Name = "BillNumList", Value = string.Join(",", p_list) }); + customConditionList.Add(new CustomCondition() { Name = "Type", Value =first.BusinessType.ToString() }); + if (isback == false) + { + customConditionList.Add(new CustomCondition() { Name = "IsOut", Value = "out" }); + } + else + { + customConditionList.Add(new CustomCondition() { Name = "IsOut", Value = "in" }); + } + + var ls = _repository.Where(p => p_list.Contains(p.BillNum)).ToList(); + var lst=new List(); + if (isback == false) + { + lst = ls.Where(p => (p.State == SettleBillState.已提交扣减 || p.State == SettleBillState.已扣减)).ToList(); + } + else + { + lst = ls.Where(p => (p.State == SettleBillState.已提交撤销扣减|| p.State == SettleBillState.客户已收票)).ToList(); + } + + + if (lst.Count() > 0) + { + throw new UserFriendlyException("当前状态是已提交状态,不能重复已提交", "400"); + } + foreach (var item in ls) + { + if (isback == false) + { + item.State = SettleBillState.已提交扣减; + } + else + { + item.State = SettleBillState.已提交撤销扣减; + } + } + await _repository.DbContext.BulkUpdateAsync(ls); + + var _taskid = await p_service.ExportEnqueueAsync($"{first.BusinessType.ToString()}待扣减任务", ExportExtentsion.Excel, DateTime.Now.ToString("yyyyMM"), string.Empty, CurrentUser, typeof(PendingDeductionService), customConditionList, (rs) => + { + }); + + return _taskid; } + + + + + + + + /// /// 查询主表 /// @@ -133,16 +219,7 @@ namespace Win.Sfs.SettleAccount.Bases var dtos = ObjectMapper.Map, List>(entitys); return new PagedResultDto(totalCount, dtos); } - /// - /// 退回 - /// - /// - /// - [HttpPost] - public virtual async Task RejectAsync(TRequestMainInput input) - { - return ApplicationConsts.SuccessStr; - } + protected virtual async Task GetMainAsync([FromBody] string billNum) { return await _repository.Where(p => p.InvGroupNum == billNum).FirstOrDefaultAsync().ConfigureAwait(false); diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_PD_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_PD_SERVICE.cs index cc2ec50d..d61b8516 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_PD_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_PD_SERVICE.cs @@ -31,41 +31,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ BBAC_PD_DETAIL_REQ_DTO, BBAC_PD_DETAIL_EXP_DTO> { - private readonly TaskJobService _service; - public BBAC_PD_SERVICE(INormalEfCoreRepository bbacSecRepository, INormalEfCoreRepository hbpoSecRepository, INormalEfCoreRepository pubSecRepository, IExcelImportAppService excelImportService, ISnowflakeIdGenerator snowflakeIdGenerator, ICommonManager commonManager, INormalEfCoreRepository repository, VmiAppService vimservice, - INormalEfCoreRepository detailRepository, - TaskJobService service - ) : - base(bbacSecRepository, hbpoSecRepository, pubSecRepository, excelImportService, snowflakeIdGenerator, commonManager, repository, vimservice, detailRepository) - { - _service = service; - } - [UnitOfWork(false)] - public override async Task ApprovalPassed(List p_list) - { - var detailist = _detailRepository.Where(p => p_list.Contains(p.BillNum)).ToList(); - List customConditionList = new List(); - customConditionList.Add(new CustomCondition() { Name = "BillNumList", Value = string.Join(",", p_list) }); - customConditionList.Add(new CustomCondition() { Name = "Type", Value = EnumBusinessType.JisBBAC.ToString() }); - customConditionList.Add(new CustomCondition() { Name = "IsOut", Value = "out" }); - var ls = _repository.Where(p => p_list.Contains(p.BillNum)).ToList(); - var lst = ls.Where(p => (p.State == SettleBillState.已提交扣减 || p.State == SettleBillState.已扣减)); - if (lst.Any()) - { - throw new UserFriendlyException("当前状态是已提交状态,不能重复已提交", "400"); - } - foreach (var item in ls) - { - item.State = SettleBillState.已提交扣减; - } - await _repository.DbContext.BulkUpdateAsync(ls).ConfigureAwait(false); - var _taskid = await _service.ExportEnqueueAsync("BBAC待扣减任务", ExportExtentsion.Excel, DateTime.Now.ToString("yyyyMM"), string.Empty, CurrentUser, typeof(PendingDeductionService), customConditionList, (rs) => - { - }).ConfigureAwait(false); - return _taskid; - } + //[HttpPost] //public virtual async Task RejectAsync(List p_list) //{ @@ -91,6 +59,8 @@ namespace Win.Sfs.SettleAccount.Entities.BQ // return _taskid; //} - + public BBAC_PD_SERVICE(INormalEfCoreRepository bbacSecRepository, INormalEfCoreRepository hbpoSecRepository, INormalEfCoreRepository pubSecRepository, IExcelImportAppService excelImportService, ISnowflakeIdGenerator snowflakeIdGenerator, ICommonManager commonManager, INormalEfCoreRepository repository, VmiAppService vimservice, INormalEfCoreRepository detailRepository, TaskJobService service) : base(bbacSecRepository, hbpoSecRepository, pubSecRepository, excelImportService, snowflakeIdGenerator, commonManager, repository, vimservice, detailRepository, service) + { + } } } diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_BA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_BA_SERVICE.cs index 3093b2ce..9c7731b1 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_BA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_BA_SERVICE.cs @@ -368,7 +368,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ //} var dto1s = ObjectMapper.Map, List>(entitys); var q = from d in dto1s - join p in priceList on d.PartCode equals p.LU + join p in priceList on d.LU equals p.LU where d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime && p.IsCancel == false && p.ClientCode == inv.Site//客户零件号 select new TEMP_CAN_SA_DETAIL { @@ -441,9 +441,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ { return new JsonResult(new { Code = 400, Message = "请下载错误模版", fileName = result }); } - - - var invBilllist = new List(); var adjlist = ObjectMapper.Map, List>(p_list); @@ -518,7 +515,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ //} var dto1s = ObjectMapper.Map, List>(entitys); var q = from d in dto1s - join p in priceList on d.PartCode equals p.LU + join p in priceList on d.LU equals p.LU where d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime && p.IsCancel == false && p.ClientCode == inv.Site//客户零件号 select new TEMP_CAN_SA_DETAIL { diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_PD_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_PD_SERVICE.cs index fbfad493..44c215a4 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_PD_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_PD_SERVICE.cs @@ -25,38 +25,8 @@ namespace Win.Sfs.SettleAccount.Entities.BQ HBPO_PD_DETAIL, HBPO_PD_DETAIL_DTO, HBPO_PD_REQ_DTO, HBPO_PD_DETAIL_REQ_DTO, HBPO_PD_DETAIL_EXP_DTO> { - private readonly TaskJobService _service; - public HBPO_PD_SERVICE(INormalEfCoreRepository bbacSecRepository, INormalEfCoreRepository hbpoSecRepository, INormalEfCoreRepository pubSecRepository, IExcelImportAppService excelImportService, ISnowflakeIdGenerator snowflakeIdGenerator, ICommonManager commonManager, INormalEfCoreRepository repository, VmiAppService vimservice, INormalEfCoreRepository detailRepository, TaskJobService service) : base(bbacSecRepository, hbpoSecRepository, pubSecRepository, excelImportService, snowflakeIdGenerator, commonManager, repository, vimservice, detailRepository) + public HBPO_PD_SERVICE(INormalEfCoreRepository bbacSecRepository, INormalEfCoreRepository hbpoSecRepository, INormalEfCoreRepository pubSecRepository, IExcelImportAppService excelImportService, ISnowflakeIdGenerator snowflakeIdGenerator, ICommonManager commonManager, INormalEfCoreRepository repository, VmiAppService vimservice, INormalEfCoreRepository detailRepository, TaskJobService service) : base(bbacSecRepository, hbpoSecRepository, pubSecRepository, excelImportService, snowflakeIdGenerator, commonManager, repository, vimservice, detailRepository, service) { - _service = service; } - - [UnitOfWork(false)] - public override async Task ApprovalPassed(List p_list) - { - var detailist = _detailRepository.Where(p => p_list.Contains(p.BillNum)).ToList(); - List customConditionList = new List(); - customConditionList.Add(new CustomCondition() { Name = "BillNumList", Value = string.Join(",", p_list) }); - customConditionList.Add(new CustomCondition() { Name = "Type", Value = EnumBusinessType.JisHBPO.ToString() }); - customConditionList.Add(new CustomCondition() { Name = "IsOut", Value = "out" }); - var ls = _repository.Where(p => p_list.Contains(p.BillNum)).ToList(); - var lst = ls.Where(p => (p.State == SettleBillState.已提交扣减 || p.State == SettleBillState.已扣减)); - if (lst.Any()) - { - throw new UserFriendlyException("当前状态是已提交状态,不能重复已提交", "400"); - } - foreach (var item in ls) - { - item.State = SettleBillState.已提交扣减; - } - await _repository.DbContext.BulkUpdateAsync(ls).ConfigureAwait(false); - var _taskid = await _service.ExportEnqueueAsync("HBPO待扣减任务", ExportExtentsion.Excel, DateTime.Now.ToString("yyyyMM"), string.Empty, CurrentUser, typeof(PendingDeductionService), customConditionList, (rs) => - { - }).ConfigureAwait(false); - - return _taskid; - - } - } } 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 0995e662..e6e6a762 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 @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -12,9 +12,12 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using SettleAccount.Domain.BQ; +using ShardingCore.Extensions; using Shouldly; using SqlSugar; using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Entities; using Volo.Abp.Uow; using Win.Abp.Snowflakes; using Win.Sfs.BaseData.ImportExcelCommon; @@ -187,8 +190,26 @@ namespace Win.Sfs.SettleAccount.Entities.BQ var B = await _wRepository.GetListByFilterAsync(input.Filters, input.Sorting, int.MaxValue, input.SkipCount).ConfigureAwait(false); B.OrderBy(p => p.LineCode); - var BMap = ObjectMapper.Map, List>(B); + List BMap = new List(); + foreach (var itm in B) + { + INVOICE_WAIT_DETAIL_BJ_DTO bj = new INVOICE_WAIT_DETAIL_BJ_DTO(); + bj.LU = itm.LU; + bj.PartCode = itm.PartCode; + bj.PRICE = itm.PRICE; + + //bj.InvGroupNum = itm.InvGroupNum; + //bj.DeliveryNumber= itm.GetProperty("DeliveryNumber", "");//交货号 + //bj.InvbillNum = itm.GetProperty("InvoiceNumber", "");//发票号 + //bj.VendorCode = itm.GetProperty("VendorCode", "");//供应商代码 + //bj.VendorName = itm.GetProperty("VendorName", "");//供应商名称 + //bj.PurchaseOrderNumber = itm.GetProperty("PurchaseOrderNumber", "");//采购订单号 + //bj.DeliveryIndexNumber = itm.GetProperty("DeliveryIndexNumber", "");//交付索引号 + //bj.PartName = itm.GetProperty("PartName", "");//零件名称 + } + + //var BMap = ObjectMapper.Map, List>(B); var wquery = from itm in BMap join itm1 in invs on itm.InvbillNum equals itm1.InvbillNum join itm2 in materialList on itm.LU equals itm2.SettleMaterialCode into temp @@ -207,7 +228,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ PRICE = itm.PRICE, Qty = itm.Qty, Amt = itm.Amt, - BussiessType = itm.BussiessType, + DeliveryNumber = itm.DeliveryNumber , + VendorCode = itm.VendorCode , + VendorName = itm.VendorName , + PurchaseOrderNumber = itm.PurchaseOrderNumber, + DeliveryIndexNumber =itm.DeliveryIndexNumber , Extend1 = itm.Extend1, BeginDate = itm.BeginDate, EndDate = itm.EndDate, @@ -217,7 +242,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ else { - var w = await _wRepository.GetListByFilterAsync(input.Filters, input.Sorting, int.MaxValue, input.SkipCount).ConfigureAwait(false); + var w = await _wRepository.GetListByFilterAsync(input.Filters, input.Sorting, int.MaxValue, input.SkipCount); var wdtos = ObjectMapper.Map, List>(w); var wquery = from itm in wdtos join itm1 in invs on itm.InvbillNum equals itm1.InvbillNum @@ -226,7 +251,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ select new INVOICE_WAIT_DETAIL_DTO() { - PartDesc = tm == null ? string.Empty : itm.PartDesc, InvDate = itm1.CreationTime, RealInvbillNum = string.IsNullOrEmpty(itm1.RealnvBillNum) ? string.Empty : itm1.RealnvBillNum, @@ -304,15 +328,19 @@ namespace Win.Sfs.SettleAccount.Entities.BQ SettleGroupNum = p.FirstOrDefault().SettleGroupNum, } ); - if (first.BusinessType == EnumBusinessType.ZhiGongJianBBAC) + if (first.BusinessType == EnumBusinessType.ZhiGongJianBBAC)//BBAC直供未结 { //var all = entity.INVOICE_NOT_SETTLE.Select(p => p.SettleGroupNum).Distinct().ToList();//全部分组号 //var part = mquery.ToList().Select(p => p.SettleGroupNum).Distinct().ToList();//发票对应分组号 //var unsettled = all.Where(p => !part.Contains(p));//排除发票对应分组号,都为不可结 var unsettledList = sdtos .GroupBy(p => new { p.LU, p.SettleGroupNum }) - .Select(p => new UNSETTLED_DETAIL_DTO { LU = p.Key.LU, GroupNum = p.Key.SettleGroupNum, Qty = p.Sum(itm => itm.Qty.Value) }); - entity.UNSETTLED_DETAIL = unsettledList.ToList().OrderBy(p => p.GroupNum).ThenBy(p => p.LU).ToList(); + .Select(p => new JIT_UNSETTLED_DETAIL_DTO { LU = p.Key.LU, GroupNum = p.Key.SettleGroupNum, Qty = p.Sum(itm => itm.Qty.Value) }); + entity.JIT_UNSETTLED_DETAIL = unsettledList.ToList().OrderBy(p => p.GroupNum).ThenBy(p => p.LU).ToList(); + } + if (first.BusinessType == EnumBusinessType.JisHBPO) + { + entity.INVOICE_MAP_GROUP = lscompare.ToList().OrderBy(p => p.SettleGroupNum).ToList();//包含不可结结算分组号 } if (first.BusinessType == EnumBusinessType.JisHBPO || first.BusinessType == EnumBusinessType.JisBBAC) @@ -323,8 +351,8 @@ namespace Win.Sfs.SettleAccount.Entities.BQ { entity.INVOICE_MAP_GROUP = mdtos; } - - entity.ADJ_DETAIL = adjQuery.ToList().OrderBy(p => p.GroupNum).ThenBy(p => p.LU).ToList(); + + entity.ADJ_DETAIL = adjQuery.ToList().OrderBy(p=>p.GroupNum).ThenBy(p=>p.LU).ToList(); return entity; } [HttpPost] @@ -386,6 +414,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ var bj = invdetail.INVOICE_WAIT_DETAIL_BJ;//备件明细 var unsettle = invdetail.UNSETTLED_DETAIL;//全部未结明细 + var classDisplayName = typeof(INVOICE_GRP_DTO).GetCustomAttribute()?.Name ?? typeof(INVOICE_GRP_DTO).Name; string _fileName = $"{classDisplayName}_{Guid.NewGuid().ToString()}.xlsx"; @@ -408,7 +437,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ { _excel.Append(m, "发票结算分组对应");//发票分组对应结算号 } - if (first.BusinessType == EnumBusinessType.ZhiGongJianBBAC) + if (first.BusinessType == EnumBusinessType.ZhiGongJianBBAC ) { _excel.Append(unsettle, "未结零件结算汇总"); } @@ -509,7 +538,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ } _excel.Append(adjp, "发票调整数据" + itm.InvbillNum).SeparateBySheet(); } - + var result = _excel.ExportAppendDataAsByteArray(); result.ShouldNotBeNull(); //保存导出文件到服务器存成二进制 diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_BA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_BA_SERVICE.cs index d5db6b24..4977cb65 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_BA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_BA_SERVICE.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.LinqAsync; @@ -61,13 +61,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ if (errorlist.Count > 0) { - return new JsonResult(new { Code = ApplicationConsts.ImportFailCode, Message = "错误提示文件已下载,请打开文件查看", fileName = await ExportErrorReportAsync(errorlist).ConfigureAwait(false) }); + return new JsonResult(new { Code = ApplicationConsts.ImportFailCode, Message = "错误提示文件已下载,请打开文件查看", fileName = await ExportErrorReportAsync(errorlist) }); } - var first = p_list.FirstOrDefault(); var invbillnum = first.InvBillNum; - List ls = new List(); var adjlist = ObjectMapper.Map, List>(p_list); if (adjlist == null && adjlist.Count == 0) @@ -266,29 +264,29 @@ namespace Win.Sfs.SettleAccount.Entities.BQ { return new JsonResult(new { Code = ApplicationConsts.ImportFailCode, Message = "错误提示文件已下载,请打开文件查看", fileName = await ExportErrorReportAsync(errorList).ConfigureAwait(false) }); } - // var dto1s = ObjectMapper.Map, List>(entitys); - var q = from d in entitys - join p in priceList on d.PartCode equals p.LU - where d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime && p.IsCancel == false && p.ClientCode == inv.Site - select new TEMP_CAN_SA_DETAIL - { - SettleBillNum = d.SettleBillNum, - Site = d.Site, - Version = d.Version, - Price = p.Price, - BillNum = d.BillNum, - SettleDate = d.SettleDate, - InvGroupNum = d.InvGroupNum, - LU = d.LU, - // MaterialDesc = d.MaterialDesc, - PN = d.PN, - Qty = d.Qty, - GroupNum = d.GroupNum, - Amt = Math.Round(d.Qty * p.Price, 2), - ContractDocID = "n", - BeginDate = p.BeginTime, - EndDate = p.EndTime, - PartCode = d.PartCode + // var dto1s = ObjectMapper.Map, List>(entitys); + var q = from d in entitys + join p in priceList on d.LU equals p.LU + where d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime && p.IsCancel == false && p.ClientCode == inv.Site + select new TEMP_CAN_SA_DETAIL + { + SettleBillNum = d.SettleBillNum, + Site = d.Site, + Version = d.Version, + Price = p.Price, + BillNum = d.BillNum, + SettleDate = d.SettleDate, + InvGroupNum = d.InvGroupNum, + LU = d.LU, + // MaterialDesc = d.MaterialDesc, + PN = d.PN, + Qty = d.Qty, + GroupNum = d.GroupNum, + Amt = Math.Round(d.Qty * p.Price, 2), + ContractDocID = "n", + BeginDate = p.BeginTime, + EndDate = p.EndTime, + PartCode= d.PartCode }; var dtos = q.ToList(); @@ -401,7 +399,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ //} var dto1s = ObjectMapper.Map, List>(entitys); var q = from d in dto1s - join p in priceList on d.PartCode equals p.LU + join p in priceList on d.LU equals p.LU where d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime && p.IsCancel == false && p.ClientCode == inv.Site//客户零件号 select new TEMP_CAN_SA_DETAIL { diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_PD_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_PD_SERVICE.cs index 888b0353..1244d5d0 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_PD_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_PD_SERVICE.cs @@ -26,37 +26,8 @@ namespace Win.Sfs.SettleAccount.Entities.BQ PUB_PD_DETAIL, PUB_PD_DETAIL_DTO, PUB_PD_REQ_DTO, PUB_PD_DETAIL_REQ_DTO, PUB_PD_DETAIL_EXP_DTO> { - private readonly TaskJobService _service; - public PUB_PD_SERVICE(INormalEfCoreRepository bbacSecRepository, INormalEfCoreRepository hbpoSecRepository, INormalEfCoreRepository pubSecRepository, IExcelImportAppService excelImportService, ISnowflakeIdGenerator snowflakeIdGenerator, ICommonManager commonManager, INormalEfCoreRepository repository, VmiAppService vimservice, INormalEfCoreRepository detailRepository, TaskJobService service) : base(bbacSecRepository, hbpoSecRepository, pubSecRepository, excelImportService, snowflakeIdGenerator, commonManager, repository, vimservice, detailRepository) + public PUB_PD_SERVICE(INormalEfCoreRepository bbacSecRepository, INormalEfCoreRepository hbpoSecRepository, INormalEfCoreRepository pubSecRepository, IExcelImportAppService excelImportService, ISnowflakeIdGenerator snowflakeIdGenerator, ICommonManager commonManager, INormalEfCoreRepository repository, VmiAppService vimservice, INormalEfCoreRepository detailRepository, TaskJobService service) : base(bbacSecRepository, hbpoSecRepository, pubSecRepository, excelImportService, snowflakeIdGenerator, commonManager, repository, vimservice, detailRepository, service) { - _service = service; - } - [UnitOfWork(false)] - public override async Task ApprovalPassed(List p_list) - { - var detailist = _detailRepository.Where(p => p_list.Contains(p.BillNum)).ToList(); - List customConditionList = new List(); - customConditionList.Add(new CustomCondition() { Name = "BillNumList", Value = string.Join(",", p_list) }); - var first = detailist.FirstOrDefault(); - customConditionList.Add(new CustomCondition() { Name = "Type", Value = first.BusinessType.ToString() }); - customConditionList.Add(new CustomCondition() { Name = "IsOut", Value = "out" }); - var ls = _repository.Where(p => p_list.Contains(p.BillNum)).ToList(); - var lst = ls.Where(p => (p.State == SettleBillState.已提交扣减 || p.State == SettleBillState.已扣减)); - if (lst.Any()) - { - throw new UserFriendlyException("当前状态是已提交状态,不能重复已提交", "400"); - } - foreach (var item in ls) - { - item.State = SettleBillState.已提交扣减; - } - await _repository.DbContext.BulkUpdateAsync(ls).ConfigureAwait(false); - var _taskid = await _service.ExportEnqueueAsync("PUB待扣减任务", ExportExtentsion.Excel, DateTime.Now.ToString("yyyyMM"), string.Empty, CurrentUser, typeof(PendingDeductionService), customConditionList, (rs) => - { - }).ConfigureAwait(false); - - return _taskid; - } } } diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/PendingDeductionService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/PendingDeductionService.cs index b68e0b09..c43acf41 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/PendingDeductionService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/PendingDeductionService.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using EFCore.BulkExtensions; @@ -30,52 +30,52 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs _emailSender = emailSender; _dbcontext = dbcontext; - } - [UnitOfWork(false)] - public string ExportFile(Guid id, List exportName, List property) - { + } + [UnitOfWork(false)] + public string ExportFile(Guid id, List exportName, List property) + { - var billList = property.Where(p => p.Name == "BillNumList").FirstOrDefault().Value; - var type = property.Where(p => p.Name == "Type").FirstOrDefault().Value; - var isout = property.Where(p => p.Name == "IsOut").FirstOrDefault().Value; - var email = string.Empty; - // property.Where(p => p.Name == "CurrentUserEmail").FirstOrDefault().Value; - var list = billList.Split(","); - var projectList = _dbcontext.Set().Where(p => p.Project == "库位"); - if (type == "JisBBAC" || type == "ZhiGongJianBBAC" || type == "MaiDanJianBBAC" || type == "BeiJian") + var billList = property.Where(p => p.Name == "BillNumList").FirstOrDefault().Value; + var type = property.Where(p => p.Name == "Type").FirstOrDefault().Value; + var isout = property.Where(p => p.Name == "IsOut").FirstOrDefault().Value; + var email = string.Empty; + // property.Where(p => p.Name == "CurrentUserEmail").FirstOrDefault().Value; + var list = billList.Split(","); + var projectList = _dbcontext.Set().Where(p => p.Project == "库位"); + if (type == "JisBBAC" || type == "ZhiGongJianBBAC" || type == "MaiDanJianBBAC" || type == "BeiJian") + { + var jisdetail = _dbcontext.Set().Where(p => list.Contains(p.BillNum) && p.BusinessType == EnumBusinessType.JisBBAC);//jis + if (jisdetail != null && jisdetail.Count() > 0) { - var jisdetail = _dbcontext.Set().Where(p => list.Contains(p.BillNum) && p.BusinessType == EnumBusinessType.JisBBAC);//jis - if (jisdetail != null && jisdetail.Any()) + foreach (var itm in jisdetail) { - foreach (var itm in jisdetail) + if (itm.Site == "1040" && string.IsNullOrEmpty(itm.Extend2)) { - if (itm.Site == "1040" && string.IsNullOrEmpty(itm.Extend2)) - { - itm.Extend2 = projectList.FirstOrDefault(p => p.Value == "JisBBAC").Description; - } - else - { - itm.Extend2 = projectList.FirstOrDefault(p => p.Value == "JisBBAC顺义").Description; - } + itm.Extend2 = projectList.FirstOrDefault(p => p.Value == "JisBBAC").Description; + } + else + { + itm.Extend2 = projectList.FirstOrDefault(p => p.Value == "JisBBAC顺义").Description; } - Sync(jisdetail.ToList(), EnumDeliverBjBmpBillType.JIS件, email, isout == "out" ? true : false); } - var mdetail = _dbcontext.Set().Where(p => list.Contains(p.BillNum) && p.BusinessType == EnumBusinessType.MaiDanJianBBAC);//买单件 - if (mdetail != null && mdetail.Any()) + Sync(jisdetail.ToList(), EnumDeliverBjBmpBillType.JIS件, email, isout == "out" ? true : false); + } + var mdetail = _dbcontext.Set().Where(p => list.Contains(p.BillNum) && p.BusinessType == EnumBusinessType.MaiDanJianBBAC);//买单件 + if (mdetail != null && mdetail.Count() > 0) + { + foreach (var itm in jisdetail) { - foreach (var itm in jisdetail) + if (itm.Site == "1040" && string.IsNullOrEmpty(itm.Extend2)) { - if (itm.Site == "1040" && string.IsNullOrEmpty(itm.Extend2)) - { - itm.Extend2 = projectList.FirstOrDefault(p => p.Value == "JisBBAC").Description; - } - else - { - itm.Extend2 = projectList.FirstOrDefault(p => p.Value == "JisBBAC顺义").Description; - } + itm.Extend2 = projectList.FirstOrDefault(p => p.Value == "JisBBAC").Description; + } + else + { + itm.Extend2 = projectList.FirstOrDefault(p => p.Value == "JisBBAC顺义").Description; } - Sync(mdetail.ToList(), EnumDeliverBjBmpBillType.JIS件, email, isout == "out" ? true : false); } + Sync(mdetail.ToList(), EnumDeliverBjBmpBillType.JIS件, email, isout == "out" ? true : false); + } var detailist1 = _dbcontext.Set().Where(p => list.Contains(p.BillNum)).ToList(); @@ -175,184 +175,176 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs select new VmiLog() { - CodeType = string.Empty, - BillTime = DateTime.Now, - ChangedTime = DateTime.Now, - Qty = itm.Qty, - RealPartCode = itm.RELU,//替换件 结算数据 RealPartCode->RELU - RealCode = itm.RELU, - LogType = Entities.BQ.Vmi.VmiLogType.Type200, - ChangedQty = (flag == true) ? -itm.Qty : itm.Qty, - ChangedType = VmiType.Out, - //SubBillType = EnumDeliverSubBillType.小件BBAC, - //BillType = EnumDeliverBjBmpBillType.JIS件, - CustPartCode = itm.LU, - SettlementVinCode = itm.PN, - DeliverBillType = bussinessType, - VinCode = itm.PN, - OrderNum = itm.GroupNum, - ErpToLoc = itm.Extend2, //寄售库 - }; - var ls = query.ToList(); - foreach (var itm in ls) - { - itm.SetId(GuidGenerator.Create()); - } - var _first = p_ls.FirstOrDefault(); - - bool issucess = true; - - using (var transaction = _dbcontext.Database.BeginTransaction()) + CodeType = string.Empty, + BillTime = DateTime.Now, + ChangedTime = DateTime.Now, + Qty = itm.Qty, + RealPartCode = itm.RELU,//替换件 结算数据 RealPartCode->RELU + RealCode = itm.RELU, + LogType = Entities.BQ.Vmi.VmiLogType.Type200, + ChangedQty = (flag == true) ? -itm.Qty : itm.Qty, + ChangedType = VmiType.Out, + //SubBillType = EnumDeliverSubBillType.小件BBAC, + //BillType = EnumDeliverBjBmpBillType.JIS件, + CustPartCode = itm.LU, + SettlementVinCode = itm.PN, + DeliverBillType = bussinessType, + VinCode = itm.PN, + OrderNum = itm.GroupNum, + ErpToLoc = itm.Extend2, //寄售库 + }; + var ls = query.ToList(); + foreach (var itm in ls) + { + itm.SetId(GuidGenerator.Create()); + } + var _first = p_ls.FirstOrDefault(); + bool issucess = true; + using (var transaction = _dbcontext.Database.BeginTransaction()) + { + try { - try + // 执行批量数据操作 + if (ls != null && ls.Count > 0) { - // 执行批量数据操作 - if (ls != null && ls.Count > 0) + var messagelist = new List(); + foreach (var item in ls) { - var messagelist = new List(); - foreach (var item in ls) + var message = new VmiMessage { - var message = new VmiMessage - { - Message = System.Text.Json.JsonSerializer.Serialize(item), - }; - messagelist.Add(message); - } - _dbcontext.BulkInsert(messagelist); - _dbcontext.BulkInsert(ls, new BulkConfig() { }); - var billList = p_ls.Select(p => p.BillNum).Distinct().ToList(); - var pdList = _dbcontext.Set().Where(p => billList.Contains(p.BillNum)).ToList(); - if (pdList.Count > 0) + Message = System.Text.Json.JsonSerializer.Serialize(item), + }; + messagelist.Add(message); + } + _dbcontext.BulkInsert(messagelist); + _dbcontext.BulkInsert(ls, new BulkConfig() { }); + var billList = p_ls.Select(p => p.BillNum).Distinct().ToList(); + var pdList = _dbcontext.Set().Where(p => billList.Contains(p.BillNum)).ToList(); + if (pdList.Count > 0) + { + foreach (var item in pdList) { - foreach (var item in pdList) + if (flag == true) { - if (flag == true) - { - item.State = SettleBillState.已扣减; - } - else - { - item.State = SettleBillState.客户已收票; - } - + item.State = SettleBillState.已扣减; + } + else + { + item.State = SettleBillState.客户已收票; } - _dbcontext.BulkUpdate(pdList); } - var bbacList = _dbcontext.Set().Where(p => billList.Contains(p.BillNum)).ToList(); - if (bbacList.Count > 0) + _dbcontext.BulkUpdate(pdList); + } + var bbacList = _dbcontext.Set().Where(p => billList.Contains(p.BillNum)).ToList(); + if (bbacList.Count > 0) + { + foreach (var item in bbacList) { - foreach (var item in bbacList) + if (flag == true) + { + item.State = SettleBillState.已扣减; + } + else { - if (flag == true) - { - item.State = SettleBillState.已扣减; - } - else - { - item.State = SettleBillState.客户已收票; - } + item.State = SettleBillState.客户已收票; } - _dbcontext.BulkUpdate(bbacList); } - var hbpoList = _dbcontext.Set().Where(p => billList.Contains(p.BillNum)).ToList(); - if (hbpoList.Count > 0) + _dbcontext.BulkUpdate(bbacList); + } + var hbpoList = _dbcontext.Set().Where(p => billList.Contains(p.BillNum)).ToList(); + if (hbpoList.Count > 0) + { + foreach (var item in hbpoList) { - foreach (var item in hbpoList) + if (flag == true) { - if (flag == true) - { - item.State = SettleBillState.已扣减; - } - else - { - item.State = SettleBillState.客户已收票; - } + item.State = SettleBillState.已扣减; + } + else + { + item.State = SettleBillState.客户已收票; } - _dbcontext.BulkUpdate(hbpoList); } - var invoiceList = _dbcontext.Set().Where(p => billList.Contains(p.InvbillNum)).ToList(); - if (invoiceList.Count > 0) + _dbcontext.BulkUpdate(hbpoList); + } + var invoiceList = _dbcontext.Set().Where(p => billList.Contains(p.InvbillNum)).ToList(); + if (invoiceList.Count > 0) + { + foreach (var item in invoiceList) { - foreach (var item in invoiceList) + if (flag == true) { - if (flag == true) - { - item.State = SettleBillState.已扣减; - } + item.State = SettleBillState.已扣减; } - _dbcontext.BulkUpdate(invoiceList); } + _dbcontext.BulkUpdate(invoiceList); } - // _emailSender.SendAsync(e) - // 提交事务 - transaction.Commit(); - } - catch (Exception) - { - issucess = false; - // 回滚事务 - transaction.Rollback(); - } + // _emailSender.SendAsync(e) + // 提交事务 + transaction.Commit(); } - if (issucess == false) + catch (Exception) { - - var billList = p_ls.Select(p => p.BillNum).Distinct().ToList(); - var pdList = _dbcontext.Set().Where(p => billList.Contains(p.BillNum)).ToList(); - if (pdList.Count > 0) + issucess = false; + // 回滚事务 + transaction.Rollback(); + } + } + if (issucess ==false) + { + var billList = p_ls.Select(p => p.BillNum).Distinct().ToList(); + var pdList = _dbcontext.Set().Where(p => billList.Contains(p.BillNum)).ToList(); + if (pdList.Count > 0) + { + foreach (var item in pdList) { - foreach (var item in pdList) + if (flag == true) { - if (flag == true) - { - item.State = SettleBillState.客户已收票; - } - else - { - item.State = SettleBillState.已扣减; - - } + item.State = SettleBillState.客户已收票; + } + else + { + item.State = SettleBillState.已扣减; } - _dbcontext.BulkUpdate(pdList); } - var bbacList = _dbcontext.Set().Where(p => billList.Contains(p.BillNum)).ToList(); - if (bbacList.Count > 0) + _dbcontext.BulkUpdate(pdList); + } + var bbacList = _dbcontext.Set().Where(p => billList.Contains(p.BillNum)).ToList(); + if (bbacList.Count > 0) + { + foreach (var item in bbacList) { - foreach (var item in bbacList) + if (flag == true) { - if (flag == true) - { - item.State = SettleBillState.客户已收票; - } - else - { - item.State = SettleBillState.已扣减; - - } + item.State = SettleBillState.客户已收票; + } + else + { + item.State = SettleBillState.已扣减; } - _dbcontext.BulkUpdate(bbacList); } - var hbpoList = _dbcontext.Set().Where(p => billList.Contains(p.BillNum)).ToList(); - if (hbpoList.Count > 0) + _dbcontext.BulkUpdate(bbacList); + } + var hbpoList = _dbcontext.Set().Where(p => billList.Contains(p.BillNum)).ToList(); + if (hbpoList.Count > 0) + { + foreach (var item in hbpoList) { - foreach (var item in hbpoList) + if (flag == true) { - if (flag == true) - { - item.State = SettleBillState.客户已收票; - } - else - { - item.State = SettleBillState.已扣减; - - } + item.State = SettleBillState.客户已收票; + } + else + { + item.State = SettleBillState.已扣减; } - _dbcontext.BulkUpdate(hbpoList); } + _dbcontext.BulkUpdate(hbpoList); } } + } } } diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/HBPO_NOT_SA_MNG.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/HBPO_NOT_SA_MNG.cs index 79e794db..72272987 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/HBPO_NOT_SA_MNG.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/HBPO_NOT_SA_MNG.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -55,9 +55,8 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers errors.Add($"生产号{itm.PN}零件{itm.LU}结算日期{itm.SettleDate}无价格区间数据"); } } - if (first.BusinessType == EnumBusinessType.JisHBPO) + if (first.BusinessType == EnumBusinessType.JisHBPO || first.BusinessType == EnumBusinessType.MaiDanJianHBPO) { - var ls = p_list.Select(p => p.Site.Substring(0, 3)).Distinct().ToList(); if (ls.Count > 1) { @@ -67,7 +66,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers { return errors; } - } var billNumber = OrderNumberGenerator.GenerateOrderNumber("N"); var _entity = new HBPO_CAN_SA(); 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 25d3f6c5..b9682692 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 @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -353,7 +353,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers /// public virtual async Task ReceivedAsync(List p_invs) { + var invList = _repository.Where(p => p_invs.Contains(p.InvbillNum)).ToList();//所有提交发票信息 + int count = invList.Select(p => p.InvGroupNum).Distinct().Count(); if (count > 1) { @@ -874,7 +876,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers } //await _repository.DbContext.BulkUpdateAsync(canList); } - } } else @@ -892,14 +893,13 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers public virtual async Task BackAsync(string billNum) { - var _ls = await _repository.Where(p => p.InvGroupNum == billNum).ToListAsync().ConfigureAwait(false); + var _ls = await _repository.Where(p => p.InvGroupNum == billNum).ToListAsync(); if (_ls != null && _ls.Count > 0) { foreach (var p_entity in _ls) { } - } //if (_ls != null && _ls.Count > 0) //{ @@ -943,7 +943,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers [UnitOfWork(false)] public async Task> SecInvoice(List p_list, List p_ajdlist, List dtos, int p_version, string p_InvGroupNum, string p_parentInvBillNum, EnumBusinessType businessType) where TDetail : SA_CAN_BASE - { List _invls = new List(); var groups1 = dtos.GroupBy(p => new { p.PartCode, p.LU, p.Price, p.BeginDate, p.EndDate, p.ContractDocID }).Select(p => new TMEP_INV @@ -1159,6 +1158,8 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers ); invbill.ClientCode = clientCode; + + invbill.Site = dtos.FirstOrDefault().Site; invlist.Add(invbill); } @@ -1455,6 +1456,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers _invls = invlist.Select(p => p.InvbillNum).ToList(); } + return _invls; } @@ -1608,7 +1610,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers invGroupNum: p_InvGroupNum, settleGroupNum: groupnum.GroupNum, amt: 0, - extend1: groupnum.PN, + extend1: groupnum.PN,//生产码 extend2: string.Empty ) ); @@ -1617,9 +1619,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers { groupList.AddRange(mapList); } - var notsettle = _nothbpoRepository.Where(p => p.SettleBillNum == p_InvGroupNum);//一次开票时查找不可结数据,追加需求 + var notsettle= _nothbpoRepository.Where(p => p.SettleBillNum == p_InvGroupNum);//一次开票时查找不可结数据,追加需求 - if (notsettle != null && notsettle.Any()) + if (notsettle != null && notsettle.Count() > 0) { var innotls = new List(); foreach (var nitm in notsettle) @@ -1671,6 +1673,37 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers { detailList.AddRange(_entityDetailList); } + + if (p_first == true) + { + var notsettle = _nothbpoRepository.Where(p => p.SettleBillNum == p_InvGroupNum);//一次开票时查找不可结数据,追加需求 + + if (notsettle != null && notsettle.Count() > 0) + { + var innotls = new List(); + foreach (var nitm in notsettle) + { + innotls.Add(new INVOICE_NOT_SETTLE( + guid: GuidGenerator.Create(), + version: p_version, + invGroupNum: p_InvGroupNum, + settleGroupNum: nitm.GroupNum, + lU: nitm.LU, + lU1: nitm.LU, + extend1: nitm.PN, + extend2: string.Empty, + qty: nitm.Qty, + p_invbillnum: string.Empty + )); + } + if (innotls.Count > 0) + { + notDetialList.AddRange(innotls); + } + + } + } + 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);//税额 diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/EnumBillState.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/EnumBillState.cs index 8601e6da..a62001bb 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/EnumBillState.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/EnumBillState.cs @@ -26,7 +26,9 @@ namespace Win.Sfs.SettleAccount [Description("客户已收票")] 客户已收票 = 4, [Description("已提交扣减")] - 已提交扣减 = 6 + 已提交扣减 = 6, + [Description("已提交撤销扣减")] + 已提交撤销扣减 = 7 } public enum PDBillState