#13: formular de facturare unificat - etapa curenta

Squash al branch-ului de lucru plan13-s2.

Clase: ofacturare (nucleul formularului unificat), ofacturare_comun,
ferestre_cere_date, ocomenzi, caut_ora (lista de preturi in combo-urile de
cautare), omodificari.

Programe: ofacturare impartit - ofacturare_antet, ofacturare_rutare_scriere si
ogrid_latimi sunt fisiere noi; oproceduri_facturare primeste discountul pe linie
si cota standard de TVA cand articolul nu are cota pe politica.

Documentatie: capcana SQLExec no_data_found, conventia de encoding, depanarea
testelor VFP si regulile de lucru - conflictele cu modificarile venite din alte
proiecte sunt rezolvate pastrand ambele parti.

Loguri de rulare a testelor scoase din versionare; testele raman.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PkyjGyrV2S7932om4kfSiK
This commit is contained in:
2026-09-09 21:38:25 +03:00
parent d1d0d7c37f
commit 8e022d332e
259 changed files with 57305 additions and 1576 deletions

View File

@@ -158,3 +158,11 @@ Cand un bug apare "de azi", compara cu clasa veche fara sa atingi SVN:
Platit pe testarea VIES (23.08.2026): doua blocaje de 90s+; dupa stergerea celor doua fisiere,
exact acelasi script a rulat in 1.19s. Completeaza punctul (1) din capcana precedenta: nu doar
"exista `.ERR`?", ci si "e `.ERR`-ul de la rularea asta sau de la una anterioara?".
- **`TYPE()` pe un obiect nu intoarce `'O'` pentru orice membru.** `.Objects` la un container
(`Form`, `Container`, `Grid`) e *Objects Array*: `TYPE('loO.Objects')` da `'A'`, nu `'O'`. O
garda `IF TYPE('loO.Objects') = 'O'` e deci mereu falsa, iar `AND`-ul scurtcircuiteaza testul
corect de dupa ea - recursia pe arborele de controale nu porneste niciodata, **fara eroare si
fara nimic in log**; singurul simptom e un dump care contine doar nivelul 1. Testeaza pe ce
folosesti efectiv: `TYPE('loO.Objects.Count') = 'N'` e `'U'` daca lantul punctat nu exista,
deci e si suficient, si independent de litera de tip. Aceeasi prudenta la `TYPE('loO.Value')`
(tipul variaza cu continutul) si `TYPE('loO.Visible')`.