Commit Graph

80 Commits

Author SHA1 Message Date
b35e62c880 achizitie import: linia de diferenta 6xx fara cod de taxa SAFT 2026-08-05 23:36:20 +03:00
54d97c0349 context_watch.ps1: nu mai raporteaza contextul altei sesiuni
La primul mesaj dintr-o sesiune noua transcriptul .jsonl inca nu e creat, asa
ca Test-Path pica si scriptul cadea pe fallback-ul "cel mai recent .jsonl din
directorul proiectului" - adica transcriptul sesiunii precedente, anuntand un
context de sute de k intr-o sesiune goala. Cand calea vine ca parametru sau pe
stdin si nu exista, iese tacut; fallback-ul pe director ramane doar pentru
invocarea manuala, fara cale.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UKTBDwMB1dAoN4DPBa1b2m
2026-08-05 22:21:32 +03:00
4d1179f8e5 diag_spatiu.ps1: aceleasi praguri ca jobul de diagnostic + plafonul editiei XE
Pragurile ies in capul scriptului si sunt cele din PACK_DIAG_SPATIU: tablespace-ul intra in atentie
sub 2048 MB ramasi sau sub 15% din maximul lui (inainte: sub 1 MB, adica dupa ce ORA-01653 e la usa),
iar FRA la 75% in loc de 80%.

Sectiune noua 2c: plafonul de date al editiei XE (4 GB pe 10.2, 11 GB pe 11.2, 12 GB de la 18c) -
limita e independenta de maxbytes-ul tablespace-urilor, baza poate refuza extinderea cu ORA-12952
desi tablespace-ul mai are loc. Pe alte editii sectiunea se sare.

Verificat pe XE 21c: sectiunea 2c da aceleasi cifre ca pachetul.
2026-08-05 21:55:13 +03:00
bd09073229 teste NNIR: avertisment .FXP stale (VFP ruleaza tacut versiunea veche a scriptului)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EBFMe75MwdnDQk3qhp1YB2
2026-08-03 23:45:58 +03:00
26d2c205c9 NNIR editabil in Registrul Jurnal (frm_modific2024) + teste 2026-08-03 23:44:27 +03:00
4666262c92 publicare scripturi de baza de date: script + documentatie
COMUN/utile/publicare_scripturi.ps1 face cei doi pasi ai publicarii (import in
UPD_DATABASE + arhiva lunara database[n]_*.zip in _UPDATE), cu configurarea citita
din settings.ini-ul lui tasks.exe si verificare octet cu octet a continutului.
2026-08-03 23:14:47 +03:00
72bf63cd04 depanare-spatiu-oracle.md: jobul zilnic de diagnostic + mecanismele reutilizabile
Jobul DIAGSPATIU_ZILNIC (SVN r17969) si mecanismele generale desprinse din investigatie:
cheile SERVER_INFO si GetSchemaParola, rularea ca SYS/OS prin UpdateSQLPLUS/ExecuteScriptOS,
de ce EmailLog nu se reutilizeaza, ordinea de aplicare a scripturilor sys_.

Capcane noi: parola SYS nu e generica la toti clientii, iar rolurile nu se aplica in pachete cu
drepturi de definitor - de aici granturile directe din sys_2026_08_03_05.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sNn6dmAimtyXkDU4frJrh
2026-08-03 22:24:28 +03:00
05d91a05c6 todos 2026-08-03 20:42:46 +03:00
5f944e8bfa credentialele Oracle se muta in COMUN\docs\local\oracle.md
Fisierul era per proiect; acum e in COMUN, partajat de toate aplicatiile ROA.
Ramane neversionat in git (docs/local/ adaugat in .gitignore-ul COMUN), exista
doar in SVN. Parola SYS e generica, nu difera de la server la server.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sNn6dmAimtyXkDU4frJrh
2026-08-03 19:06:44 +03:00
1d3e75803f livrare.ps1: fisierul de mesaj fara BOM
Out-File -Encoding utf8 in PS 5.1 scrie BOM, care ajungea ca prim caracter in
mesajul de commit (ex. un mesaj despre "sync SVN"). Se scrie cu
[IO.File]::WriteAllText si UTF8Encoding $false.

Nota in scripturi-uzuale.md: mesajele catre git/svn din PowerShell trec prin
fisier, UTF-8 fara BOM, LF.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sNn6dmAimtyXkDU4frJrh
2026-08-03 18:26:41 +03:00
f4b48d9c20 livrare.ps1: mesajul de commit prin fisier, nu prin -m
PowerShell 5.1 nu escapeaza argumentele catre exe native, deci ghilimele duble
in mesaj (ex. un commit de "sync SVN") spargeau apelul git. Mesajul se scrie
intr-un fisier temporar si se foloseste git commit -F, sters in finally.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sNn6dmAimtyXkDU4frJrh
2026-08-03 18:23:41 +03:00
d350119993 livrare.ps1: roa_sync la tree curat, rebase la push respins, garda SVN
- pasul 1 ruleaza roa_sync.ps1 cand tree-ul e curat (svn update + git_sync +
  reconciliere cu origin); cu modificari necomise ruleaza doar git_sync, ca
  roa_sync sa nu inglobeze munca in curs intr-un commit de sync SVN
- fetch inainte de commit: raporteaza cand ramura e in urma fata de origin
- push respins non-fast-forward: rebase + o singura reincercare, abort curat
  la conflict; fara --force
- avertisment pentru fisierele comise in git dar nefacute svn add
- docs: scripturi-uzuale.md - ce script se ruleaza si cand

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sNn6dmAimtyXkDU4frJrh
2026-08-03 18:18:45 +03:00
48f15c1da1 scripturi de diagnostic baza de date + script de livrare
- diag_actualizare.ps1: de ce s-a oprit actualizarea (UPD_ISTORIC, UPD_LOG,
  script_master.log prin UTL_FILE, versiuni per schema, spatiu tablespace, verdict)
- diag_spatiu.ps1: spatiu Oracle la clienti (tablespace, audit, ADR, FRA, disc server)
- livrare.ps1: git_sync + curatenie + verificari + commit/push
- curatenie.ps1: sterge si docs\propuneri_*.md
- docs: depanare-spatiu-oracle.md nou, depanare-pack-update.md completat cu cazul SIGMA

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sNn6dmAimtyXkDU4frJrh
2026-08-03 12:11:42 +03:00
5f3a17c5c7 fix: exportul Excel din GridExtras respecta ordinea de afisare a coloanelor
gridutils.copytoexcel parcurgea grid.Columns() pe indexul de creare, care in
VFP nu are legatura cu ColumnOrder. Coloanele se sorteaza acum dupa ColumnOrder
inainte de a construi lista de campuri, deci exportul iese in ordinea de pe
ecran, inclusiv dupa ce utilizatorul muta coloane (ordine salvata de
savegridpreferences).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YB2eA3Wd31DZiXjzVRc6VJ
2026-08-03 11:48:03 +03:00
a290a51276 docs: emailurile actualizarii si compatibilitatea scripturilor cu 10g/11g
Log-ul de actualizare (PACK_UPDATE.EmailLog, din baza) si buletinul informativ
(trimis de serverul de update) sunt doua fluxuri diferite, cu destinatari
configurati in locuri diferite.

Scripturile de migrare se scriu la nivelul Oracle 10.2 si trebuie sa ruleze
si pe 11.x; tabel cu versiunea minima a constructiilor uzuale si limitele XE.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TM9Cxpzrn9wBSkyBNr22Qc
2026-08-03 10:46:08 +03:00
fc1af63014 docs: script_master.log, unde apar erorile de aplicare a scripturilor
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TM9Cxpzrn9wBSkyBNr22Qc
2026-08-03 10:05:40 +03:00
a07b89e5e1 docs: capcane Oracle 10g la scripturile de migrare
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TM9Cxpzrn9wBSkyBNr22Qc
2026-08-03 10:05:33 +03:00
e75fc365c5 docs: depanarea actualizarii ROA (PACK_UPDATE)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TM9Cxpzrn9wBSkyBNr22Qc
2026-08-03 09:36:59 +03:00
5eb1f7ef40 Factura din contract: cod fiscal client precompletat
oDateFactura.Init completa clientul de pe contract fara cod fiscal, spre
deosebire de ramura de comanda. Formularul de cerere date arata acum codul
fiscal si permite verificarea ANAF fara a intra in cautarea de client.

todos: punct 10 - integrare contracte in ROAFACTURARE.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HdKazj8DDksshTb2vB3gZz
2026-08-03 08:35:56 +03:00
6aebd474fc Teste headless: verificare ANAF la alegerea clientului cu contract activ
Harness ROAACNPRO-specific (gcAppPath propriu, spre deosebire de test_init_env_auto.prg
care e fixat pe ROACONT), shadow pentru cauta_alfa() si testul care reproduce/confirma
label-ul ANAF pe caut_client_contract_activ(), plus repro pentru scoping-ul gresit al
lui poDate in do_cauta_partener (Thisform.poDate vs poDate PRIVATE).
2026-08-03 08:13:16 +03:00
71f661092d sync SVN r17952 2026-08-03 02:50:05 +03:00
e4f8736543 todos 2026-08-03 02:29:24 +03:00
006b58f644 curatenie.ps1: stergerea artefactelor de lucru dinaintea commit-ului
Script determinist (patch-uri, handoff-uri, *.pre_runda*.bak, .bak din cache text,
screenshots*/uisync*/.fxp/.err/loguri), cu protectie pe fisierele urmarite de git
si mod -DryRun. Referit din reguli_lucru.md (regula 1) si flux-editare-vfp-text.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RYbiinqXxdEqXi53x4Ro7K
2026-08-03 01:27:21 +03:00
6bef1e26ee achizitie import intern: campul pret lei redevine editabil
ControlSource-ul coloanei cPretFactura se rebindeaza calificat (rul_temp.pret_lei);
necalificat, VFP il rezolva pe workarea altei grile si celula nu accepta tastare.
Test de reproducere + nota docs/capcana_grid_controlsource.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RYbiinqXxdEqXi53x4Ro7K
2026-08-03 01:18:52 +03:00
80726b603e reguli: progres.md se sterge dupa commit, cand sarcinile sunt terminate
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RYbiinqXxdEqXi53x4Ro7K
2026-08-02 22:34:00 +03:00
c4d869921d verificare partener: garda pe cont NULL, hook-uri de disciplina, docs compactate
- ooperatii_comune: verific_partener nu mai construieste SQL NULL cand contul
  primit e NULL (EMPTY(.NULL.) e .F. in VFP)
- utile\context_watch.ps1 si utile\docs_revizie_check.ps1: masurarea contextului
  sesiunii si cadenta reviziei de documentatie, prin hook-uri Claude Code
  (instalare in docs\monitorizare-context.md)
- reguli_lucru: delegare la subagenti, modificari minime si scoped, scrierea si
  revizuirea documentatiei, changelog strictul necesar (regulile 3, 6, 9, 11, 12)
- scripturi-migrare-db: continutul unui script (scoped, fara select, idempotent)
- teste noi pentru cele doua erori din achizitia de import
- restul documentatiei compactata, fara pierdere de reguli

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RYbiinqXxdEqXi53x4Ro7K
2026-08-02 22:30:44 +03:00
20323d22b3 fix: F4 detalii ANAF pe formularul de cautare partener fara campul nume
Nvl() evalueaza ambele argumente, deci .nume era citit chiar cand cursorul avea
doar denumire - eroare "Variable 'NUME' is not found". Inlocuit cu Iif() pe
Type() in Detalii si VerificaAlegere.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RYbiinqXxdEqXi53x4Ro7K
2026-08-02 12:20:07 +03:00
974716fd85 todos 2026-08-02 11:51:25 +03:00
189e0a694e Verificare ANAF: o singura salvare in istoric si antete corecte pe formularele de verificare (SVN r17943)
VERIFICARE_CIF salva a doua oara in istoric ceea ce traseul ANAF (SalveazaIstoricDinCursor) tocmai
salvase, cu alte valori pentru PLATITORTVAMFIN si DATATVAMFIN, deci o apasare pe verificarea ANAF
lasa doua randuri in ISTORIC_CODURI_FISCALE. Pe traseul ANAF a doua salvare nu se mai face; traseele
MFIN/VIES raman neschimbate. Partea de baza de date: co_2026_08_02_05_COMUN_PACK_ISTORIC_CF.sql (SVN r17942).

Formularul de verificare in masa foloseste azi numai serviciul web ANAF (chkANAF fortat pe .T. in
Init), deci antetele arata sursa corecta: "Platitor TVA ANAF", "Firma ANAF" si "Data verificata"
(coloana arata data pentru care s-a interogat, nu data luarii in evidenta TVA). In fereastra cu
istoricul unui cod fiscal, coloanele DATATVAMFIN si PLATITORTVAMFIN sunt ascunse - dupa modificarea
din pachet raman inghetate.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018LkXBVHUNkb7Quq36TfQcs
2026-08-02 11:48:47 +03:00
f789ace574 docs: numerotarea scripturilor de migrare si ce intra in versiune_db.txt
Secventa NN e unica pe zi, comuna tuturor prefixelor (ff/co/sys/ris/rf). In versiune_db.txt
intra doar versiunea ultimului script ff_, pentru ca programele se conecteaza pe schema
firmei, nu pe CONTAFIN_ORACLE.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RYbiinqXxdEqXi53x4Ro7K
2026-08-02 11:42:57 +03:00
742e0561b5 Cache ANAF: randul curent din istoric se alege pe dataorav_anaf, nu pe id
Dupa fuziunea istoricelor de coduri fiscale, ID-ul nu mai urmeaza ordinea cronologica,
deci row_number() ordonat pe id putea intoarce un rand vechi ca stare curenta.
Ordonarea trece pe dataorav_anaf desc, cu id desc ca departajare.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sKVgMkowK4HpbFxBQVM22
2026-08-02 10:34:34 +03:00
521993bf85 Verificare ANAF si la caut_partener: achizitie import, finalizare NIR, furnizor pe rulaj
caut_partener primeste tlVerificaANAF/tdDataDoc (acelasi bloc ca la caut_parteneri) si citeste
tip_persoana din vnom_parteneri, ca banda de stare sa distinga CNP de CIF, nu dupa lungimea codului.

Apelanti pe documente: factura si partenerul DVI din achizitia de import (data din formular,
dDataAct), furnizorul de la finalizarea NIR-ului (data cade pe poAct.dataact) si schimbarea
furnizorului pe rulaj.

verific_partener si verificare_note_contabile (ooperatii_comune.prg) cer verificarea si cand
completeaza partenerul lipsa pe cont, la salvarea documentului.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RYbiinqXxdEqXi53x4Ro7K
2026-08-02 10:09:12 +03:00
7abec07549 Verificare ANAF: la serviciul web ajung doar CIF-uri valide (SVN r17939)
Lotul ramas pentru ANAF se construia cu un Scan fara filtru pe cui_n, deci codurile
care nu sunt CUI RO valid (cod gol, alta tara, peste 10 cifre) erau retrimise la fiecare
rulare - fereastra arata "Verific codurile fiscale 1..16 / 16" desi cele 903 coduri reale
veneau din cache, iar cererea plecata spre ANAF era goala: {"cui":0} -> 404.

- lotul ramas: Scan For cui_n <> 0.
- NormalizeazaCoduriCursor: cui_n se completeaza doar daca trece si algoritmul cifrei de
  control (VerificareCod.VALIDARE_CIF), nu doar tara RO / numai cifre / maxim 10 caractere;
  plus Val() <> 0, ca un cod de zerouri sa nu ajunga la ANAF drept cui:0. VALIDARE_CIF nu
  s-a atins, e doar apelata.
- ANAF_SincronWebService_PlatitorTva: acelasi filtru la compunerea cererii (cele doua
  trebuie sa ramana identice) si LOOP cand grupul nu are niciun CUI valid, deci fara
  cerere HTTP goala.

Verificat: compilare curata; test headless pe NormalizeazaCoduriCursor (RO7320118, 7320118,
RO25501, "RO 1879855" trec; 7320119 cu cifra de control gresita, 0, cod gol, BG123456789,
CNP de 13 cifre sunt excluse). Fara fals-pozitive pe date reale: toate cele 903 coduri
confirmate de ANAF pe ROMFAST trec algoritmul.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JCzVWfqscv1xyo5uvJiWiW
2026-08-02 08:27:28 +03:00
5c8a201438 Cache ANAF: verificarea in masa a codurilor fiscale, pe transe (SVN r17935)
Verificarea "in masa" (VerificaListaCIF ... 'MASA') pica pe ORA-01795 peste 1000
de coduri, iar esecul trimitea tot lotul la ANAF, cu pauze de o secunda la fiecare
100 de coduri. Pe langa asta, fiecare rand servit din cache era salvat inapoi in
istoric si logat separat.

- programe/validare.prg: CitesteIstoricPentruCoduri citeste pe transe de maxim
  1000 de coduri legate cu OR in aceeasi interogare (fara obiecte noi in baza,
  compatibil cu Oracle 10g); plasa de siguranta cere codurile neacoperite o
  singura data, nu cod cu cod; SalveazaIstoricDinCursor sare peste randurile cu
  sursa CACHE*; bucla de log per rand devine o singura linie cu totalul.
- clase/overificari.vc2: completarea tabelului de parteneri foloseste index pe
  codul normalizat si SEEK in loc de LOCATE cu UDF (era patratic).
- utile/Teste/cache_anaf/: harness-uri de masurare si non-regresie pentru
  timpii de mai jos.

Masurat pe MARIUSM_AUTO, cu ANAF blocat: 1000 de coduri 5,1 s -> 0,318 s;
1001 coduri 16,6 s cu ORA-01795 -> 0,553 s fara eroare; 3000 de coduri 1,565 s;
200 de coduri din cache 3,93 s -> 0,05 s, cu 0 randuri noi in istoric;
completarea tabelului pentru 2000 de parteneri 11,97 s -> 0,028 s.
Randurile intoarse si verdictele raman identice.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JCzVWfqscv1xyo5uvJiWiW
2026-08-02 07:27:42 +03:00
4342aae78c TODOS 2026-08-02 01:46:57 +03:00
859e67e874 Cache ANAF pe ISTORIC_CODURI_FISCALE: verificare din memorie, plasa la tacere ANAF
Verificarile de partener nu mai depind exclusiv de raspunsul ANAF: se citeste
intai cache-ul din ISTORIC_CODURI_FISCALE (mutat in CONTAFIN_ORACLE), cu
provenienta afisata pe ecrane (sursa / data_sursa) si cu plasa de siguranta
cand ANAF tace. Ordinea cache/ANAF e configurabila; cache-ul expira.

- programe/validare.prg: verificare single si pe loturi peste cache, contract
  404 separat de caderea de serviciu, expirarea cache-ului, corectii la
  verdictul pe firma si la etichetarea CACHE_INDISP.
- programe/ocautare.prg: plasa de siguranta si banda de provenienta la cautarea
  de partener.
- programe/oproceduri_comune.prg: VERIFICA_RTVAI_DATA citeste si cache-ul.
- clase/overificari.vc2: propagarea provenientei in interfata.
- utile/Teste/: harness-uri de testare headless - echivalenta cache/ANAF pe 200
  de coduri reale, marginile pe inactiv si TVA la incasare, mock batch ANAF,
  baseline D394 si sondele de diagnostic ANAF.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JCzVWfqscv1xyo5uvJiWiW
2026-08-02 01:33:18 +03:00
ebb20fab7e achizitie import: numarul DVI nu mai suprascrie numarul facturii
In import_nota, randul de TVA al DVI-ului pastreaza doc_key-ul facturii-mama.
copiaza_valoare il sarea doar ca tinta, nu si ca sursa, asa ca o trecere prin
celula "Nr" a randului DVI scria numarul vamal peste randurile facturii (B/G/S)
si, la Terminat, in ACT si RUL.nract. Garda e acum in ambele sensuri, pentru
numar, serie, data, fel document si partener; propagarea de partener din
Grid1.cPartC.Text1.Valid a primit aceeasi protectie.

Garzile comparau numele de camp bar, dar ControlSource-ul unei coloane de grid
e calificat la runtime (introdc.nract), deci nu se activau pe drumul din grila.

Teste noi in utile/Teste/achizitie_import.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U9uDgDfUQXbh2Neib36CN8
2026-08-01 22:47:35 +03:00
832fea4913 achizitie import: TVA DVI cu valuta proprie, discount financiar, cote multiple
- TVA-ul de pe DVI poate avea valuta si curs proprii, diferite de ale facturii
  (rand "protejat": rand_dvi/valuta_proprie pe introdc, sparge_tva_protejat).
- Discount financiar pe factura: rand tip_rand='G' (401 = 767), TVA calculat pe
  baza diminuata, marfa si preturile articolelor pe valoarea integrala.
- Factura multi-cota: randurile S, G si T se sparg pe cotele articolelor, cu
  explicatia TVA din familia coloanei si alinierea T -> S.
- Teste noi in utile/Teste/achizitie_import (discount, DVI, cote, e2e).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U9uDgDfUQXbh2Neib36CN8
2026-08-01 09:32:35 +03:00
704e25e190 eroare validare daca nu exista internet 2026-07-30 13:51:57 +03:00
3421cc39d2 Borderou eFactura: bife de filtrare "Cu diferente" / "Lipsa din Reg. TVA"
Pe toate cele trei pagini (Facturi emise, Primite, Trimise) doua bife noi, colorate
ca randurile pe care le filtreaza: turcuaz "Cu diferente Reg. TVA" (jtotctva
completat, dar diferenta peste 0,15 lei sau eFactura in valuta) si gri "Lipsa din
Reg. TVA" (jtotctva null). Bifate impreuna se aduna cu OR.

Culorile din grid: gri = nu e in registru, turcuaz = diferenta peste 0,15 lei sau
necalculabila, alb = se potriveste. Expresia DynamicBackColor e sparta in doua
siruri, VFP nu accepta constante peste 255 caractere.

diferenta ramane NULL cand jtotctva e NULL (nu 0 fals), la fel ca la facturile
primite/trimise; jtotctva si diferenta sunt acum nullable in cursorul de facturi
emise.

Corectat lcFiltru3, care se construia din lcFiltru2 si pierdea conditiile paginii.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FW7zDopcHo2fHq5L53MjMM
2026-07-29 12:34:33 +03:00
e18784358b eFactura: acelasi cod de culori in borderou si in import, filtru de data sargabil
Galbenul de la randurile cu diferenta fata de Registrul TVA devine turcoaz in borderou,
ca sa insemne acelasi lucru in ambele ferestre: gri = factura nu e in registru,
turcoaz = e in registru dar valoarea difera cu peste 0.15 lei ori nu se poate compara
(factura in valuta), alb = se potriveste.

Importul preia regulile corectate ieri in borderou: diferenta ramane goala cand factura
nu e in registru sau e in valuta si tine cont de semnul notei de credit, iar jtotctva si
diferenta se declara nullable in cursor (altfel NULL devine 0 si gri-ul nu mai apare).
Pana acum importul colora orice diferenta de un ban si dadea turcoaz fals pe notele de
credit si pe facturile in valuta.

Filtrul initial al cursorului din fereastra de import compara data_act cu un interval
[prima zi a lunii, prima zi a lunii urmatoare) in loc de extract(year/month from data_act),
deci poate folosi IDX_ANAF_EFACTURA_1(FACTURA_EMISA, XDATA_ACT, DATA_RASPUNS). Filtrul
rula la fiecare deschidere a ferestrei, nu era amanat ca la borderou.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FW7zDopcHo2fHq5L53MjMM
2026-07-29 00:31:33 +03:00
69884c0a50 curatare 2026-07-29 00:18:55 +03:00
0df20461e2 Borderou eFactura: potrivire cu registrul de TVA rapida si corecta
Potrivirea pe numar compara nract cu grupurile de cifre extrase din xnumar_act,
in loc sa aplice un regex peste nract. Predicatul devine sargabil, deci foloseste
IDX_JC2007_003/IDX_JV2007_003 in loc sa scaneze toata luna din jurnal pentru
fiecare factura: borderoul de facturi trimise trece de la 97 de secunde la sub una
(masurat pe o firma cu 6006 facturi si 6466 randuri in jurnal).

Rezerva pe suma egala se pastreaza, dar in view se leaga prin COALESCE, nu prin OR:
se evalueaza doar pentru facturile pe care numarul nu le-a gasit. Legata prin OR,
potrivea nediferentiat orice document cu aceeasi suma la acelasi partener in aceeasi
zi - pana la 49 de documente pentru o factura - si afisa o "Diferenta" gresita.

jcnt si coloana "Pot." se elimina: dupa corectarea potrivirii numarul de documente
potrivite e practic intotdeauna 1, iar starea "nu e in registru" se citeste din
jtotctva IS NULL. jtotctva se declara nullable in cursor, altfel NULL-ul devine 0 si
randurile fara potrivire nu s-ar mai colora.

Pragul de la care un rand devine galben urca de la 0.01 la 0.15 lei: la 0.01 ieseau
841 de randuri galbene din 6006, toate diferente de rotunjire sub 0.11 lei.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FW7zDopcHo2fHq5L53MjMM
2026-07-28 23:31:04 +03:00
31a157cb55 todos 2026-07-28 17:08:21 +03:00
a5b3b29307 Verificare ANAF: optiunea arata setarile pe niveluri si revenirea la implicit
Dialogul din Initializari > Optiuni utilizator arata separat setarea
utilizatorului curent, setarea firmei, implicitul programului si starea
de pe calculator. Butonul "Nu" sterge setarea proprie (DELETE in
OPTIUNI_UTIL + reincarcarea cursorului), ca utilizatorul sa revina la
setarea firmei sau la implicit; setarea firmei nu se modifica de aici.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DhJwsrFFe1ZNAAtS8Twuti
2026-07-28 17:06:59 +03:00
5df79dcce8 corectie eroare 2026-07-28 16:08:21 +03:00
b1f8a8ed30 Borderou eFactura: diferenta ignora TVA-ul de taxare inversa
vizeFactura (anaf_efactura.prg), facturi primite: expresia diferentei scade jtva_ti din
jtotctva, ca la ecranul de import. Borderoul era ecranul din changelog, dar r17913 modificase
doar vizImportEFactura.

Scoate si sonda pe user_tab_columns din import_efactura.prg: versiune_db.txt este
2026_07_28_01 (exact scriptul care adauga jtva_ti), iar pack_migrare.VerificaVersiune nu lasa
programul sa porneasca pe o baza mai veche, deci coloana exista sigur.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DhJwsrFFe1ZNAAtS8Twuti
2026-07-28 15:55:54 +03:00
1d83854f56 Merge claude/anaf-tva-efactura: avertizare exigibilizare TVA, verificare ANAF 2026-07-28 15:12:58 +03:00
ccb8fd2cc6 Verificare ANAF: perioada de TVA spune ce reprezinta; optiunea intreaba inainte sa modifice
SufixPerioadaTVA lipea intervalul direct dupa verdict ("Neplatitor TVA
05/07/2002 - 18/04/2012"), ceea ce se citea ca perioada in care partenerul NU a
fost platitor - exact pe dos. Eticheta spune acum ce reprezinta: "inregistrat TVA
<de la> - <pana la>", respectiv "cod TVA anulat din <data>". Detaliile F4 arata
perioada si in ramurile "Nu exista partener cu CUI ..." si "Nu s-a putut citi
lista de parteneri", unde lipsea - adica tocmai in cazul in care utilizatorul
n-avea de unde sa afle ce inseamna datele din banda de stare.

ANAF_ComutaVerificare afisa un mesaj informativ si apoi cerea neconditionat
valoarea noua, propunand valoarea curenta. Cand verificarea era oprita local din
settings.ini, valoarea propusa era 0, iar un Enter reflex o salva ca optiune de
utilizator - ceea ce transforma tacut o oprire locala in oprire pe orice
calculator. Mesajul intreaba acum Da/Nu si propune 9 (oprire locala) in loc de 0.

reguli_lucru.md pct. 2: istoricul modificarilor sta doar in antetul fisierului,
la fel in .prg si in package-urile/procedurile PL/SQL Oracle; in corpul codului
doar comentarii functionale, niciodata data/autor/"am modificat".

Adaugat docs/sold-neexigibil-reportat-jc2007-jv2007.md: jc2007/jv2007 tin o linie
per factura PER PERIOADA (soldul neexigibil se reporteaza lunar), deci orice
interogare pe sold se filtreaza pe an/luna.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DhJwsrFFe1ZNAAtS8Twuti
2026-07-28 15:12:13 +03:00
248ac0e002 Note contabile: avertizare la salvare cand raman facturi cu TVA la incasare neexigibilizat
La salvarea notei, VerificaAvertizareExigibilizareTVA (identica in
frm_modific2007 si frm_modific2024) verifica incasarile si platile cu factura
pereche completata si avertizeaza daca vreuna dintre facturile lor cu TVA la
incasare nu are inca nota de TVA exigibilizat.

Candidatii sunt exact cele doua tipare pe care do_adauga_tva_exigibil le trateaza
automat (id_factd > 0 cu scc pe 5xx, id_factc > 0 cu scd pe 5xx); facturile deja
acoperite de o linie tipnota = 1 din nota curenta sunt suprimate. Soldul
neexigibil se citeste dintr-un singur SELECT peste VJC2025/VJV2025, filtrat pe
perioada curenta si pe toate cele 14 coloane de cota.

La "Da" se apeleaza do_adauga_tva_exigibil NEMODIFICAT, marcand temporar `ales`
doar pe liniile candidate si restaurandu-l dupa; programul ramane in formular,
ca notele adaugate sa poata fi verificate. Orice esec (optiune, cursor, SQL)
se logheaza si lasa salvarea sa continue.

Se poate opri din settings.ini [tva] avertizare_exigibilizare=0 sau din optiunea
RC_TVA_AVERT_EXIGIB.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DhJwsrFFe1ZNAAtS8Twuti
2026-07-28 15:11:56 +03:00