Folderul docs\ era pana acum in afara oricarui control de versiuni - nici git, nici SVN - desi contine planurile pe puncte, proiectarile si rapoartele de cercetare pe care se sprijina modificarile din cod. O stergere acolo era definitiva. Fisierele intermediare (handoff-uri intre sesiuni, diff-uri deja aplicate) au fost sterse inainte, nu versionate: ce era durabil in ele a intrat in antetele fisierelor de test la care se refereau. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
95 lines
5.9 KiB
Markdown
95 lines
5.9 KiB
Markdown
# Test real al caii de scriere (buton=1) din do_editare_factura
|
|
|
|
Aprobat explicit de Marius pe 08.08.2026: test care scrie efectiv in `MARIUSM_AUTO@ROA_CENTRAL`.
|
|
Script: `COMUN\utile\Teste\editare_factura\test_writeback_buton1.prg`. Log complet:
|
|
`COMUN\utile\Teste\editare_factura\test_writeback_buton1_log.txt`.
|
|
|
|
## Rezultat
|
|
|
|
**PASS pe toate cele 5 verificari cerute, de doua ori** (salvare fara modificari + salvare cu o
|
|
modificare), cu COMMIT real, verificat independent prin `sqlplus` dupa rulare.
|
|
|
|
Document consumat: `cod=1140886`, `id_vanzare=1048` (factura tip 1, 07-AUG-26, `total_cu_tva=302.51`,
|
|
1 linie `VANZARI_DETALII`, 5 randuri `ACT`, `id_set=25010`, `id_fact=8009658`, 1 rand `RUL`).
|
|
|
|
**Cod-ul final ramas in baza dupa acest test: `1140894`** (a trecut prin `1140886` -> `1140893` ->
|
|
`1140894`, cate o realocare la fiecare salvare). Oricine reia testul pe acest document trebuie sa
|
|
citeasca `cod`-ul curent din `VANZARI` (nu presupune `1140886`).
|
|
|
|
## Calea testata: harness direct, NU UI condus prin Timer
|
|
|
|
`frm_modific2024` a fost **ocolit complet** - nu a fost instantiat deloc, dupa doua incercari esuate
|
|
(vezi sectiunea "Ce nu acopera" mai jos). Harnessul:
|
|
|
|
1. Reproduce exact starea de cursoare pe care `do_editare_factura` o lasa inainte de
|
|
`Createobject('frm_modific2024',...)`, folosind functia reala `IncarcaCursoareModificareNota`
|
|
(`COMUN\programe\ofacturare_editare.prg`) pe date Oracle reale.
|
|
2. Seteaza `buton=1` direct (sare peste `inainte_de_do_termin`).
|
|
3. Ruleaza LITERAL codul ramurii `buton=1` din `do_editare_factura`
|
|
(`ofacturare_comun.vc2:3805-3840`), inclusiv `OSCRIE_IN_FISIERE(2,...)` (stergere),
|
|
`OSCRIE_IN_FISIERE(0,...)` (scriere) si `pack_contafin.finalizeaza_modificare_nota`.
|
|
4. `Thisform.do_deschide_tranzactie()` / `do_inchide_tranzactie()` sunt reproduse INLINE
|
|
(`MyDeschideTranzactie`/`MyInchideTranzactie` in harness), copiate identic dupa
|
|
`_frm_base.vc2:252-302`, fara sa instantieze niciun formular.
|
|
|
|
`OSCRIE_IN_FISIERE` (`COMUN\programe\oscrie_in_fisiere.prg`) **nu a fost mock-uit** - a rulat
|
|
codul real, cu conexiune Oracle reala.
|
|
|
|
## Cele 5 verificari (ambele rulari)
|
|
|
|
| # | Verificare | TEST 1 (fara modificari) | TEST 2 (explicatie modificata) |
|
|
|---|---|---|---|
|
|
| 1 | `ACT`: vechi `STERS=1`, nou cu aceeasi suma | PASS (5/5 sters, suma 792.53 -> 792.53) | PASS (5/5 sters, suma 792.53 -> 792.53) |
|
|
| 2 | `RUL`: acelasi tipar | PASS (1 rand vechi sters, 1 rand nou) | PASS (identic) |
|
|
| 3 | `VANZARI`: `cod` nou, `sters=0`, `id_fact` neschimbat, totaluri neschimbate | PASS (`1140886`->`1140893`) | PASS (`1140893`->`1140894`) |
|
|
| 4 | `VANZARI_DETALII`: neatins | PASS (1 rand, sume identice) | PASS (identic) |
|
|
| 5 | `lnSucces>0` pe tot lantul + commit (nu rollback) | PASS (`lnSucces=1`, COMMIT) | PASS (`lnSucces=1`, COMMIT) |
|
|
|
|
Verificare suplimentara TEST 2: explicatia modificata (`NOTA 1` -> `NOTA 1 (test writeback)`) a
|
|
ajuns efectiv in randul nou din `ACT` - **PASS**, confirmat si independent prin `sqlplus`
|
|
(`cod=1140894`, randul `4111/704`, coloana `EXPLICATIA`).
|
|
|
|
Independent, prin `sqlplus` dupa rulare (nu doar din logul VFP): `VANZARI.cod=1140894`,
|
|
`sters=0`, totaluri neschimbate; `ACT` cod `1140886` si `1140893` toate `STERS=1`; `ACT` cod
|
|
`1140894` are 5 randuri active cu aceleasi sume/id_set/id_fact; `RUL` cod `1140894` 1 rand activ;
|
|
`VANZARI_DETALII` neschimbat.
|
|
|
|
## Ce NU acopera acest test
|
|
|
|
- **Validarea din `inainte_de_do_termin`** (`omodificari.vc2:13357-13549` -
|
|
`verificare_note_contabile`, echilibru 4426-4428, `VerificaAvertizareExigibilizareTVA`) - a fost
|
|
**sarita**, `buton=1` a fost fortat direct in harness.
|
|
- **Comportamentul real al formularului `frm_modific2024`** la butonul "Terminat" (sau la editari
|
|
facute de utilizator in grid-urile lui) - formularul nu a fost instantiat deloc.
|
|
- Testul demonstreaza ca **lantul de scriere** functioneaza pe acest tip de document - nu ca
|
|
utilizatorul ajunge la el prin fluxul UI complet.
|
|
|
|
## Incidente pe parcurs (rezolvate, fara sa fi fost bug de aplicatie)
|
|
|
|
1. **Instantierea `frm_modific2024` s-a blocat de doua ori**, headless, fara nicio linie de eroare
|
|
in log:
|
|
- Prima data pe un **dialog nativ Windows "Open"** (`#32770`), confirmat prin enumerarea
|
|
ferestrelor procesului (`EnumWindows`/`GetWindowText`) - tipar deja documentat in
|
|
`testare-ui-vfp.md`, capcana j (o tabela/cursor lipsa in mediul minimal declanseaza dialogul
|
|
de cautare fisier in loc de eroare catchabila). Cauza exacta (ce control/tabela anume) nu a
|
|
fost investigata mai departe - nu era obiectul acestui test, si `omodificari.vc2` era in
|
|
lucru in paralel la S4/PAGE3.
|
|
- Din aceasta cauza s-a decis **ocolirea completa** a formularului (vezi sectiunea de mai sus).
|
|
2. **Bug de harness (nu de aplicatie): `pnAn`/`pnLuna` declarate `LOCAL` in loc de `Private`.**
|
|
Apelul `pack_contafin.finalizeaza_modificare_nota(?pnLuna,?pnAn,...)` foloseste `?pnLuna`/`?pnAn`
|
|
ca bind-variabile, rezolvate de `goExecutor.oExecuta` in josul stivei de apel - vizibilitatea
|
|
asta cere `Private`, nu `Local` (exact cum sunt declarate in codul real,
|
|
`ofacturare_comun.vc2:3742`: `Private pnAn, pnLuna, lnCod, lnIdFact, lnIdVanzare`). Cu `Local`,
|
|
rularea a produs o fereastra nativa VFP **"View Parameter"** (vizibila o singura data prin
|
|
`EnumWindows`, apoi rezolvata singura fara interventie) si `finalizeaza_modificare_nota` a
|
|
returnat `-1` de doua ori consecutiv - fara nicio scriere efectiva (ROLLBACK ambele dati, date
|
|
verificate neatinse). Corectat in harness (`Private pnAn, pnLuna, lnCod, lnIdFact`), dupa care
|
|
ambele teste au trecut curat. **Concluzie: nu e un defect al `ofacturare_comun.vc2` sau al
|
|
`oscrie_in_fisiere.prg`** - codul real foloseste deja declararea corecta.
|
|
|
|
## Date de test consumate ireversibil
|
|
|
|
`cod=1140886` (id_vanzare=1048) nu mai exista ca document activ - a fost realocat de doua ori.
|
|
Orice test viitor pe acest document trebuie sa porneasca de la `cod=1140894` (curent) sau sa aleaga
|
|
alt document.
|