Setul de conturi cu parteneri iese din literali si trece in config/conturi_parteneri.csv, cu categorie si motiv. Comportamentul e neschimbat; lipsa fisierului opreste cu eroare, nu cade pe set gol. CONFIG_CONT_IREG ramane consultativ: tools/divergenta_parteneri.py raporteaza divergenta, nu o aplica. Constatarea (27 conturi in Oracle si nu la noi, 3 la noi si nu in Oracle - 5121, 5124, 5311) e scrisa in docs/decizii_import.md. tests/test_regresie.py compara iesirea codului de azi cu tests/golden/ pe valori de celula, prin anonimizatorul refolosit ca functie. Trece pe FUNDATIA si MASTER; verificat ca pica la o schimbare reala de set de conturi. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EYeAtVxeS8m4oXekjX8Am2
68 lines
2.4 KiB
Python
68 lines
2.4 KiB
Python
"""Compara setul operational de conturi cu parteneri cu snapshot-ul CONFIG_CONT_IREG.
|
|
|
|
RAPORTEAZA divergentele, nu le aplica: nu scrie nimic in config/conturi_parteneri.csv
|
|
si nu se conecteaza la Oracle. Snapshot-ul vine din sql/export_config_cont_ireg.sql
|
|
sau, in lipsa unei rulari pe Oracle, din config/config_cont_ireg_snapshot.csv.
|
|
|
|
Rulare: py tools/divergenta_parteneri.py config/config_cont_ireg_snapshot.csv
|
|
"""
|
|
import csv
|
|
import os
|
|
import sys
|
|
|
|
RADACINA = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
CONFIG = os.path.join(RADACINA, "config", "conturi_parteneri.csv")
|
|
|
|
|
|
def citeste_config(path=CONFIG):
|
|
"""Conturile cu parteneri tinute de noi (coloana cont din config)."""
|
|
if not os.path.exists(path):
|
|
raise SystemExit("lipseste configuratorul de parteneri: %s" % path)
|
|
conturi = set()
|
|
with open(path, encoding="utf-8-sig", newline="") as f:
|
|
for r in csv.DictReader(f):
|
|
cont = (r.get("cont") or "").strip()
|
|
if cont:
|
|
conturi.add(cont)
|
|
return conturi
|
|
|
|
|
|
def citeste_snapshot(path):
|
|
"""Conturile CU_INREGISTRARI = 1 din snapshot; ignora comentariile si antetul."""
|
|
if not os.path.exists(path):
|
|
raise SystemExit("lipseste snapshot-ul: %s" % path)
|
|
conturi = set()
|
|
primul = True
|
|
with open(path, encoding="utf-8-sig") as f:
|
|
for linie in f:
|
|
linie = linie.strip()
|
|
if not linie or linie.startswith("#"):
|
|
continue
|
|
valoare = linie.split(",")[0].strip().strip('"').strip()
|
|
if primul and valoare.lower() == "cont":
|
|
primul = False
|
|
continue
|
|
primul = False
|
|
if valoare:
|
|
conturi.add(valoare)
|
|
return conturi
|
|
|
|
|
|
def main(argv):
|
|
if len(argv) != 2:
|
|
raise SystemExit("Utilizare: py tools/divergenta_parteneri.py <snapshot.csv>")
|
|
noi = citeste_config()
|
|
oracle = citeste_snapshot(argv[1])
|
|
doar_oracle = sorted(oracle - noi)
|
|
doar_noi = sorted(noi - oracle)
|
|
print("Conturi comparate: la noi %d, in Oracle %d" % (len(noi), len(oracle)))
|
|
print("In Oracle, nu la noi (%d): %s"
|
|
% (len(doar_oracle), ", ".join(doar_oracle) if doar_oracle else "(niciunul)"))
|
|
print("La noi, nu in Oracle (%d): %s"
|
|
% (len(doar_noi), ", ".join(doar_noi) if doar_noi else "(niciunul)"))
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main(sys.argv))
|