Skip to content

Commit c6c2e19

Browse files
committed
feat: 641
Merged PR 204: Report Mandatari Privati Related work items: #641
1 parent 57d9f23 commit c6c2e19

File tree

3 files changed

+98
-35
lines changed

3 files changed

+98
-35
lines changed

src/Infrastructure/PortaleFatture.BE.Infrastructure/Common/pagoPA/EntiPrivati/Dto/ReportPrivatiECDto.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,16 @@ public class ReportPrivatiECDto
3737

3838
[HeaderPagoPA(caption: "name", Order = 5)]
3939
public string? Name { get; set; }
40+
41+
[HeaderPagoPA(caption: "parent_id", Order = -2)]
42+
public string? ParentId { get; set; }
43+
44+
[HeaderPagoPA(caption: "parent_description", Order = -3)]
45+
public string? ParentDescription { get; set; }
46+
47+
[HeaderPagoPA(caption: "mandatario", Order = -1)]
48+
public string? Mandatario { get; set; }
49+
4050
public ReportPrivatiECDto Clone()
4151
{
4252
return (ReportPrivatiECDto)this.MemberwiseClone();

src/Infrastructure/PortaleFatture.BE.Infrastructure/Common/pagoPA/EntiPrivati/Queries/Persistence/Builder/ReportPrivatiECSQLBuilder.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ [internalistitutionid] as InternalInstitutionId
1515
,p.[year_quarter] as YearQuarter
1616
,p.recipient_id as RecipientId
1717
,c.name as name
18+
,p.parentID
19+
,p.parentDescription
20+
,IIF(p.parentID IS NULL, 'NO', 'SI') as mandatario
1821
FROM [ppa].[report_privati] p
1922
left outer join [ppa].[FinancialReports] r
2023
ON p.recipient_id = r.recipient_id
@@ -31,11 +34,11 @@ public static string SelectEC()
3134
}
3235
public static string GroupByEC()
3336
{
34-
return " group by p.internalistitutionid, CodiceArticolo, p.year_quarter, taxcode, description, p.recipient_id, c.name";
37+
return " group by p.internalistitutionid, CodiceArticolo, p.year_quarter, taxcode, description, p.recipient_id, c.name, p.parentID, p.parentDescription";
3538
}
3639

3740
public static string OrderByEC()
3841
{
39-
return " ORDER BY p.description, CodiceArticolo";
42+
return " ORDER BY p.parentID desc, p.description, CodiceArticolo";
4043
}
4144
}

src/Presentation/PortaleFatture.BE.Api/Modules/pagoPA/FinancialReports/Extensions/FinancialReportsExtensions.cs

Lines changed: 83 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,44 @@ public static string FileExistsAsync(this string uri)
3939
}
4040
}
4141

42+
public static List<ReportPrivatiECDto> Map(this List<ReportPrivatiECDto> lista, bool isMandatario = false)
43+
{
44+
List<ReportPrivatiECDto> reportPrivatiECList = [];
45+
ReportPrivatiECDto? previousItem = new();
46+
foreach (var item in lista)
47+
{
48+
if (previousItem == null || previousItem.InternalInstitutionId != item.InternalInstitutionId)
49+
{
50+
var totale = new ReportPrivatiECDto
51+
{
52+
YearQuarter = item.YearQuarter,
53+
InternalInstitutionId = item!.InternalInstitutionId,
54+
RagioneSociale = item!.RagioneSociale,
55+
Imponibile = lista.Where(x => x.InternalInstitutionId == item.InternalInstitutionId).Sum(x => x.ValoreAsync + x.ValoreSync),
56+
TaxCode = item.TaxCode,
57+
ValoreAsync = lista.Where(x => x.InternalInstitutionId == item.InternalInstitutionId).Sum(x => x.ValoreAsync),
58+
ValoreSync = lista.Where(x => x.InternalInstitutionId == item.InternalInstitutionId).Sum(x => x.ValoreSync),
59+
TotaleAsync = lista.Where(x => x.InternalInstitutionId == item.InternalInstitutionId).Sum(x => x.TotaleAsync),
60+
TotaleSync = lista.Where(x => x.InternalInstitutionId == item.InternalInstitutionId).Sum(x => x.TotaleSync),
61+
ParentId = isMandatario ? null : item.InternalInstitutionId,
62+
ParentDescription = isMandatario ? null : item.RagioneSociale,
63+
Mandatario = isMandatario ? null : "NO",
64+
};
65+
reportPrivatiECList.Add(totale);
66+
previousItem = item.Clone();
67+
}
68+
item.InternalInstitutionId = null;
69+
item.RagioneSociale = null;
70+
item.TaxCode = null;
71+
item.YearQuarter = null;
72+
item.ParentDescription = null;
73+
item.ParentId = null;
74+
item.Mandatario = null;
75+
reportPrivatiECList.Add(item);
76+
}
77+
return reportPrivatiECList;
78+
}
79+
4280
public static FinancialReportsQuarterByIdResponse Map(this GridFinancialReportListDto reports, PSPListDto psps, IDocumentStorageSASService sasService)
4381
{
4482
var financialReport = reports.FinancialReports!.FirstOrDefault();
@@ -414,48 +452,60 @@ public static FinancialReportQuartersQuery Map(this FinancialReportsQuartersRequ
414452
var singlePrivatiEC = reportPrivatiEC?.Where(x => x.YearQuarter == yearQuarter).ToList();
415453
if (singlePrivatiEC != null && singlePrivatiEC.Any())
416454
{
417-
List<ReportPrivatiECDto> reportPrivatiECList = new();
418455
var tableName = yearQuarter!.TableName(6);
419456
tableNames.Add(tableName!);
420-
ReportPrivatiECDto? previousItem = new();
421-
foreach (var item in singlePrivatiEC)
457+
458+
// prendi non qualificati
459+
var nonQualificati = singlePrivatiEC.Where(x => x.ParentId == null).ToList();
460+
var reportPrivatiECListNonQualificati = nonQualificati.Map();
461+
462+
// aggiungi mandatari qualificati
463+
ReportPrivatiECDto? previousParentId = new();
464+
List<ReportPrivatiECDto> reportPrivatiECListMandatariQualificati = [];
465+
var mandatari = singlePrivatiEC.Where(x => x.ParentId != null).ToList();
466+
467+
var groupedByParent = mandatari
468+
.GroupBy(x => x.ParentId)
469+
.ToList();
470+
foreach (var item in groupedByParent)
422471
{
423-
if (previousItem == null || previousItem.InternalInstitutionId != item.InternalInstitutionId)
472+
var lista = item.ToList();
473+
474+
var mandatario = new ReportPrivatiECDto
424475
{
425-
var totale = new ReportPrivatiECDto
426-
{
427-
YearQuarter = item.YearQuarter,
428-
InternalInstitutionId = item!.InternalInstitutionId,
429-
RagioneSociale = item!.RagioneSociale,
430-
Imponibile = singlePrivatiEC.Where(x => x.InternalInstitutionId == item.InternalInstitutionId).Sum(x => x.ValoreAsync + x.ValoreSync),
431-
TaxCode = item.TaxCode,
432-
ValoreAsync = singlePrivatiEC.Where(x => x.InternalInstitutionId == item.InternalInstitutionId).Sum(x => x.ValoreAsync),
433-
ValoreSync = singlePrivatiEC.Where(x => x.InternalInstitutionId == item.InternalInstitutionId).Sum(x => x.ValoreSync),
434-
TotaleAsync = singlePrivatiEC.Where(x => x.InternalInstitutionId == item.InternalInstitutionId).Sum(x => x.TotaleAsync),
435-
TotaleSync = singlePrivatiEC.Where(x => x.InternalInstitutionId == item.InternalInstitutionId).Sum(x => x.TotaleSync),
436-
};
437-
reportPrivatiECList.Add(totale);
438-
previousItem = item.Clone();
439-
}
440-
item.InternalInstitutionId = null;
441-
item.RagioneSociale = null;
442-
item.TaxCode = null;
443-
item.YearQuarter = null;
444-
445-
reportPrivatiECList.Add(item);
476+
ParentId = lista[0].ParentId,
477+
ParentDescription = lista[0].ParentDescription,
478+
Mandatario = lista[0].Mandatario,
479+
YearQuarter = lista[0].YearQuarter,
480+
Imponibile = lista.Where(x => x.ParentId == lista[0].ParentId).Sum(x => x.ValoreAsync + x.ValoreSync),
481+
ValoreAsync = lista.Where(x => x.ParentId == lista[0].ParentId).Sum(x => x.ValoreAsync),
482+
ValoreSync = lista.Where(x => x.ParentId == lista[0].ParentId).Sum(x => x.ValoreSync),
483+
TotaleAsync = lista.Where(x => x.ParentId == lista[0].ParentId).Sum(x => x.TotaleAsync),
484+
TotaleSync = lista.Where(x => x.ParentId == lista[0].ParentId).Sum(x => x.TotaleSync),
485+
};
486+
reportPrivatiECListMandatariQualificati.Add(mandatario);
487+
488+
var result = lista.Map(true);
489+
reportPrivatiECListMandatariQualificati.AddRange(result);
446490
}
447491

448-
reportPrivatiECList.Add(new ReportPrivatiECDto
492+
reportPrivatiECListMandatariQualificati.AddRange(reportPrivatiECListNonQualificati);
493+
494+
// totale alla fine
495+
reportPrivatiECListMandatariQualificati.Add(new ReportPrivatiECDto
449496
{
450-
RagioneSociale = "Totale Risultato",
451-
Imponibile = reportPrivatiECList.Where(x=>x.RecipientId== null).Sum(item => item.Imponibile),
452-
ValoreAsync = reportPrivatiECList.Where(x => x.RecipientId != null).Sum(item => item.ValoreAsync),
453-
ValoreSync = reportPrivatiECList.Where(x => x.RecipientId != null).Sum(item => item.ValoreSync),
454-
TotaleAsync = reportPrivatiECList.Where(x => x.RecipientId != null).Sum(item => item.TotaleAsync),
455-
TotaleSync = reportPrivatiECList.Where(x => x.RecipientId != null).Sum(item => item.TotaleSync),
497+
ParentDescription = "Totale Risultato",
498+
// Fix for CS1003, CS8389, and CS0307 errors
499+
Imponibile = reportPrivatiECListMandatariQualificati
500+
.Where(x => x.RecipientId == null && x.InternalInstitutionId != null)
501+
.Sum(item => item.Imponibile ?? 0),
502+
ValoreAsync = reportPrivatiECListMandatariQualificati.Where(x => x.RecipientId != null).Sum(item => item.ValoreAsync),
503+
ValoreSync = reportPrivatiECListMandatariQualificati.Where(x => x.RecipientId != null).Sum(item => item.ValoreSync),
504+
TotaleAsync = reportPrivatiECListMandatariQualificati.Where(x => x.RecipientId != null).Sum(item => item.TotaleAsync),
505+
TotaleSync = reportPrivatiECListMandatariQualificati.Where(x => x.RecipientId != null).Sum(item => item.TotaleSync),
456506
});
457507

458-
dataSet.Tables.Add(reportPrivatiECList!.FillTable(tableName!));
508+
dataSet.Tables.Add(reportPrivatiECListMandatariQualificati!.FillTable(tableName!));
459509
}
460510
}
461511
}

0 commit comments

Comments
 (0)