Add Phase 6 controlled Tally writeback
This commit is contained in:
@@ -8,7 +8,7 @@ import os
|
||||
import sqlite3
|
||||
from typing import Iterator, Sequence
|
||||
|
||||
ACT_SCHEMA_VERSION = 5
|
||||
ACT_SCHEMA_VERSION = 6
|
||||
|
||||
|
||||
class AccountingActStoreError(RuntimeError):
|
||||
@@ -222,6 +222,19 @@ class AccountingActStore:
|
||||
CREATE INDEX IF NOT EXISTS ix_it_dep_runs_company_fy ON it_depreciation_runs(tally_guid, fy_start, fy_end, id);
|
||||
CREATE INDEX IF NOT EXISTS ix_it_dep_lines_run ON it_depreciation_run_lines(run_id, line_no);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tally_writeback_attempts (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT, depreciation_run_id INTEGER NOT NULL,
|
||||
tally_guid TEXT NOT NULL, company_name TEXT NOT NULL, voucher_type TEXT NOT NULL DEFAULT 'Journal',
|
||||
voucher_date TEXT NOT NULL, reference TEXT NOT NULL DEFAULT '', debit_ledger TEXT NOT NULL,
|
||||
credit_ledger TEXT NOT NULL, amount REAL NOT NULL DEFAULT 0, requested_by_user_id INTEGER,
|
||||
started_at_utc TEXT NOT NULL, completed_at_utc TEXT, status TEXT NOT NULL,
|
||||
tally_created INTEGER NOT NULL DEFAULT 0, tally_altered INTEGER NOT NULL DEFAULT 0,
|
||||
tally_errors INTEGER NOT NULL DEFAULT 0, tally_last_voucher_id TEXT NOT NULL DEFAULT '',
|
||||
request_xml TEXT NOT NULL DEFAULT '', response_xml TEXT NOT NULL DEFAULT '', error_message TEXT,
|
||||
FOREIGN KEY(depreciation_run_id) REFERENCES it_depreciation_runs(id) ON DELETE CASCADE
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS ix_tally_writeback_run ON tally_writeback_attempts(depreciation_run_id, id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ix_tally_groups_company ON tally_groups(tally_guid, name);
|
||||
CREATE INDEX IF NOT EXISTS ix_tally_ledgers_company ON tally_ledgers(tally_guid, name);
|
||||
CREATE INDEX IF NOT EXISTS ix_tally_voucher_types_company ON tally_voucher_types(tally_guid, name);
|
||||
@@ -245,6 +258,15 @@ class AccountingActStore:
|
||||
"""
|
||||
)
|
||||
self._ensure_mapping_columns(db)
|
||||
dep_columns = {row["name"] for row in db.execute("PRAGMA table_info(it_depreciation_runs)").fetchall()}
|
||||
for name, ddl in {
|
||||
"approved_by_user_id": "INTEGER", "approved_at_utc": "TEXT", "approval_note": "TEXT NOT NULL DEFAULT ''",
|
||||
"posted_by_user_id": "INTEGER", "posted_at_utc": "TEXT", "posted_voucher_type": "TEXT NOT NULL DEFAULT ''",
|
||||
"posted_voucher_number": "TEXT NOT NULL DEFAULT ''", "tally_posting_status": "TEXT NOT NULL DEFAULT ''",
|
||||
"tally_posting_error": "TEXT NOT NULL DEFAULT ''",
|
||||
}.items():
|
||||
if name not in dep_columns:
|
||||
db.execute(f"ALTER TABLE it_depreciation_runs ADD COLUMN {name} {ddl}")
|
||||
now = _utc_now_iso()
|
||||
metadata = {
|
||||
"schema_version": str(ACT_SCHEMA_VERSION),
|
||||
|
||||
Reference in New Issue
Block a user