Compare commits

...

16 Commits

Author SHA1 Message Date
e80c8894ea Change "Opis" to NrDok 2025-05-29 12:07:32 +02:00
b5a9ad2e2b Opak clean 2024-10-23 22:27:59 +02:00
ffa2452d07 Obrot opakowaniami 2024-10-02 12:27:23 +02:00
9f288ceb7d RapFisk fix 2024-09-30 16:42:32 +02:00
347c3cb4d2 Roz + Utarg fix 2024-09-29 09:49:35 +02:00
fd54456319 Build fix 2024-09-24 15:46:50 +02:00
9f6840a87f Fixes 2024-09-24 15:44:53 +02:00
16db72e6a3 Rozb Fixes 2024-09-23 15:06:47 +02:00
be4ff5c9ee Fixy 2024-09-23 11:15:01 +02:00
ec382ecbbc Fix 2024-07-24 21:30:39 +02:00
43656d1d55 Korekta cen zakupu 2024-07-24 21:26:35 +02:00
625a679b88 Zw fix 2024-07-24 12:11:18 +02:00
ba6c8551c7 Zd - fix #2 2024-07-24 11:47:19 +02:00
8f83440517 Zd - fix 2024-07-24 11:26:10 +02:00
efd2508f82 Zwroty + rozb. #2 2024-07-23 18:19:46 +02:00
9dfaad971c Zwroty + rozb. 2024-07-23 17:50:15 +02:00
29 changed files with 478 additions and 84 deletions

View File

@ -8,11 +8,11 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.6"> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.8">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.6" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.8" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -5,6 +5,7 @@ namespace FKGees
internal static class Constants internal static class Constants
{ {
public const string DefaultDateFormat = "yyyy-MM-dd"; public const string DefaultDateFormat = "yyyy-MM-dd";
public static class DbConfig public static class DbConfig
{ {
public const string Host = "DbSettings:Host"; public const string Host = "DbSettings:Host";
@ -22,18 +23,22 @@ namespace FKGees
{nameof(KwUtarg), "*WYPŁATA DO BANKU*"}, {nameof(KwUtarg), "*WYPŁATA DO BANKU*"},
{nameof(KwInne), "*INNE*"}, {nameof(KwInne), "*INNE*"},
{nameof(KwPomylkaKasjera), "*POMYŁKA*"}, {nameof(KwPomylkaKasjera), "*POMYŁKA*"},
{nameof(KwLotto), "*LOTTO*"}, {nameof(KwLotto), "*LOTTO*"}
}; };
public static readonly Dictionary<string, string> KpTekstyDod = new() public static readonly Dictionary<string, string> KpTekstyDod = new()
{ {
{nameof(KpKaucjaZaOpakowania), "*KAUCJA ZA OPAKOWANIA*"}, {nameof(KpKaucjaZaOpakowania), "*KAUCJA ZA OPAKOWANIA*"},
{nameof(KpKasy), "*SPRZEDAŻ Z KAS*"},
{nameof(KpRachunki), "*MOJE RACH.*"}, {nameof(KpRachunki), "*MOJE RACH.*"},
{nameof(KpInne), "*INNE*"}, {nameof(KpInne), "*INNE*"},
{nameof(KpPaysafe), "*PAYSAFE*"}, {nameof(KpPaysafe), "*PAYSAFE*"},
{nameof(KpLotto), "*LOTTO*"}, {nameof(KpLotto), "*LOTTO*"},
};
public static readonly Dictionary<string, string> TekstPowodKorekty = new()
{
{nameof(Rozb), "korekta ilości"},
{nameof(KorCenZak), "korekta ceny"},
}; };
} }
} }

View File

@ -0,0 +1,53 @@
namespace FKGees.DocsDefinitions.Decrets;
public class DostawaPrasy : IDecretsDefinition
{
public int DocType => 81;
public string Type => "Dprs";
public List<Definition> Definitions { get; } =
[
new Definition("305-60-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]")
];
public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
{
var result = new List<DecretsResult>();
var toProcess = documents
.Where(x => x.TypDok == DocType && x.RozliczaRozliczanyDok.Count == 0);
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 = d.Account == "305-60-24" ? item.k_NIP : dok.NrDok;
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,
"[snr]-[znr]" => doc.NettoDet - doc.Netto,
"[sbr]-[snr]" => doc.PodatekDet,
"[sbr]" => doc.NettoDet + doc.PodatekDet,
_ => 0
};
}
}

View File

@ -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<Definition> 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<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
{
var result = new List<DecretsResult>();
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
};
}
}

View File

@ -6,8 +6,8 @@ public class KpInne : IDecretsDefinition
public string Type => nameof(KpInne); public string Type => nameof(KpInne);
public List<Definition> Definitions { get; } = public List<Definition> Definitions { get; } =
[ [
new Definition("139-1-24", "WN", "[sbr]"), new Definition("139-1-24", "WN", "[sbr]"),
new Definition("100-1-24", "MA", "[sbr]") new Definition("100-1-24", "WN", "[sbr]")
]; ];
public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents) public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
@ -28,7 +28,7 @@ public class KpInne : IDecretsDefinition
Data = dok.DataPom, Data = dok.DataPom,
DataWplywu = dok.Data, DataWplywu = dok.Data,
Nr = dok.NrDok, Nr = dok.NrDok,
Opis = dok.TekstZaCo(), Opis = dok.NrDok,
StronaKonta = d.AccountSide, StronaKonta = d.AccountSide,
KontoFk = d.Account, KontoFk = d.Account,
Kwota = Math.Abs(dok.Zaplacono).AsString() Kwota = Math.Abs(dok.Zaplacono).AsString()

View File

@ -5,7 +5,7 @@ public class KpKaucjaZaOpakowania : IDecretsDefinition
public int DocType => 51; public int DocType => 51;
public string Type => nameof(KpKaucjaZaOpakowania); public string Type => nameof(KpKaucjaZaOpakowania);
public List<Definition> Definitions { get; } = [ public List<Definition> Definitions { get; } = [
new Definition("100-1-24", "WN", "[sbr]"), new Definition("100-1-24", "WN", "[sbr]"),
new Definition("139-1-24", "MA", "[sbr]") new Definition("139-1-24", "MA", "[sbr]")
]; ];
@ -26,7 +26,7 @@ public class KpKaucjaZaOpakowania : IDecretsDefinition
item.Data = dok.DataPom; item.Data = dok.DataPom;
item.DataWplywu = dok.Data; item.DataWplywu = dok.Data;
item.Nr = dok.NrDok; item.Nr = dok.NrDok;
item.Opis = dok.TekstZaCo(); item.Opis = dok.NrDok;
item.StronaKonta = d.AccountSide; item.StronaKonta = d.AccountSide;
item.KontoFk = d.Account; item.KontoFk = d.Account;
item.Kwota = Math.Abs(dok.Zaplacono).AsString(); item.Kwota = Math.Abs(dok.Zaplacono).AsString();

View File

@ -6,8 +6,8 @@ public class KpLotto : IDecretsDefinition
public string Type => nameof(KpLotto); public string Type => nameof(KpLotto);
public List<Definition> Definitions { get; } = public List<Definition> Definitions { get; } =
[ [
new Definition("100-1-24", "WN", "[sbr]"), new Definition("100-1-24", "WN", "[sbr]"),
new Definition("249-1-22", "MA", "[sbr]") new Definition("249-0-22", "MA", "[sbr]")
]; ];
public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents) public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
@ -28,7 +28,7 @@ public class KpLotto : IDecretsDefinition
Data = dok.DataPom, Data = dok.DataPom,
DataWplywu = dok.Data, DataWplywu = dok.Data,
Nr = dok.NrDok, Nr = dok.NrDok,
Opis = dok.TekstZaCo(), Opis = dok.NrDok,
StronaKonta = d.AccountSide, StronaKonta = d.AccountSide,
KontoFk = d.Account, KontoFk = d.Account,
Kwota = Math.Abs(dok.Zaplacono).AsString() Kwota = Math.Abs(dok.Zaplacono).AsString()

View File

@ -6,7 +6,7 @@ public class KpPaysafe : IDecretsDefinition
public string Type => nameof(KpPaysafe); public string Type => nameof(KpPaysafe);
public List<Definition> Definitions { get; } = public List<Definition> Definitions { get; } =
[ [
new Definition("139-1-24", "WN", "[sbr]"), new Definition("139-1-24", "WN", "[sbr]"),
new Definition("100-1-24", "MA", "[sbr]") new Definition("100-1-24", "MA", "[sbr]")
]; ];
@ -28,7 +28,7 @@ public class KpPaysafe : IDecretsDefinition
Data = dok.DataPom, Data = dok.DataPom,
DataWplywu = dok.Data, DataWplywu = dok.Data,
Nr = dok.NrDok, Nr = dok.NrDok,
Opis = dok.TekstZaCo(), Opis = dok.NrDok,
StronaKonta = d.AccountSide, StronaKonta = d.AccountSide,
KontoFk = d.Account, KontoFk = d.Account,
Kwota = Math.Abs(dok.Zaplacono).AsString() Kwota = Math.Abs(dok.Zaplacono).AsString()

View File

@ -6,7 +6,7 @@ public class KpRachunki : IDecretsDefinition
public string Type => nameof(KpRachunki); public string Type => nameof(KpRachunki);
public List<Definition> Definitions { get; } = public List<Definition> Definitions { get; } =
[ [
new Definition("100-1-24", "WN", "[sbr]"), new Definition("100-1-24", "WN", "[sbr]"),
new Definition("249-0-24", "MA", "[sbr]") new Definition("249-0-24", "MA", "[sbr]")
]; ];
@ -28,7 +28,7 @@ public class KpRachunki : IDecretsDefinition
Data = dok.DataPom, Data = dok.DataPom,
DataWplywu = dok.Data, DataWplywu = dok.Data,
Nr = dok.NrDok, Nr = dok.NrDok,
Opis = dok.TekstZaCo(), Opis = dok.NrDok,
StronaKonta = d.AccountSide, StronaKonta = d.AccountSide,
KontoFk = d.Account, KontoFk = d.Account,
Kwota = Math.Abs(dok.Zaplacono).AsString() Kwota = Math.Abs(dok.Zaplacono).AsString()

View File

@ -6,10 +6,10 @@ public class KwBony : IDecretsDefinition
public string Type => nameof(KwBony); public string Type => nameof(KwBony);
public List<Definition> Definitions { get; } = public List<Definition> Definitions { get; } =
[ [
new Definition("100-1-24", "MA", "[sbr]"), new Definition("100-1-24", "MA", "[sbr]"),
new Definition("234-0-01", "WN", "[sbr]") new Definition("234-0-01", "WN", "[sbr]")
]; ];
public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents) public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
{ {
var result = new List<DecretsResult>(); var result = new List<DecretsResult>();
@ -26,7 +26,7 @@ public class KwBony : IDecretsDefinition
item.Data = dok.DataPom; item.Data = dok.DataPom;
item.DataWplywu = dok.Data; item.DataWplywu = dok.Data;
item.Nr = dok.NrDok; item.Nr = dok.NrDok;
item.Opis = dok.TekstZaCo(); item.Opis = dok.NrDok;
item.StronaKonta = d.AccountSide; item.StronaKonta = d.AccountSide;
item.KontoFk = d.Account; item.KontoFk = d.Account;
item.Kwota = Math.Abs(dok.Zaplacono).AsString(); item.Kwota = Math.Abs(dok.Zaplacono).AsString();

View File

@ -0,0 +1,42 @@
namespace FKGees.DocsDefinitions.Decrets;
public class KwCashback : IDecretsDefinition
{
public int DocType => 53;
public string Type => nameof(KwCashback);
public List<Definition> Definitions { get; } =
[
new Definition("249-0-19", "WN", "[sbr]"),
new Definition("100-1-24", "MA", "[sbr]")
];
public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
{
var result = new List<DecretsResult>();
var toProcess = documents
.Where(x => x.TypDok == DocType && x.Kwota5 != 0)
.GroupBy(x => x.Data);
foreach (var dok in toProcess)
{
Definitions.ForEach(d =>
{
var item = new DecretsResult
{
Data = dok.Key,
DataWplywu = dok.Key,
Nr = string.Join(", ",dok.Select(z => z.NrDok)),
Opis = "CashBack",
StronaKonta = d.AccountSide,
KontoFk = d.Account,
Kwota = dok.Sum(x => x.Kwota5).AsString()
};
result.Add(item);
});
}
return Task.FromResult(result);
}
}

View File

@ -6,15 +6,15 @@ public class KwInne : IDecretsDefinition
public string Type => nameof(KwInne); public string Type => nameof(KwInne);
public List<Definition> Definitions { get; } = public List<Definition> Definitions { get; } =
[ [
new Definition("305-60-24", "WN", "[sbr]"), new Definition("305-60-24", "WN", "[sbr]"),
new Definition("100-1-24", "MA", "[sbr]") new Definition("100-1-24", "MA", "[sbr]")
]; ];
public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents) public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
{ {
var result = new List<DecretsResult>(); var result = new List<DecretsResult>();
var toProcess = documents.Where(x => x.TypDok == DocType var toProcess = documents.Where(x => x.TypDok == DocType
&& x.NrDok.StartsWith("KW") && x.NrDok.StartsWith("KW")
&& x.Tekst1() == Constants.KwTekstyDod[nameof(KwInne)]); && x.Tekst1() == Constants.KwTekstyDod[nameof(KwInne)]);
@ -26,7 +26,7 @@ public class KwInne : IDecretsDefinition
item.Data = dok.DataPom; item.Data = dok.DataPom;
item.DataWplywu = dok.Data; item.DataWplywu = dok.Data;
item.Nr = dok.NrDok; item.Nr = dok.NrDok;
item.Opis = dok.TekstZaCo(); item.Opis = dok.NrDok;
item.StronaKonta = d.AccountSide; item.StronaKonta = d.AccountSide;
item.KontoFk = d.Account; item.KontoFk = d.Account;
item.Kwota = Math.Abs(dok.Zaplacono).AsString(); item.Kwota = Math.Abs(dok.Zaplacono).AsString();

View File

@ -6,10 +6,10 @@ public class KwLotto : IDecretsDefinition
public string Type => nameof(KwLotto); public string Type => nameof(KwLotto);
public List<Definition> Definitions { get; } = public List<Definition> Definitions { get; } =
[ [
new Definition("249-0-22", "WN", "[sbr]"), new Definition("249-0-22", "WN", "[sbr]"),
new Definition("100-1-24", "MA", "[sbr]") new Definition("100-1-24", "MA", "[sbr]")
]; ];
public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents) public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
{ {
var result = new List<DecretsResult>(); var result = new List<DecretsResult>();
@ -26,7 +26,7 @@ public class KwLotto : IDecretsDefinition
item.Data = dok.DataPom; item.Data = dok.DataPom;
item.DataWplywu = dok.Data; item.DataWplywu = dok.Data;
item.Nr = dok.NrDok; item.Nr = dok.NrDok;
item.Opis = dok.TekstZaCo(); item.Opis = dok.NrDok;
item.StronaKonta = d.AccountSide; item.StronaKonta = d.AccountSide;
item.KontoFk = d.Account; item.KontoFk = d.Account;
item.Kwota = Math.Abs(dok.Zaplacono).AsString(); item.Kwota = Math.Abs(dok.Zaplacono).AsString();

View File

@ -5,7 +5,7 @@ public class KwOpakowania : IDecretsDefinition
public int DocType => 51; public int DocType => 51;
public string Type => nameof(KwOpakowania); public string Type => nameof(KwOpakowania);
public List<Definition> Definitions { get; } = [ public List<Definition> Definitions { get; } = [
new Definition("139-1-24", "WN", "[sbr]"), new Definition("139-1-24", "WN", "[sbr]"),
new Definition("100-1-24", "MA", "[sbr]") new Definition("100-1-24", "MA", "[sbr]")
]; ];
@ -25,7 +25,7 @@ public class KwOpakowania : IDecretsDefinition
item.Data = dok.DataPom; item.Data = dok.DataPom;
item.DataWplywu = dok.Data; item.DataWplywu = dok.Data;
item.Nr = dok.NrDok; item.Nr = dok.NrDok;
item.Opis = dok.TekstZaCo(); item.Opis = dok.NrDok;
item.StronaKonta = d.AccountSide; item.StronaKonta = d.AccountSide;
item.KontoFk = d.Account; item.KontoFk = d.Account;
item.Kwota = Math.Abs(dok.Zaplacono).AsString(); item.Kwota = Math.Abs(dok.Zaplacono).AsString();

View File

@ -6,7 +6,7 @@ public class KwPolcard : IDecretsDefinition
public string Type => nameof(KwPolcard); public string Type => nameof(KwPolcard);
public List<Definition> Definitions { get; } = public List<Definition> Definitions { get; } =
[ [
new Definition("249-0-29", "WN", "[sbr]"), new Definition("249-0-19", "WN", "[sbr]"),
new Definition("100-1-24", "MA", "[sbr]") new Definition("100-1-24", "MA", "[sbr]")
]; ];

View File

@ -6,15 +6,15 @@ public class KwPomylkaKasjera : IDecretsDefinition
public string Type => nameof(KwPomylkaKasjera); public string Type => nameof(KwPomylkaKasjera);
public List<Definition> Definitions { get; } = public List<Definition> Definitions { get; } =
[ [
new Definition("305-60-24", "WN", "[sbr]"), new Definition("305-60-24", "WN", "[sbr]"),
new Definition("100-1-24", "MA", "[sbr]") new Definition("100-1-24", "MA", "[sbr]")
]; ];
public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents) public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
{ {
var result = new List<DecretsResult>(); var result = new List<DecretsResult>();
var toProcess = documents.Where(x => x.TypDok == DocType var toProcess = documents.Where(x => x.TypDok == DocType
&& x.NrDok.StartsWith("KW") && x.NrDok.StartsWith("KW")
&& x.Tekst1() == Constants.KwTekstyDod[nameof(KwPomylkaKasjera)]); && x.Tekst1() == Constants.KwTekstyDod[nameof(KwPomylkaKasjera)]);
@ -26,7 +26,7 @@ public class KwPomylkaKasjera : IDecretsDefinition
item.Data = dok.DataPom; item.Data = dok.DataPom;
item.DataWplywu = dok.Data; item.DataWplywu = dok.Data;
item.Nr = dok.NrDok; item.Nr = dok.NrDok;
item.Opis = dok.TekstZaCo(); item.Opis = dok.NrDok;
item.StronaKonta = d.AccountSide; item.StronaKonta = d.AccountSide;
item.KontoFk = d.Account; item.KontoFk = d.Account;
item.Kwota = Math.Abs(dok.Zaplacono).AsString(); item.Kwota = Math.Abs(dok.Zaplacono).AsString();

View File

@ -6,15 +6,15 @@ public class KwUtarg : IDecretsDefinition
public string Type => nameof(KwUtarg); public string Type => nameof(KwUtarg);
public List<Definition> Definitions { get; } = public List<Definition> Definitions { get; } =
[ [
new Definition("139-0-01", "WN", "[sbr]"), new Definition("139-0-01", "WN", "[sbr]"),
new Definition("100-1-24", "MA", "[sbr]") new Definition("100-1-24", "MA", "[sbr]")
]; ];
public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents) public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
{ {
var result = new List<DecretsResult>(); var result = new List<DecretsResult>();
var toProcess = documents.Where(x => x.TypDok == DocType var toProcess = documents.Where(x => x.TypDok == DocType
&& x.NrDok.StartsWith("KW") && x.NrDok.StartsWith("KW")
&& x.Tekst1() == Constants.KwTekstyDod[nameof(KwUtarg)]); && x.Tekst1() == Constants.KwTekstyDod[nameof(KwUtarg)]);
@ -26,7 +26,7 @@ public class KwUtarg : IDecretsDefinition
item.Data = dok.DataPom; item.Data = dok.DataPom;
item.DataWplywu = dok.Data; item.DataWplywu = dok.Data;
item.Nr = dok.NrDok; item.Nr = dok.NrDok;
item.Opis = dok.TekstZaCo(); item.Opis = dok.NrDok;
item.StronaKonta = d.AccountSide; item.StronaKonta = d.AccountSide;
item.KontoFk = d.Account; item.KontoFk = d.Account;
item.Kwota = Math.Abs(dok.Zaplacono).AsString(); item.Kwota = Math.Abs(dok.Zaplacono).AsString();

View File

@ -26,7 +26,7 @@ public class MmMinus : IDecretsDefinition
item.Data = dok.DataPom; item.Data = dok.DataPom;
item.DataWplywu = dok.Data; item.DataWplywu = dok.Data;
item.Nr = dok.NrDok; item.Nr = dok.NrDok;
item.Opis = dok.TekstZaCo(); item.Opis = $"{dok.NrDok} / PRZERZUT NA {item.k_Skrot}";
item.StronaKonta = d.AccountSide; item.StronaKonta = d.AccountSide;
item.KontoFk = d.Account; item.KontoFk = d.Account;
item.Kwota = ProcessValue(dok, d.Expression).AsString(); item.Kwota = ProcessValue(dok, d.Expression).AsString();

View File

@ -26,7 +26,7 @@ public class MmPlus : IDecretsDefinition
item.Data = dok.DataPom; item.Data = dok.DataPom;
item.DataWplywu = dok.Data; item.DataWplywu = dok.Data;
item.Nr = dok.NrDok; item.Nr = dok.NrDok;
item.Opis = dok.TekstZaCo(); item.Opis = $"{dok.NrDok} / PRZERZUT Z {item.k_Skrot}";
item.StronaKonta = d.AccountSide; item.StronaKonta = d.AccountSide;
item.KontoFk = d.Account; item.KontoFk = d.Account;
item.Kwota = ProcessValue(dok, d.Expression).AsString(); item.Kwota = ProcessValue(dok, d.Expression).AsString();

View File

@ -0,0 +1,38 @@
namespace FKGees.DocsDefinitions.Decrets;
public class ObrotOpakowaniami : IDecretsDefinition
{
public int DocType => 1;
public string Type => "Opak";
public List<Definition> Definitions { get; } =
[
new Definition("307-0-24", "MA", "[sbr]"),
new Definition("332-0-24", "WN", "[sbr]")
];
public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
{
var result = new List<DecretsResult>();
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.StronaKonta = d.AccountSide;
item.KontoFk = d.Account;
item.Kwota = dok.NettoDet.AsString();
result.Add(item);
});
}
return Task.FromResult(result);
}
}

View File

@ -5,9 +5,9 @@ public class Przecena : IDecretsDefinition
public int DocType => 18; public int DocType => 18;
public string Type => "Pc"; public string Type => "Pc";
public List<Definition> Definitions { get; } = public List<Definition> Definitions { get; } =
[ [
new Definition("342-0-24", "MA", "[snr]-[znr]"), new Definition("342-0-24", "MA", "[snr]-[znr]"),
new Definition("343-0-24", "MA", "[sbr]-[snr]"), new Definition("343-0-24", "MA", "[sbr]-[snr]"),
new Definition("332-0-24", "WN", "[sbr]") new Definition("332-0-24", "WN", "[sbr]")
]; ];
@ -26,11 +26,11 @@ public class Przecena : IDecretsDefinition
item.Data = dok.DataPom; item.Data = dok.DataPom;
item.DataWplywu = dok.Data; item.DataWplywu = dok.Data;
item.Nr = dok.NrDok; item.Nr = dok.NrDok;
item.Opis = dok.TekstZaCo(); item.Opis = dok.NrDok;
item.StronaKonta = d.AccountSide; item.StronaKonta = d.AccountSide;
item.KontoFk = d.Account; item.KontoFk = d.Account;
item.Kwota = Processvalue(dok, d.Expression).AsString(); item.Kwota = Processvalue(dok, d.Expression).AsString();
result.Add(item); result.Add(item);
}); });
} }
@ -40,17 +40,12 @@ public class Przecena : IDecretsDefinition
private decimal Processvalue(Dok doc, string expression) private decimal Processvalue(Dok doc, string expression)
{ {
switch(expression) return expression switch
{ {
case "[snr]-[znr]": "[snr]-[znr]" => doc.Netto - doc.NettoDet,
return doc.Netto - doc.NettoDet; "[sbr]-[snr]" => doc.Podatek - doc.PodatekDet,
case "[sbr]-[snr]": "[sbr]" => doc.Razem,
return doc.Podatek - doc.PodatekDet; _ => 0
case "[sbr]": };
return doc.Razem;
}
return 0;
} }
} }

View File

@ -13,7 +13,8 @@ public class RapFisk : IDecretsDefinition
new Definition("343-0-24", "WN", "[svr]"), new Definition("343-0-24", "WN", "[svr]"),
new Definition("737-0-24", "MA", "[svr]"), new Definition("737-0-24", "MA", "[svr]"),
new Definition("732-0-24", "WN", "[svr]"), new Definition("732-0-24", "WN", "[svr]"),
new Definition("222-0-24", "MA", "[svr]") new Definition("222-0-24", "MA", "[svr]"),
new Definition("100-1-24", "MA", "[sbr]")
]; ];
public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents) public Task<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)

View File

@ -0,0 +1,70 @@
using FKGees.Services;
namespace FKGees.DocsDefinitions.Decrets;
public class Rozb : IDecretsDefinition
{
public int DocType => 26;
public string Type => "Rozb";
public List<Definition> 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", "[znr]"),
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<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
{
var result = new List<DecretsResult>();
var toProcess = documents
.Where(x => x.TypDok == DocType
&& x.PowodKorekty().Contains(Constants.TekstPowodKorekty[nameof(Rozb)]));
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,
"[svr]" => doc.PodatekDet,
"[sbr]-[znr]" => doc.NettoDet - doc.Netto,
_ => 0
};
}
}

View File

@ -1,9 +1,9 @@
namespace FKGees.DocsDefinitions.Decrets; namespace FKGees.DocsDefinitions.Decrets;
public class KpKasy : IDecretsDefinition public class Utarg : IDecretsDefinition
{ {
public int DocType => 51; public int DocType => 53;
public string Type => nameof(KpKasy); public string Type => nameof(Utarg);
public List<Definition> Definitions { get; } = public List<Definition> Definitions { get; } =
[ [
new Definition("100-1-24", "WN", "[sbr]"), new Definition("100-1-24", "WN", "[sbr]"),
@ -15,9 +15,8 @@ public class KpKasy : IDecretsDefinition
var result = new List<DecretsResult>(); var result = new List<DecretsResult>();
var toProcess = documents var toProcess = documents
.Where(x => x.TypDok == DocType .Where(x => x.TypDok == DocType && x.Kwota1 != 0)
&& x.NrDok.StartsWith("KP") .GroupBy(x => x.Data);
&& x.Tekst1() == Constants.KpTekstyDod[nameof(KpKasy)]);
foreach (var dok in toProcess) foreach (var dok in toProcess)
{ {
@ -25,13 +24,13 @@ public class KpKasy : IDecretsDefinition
{ {
var item = new DecretsResult var item = new DecretsResult
{ {
Data = dok.DataPom, Data = dok.Key,
DataWplywu = dok.Data, DataWplywu = dok.Key,
Nr = dok.NrDok, Nr = string.Join(", ",dok.Select(z => z.NrDok)),
Opis = dok.TekstZaCo(), Opis = "UTARG Z KAS",
StronaKonta = d.AccountSide, StronaKonta = d.AccountSide,
KontoFk = d.Account, KontoFk = d.Account,
Kwota = Math.Abs(dok.Zaplacono).AsString() Kwota = dok.Sum(x => x.Razem - x.Kwota1 + x.Kwota2).AsString()
}; };
result.Add(item); result.Add(item);

View File

@ -0,0 +1,69 @@
using FKGees.Services;
namespace FKGees.DocsDefinitions.Decrets;
public class Zwroty : IDecretsDefinition
{
public int DocType => 4;
public string Type => "Zwroty";
public List<Definition> 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", "[znr]"),
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<List<DecretsResult>> Process(IReadOnlyList<Dok> documents)
{
var result = new List<DecretsResult>();
var toProcess = documents
.Where(x => x.TypDok == DocType);
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),
"[svr]" => -(doc.PodatekDet),
"[sbr]-[znr]" => -(doc.NettoDet + doc.PodatekDet - doc.Netto),
_ => 0
};
}
}

View File

@ -48,4 +48,9 @@ internal static class DokExtensions
return dok.TekstDok.FirstOrDefault(x => x.Znaczenie == 71)?.Tekst ?? string.Empty; 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;
}
} }

View File

@ -6,14 +6,15 @@ namespace FKGees.Extensions;
internal static class ServiceCollectionExtensions internal static class ServiceCollectionExtensions
{ {
internal static IServiceCollection AddDecretsDefinitions(this IServiceCollection services) internal static IServiceCollection AddDecretsDefinitions(this IServiceCollection services)
{ {
services.AddSingleton<IDecretsDefinition, RapFisk>();
services.AddSingleton<IDecretsDefinition, ObrotOpakowaniami>();
services.AddSingleton<IDecretsDefinition, Przecena>(); services.AddSingleton<IDecretsDefinition, Przecena>();
services.AddSingleton<IDecretsDefinition, MmPlus>(); services.AddSingleton<IDecretsDefinition, MmPlus>();
services.AddSingleton<IDecretsDefinition, MmMinus>(); services.AddSingleton<IDecretsDefinition, MmMinus>();
services.AddSingleton<IDecretsDefinition, Pz>(); services.AddSingleton<IDecretsDefinition, Pz>();
services.AddSingleton<IDecretsDefinition, Wz>(); services.AddSingleton<IDecretsDefinition, Wz>();
services.AddSingleton<IDecretsDefinition, PzFaktura>(); services.AddSingleton<IDecretsDefinition, PzFaktura>();
services.AddSingleton<IDecretsDefinition, RapFisk>();
services.AddSingleton<IDecretsDefinition, KorDetal>(); services.AddSingleton<IDecretsDefinition, KorDetal>();
services.AddSingleton<IDecretsDefinition, FaktSprz>(); services.AddSingleton<IDecretsDefinition, FaktSprz>();
services.AddSingleton<IDecretsDefinition, KwBony>(); services.AddSingleton<IDecretsDefinition, KwBony>();
@ -24,13 +25,18 @@ internal static class ServiceCollectionExtensions
services.AddSingleton<IDecretsDefinition, KwPomylkaKasjera>(); services.AddSingleton<IDecretsDefinition, KwPomylkaKasjera>();
services.AddSingleton<IDecretsDefinition, KwUtarg>(); services.AddSingleton<IDecretsDefinition, KwUtarg>();
services.AddSingleton<IDecretsDefinition, KpInne>(); services.AddSingleton<IDecretsDefinition, KpInne>();
services.AddSingleton<IDecretsDefinition, KpKasy>(); services.AddSingleton<IDecretsDefinition, Utarg>();
services.AddSingleton<IDecretsDefinition, KpKaucjaZaOpakowania>(); services.AddSingleton<IDecretsDefinition, KpKaucjaZaOpakowania>();
services.AddSingleton<IDecretsDefinition, KpKaucjaZDokUtargu>(); services.AddSingleton<IDecretsDefinition, KpKaucjaZDokUtargu>();
services.AddSingleton<IDecretsDefinition, KwKaucjaZDokUtargu>(); services.AddSingleton<IDecretsDefinition, KwKaucjaZDokUtargu>();
services.AddSingleton<IDecretsDefinition, KpLotto>(); services.AddSingleton<IDecretsDefinition, KpLotto>();
services.AddSingleton<IDecretsDefinition, KpPaysafe>(); services.AddSingleton<IDecretsDefinition, KpPaysafe>();
services.AddSingleton<IDecretsDefinition, KpRachunki>(); services.AddSingleton<IDecretsDefinition, KpRachunki>();
services.AddSingleton<IDecretsDefinition, Zwroty>();
services.AddSingleton<IDecretsDefinition, Rozb>();
services.AddSingleton<IDecretsDefinition, KorCenZak>();
services.AddSingleton<IDecretsDefinition, KwCashback>();
services.AddSingleton<IDecretsDefinition, DostawaPrasy>();
return services; return services;
} }

View File

@ -8,16 +8,16 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CsvHelper" Version="32.0.3" /> <PackageReference Include="CsvHelper" Version="33.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.6"> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.8">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.6" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.8" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0"/> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0"/>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0"/> <PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0"/>
<PackageReference Include="NLog" Version="5.3.2"/> <PackageReference Include="NLog" Version="5.3.4" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.11"/> <PackageReference Include="NLog.Extensions.Logging" Version="5.3.13" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -26,7 +26,9 @@ public class PcmService
.ThenInclude(x => x.Dok) .ThenInclude(x => x.Dok)
.Include(x => x.DokKasa) .Include(x => x.DokKasa)
.ThenInclude(x => x.Kasa) .ThenInclude(x => x.Kasa)
.Where(x => typdok.Contains(x.TypDok) && x.Data >= dataOd && x.Data <= dataDo) .Where(x => typdok.Contains(x.TypDok)
&& x.Data >= dataOd && x.Data <= dataDo
&& x.Aktywny == 1)
.ToListAsync(); .ToListAsync();
return documents; return documents;
} }
@ -41,7 +43,9 @@ public class PcmService
.ThenInclude(x => x.Kontr) .ThenInclude(x => x.Kontr)
.Include(x => x.TekstDok) .Include(x => x.TekstDok)
.Include(x => x.RozbicieDok) .Include(x => x.RozbicieDok)
.Where(x => typdok.Contains(x.TypDok) && x.Data >= dataOd && x.Data <= dataDo) .Where(x => typdok.Contains(x.TypDok)
&& x.Data >= dataOd && x.Data <= dataDo
&& x.Aktywny == 1)
.ToListAsync(); .ToListAsync();
return documents; return documents;
} }
@ -58,16 +62,53 @@ public class PcmService
return dok?.RozliczanyDok.NrDok ?? string.Empty; return dok?.RozliczanyDok.NrDok ?? string.Empty;
} }
public string RozbNrFakturyKor(decimal dokId)
{
using var context = _dbContextFactory.CreateDbContext();
context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
var dok = context.Rozlicza
.Where(x => x.RozliczanyDokId == dokId)
.Include(x => x.Dok)
.FirstOrDefault();
return dok?.Dok.NrDok ?? string.Empty;
}
public string RozbNrFakturyDost(decimal dokId)
{
using var context = _dbContextFactory.CreateDbContext();
context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
var dok = context.Rozlicza
.Where(x => x.RozliczanyDokId == dokId)
.Include(x => x.Dok)
.FirstOrDefault();
if (dok == null)
return string.Empty;
var dok2 = context.Rozlicza
.Where(x => x.DokId == dok.DokId)
.Include(x => x.RozliczanyDok)
.Include(rozlicza => rozlicza.Dok)
.ToList();
return dok2.FirstOrDefault(x => x.RozliczanyDok is {TypDok: 31, Aktywny: 1})
?.RozliczanyDok.NrDok ?? string.Empty;
}
public async Task<List<FormaPlatnosci>> FormyPlatnosci() public async Task<List<FormaPlatnosci>> FormyPlatnosci()
{ {
await using var context = await _dbContextFactory.CreateDbContextAsync(); await using var context = await _dbContextFactory.CreateDbContextAsync();
context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking; context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
var fplat = await context.FormaPlatnosci.Where(x => x.FormaPlat > 4).ToListAsync(); var fplat = await context.FormaPlatnosci.Where(x => x.FormaPlat > 4)
fplat.Add(new FormaPlatnosci{ FormaPlat = 0, Tekst = "Gotówka"}); .ToListAsync();
fplat.Add(new FormaPlatnosci{ FormaPlat = 1, Tekst = "Przelew"}); fplat.Add(new FormaPlatnosci {FormaPlat = 0, Tekst = "Gotówka"});
fplat.Add(new FormaPlatnosci{ FormaPlat = 2, Tekst = "Czek potwierdzony"}); fplat.Add(new FormaPlatnosci {FormaPlat = 1, Tekst = "Przelew"});
fplat.Add(new FormaPlatnosci{ FormaPlat = 3, Tekst = "Karta płatnicza"}); fplat.Add(new FormaPlatnosci {FormaPlat = 2, Tekst = "Czek potwierdzony"});
fplat.Add(new FormaPlatnosci{ FormaPlat = 4, Tekst = "Inna"}); fplat.Add(new FormaPlatnosci {FormaPlat = 3, Tekst = "Karta płatnicza"});
fplat.Add(new FormaPlatnosci {FormaPlat = 4, Tekst = "Inna"});
return fplat; return fplat;
} }
} }