database: add gebunden field to delivery_part
This commit is contained in:
@ -259,7 +259,7 @@ CREATE TABLE wine_attribute (
|
|||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
|
|
||||||
max_kg_per_ha INTEGER,
|
max_kg_per_ha INTEGER,
|
||||||
fill_lower_bins INTEGER NOT NULL CHECK (fill_lower_bins IN (TRUE, FALSE)) DEFAULT FALSE,
|
fill_lower_bins INTEGER NOT NULL CHECK (fill_lower_bins IN (0, 1, 2)) DEFAULT 0,
|
||||||
active INTEGER NOT NULL CHECK (active IN (TRUE, FALSE)) DEFAULT TRUE,
|
active INTEGER NOT NULL CHECK (active IN (TRUE, FALSE)) DEFAULT TRUE,
|
||||||
|
|
||||||
CONSTRAINT pk_wine_attribute PRIMARY KEY (attrid)
|
CONSTRAINT pk_wine_attribute PRIMARY KEY (attrid)
|
||||||
@ -539,6 +539,7 @@ CREATE TABLE delivery_part (
|
|||||||
|
|
||||||
hand_picked INTEGER CHECK (hand_picked IN (TRUE, FALSE)) DEFAULT NULL,
|
hand_picked INTEGER CHECK (hand_picked IN (TRUE, FALSE)) DEFAULT NULL,
|
||||||
lesewagen INTEGER CHECK (lesewagen IN (TRUE, FALSE)) DEFAULT NULL,
|
lesewagen INTEGER CHECK (lesewagen IN (TRUE, FALSE)) DEFAULT NULL,
|
||||||
|
gebunden INTEGER CHECK (gebunden IN (TRUE, FALSE)) DEFAULT NULL,
|
||||||
|
|
||||||
temperature REAL DEFAULT NULL,
|
temperature REAL DEFAULT NULL,
|
||||||
acid REAL DEFAULT NULL,
|
acid REAL DEFAULT NULL,
|
||||||
|
@ -19,21 +19,26 @@ GROUP BY c.fbnr
|
|||||||
ORDER BY c.fbnr;
|
ORDER BY c.fbnr;
|
||||||
|
|
||||||
CREATE VIEW v_delivery AS
|
CREATE VIEW v_delivery AS
|
||||||
SELECT p.year, p.did, p.dpnr,
|
SELECT s.*, GROUP_CONCAT(o.modid) AS modifiers
|
||||||
|
FROM (SELECT p.year, p.did, p.dpnr,
|
||||||
d.date, d.time, d.zwstid, d.lnr, d.lsnr,
|
d.date, d.time, d.zwstid, d.lnr, d.lsnr,
|
||||||
m.mgnr, m.family_name, m.given_name,
|
m.mgnr, m.family_name, m.given_name,
|
||||||
p.sortid, p.weight, p.kmw, ROUND(p.kmw * (4.54 + 0.022 * p.kmw), 0) AS oe, p.qualid, p.hkid, p.kgnr, p.rdnr,
|
p.sortid, p.weight, p.kmw, ROUND(p.kmw * (4.54 + 0.022 * p.kmw), 0) AS oe, p.qualid, p.hkid, p.kgnr, p.rdnr,
|
||||||
|
p.gerebelt, p.gebunden,
|
||||||
p.qualid IN (SELECT l.qualid FROM wine_quality_level l WHERE NOT l.predicate AND (p.kmw >= l.min_kmw OR l.min_kmw IS NULL) ORDER BY l.min_kmw DESC LIMIT 1,100) AS abgewertet,
|
p.qualid IN (SELECT l.qualid FROM wine_quality_level l WHERE NOT l.predicate AND (p.kmw >= l.min_kmw OR l.min_kmw IS NULL) ORDER BY l.min_kmw DESC LIMIT 1,100) AS abgewertet,
|
||||||
p.qualid NOT IN ('WEI', 'RSW', 'LDW') AS min_quw,
|
p.qualid NOT IN ('WEI', 'RSW', 'LDW') AS min_quw,
|
||||||
GROUP_CONCAT(DISTINCT a.attrid) as attributes, GROUP_CONCAT(DISTINCT o.modid) as modifiers,
|
GROUP_CONCAT(a.attrid) AS attributes,
|
||||||
d.comment, p.comment as part_comment
|
COALESCE(SUM(a.fill_lower_bins), 0) AS attribute_prio,
|
||||||
FROM delivery_part p
|
d.comment, p.comment AS part_comment
|
||||||
|
FROM delivery_part p
|
||||||
JOIN delivery d ON (d.year, d.did) = (p.year, p.did)
|
JOIN delivery d ON (d.year, d.did) = (p.year, p.did)
|
||||||
JOIN member m ON m.mgnr = d.mgnr
|
JOIN member m ON m.mgnr = d.mgnr
|
||||||
LEFT JOIN delivery_part_attribute a ON (a.year, a.did, a.dpnr) = (p.year, p.did, p.dpnr)
|
LEFT JOIN delivery_part_attribute pa ON (pa.year, pa.did, pa.dpnr) = (p.year, p.did, p.dpnr)
|
||||||
LEFT JOIN delivery_part_modifier o ON (o.year, o.did, o.dpnr) = (p.year, p.did, p.dpnr)
|
LEFT JOIN wine_attribute a ON a.attrid = pa.attrid
|
||||||
GROUP BY p.year, p.did, p.dpnr
|
GROUP BY p.year, p.did, p.dpnr) s
|
||||||
ORDER BY p.year, p.did, p.dpnr;
|
LEFT JOIN delivery_part_modifier o ON (o.year, o.did, o.dpnr) = (s.year, s.did, s.dpnr)
|
||||||
|
GROUP BY s.year, s.lsnr, s.dpnr
|
||||||
|
ORDER BY s.year, s.lsnr, s.dpnr;
|
||||||
|
|
||||||
CREATE VIEW v_delivery_bin AS
|
CREATE VIEW v_delivery_bin AS
|
||||||
SELECT year, mgnr,
|
SELECT year, mgnr,
|
||||||
|
@ -597,14 +597,14 @@ def migrate_reeds(in_dir: str, out_dir: str) -> None:
|
|||||||
|
|
||||||
def migrate_attributes(in_dir: str, out_dir: str) -> None:
|
def migrate_attributes(in_dir: str, out_dir: str) -> None:
|
||||||
with utils.csv_open(f'{out_dir}/wine_attribute.csv') as f:
|
with utils.csv_open(f'{out_dir}/wine_attribute.csv') as f:
|
||||||
f.header('attrid', 'name', 'max_kg_per_ha', 'active')
|
f.header('attrid', 'name', 'max_kg_per_ha', 'fill_lower_bins', 'active')
|
||||||
for a in utils.csv_parse_dict(f'{in_dir}/TSortenAttribute.csv'):
|
for a in utils.csv_parse_dict(f'{in_dir}/TSortenAttribute.csv'):
|
||||||
if a['SANR'] is None:
|
if a['SANR'] is None:
|
||||||
continue
|
continue
|
||||||
f.row(a['SANR'], a['Attribut'], int(a['KgProHa']) if a['KgProHa'] is not None else None, True)
|
f.row(a['SANR'], a['Attribut'], int(a['KgProHa']) if a['KgProHa'] is not None else None, 0, True)
|
||||||
if CLIENT == WG.MATZEN:
|
if CLIENT == WG.MATZEN:
|
||||||
f.row('M', 'Matzen', None, False)
|
f.row('M', 'Matzen', None, 0, False)
|
||||||
f.row('HU', 'Huber', None, False)
|
f.row('HU', 'Huber', None, 0, False)
|
||||||
|
|
||||||
|
|
||||||
def migrate_cultivations(in_dir: str, out_dir: str) -> None:
|
def migrate_cultivations(in_dir: str, out_dir: str) -> None:
|
||||||
@ -1356,7 +1356,7 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
utils.csv_open(f'{out_dir}/delivery_part_attribute.csv') as f_attr:
|
utils.csv_open(f'{out_dir}/delivery_part_attribute.csv') as f_attr:
|
||||||
f_delivery.header('year', 'did', 'date', 'time', 'zwstid', 'lnr', 'lsnr', 'mgnr', 'comment')
|
f_delivery.header('year', 'did', 'date', 'time', 'zwstid', 'lnr', 'lsnr', 'mgnr', 'comment')
|
||||||
f_part.header('year', 'did', 'dpnr', 'sortid', 'weight', 'kmw', 'qualid', 'hkid', 'kgnr', 'rdnr',
|
f_part.header('year', 'did', 'dpnr', 'sortid', 'weight', 'kmw', 'qualid', 'hkid', 'kgnr', 'rdnr',
|
||||||
'gerebelt', 'manual_weighing', 'spl_check', 'hand_picked', 'lesewagen',
|
'gerebelt', 'manual_weighing', 'spl_check', 'hand_picked', 'lesewagen', 'gebunden',
|
||||||
'temperature', 'acid', 'scale_id', 'weighing_id', 'weighing_reason', 'comment')
|
'temperature', 'acid', 'scale_id', 'weighing_id', 'weighing_reason', 'comment')
|
||||||
f_attr.header('year', 'did', 'dpnr', 'attrid')
|
f_attr.header('year', 'did', 'dpnr', 'attrid')
|
||||||
|
|
||||||
@ -1472,7 +1472,7 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
comment: Optional[str] = d['Anmerkung']
|
comment: Optional[str] = d['Anmerkung']
|
||||||
acid = d['Säure']
|
acid = d['Säure']
|
||||||
|
|
||||||
hand, lesemaschine = None, None
|
hand, lesewagen = None, None
|
||||||
if comment:
|
if comment:
|
||||||
comment = comment.replace('Söure', 'Säure')
|
comment = comment.replace('Söure', 'Säure')
|
||||||
if comment.startswith('Säure'):
|
if comment.startswith('Säure'):
|
||||||
@ -1489,10 +1489,11 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
if comment:
|
if comment:
|
||||||
comments.append(comment)
|
comments.append(comment)
|
||||||
gerebelt = True if CLIENT == WG.MATZEN or (CLIENT == WG.WINZERKELLER and zwstid == 'W') else d['Gerebelt'] or False
|
gerebelt = True if CLIENT == WG.MATZEN or (CLIENT == WG.WINZERKELLER and zwstid == 'W') else d['Gerebelt'] or False
|
||||||
|
gebunden = None if CLIENT in (WG.MATZEN, WG.WINZERKELLER) else d['Gebunden']
|
||||||
f_part.row(
|
f_part.row(
|
||||||
date.year, snr, dpnr, sortid, int(d['Gewicht']), kmw, qualid, hkid, kgnr, rdnr,
|
date.year, snr, dpnr, sortid, int(d['Gewicht']), kmw, qualid, hkid, kgnr, rdnr,
|
||||||
gerebelt, handwiegung, d['Spaetlese-Ueberpruefung'] or False,
|
gerebelt, handwiegung, d['Spaetlese-Ueberpruefung'] or False,
|
||||||
hand, lesemaschine, d['Temperatur'], acid, scale_id, weighing_id, None, comment
|
hand, lesewagen, gebunden, d['Temperatur'], acid, scale_id, weighing_id, None, comment
|
||||||
)
|
)
|
||||||
for attrid in attributes:
|
for attrid in attributes:
|
||||||
f_attr.row(date.year, snr, dpnr, attrid)
|
f_attr.row(date.year, snr, dpnr, attrid)
|
||||||
|
Reference in New Issue
Block a user