Files
roafacturare/docs/writeback_curs_bnr.md
2026-09-17 22:44:24 +03:00

96 lines
4.2 KiB
Markdown

# Write-back patch curs BNR arhiva (v3) — onom_curs.vc2
Tinta: `COMUN\clase\onom_curs.vc2`, clasa `actualizare_curs_bnr`. Sursa patch-ului:
`docs\patch_curs_bnr_arhiva.md` (v3) si `docs\patch_curs_bnr_arhiva.diff`.
## 0. Stare de pornire
- `git status --short clase/onom_curs.vc2` (COMUN) — gol, fara modificari necomise.
- `svn status clase/onom_curs.vc2` — `I` (ignorat de SVN, fisier text generat).
- Backup inainte de orice modificare, in scratchpad: `onom_curs.vc2.bak`, `onom_curs.vcx.bak`,
`onom_curs.VCT.bak`.
## 1. Metoda de editare
Editare byte-safe cu script Python (mod binar `rb`/`wb`), fara `Edit`/`sed -i`. Continutul nou
(ASCII pur) a fost extras direct din `docs\patch_curs_bnr_arhiva.md` (blocurile `NOU` pentru
`citeste_curs_bnr`, indentare identica cu fisierul tinta — offset 0) si reconstruit manual pentru
blocul `initializeaza` (indentarea reala din fisier e cu 1 tab mai adanca decat in markdown: linia
`Case This.dData < ...` are 7 tab-uri in fisier, nu 6 ca in document — s-a aplicat +1 tab pe toate
liniile blocului nou, pastrand structura interna neschimbata).
## 2. Linii schimbate efectiv (dupa write-back, confirmate cu `git diff`)
Trei zone, toate in `actualizare_curs_bnr`:
1. **Proprietati noi** `clinkan` / `clinkarhiva` — inserate in ordine alfabetica in
`*<DefinedPropArrayMethod>` (dupa `*p: clink`), in `*<PropValue>` (dupa `clink = ...`) si in
`_memberdata` (dupa `<memberdata name="clink".../>`), exact ca in patch.
2. **`PROCEDURE citeste_curs_bnr`** (era 37 linii, acum 92) — parametru `tnSursa`, `Do Case` pentru
alegerea link-ului (`cLink`/`cLinkArhiva`/`cLinkAn`), cautare inapoi zi cu zi (max 10 incercari),
reincercare pe anul precedent pentru `tnSursa=2`, coduri de retur `0`/`1`/`2`.
3. **`PROCEDURE initializeaza`**, ramura `nTip=1` de dupa ora 13 (era 4 linii, acum 15) — cascada
`citeste_curs_bnr(1)` -> `citeste_curs_bnr(2)` -> mesaje, link nou `https://www.cursbnr.ro/` in
loc de `http://www.bnr.ro` doar pe aceasta ramura.
`git diff --stat` (COMUN): `1 file changed, 79 insertions(+), 7 deletions(-)`. `git diff` integral
verificat — apar EXCLUSIV liniile din patch, nimic in alta zona a fisierului (fara diacritice
schimbate, fara CRLF/reindentari colaterale).
## 3. Cens octeti >= 0x80 (diacritice)
| | inainte | dupa |
|---|---|---|
| octeti >= 0x80 (total) | 0 | 0 |
| CRLF | 1718 | 1790 |
| LF izolate (lf - crlf) | 0 | 0 |
Secventa de octeti inalti e identica (goala in ambele versiuni — fisierul nu contine diacritice in
zonele atinse sau in restul fisierului). Zero LF izolate inainte si dupa — toate liniile noi au
fost inserate cu `\r\n`, consistent cu restul fisierului. Cresterea de 1790-1718=72 linii CRLF
corespunde exact insertiilor nete (2+2+2 proprietati + 11 linii nete in `initializeaza` + 55 linii
nete in `citeste_curs_bnr`).
## 4. Write-back text -> binar
Comanda:
```
powershell -ExecutionPolicy Bypass -File D:\ROA\UTIL\foxbin2prg\txt2vcx.ps1 -TextFile D:\ROA\ROAFACTURARE\COMUN\clase\onom_curs.vc2 -ProjectRoot D:\ROA\ROAFACTURARE -AllowComun
```
Iesire:
```
O,P1,E0,S1,X0,c:\users\mmari\appdata\local\temp\txt2bin_roafacturare\16352-20260917221154630\comun\clase\onom_curs\verify\onom_curs.vc2
--- Sumar txt2vcx ---
OK D:\ROA\ROAFACTURARE\COMUN\clase\onom_curs.vc2
Toate cele 1 fisier(e) au fost scrise cu succes.
```
`onom_curs.vcx` si `onom_curs.VCT` au mtime nou (22:11:55, imediat inaintea `.vc2` la 22:11:56 —
scriere in aceeasi rulare).
## 5. Fidelity check pe binar (independent de mtime)
Reconvertit binarul proaspat scris (`onom_curs.vcx`) intr-un cache TEMPORAR separat, cu
`vcx2txt.ps1 -Source ... -CacheRoot <scratchpad>\fidelity_check -Force`, si comparat textul
regenerat cu textul sursa:
```
cmp fidelity_check\COMUN\clase\onom_curs.vc2 COMUN\clase\onom_curs.vc2
-> FIDELITY OK: byte-identical
```
Rezultat: **identic byte cu byte**. Round-trip confirmat.
## 6. Stare finala
`git status --short` in COMUN:
```
M clase/onom_curs.vc2
```
Doar `.vc2` e urmarit de git (binarele `.vcx`/`.VCT` nu sunt versionate); niciun alt fisier atins.
**Niciun commit, niciun `svn commit`, niciun rebuild de EXE.** Modificarea ramane necomisa, in
asteptarea aprobarii/probei manuale a lui Marius (pasii de proba sunt in
`docs\patch_curs_bnr_arhiva.md`, sectiunea 6).