Rework wine origin migration
This commit is contained in:
@ -329,7 +329,7 @@ CREATE TABLE member (
|
||||
ON DELETE RESTRICT,
|
||||
CONSTRAINT fk_member_wb_kg FOREIGN KEY (default_kgnr) REFERENCES wb_kg (kgnr)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT,
|
||||
ON DELETE SET NULL,
|
||||
CONSTRAINT fk_member_branch FOREIGN KEY (zwstid) REFERENCES branch (zwstid)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT
|
||||
@ -536,10 +536,10 @@ CREATE TABLE delivery_part (
|
||||
ON DELETE RESTRICT,
|
||||
CONSTRAINT fk_delivery_part_wb_kg FOREIGN KEY (kgnr) REFERENCES wb_kg (kgnr)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT,
|
||||
ON DELETE SET NULL,
|
||||
CONSTRAINT fk_delivery_part_wb_rd FOREIGN KEY (kgnr, rdnr) REFERENCES wb_rd (kgnr, rdnr)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT
|
||||
ON DELETE SET NULL
|
||||
) STRICT;
|
||||
|
||||
CREATE TRIGGER t_delivery_part_i
|
||||
|
@ -22,7 +22,7 @@ CREATE VIEW v_delivery AS
|
||||
SELECT p.year, p.did, p.dpnr,
|
||||
d.date, d.time, d.zwstid, d.lnr, d.lsnr,
|
||||
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.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,
|
||||
GROUP_CONCAT(DISTINCT a.attrid) as attributes, GROUP_CONCAT(DISTINCT o.modid) as modifiers,
|
||||
d.comment, p.comment as part_comment
|
||||
FROM delivery_part p
|
||||
|
@ -15,8 +15,6 @@ import utils
|
||||
|
||||
DB_CNX: Optional[sqlite3.Connection] = None
|
||||
QUIET: bool = False
|
||||
|
||||
HKID: Optional[str] = None
|
||||
WG: Optional[str] = None
|
||||
|
||||
USTID_RE = re.compile(r'[A-Z]{2}[A-Z0-9]{2,12}')
|
||||
@ -223,7 +221,7 @@ def lookup_kgnr(okz: Optional[int]) -> Optional[int]:
|
||||
return None
|
||||
|
||||
cur = DB_CNX.cursor()
|
||||
cur.execute("SELECT k.kgnr FROM AT_ort o JOIN wb_kg k ON k.kgnr = o.kgnr WHERE okz = ?", (okz,))
|
||||
cur.execute("SELECT kgnr FROM AT_ort WHERE okz = ?", (okz,))
|
||||
rows: List[Tuple[int]] = cur.fetchall()
|
||||
cur.close()
|
||||
|
||||
@ -265,6 +263,27 @@ def lookup_kg_name(kgnr: int) -> str:
|
||||
return rows[0][0]
|
||||
|
||||
|
||||
def lookup_hkid(kgnr: Optional[int], qualid: str) -> str:
|
||||
if qualid in ('WEI', 'RSW'):
|
||||
return 'OEST'
|
||||
elif kgnr is None:
|
||||
if WG in ('MATZEN', 'GWK'):
|
||||
hkid = 'WLWV'
|
||||
else:
|
||||
cur = DB_CNX.cursor()
|
||||
cur.execute("SELECT wb.hkid FROM AT_kg kg JOIN AT_gem g ON g.gkz = kg.gkz JOIN wb_gem wb ON wb.gkz = g.gkz "
|
||||
"WHERE kg.kgnr = ?", (kgnr,))
|
||||
rows = cur.fetchall()
|
||||
cur.close()
|
||||
hkid = rows[0][0]
|
||||
if qualid == 'LDW':
|
||||
if hkid == 'WIEN':
|
||||
hkid = 'WLXX'
|
||||
elif hkid[:2] in ('WL', 'BL', 'SL'):
|
||||
hkid = hkid[:2] + 'XX'
|
||||
return hkid
|
||||
|
||||
|
||||
def migrate_gradation(in_dir: str, out_dir: str) -> None:
|
||||
global GRADATION_MAP
|
||||
GRADATION_MAP = {}
|
||||
@ -556,7 +575,6 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||
active = m['Aktives Mitglied'] or False
|
||||
if kgnr is None:
|
||||
invalid(mgnr, 'KGNr.', ort)
|
||||
active = False
|
||||
elif kgnr not in [kg[0] for gem in GEM_MAP.values() for kg in gem]:
|
||||
glnr = list(GROSSLAGE_MAP.values())[0]
|
||||
print(f'New KG: {lookup_kg_name(kgnr)} ({kgnr}, GL {glnr})')
|
||||
@ -891,14 +909,14 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
||||
if d['SNR'] != sortid:
|
||||
print(f'{d["SNR"]}/{d["SANR"]} -> {sortid}/{attributes}')
|
||||
|
||||
qualid = QUAL_MAP[d['QSNR']]
|
||||
kgnr, rdnr = None, None
|
||||
if d['GNR']:
|
||||
gem = GEM_MAP[d['GNR']]
|
||||
if len(gem) == 1:
|
||||
kgnr = gem[0][0]
|
||||
if d['RNR']:
|
||||
rd = REED_MAP[d['RNR']]
|
||||
# TODO reed nr
|
||||
kgnr, rdnr = REED_MAP[d['RNR']]
|
||||
if kgnr is None:
|
||||
m = MEMBER_MAP[d['MGNR']]
|
||||
kgnr = m['default_kgnr']
|
||||
@ -908,6 +926,8 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
||||
warning_delivery(lsnr, d['MGNR'], 'KGNr.', kgnr)
|
||||
kgnr = None
|
||||
|
||||
hkid = lookup_hkid(kgnr, qualid)
|
||||
|
||||
waage = d['Waagentext']
|
||||
scale_id, weighing_id = None, None
|
||||
if waage:
|
||||
@ -933,7 +953,7 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
||||
comments.append(comment)
|
||||
|
||||
f_part.row(
|
||||
date.year, snr, dpnr, sortid, int(d['Gewicht']), kmw, QUAL_MAP[d['QSNR']], HKID, kgnr, rdnr,
|
||||
date.year, snr, dpnr, sortid, int(d['Gewicht']), kmw, qualid, hkid, kgnr, rdnr,
|
||||
d['Gerebelt'] or False, d['Handwiegung'] or False, d['Spaetlese-Ueberpruefung'] or False,
|
||||
hand, lesemaschine, d['Temperatur'], acid, scale_id, weighing_id, comment
|
||||
)
|
||||
@ -1001,7 +1021,7 @@ def migrate_parameters(in_dir: str, out_dir: str) -> None:
|
||||
|
||||
|
||||
def main() -> None:
|
||||
global DB_CNX, QUIET, HKID, WG
|
||||
global DB_CNX, QUIET, WG
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('in_dir', type=str,
|
||||
@ -1013,16 +1033,12 @@ def main() -> None:
|
||||
parser.add_argument('-d', '--database', metavar='DB', required=True,
|
||||
help='The sqlite database file to look up information')
|
||||
parser.add_argument('-g', '--genossenschaft', metavar='WG', required=False, type=str,
|
||||
choices=('MATZEN', 'WOLKERSDORF'))
|
||||
parser.add_argument('-o', '--origin', metavar='HKID', required=True,
|
||||
help='The default wine origin identifier '
|
||||
'(consider that the origin is ALWAYS set according to the KGNr if available)')
|
||||
choices=('MATZEN', 'GWK'))
|
||||
args = parser.parse_args()
|
||||
|
||||
os.makedirs(args.out_dir, exist_ok=True)
|
||||
|
||||
QUIET = args.quiet
|
||||
HKID = args.origin
|
||||
WG = args.genossenschaft
|
||||
|
||||
DB_CNX = sqlite3.connect(args.database)
|
||||
|
Reference in New Issue
Block a user