Skip to content

Commit f44b6a2

Browse files
committed
feat: 648
Merged PR 228: Modulo Commessa Previsionale Related work items: #648
1 parent cae5d6a commit f44b6a2

File tree

80 files changed

+3120
-203
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+3120
-203
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,10 +546,15 @@ src/Presentation/PortaleFatture.BE.Function.API/PortaleFatture.BE.Function.API.s
546546
src/Presentation/PortaleFatture.BE.ImportFattureGrandiAderenti/data/fatture/primo saldo/FatturePagoPa_01_2025.json
547547
src/Presentation/PortaleFatture.BE.ImportFattureGrandiAderenti/data/fatture/primo saldo/FatturePagoPa_02_2025.json
548548
src/Presentation/PortaleFatture.BE.ImportFattureGrandiAderenti/data/fatture/primo saldo/FatturePagoPa_03_2025.json
549+
/src/Presentation/PortaleFatture.BE.ImportModuloCommessaAderenti/Documenti/categorizzazione_clienti_send_2025-07-14_08-50.json
550+
/src/Presentation/PortaleFatture.BE.ImportModuloCommessaAderenti/Documenti/categorizzazione_clienti.csv
549551
nul
550552
src/Presentation/PortaleFatture.BE.ImportFattureGrandiAderenti/data/fatture/primo saldo/FatturePagoPa_04_2025.json
551553
src/Presentation/PortaleFatture.BE.ImportFattureGrandiAderenti/data/fatture/primo saldo/FatturePagoPa_05_2025.json
552554
src/Presentation/PortaleFatture.BE.ImportFattureGrandiAderenti/data/fatture/primo saldo/FatturePagoPa_06_2025.json
553555
src/Presentation/PortaleFatture.BE.ImportFattureGrandiAderenti/data/fatture/primo saldo/FatturePagoPa_07_2025.json
554556
src/Presentation/PortaleFatture.BE.ImportFattureGrandiAderenti/data/fatture/primo saldo/FatturePagoPa_INPS_08_2025.json
555557
src/Presentation/PortaleFatture.BE.ImportFattureGrandiAderenti/data/fatture/primo saldo/FatturePagoPa_reg._Lombardia_08_2025.json
558+
src/Presentation/PortaleFatture.BE.ImportFattureGrandiAderenti/data/fatture/primo saldo/FatturePagoPa_reg._Lombardia_06_2025_per PF.json
559+
src/Presentation/PortaleFatture.BE.ImportFattureGrandiAderenti/data/fatture/primo saldo/FatturePagoPa_reg._Lombardia_07_2025_per_PF.json
560+
src/Presentation/PortaleFatture.BE.ImportFattureGrandiAderenti/data/fatture/primo saldo/FatturePagoPa_reg._Lombardia_08_2025 per_PF.json

PortaleFatture.BE.Api.sln

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PortaleFatture.BE.EmailPSPS
4343
EndProject
4444
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PortaleFatture.BE.Function.API", "src\Presentation\PortaleFatture.BE.Function.API\PortaleFatture.BE.Function.API.csproj", "{3BDADB61-3359-BEC6-F0D3-AAB0DD56D62B}"
4545
EndProject
46+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PortaleFatture.BE.ImportModuloCommessaAderenti", "src\Presentation\PortaleFatture.BE.ImportModuloCommessaAderenti\PortaleFatture.BE.ImportModuloCommessaAderenti.csproj", "{2E3F6B30-E7E0-4147-8906-DFA66F65738A}"
47+
EndProject
4648
Global
4749
GlobalSection(SolutionConfigurationPlatforms) = preSolution
4850
Debug|Any CPU = Debug|Any CPU
@@ -91,6 +93,10 @@ Global
9193
{3BDADB61-3359-BEC6-F0D3-AAB0DD56D62B}.Debug|Any CPU.Build.0 = Debug|Any CPU
9294
{3BDADB61-3359-BEC6-F0D3-AAB0DD56D62B}.Release|Any CPU.ActiveCfg = Release|Any CPU
9395
{3BDADB61-3359-BEC6-F0D3-AAB0DD56D62B}.Release|Any CPU.Build.0 = Release|Any CPU
96+
{2E3F6B30-E7E0-4147-8906-DFA66F65738A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
97+
{2E3F6B30-E7E0-4147-8906-DFA66F65738A}.Debug|Any CPU.Build.0 = Debug|Any CPU
98+
{2E3F6B30-E7E0-4147-8906-DFA66F65738A}.Release|Any CPU.ActiveCfg = Release|Any CPU
99+
{2E3F6B30-E7E0-4147-8906-DFA66F65738A}.Release|Any CPU.Build.0 = Release|Any CPU
94100
EndGlobalSection
95101
GlobalSection(SolutionProperties) = preSolution
96102
HideSolutionNode = FALSE
@@ -108,6 +114,7 @@ Global
108114
{E32705A0-D6F3-40F7-B2D0-4A08FEAE18B2} = {FCE0D4DD-5884-4A2A-814E-F58B18092F76}
109115
{E41A8735-126D-4F6D-82C2-166CB605EB8D} = {FCE0D4DD-5884-4A2A-814E-F58B18092F76}
110116
{3BDADB61-3359-BEC6-F0D3-AAB0DD56D62B} = {FCE0D4DD-5884-4A2A-814E-F58B18092F76}
117+
{2E3F6B30-E7E0-4147-8906-DFA66F65738A} = {FCE0D4DD-5884-4A2A-814E-F58B18092F76}
111118
EndGlobalSection
112119
GlobalSection(ExtensibilityGlobals) = postSolution
113120
SolutionGuid = {E21864C8-BAF8-4D8B-957E-726DB3040371}

src/Core/PortaleFatture.BE.Core/Entities/SEND/DatiModuloCommesse/Dto/ModuloCommessaByAnnoDto.cs

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,58 @@
1-
using System.ComponentModel.DataAnnotations.Schema;
1+
namespace PortaleFatture.BE.Core.Entities.SEND.DatiModuloCommesse.Dto;
22

3-
namespace PortaleFatture.BE.Core.Entities.SEND.DatiModuloCommesse.Dto;
3+
public class ModuloCommessaPrevisionaleTotaleDto
4+
{
5+
public bool Modifica { get; set; }
6+
public int AnnoValidita { get; set; }
7+
public int MeseValidita { get; set; }
8+
public string? IdEnte { get; set; }
9+
public string? RagioneSociale { get; set; }
10+
public long IdTipoContratto { get; set; }
11+
public string? Stato { get; set; }
12+
public string? Prodotto { get; set; }
13+
public decimal? Totale { get; set; }
14+
public DateTime? DataInserimento { get; set; }
15+
public DateTime? DataChiusura { get; set; }
16+
public DateTime? DataChiusuraLegale { get; set; }
17+
public decimal? TotaleDigitaleNaz { get; set; }
18+
public decimal? TotaleDigitaleInternaz { get; set; }
19+
public decimal? TotaleAnalogicoARNaz { get; set; }
20+
public decimal? TotaleAnalogicoARInternaz { get; set; }
21+
public decimal? TotaleAnalogico890Naz { get; set; }
22+
public int? TotaleNotificheDigitaleNaz { get; set; }
23+
public int? TotaleNotificheDigitaleInternaz { get; set; }
24+
public int? TotaleNotificheAnalogicoARNaz { get; set; }
25+
public int? TotaleNotificheAnalogicoARInternaz { get; set; }
26+
public int? TotaleNotificheAnalogico890Naz { get; set; }
27+
public int? TotaleNotificheDigitale { get; set; }
28+
public int? TotaleNotificheAnalogico { get; set; }
29+
public int? TotaleNotifiche { get; set; }
30+
public string? Source { get; set; }
31+
public string? Quarter { get; set; }
32+
public List<ValoriRegioneDto>? ValoriRegione { get; set; }
33+
}
34+
35+
public class ModuloCommessaPrevisionaleByAnnoDto
36+
{
37+
public int AnnoValidita { get; set; }
38+
public int MeseValidita { get; set; }
39+
public int FkIdTipoSpedizione { get; set; }
40+
public int? NumeroNotificheInternazionali { get; set; }
41+
public int? NumeroNotificheNazionali { get; set; }
42+
public decimal? ValoreInternazionali { get; set; }
43+
public decimal? ValoreNazionali { get; set; }
44+
public string? Source { get; set; }
45+
public string? FkIdEnte { get; set; }
46+
public string? RagioneSociale { get; set; }
47+
public int FkIdTipoContratto { get; set; }
48+
public string? FkProdotto { get; set; }
49+
public string? FkIdStato { get; set; }
50+
public DateTime? DataInserimento { get; set; }
51+
public DateTime? DataChiusura { get; set; }
52+
public DateTime? DataChiusuraLegale { get; set; }
53+
public string? Quarter { get; set; }
54+
public bool Modifica { get; set; }
55+
}
456

557

658
public class ModuloCommessaByAnnoDto
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
using System.Text.Json.Serialization;
2+
3+
namespace PortaleFatture.BE.Core.Entities.SEND.DatiModuloCommesse.Dto;
4+
public class ValoriRegioneDto
5+
{
6+
[JsonPropertyName("provincia")]
7+
public string? Provincia { get; set; }
8+
9+
[JsonPropertyName("regione")]
10+
public string Regione { get; set; } = null!;
11+
12+
[JsonPropertyName("istatProvincia")]
13+
public string? IstatProvincia { get; set; }
14+
15+
[JsonPropertyName("istatRegione")]
16+
public string? IstatRegione { get; set; }
17+
18+
[JsonPropertyName("ar")]
19+
public int? AR { get; set; }
20+
21+
[JsonPropertyName("890")]
22+
public int? A890 { get; set; }
23+
24+
[JsonPropertyName("isRegione")]
25+
public int IsRegione { get; set; }
26+
27+
[JsonPropertyName("obbligatorio")]
28+
public int Obbligatorio { get; set; }
29+
30+
[JsonIgnore]
31+
public string? Internalistitutionid { get; set; }
32+
33+
[JsonIgnore]
34+
public int Anno { get; set; }
35+
36+
[JsonIgnore]
37+
public int Mese { get; set; }
38+
39+
[JsonPropertyName("calcolato")]
40+
public int calcolato { get; set; }
41+
}

src/Core/PortaleFatture.BE.Core/Extensions/DocumentExtensions.cs

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -269,29 +269,32 @@ public static ModuloCommessaDocumentoDto Mapper(this ModuloCommessaAggregateDto
269269
var digitale = catDigitale.Select(x => x.Descrizione).FirstOrDefault()!.Replace("[data]", data).Replace("[percent]", percentDigitale.ToString());
270270
var analogico = catAnalogico.Select(x => x.Descrizione).FirstOrDefault()!.Replace("[data]", data).Replace("[percent]", percentAnalogico.ToString());
271271

272-
totaleModulo.Totali!.TryGetValue(2, out var totaleDigitale);
273-
totaleModulo.Totali!.TryGetValue(1, out var totaleAnalogico);
274-
275-
var totali = moduloDocumento.DatiModuloCommessaCosti!.ToList();
276-
totali.Add(
277-
new DatiModuloCommessaTotaleCostoDto()
278-
{
279-
Totale = totaleDigitale == null ? 0 : totaleDigitale.TotaleCategoria,
280-
Descrizione = digitale
281-
});
282-
totali.Add(
283-
new DatiModuloCommessaTotaleCostoDto()
284-
{
285-
Totale = totaleAnalogico == null ? 0 : totaleAnalogico.TotaleCategoria,
286-
Descrizione = analogico
287-
});
288-
totali.Add(
289-
new DatiModuloCommessaTotaleCostoDto()
290-
{
291-
Totale = totaleModulo!.Totale,
292-
Descrizione = "TOTALE MODULO COMMESSA NETTO IVA"
293-
});
294-
moduloDocumento.DatiModuloCommessaCosti = totali;
272+
if(!(totaleModulo == null || totaleModulo.Totali.IsNullNotAny()))
273+
{
274+
totaleModulo.Totali!.TryGetValue(2, out var totaleDigitale);
275+
totaleModulo.Totali!.TryGetValue(1, out var totaleAnalogico);
276+
277+
var totali = moduloDocumento.DatiModuloCommessaCosti!.ToList();
278+
totali.Add(
279+
new DatiModuloCommessaTotaleCostoDto()
280+
{
281+
Totale = totaleDigitale == null ? 0 : totaleDigitale.TotaleCategoria,
282+
Descrizione = digitale
283+
});
284+
totali.Add(
285+
new DatiModuloCommessaTotaleCostoDto()
286+
{
287+
Totale = totaleAnalogico == null ? 0 : totaleAnalogico.TotaleCategoria,
288+
Descrizione = analogico
289+
});
290+
totali.Add(
291+
new DatiModuloCommessaTotaleCostoDto()
292+
{
293+
Totale = totaleModulo!.Totale,
294+
Descrizione = "TOTALE MODULO COMMESSA NETTO IVA"
295+
});
296+
moduloDocumento.DatiModuloCommessaCosti = totali;
297+
}
295298
return moduloDocumento;
296299
}
297300
}

src/Core/PortaleFatture.BE.Core/Resources/Localization.en.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,10 @@
117117
<resheader name="writer">
118118
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119119
</resheader>
120+
<data name="DatiModuloCommessaObbligatoriNotInserted" xml:space="preserve">
121+
<value />
122+
</data>
123+
<data name="DatiModuloCommessaErrorInsertPrevisionale" xml:space="preserve">
124+
<value />
125+
</data>
120126
</root>

src/Core/PortaleFatture.BE.Core/Resources/Localization.it.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,4 +279,10 @@
279279
<data name="ContestazioniEnteEmpty" xml:space="preserve">
280280
<value>Atteso un id ente "{0}" trovato "{1}".</value>
281281
</data>
282+
<data name="DatiModuloCommessaObbligatoriNotInserted" xml:space="preserve">
283+
<value />
284+
</data>
285+
<data name="DatiModuloCommessaErrorInsertPrevisionale" xml:space="preserve">
286+
<value />
287+
</data>
282288
</root>

src/Core/PortaleFatture.BE.Core/Resources/Localization.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,4 +280,10 @@
280280
<data name="ContestazioniEnteEmpty" xml:space="preserve">
281281
<value>Atteso un id ente "{0}" trovato "{1}".</value>
282282
</data>
283+
<data name="DatiModuloCommessaObbligatoriNotInserted" xml:space="preserve">
284+
<value>Non hai inserito i valori commessa obbligatori</value>
285+
</data>
286+
<data name="DatiModuloCommessaErrorInsertPrevisionale" xml:space="preserve">
287+
<value>Si è verificato un errore nell'inserire il previsionale modulo commessa.</value>
288+
</data>
283289
</root>

src/Infrastructure/PortaleFatture.BE.Infrastructure/Common/SEND/DatiModuloCommesse/CommandHandlers/DatiModuloCommessaCreateCommandHandler.cs

Lines changed: 45 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using Microsoft.Extensions.Logging;
44
using PortaleFatture.BE.Core.Entities.SEND.DatiModuloCommesse;
55
using PortaleFatture.BE.Core.Entities.SEND.DatiModuloCommesse.Dto;
6-
using PortaleFatture.BE.Core.Entities.SEND.Scadenziari;
76
using PortaleFatture.BE.Core.Entities.SEND.Tipologie;
87
using PortaleFatture.BE.Core.Entities.Storici;
98
using PortaleFatture.BE.Core.Exceptions;
@@ -34,11 +33,8 @@ public class DatiModuloCommessaCreateCommandHandler(
3433
public async Task<ModuloCommessaDto?> Handle(DatiModuloCommessaCreateListCommand command, CancellationToken ct)
3534
{
3635
var (annoAttuale, meseAttuale, giornoAttuale, adesso) = Time.YearMonthDayFatturazione();
37-
38-
var (valid, scadenziario) = await _scadenziarioService.GetScadenziario(command.AuthenticationInfo, TipoScadenziario.DatiModuloCommessa, annoAttuale, meseAttuale);
39-
40-
if (!valid)
41-
throw new ValidationException(_localizer["DataScadenziarioValidationError", $"{scadenziario.GiornoInizio}-{scadenziario.GiornoFine}"]);
36+
var mesePrecedente = command.Mese;
37+
var annoPrecedente = command.Anno;
4238

4339
var idTipoContratto = command.AuthenticationInfo.IdTipoContratto;
4440
var prodotto = command.AuthenticationInfo.Prodotto;
@@ -49,7 +45,7 @@ public class DatiModuloCommessaCreateCommandHandler(
4945
{
5046
// recupero sempre lo stesso contratto mese anno prodotto ente
5147
// anche se è cambiato il contratto
52-
var datiAttivi = await at.Query(new DatiModuloCommessaQueryGetByIdPersistence(idEnte, annoAttuale, meseAttuale, prodotto), ct);
48+
var datiAttivi = await at.Query(new DatiModuloCommessaQueryGetByIdPersistence(idEnte, command.Anno, command.Anno, prodotto), ct);
5349
if (!datiAttivi!.IsNullNotAny())
5450
idTipoContratto = datiAttivi!.Select(x => x.IdTipoContratto).FirstOrDefault();
5551
}
@@ -96,28 +92,32 @@ public class DatiModuloCommessaCreateCommandHandler(
9692
stato = statoCommessa!.Stato;
9793
}
9894

99-
var commandTotale = command.GetTotali(categorie, confModuloCommessa, idEnte, annoAttuale, meseAttuale, idTipoContratto.Value, prodotto, stato);
95+
var commandTotale = command.GetTotali(categorie, confModuloCommessa, idEnte, command.Anno, command.Mese, idTipoContratto.Value, prodotto, stato);
10096

10197
var fatturabile = true;
10298
foreach (var cmd in command.DatiModuloCommessaListCommand!) // validazione per id tipo spedizione
10399
{
104100
cmd.Stato = stato;
105101
cmd.Prodotto = prodotto;
106102
cmd.IdTipoContratto = idTipoContratto.Value;
107-
cmd.AnnoValidita = annoAttuale;
108-
cmd.MeseValidita = meseAttuale;
103+
cmd.AnnoValidita = command.Anno;
104+
cmd.MeseValidita = command.Mese;
109105
cmd.DataCreazione = adesso;
110106
cmd.DataModifica = adesso;
111107
fatturabile = cmd.Fatturabile; // segno fatturabile se passato
112108

113109
var (error, errorDetails) = DatiModuloCommessaValidator.Validate(cmd);
114110
if (!string.IsNullOrEmpty(error))
115-
throw new DomainException(_localizer[error, errorDetails]);
111+
throw new DomainException(_localizer[error, errorDetails]);
116112

117-
cmd.ValoreNazionali = commandTotale.ParzialiTipoCommessa![cmd.IdTipoSpedizione].ValoreNazionali;
118-
cmd.ValoreInternazionali = commandTotale.ParzialiTipoCommessa![cmd.IdTipoSpedizione].ValoreInternazionali;
119-
cmd.PrezzoNazionali = commandTotale.ParzialiTipoCommessa![cmd.IdTipoSpedizione].PrezzoNazionali;
120-
cmd.PrezzoInternazionali = commandTotale.ParzialiTipoCommessa![cmd.IdTipoSpedizione].PrezzoInternazionali;
113+
114+
if (meseAttuale == mesePrecedente && annoAttuale == annoPrecedente)
115+
{
116+
cmd.ValoreNazionali = commandTotale.ParzialiTipoCommessa![cmd.IdTipoSpedizione].ValoreNazionali;
117+
cmd.ValoreInternazionali = commandTotale.ParzialiTipoCommessa![cmd.IdTipoSpedizione].ValoreInternazionali;
118+
cmd.PrezzoNazionali = commandTotale.ParzialiTipoCommessa![cmd.IdTipoSpedizione].PrezzoNazionali;
119+
cmd.PrezzoInternazionali = commandTotale.ParzialiTipoCommessa![cmd.IdTipoSpedizione].PrezzoInternazionali;
120+
}
121121
}
122122

123123
using var uow = await _factory.Create(true, cancellationToken: ct);
@@ -127,9 +127,34 @@ public class DatiModuloCommessaCreateCommandHandler(
127127
if (rowAffected == command.DatiModuloCommessaListCommand!.Count)
128128
{
129129
commandTotale.DatiModuloCommessaTotaleListCommand!.ForEach(x => x.Fatturabile = fatturabile);
130-
rowAffected = await uow.Execute(new DatiModuloCommessaCreateTotaleCommandPersistence(commandTotale), ct);
130+
if (meseAttuale == mesePrecedente && annoAttuale == annoPrecedente)
131+
rowAffected = await uow.Execute(new DatiModuloCommessaCreateTotaleCommandPersistence(commandTotale), ct);
132+
else
133+
rowAffected = commandTotale.DatiModuloCommessaTotaleListCommand!.Count;
134+
131135
if (rowAffected == commandTotale.DatiModuloCommessaTotaleListCommand!.Count)
132-
uow.Commit();
136+
{
137+
if (!command.ValoriRegioni.IsNullNotAny())
138+
{
139+
await uow.Execute(new DatiModuloCommessaValoriRegioniDeleteCommandPersistence(command.AuthenticationInfo.IdEnte,
140+
command.Anno,
141+
command.Mese
142+
), ct);
143+
rowAffected = await uow.Execute(new DatiModuloCommessaValoriRegioniInsertCommandPersistence(command.ValoriRegioni!), ct);
144+
}
145+
else
146+
{
147+
await uow.Execute(new DatiModuloCommessaValoriRegioniDeleteCommandPersistence(command.AuthenticationInfo.IdEnte,
148+
command.Anno,
149+
command.Mese
150+
), ct);
151+
}
152+
153+
if (rowAffected > 0)
154+
uow.Commit();
155+
else
156+
uow.Rollback();
157+
}
133158
else
134159
{
135160
uow.Rollback();
@@ -150,11 +175,11 @@ public class DatiModuloCommessaCreateCommandHandler(
150175
throw new DomainException(_localizer["DatiModuloCommessaError", idEnte!]);
151176
}
152177

153-
var datic = await uow.Query(new DatiModuloCommessaQueryGetByIdPersistence(idEnte, annoAttuale, meseAttuale, prodotto), ct);
154-
var datit = await uow.Query(new DatiModuloCommessaTotaleQueryGetByIdPersistence(idEnte, annoAttuale, meseAttuale, prodotto), ct);
178+
var datic = await uow.Query(new DatiModuloCommessaQueryGetByIdPersistence(idEnte, command.Anno, command.Mese, prodotto), ct);
179+
var datit = await uow.Query(new DatiModuloCommessaTotaleQueryGetByIdPersistence(idEnte, command.Anno, command.Mese, prodotto), ct);
155180
var moduloCommessa = new ModuloCommessaDto()
156181
{
157-
Modifica = valid && stato == StatoModuloCommessa.ApertaCaricato,
182+
Modifica = true, // da verificare questo
158183
DatiModuloCommessa = datic!,
159184
DatiModuloCommessaTotale = datit!,
160185
Anno = datic!.Select(x => x.AnnoValidita).FirstOrDefault(),

src/Infrastructure/PortaleFatture.BE.Infrastructure/Common/SEND/DatiModuloCommesse/Commands/DatiModuloCommessaCreateCommand.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ public class DatiModuloCommessaCreateCommand : IRequest<DatiModuloCommessa>
1818
public string? Stato { get; set; }
1919
public string? Prodotto { get; set; }
2020
public int IdTipoSpedizione { get; set; }
21-
public decimal ValoreNazionali { get; set; }
22-
public decimal PrezzoNazionali { get; set; }
23-
public decimal ValoreInternazionali { get; set; }
24-
public decimal PrezzoInternazionali { get; set; }
21+
public decimal? ValoreNazionali { get; set; }
22+
public decimal? PrezzoNazionali { get; set; }
23+
public decimal? ValoreInternazionali { get; set; }
24+
public decimal? PrezzoInternazionali { get; set; }
2525
public bool Fatturabile { get; set; }
2626
}

0 commit comments

Comments
 (0)