[#17] CreditNote: Overhaul CreditNote

This commit is contained in:
2023-12-22 15:30:39 +01:00
parent 82f93746ab
commit b9a2893d80
10 changed files with 226 additions and 79 deletions

View File

@ -11,6 +11,12 @@ namespace Elwig.Helpers.Billing {
AvNr = avnr;
}
public async Task Calculate() {
await DeleteInDb();
await CalculatePrices();
await CalculateModifiers();
}
protected async Task DeleteInDb() {
using var cnx = await AppDbContext.ConnectAsync();
using (var cmd = cnx.CreateCommand()) {
@ -27,8 +33,7 @@ namespace Elwig.Helpers.Billing {
}
}
public async Task CalculatePrices() {
await DeleteInDb();
protected async Task CalculatePrices() {
using var cnx = await AppDbContext.ConnectAsync();
var parts = new List<(int Year, int DId, int DPNr, int BktNr, string SortId, string Discr, int Value, bool MinQuw, double Oe, double Kmw)>();
@ -65,5 +70,20 @@ namespace Elwig.Helpers.Billing {
await cmd.ExecuteNonQueryAsync();
}
}
protected async Task CalculateModifiers() {
using var cnx = await AppDbContext.ConnectAsync();
using var cmd = cnx.CreateCommand();
cmd.CommandText = $"""
INSERT INTO payment_delivery_part (year, did, dpnr, avnr, net_amount, mod_abs, mod_rel)
SELECT d.year, d.did, d.dpnr, {AvNr}, 0, COALESCE(m.abs, 0), COALESCE(m.rel, 0)
FROM delivery_part d
LEFT JOIN delivery_part_modifier p ON (p.year, p.did, p.dpnr) = (d.year, d.did, d.dpnr)
LEFT JOIN modifier m ON m.modid = p.modid
WHERE d.year = {Year}
ON CONFLICT DO UPDATE SET mod_abs = mod_abs + excluded.mod_abs, mod_rel = mod_rel + excluded.mod_rel;
""";
await cmd.ExecuteNonQueryAsync();
}
}
}