Update delivery import
This commit is contained in:
@ -45,9 +45,9 @@ def parse(filename: str) -> Iterator[Dict[str, Any]]:
|
|||||||
part = True
|
part = True
|
||||||
elif part == 'F':
|
elif part == 'F':
|
||||||
part = False
|
part = False
|
||||||
elif part.isdigit():
|
elif re.fullmatch(r'-?[0-9]+', part):
|
||||||
part = int(part)
|
part = int(part)
|
||||||
elif re.match(r'-?[0-9]+\.[0-9]+', part):
|
elif re.fullmatch(r'-?[0-9]+\.[0-9]+', part):
|
||||||
part = float(part)
|
part = float(part)
|
||||||
elif len(part) == 10 and part[4] == '-' and part[7] == '-':
|
elif len(part) == 10 and part[4] == '-' and part[7] == '-':
|
||||||
part = datetime.datetime.strptime(part, '%Y-%m-%d').date()
|
part = datetime.datetime.strptime(part, '%Y-%m-%d').date()
|
||||||
|
@ -542,7 +542,7 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
|||||||
kgnr = lookup_kgnr(okz)
|
kgnr = lookup_kgnr(okz)
|
||||||
active = m['Aktives Mitglied'] or False
|
active = m['Aktives Mitglied'] or False
|
||||||
if kgnr is None:
|
if kgnr is None:
|
||||||
invalid(mgnr, 'KgNr.', ort)
|
invalid(mgnr, 'KGNr.', ort)
|
||||||
active = False
|
active = False
|
||||||
|
|
||||||
if postal_dest is None:
|
if postal_dest is None:
|
||||||
@ -655,6 +655,7 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
delivery_map = {}
|
delivery_map = {}
|
||||||
seasons = {}
|
seasons = {}
|
||||||
comments: Dict[str, str] = {}
|
comments: Dict[str, str] = {}
|
||||||
|
deliveries = list(csv.parse(f'{in_dir}/TLieferungen.csv'))
|
||||||
|
|
||||||
with open(f'{out_dir}/delivery.csv', 'w+') as f_delivery, \
|
with open(f'{out_dir}/delivery.csv', 'w+') as f_delivery, \
|
||||||
open(f'{out_dir}/delivery_part.csv', 'w+') as f_part:
|
open(f'{out_dir}/delivery_part.csv', 'w+') as f_part:
|
||||||
@ -662,7 +663,7 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
f_part.write('year;did;dpnr;sortid;attrid;weight;kmw;qualid;hkid;kgnr;rdnr;gerebelt;manual_weighing;spl_check;'
|
f_part.write('year;did;dpnr;sortid;attrid;weight;kmw;qualid;hkid;kgnr;rdnr;gerebelt;manual_weighing;spl_check;'
|
||||||
'hand_picked;lesemaschine;temperature;acid;scale_id;weighing_id;comment\n')
|
'hand_picked;lesemaschine;temperature;acid;scale_id;weighing_id;comment\n')
|
||||||
|
|
||||||
for d in sorted(csv.parse(f'{in_dir}/TLieferungen.csv'), key=lambda l: f'{l["Datum"]}T{l["Uhrzeit"]}'):
|
for d in deliveries:
|
||||||
lsnr: str = d['Lieferscheinnummer']
|
lsnr: str = d['Lieferscheinnummer']
|
||||||
if d['Storniert'] or lsnr is None:
|
if d['Storniert'] or lsnr is None:
|
||||||
if lsnr is not None:
|
if lsnr is not None:
|
||||||
@ -684,7 +685,7 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
snr, dpnr = 1, 1
|
snr, dpnr = 1, 1
|
||||||
comment: Optional[str] = d['Anmerkung']
|
comment: Optional[str] = d['Anmerkung']
|
||||||
|
|
||||||
if lsnr.endswith('A'):
|
if lsnr[-1].isupper():
|
||||||
if lsnr[:-1] in comments:
|
if lsnr[:-1] in comments:
|
||||||
comment = comments[lsnr[:-1]]
|
comment = comments[lsnr[:-1]]
|
||||||
if lsnr[:-1] in delivery_map:
|
if lsnr[:-1] in delivery_map:
|
||||||
@ -693,7 +694,7 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
dpnr = 2
|
dpnr = 2
|
||||||
else:
|
else:
|
||||||
lsnr = lsnr[:-1]
|
lsnr = lsnr[:-1]
|
||||||
if not lsnr.endswith('A'):
|
if not lsnr[-1].isupper():
|
||||||
s['nr'] += 1
|
s['nr'] += 1
|
||||||
snr = s['nr']
|
snr = s['nr']
|
||||||
delivery_map[d['LINR']] = (date.year, snr)
|
delivery_map[d['LINR']] = (date.year, snr)
|
||||||
@ -722,14 +723,14 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
m = MEMBER_MAP[d['MGNR']]
|
m = MEMBER_MAP[d['MGNR']]
|
||||||
kgnr = m['default_kgnr']
|
kgnr = m['default_kgnr']
|
||||||
if kgnr is None:
|
if kgnr is None:
|
||||||
warning_delivery(lsnr, d['MGNR'], 'KgNr.', None)
|
warning_delivery(lsnr, d['MGNR'], 'KGNr.', None)
|
||||||
|
|
||||||
waage = d['Waagentext']
|
waage = d['Waagentext']
|
||||||
scale_id, weighing_id = None, None
|
scale_id, weighing_id = None, None
|
||||||
if waage:
|
if waage:
|
||||||
waage = re.split(r' +', waage)
|
waage = re.split(r' +', waage)
|
||||||
scale_id = int(waage[1])
|
scale_id = waage[1]
|
||||||
weighing_id = int(waage[3])
|
weighing_id = waage[3]
|
||||||
|
|
||||||
acid = d['Säure']
|
acid = d['Säure']
|
||||||
hand, lesemaschine = None, None
|
hand, lesemaschine = None, None
|
||||||
@ -765,8 +766,9 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
for y, s in seasons.items():
|
for y, s in seasons.items():
|
||||||
f_season.write(csv.format_row(y, s['currency'], s['precision'], s['start'], s['end']))
|
f_season.write(csv.format_row(y, s['currency'], s['precision'], s['start'], s['end']))
|
||||||
for m in modifiers.values():
|
for m in modifiers.values():
|
||||||
|
abs_v = int(m['AZAS'] * pow(10, s['precision'])) if m['AZAS'] is not None else None
|
||||||
f_mod.write(csv.format_row(
|
f_mod.write(csv.format_row(
|
||||||
y, m['ASNR'], m['Bezeichnung'], m['AZAS'], m['AZASProzent'], m['Standard'], m['Schnellauswahl']
|
y, m['ASNR'], m['Bezeichnung'], abs_v, m['AZASProzent'], m['Standard'], m['Schnellauswahl']
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
||||||
@ -785,7 +787,8 @@ if __name__ == '__main__':
|
|||||||
parser.add_argument('-d', '--database', metavar='DB', required=True,
|
parser.add_argument('-d', '--database', metavar='DB', required=True,
|
||||||
help='The sqlite database file to look up information')
|
help='The sqlite database file to look up information')
|
||||||
parser.add_argument('-o', '--origin', metavar='HKID', required=True,
|
parser.add_argument('-o', '--origin', metavar='HKID', required=True,
|
||||||
help='The default wine origin identifier')
|
help='The default wine origin identifier '
|
||||||
|
'(consider that the origin is ALWAYS set according to the KGNr if available)')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
os.makedirs(args.out_dir, exist_ok=True)
|
os.makedirs(args.out_dir, exist_ok=True)
|
||||||
|
Reference in New Issue
Block a user