diff --git a/Elwig/Helpers/Billing/BillingVariant.cs b/Elwig/Helpers/Billing/BillingVariant.cs index 3b20341..02f4581 100644 --- a/Elwig/Helpers/Billing/BillingVariant.cs +++ b/Elwig/Helpers/Billing/BillingVariant.cs @@ -123,12 +123,13 @@ namespace Elwig.Helpers.Billing { } 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()) { 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 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} """; 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.GetString(4), reader.IsDBNull(5) ? null : reader.GetString(5), 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) { var ungeb = part.Discr == "_"; var payAttrId = (part.Discr is "" or "_") ? null : part.Discr; - var attrId = payAttrId; // FIXME - var geb = !ungeb; // FIXME && payAttrId == part.AttrId; + var attrId = 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 priceL = PaymentVariant.Season.DecToDb(price); inserts.Add((part.Year, part.DId, part.DPNr, part.BktNr, priceL, priceL * part.Value));