[#34] Billing: Fix price calculation for attributes without area commitment use
This commit is contained in:
@ -123,12 +123,13 @@ namespace Elwig.Helpers.Billing {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected async Task CalculatePrices(SqliteConnection cnx) {
|
protected async Task CalculatePrices(SqliteConnection cnx) {
|
||||||
var parts = new List<(int Year, int DId, int DPNr, int BktNr, string SortId, string? AttrId, string? CultId, string Discr, int Value, double Oe, double Kmw, string QualId)>();
|
var parts = new List<(int Year, int DId, int DPNr, int BktNr, string SortId, string? AttrId, string? CultId, string Discr, int Value, double Oe, double Kmw, string QualId, bool AttrAreaCom)>();
|
||||||
using (var cmd = cnx.CreateCommand()) {
|
using (var cmd = cnx.CreateCommand()) {
|
||||||
cmd.CommandText = $"""
|
cmd.CommandText = $"""
|
||||||
SELECT d.year, d.did, d.dpnr, b.bktnr, d.sortid, d.attrid, d.cultid, b.discr, b.value, d.oe, d.kmw, d.qualid
|
SELECT d.year, d.did, d.dpnr, b.bktnr, d.sortid, d.attrid, d.cultid, b.discr, b.value, d.oe, d.kmw, d.qualid, COALESCE(a.area_com, TRUE)
|
||||||
FROM delivery_part_bucket b
|
FROM delivery_part_bucket b
|
||||||
JOIN v_delivery d ON (d.year, d.did, d.dpnr) = (b.year, b.did, b.dpnr)
|
JOIN v_delivery d ON (d.year, d.did, d.dpnr) = (b.year, b.did, b.dpnr)
|
||||||
|
LEFT JOIN v_wine_attribute a ON a.attrid = d.attrid
|
||||||
WHERE b.year = {Year}
|
WHERE b.year = {Year}
|
||||||
""";
|
""";
|
||||||
using var reader = await cmd.ExecuteReaderAsync();
|
using var reader = await cmd.ExecuteReaderAsync();
|
||||||
@ -137,7 +138,8 @@ namespace Elwig.Helpers.Billing {
|
|||||||
reader.GetInt32(0), reader.GetInt32(1), reader.GetInt32(2), reader.GetInt32(3),
|
reader.GetInt32(0), reader.GetInt32(1), reader.GetInt32(2), reader.GetInt32(3),
|
||||||
reader.GetString(4), reader.IsDBNull(5) ? null : reader.GetString(5),
|
reader.GetString(4), reader.IsDBNull(5) ? null : reader.GetString(5),
|
||||||
reader.IsDBNull(6) ? null : reader.GetString(6), reader.GetString(7),
|
reader.IsDBNull(6) ? null : reader.GetString(6), reader.GetString(7),
|
||||||
reader.GetInt32(8), reader.GetDouble(9), reader.GetDouble(10), reader.GetString(11)
|
reader.GetInt32(8), reader.GetDouble(9), reader.GetDouble(10), reader.GetString(11),
|
||||||
|
reader.GetBoolean(12)
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -146,8 +148,8 @@ namespace Elwig.Helpers.Billing {
|
|||||||
foreach (var part in parts) {
|
foreach (var part in parts) {
|
||||||
var ungeb = part.Discr == "_";
|
var ungeb = part.Discr == "_";
|
||||||
var payAttrId = (part.Discr is "" or "_") ? null : part.Discr;
|
var payAttrId = (part.Discr is "" or "_") ? null : part.Discr;
|
||||||
var attrId = payAttrId; // FIXME
|
var attrId = part.AttrId;
|
||||||
var geb = !ungeb; // FIXME && payAttrId == part.AttrId;
|
var geb = !ungeb && (payAttrId == attrId || !part.AttrAreaCom);
|
||||||
var price = Data.CalculatePrice(part.SortId, attrId, part.CultId, part.QualId, geb, part.Oe, part.Kmw);
|
var price = Data.CalculatePrice(part.SortId, attrId, part.CultId, part.QualId, geb, part.Oe, part.Kmw);
|
||||||
var priceL = PaymentVariant.Season.DecToDb(price);
|
var priceL = PaymentVariant.Season.DecToDb(price);
|
||||||
inserts.Add((part.Year, part.DId, part.DPNr, part.BktNr, priceL, priceL * part.Value));
|
inserts.Add((part.Year, part.DId, part.DPNr, part.BktNr, priceL, priceL * part.Value));
|
||||||
|
Reference in New Issue
Block a user