diff --git a/FKGees/Constants.cs b/FKGees/Constants.cs index b8931aa..8124d6c 100644 --- a/FKGees/Constants.cs +++ b/FKGees/Constants.cs @@ -5,6 +5,7 @@ namespace FKGees internal static class Constants { public const string DefaultDateFormat = "yyyy-MM-dd"; + public static class DbConfig { public const string Host = "DbSettings:Host"; @@ -22,9 +23,9 @@ namespace FKGees {nameof(KwUtarg), "*WYPŁATA DO BANKU*"}, {nameof(KwInne), "*INNE*"}, {nameof(KwPomylkaKasjera), "*POMYŁKA*"}, - {nameof(KwLotto), "*LOTTO*"}, + {nameof(KwLotto), "*LOTTO*"} }; - + public static readonly Dictionary KpTekstyDod = new() { {nameof(KpKaucjaZaOpakowania), "*KAUCJA ZA OPAKOWANIA*"}, @@ -33,7 +34,12 @@ namespace FKGees {nameof(KpInne), "*INNE*"}, {nameof(KpPaysafe), "*PAYSAFE*"}, {nameof(KpLotto), "*LOTTO*"}, - + }; + + public static readonly Dictionary TekstPowodKorekty = new() + { + {nameof(KorCenZak), "korekta ilości"}, + {nameof(Rozb), "korekta ceny"}, }; } } \ No newline at end of file diff --git a/FKGees/DocsDefinitions/Decrets/KorCenZak.cs b/FKGees/DocsDefinitions/Decrets/KorCenZak.cs new file mode 100644 index 0000000..fbef72a --- /dev/null +++ b/FKGees/DocsDefinitions/Decrets/KorCenZak.cs @@ -0,0 +1,70 @@ +using FKGees.Services; + +namespace FKGees.DocsDefinitions.Decrets; + +public class KorCenZak : IDecretsDefinition +{ + public int DocType => 26; + public string Type => "KorCenZak"; + public List Definitions { get; } = + [ + new Definition("361-0-24", "WN", "[znr]"), + new Definition("221-0-24", "WN", "[zvr]"), + new Definition("210-1", "MA", "[zbr]"), + new Definition("301-0-24", "MA", "[znr]"), + new Definition("342-0-24", "MA", "[snr]-[znr]"), + new Definition("343-0-24", "MA", "[sbr]-[snr]"), + new Definition("332-0-24", "WN", "[sbr]") + ]; + + private readonly PcmService _pcmService; + + public KorCenZak(PcmService pcmService) + { + _pcmService = pcmService; + } + + public Task> Process(IReadOnlyList documents) + { + var result = new List(); + + var toProcess = documents + .Where(x => x.TypDok == DocType + && x.PowodKorekty().Contains(Constants.TekstPowodKorekty[nameof(KorCenZak)])); + + foreach (var dok in toProcess) + { + var opis = _pcmService.RozbNrFakturyKor(dok.DokId); + Definitions.ForEach(d => + { + var item = dok.DecretKontr(); + item.Data = dok.DataPom; + item.DataWplywu = dok.Data; + item.Nr = dok.NrDok; + item.Opis = opis; + item.StronaKonta = d.AccountSide; + item.KontoFk = d.Account; + item.Kwota = Processvalue(dok, d.Expression) + .AsString(); + + result.Add(item); + }); + } + + return Task.FromResult(result); + } + + private static decimal Processvalue(Dok doc, string expression) + { + return expression switch + { + "[znr]" => doc.Netto, + "[zvr]" => doc.Podatek, + "[zbr]" => doc.Netto + doc.Podatek, + "[sbr]" => doc.NettoDet + doc.PodatekDet, + "[snr]-[znr]" => doc.NettoDet - doc.Netto, + "[sbr]-[snr]" => doc.NettoDet + doc.PodatekDet - doc.Netto, + _ => 0 + }; + } +} \ No newline at end of file diff --git a/FKGees/DocsDefinitions/Decrets/Rozb.cs b/FKGees/DocsDefinitions/Decrets/Rozb.cs index 4bf00fc..605288f 100644 --- a/FKGees/DocsDefinitions/Decrets/Rozb.cs +++ b/FKGees/DocsDefinitions/Decrets/Rozb.cs @@ -29,7 +29,8 @@ public class Rozb : IDecretsDefinition var result = new List(); var toProcess = documents - .Where(x => x.TypDok == DocType); + .Where(x => x.TypDok == DocType + && x.PowodKorekty().Contains(Constants.TekstPowodKorekty[nameof(Rozb)])); foreach (var dok in toProcess) { diff --git a/FKGees/Extensions/DokExtensions.cs b/FKGees/Extensions/DokExtensions.cs index 71daff1..9723eab 100644 --- a/FKGees/Extensions/DokExtensions.cs +++ b/FKGees/Extensions/DokExtensions.cs @@ -48,4 +48,9 @@ internal static class DokExtensions return dok.TekstDok.FirstOrDefault(x => x.Znaczenie == 71)?.Tekst ?? string.Empty; } + internal static string PowodKorekty(this Dok dok) + { + return dok.TekstDok.FirstOrDefault(x => x.Znaczenie == 144)?.Tekst ?? string.Empty; + } + } \ No newline at end of file diff --git a/FKGees/Extensions/ServiceCollectionExtensions.cs b/FKGees/Extensions/ServiceCollectionExtensions.cs index c54b0e4..22b3f11 100644 --- a/FKGees/Extensions/ServiceCollectionExtensions.cs +++ b/FKGees/Extensions/ServiceCollectionExtensions.cs @@ -31,8 +31,9 @@ internal static class ServiceCollectionExtensions services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); return services; }