From 8a82ae09646b1183cbe3a60ef7b1de9350ea383a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com>
Date: Thu, 27 Jul 2023 09:20:54 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Entities/BQ/Dtos/HBPO_CAN_SA_DTO.cs | 4 +-
.../Entities/BQ/Dtos/INVOICE_GRP_DTO.cs | 8 +-
.../Entities/BQ/Dtos/PUB_CAN_SA_DTO.cs | 86 +-
.../Bases/CAN_SA_SERVICE.cs | 98 +
.../Entities/BQ/BBAC_CAN_SA_SERVICE.cs | 131 +-
.../Entities/BQ/HBPO_CAN_SA_SERVICE.cs | 126 +-
.../Entities/BQ/INVOICE_SERVICE.cs | 12 +-
.../Entities/BQ/PUB_CAN_SA_SERVICE.cs | 399 +-
.../Entities/BQ/INVOICE_WAIT_DETAIL.cs | 16 +-
.../Entities/BQ/Managers/HBPO_CAN_SA_MNG.cs | 11 +-
.../Entities/BQ/Managers/INV_MNG.cs | 18 +-
...AccountDbContextModelCreatingExtensions.cs | 3 +-
.../20230727011426_202307270001.Designer.cs | 4991 +++++++++++++++++
.../Migrations/20230727011426_202307270001.cs | 58 +
.../SettleAccountDbContextModelSnapshot.cs | 14 +-
15 files changed, 5825 insertions(+), 150 deletions(-)
create mode 100644 code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Migrations/20230727011426_202307270001.Designer.cs
create mode 100644 code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Migrations/20230727011426_202307270001.cs
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/HBPO_CAN_SA_DTO.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/HBPO_CAN_SA_DTO.cs
index da5af4ed..68beef4e 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/HBPO_CAN_SA_DTO.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/HBPO_CAN_SA_DTO.cs
@@ -75,7 +75,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos
///
public string LU { get; set; }
-
+ ///
+ /// 物料描述
+ ///
public string MaterialDesc { get; set; }
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 922f5de9..ba3c8229 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
@@ -1,4 +1,4 @@
-using Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Core;
using SettleAccount.Domain.BQ;
using System;
using System.Collections.Generic;
@@ -215,12 +215,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos
///扩展字段3
///
[Display(Name = "扩展字段3")]
- public string Extend3 { get; set; }
+ public DateTime BeginDate { get; set; }
///
///扩展字段4
///
[Display(Name = "扩展字段4")]
- public string Extend4 { get; set; }
+ public DateTime EndDate { get; set; }
}
public class INVOICE_WAIT_DETAIL_REQ_DTO : RequestInputBase
@@ -328,7 +328,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos
}
- public class INVOICE_MAP_GROUPRequestDto : PagedAndSortedResultRequestDto
+ public class INVOICE_MAP_GROUP_REQ_DTO : PagedAndSortedResultRequestDto
{
public int Version { get; set; }
[Display(Name = "发票号")]
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_CAN_SA_DTO.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_CAN_SA_DTO.cs
index 7082510c..f1c02708 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_CAN_SA_DTO.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_CAN_SA_DTO.cs
@@ -1,4 +1,4 @@
-using Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Core;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
@@ -7,6 +7,7 @@ using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Win.Sfs.SettleAccount.Bases;
+using Win.Sfs.SettleAccount.Entities.Materials;
using Win.Sfs.Shared.Filter;
namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos
@@ -64,46 +65,51 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos
}
- public class PUB_CAN_SA_DETAIL_DTO : EntityDto
- {
+ public class PUB_CAN_SA_DETAIL_DTO : EntityDto
+ {
- ///
- ///关联结算单号
- ///
- [Display(Name = "关联结算单号")]
- public string SettleBillNum { get; set; }
- ///
- ///工厂地点
- ///
- [Display(Name = "工厂地点")]
- public string Site { get; set; }
- ///
- ///业务类别
- ///
- [Display(Name = "业务类别")]
- public EnumBusinessType BusinessType { get; set; }
- [Display(Name ="期间")]
- public int Version { get; set; }
- [Display(Name = "价格")]
- public decimal Price { get; set; }
- [Display(Name = "发票分组号")]
- public string BillNum { get; set; }
- [Display(Name = "下线日期")]
- public DateTime SettleDate { get; set; }
- [Display(Name = "发票分组号")]
- public string InvGroupNum { get; set; }
- [Display(Name = "发票分组号")]
- public string LU { get; set; }
- [Display(Name = "")]
- public string PN { get; set; }
- [Display(Name = "键值")]
- public string KeyCode { get; set; }
- [Display(Name = "结算数量")]
- public decimal Qty { get; set; }
- [Display(Name = "结算分组号")]
- public string GroupNum { get; set; }
-
- }
+ ///
+ ///关联结算单号
+ ///
+ [Display(Name = "关联结算单号")]
+ public string SettleBillNum { get; set; }
+ ///
+ ///工厂地点
+ ///
+ [Display(Name = "工厂地点")]
+ public string Site { get; set; }
+ ///
+ ///业务类别
+ ///
+ [Display(Name = "业务类别")]
+ public EnumBusinessType BusinessType { get; set; }
+ [Display(Name = "期间")]
+ public int Version { get; set; }
+ [Display(Name = "价格")]
+ public decimal Price { get; set; }
+ [Display(Name = "发票分组号")]
+ public string BillNum { get; set; }
+ [Display(Name = "下线日期")]
+ public DateTime SettleDate { get; set; }
+ [Display(Name = "发票分组号")]
+ public string InvGroupNum { get; set; }
+ [Display(Name = "发票分组号")]
+ public string LU { get; set; }
+ [Display(Name = "")]
+ public string PN { get; set; }
+ [Display(Name = "键值")]
+ public string KeyCode { get; set; }
+ [Display(Name = "结算数量")]
+ public decimal Qty { get; set; }
+ [Display(Name = "结算分组号")]
+ public string GroupNum { get; set; }
+ [Display(Name = "金额")]
+ public decimal Amt { get; set; }
+
+
+ public string MaterialDesc { set; get; }
+
+ }
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/CAN_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/CAN_SA_SERVICE.cs
index f58852b7..67c431ff 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/CAN_SA_SERVICE.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Bases/CAN_SA_SERVICE.cs
@@ -32,6 +32,104 @@ using Win.Sfs.Shared.RepositoryBase;
namespace Win.Sfs.SettleAccount.Bases
{
+ public class TMEP_INV
+ {
+ public string LU { set; get; }
+ public string ContractDocID { set; get; }
+ public decimal Amt { set; get; }
+ public decimal Qty { set; get; }
+ public decimal Price { set; get; }
+ ///
+ /// 开始日期
+ ///
+ public DateTime BeginDate { get; set; }
+ ///
+ /// 结束日期
+ ///
+ public DateTime EndDate { get; set; }
+ }
+
+ public class TEMP_CAN_SA_DETAIL
+ {
+ ///
+ ///关联结算单号
+ ///
+ public string SettleBillNum { get; set; }
+ ///
+ ///工厂地点
+ ///
+
+ public string Site { get; set; }
+ ///
+ /// 版本
+ ///
+ public int Version { get; set; }
+ ///
+ /// 单价
+ ///
+ public decimal Price { get; set; }
+ ///
+ /// 结算单号(发票分组号)
+ ///
+ public string BillNum { get; set; }
+ ///
+ /// 结算日期
+ ///
+ public DateTime SettleDate { get; set; }
+ ///
+ ///发票组号
+ ///
+ public string InvGroupNum { get; set; }
+ ///
+ /// 零件号
+ ///
+ public string LU { get; set; }
+
+
+ ///
+ /// 物料描述
+ ///
+ public string MaterialDesc { get; set; }
+
+
+ ///
+ /// 生产号
+ ///
+ public string PN { get; set; }
+ ///
+ /// 结算数量
+ ///
+ public decimal Qty { get; set; }
+ ///
+ /// 结算分组号
+ ///
+ public string GroupNum { get; set; }
+ ///
+ /// 金额
+ ///
+ public decimal Amt { get; set; }
+
+ ///
+ /// 合同号
+ ///
+ public string ContractDocID { set; get; }
+ ///
+ /// 开始日期
+ ///
+ public DateTime BeginDate { get; set; }
+ ///
+ /// 结束日期
+ ///
+ public DateTime EndDate { get; set; }
+
+
+ }
+
+
+
+
+
+
public abstract class CAN_SA_SERVICE : BASE_SERVICE
where TEntity : SA_CAN_BASE_MAIN
where TEntityDetail:SA_CAN_BASE
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs
index dcc5e538..e8a76508 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_CAN_SA_SERVICE.cs
@@ -23,19 +23,16 @@ using Win.Sfs.SettleAccount.Entities.BQ.Managers;
using Win.Sfs.Shared.RepositoryBase;
using System.Text.Json;
using Newtonsoft.Json;
+using Win.Sfs.SettleAccount.Entities.Prices;
+using Win.Sfs.SettleAccount.ExportReports;
+using Microsoft.EntityFrameworkCore.Migrations;
namespace Win.Sfs.SettleAccount.Entities.BQ
{
- public class TMEP_INV
- {
- public string LU { set; get; }
- public string ContractDocID { set; get; }
- public decimal Amt { set; get; }
- public decimal Qty { set; get; }
- public decimal Price { set; get; }
- }
+
+
///
@@ -55,6 +52,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
>
{
private readonly INormalEfCoreRepository _notRepository;
+
+ private readonly INormalEfCoreRepository _priceRepository;
+
private readonly BBAC_CAN_SA_MNG _bbacMng;
@@ -63,11 +63,14 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
IExcelImportAppService excelImportService,
INormalEfCoreRepository detailRepository,
INormalEfCoreRepository notRepository,
- BBAC_CAN_SA_MNG bbacMng,
- INV_MNG invmng) : base(repository, excelImportService, detailRepository, invmng)
+ BBAC_CAN_SA_MNG bbacMng,
+ INV_MNG invmng,
+ INormalEfCoreRepository priceRepository
+ ) : base(repository, excelImportService, detailRepository, invmng)
{
_notRepository = notRepository;
_bbacMng = bbacMng;
+ _priceRepository = priceRepository;
}
///
@@ -88,17 +91,61 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
var groupNumList = entitys.Select(p => p.GroupNum).Distinct().ToList();
//var groupNumList = entitys.Select(p => new { p.GroupNum).Distinct().ToList();
var notList = _notRepository.Where(p => groupNumList.Contains(p.GroupNum)).ToList();//不能结算
- var dtos = ObjectMapper.Map, List>(entitys);
- dtos.ForEach(dto =>
+ var dto1s = ObjectMapper.Map, List>(entitys);
+
+ var priceList=_priceRepository.ToList();//价格单
+
+ var inner = from d in dto1s
+ join p in priceList on d.LU equals p.LU
+ where
+ d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime
+ select d;
+ var left= from d in dto1s 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;
+
+ List errorList=new List();
+
+ foreach (var error in left)
{
- dto.Amt = Math.Round(dto.Price * dto.Qty, 2);
- });
+ errorList.Add(new ERR_EXP_DTO() { ItemCode=error.LU, CustomCode="业务类别BBAC", Version=main.Version.ToString(), Message="LU:{0}PN:{1},下线日期:{2}没有对应区间销售价格表!" });
+ }
+ if(errorList.Count()>0)
+ {
+ return await ExportErrorReportAsync(errorList);
+ }
+ var q = from d in dto1s
+ join p in priceList on d.LU equals p.LU
+ where d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime
+ 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 = d.ContractDocID,
+ BeginDate=p.BeginTime,
+ EndDate=p.EndTime
+ };
+ var dtos = q.ToList();
+
if (dtos != null && dtos.Count > 0)
{
- if (input.BillNum.Substring(0, 1) != "C")//一次开票
+ if (input.BillNum.Substring(0, 1) == "C")//一次开票
{
// dtos = dtos.OrderBy(p => p.SettleDate).ToList();
- var _query = dtos.GroupBy(p => new { p.GroupNum }).Select(p => new { GroupNum = p.Key.GroupNum, Amt = p.Sum(itm => itm.Amt) }).OrderBy(p=>p.Amt);
+ var _query = dtos.GroupBy(p => new { p.GroupNum }).Select(p => new { GroupNum = p.Key.GroupNum, Amt = p.Sum(itm => itm.Amt) }).OrderBy(p => p.Amt);
Dictionary dic = new Dictionary();//原本
Dictionary copyDic = new Dictionary();//变换数组副本
foreach (var itm in _query.ToList())
@@ -136,7 +183,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
{
break;
}
-
+
invoiceGroupNumList.Add(_itm1.Key);//所有条件都满足添加发票和结算分组对应关系
}
invoiceMap.Add(invoiceBillNum, invoiceGroupNumList);//记录发票对应关系
@@ -153,21 +200,23 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
var detailList = new List();
var invlist = new List();
- // string str = JsonConvert.SerializeObject(invoiceMap);
+ // string str = JsonConvert.SerializeObject(invoiceMap);
foreach (var itm in invoiceMap)//分组影响和
{
var key = itm.Key;//发票票号
var ls = itm.Value;//结算分组号列表
- var detailDtos = dtos.Where(p => ls.Contains(p.GroupNum)).GroupBy(p => new { p.InvGroupNum, p.LU, p.Price, p.ContractDocID })
+ var detailDtos = dtos.Where(p => ls.Contains(p.GroupNum)).GroupBy(p => new { p.InvGroupNum, p.LU, p.Price, p.ContractDocID, p.BeginDate, p.EndDate })
.Select(itm => new
{
InvGroupNum = itm.Key.InvGroupNum,
LU = itm.Key.LU,
ContactDocID = itm.Key.ContractDocID,
Price = itm.Key.Price,
- Amt =itm.Sum(p=>p.Amt),
- Qty = itm.Sum(k => k.Qty)
+ Amt = itm.Sum(p => p.Amt),
+ Qty = itm.Sum(k => k.Qty),
+ BeginDate = itm.Key.BeginDate,
+ EndDate = itm.Key.EndDate
})
.ToList();
decimal amt = detailDtos.Sum(k => k.Amt);
@@ -208,8 +257,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
pRICE: detail.Price,
extend1: detail.ContactDocID,
extend2: string.Empty,
- extend3: string.Empty,
- extend4: string.Empty
+ beginDate: detail.BeginDate,
+ endDate: detail.EndDate
+
));
}
if (_entityDetailList.Count > 0)
@@ -259,16 +309,19 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
}
else//二次开票
{
- var groups1 = dtos.GroupBy(p => new { p.LU, p.ContractDocID, p.Price }).Select(p => new TMEP_INV
+ var groups1 = dtos.GroupBy(p => new { p.LU, p.ContractDocID, p.Price, p.BeginDate, p.EndDate }).Select(p => new TMEP_INV
{
+ BeginDate=p.Key.BeginDate, EndDate=p.Key.EndDate,
LU = p.Key.LU,
ContractDocID = p.Key.ContractDocID,
Amt = p.Sum(itm => itm.Amt),
Qty = p.Sum(itm => itm.Qty),
Price = p.Key.Price
}).ToList();//汇总记录不出现重复值
- var groups = dtos.GroupBy(p => new { p.LU, p.ContractDocID, p.Price }).Select(p => new TMEP_INV
+ var groups = dtos.GroupBy(p => new { p.LU, p.ContractDocID, p.Price, p.BeginDate, p.EndDate }).Select(p => new TMEP_INV
{
+ BeginDate = p.Key.BeginDate,
+ EndDate = p.Key.EndDate,
LU = p.Key.LU,
ContractDocID = p.Key.ContractDocID,
Amt = p.Sum(itm => itm.Amt),
@@ -278,7 +331,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
Dictionary> invoiceMap = new Dictionary>();//发票和发票明细关系
foreach (var group in groups)
{
- int i = groups1.Count(p => p.LU == group.LU && p.ContractDocID == group.ContractDocID);
+ int i = groups1.Count(p => p.LU == group.LU
+ && p.ContractDocID == group.ContractDocID
+ &&p.BeginDate==group.BeginDate
+ &&p.EndDate==group.EndDate
+ );
if (i > 0)
{
string invoiceBillNum = OrderNumberGenerator.GenerateOrderNumber("CINV");
@@ -287,7 +344,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
int partCount = 0;
foreach (var group1 in groups1)
{
- if (group.LU == group1.LU && group1.ContractDocID == group.ContractDocID)
+ if (group.LU == group1.LU && group1.ContractDocID == group.ContractDocID
+ && group.BeginDate == group1.BeginDate
+ && group.EndDate == group1.EndDate
+
+ )
{
tempList.Add(group1);
partCount++;//符合条件加入到零件中
@@ -308,9 +369,13 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
invoiceMap.Add(invoiceBillNum, tempList);
var query = from itm in groups1
join itm1 in tempList
- on new { itm.LU, itm.ContractDocID } equals new { itm1.LU, itm1.ContractDocID } into temp
- from tm in temp
- select new TMEP_INV { LU = itm.LU, ContractDocID = itm.ContractDocID, Amt = itm.Amt, Qty = itm.Qty };
+ on new { itm.LU, itm.ContractDocID,itm.BeginDate,itm.EndDate } equals new { itm1.LU, itm1.ContractDocID, itm1.BeginDate, itm1.EndDate } into temp
+ from tm in temp where tm==null
+ select new TMEP_INV
+ { LU = itm.LU, ContractDocID = itm.ContractDocID,
+ Amt = itm.Amt, Qty = itm.Qty,BeginDate=itm.BeginDate,
+ EndDate=itm.EndDate
+ };
groups1 = query.ToList();
}
}
@@ -340,8 +405,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
pRICE: detail.Price,
extend1: detail.ContractDocID,
extend2: string.Empty,
- extend3: string.Empty,
- extend4: string.Empty
+ beginDate: detail.BeginDate,
+ endDate: detail.EndDate
+
+
));
}
if (_entityDetailList.Count > 0)
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_CAN_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_CAN_SA_SERVICE.cs
index af008c70..62a3cb2b 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_CAN_SA_SERVICE.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_CAN_SA_SERVICE.cs
@@ -16,6 +16,8 @@ using Win.Sfs.SettleAccount.Bases;
using Win.Sfs.SettleAccount.Constant;
using Win.Sfs.SettleAccount.Entities.BQ.Dtos;
using Win.Sfs.SettleAccount.Entities.BQ.Managers;
+using Win.Sfs.SettleAccount.Entities.Prices;
+using Win.Sfs.SettleAccount.ExportReports;
using Win.Sfs.Shared.RepositoryBase;
namespace Win.Sfs.SettleAccount.Entities.BQ
@@ -38,17 +40,18 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
>
{
private INormalEfCoreRepository _notRepository;
+ private readonly INormalEfCoreRepository _priceRepository;
private readonly HBPO_CAN_SA_MNG _hbpoMng;
public HBPO_CAN_SA_SERVICE(INormalEfCoreRepository repository,
IExcelImportAppService excelImportService,
INormalEfCoreRepository detailRepository,
INV_MNG invmng,
INormalEfCoreRepository notRepository,
- HBPO_CAN_SA_MNG hbpoMng
-
-
+ HBPO_CAN_SA_MNG hbpoMng,
+ INormalEfCoreRepository priceRepository
) : base(repository, excelImportService, detailRepository, invmng)
{
+ _priceRepository = priceRepository;
_notRepository = notRepository;
_hbpoMng = hbpoMng;
}
@@ -63,29 +66,69 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
{
var main =await _hbpoMng.GetMainAsync(input.BillNum);
-
if (main != null)
{
if (await _hbpoMng.SetForwardState(main, SettleBillState.已开票))
{
var entitys = await _hbpoMng.GetDetalListAsync(input.BillNum);
- if (await _hbpoMng.SetForwardState(main, SettleBillState.已开票))
- {
var groupNumList = entitys.Select(p => p.GroupNum).Distinct().ToList();
var notList = _notRepository.Where(p => groupNumList.Contains(p.InvGroupNum)).ToList();//不能结算
- var dtos = ObjectMapper.Map, List>(entitys);
+ var dto1s = ObjectMapper.Map, List>(entitys);
- dtos.ForEach(dto =>
- {
- dto.Amt = Math.Round(dto.Price * dto.Qty, 2);
- });
+ var priceList = _priceRepository.ToList();//价格单
+
+ var inner = from d in dto1s
+ join p in priceList on d.LU equals p.LU
+ where
+ d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime
+ select d;
+ var left = from d in dto1s
+ 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;
+
+ List errorList = new List();
+
+ foreach (var error in left)
+ {
+ errorList.Add(new ERR_EXP_DTO() { ItemCode = error.LU, CustomCode = "业务类别HBPO", Version = main.Version.ToString(), Message = "LU:{0}PN:{1},下线日期:{2}没有对应区间销售价格表!" });
+ }
+ if (errorList.Count() > 0)
+ {
+ return await ExportErrorReportAsync(errorList);
+ }
+ var q = from d in dto1s
+ join p in priceList on d.LU equals p.LU
+ where d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime
+ 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),
+
+ BeginDate = p.BeginTime,
+ EndDate = p.EndTime
+ };
+ var dtos = q.ToList();
if (dtos != null && dtos.Count > 0)
{
- if (input.BillNum.Substring(0, 1) != "C")//一次开票
+ if (input.BillNum.Substring(0, 1) == "C")//一次开票
{
var _query = dtos.GroupBy(p => new { p.GroupNum }).Select(p => new { GroupNum = p.Key.GroupNum, Amt = p.Sum(itm => itm.Amt) });
Dictionary dic = new Dictionary();//原本
@@ -113,13 +156,13 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
invoiceGroupNumList.Add(itm.Key);
continue;
}
- var grouplist = dtos.Where(p => p.GroupNum == _itm1.Key).Select(p => p.LU).Distinct().ToList();//每项LU种类
- luList.AddRange(grouplist);
- luList = luList.Distinct().ToList();
- if (luList.Count > 20)//累加零件不超过20种
- {
- continue;
- }
+ //var grouplist = dtos.Where(p => p.GroupNum == _itm1.Key).Select(p => p.LU).Distinct().ToList();//每项LU种类
+ //luList.AddRange(grouplist);
+ //luList = luList.Distinct().ToList();
+ //if (luList.Count > 20)//累加零件不超过20种
+ //{
+ // continue;
+ //}
sum += _itm1.Value;
if (sum > 10000000)
{
@@ -145,14 +188,16 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
{
var key = itm.Key;//发票票号
var ls = itm.Value;//结算分组号列表
- var detailDtos = dtos.Where(p => ls.Contains(p.GroupNum)).GroupBy(p => new { p.InvGroupNum, p.LU, p.Price })
+ var detailDtos = dtos.Where(p => ls.Contains(p.GroupNum)).GroupBy(p => new { p.InvGroupNum, p.LU, p.Price,p.BeginDate,p.EndDate })
.Select(itm => new
{
InvGroupNum = itm.Key.InvGroupNum,
LU = itm.Key.LU,
Price = itm.Key.Price,
Amt = Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2),
- Qty = itm.Sum(k => k.Qty)
+ Qty = itm.Sum(k => k.Qty),
+ BeginDate = itm.Key.BeginDate,
+ EndDate = itm.Key.EndDate
})
.ToList();
decimal amt = detailDtos.Sum(k => k.Amt);
@@ -194,8 +239,8 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
pRICE: detail.Price,
extend1: string.Empty,
extend2: string.Empty,
- extend3: string.Empty,
- extend4: string.Empty
+ beginDate:detail.BeginDate,
+ endDate:detail.EndDate
));
}
if (_entityDetailList.Count > 0)
@@ -246,24 +291,29 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
}
else//二次开票
{
- var groups1 = dtos.GroupBy(p => new { p.LU, p.Price }).Select(p => new TMEP_INV
+ var groups1 = dtos.GroupBy(p => new { p.LU, p.Price,p.BeginDate,p.EndDate }).Select(p => new TMEP_INV
{
LU = p.Key.LU,
Amt = p.Sum(itm => itm.Amt),
Qty = p.Sum(itm => itm.Qty),
- Price = p.Key.Price
+ Price = p.Key.Price,
+ BeginDate=p.Key.BeginDate,
+ EndDate=p.Key.EndDate
+
}).ToList();//汇总记录不出现重复值
- var groups = dtos.GroupBy(p => new { p.LU, p.Price }).Select(p => new TMEP_INV
+ var groups = dtos.GroupBy(p => new { p.LU, p.Price, p.BeginDate, p.EndDate }).Select(p => new TMEP_INV
{
LU = p.Key.LU,
Amt = p.Sum(itm => itm.Amt),
Qty = p.Sum(itm => itm.Qty),
- Price = p.Key.Price
+ Price = p.Key.Price,
+ BeginDate = p.Key.BeginDate,
+ EndDate = p.Key.EndDate
}).ToList();//汇总记录不出现重复值
Dictionary> invoiceMap = new Dictionary>();//发票和发票明细关系
foreach (var group in groups)
{
- int i = groups1.Count(p => p.LU == group.LU && p.ContractDocID == group.ContractDocID);
+ int i = groups1.Count(p => p.LU == group.LU &&p.BeginDate==group.BeginDate && p.EndDate==group.EndDate );
if (i > 0)
{
string invoiceBillNum = OrderNumberGenerator.GenerateOrderNumber("CINV");
@@ -272,7 +322,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
int partCount = 0;
foreach (var group1 in groups1)
{
- if (group.LU == group1.LU && group1.ContractDocID == group.ContractDocID)
+ if (group.LU == group1.LU && group.BeginDate == group1.BeginDate && group.EndDate == group1.EndDate)
{
tempList.Add(group1);
partCount++;//符合条件加入到零件中
@@ -293,9 +343,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
invoiceMap.Add(invoiceBillNum, tempList);
var query = from itm in groups1
join itm1 in tempList
- on new { itm.LU, itm.ContractDocID } equals new { itm1.LU, itm1.ContractDocID } into temp
- from tm in temp
- select new TMEP_INV { LU = itm.LU, ContractDocID = itm.ContractDocID, Amt = itm.Amt, Qty = itm.Qty };
+ on new { itm.LU, itm.BeginDate,itm.EndDate} equals new { itm1.LU, itm1.BeginDate, itm1.EndDate } into temp
+ from tm in temp where tm==null
+ select new TMEP_INV { LU = itm.LU, Amt = itm.Amt, Qty = itm.Qty ,BeginDate=itm.BeginDate,EndDate=itm.EndDate };
+
groups1 = query.ToList();
}
}
@@ -323,10 +374,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
bussiessType: EnumBusinessType.BBAC,
amt: detail.Amt,
pRICE: detail.Price,
- extend1: detail.ContractDocID,
+ extend1: string.Empty,
extend2: string.Empty,
- extend3: string.Empty,
- extend4: string.Empty
+ beginDate: detail.BeginDate,
+ endDate: detail.EndDate
));
}
if (_entityDetailList.Count > 0)
@@ -365,7 +416,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
amt: amt,
taxAmt: txtAmt,
fileName: string.Empty,
- businessType: EnumBusinessType.BBAC,
+ businessType: EnumBusinessType.HBPO,
invGroupNum: main.InvGroupNum,
state: SettleBillState.已开票,
invoiceBillState: InvoiceBillState.正常
@@ -380,8 +431,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
}
}
- }
-
+
}
}
}
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 508190b8..65a64563 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
@@ -30,9 +30,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
private readonly INormalEfCoreRepository _wRepository;
private readonly INormalEfCoreRepository _sRepository;
private readonly INormalEfCoreRepository _mRepository;
- private readonly CAN_SA_MNG _pubMng;
- private readonly CAN_SA_MNG _bbacMng;
- private readonly CAN_SA_MNG _hbpoMng;
+ private readonly PUB_CAN_SA_MNG _pubMng;
+ private readonly BBAC_CAN_SA_MNG _bbacMng;
+ private readonly HBPO_CAN_SA_MNG _hbpoMng;
private readonly INV_MNG _invMng;
//private readonly INormalEfCoreRepository _detailRepository;
private readonly IExcelImportAppService _excelImportService;
@@ -43,9 +43,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
INormalEfCoreRepository sRepository,
INormalEfCoreRepository mRepository,
IExcelImportAppService excelImportService,
- CAN_SA_MNG pubMng,
- CAN_SA_MNG bbacMng,
- CAN_SA_MNG hbpoMng,
+ PUB_CAN_SA_MNG pubMng,
+ BBAC_CAN_SA_MNG bbacMng,
+ HBPO_CAN_SA_MNG hbpoMng,
INV_MNG invMng
)
{
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_CAN_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_CAN_SA_SERVICE.cs
index 7d970501..444e87d7 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_CAN_SA_SERVICE.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_CAN_SA_SERVICE.cs
@@ -1,5 +1,8 @@
using System;
+using System.Collections.Generic;
+using System.Linq;
using System.Threading.Tasks;
+using EFCore.BulkExtensions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using SettleAccount.Domain.BQ;
@@ -8,7 +11,10 @@ using Win.Sfs.SettleAccount.Bases;
using Win.Sfs.SettleAccount.Constant;
using Win.Sfs.SettleAccount.Entities.BQ.Dtos;
using Win.Sfs.SettleAccount.Entities.BQ.Managers;
+using Win.Sfs.SettleAccount.Entities.Prices;
+using Win.Sfs.SettleAccount.ExportReports;
using Win.Sfs.Shared.RepositoryBase;
+using static Win.Sfs.SettleAccount.SettleAccountPermissions;
namespace Win.Sfs.SettleAccount.Entities.BQ
{
@@ -29,12 +35,403 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
PUB_CAN_SA_DETAIL_EXP_DTO
>
{
- public PUB_CAN_SA_SERVICE(INormalEfCoreRepository repository, IExcelImportAppService excelImportService, INormalEfCoreRepository detailRepository, INV_MNG invmng) : base(repository, excelImportService, detailRepository, invmng)
+ private readonly PUB_CAN_SA_MNG _pubMng;
+ private readonly INormalEfCoreRepository _priceRepository;
+ private readonly INormalEfCoreRepository _pricebjRepository;
+ public PUB_CAN_SA_SERVICE(INormalEfCoreRepository repository,
+ IExcelImportAppService excelImportService,
+ INormalEfCoreRepository detailRepository,
+ INormalEfCoreRepository priceRepository,
+ INormalEfCoreRepository pricebjRepository,
+ INV_MNG invmng,
+ PUB_CAN_SA_MNG pubMng) : base(repository, excelImportService, detailRepository, invmng)
{
+ _pubMng = pubMng;
+ _priceRepository = priceRepository;
+ _pricebjRepository = pricebjRepository;
}
[HttpPost]
public async override Task GenerateInvoice(PUB_CAN_SA_REQ_DTO input)
{
+ var main = await _pubMng.GetMainAsync(input.BillNum);
+ if (main != null)
+ {
+ if (await _pubMng.SetForwardState(main, SettleBillState.已开票))
+ {
+ var entitys = await _pubMng.GetDetalListAsync(input.BillNum);
+ var groupNumList = entitys.Select(p => p.GroupNum).Distinct().ToList();
+ List errorList = new List();
+ var dto1s = ObjectMapper.Map, List>(entitys);
+ List priceList=new List();
+ if (main.BusinessType == EnumBusinessType.BeiJian)
+ {
+ var priceListbj = _pricebjRepository.ToList();//价格单
+ foreach (var itm in priceListbj)
+ {
+ priceList.Add(new PriceList() {LU=itm.LU,BeginTime=itm.BeginDate,EndTime=itm.EndDate });
+ }
+ }
+ else
+ {
+ priceList = _priceRepository.ToList();//价格单
+ }
+ var inner = from d in dto1s
+ join p in priceList on d.LU equals p.LU
+ where
+ d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime
+ select d;
+ var left = from d in dto1s
+ 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;
+ foreach (var error in left)
+ {
+ errorList.Add(new ERR_EXP_DTO() { ItemCode = error.LU, CustomCode = "", Version = main.Version.ToString(), Message = "LU:{0}PN:{1},下线日期:{2}没有对应区间销售价格表!" });
+ }
+
+
+
+ if (errorList.Count() > 0)
+ {
+ return await ExportErrorReportAsync(errorList);
+ }
+
+ var q = from d in dto1s
+ join p in priceList on d.LU equals p.LU
+ where d.SettleDate >= p.BeginTime && d.SettleDate <= p.EndTime
+ 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),
+
+ BeginDate = p.BeginTime,
+ EndDate = p.EndTime
+ };
+ var dtos = q.ToList();
+ if (dtos != null && dtos.Count > 0)
+ {
+ if (input.BillNum.Substring(0, 1) == "C")//一次开票
+ {
+ var _query = dtos.GroupBy(p => new { p.GroupNum }).Select(p => new { GroupNum = p.Key.GroupNum, Amt = p.Sum(itm => itm.Amt) });
+ Dictionary dic = new Dictionary();//原本
+ Dictionary copyDic = new Dictionary();//变换数组副本
+ foreach (var itm in _query.ToList())
+ {
+ dic.Add(itm.GroupNum, itm.Amt);
+ copyDic.Add(itm.GroupNum, itm.Amt);
+ }
+ Dictionary> invoiceMap = new Dictionary>();
+ foreach (var itm in dic)
+ {
+ string invoiceBillNum = OrderNumberGenerator.GenerateOrderNumber("INV");
+ List invoiceGroupNumList = new List();//每个发票对应的结算分组号
+ List List = new List();
+ decimal sum = itm.Value;//初始分组合计金额
+ List luList = dtos.Where(p => p.GroupNum == itm.Key).Select(p => p.LU).Distinct().ToList(); //初始LU种类
+
+ if (copyDic.ContainsKey(itm.Key) == true)//是否存在分组
+ {
+ foreach (var _itm1 in copyDic)
+ {
+ if (itm.Key == _itm1.Key)//相同结算分组项不计算,已初始化
+ {
+ invoiceGroupNumList.Add(itm.Key);
+ continue;
+ }
+ //var grouplist = dtos.Where(p => p.GroupNum == _itm1.Key).Select(p => p.LU).Distinct().ToList();//每项LU种类
+ //luList.AddRange(grouplist);
+ //luList = luList.Distinct().ToList();
+ //if (luList.Count > 20)//累加零件不超过20种
+ //{
+ // continue;
+ //}
+ sum += _itm1.Value;
+ if (sum > 10000000)
+ {
+ break;
+ }
+ invoiceGroupNumList.Add(_itm1.Key);//所有条件都满足添加发票和结算分组对应关系
+ }
+ invoiceMap.Add(invoiceBillNum, invoiceGroupNumList);//记录发票对应关系
+ foreach (var rem in invoiceGroupNumList)//移除
+ {
+ copyDic.Remove(rem);
+ }
+ }
+ }
+ if (invoiceMap.Keys.Count > 0)
+ {
+
+ var groupList = new List();
+ var notDetialList = new List();
+ var detailList = new List();
+ var invlist = new List();
+ foreach (var itm in invoiceMap)//分组影响和
+ {
+ var key = itm.Key;//发票票号
+ var ls = itm.Value;//结算分组号列表
+ var detailDtos = dtos.Where(p => ls.Contains(p.GroupNum)).GroupBy(p => new { p.InvGroupNum, p.LU, p.Price, p.BeginDate, p.EndDate })
+ .Select(itm => new
+ {
+ InvGroupNum = itm.Key.InvGroupNum,
+ LU = itm.Key.LU,
+ Price = itm.Key.Price,
+ Amt = Math.Round(itm.Sum(k => k.Qty) * itm.Key.Price, 2),
+ Qty = itm.Sum(k => k.Qty),
+ BeginDate = itm.Key.BeginDate,
+ EndDate = itm.Key.EndDate
+ })
+ .ToList();
+ decimal amt = detailDtos.Sum(k => k.Amt);
+ decimal txtAmt = Math.Round(detailDtos.Sum(k => k.Amt), 2);
+ var mapList = new List();
+ foreach (var groupnum in ls)
+ {
+
+ mapList.Add(new INVOICE_MAP_GROUP(
+ guid: GuidGenerator.Create(),
+ version: main.Version,
+ invbillNum: key,
+ invGroupNum: main.InvGroupNum,
+ settleGroupNum: groupnum,
+ amt: 0,
+ extend1: string.Empty,
+ extend2: string.Empty
+ )
+ );
+ }
+ if (mapList.Count > 0)
+ {
+ groupList.AddRange(mapList);
+
+ }
+ List _entityDetailList = new List();
+ foreach (var detail in detailDtos)
+ {
+ _entityDetailList.Add(
+ new INVOICE_WAIT_DETAIL(
+ guid: GuidGenerator.Create(),
+ version: main.Version,
+ invbillNum: key,
+ invGroupNum: main.InvGroupNum,
+ lU: detail.LU,
+ qty: detail.Qty,
+ bussiessType: EnumBusinessType.HBPO,
+ amt: detail.Amt,
+ pRICE: detail.Price,
+ extend1: string.Empty,
+ extend2: string.Empty,
+ beginDate: detail.BeginDate,
+ endDate: detail.EndDate
+ ));
+ }
+ if (_entityDetailList.Count > 0)
+ {
+ detailList.AddRange(_entityDetailList);
+ }
+
+ // var notls = notList.GroupBy(p => new { p.GroupNum, p.LU }).Select(p => new { GroupNum = p.Key.GroupNum, LU = p.Key.LU, Qty = p.Sum(itm => itm.Qty) });
+ //var innotls = new List();
+ //foreach (var nitm in notls)
+ //{
+ // innotls.Add(new INVOICE_NOT_SETTLE(
+ // guid: GuidGenerator.Create(),
+ // version: main.Version,
+ // invGroupNum: main.InvGroupNum,
+ // settleGroupNum: nitm.GroupNum,
+ // lU: string.Empty,
+ // lU1: nitm.LU,
+ // extend1: string.Empty,
+ // extend2: string.Empty,
+ // qty: nitm.Qty
+ // ));
+ //}
+ //if (innotls.Count > 0)
+ //{
+ // notDetialList.AddRange(innotls);
+ //}
+ var invbill = new INVOICE_GRP
+ (guid: GuidGenerator.Create(),
+ realnvBillNum: string.Empty,
+ invbillNum: key,
+ amt: amt,
+ taxAmt: txtAmt,
+ fileName: string.Empty,
+ businessType: EnumBusinessType.HBPO,
+ invGroupNum: main.InvGroupNum,
+ state: SettleBillState.已开票,
+ invoiceBillState: InvoiceBillState.正常
+
+ );
+ invlist.Add(invbill);
+ }
+ await _repository.DbContext.BulkInsertAsync(invlist);
+ await _repository.DbContext.BulkInsertAsync(groupList);
+ await _repository.DbContext.BulkInsertAsync(detailList);
+ await _repository.DbContext.BulkInsertAsync(notDetialList);
+ }
+ }
+ else//二次开票
+ {
+ var groups1 = dtos.GroupBy(p => new { p.LU, p.Price, p.BeginDate, p.EndDate }).Select(p => new TMEP_INV
+ {
+ LU = p.Key.LU,
+ Amt = p.Sum(itm => itm.Amt),
+ Qty = p.Sum(itm => itm.Qty),
+ Price = p.Key.Price,
+ BeginDate = p.Key.BeginDate,
+ EndDate = p.Key.EndDate
+
+ }).ToList();//汇总记录不出现重复值
+ var groups = dtos.GroupBy(p => new { p.LU, p.Price, p.BeginDate, p.EndDate }).Select(p => new TMEP_INV
+ {
+ LU = p.Key.LU,
+ Amt = p.Sum(itm => itm.Amt),
+ Qty = p.Sum(itm => itm.Qty),
+ Price = p.Key.Price,
+ BeginDate = p.Key.BeginDate,
+ EndDate = p.Key.EndDate
+ }).ToList();//汇总记录不出现重复值
+ Dictionary> invoiceMap = new Dictionary>();//发票和发票明细关系
+ foreach (var group in groups)
+ {
+ int i = groups1.Count(p => p.LU == group.LU && p.BeginDate == group.BeginDate && p.EndDate == group.EndDate);
+ if (i > 0)
+ {
+ string invoiceBillNum = OrderNumberGenerator.GenerateOrderNumber("CINV");
+ List tempList = new List();
+ decimal sum = group.Amt;//初始合计金额
+ int partCount = 0;
+ foreach (var group1 in groups1)
+ {
+ if (group.LU == group1.LU && group.BeginDate == group1.BeginDate && group.EndDate == group1.EndDate)
+ {
+ tempList.Add(group1);
+ partCount++;//符合条件加入到零件中
+ continue;
+ }
+ partCount++;
+ if (partCount > 30)
+ {
+ continue;
+ }
+ if (sum > 10000000)
+ {
+ break;
+ }
+ sum += group1.Amt;
+ tempList.Add(group1);
+ }
+ invoiceMap.Add(invoiceBillNum, tempList);
+ var query = from itm in groups1
+ join itm1 in tempList
+ on new { itm.LU, itm.BeginDate, itm.EndDate } equals new { itm1.LU, itm1.BeginDate, itm1.EndDate } into temp
+ from tm in temp
+ where tm == null
+ select new TMEP_INV { LU = itm.LU, Amt = itm.Amt, Qty = itm.Qty, BeginDate = itm.BeginDate, EndDate = itm.EndDate };
+
+ groups1 = query.ToList();
+ }
+ }
+ if (invoiceMap.Count > 0)
+ {
+ var groupList = new List();
+ var notDetialList = new List();
+ var detailList = new List();
+ var invlist = new List();
+ foreach (var group in invoiceMap)
+ {
+ var key = group.Key;//发票票号
+ var ls = group.Value;//发票明细
+ List _entityDetailList = new List();
+ foreach (var detail in ls)
+ {
+ _entityDetailList.Add(
+ new INVOICE_WAIT_DETAIL(
+ guid: GuidGenerator.Create(),
+ version: main.Version,
+ invbillNum: key,
+ invGroupNum: main.InvGroupNum,
+ lU: detail.LU,
+ qty: detail.Qty,
+ bussiessType: EnumBusinessType.BBAC,
+ amt: detail.Amt,
+ pRICE: detail.Price,
+ extend1: string.Empty,
+ extend2: string.Empty,
+ beginDate: detail.BeginDate,
+ endDate: detail.EndDate
+ ));
+ }
+ if (_entityDetailList.Count > 0)
+ {
+ detailList.AddRange(_entityDetailList);
+ }
+ decimal amt = detailList.Sum(k => k.Amt);
+ decimal txtAmt = Math.Round(detailList.Sum(k => k.Amt), 2);
+ var contractList = ls.Select(p => p.ContractDocID).Distinct();
+ var _groupList = dtos.GroupBy(p => new { p.GroupNum })
+ .Select(p => new { GroupNum = p.Key.GroupNum, Amt = p.Sum(itm => itm.Amt) }).Distinct();
+ List group1 = new List();
+
+ foreach (var en in _groupList)
+ {
+ group1.Add(
+ new INVOICE_MAP_GROUP(
+ guid: GuidGenerator.Create(),
+ version: main.Version,
+ invbillNum: key,
+ invGroupNum: main.InvGroupNum,
+ settleGroupNum: en.GroupNum,
+ amt: en.Amt,
+ extend1: string.Empty,
+ extend2: string.Empty));
+ }
+ if (group1.Count > 0)
+ {
+ groupList.AddRange(group1);
+ }
+
+ var invbill = new INVOICE_GRP
+ (guid: GuidGenerator.Create(),
+ realnvBillNum: string.Empty,
+ invbillNum: key,
+ amt: amt,
+ taxAmt: txtAmt,
+ fileName: string.Empty,
+ businessType: EnumBusinessType.HBPO,
+ invGroupNum: main.InvGroupNum,
+ state: SettleBillState.已开票,
+ invoiceBillState: InvoiceBillState.正常
+ );
+ invlist.Add(invbill);
+ }
+ await _repository.DbContext.BulkInsertAsync(invlist);
+ await _repository.DbContext.BulkInsertAsync(groupList);
+ await _repository.DbContext.BulkInsertAsync(detailList);
+ //await _repository.DbContext.BulkInsertAsync(notDetialList);
+
+ }
+
+ }
+
+ }
+ }
+ }
return ApplicationConsts.SuccessStr;
}
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/INVOICE_WAIT_DETAIL.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/INVOICE_WAIT_DETAIL.cs
index e4451186..17b8f913 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/INVOICE_WAIT_DETAIL.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/INVOICE_WAIT_DETAIL.cs
@@ -41,13 +41,14 @@ public class INVOICE_WAIT_DETAIL :FullAuditedAggregateRoot
[Display(Name = "扩展字段2")]
public string Extend2 { get; set; } = null!;
- [Display(Name = "扩展字段3")]
- public string Extend3 { get; set; } = null!;
+ [Display(Name = "价格开始日期")]
+ public DateTime BeginDate { get; set; }
+ [Display(Name = "价格结束日期")]
+ public DateTime EndDate { get; set; }
- [Display(Name = "扩展字段4")]
- public string Extend4 { get; set; } = null!;
- public INVOICE_WAIT_DETAIL(Guid guid, int version, string invbillNum, string invGroupNum, string lU, decimal pRICE, decimal qty, decimal amt, EnumBusinessType bussiessType, string extend1, string extend2, string extend3, string extend4)
+
+ public INVOICE_WAIT_DETAIL(Guid guid, int version, string invbillNum, string invGroupNum, string lU, decimal pRICE, decimal qty, decimal amt, EnumBusinessType bussiessType, string extend1, string extend2,DateTime beginDate,DateTime endDate)
{
Id = guid;
Version = version;
@@ -60,8 +61,9 @@ public class INVOICE_WAIT_DETAIL :FullAuditedAggregateRoot
BussiessType = bussiessType;
Extend1 = extend1;
Extend2 = extend2;
- Extend3 = extend3;
- Extend4 = extend4;
+ BeginDate = beginDate;
+ EndDate = endDate;
+
}
public INVOICE_WAIT_DETAIL()
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/HBPO_CAN_SA_MNG.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/HBPO_CAN_SA_MNG.cs
index c446f60d..ba3e3d79 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/HBPO_CAN_SA_MNG.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Entities/BQ/Managers/HBPO_CAN_SA_MNG.cs
@@ -40,7 +40,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
public HBPO_CAN_SA_MNG()
{
}
-
+ ///
+ /// 发票正向流程
+ ///
+ ///
+ ///
+ ///
public virtual async Task SetForwardState(HBPO_CAN_SA p_entiy, SettleBillState state)
{
if (await SetForwardState(p_entiy.InvGroupNum, state) == true)
@@ -55,7 +60,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
///
- /// 向前流程
+ ///正向流程
///
///
///
@@ -130,7 +135,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
return false;
}
///
- /// 向后流程
+ /// 反向流程
///
///
///
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 4cfbcb5d..79670bcb 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
@@ -25,16 +25,18 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Managers
private readonly INormalEfCoreRepository _groupRepository;
private readonly INormalEfCoreRepository _detailRepository;
private readonly INormalEfCoreRepository _notRepository;
- private readonly CAN_SA_MNG _pubMng;
- private readonly CAN_SA_MNG _bbacMng;
- private readonly CAN_SA_MNG _hbpoMng;
+ private readonly PUB_CAN_SA_MNG _pubMng;
+ private readonly BBAC_CAN_SA_MNG _bbacMng;
+ private readonly HBPO_CAN_SA_MNG _hbpoMng;
public INV_MNG
(
- CAN_SA_MNG pubMng,
- CAN_SA_MNG bbacMng,
- CAN_SA_MNG hbpoMng,
- //INormalEfCoreRepository canRepository,
- INormalEfCoreRepository repository,
+ PUB_CAN_SA_MNG pubMng,
+ BBAC_CAN_SA_MNG bbacMng,
+ HBPO_CAN_SA_MNG hbpoMng,
+
+
+
+ INormalEfCoreRepository repository,
INormalEfCoreRepository groupRepository,
INormalEfCoreRepository detailRepository,
INormalEfCoreRepository notRepository
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/SettleAccountDbContextModelCreatingExtensions.cs b/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/SettleAccountDbContextModelCreatingExtensions.cs
index b140ff4b..c0519c9d 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/SettleAccountDbContextModelCreatingExtensions.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/EntityFrameworkCore/SettleAccountDbContextModelCreatingExtensions.cs
@@ -997,8 +997,7 @@ namespace Win.Sfs.SettleAccount
b.Property(x => x.BussiessType).HasMaxLength(50);
b.Property(x => x.Extend1).HasMaxLength(50);
b.Property(x => x.Extend2).HasMaxLength(50);
- b.Property(x => x.Extend3).HasMaxLength(50);
- b.Property(x => x.Extend4).HasMaxLength(50);
+
b.Property(x => x.ConcurrencyStamp).HasMaxLength(50);
});
}
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Migrations/20230727011426_202307270001.Designer.cs b/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Migrations/20230727011426_202307270001.Designer.cs
new file mode 100644
index 00000000..389e69ee
--- /dev/null
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Migrations/20230727011426_202307270001.Designer.cs
@@ -0,0 +1,4991 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Volo.Abp.EntityFrameworkCore;
+using Win.Sfs.SettleAccount;
+
+namespace Win.Sfs.SettleAccount.Migrations
+{
+ [DbContext(typeof(SettleAccountDbContext))]
+ [Migration("20230727011426_202307270001")]
+ partial class _202307270001
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
+ .HasAnnotation("Relational:MaxIdentifierLength", 128)
+ .HasAnnotation("ProductVersion", "5.0.17")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ modelBuilder.Entity("SettleAccount.Domain.BQ.BBAC_ADJ_DETAIL", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("BusinessType")
+ .HasColumnType("int");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("ContractDocID")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("CreatorId");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("nvarchar(max)")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("GroupNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("InvBillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("InvGroupNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("IsReturn")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("KeyCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("LU")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("LastModifierId");
+
+ b.Property("OldInvBillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("PN")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Price")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("Qty")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("SettleBillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("SettleDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Site")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Version")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Set_BBAC_ADJ_DETAIL");
+ });
+
+ modelBuilder.Entity("SettleAccount.Domain.BQ.BBAC_CAN_SA", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("BillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("BusinessType")
+ .HasColumnType("int");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("CreatorId");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("nvarchar(max)")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("InvGroupNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("LastModifierId");
+
+ b.Property("SettleBillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Site")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("State")
+ .HasMaxLength(50)
+ .HasColumnType("int");
+
+ b.Property("Version")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Set_BBAC_CAN_SA");
+ });
+
+ modelBuilder.Entity("SettleAccount.Domain.BQ.BBAC_CAN_SA_DETAIL", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("BillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("BusinessType")
+ .HasColumnType("int");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("ContractDocID")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("CreatorId");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("nvarchar(max)")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("GroupNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("InvGroupNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("IsReturn")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("KeyCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("LU")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("LastModifierId");
+
+ b.Property("PN")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Price")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("Qty")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("SettleBillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("SettleDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Site")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Version")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Set_BBAC_CAN_SA_DETAIL");
+ });
+
+ modelBuilder.Entity("SettleAccount.Domain.BQ.BBAC_NOT_SA_DETAIL", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("BusinessType")
+ .HasColumnType("int");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("ContractDocID")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("CreatorId");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("nvarchar(max)")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("GroupNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("InvGroupNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("IsReturn")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("KeyCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("LU")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("LastModifierId");
+
+ b.Property("PN")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Price")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("Qty")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("SettleBillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("SettleDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Site")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Version")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Set_BBAC_NOT_SA_DETAIL");
+ });
+
+ modelBuilder.Entity("SettleAccount.Domain.BQ.BBAC_PD_DETAIL", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("BillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("CreatorId");
+
+ b.Property("DeleterId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("DeleterId");
+
+ b.Property("DeletionTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("DeletionTime");
+
+ b.Property("Extend1")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Extend2")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Extend3")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Extend4")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("nvarchar(max)")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("GroupNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("InvGroupNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("IsDeleted")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bit")
+ .HasDefaultValue(false)
+ .HasColumnName("IsDeleted");
+
+ b.Property("KeyCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("LU")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("LastModifierId");
+
+ b.Property("PN")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Price")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("Qty")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("RELU")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("REPN")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("SettleDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Site")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Version")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Set_BBAC_PD_DETAIL");
+ });
+
+ modelBuilder.Entity("SettleAccount.Domain.BQ.BBAC_SA", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("BillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("CreatorId");
+
+ b.Property("DNBillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("DeleterId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("DeleterId");
+
+ b.Property("DeletionTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("DeletionTime");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("nvarchar(max)")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("IsDeleted")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bit")
+ .HasDefaultValue(false)
+ .HasColumnName("IsDeleted");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("LastModifierId");
+
+ b.Property("Site")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("State")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Version")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Set_BBAC_SA");
+ });
+
+ modelBuilder.Entity("SettleAccount.Domain.BQ.BBAC_SA_DETAIL", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("BillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Category")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("CreatorId");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("nvarchar(max)")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("GroupNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("IsReturn")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("KeyCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("LU")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("LastModifierId");
+
+ b.Property("PN")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Price")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("Qty")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property