diff --git a/Blink.Backoffice.Services.PcmDb/Blink.Backoffice.Services.PcmDb.csproj b/Blink.Backoffice.Services.PcmDb/Blink.Backoffice.Services.PcmDb.csproj index 7f1307a..44df25a 100644 --- a/Blink.Backoffice.Services.PcmDb/Blink.Backoffice.Services.PcmDb.csproj +++ b/Blink.Backoffice.Services.PcmDb/Blink.Backoffice.Services.PcmDb.csproj @@ -8,11 +8,11 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/FKGees/DocsDefinitions/Decrets/Rozb.cs b/FKGees/DocsDefinitions/Decrets/Rozb.cs new file mode 100644 index 0000000..73d6c0f --- /dev/null +++ b/FKGees/DocsDefinitions/Decrets/Rozb.cs @@ -0,0 +1,71 @@ +using FKGees.Services; + +namespace FKGees.DocsDefinitions.Decrets; + +public class Rozb : IDecretsDefinition +{ + public int DocType => 26; + public string Type => "Rozb"; + public List Definitions { get; } = + [ + new Definition("301-0-24", "WN", "[znr]"), new Definition("221-0-24", "WN", "[zvr]"), new Definition("210-1", "MA", "[zbr]"), + new Definition("301-0-24", "MA", "[zbr]"), new Definition("332-0-24", "WN", "[sbr]"), new Definition("343-0-24", "MA", "[svr]"), + new Definition("342-0-24", "MA", "[sbr]-[znr]"), + ]; + + private readonly PcmService _pcmService; + + public Rozb(PcmService pcmService) + { + _pcmService = pcmService; + } + + public Task> Process(IReadOnlyList documents) + { + var result = new List(); + + var toProcess = documents + .Where(x => x.TypDok == DocType); + + foreach (var dok in toProcess) + { + Definitions.ForEach(d => + { + var item = dok.DecretKontr(); + item.Data = dok.DataPom; + item.DataWplywu = dok.Data; + item.Nr = dok.NrDok; + //item.Opis = _pcmService.WzNrFaktury(dok.DokId); + item.StronaKonta = d.AccountSide; + item.KontoFk = d.Account; + item.Kwota = Processvalue(dok, d.Expression) + .AsString(); + + result.Add(item); + }); + } + + return Task.FromResult(result); + } + + private decimal Processvalue(Dok doc, string expression) + { + switch (expression) + { + case "[znr]": + return Math.Abs(doc.Netto); + case "[zvr]": + return Math.Abs(doc.Podatek); + case "[zbr]": + return Math.Abs(doc.Netto + doc.Podatek); + case "[sbr]": + return Math.Abs(doc.Razem); + case "[svr]": + return Math.Abs(doc.Netto - doc.NettoDet); + case "[sbr]-[snr]": + return Math.Abs(doc.Razem - doc.Netto); + } + + return 0; + } +} \ No newline at end of file diff --git a/FKGees/DocsDefinitions/Decrets/Zwroty.cs b/FKGees/DocsDefinitions/Decrets/Zwroty.cs new file mode 100644 index 0000000..30ef61b --- /dev/null +++ b/FKGees/DocsDefinitions/Decrets/Zwroty.cs @@ -0,0 +1,75 @@ +using FKGees.Services; + +namespace FKGees.DocsDefinitions.Decrets; + +public class Zwroty : IDecretsDefinition +{ + public int DocType => 4; + public string Type => "Zwroty"; + public List Definitions { get; } = + [ + new Definition("301-0-24", "WN", "[znr]"), + new Definition("221-0-24", "WN", "[zvr]"), + new Definition("210-1", "MA", "[zbr]"), + new Definition("301-0-24", "MA", "[zbr]"), + new Definition("332-0-24", "WN", "[sbr]"), + new Definition("343-0-24", "MA", "[svr]"), + new Definition("342-0-24", "MA", "[sbr]-[znr]") + ]; + + private readonly PcmService _pcmService; + + public Zwroty(PcmService pcmService) + { + _pcmService = pcmService; + } + + public Task> Process(IReadOnlyList documents) + { + var result = new List(); + + var toProcess = documents + .Where(x => x.TypDok == DocType); + + foreach (var dok in toProcess) + { + Definitions.ForEach(d => + { + var item = dok.DecretKontr(); + item.Data = dok.DataPom; + item.DataWplywu = dok.Data; + item.Nr = dok.NrDok; + //item.Opis = _pcmService.WzNrFaktury(dok.DokId); + item.StronaKonta = d.AccountSide; + item.KontoFk = d.Account; + item.Kwota = Processvalue(dok, d.Expression) + .AsString(); + + result.Add(item); + }); + } + + return Task.FromResult(result); + } + + private decimal Processvalue(Dok doc, string expression) + { + switch (expression) + { + case "[znr]": + return Math.Abs(doc.Netto); + case "[zvr]": + return Math.Abs(doc.Podatek); + case "[zbr]": + return Math.Abs(doc.Netto + doc.Podatek); + case "[sbr]": + return Math.Abs(doc.Razem); + case "[svr]": + return Math.Abs(doc.Netto - doc.NettoDet); + case "[sbr]-[snr]": + return Math.Abs(doc.Razem - doc.Netto); + } + + return 0; + } +} \ No newline at end of file diff --git a/FKGees/Extensions/ServiceCollectionExtensions.cs b/FKGees/Extensions/ServiceCollectionExtensions.cs index 0fabd3d..c54b0e4 100644 --- a/FKGees/Extensions/ServiceCollectionExtensions.cs +++ b/FKGees/Extensions/ServiceCollectionExtensions.cs @@ -31,6 +31,8 @@ internal static class ServiceCollectionExtensions services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); return services; } diff --git a/FKGees/FKGees.csproj b/FKGees/FKGees.csproj index 9dd554f..accdc8e 100644 --- a/FKGees/FKGees.csproj +++ b/FKGees/FKGees.csproj @@ -8,12 +8,12 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - +