Add ctime/mtime to payment_variant
This commit is contained in:
@ -612,6 +612,7 @@ CREATE TABLE payment_variant (
|
|||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
date TEXT NOT NULL CHECK (date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$') DEFAULT CURRENT_DATE,
|
date TEXT NOT NULL CHECK (date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$') DEFAULT CURRENT_DATE,
|
||||||
test_variant INTEGER NOT NULL CHECK (test_variant IN (TRUE, FALSE)),
|
test_variant INTEGER NOT NULL CHECK (test_variant IN (TRUE, FALSE)),
|
||||||
|
calc_time INTEGER,
|
||||||
|
|
||||||
bucket_1_name TEXT DEFAULT NULL,
|
bucket_1_name TEXT DEFAULT NULL,
|
||||||
bucket_2_name TEXT DEFAULT NULL,
|
bucket_2_name TEXT DEFAULT NULL,
|
||||||
@ -625,6 +626,8 @@ CREATE TABLE payment_variant (
|
|||||||
|
|
||||||
comment TEXT DEFAULT NULL,
|
comment TEXT DEFAULT NULL,
|
||||||
data TEXT NOT NULL,
|
data TEXT NOT NULL,
|
||||||
|
ctime INTEGER NOT NULL DEFAULT (UNIXEPOCH()),
|
||||||
|
mtime INTEGER NOT NULL DEFAULT (UNIXEPOCH()),
|
||||||
|
|
||||||
CONSTRAINT pk_payment PRIMARY KEY (year, avnr)
|
CONSTRAINT pk_payment PRIMARY KEY (year, avnr)
|
||||||
) STRICT;
|
) STRICT;
|
||||||
|
@ -234,3 +234,73 @@ CREATE TRIGGER t_delivery_part_modifier_d_mtime_delivery_part
|
|||||||
BEGIN
|
BEGIN
|
||||||
UPDATE delivery_part SET mtime = UNIXEPOCH() WHERE (year, did, dpnr) = (OLD.year, OLD.did, OLD.dpnr);
|
UPDATE delivery_part SET mtime = UNIXEPOCH() WHERE (year, did, dpnr) = (OLD.year, OLD.did, OLD.dpnr);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE TRIGGER t_payment_variant_i_ctime
|
||||||
|
AFTER INSERT ON payment_variant FOR EACH ROW
|
||||||
|
WHEN NEW.ctime != UNIXEPOCH()
|
||||||
|
BEGIN
|
||||||
|
UPDATE payment_variant SET ctime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr);
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TRIGGER t_payment_variant_u_ctime
|
||||||
|
BEFORE UPDATE ON payment_variant FOR EACH ROW
|
||||||
|
WHEN OLD.ctime != NEW.ctime
|
||||||
|
BEGIN
|
||||||
|
SELECT RAISE(ABORT, 'It is not allowed to change ctime');
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TRIGGER t_payment_variant_i_mtime
|
||||||
|
AFTER INSERT ON payment_variant FOR EACH ROW
|
||||||
|
WHEN NEW.mtime != UNIXEPOCH()
|
||||||
|
BEGIN
|
||||||
|
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr);
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TRIGGER t_payment_variant_u_mtime
|
||||||
|
AFTER UPDATE ON payment_variant FOR EACH ROW
|
||||||
|
WHEN NEW.mtime != UNIXEPOCH()
|
||||||
|
BEGIN
|
||||||
|
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr);
|
||||||
|
END;
|
||||||
|
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE TRIGGER t_payment_delivery_i_mtime_payment_variant
|
||||||
|
AFTER INSERT ON payment_delivery FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr);
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TRIGGER t_payment_delivery_u_mtime_payment_variant
|
||||||
|
AFTER UPDATE ON payment_delivery FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (OLD.year, OLD.avnr) OR (year, avnr) = (NEW.year, NEW.avnr);
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TRIGGER t_payment_delivery_d_mtime_payment_variant
|
||||||
|
AFTER DELETE ON payment_delivery FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (OLD.year, OLD.avnr);
|
||||||
|
END;
|
||||||
|
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE TRIGGER t_payment_member_i_mtime_payment_variant
|
||||||
|
AFTER INSERT ON payment_member FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr);
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TRIGGER t_payment_member_u_mtime_payment_variant
|
||||||
|
AFTER UPDATE ON payment_member FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (OLD.year, OLD.avnr) OR (year, avnr) = (NEW.year, NEW.avnr);
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TRIGGER t_payment_member_d_mtime_payment_variant
|
||||||
|
AFTER DELETE ON payment_member FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (OLD.year, OLD.avnr);
|
||||||
|
END;
|
@ -1413,7 +1413,7 @@ def migrate_payments(in_dir: str, out_dir: str) -> None:
|
|||||||
qual_map = {i: [s for s in p_qual if s['AZNR'] == i] for i in set([s['AZNR'] for s in p_qual])}
|
qual_map = {i: [s for s in p_qual if s['AZNR'] == i] for i in set([s['AZNR'] for s in p_qual])}
|
||||||
|
|
||||||
with utils.csv_open(f'{out_dir}/payment_variant.csv') as f_payment:
|
with utils.csv_open(f'{out_dir}/payment_variant.csv') as f_payment:
|
||||||
f_payment.header('year', 'avnr', 'name', 'date', 'test_variant',
|
f_payment.header('year', 'avnr', 'name', 'date', 'test_variant', 'calc_time',
|
||||||
'bucket_1_name', 'bucket_2_name', 'bucket_3_name', 'comment', 'data')
|
'bucket_1_name', 'bucket_2_name', 'bucket_3_name', 'comment', 'data')
|
||||||
for p in utils.csv_parse_dict(f'{in_dir}/TAuszahlung.csv'):
|
for p in utils.csv_parse_dict(f'{in_dir}/TAuszahlung.csv'):
|
||||||
year = p['Lesejahr']
|
year = p['Lesejahr']
|
||||||
@ -1486,7 +1486,7 @@ def migrate_payments(in_dir: str, out_dir: str) -> None:
|
|||||||
if year not in variant_year_map:
|
if year not in variant_year_map:
|
||||||
variant_year_map[year] = []
|
variant_year_map[year] = []
|
||||||
variant_year_map[year].append((p['AZNR'], year_map[year], p['TeilzahlungNr']))
|
variant_year_map[year].append((p['AZNR'], year_map[year], p['TeilzahlungNr']))
|
||||||
f_payment.row(year, year_map[year], p['Titel'], p['Datum'], test,
|
f_payment.row(year, year_map[year], p['Titel'], p['Datum'], test, None,
|
||||||
'Gebunden', 'Nicht gebunden', 'Abgewertet', p['Beschreibung'], json.dumps(data))
|
'Gebunden', 'Nicht gebunden', 'Abgewertet', p['Beschreibung'], json.dumps(data))
|
||||||
|
|
||||||
def get_modifiers(modifiers: str) -> Tuple[int, float]:
|
def get_modifiers(modifiers: str) -> Tuple[int, float]:
|
||||||
|
Reference in New Issue
Block a user