Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e80c8894ea | |||
| b5a9ad2e2b | |||
| ffa2452d07 | |||
| 9f288ceb7d | |||
| 347c3cb4d2 | |||
| fd54456319 | |||
| 9f6840a87f | |||
| 16db72e6a3 | |||
| be4ff5c9ee | |||
| ec382ecbbc | |||
| 43656d1d55 | |||
| 625a679b88 | |||
| ba6c8551c7 | |||
| 8f83440517 | |||
| efd2508f82 | |||
| 9dfaad971c | |||
| 10210abe89 |
@ -8,11 +8,11 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.6">
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.8">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.6" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.8" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@ -35,14 +35,14 @@ internal class App
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!DateTime.TryParseExact(args[0], Constants.DefaultdateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out var startDate))
|
||||
if (!DateTime.TryParseExact(args[0], Constants.DefaultDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out var startDate))
|
||||
{
|
||||
Console.WriteLine("Niewłaściwy format DataOd");
|
||||
await Task.Delay(4000);
|
||||
Environment.Exit(1);
|
||||
}
|
||||
|
||||
if (!DateTime.TryParseExact(args[1], Constants.DefaultdateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out var endDate))
|
||||
if (!DateTime.TryParseExact(args[1], Constants.DefaultDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out var endDate))
|
||||
{
|
||||
Console.WriteLine("Niewłaściwy format DataOd");
|
||||
await Task.Delay(4000);
|
||||
|
||||
@ -4,7 +4,8 @@ namespace FKGees
|
||||
{
|
||||
internal static class Constants
|
||||
{
|
||||
public const string DefaultdateFormat = "yyyy-MM-dd";
|
||||
public const string DefaultDateFormat = "yyyy-MM-dd";
|
||||
|
||||
public static class DbConfig
|
||||
{
|
||||
public const string Host = "DbSettings:Host";
|
||||
@ -19,22 +20,25 @@ namespace FKGees
|
||||
{
|
||||
{nameof(KwBony), "*BONY*"},
|
||||
{nameof(KwOpakowania), "*KAUCJA ZA PRZYJĘTE*"},
|
||||
{nameof(KwUtarg), "*UTARG*"},
|
||||
{nameof(KwPolcard), "*POLCARD*"},
|
||||
{nameof(KwUtarg), "*WYPŁATA DO BANKU*"},
|
||||
{nameof(KwInne), "*INNE*"},
|
||||
{nameof(KwPomylkaKasjera), "*POMYŁKA*"},
|
||||
{nameof(KwLotto), "*LOTTO*"},
|
||||
{nameof(KwLotto), "*LOTTO*"}
|
||||
};
|
||||
|
||||
public static readonly Dictionary<string, string> KpTekstyDod = new()
|
||||
{
|
||||
{nameof(KpKaucjaZaOpakowania), "*KAUCJA ZA OPAKOWANIA*"},
|
||||
{nameof(KpKasy), "*SPRZEDAŻ Z KAS*"},
|
||||
{nameof(KpRachunki), "*MOJE RACH.*"},
|
||||
{nameof(KpInne), "*INNE*"},
|
||||
{nameof(KpPaysafe), "*PAYSAFE*"},
|
||||
{nameof(KpLotto), "*LOTTO*"},
|
||||
};
|
||||
|
||||
public static readonly Dictionary<string, string> TekstPowodKorekty = new()
|
||||
{
|
||||
{nameof(Rozb), "korekta ilości"},
|
||||
{nameof(KorCenZak), "korekta ceny"},
|
||||
};
|
||||
}
|
||||
}
|
||||
53
FKGees/DocsDefinitions/Decrets/DostawaPrasy.cs
Normal file
53
FKGees/DocsDefinitions/Decrets/DostawaPrasy.cs
Normal 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
|
||||
};
|
||||
}
|
||||
}
|
||||
70
FKGees/DocsDefinitions/Decrets/KorCenZak.cs
Normal file
70
FKGees/DocsDefinitions/Decrets/KorCenZak.cs
Normal 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
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -7,7 +7,7 @@ public class KpInne : IDecretsDefinition
|
||||
public List<Definition> Definitions { get; } =
|
||||
[
|
||||
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)
|
||||
@ -28,7 +28,7 @@ public class KpInne : IDecretsDefinition
|
||||
Data = dok.DataPom,
|
||||
DataWplywu = dok.Data,
|
||||
Nr = dok.NrDok,
|
||||
Opis = dok.TekstZaCo(),
|
||||
Opis = dok.NrDok,
|
||||
StronaKonta = d.AccountSide,
|
||||
KontoFk = d.Account,
|
||||
Kwota = Math.Abs(dok.Zaplacono).AsString()
|
||||
|
||||
@ -18,7 +18,6 @@ public class KpKaucjaZDokUtargu : IDecretsDefinition
|
||||
.Where(x => x.TypDok == DocType && x.Kwota1 != 0)
|
||||
.GroupBy(x => x.Data);
|
||||
|
||||
|
||||
foreach (var dok in toProcess)
|
||||
{
|
||||
Definitions.ForEach(d =>
|
||||
|
||||
@ -26,7 +26,7 @@ public class KpKaucjaZaOpakowania : IDecretsDefinition
|
||||
item.Data = dok.DataPom;
|
||||
item.DataWplywu = dok.Data;
|
||||
item.Nr = dok.NrDok;
|
||||
item.Opis = dok.TekstZaCo();
|
||||
item.Opis = dok.NrDok;
|
||||
item.StronaKonta = d.AccountSide;
|
||||
item.KontoFk = d.Account;
|
||||
item.Kwota = Math.Abs(dok.Zaplacono).AsString();
|
||||
|
||||
@ -7,7 +7,7 @@ public class KpLotto : IDecretsDefinition
|
||||
public List<Definition> Definitions { get; } =
|
||||
[
|
||||
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)
|
||||
@ -28,7 +28,7 @@ public class KpLotto : IDecretsDefinition
|
||||
Data = dok.DataPom,
|
||||
DataWplywu = dok.Data,
|
||||
Nr = dok.NrDok,
|
||||
Opis = dok.TekstZaCo(),
|
||||
Opis = dok.NrDok,
|
||||
StronaKonta = d.AccountSide,
|
||||
KontoFk = d.Account,
|
||||
Kwota = Math.Abs(dok.Zaplacono).AsString()
|
||||
|
||||
@ -28,7 +28,7 @@ public class KpPaysafe : IDecretsDefinition
|
||||
Data = dok.DataPom,
|
||||
DataWplywu = dok.Data,
|
||||
Nr = dok.NrDok,
|
||||
Opis = dok.TekstZaCo(),
|
||||
Opis = dok.NrDok,
|
||||
StronaKonta = d.AccountSide,
|
||||
KontoFk = d.Account,
|
||||
Kwota = Math.Abs(dok.Zaplacono).AsString()
|
||||
|
||||
@ -28,7 +28,7 @@ public class KpRachunki : IDecretsDefinition
|
||||
Data = dok.DataPom,
|
||||
DataWplywu = dok.Data,
|
||||
Nr = dok.NrDok,
|
||||
Opis = dok.TekstZaCo(),
|
||||
Opis = dok.NrDok,
|
||||
StronaKonta = d.AccountSide,
|
||||
KontoFk = d.Account,
|
||||
Kwota = Math.Abs(dok.Zaplacono).AsString()
|
||||
|
||||
@ -26,7 +26,7 @@ public class KwBony : IDecretsDefinition
|
||||
item.Data = dok.DataPom;
|
||||
item.DataWplywu = dok.Data;
|
||||
item.Nr = dok.NrDok;
|
||||
item.Opis = dok.TekstZaCo();
|
||||
item.Opis = dok.NrDok;
|
||||
item.StronaKonta = d.AccountSide;
|
||||
item.KontoFk = d.Account;
|
||||
item.Kwota = Math.Abs(dok.Zaplacono).AsString();
|
||||
|
||||
42
FKGees/DocsDefinitions/Decrets/KwCashback.cs
Normal file
42
FKGees/DocsDefinitions/Decrets/KwCashback.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
@ -26,7 +26,7 @@ public class KwInne : IDecretsDefinition
|
||||
item.Data = dok.DataPom;
|
||||
item.DataWplywu = dok.Data;
|
||||
item.Nr = dok.NrDok;
|
||||
item.Opis = dok.TekstZaCo();
|
||||
item.Opis = dok.NrDok;
|
||||
item.StronaKonta = d.AccountSide;
|
||||
item.KontoFk = d.Account;
|
||||
item.Kwota = Math.Abs(dok.Zaplacono).AsString();
|
||||
|
||||
@ -26,7 +26,7 @@ public class KwLotto : IDecretsDefinition
|
||||
item.Data = dok.DataPom;
|
||||
item.DataWplywu = dok.Data;
|
||||
item.Nr = dok.NrDok;
|
||||
item.Opis = dok.TekstZaCo();
|
||||
item.Opis = dok.NrDok;
|
||||
item.StronaKonta = d.AccountSide;
|
||||
item.KontoFk = d.Account;
|
||||
item.Kwota = Math.Abs(dok.Zaplacono).AsString();
|
||||
|
||||
@ -25,7 +25,7 @@ public class KwOpakowania : IDecretsDefinition
|
||||
item.Data = dok.DataPom;
|
||||
item.DataWplywu = dok.Data;
|
||||
item.Nr = dok.NrDok;
|
||||
item.Opis = dok.TekstZaCo();
|
||||
item.Opis = dok.NrDok;
|
||||
item.StronaKonta = d.AccountSide;
|
||||
item.KontoFk = d.Account;
|
||||
item.Kwota = Math.Abs(dok.Zaplacono).AsString();
|
||||
|
||||
@ -2,11 +2,11 @@
|
||||
|
||||
public class KwPolcard : IDecretsDefinition
|
||||
{
|
||||
public int DocType => 51;
|
||||
public int DocType => 53;
|
||||
public string Type => nameof(KwPolcard);
|
||||
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]")
|
||||
];
|
||||
|
||||
@ -14,22 +14,24 @@ public class KwPolcard : IDecretsDefinition
|
||||
{
|
||||
var result = new List<DecretsResult>();
|
||||
|
||||
var toProcess = documents.Where(x => x.TypDok == DocType
|
||||
&& x.NrDok.StartsWith("KW")
|
||||
&& x.Tekst1() == Constants.KwTekstyDod[nameof(KwPolcard)]);
|
||||
var toProcess = documents
|
||||
.Where(x => x.TypDok == DocType && x.Kwota8 != 0)
|
||||
.GroupBy(x => x.Data);
|
||||
|
||||
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 = dok.TekstZaCo();
|
||||
item.StronaKonta = d.AccountSide;
|
||||
item.KontoFk = d.Account;
|
||||
item.Kwota = Math.Abs(dok.Zaplacono).AsString();
|
||||
var item = new DecretsResult
|
||||
{
|
||||
Data = dok.Key,
|
||||
DataWplywu = dok.Key,
|
||||
Nr = string.Join(", ",dok.Select(z => z.NrDok)),
|
||||
Opis = "POLCARD",
|
||||
StronaKonta = d.AccountSide,
|
||||
KontoFk = d.Account,
|
||||
Kwota = dok.Sum(x => x.Kwota8).AsString()
|
||||
};
|
||||
|
||||
result.Add(item);
|
||||
});
|
||||
|
||||
@ -26,7 +26,7 @@ public class KwPomylkaKasjera : IDecretsDefinition
|
||||
item.Data = dok.DataPom;
|
||||
item.DataWplywu = dok.Data;
|
||||
item.Nr = dok.NrDok;
|
||||
item.Opis = dok.TekstZaCo();
|
||||
item.Opis = dok.NrDok;
|
||||
item.StronaKonta = d.AccountSide;
|
||||
item.KontoFk = d.Account;
|
||||
item.Kwota = Math.Abs(dok.Zaplacono).AsString();
|
||||
|
||||
@ -26,7 +26,7 @@ public class KwUtarg : IDecretsDefinition
|
||||
item.Data = dok.DataPom;
|
||||
item.DataWplywu = dok.Data;
|
||||
item.Nr = dok.NrDok;
|
||||
item.Opis = dok.TekstZaCo();
|
||||
item.Opis = dok.NrDok;
|
||||
item.StronaKonta = d.AccountSide;
|
||||
item.KontoFk = d.Account;
|
||||
item.Kwota = Math.Abs(dok.Zaplacono).AsString();
|
||||
|
||||
@ -26,7 +26,7 @@ public class MmMinus : IDecretsDefinition
|
||||
item.Data = dok.DataPom;
|
||||
item.DataWplywu = dok.Data;
|
||||
item.Nr = dok.NrDok;
|
||||
item.Opis = dok.TekstZaCo();
|
||||
item.Opis = $"{dok.NrDok} / PRZERZUT NA {item.k_Skrot}";
|
||||
item.StronaKonta = d.AccountSide;
|
||||
item.KontoFk = d.Account;
|
||||
item.Kwota = ProcessValue(dok, d.Expression).AsString();
|
||||
|
||||
@ -26,7 +26,7 @@ public class MmPlus : IDecretsDefinition
|
||||
item.Data = dok.DataPom;
|
||||
item.DataWplywu = dok.Data;
|
||||
item.Nr = dok.NrDok;
|
||||
item.Opis = dok.TekstZaCo();
|
||||
item.Opis = $"{dok.NrDok} / PRZERZUT Z {item.k_Skrot}";
|
||||
item.StronaKonta = d.AccountSide;
|
||||
item.KontoFk = d.Account;
|
||||
item.Kwota = ProcessValue(dok, d.Expression).AsString();
|
||||
|
||||
38
FKGees/DocsDefinitions/Decrets/ObrotOpakowaniami.cs
Normal file
38
FKGees/DocsDefinitions/Decrets/ObrotOpakowaniami.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
@ -26,7 +26,7 @@ public class Przecena : IDecretsDefinition
|
||||
item.Data = dok.DataPom;
|
||||
item.DataWplywu = dok.Data;
|
||||
item.Nr = dok.NrDok;
|
||||
item.Opis = dok.TekstZaCo();
|
||||
item.Opis = dok.NrDok;
|
||||
item.StronaKonta = d.AccountSide;
|
||||
item.KontoFk = d.Account;
|
||||
item.Kwota = Processvalue(dok, d.Expression).AsString();
|
||||
@ -40,17 +40,12 @@ public class Przecena : IDecretsDefinition
|
||||
|
||||
private decimal Processvalue(Dok doc, string expression)
|
||||
{
|
||||
switch(expression)
|
||||
return expression switch
|
||||
{
|
||||
case "[snr]-[znr]":
|
||||
return doc.Netto - doc.NettoDet;
|
||||
case "[sbr]-[snr]":
|
||||
return doc.Podatek - doc.PodatekDet;
|
||||
case "[sbr]":
|
||||
return doc.Razem;
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
"[snr]-[znr]" => doc.Netto - doc.NettoDet,
|
||||
"[sbr]-[snr]" => doc.Podatek - doc.PodatekDet,
|
||||
"[sbr]" => doc.Razem,
|
||||
_ => 0
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -13,7 +13,8 @@ public class RapFisk : IDecretsDefinition
|
||||
new Definition("343-0-24", "WN", "[svr]"),
|
||||
new Definition("737-0-24", "MA", "[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)
|
||||
|
||||
70
FKGees/DocsDefinitions/Decrets/Rozb.cs
Normal file
70
FKGees/DocsDefinitions/Decrets/Rozb.cs
Normal 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
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -1,9 +1,9 @@
|
||||
namespace FKGees.DocsDefinitions.Decrets;
|
||||
|
||||
public class KpKasy : IDecretsDefinition
|
||||
public class Utarg : IDecretsDefinition
|
||||
{
|
||||
public int DocType => 51;
|
||||
public string Type => nameof(KpKasy);
|
||||
public int DocType => 53;
|
||||
public string Type => nameof(Utarg);
|
||||
public List<Definition> Definitions { get; } =
|
||||
[
|
||||
new Definition("100-1-24", "WN", "[sbr]"),
|
||||
@ -15,9 +15,8 @@ public class KpKasy : IDecretsDefinition
|
||||
var result = new List<DecretsResult>();
|
||||
|
||||
var toProcess = documents
|
||||
.Where(x => x.TypDok == DocType
|
||||
&& x.NrDok.StartsWith("KP")
|
||||
&& x.Tekst1() == Constants.KpTekstyDod[nameof(KpKasy)]);
|
||||
.Where(x => x.TypDok == DocType && x.Kwota1 != 0)
|
||||
.GroupBy(x => x.Data);
|
||||
|
||||
foreach (var dok in toProcess)
|
||||
{
|
||||
@ -25,13 +24,13 @@ public class KpKasy : IDecretsDefinition
|
||||
{
|
||||
var item = new DecretsResult
|
||||
{
|
||||
Data = dok.DataPom,
|
||||
DataWplywu = dok.Data,
|
||||
Nr = dok.NrDok,
|
||||
Opis = dok.TekstZaCo(),
|
||||
Data = dok.Key,
|
||||
DataWplywu = dok.Key,
|
||||
Nr = string.Join(", ",dok.Select(z => z.NrDok)),
|
||||
Opis = "UTARG Z KAS",
|
||||
StronaKonta = d.AccountSide,
|
||||
KontoFk = d.Account,
|
||||
Kwota = Math.Abs(dok.Zaplacono).AsString()
|
||||
Kwota = dok.Sum(x => x.Razem - x.Kwota1 + x.Kwota2).AsString()
|
||||
};
|
||||
|
||||
result.Add(item);
|
||||
69
FKGees/DocsDefinitions/Decrets/Zwroty.cs
Normal file
69
FKGees/DocsDefinitions/Decrets/Zwroty.cs
Normal 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
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -7,13 +7,14 @@ internal static class ServiceCollectionExtensions
|
||||
{
|
||||
internal static IServiceCollection AddDecretsDefinitions(this IServiceCollection services)
|
||||
{
|
||||
services.AddSingleton<IDecretsDefinition, RapFisk>();
|
||||
services.AddSingleton<IDecretsDefinition, ObrotOpakowaniami>();
|
||||
services.AddSingleton<IDecretsDefinition, Przecena>();
|
||||
services.AddSingleton<IDecretsDefinition, MmPlus>();
|
||||
services.AddSingleton<IDecretsDefinition, MmMinus>();
|
||||
services.AddSingleton<IDecretsDefinition, Pz>();
|
||||
services.AddSingleton<IDecretsDefinition, Wz>();
|
||||
services.AddSingleton<IDecretsDefinition, PzFaktura>();
|
||||
services.AddSingleton<IDecretsDefinition, RapFisk>();
|
||||
services.AddSingleton<IDecretsDefinition, KorDetal>();
|
||||
services.AddSingleton<IDecretsDefinition, FaktSprz>();
|
||||
services.AddSingleton<IDecretsDefinition, KwBony>();
|
||||
@ -24,13 +25,18 @@ internal static class ServiceCollectionExtensions
|
||||
services.AddSingleton<IDecretsDefinition, KwPomylkaKasjera>();
|
||||
services.AddSingleton<IDecretsDefinition, KwUtarg>();
|
||||
services.AddSingleton<IDecretsDefinition, KpInne>();
|
||||
services.AddSingleton<IDecretsDefinition, KpKasy>();
|
||||
services.AddSingleton<IDecretsDefinition, Utarg>();
|
||||
services.AddSingleton<IDecretsDefinition, KpKaucjaZaOpakowania>();
|
||||
services.AddSingleton<IDecretsDefinition, KpKaucjaZDokUtargu>();
|
||||
services.AddSingleton<IDecretsDefinition, KwKaucjaZDokUtargu>();
|
||||
services.AddSingleton<IDecretsDefinition, KpLotto>();
|
||||
services.AddSingleton<IDecretsDefinition, KpPaysafe>();
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@ -8,16 +8,16 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CsvHelper" Version="32.0.3" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.6">
|
||||
<PackageReference Include="CsvHelper" Version="33.0.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.8">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</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.Hosting" Version="8.0.0"/>
|
||||
<PackageReference Include="NLog" Version="5.3.2"/>
|
||||
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.11"/>
|
||||
<PackageReference Include="NLog" Version="5.3.4" />
|
||||
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.13" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@ -25,11 +25,11 @@ internal class CsvService
|
||||
Mode = CsvMode.RFC4180,
|
||||
ShouldQuote = quoteArgs => quoteArgs.Field != nameof(DecretsResult.Data)
|
||||
&& quoteArgs.Field != nameof(DecretsResult.DataWplywu)
|
||||
&& !DateTime.TryParseExact(quoteArgs.Field, Constants.DefaultdateFormat, CultureInfo.InvariantCulture,
|
||||
&& !DateTime.TryParseExact(quoteArgs.Field, Constants.DefaultDateFormat, CultureInfo.InvariantCulture,
|
||||
DateTimeStyles.None, out _)
|
||||
};
|
||||
await using var csv = new CsvWriter(writer, conf);
|
||||
var options = new TypeConverterOptions { Formats = [Constants.DefaultdateFormat], NullValues = { string.Empty }};
|
||||
var options = new TypeConverterOptions { Formats = [Constants.DefaultDateFormat], NullValues = { string.Empty }};
|
||||
csv.Context.TypeConverterOptionsCache.AddOptions<DateTime>(options);
|
||||
csv.Context.TypeConverterOptionsCache.AddOptions<DateTime?>(options);
|
||||
|
||||
|
||||
@ -26,7 +26,9 @@ public class PcmService
|
||||
.ThenInclude(x => x.Dok)
|
||||
.Include(x => x.DokKasa)
|
||||
.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();
|
||||
return documents;
|
||||
}
|
||||
@ -41,7 +43,9 @@ public class PcmService
|
||||
.ThenInclude(x => x.Kontr)
|
||||
.Include(x => x.TekstDok)
|
||||
.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();
|
||||
return documents;
|
||||
}
|
||||
@ -58,16 +62,53 @@ public class PcmService
|
||||
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()
|
||||
{
|
||||
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
||||
context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
|
||||
var fplat = await context.FormaPlatnosci.Where(x => x.FormaPlat > 4).ToListAsync();
|
||||
fplat.Add(new FormaPlatnosci{ FormaPlat = 0, Tekst = "Gotówka"});
|
||||
fplat.Add(new FormaPlatnosci{ FormaPlat = 1, Tekst = "Przelew"});
|
||||
fplat.Add(new FormaPlatnosci{ FormaPlat = 2, Tekst = "Czek potwierdzony"});
|
||||
fplat.Add(new FormaPlatnosci{ FormaPlat = 3, Tekst = "Karta płatnicza"});
|
||||
fplat.Add(new FormaPlatnosci{ FormaPlat = 4, Tekst = "Inna"});
|
||||
var fplat = await context.FormaPlatnosci.Where(x => x.FormaPlat > 4)
|
||||
.ToListAsync();
|
||||
fplat.Add(new FormaPlatnosci {FormaPlat = 0, Tekst = "Gotówka"});
|
||||
fplat.Add(new FormaPlatnosci {FormaPlat = 1, Tekst = "Przelew"});
|
||||
fplat.Add(new FormaPlatnosci {FormaPlat = 2, Tekst = "Czek potwierdzony"});
|
||||
fplat.Add(new FormaPlatnosci {FormaPlat = 3, Tekst = "Karta płatnicza"});
|
||||
fplat.Add(new FormaPlatnosci {FormaPlat = 4, Tekst = "Inna"});
|
||||
return fplat;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user