Browse Source

更新发票调整服务

master
学 赵 1 year ago
parent
commit
4deeee5db2
  1. 3
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/AuthServer/AuthServerHostModule.cs
  2. 9
      code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/INVOICE_GRP_DTO.cs
  3. 169
      code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_ADJ_DETAIL_DTO.cs
  4. 250
      code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_CAN_SA_DTO.cs
  5. 104
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/ADJ_SERVICE.cs
  6. 8
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/BA_SERVICE.cs
  7. 19
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/CAN_SA_SERVICE.cs
  8. 8
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/NOT_SA_SERVICE.cs
  9. 9
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_BA_SERVICE.cs
  10. 4
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_BA_SERVICE.cs
  11. 18
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs
  12. 4
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_BA_SERVICE.cs
  13. 146
      code/src/Modules/SettleAccount/src/SettleAccount.Domain/Bases/BaseDomainServices/BaseDomainService.cs
  14. 33
      code/src/Modules/SettleAccount/src/SettleAccount.Domain/Bases/EntityBase.cs
  15. 48
      code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG.cs
  16. 3
      code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Temp/TempClass.cs

3
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/AuthServer/AuthServerHostModule.cs

@ -1,4 +1,4 @@
using AuthServer.Host.EntityFrameworkCore; using AuthServer.Host.EntityFrameworkCore;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.DataProtection;
@ -43,7 +43,6 @@ namespace AuthServer.Host
public class AuthServerHostModule : AbpModule public class AuthServerHostModule : AbpModule
{ {
private const string DefaultCorsPolicyName = "Default"; private const string DefaultCorsPolicyName = "Default";
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();

9
code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/INVOICE_GRP_DTO.cs

@ -13,9 +13,6 @@ using Win.Sfs.Shared.Filter;
namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos
{ {
public class INVOICE_GRP_DTO : EntityDto<Guid> public class INVOICE_GRP_DTO : EntityDto<Guid>
{ {
@ -67,7 +64,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos
public class INVOICE_GRP_EXP_DTO public class INVOICE_GRP_EXP_DTO
{ {
/// <summary> /// <summary>
@ -159,6 +155,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos
public List<INVOICE_MAP_GROUP_DTO> INVOICE_MAP_GROUP { get; set; } public List<INVOICE_MAP_GROUP_DTO> INVOICE_MAP_GROUP { get; set; }
public List<INVOICE_NOT_SETTLE_DTO> INVOICE_NOT_SETTLE { get; set; } public List<INVOICE_NOT_SETTLE_DTO> INVOICE_NOT_SETTLE { get; set; }
public List<PUB_ADJ_DETAIL_DTO> ADJ_DETAIL { get; set; }
} }
public class INVOICE_WAIT_DETAIL_DTO : EntityDto<Guid> public class INVOICE_WAIT_DETAIL_DTO : EntityDto<Guid>

169
code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_ADJ_DETAIL_DTO.cs

@ -12,17 +12,6 @@ using Win.Sfs.Shared.Filter;
namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos; namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos;
public class PUB_ADJ_DETAIL_DTO : EntityDto<Guid> public class PUB_ADJ_DETAIL_DTO : EntityDto<Guid>
{ {
/// <summary>
///工厂地点
/// </summary>
[Display(Name = "工厂地点")]
public string Site { get; set; }
/// <summary>
///扩展1
/// </summary>
[Display(Name = "扩展1")]
public string Extend1 { get; set; }
/// <summary> /// <summary>
///作废发票号 ///作废发票号
/// </summary> /// </summary>
@ -33,111 +22,93 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos;
/// </summary> /// </summary>
[Display(Name = "发票号")] [Display(Name = "发票号")]
public string InvBillNum { get; set; } public string InvBillNum { get; set; }
public decimal Price { get; set; }
public int Version { get; set; }
public string SettleBillNum { get; set; }
public DateTime SettleDate { get; set; }
public string InvGroupNum { get; set; }
public string LU { get; set; }
public string PN { get; set; }
public string KeyCode { get; set; }
public decimal Qty { get; set; }
public string GroupNum { get; set; }
}
public class PUB_ADJ_DETAIL_EXP_DTO
{
/// <summary>
///工厂地点
/// </summary>
[ExporterHeader(DisplayName = "工厂地点")]
public string Site { get; set; }
/// <summary>
///扩展1
/// </summary>
[ExporterHeader(DisplayName = "扩展1")]
public string Extend1 { get; set; }
/// <summary>
///作废发票号
/// </summary>
[ExporterHeader(DisplayName = "作废发票号")]
public string OldInvBillNum { get; set; }
/// <summary> /// <summary>
///发票号 /// 下线日期
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "发票号")] [Display(Name = "下线日期")]
public string InvBillNum { get; set; } public DateTime SettleDate { get; set; }
public decimal Price { get; set; }
public int Version { get; set; } [Display(Name = "发票分组号")]
public string SettleBillNum { get; set; }
public DateTime SettleDate { get; set; }
public string InvGroupNum { get; set; } public string InvGroupNum { get; set; }
[Display(Name = "零件号")]
public string LU { get; set; } public string LU { get; set; }
[Display(Name = "标识号")]
public string PN { get; set; } public string PN { get; set; }
public string KeyCode { get; set; } [Display(Name = "数量")]
public decimal Qty { get; set; } public decimal Qty { get; set; }
[Display(Name = "结算分组")]
public string GroupNum { get; set; } public string GroupNum { get; set; }
} }
public class PUB_ADJ_DETAIL_EXP_DTO
{
/// <summary>
///发票号
/// </summary>
[Display(Name = "发票号")]
public string OldInvBillNum { get; set; }
[Display(Name = "新发票号")]
public string InvBillNum { get; set; }
[Display(Name = "下线日期")]
public DateTime SettleDate { get; set; }
public class PUB_ADJ_DETAIL_IMP_DTO [Display(Name = "零件号")]
{ public string LU { get; set; }
/// <summary> [Display(Name = "标识号")]
///工厂地点 public string PN { get; set; }
/// </summary> [Display(Name = "数量")]
[ImporterHeader(Name = "工厂地点")] public decimal Qty { get; set; }
public string Site { get; set; } [Display(Name = "结算分组号")]
/// <summary> public string GroupNum { get; set; }
///扩展1 }
/// </summary>
[ImporterHeader(Name = "扩展1")]
public string Extend1 { get; set; }
/// <summary> public class PUB_ADJ_DETAIL_IMP_DTO
///作废发票号 {
/// </summary> /// <summary>
[ImporterHeader(Name = "作废发票号")] ///发票号
public string OldInvBillNum { get; set; } /// </summary>
/// <summary> [ImporterHeader(Name = "发票号")]
///发票号 public string OldInvBillNum { get; set; }
/// </summary> [ImporterHeader(Name = "下线日期")]
[ImporterHeader(Name = "发票号")] public DateTime SettleDate { get; set; }
public string InvBillNum { get; set; } [ImporterHeader(Name = "零件号")]
public decimal Price { get; set; } public string LU { get; set; }
public int Version { get; set; } [ImporterHeader(Name = "标识号")]
public string SettleBillNum { get; set; } public string PN { get; set; }
public DateTime SettleDate { get; set; } [ImporterHeader(Name = "数量")]
public string InvGroupNum { get; set; } public decimal Qty { get; set; }
public string LU { get; set; } [ImporterHeader(Name = "结算分组号")]
public string PN { get; set; } public string GroupNum { get; set; }
public string KeyCode { get; set; }
public decimal Qty { get; set; }
public string GroupNum { get; set; }
}
}
public class PUB_ADJ_DETAIL_REQ_DTO : RequestInputBase
public class PUB_ADJ_DETAIL_REQ_DTO : RequestInputBase
{ {
[Display(Name = "工厂地点")] /// <summary>
public string Site { get; set; } ///发票号
[Display(Name = "扩展1")] /// </summary>
public string Extend1 { get; set; } [Display(Name = "发票号")]
[Display(Name = "作废发票号")] public string OldInvBillNum { get; set; }
public string OldInvBillNum { get; set; } [Display(Name = "下线日期")]
[Display(Name = "发票号")] public DateTime SettleDate { get; set; }
public string InvBillNum { get; set; } [Display(Name = "零件号")]
public string InvGroupNum { get; set; } public string LU { get; set; }
public string LU { get; set; } [Display(Name = "标识号")]
public string PN { get; set; } public string PN { get; set; }
public string KeyCode { get; set; } [Display(Name = "数量")]
public string GroupNum { get; set; } public decimal Qty { get; set; }
[Display(Name = "结算分组号")]
} public string GroupNum { get; set; }
}

250
code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_CAN_SA_DTO.cs

@ -12,59 +12,58 @@ using Win.Sfs.Shared.Filter;
namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos
{ {
public class PUB_CAN_SA_DTO : EntityDto<Guid>
public class PUB_CAN_SA_DTO : EntityDto<Guid> {
{ /// <summary>
/// <summary> ///期间
///期间 /// </summary>
/// </summary> [Display(Name = "期间")]
[Display(Name = "期间")] public int Version { get; set; }
public int Version { get; set; } /// <summary>
/// <summary> ///关联结算单号
///关联结算单号 /// </summary>
/// </summary> [Display(Name = "关联结算单号")]
[Display(Name = "关联结算单号")] public string SettleBillNum { get; set; }
public string SettleBillNum { get; set; } /// <summary>
/// <summary> ///结算单据
///结算单据 /// </summary>
/// </summary> [Display(Name = "结算单据")]
[Display(Name = "结算单据")] public string BillNum { get; set; }
public string BillNum { get; set; } /// <summary>
/// <summary> ///状态
///状态 /// </summary>
/// </summary> [Display(Name = "状态")]
[Display(Name = "状态")] public int State { get; set; }
public int State { get; set; } /// <summary>
/// <summary> ///业务分类
///业务分类 /// </summary>
/// </summary> [Display(Name = "业务分类")]
[Display(Name = "业务分类")] public EnumBusinessType BusinessType { get; set; }
public EnumBusinessType BusinessType { get; set; } /// <summary>
/// <summary> ///明细记录行数
///明细记录行数 /// </summary>
/// </summary> [Display(Name = "明细记录行数")]
[Display(Name = "明细记录行数")] public string InvGroupNum { get; set; }
public string InvGroupNum { get; set; }
}
} public class PUB_CAN_SA_REQ_DTO : RequestInputBase
public class PUB_CAN_SA_REQ_DTO : RequestInputBase {
{
[Display(Name = "期间")]
[Display(Name = "期间")] public int Version { get; set; }
public int Version { get; set; } [Display(Name = "关联结算单号")]
[Display(Name = "关联结算单号")] public string SettleBillNum { get; set; }
public string SettleBillNum { get; set; } [Display(Name = "发票分组号")]
[Display(Name = "发票分组号")] public string BillNum { get; set; }
public string BillNum { get; set; } [Display(Name = "状态")]
[Display(Name = "状态")] public int State { get; set; }
public int State { get; set; } [Display(Name = "业务分类")]
[Display(Name = "业务分类")] public EnumBusinessType BusinessType { get; set; }
public EnumBusinessType BusinessType { get; set; } [Display(Name = "发票分组号")]
[Display(Name = "发票分组号")] public string InvGroupNum { get; set; }
public string InvGroupNum { get; set; }
}
}
public class PUB_CAN_SA_DETAIL_DTO : EntityDto<Guid> public class PUB_CAN_SA_DETAIL_DTO : EntityDto<Guid>
{ {
@ -108,96 +107,89 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos
public string MaterialDesc { set; get; } public string MaterialDesc { set; get; }
} }
public class PUB_CAN_SA_DETAIL_EXP_DTO public class PUB_CAN_SA_DETAIL_EXP_DTO
{ {
[ExporterHeader(DisplayName = "期间")] [ExporterHeader(DisplayName = "期间")]
public int Version { get; set; } public int Version { get; set; }
/// <summary> /// <summary>
///关联结算单号 ///关联结算单号
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "关联结算单号")] [ExporterHeader(DisplayName = "关联结算单号")]
public string SettleBillNum { get; set; } public string SettleBillNum { get; set; }
/// <summary> /// <summary>
///工厂地点 ///工厂地点
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "工厂地点")] [ExporterHeader(DisplayName = "工厂地点")]
public string Site { get; set; } public string Site { get; set; }
/// <summary> /// <summary>
///业务类别 ///业务类别
/// </summary> /// </summary>
[ExporterHeader(DisplayName = "业务类别")] [ExporterHeader(DisplayName = "业务类别")]
public EnumBusinessType BusinessType { get; set; } public EnumBusinessType BusinessType { get; set; }
[ExporterHeader(DisplayName = "单价")]
public decimal Price { get; set; }
[ExporterHeader(DisplayName = "发票分组号")]
public string BillNum { get; set; }
[ExporterHeader(DisplayName = "下线日期")]
public DateTime SettleDate { get; set; }
[ExporterHeader(DisplayName = "发票分组号")]
public string InvGroupNum { get; set; }
[ExporterHeader(DisplayName = "LU")]
public string LU { get; set; }
[ExporterHeader(DisplayName = "发货单号、交付单号")]
public string PN { get; set; }
[ExporterHeader(DisplayName = "结算数量")] [ExporterHeader(DisplayName = "单价")]
public decimal Qty { get; set; } public decimal Price { get; set; }
[ExporterHeader(DisplayName = "发票分组号")]
public string BillNum { get; set; }
[ExporterHeader(DisplayName = "下线日期")]
public DateTime SettleDate { get; set; }
[ExporterHeader(DisplayName = "发票分组号")]
public string InvGroupNum { get; set; }
[ExporterHeader(DisplayName = "LU")]
public string LU { get; set; }
[ExporterHeader(DisplayName = "发货单号、交付单号")]
public string PN { get; set; }
[ExporterHeader(DisplayName = "结算数量")]
public decimal Qty { get; set; }
[ExporterHeader(DisplayName = "结算分组号")]
public string GroupNum { get; set; }
}
[ExporterHeader(DisplayName = "结算分组号")]
public string GroupNum { get; set; }
}
public class PUB_CAN_SA_DETAIL_REQ_DTO : RequestInputBase public class PUB_CAN_SA_DETAIL_REQ_DTO : RequestInputBase
{ {
/// <summary> /// <summary>
///关联结算单号 ///关联结算单号
/// </summary> /// </summary>
[Display(Name = "关联结算单号")] [Display(Name = "关联结算单号")]
public string SettleBillNum { get; set; } public string SettleBillNum { get; set; }
/// <summary> /// <summary>
///工厂地点 ///工厂地点
/// </summary> /// </summary>
[Display(Name = "工厂地点")] [Display(Name = "工厂地点")]
public string Site { get; set; } public string Site { get; set; }
/// <summary> /// <summary>
///业务类别 ///业务类别
/// </summary> /// </summary>
[Display(Name = "业务类别")] [Display(Name = "业务类别")]
public EnumBusinessType BusinessType { get; set; } public EnumBusinessType BusinessType { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Display(Name = "发票分组号")] [Display(Name = "发票分组号")]
public string BillNum { get; set; } public string BillNum { get; set; }
[Display(Name = "下线日期")] [Display(Name = "下线日期")]
public DateTime SettleDate { get; set; } public DateTime SettleDate { get; set; }
[Display(Name = "发票分组号")] [Display(Name = "发票分组号")]
public string InvGroupNum { get; set; } public string InvGroupNum { get; set; }
[Display(Name = "LU")] [Display(Name = "LU")]
public string LU { get; set; } public string LU { get; set; }
[Display(Name = "发货单号、交付单号")] [Display(Name = "发货单号、交付单号")]
public string PN { get; set; } public string PN { get; set; }
}
@ -205,6 +197,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos
}

104
code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/ADJ_SERVICE.cs

@ -0,0 +1,104 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EFCore.BulkExtensions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using SettleAccount.Bases;
using SettleAccount.Domain.BQ;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
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.Dtos;
using Win.Sfs.SettleAccount.ExcelImporter;
using Win.Sfs.SettleAccount.ExportReports;
using Win.Sfs.Shared.RepositoryBase;
namespace Win.Sfs.SettleAccount.Bases;
/// <summary>
/// 发票明细调整表
/// </summary>
[AllowAnonymous]
[Route("api/settleaccount/[controller]/[action]")]
public class ADJ_SERVICE : BASE_SERVICE
{
protected readonly INormalEfCoreRepository<PUB_ADJ_DETAIL, Guid> _repository;
protected readonly BaseDomainService _baseDomainService;
public ADJ_SERVICE(
INormalEfCoreRepository<PUB_ADJ_DETAIL, Guid> repository,
BaseDomainService baseDomainService,
IExcelImportAppService excelImportService,
ISnowflakeIdGenerator snowflakeIdGenerator,
ICommonManager commonManager
)
: base(excelImportService, snowflakeIdGenerator, commonManager)
{
_repository = repository;
_baseDomainService = baseDomainService;
}
/// <summary>
///查询明细
/// </summary>
/// <param name="input">明细查询条件</param>
/// <returns></returns>
[HttpPost]
public virtual async Task<PagedResultDto<PUB_ADJ_DETAIL_DTO>> DetailQueryAsync(PUB_ADJ_DETAIL_REQ_DTO input)
{
var entitys = await _repository.GetListByFilterAsync(input.Filters, input.Sorting, input.MaxResultCount, input.SkipCount);
var totalCount = await _repository.GetCountByFilterAsync(input.Filters);
var dtos = ObjectMapper.Map<List<PUB_ADJ_DETAIL>, List<PUB_ADJ_DETAIL_DTO>>(entitys);
return new PagedResultDto<PUB_ADJ_DETAIL_DTO>(totalCount, dtos);
}
/// <summary>
/// 导入文件
/// </summary>
/// <param name="files"></param>
/// <returns></returns>
/// <exception cref="BusinessException"></exception>
[HttpPost]
[DisableRequestSizeLimit]
public async Task<string> ExcelImport([FromForm] IFormFileCollection files)
{
List<ErrorExportDto> errorList = new List<ErrorExportDto>();
ExportImporter _exportImporter = new ExportImporter();
var result = await _exportImporter.UploadExcelImport<PUB_ADJ_DETAIL_IMP_DTO>(files, _excelImportService);
if (result.Count == 0)
{
throw new BusinessException("8989", "导入数据记录为0条");
}
var deletels = _repository.Where(p => p.OldInvBillNum == result.FirstOrDefault().OldInvBillNum).ToList();
var first = deletels.FirstOrDefault();
if (!string.IsNullOrEmpty(first.InvBillNum))
{
throw new BusinessException("8989", $"调整记录已经新发票号:{first.InvBillNum}");
}
var entityList = ObjectMapper.Map<List<PUB_ADJ_DETAIL_IMP_DTO>, List<PUB_ADJ_DETAIL>>(result);
var codelist = entityList.Select(p => p.LU).ToList();
var errors = await _baseDomainService.CheckBase(codelist, new BASE_CONF() { IsRelationShip = true });
foreach (var itm in errors)
{
errorList.Add(
new ErrorExportDto() { ItemCode = $"{itm}", Message = $"[客户零件关系表]不存在客户零件号{itm}" });
}
var errorEntitylist = await _baseDomainService.CheckPriceList(entityList);
if (errorEntitylist.Count > 0)
{
foreach (var itm in errorEntitylist)
{
errorList.Add(new ErrorExportDto() { ItemCode = $"{itm.LU}", Message = $"客户零件号{itm.LU}标识号{itm.PN}下线日期{itm.SettleDate}不存在价格单记录" });
}
}
await _repository.DbContext.BulkDeleteAsync(deletels);//删除发票下所有调整明细
await _repository.DbContext.BulkInsertAsync(entityList);
return ApplicationConsts.SuccessStr;
}
}

8
code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/BA_SERVICE.cs

@ -313,10 +313,10 @@ namespace Win.Sfs.SettleAccount.Bases
/// <param name="p_version">版本号</param> /// <param name="p_version">版本号</param>
/// <param name="p_InvGroupNum">发票分组</param> /// <param name="p_InvGroupNum">发票分组</param>
/// <param name="p_parentInvBillNum">原发票号</param> /// <param name="p_parentInvBillNum">原发票号</param>
protected async Task<bool> ReissueSecInvoice(List<TEMP_CAN_SA_DETAIL> p_list, int p_version, string p_parentInvBillNum) protected async Task<bool> ReissueSecInvoice(List<TEMP_CAN_SA_DETAIL> p_list, List<PUB_ADJ_DETAIL> p_adjlist, int p_version, string p_parentInvBillNum)
{ {
return await _invMng.ReissueSecInvoice(p_list,p_parentInvBillNum, p_version); return await _invMng.ReissueSecInvoice(p_list,p_adjlist,p_parentInvBillNum, p_version);
} }
@ -330,9 +330,9 @@ namespace Win.Sfs.SettleAccount.Bases
/// <param name="p_parentInvBillNum">要作废的发票号</param> /// <param name="p_parentInvBillNum">要作废的发票号</param>
/// <param name="businessType"></param> /// <param name="businessType"></param>
/// <returns></returns> /// <returns></returns>
protected async Task<bool> ReissueFirstInvoice(List<TEMP_CAN_SA_DETAIL> dtos,int p_version, string p_parentInvBillNum) protected async Task<bool> ReissueFirstInvoice(List<TEMP_CAN_SA_DETAIL> dtos, List<PUB_ADJ_DETAIL> p_adjlist, int p_version, string p_parentInvBillNum)
{ {
return await _invMng.ReissueFirstInvoice(dtos,p_parentInvBillNum,p_version); return await _invMng.ReissueFirstInvoice(dtos,p_adjlist,p_parentInvBillNum,p_version);
} }
/// <summary> /// <summary>

19
code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/CAN_SA_SERVICE.cs

@ -167,7 +167,12 @@ namespace Win.Sfs.SettleAccount.Bases
protected async Task<bool> SecInvoice(List<TEMP_CAN_SA_DETAIL> p_list, int p_version, string p_InvGroupNum, string p_parentInvBillNum,EnumBusinessType businessType) protected async Task<bool> SecInvoice(List<TEMP_CAN_SA_DETAIL> p_list, int p_version, string p_InvGroupNum, string p_parentInvBillNum,EnumBusinessType businessType)
{ {
return await _invmng.SecInvoice(p_list, p_version, p_InvGroupNum, p_parentInvBillNum, businessType); var ls= await _invmng.SecInvoice(p_list, p_version, p_InvGroupNum, p_parentInvBillNum, businessType);
if (ls.Count > 0)
{
return true;
}
return false;
} }
@ -181,9 +186,17 @@ namespace Win.Sfs.SettleAccount.Bases
/// <param name="p_parentInvBillNum"></param> /// <param name="p_parentInvBillNum"></param>
/// <param name="businessType"></param> /// <param name="businessType"></param>
/// <returns></returns> /// <returns></returns>
protected async Task<bool> FirstInvoice(List<TEMP_CAN_SA_DETAIL> dtos, List<TEMP_NOT_SA_DETAIL> p_notlist, int p_version, string p_InvGroupNum, string p_parentInvBillNum,EnumBusinessType businessType) protected async Task<bool> FirstInvoice(List<TEMP_CAN_SA_DETAIL> dtos, List<TEMP_NOT_SA_DETAIL> p_notlist, int p_version, string p_InvGroupNum, string p_parentInvBillNum, EnumBusinessType businessType)
{ {
return await _invmng.FirstInvoice(dtos, p_notlist, p_version, p_InvGroupNum, p_parentInvBillNum, businessType);
var ls = await _invmng.FirstInvoice(dtos, p_notlist, p_version, p_InvGroupNum, p_parentInvBillNum, businessType);
if (ls.Count > 0)
{
return true;
}
return false;
} }
/// <summary> /// <summary>

8
code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/NOT_SA_SERVICE.cs

@ -27,19 +27,12 @@ using Win.Sfs.Shared.RepositoryBase;
namespace Win.Sfs.SettleAccount.Bases namespace Win.Sfs.SettleAccount.Bases
{ {
public abstract class NOT_SA_SERVICE<TEntityDetail, TEntityDetailDto, TRequestDetailInput, TEntityDetailExportDto> : BASE_SERVICE public abstract class NOT_SA_SERVICE<TEntityDetail, TEntityDetailDto, TRequestDetailInput, TEntityDetailExportDto> : BASE_SERVICE
where TEntityDetail : SA_NOT_BASE where TEntityDetail : SA_NOT_BASE
where TEntityDetailDto : class, IEntityDto<Guid>, new() where TEntityDetailDto : class, IEntityDto<Guid>, new()
where TRequestDetailInput : RequestInputBase where TRequestDetailInput : RequestInputBase
where TEntityDetailExportDto : class, new() where TEntityDetailExportDto : class, new()
{ {
protected readonly INormalEfCoreRepository<TEntityDetail, Guid> _detailRepository; protected readonly INormalEfCoreRepository<TEntityDetail, Guid> _detailRepository;
protected NOT_SA_SERVICE( protected NOT_SA_SERVICE(
IExcelImportAppService excelImportService, IExcelImportAppService excelImportService,
ISnowflakeIdGenerator snowflakeIdGenerator, ISnowflakeIdGenerator snowflakeIdGenerator,
@ -49,6 +42,7 @@ namespace Win.Sfs.SettleAccount.Bases
) )
: base(excelImportService, snowflakeIdGenerator, commonManager) : base(excelImportService, snowflakeIdGenerator, commonManager)
{ {
_detailRepository=detailRepository;
} }
/// <summary> /// <summary>

9
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_BA_SERVICE.cs

@ -1,7 +1,6 @@
using DocumentFormat.OpenXml.Bibliography;
using EFCore.BulkExtensions; using EFCore.BulkExtensions;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using SettleAccount.Domain.BQ; using SettleAccount.Domain.BQ;
@ -85,7 +84,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
throw new BusinessException("8989", $"选择发票:{p_invbillnum}状态为报废状态不能重开!"); throw new BusinessException("8989", $"选择发票:{p_invbillnum}状态为报废状态不能重开!");
} }
var bbaclist = await _bbacMng.GetContainsAsync(inv.InvbillNum, gList);//结算分组对应结算零件 var bbaclist = await _bbacMng.GetContainsAsync(inv.InvbillNum, gList);//结算分组对应结算零件
var adjlist = await _adjRepository.Where(p => p.InvBillNum == inv.InvbillNum).ToListAsync();//调整表明细 var adjlist = await _adjRepository.Where(p => p.OldInvBillNum == inv.InvbillNum).ToListAsync();//调整表明细
if (adjlist != null && adjlist.Count() > 0) if (adjlist != null && adjlist.Count() > 0)
{ {
foreach (var itm in adjlist) foreach (var itm in adjlist)
@ -149,11 +148,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
{ {
if (p_invbillnum.Substring(0, 3) == "INV")//一次开票重开 if (p_invbillnum.Substring(0, 3) == "INV")//一次开票重开
{ {
await ReissueFirstInvoice(dtos, version, p_invbillnum); await ReissueFirstInvoice(dtos,adjlist ,version, p_invbillnum);
} }
else//二次开票 else//二次开票
{ {
await ReissueSecInvoice(dtos, version, p_invbillnum); await ReissueSecInvoice(dtos,adjlist,version, p_invbillnum);
} }
} }
} }

4
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_BA_SERVICE.cs

@ -140,11 +140,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
{ {
if (p_invbillnum.Substring(0, 3) == "INV")//一次开票重开 if (p_invbillnum.Substring(0, 3) == "INV")//一次开票重开
{ {
await ReissueFirstInvoice(dtos, version, p_invbillnum); await ReissueFirstInvoice(dtos,adjlist, version, p_invbillnum);
} }
else//二次开票 else//二次开票
{ {
await ReissueSecInvoice(dtos, version, p_invbillnum); await ReissueSecInvoice(dtos,adjlist, version, p_invbillnum);
} }
} }
} }

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

@ -39,6 +39,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
private readonly INormalEfCoreRepository<INVOICE_WAIT_DETAIL, Guid> _wRepository; private readonly INormalEfCoreRepository<INVOICE_WAIT_DETAIL, Guid> _wRepository;
private readonly INormalEfCoreRepository<INVOICE_NOT_SETTLE, Guid> _sRepository; private readonly INormalEfCoreRepository<INVOICE_NOT_SETTLE, Guid> _sRepository;
private readonly INormalEfCoreRepository<INVOICE_MAP_GROUP, Guid> _mRepository; private readonly INormalEfCoreRepository<INVOICE_MAP_GROUP, Guid> _mRepository;
private readonly INormalEfCoreRepository<PUB_ADJ_DETAIL, Guid> _adjRepository;
private readonly PUB_CAN_SA_MNG _pubMng; private readonly PUB_CAN_SA_MNG _pubMng;
private readonly BBAC_CAN_SA_MNG _bbacMng; private readonly BBAC_CAN_SA_MNG _bbacMng;
private readonly HBPO_CAN_SA_MNG _hbpoMng; private readonly HBPO_CAN_SA_MNG _hbpoMng;
@ -50,6 +51,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
INormalEfCoreRepository<INVOICE_WAIT_DETAIL, Guid> wRepository, INormalEfCoreRepository<INVOICE_WAIT_DETAIL, Guid> wRepository,
INormalEfCoreRepository<INVOICE_NOT_SETTLE, Guid> sRepository, INormalEfCoreRepository<INVOICE_NOT_SETTLE, Guid> sRepository,
INormalEfCoreRepository<INVOICE_MAP_GROUP, Guid> mRepository, INormalEfCoreRepository<INVOICE_MAP_GROUP, Guid> mRepository,
INormalEfCoreRepository<PUB_ADJ_DETAIL, Guid> adjRepository,
PUB_CAN_SA_MNG pubMng, PUB_CAN_SA_MNG pubMng,
BBAC_CAN_SA_MNG bbacMng, BBAC_CAN_SA_MNG bbacMng,
HBPO_CAN_SA_MNG hbpoMng, HBPO_CAN_SA_MNG hbpoMng,
@ -61,6 +63,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
_wRepository = wRepository; _wRepository = wRepository;
_mRepository = mRepository; _mRepository = mRepository;
_sRepository = sRepository; _sRepository = sRepository;
_adjRepository = adjRepository;
_pubMng = pubMng; _pubMng = pubMng;
_bbacMng = bbacMng; _bbacMng = bbacMng;
_hbpoMng = hbpoMng; _hbpoMng = hbpoMng;
@ -95,9 +98,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
var wdtos = ObjectMapper.Map<List<INVOICE_WAIT_DETAIL>, List<INVOICE_WAIT_DETAIL_DTO>>(w); var wdtos = ObjectMapper.Map<List<INVOICE_WAIT_DETAIL>, List<INVOICE_WAIT_DETAIL_DTO>>(w);
var s = await _sRepository.GetListByFilterAsync(input.Filters, input.Sorting, int.MaxValue, input.SkipCount); var s = await _sRepository.GetListByFilterAsync(input.Filters, input.Sorting, int.MaxValue, input.SkipCount);
var sdtos = ObjectMapper.Map<List<INVOICE_NOT_SETTLE>, List<INVOICE_NOT_SETTLE_DTO>>(s); var sdtos = ObjectMapper.Map<List<INVOICE_NOT_SETTLE>, List<INVOICE_NOT_SETTLE_DTO>>(s);
var adjs =await _adjRepository.GetListByFilterAsync(input.Filters);
var adjdtos = ObjectMapper.Map<List<PUB_ADJ_DETAIL>, List<PUB_ADJ_DETAIL_DTO>>(adjs);
_entity.INVOICE_NOT_SETTLE = sdtos; _entity.INVOICE_NOT_SETTLE = sdtos;
_entity.INVOICE_WAIT_DETAIL = wdtos; _entity.INVOICE_WAIT_DETAIL = wdtos;
_entity.INVOICE_MAP_GROUP = mdtos; _entity.INVOICE_MAP_GROUP = mdtos;
_entity.ADJ_DETAIL = adjdtos;
return _entity; return _entity;
@ -146,25 +152,25 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
{ {
IExporter _csv = new CsvExporter(); IExporter _csv = new CsvExporter();
ExcelExporter _excel = new ExcelExporter(); ExcelExporter _excel = new ExcelExporter();
var entities = await _repository.GetListByFilterAsync(input.Filters, input.Sorting, int.MaxValue, 0, true); var entities = await _repository.GetListByFilterAsync(input.Filters, input.Sorting, int.MaxValue, 0, true);
var dtoDetails = ObjectMapper.Map<List<INVOICE_GRP>, List<INVOICE_GRP_EXP_DTO>>(entities); var dtoDetails = ObjectMapper.Map<List<INVOICE_GRP>, List<INVOICE_GRP_EXP_DTO>>(entities);
var invdetail= await DetailQueryAsync(input); var invdetail= await DetailQueryAsync(input);
var m = invdetail.INVOICE_MAP_GROUP; var m = invdetail.INVOICE_MAP_GROUP;
var not=invdetail.INVOICE_NOT_SETTLE; var not=invdetail.INVOICE_NOT_SETTLE;
var detail =invdetail.INVOICE_WAIT_DETAIL; var detail =invdetail.INVOICE_WAIT_DETAIL;
var adj = invdetail.ADJ_DETAIL;
var classDisplayName = typeof(INVOICE_GRP_DTO).GetCustomAttribute<DisplayAttribute>()?.Name ?? typeof(INVOICE_GRP_DTO).Name; var classDisplayName = typeof(INVOICE_GRP_DTO).GetCustomAttribute<DisplayAttribute>()?.Name ?? typeof(INVOICE_GRP_DTO).Name;
string _fileName = $"{classDisplayName}_{Guid.NewGuid().ToString()}.xlsx"; string _fileName = $"{classDisplayName}_{Guid.NewGuid().ToString()}.xlsx";
var result = _excel
.Append(dtoDetails,"发票表")
var result = _excel.Append(dtoDetails,"发票表").SeparateBySheet() .SeparateBySheet()
.Append(m, "发票和结算分组关系") .Append(m, "发票和结算分组关系")
.SeparateBySheet() .SeparateBySheet()
.Append(not, "对应未结结算分组") .Append(not, "对应未结结算分组")
.SeparateBySheet() .SeparateBySheet()
.Append(detail, "发票明细") .Append(detail, "发票明细")
.SeparateBySheet()
.Append(adj,"发票调整单")
.ExportAppendDataAsByteArray(); .ExportAppendDataAsByteArray();
result.ShouldNotBeNull(); result.ShouldNotBeNull();
//保存导出文件到服务器存成二进制 //保存导出文件到服务器存成二进制

4
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_BA_SERVICE.cs

@ -140,11 +140,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
{ {
if (p_invbillnum.Substring(0, 3) == "INV")//一次开票重开 if (p_invbillnum.Substring(0, 3) == "INV")//一次开票重开
{ {
await ReissueFirstInvoice(dtos, version, p_invbillnum); await ReissueFirstInvoice(dtos,adjlist, version, p_invbillnum);
} }
else//二次开票 else//二次开票
{ {
await ReissueSecInvoice(dtos, version, p_invbillnum); await ReissueSecInvoice(dtos,adjlist, version, p_invbillnum);
} }
} }
} }

146
code/src/Modules/SettleAccount/src/SettleAccount.Domain/Bases/BaseDomainServices/BaseDomainService.cs

@ -1,4 +1,4 @@
using SettleAccount.Bases; using SettleAccount.Bases;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -13,78 +13,76 @@ using Win.Sfs.SettleAccount.Boms;
using Win.Sfs.SettleAccount.CommonManagers; using Win.Sfs.SettleAccount.CommonManagers;
using Win.Sfs.SettleAccount.Entities.ImportMap; using Win.Sfs.SettleAccount.Entities.ImportMap;
using Win.Sfs.SettleAccount.Entities.Materials; using Win.Sfs.SettleAccount.Entities.Materials;
using Win.Sfs.SettleAccount.Entities.Prices;
using Win.Sfs.SettleAccount.FISes; using Win.Sfs.SettleAccount.FISes;
using Win.Sfs.SettleAccount.MaterialRelationships; using Win.Sfs.SettleAccount.MaterialRelationships;
using Win.Sfs.Shared.RepositoryBase;
namespace Win.Sfs.SettleAccount.Bases.DomainServices namespace Win.Sfs.SettleAccount.Bases.DomainServices
{ {
public class BaseDomainService:DomainService, ICheck public class BaseDomainService : DomainService
{ {
private readonly ISettleAccountBQEfCoreRepository<Material, Guid> _materialRepository; private readonly INormalEfCoreRepository<Material, Guid> _materialRepository;
private readonly ISettleAccountBQEfCoreRepository<MaterialRelationship, Guid> _relationshipRepository; private readonly INormalEfCoreRepository<MaterialRelationship, Guid> _relationshipRepository;
private readonly ISettleAccountBQEfCoreRepository<Bom, Guid> _bomshipRepository; private readonly INormalEfCoreRepository<PriceList, Guid> _priceRepository;
private readonly INormalEfCoreRepository<PriceListBJ, Guid> _pricebjRepository;
private readonly INormalEfCoreRepository<Bom, Guid> _bomshipRepository;
public BaseDomainService( public BaseDomainService(
IGuidGenerator guidGenerator, IGuidGenerator guidGenerator,
IObjectMapper objectMapper, IObjectMapper objectMapper,
ISettleAccountBQEfCoreRepository<Material, Guid> materialRepository, INormalEfCoreRepository<Material, Guid> materialRepository,
ISettleAccountBQEfCoreRepository<MaterialRelationship, Guid> relationshipRepository, INormalEfCoreRepository<MaterialRelationship, Guid> relationshipRepository,
ISettleAccountBQEfCoreRepository<Bom, Guid> bomshipRepository INormalEfCoreRepository<Bom, Guid> bomshipRepository,
//IExcelImportAppService excelImportService, INormalEfCoreRepository<PriceList, Guid> priceRepository,
//ISnowflakeIdGenerator snowflakeIdGenerator, INormalEfCoreRepository<PriceListBJ, Guid> pricebjRepository
//ICommonManager commonManager //IExcelImportAppService excelImportService,
//ISnowflakeIdGenerator snowflakeIdGenerator,
//ICommonManager commonManager
) )
{ {
_pricebjRepository = pricebjRepository;
_pricebjRepository= pricebjRepository;
_materialRepository = materialRepository; _materialRepository = materialRepository;
_relationshipRepository = relationshipRepository; _relationshipRepository = relationshipRepository;
_bomshipRepository = bomshipRepository; _bomshipRepository = bomshipRepository;
} }
public async Task<List<string>> CheckBase<TEntity>(List<TEntity> p_list ,BASE_CONF p_config) where TEntity : ISBASE
public async Task<List<string>> CheckBase(List<string> p_list, BASE_CONF p_config)
{ {
List<string> errorList = new List<string>(); List<string> errorList = new List<string>();
var partList= p_list.Select(p=>p.LU).Distinct().ToList(); var partList = p_list;
if (p_config.IsBom == true) if (p_config.IsBom == true)
{ {
var bomList =await _bomshipRepository.ToListAsync(); var bomList = await _bomshipRepository.ToListAsync();
var query=from itm in partList join itm1 in bomList on itm equals itm1.ParentItemCode
into temp
from tm in temp.DefaultIfEmpty()
where tm == null
select itm;
foreach(var itm1 in query.ToList())
{
errorList.Add(itm1);
}
}
if (p_config.IsMaterial == true)
{
var materialList = await _materialRepository.ToListAsync();
var query = from itm in partList var query = from itm in partList
join itm1 in materialList on itm equals itm1.MaterialCode join itm1 in bomList on itm equals itm1.ParentItemCode
into temp into temp
from tm in temp.DefaultIfEmpty() from tm in temp.DefaultIfEmpty()
where tm == null where tm == null
select itm; select itm;
foreach (var partcode in query.ToList())
foreach (var itm1 in query.ToList())
{ {
errorList.Add(partcode); errorList.Add(itm1);
} }
} }
if (p_config.IsRelationShip == true) if (p_config.IsMaterial == true)
{ {
var materialList =await _relationshipRepository.ToListAsync();
var materialList = await _materialRepository.ToListAsync();
var query = from itm in partList var query = from itm in partList
join itm1 in materialList on itm equals itm1.SettleMaterialCode join itm1 in materialList on itm equals itm1.MaterialCode
into temp into temp
from tm in temp.DefaultIfEmpty() from tm in temp.DefaultIfEmpty()
where tm == null where tm == null
select itm; select itm;
foreach (var partcode in query.ToList()) foreach (var partcode in query.ToList())
{ {
errorList.Add(partcode); errorList.Add(partcode);
@ -106,15 +104,12 @@ namespace Win.Sfs.SettleAccount.Bases.DomainServices
} }
} }
return errorList; return errorList;
} }
public async Task<List<string>> CheckBase<TEntity>(List<TEntity> p_list, BASE_CONF p_config) where TEntity : ISBASE
public async Task<List<string>> CheckBase<TEntity>(List<string> p_list, BASE_CONF p_config)
{ {
List<string> errorList = new List<string>(); List<string> errorList = new List<string>();
var partList = p_list; var partList = p_list.Select(p => p.LU).Distinct().ToList();
if (p_config.IsBom == true) if (p_config.IsBom == true)
{ {
@ -161,19 +156,70 @@ namespace Win.Sfs.SettleAccount.Bases.DomainServices
errorList.Add(partcode); errorList.Add(partcode);
} }
} }
if (p_config.IsRelationShip == true)
{
var materialList = await _relationshipRepository.ToListAsync();
var query = from itm in partList
join itm1 in materialList on itm equals itm1.SettleMaterialCode
into temp
from tm in temp.DefaultIfEmpty()
where tm == null
select itm;
foreach (var partcode in query.ToList())
{
errorList.Add(partcode);
}
}
return errorList; return errorList;
} }
public async Task<List<TEntity>> CheckPriceList<TEntity>(List<TEntity> p_list,bool isBj=false)
where TEntity : ISA_BASE,new()
{
List<TEntity> errorList = new List<TEntity>();
if (isBj == true)
{
var pricebjlist = _pricebjRepository.ToList();
var inner = from d in p_list
join p in pricebjlist on d.LU equals p.LU
where
d.SettleDate >= p.BeginDate && d.SettleDate <= p.EndDate
select d;
var left = from d in p_list
join p in inner on new { d.LU, d.PN } equals new { p.LU, p.PN }
into temp
from tm in temp.DefaultIfEmpty()//校验错误项
where tm == null
select d;
errorList = left.ToList();
} }
public interface ICheck else
{ {
Task<List<string>> CheckBase<TEntity>(List<TEntity> p_list, BASE_CONF p_config) where TEntity : ISBASE; var pricebjlist = _priceRepository.ToList();
}
var inner = from d in p_list
join p in pricebjlist on d.LU equals p.LU
where
d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime
select d;
var left = from d in p_list
join p in inner on new { d.LU, d.PN } equals new { p.LU, p.PN }
into temp
from tm in temp.DefaultIfEmpty()//校验错误项
where tm == null
select d;
errorList = left.ToList();
}
return errorList;
}
}
} }

33
code/src/Modules/SettleAccount/src/SettleAccount.Domain/Bases/EntityBase.cs

@ -127,10 +127,10 @@ namespace SettleAccount.Bases
/// 单价 /// 单价
/// </summary> /// </summary>
public decimal Price { set; get; } public decimal Price { set; get; }
/// <summary> ///// <summary>
/// 结算单 ///// 结算单
/// </summary> ///// </summary>
public string BillNum { set; get; } //public string BillNum { set; get; }
/// <summary> /// <summary>
/// 结算日期 /// 结算日期
/// </summary> /// </summary>
@ -311,9 +311,9 @@ namespace SettleAccount.Bases
/// <summary> /// <summary>
/// 是否检查BOM /// 是否检查BOM
/// </summary> /// </summary>
public bool IsBom { set; get; } public bool IsBom { set; get; }
public bool IsPriceList { set; get; } public bool IsPriceList { set; get; }
public BASE_CONF(bool isRelationShip, bool isMaterial, bool isBom) public BASE_CONF(bool isRelationShip, bool isMaterial, bool isBom)
@ -322,6 +322,10 @@ namespace SettleAccount.Bases
IsMaterial = isMaterial; IsMaterial = isMaterial;
IsBom = isBom; IsBom = isBom;
} }
public BASE_CONF()
{
}
} }
@ -371,15 +375,9 @@ namespace SettleAccount.Bases
/// </summary> /// </summary>
public virtual string GroupNum { get ; set ; } public virtual string GroupNum { get ; set ; }
} }
public class SA_CAN_BASE : AuditedAggregateRoot<Guid>, ISA_CAN_BASE public class SA_CAN_BASE : AuditedAggregateRoot<Guid>, ISA_BASE
{ {
protected SA_CAN_BASE() { } protected SA_CAN_BASE() { }
public SA_CAN_BASE(Guid id) : base(id) { } public SA_CAN_BASE(Guid id) : base(id) { }
@ -443,7 +441,13 @@ namespace SettleAccount.Bases
// GroupNum = groupNum; // GroupNum = groupNum;
//} //}
} }
public class SA_NOT_BASE : AuditedAggregateRoot<Guid>, ISA_NOT_BASE
public class SA_NOT_BASE : AuditedAggregateRoot<Guid>, ISA_BASE
{ {
public SA_NOT_BASE() public SA_NOT_BASE()
{ {
@ -489,6 +493,7 @@ namespace SettleAccount.Bases
/// 結算分組號 /// 結算分組號
/// </summary> /// </summary>
public string GroupNum { get; set; } public string GroupNum { get; set; }
//public SA_NOT_BASE(decimal price, int version, string settleBillNum, DateTime settleDate, string invGroupNum, string lU, string pN, string keyCode, decimal qty, string groupNum) //public SA_NOT_BASE(decimal price, int version, string settleBillNum, DateTime settleDate, string invGroupNum, string lU, string pN, string keyCode, decimal qty, string groupNum)
//{ //{
// Price = price; // Price = price;

48
code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/INV_MNG.cs

@ -276,6 +276,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
/// <returns></returns> /// <returns></returns>
public virtual async Task<bool> ReceivedAsync(string p_groupbillnum) public virtual async Task<bool> ReceivedAsync(string p_groupbillnum)
{ {
var inv = _repository.Where(p => p.InvGroupNum == p_groupbillnum).FirstOrDefault(); var inv = _repository.Where(p => p.InvGroupNum == p_groupbillnum).FirstOrDefault();
if (inv.BusinessType == EnumBusinessType.JisBBAC) if (inv.BusinessType == EnumBusinessType.JisBBAC)
{ {
@ -541,8 +542,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
/// <param name="p_version">版本号</param> /// <param name="p_version">版本号</param>
/// <param name="p_InvGroupNum">发票分组</param> /// <param name="p_InvGroupNum">发票分组</param>
/// <param name="p_parentInvBillNum">原发票号</param> /// <param name="p_parentInvBillNum">原发票号</param>
public async Task<bool> SecInvoice(List<TEMP_CAN_SA_DETAIL> dtos, int p_version, string p_InvGroupNum, string p_parentInvBillNum, EnumBusinessType businessType) public async Task<List<string>> SecInvoice(List<TEMP_CAN_SA_DETAIL> dtos, int p_version, string p_InvGroupNum, string p_parentInvBillNum, EnumBusinessType businessType)
{ {
List<string> _invls = new List<string>();
var groups1 = dtos.GroupBy(p => new { p.LU, p.Price, p.BeginDate, p.EndDate, p.ContractDocID }).Select(p => new TMEP_INV var groups1 = dtos.GroupBy(p => new { p.LU, p.Price, p.BeginDate, p.EndDate, p.ContractDocID }).Select(p => new TMEP_INV
{ {
@ -704,10 +706,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
await _repository.DbContext.BulkInsertAsync(groupList); await _repository.DbContext.BulkInsertAsync(groupList);
await _repository.DbContext.BulkInsertAsync(detailList); await _repository.DbContext.BulkInsertAsync(detailList);
//await _repository.DbContext.BulkInsertAsync(notDetialList); //await _repository.DbContext.BulkInsertAsync(notDetialList);
return true; _invls = invlist.Select(p => p.InvbillNum).ToList();
} }
return false; return _invls;
} }
@ -721,8 +722,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
/// <param name="p_parentInvBillNum"></param> /// <param name="p_parentInvBillNum"></param>
/// <param name="businessType"></param> /// <param name="businessType"></param>
/// <returns></returns> /// <returns></returns>
public async Task<bool> FirstInvoice(List<TEMP_CAN_SA_DETAIL> dtos, List<TEMP_NOT_SA_DETAIL> p_notlist, int p_version, string p_InvGroupNum, string p_parentInvBillNum, EnumBusinessType businessType) public async Task<List<string>> FirstInvoice(List<TEMP_CAN_SA_DETAIL> dtos, List<TEMP_NOT_SA_DETAIL> p_notlist, int p_version, string p_InvGroupNum, string p_parentInvBillNum, EnumBusinessType businessType)
{ {
List<string> _invls = new List<string>();
var _query = dtos.GroupBy(p => new { p.GroupNum }).Select(p => new { GroupNum = p.Key.GroupNum, Amt = p.Sum(itm => itm.Amt) }); var _query = dtos.GroupBy(p => new { p.GroupNum }).Select(p => new { GroupNum = p.Key.GroupNum, Amt = p.Sum(itm => itm.Amt) });
Dictionary<string, decimal> dic = new Dictionary<string, decimal>();//原本 Dictionary<string, decimal> dic = new Dictionary<string, decimal>();//原本
Dictionary<string, decimal> copyDic = new Dictionary<string, decimal>();//变换数组副本 Dictionary<string, decimal> copyDic = new Dictionary<string, decimal>();//变换数组副本
@ -891,8 +893,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
{ {
await _repository.DbContext.BulkInsertAsync(notDetialList); await _repository.DbContext.BulkInsertAsync(notDetialList);
} }
_invls =invlist.Select(p => p.InvbillNum).ToList();
} }
return true;
return _invls;
} }
/// <summary> /// <summary>
@ -903,7 +907,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
/// <param name="p_version"></param> /// <param name="p_version"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="BusinessException"></exception> /// <exception cref="BusinessException"></exception>
public async Task<bool> ReissueFirstInvoice(List<TEMP_CAN_SA_DETAIL> dtos, string p_OldInvBillNum, int p_version) public async Task<bool> ReissueFirstInvoice(List<TEMP_CAN_SA_DETAIL> dtos,List<PUB_ADJ_DETAIL> p_adjlist, string p_OldInvBillNum, int p_version)
{ {
if (!string.IsNullOrEmpty(p_OldInvBillNum)) if (!string.IsNullOrEmpty(p_OldInvBillNum))
{ {
@ -918,7 +922,19 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
throw new BusinessException("8989", $"选择要重开发票号{p_OldInvBillNum}已经作废不能重开"); throw new BusinessException("8989", $"选择要重开发票号{p_OldInvBillNum}已经作废不能重开");
} }
inv.InvoiceState = InvoiceBillState.; inv.InvoiceState = InvoiceBillState.;
await FirstInvoice(dtos, new List<TEMP_NOT_SA_DETAIL>(), p_version, inv.InvGroupNum, inv.InvbillNum, inv.BusinessType); var invlist=await FirstInvoice(dtos, new List<TEMP_NOT_SA_DETAIL>(), p_version, inv.InvGroupNum, inv.InvbillNum, inv.BusinessType);//重开可以变多张发票
if (invlist.Count == 0)
{
return false;
}
foreach (var adj in p_adjlist)
{
adj.InvBillNum = string.Join(",", invlist);
}
_repository.DbContext.BulkUpdate(p_adjlist);
_repository.DbContext.BulkUpdate(new List<INVOICE_GRP> { inv }); _repository.DbContext.BulkUpdate(new List<INVOICE_GRP> { inv });
return true; return true;
} }
@ -932,7 +948,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
/// <param name="p_version"></param> /// <param name="p_version"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="BusinessException"></exception> /// <exception cref="BusinessException"></exception>
public async Task<bool> ReissueSecInvoice(List<TEMP_CAN_SA_DETAIL> dtos, string p_OldInvBillNum, int p_version) public async Task<bool> ReissueSecInvoice(List<TEMP_CAN_SA_DETAIL> dtos, List<PUB_ADJ_DETAIL> p_adjlist, string p_OldInvBillNum, int p_version)
{ {
if (!string.IsNullOrEmpty(p_OldInvBillNum)) if (!string.IsNullOrEmpty(p_OldInvBillNum))
{ {
@ -948,9 +964,19 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
} }
inv.InvoiceState = InvoiceBillState.; inv.InvoiceState = InvoiceBillState.;
var invlist =await SecInvoice(dtos, p_version, inv.InvGroupNum, inv.InvbillNum, inv.BusinessType);
await FirstInvoice(dtos, new List<TEMP_NOT_SA_DETAIL>(), p_version, inv.InvGroupNum, inv.InvbillNum, inv.BusinessType); if (invlist.Count == 0)
{
return false;
}
_repository.DbContext.BulkUpdate(new List<INVOICE_GRP> { inv }); _repository.DbContext.BulkUpdate(new List<INVOICE_GRP> { inv });
foreach (var adj in p_adjlist)
{
adj.InvBillNum = string.Join(",", invlist);
}
_repository.DbContext.BulkUpdate(p_adjlist);
return true; return true;
} }
return false; return false;

3
code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Temp/TempClass.cs

@ -10,6 +10,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Temp;
public class TMEP_INV public class TMEP_INV
{ {
public string LU { set; get; } public string LU { set; get; }
/// <summary>
/// 合同号
/// </summary>
public string ContractDocID { set; get; } public string ContractDocID { set; get; }
public decimal Amt { set; get; } public decimal Amt { set; get; }
public decimal Qty { set; get; } public decimal Qty { set; get; }

Loading…
Cancel
Save