zapamietanie akcji

This commit is contained in:
Mateusz Gruszczyński
2026-07-19 19:00:04 +02:00
parent e26d9e4ff3
commit 659f04f05f
9 changed files with 121 additions and 8 deletions
+46
View File
@@ -21,8 +21,54 @@ def add_station_access_mode() -> None:
))
def add_fuel_entry_vat_action_snapshot() -> None:
inspector = inspect(db.engine)
columns = {column["name"] for column in inspector.get_columns("fuel_entry")}
additions = {
"vat_action_frozen": "BOOLEAN NOT NULL DEFAULT 0",
"vat_action_applied": "BOOLEAN NOT NULL DEFAULT 0",
"vat_action_name": "VARCHAR(160)",
"vat_action_rate": "NUMERIC(6, 3)",
"vat_action_start": "DATE",
"vat_action_end": "DATE",
}
for name, definition in additions.items():
if name not in columns:
db.session.execute(text(f"ALTER TABLE fuel_entry ADD COLUMN {name} {definition}"))
settings = dict(db.session.execute(text(
"SELECT key, value FROM app_setting WHERE key IN "
"('global_vat_override_enabled','global_vat_override_name','global_vat_override_rate',"
"'global_vat_override_start','global_vat_override_end')"
)).all())
if settings.get("global_vat_override_enabled") == "1" and settings.get("global_vat_override_rate"):
conditions = ["vat_action_applied = 0"]
params = {
"name": settings.get("global_vat_override_name") or "Projekt rządowy",
"rate": settings["global_vat_override_rate"],
"start": settings.get("global_vat_override_start") or None,
"end": settings.get("global_vat_override_end") or None,
}
if params["start"]:
conditions.append("DATE(fueled_at) >= DATE(:start)")
if params["end"]:
conditions.append("DATE(fueled_at) <= DATE(:end)")
db.session.execute(text(f"""
UPDATE fuel_entry
SET vat_action_frozen = 1,
vat_action_applied = 1,
vat_action_name = :name,
vat_action_rate = :rate,
vat_action_start = :start,
vat_action_end = :end
WHERE {' AND '.join(conditions)}
"""), params)
db.session.execute(text("UPDATE fuel_entry SET vat_action_frozen = 1 WHERE vat_action_frozen = 0"))
MIGRATIONS: tuple[Migration, ...] = (
Migration("20260713_company_station_access_mode", add_station_access_mode),
Migration("20260719_fuel_entry_vat_action_snapshot", add_fuel_entry_vat_action_snapshot),
)
def ensure_migration_table() -> None: