Files
roafacturare/docs/S1_inventar_campuri_formular_unificat.md
Marius Mutu d9f5ca4226 docs: planurile, proiectarile si rapoartele de lucru intra in versionare
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
2026-08-11 22:17:17 +03:00

132 lines
22 KiB
Markdown

# S1 — Inventar camp-cu-camp: formularele de azi -> formularul unificat
Livrabilul povestii **S1** din `docs\plan_13_unificare_formular_facturare.md`. Investigatie
read-only, documentatie pura (fara editari de cod, fara `git_sync.ps1`/`txt2vcx.ps1`, fara commit).
Baza folosita, extinsa aici, nu refacuta:
- `docs\cercetare\inventar_controale_formulare.md` — etichete reale, controale, conditii de
vizibilitate din `frm_date_factura` / `frm_date_aviz` / `frm_alte_date`.
- `docs\cercetare\modifica_date_factura_parametri.md` — cei 15 parametri ai
`pack_facturare.modifica_date_factura`, mapati pe controalele din `frm_modifica_factura`.
- `docs\plan_13_unificare_formular_facturare.md`, sectiunile **I** (asezarea antetului), **I-bis**
(contractul lui `modifica_date_factura`), **F** (serie/numar/data — cale proprie), **G-bis**
(rutele de scriere) si povestea **S1**.
Cele patru formulare de origine, prescurtate in tabel: `frm_date_factura`, `frm_date_aviz`,
`frm_modifica_factura`, `frm_alte_date`. Cele patru grupuri din formularul unificat (sectiunea I a
planului): **Identitatea documentului**, **Partener si sursa**, **Pliat — analitice**, **Pliat —
alte date** (cu subgrupurile ei: delegat/transport, adresa de facturare, incasare, text aditional,
si un subgrup nou, raportare).
## Tabelul de campuri
| Camp (eticheta reala) | Control azi + `fisier:linie` | Formularul de origine | Grupul unificat | Pliat / vizibil mereu | Conditii de vizibilitate azi | Ruta de scriere | Observatii |
|---|---|---|---|---|---|---|---|
| **Tip document** (fel document) | `Ct_clb_fdoc` = combo `_combobox1` FACTURA/PROFORMA/BON FISCAL (`ofacturare.vc2`, Init `9563-9796`); pe aviz, camp cautare `caut_ora.vcx` (Init `7354-7600`) — `inventar_controale_formulare.md` §3 | `frm_date_factura` + `frm_date_aviz` | Identitatea documentului | vizibil mereu | mereu vizibil (niciun `RemoveObject` gasit) | schimbarea tipului -> `do_schimba_tipdoc` realoca serie/numar (plan §B, §S3); **nu** e parte din cei 14 parametri `modifica_date_factura` | containerul difera intre factura (combo) si aviz (cautare) — de unificat la implementare (S3); linia exacta `ADD OBJECT` a controlului nu e in inventar, doar range-ul Init |
| **Serie document** | `Clb_serie_act` label "Serie document" (factura) / fara label explicit override (aviz), container `clb_serie_act` (`serii_numere.vcx`) — inventar §3; la editare: `txtSerieAct` (`ofacturare_comun.vc2:5605-5614`), gating `chkSerieAct` (`:5405-5416`, activare `:5743-5750`) | `frm_date_factura`/`frm_date_aviz` (creare) + `frm_modifica_factura` (editare azi, prin bifa) | Identitatea documentului | vizibil mereu | eliminat daca `poDate.rezultat_serii` nu e in `(1,2,3)` — inventar §3 | pe loc, `modifica_date_factura` (`V_SERIE_ACT`), regim **conditionat** (doar daca `NOT NULL` si difera de curent), propaga in `DOCUMENTE`/`ACT`/`IREG_PARTENERI`/`JV2007`/`RUL` dupa `ID_FACT` — `modifica_date_factura_parametri.md:29`, plan §F/§I-bis | decizia 9: cele patru bife dispar; in unificat campul e blocat/deblocat de `but_modifica`, **fara** conditia de azi `!EMPTY(numar_act)` (plan I:531-535) |
| **Numar document** | `Clb_nract` = "Numar document"/"Nr. documentului", `InputMask=get_mask(14,0)` — inventar §3; editare: `txtNrAct` (`:5594-5603`), gating `chkNrAct` (`:5392-5403`, activare `:5743-5750`) | `frm_date_factura`/`frm_date_aviz` + `frm_modifica_factura` | Identitatea documentului | vizibil mereu | mereu prezent | pe loc, `modifica_date_factura` (`V_NUMAR_ACT`), conditionat, propaga in aceleasi 5 tabele dupa `ID_FACT` — `modifica_date_factura_parametri.md:28` | idem decizia 9 |
| **Data document** (data act) | `Clb_dataact` = "Data document"/"Data documentului" — inventar §3; editare: `txtDataAct` (`:5572-5581`), gating `chkDataAct` (`:5353-5364`) | `frm_date_factura`/`frm_date_aviz` + `frm_modifica_factura` | Identitatea documentului | vizibil mereu | mereu prezent | pe loc, `modifica_date_factura` (`V_DATA_ACT`), conditionat — `modifica_date_factura_parametri.md:26` | idem decizia 9 |
| **Data scadenta** | `Clb_data_scadenta` = "Data scadenta" — **nu exista pe aviz**; editare: `txtDataScad` (`:5583-5592`), gating `chkDataScad` (`:5366-5377`) | `frm_date_factura` (doar) + `frm_modifica_factura` | Identitatea documentului | **dezactivat**, nu eliminat, cand `gnScadentaAutomata=1` (`ofacturare.vc2:9713-9715`) | vezi coloana anterioara | pe loc, `modifica_date_factura` (`V_DATA_SCAD`), conditionat — `modifica_date_factura_parametri.md:27` | specific facturii; idem decizia 9 |
| **Data curs valutar** (zi curs) | `Clb_zi_curs` = "Data curs valutar"/"Data cursului valutar" — inventar §3 | `frm_date_factura` + `frm_date_aviz` | Identitatea documentului | eliminat pe factura la retur (`tip in(8,9)`, `ofacturare.vc2:9718-9722`) | decizia 15 (S4d) schimba conditia: apare doar cand documentul nu e retur **si** (e in valuta **sau** a intrat pe grid un articol cu pret in valuta) | **nu** e parte din cei 14 parametri `modifica_date_factura` — trimis catre cursoarele de articole (`poDate.zi_curs`, `ofacturare.prg:272-303`), nu e scris separat in antet | **vezi Neclarificate** — nicio ruta de scriere documentata pentru modificarea acestui camp pe un document deja emis |
| **Valuta** | `Ct_clb_valuta` = "Valuta" — **nu exista pe aviz** | `frm_date_factura` (doar) | Identitatea documentului | eliminat daca `poDate.in_valuta=0` (`ofacturare.vc2:9725-9732`) | — | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Client** (nume client) | `Ct_clb_nume_client` = "Nume client" (factura); eticheta schimbata pe aviz ("Retur de la"/"Gestiune sursa" pe transfer) | `frm_date_factura` + `frm_date_aviz` | Partener si sursa | vizibil mereu | eticheta variaza pe tip transfer (aviz) | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Cod fiscal** (derivat) | `txtCodFiscal`/`lblCodFiscal`, `ReadOnly` | `frm_date_factura` (doar) | Partener si sursa | vizibil mereu | langa client | niciuna — derivat, doar afisare | readonly |
| **Sold curent client** (derivat) | `txtSoldLei`/`lblSoldLei`, populat din `GetSoldClient()` daca `poDate.id_client<>0` | `frm_date_factura` (doar) | Partener si sursa | vizibil mereu | doar cand `id_client<>0` | niciuna — derivat, doar afisare | readonly |
| **Verificare ANAF** (buton, nu camp) | `But_verifica1` | `frm_date_factura` (doar) | Partener si sursa | vizibil mereu | — | actiune, nu camp de antet | — |
| **Sursa** ("Altele" — eticheta dinamica) | `Ct_clb_altele`, `.do_schimba_explicatia(...)` — eticheta comuta intre "Nr. contract"/"Nr. comanda"/"Nr. factura"/"Nr. facturi"/"Locatie" (`ofacturare.vc2:9633-9643`) | `frm_date_factura` + `frm_date_aviz` | Partener si sursa | eliminat complet daca `gnScadereStoc=0 and tip in(1,5,10)` fara copiere | vezi coloana anterioara | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Gestiune sursa** (init) | `Ct_clb_gestiune_init` = "Gestiune sursa", ToolTipText despre stocurile tuturor gestiunilor | `frm_date_factura` (doar) | Partener si sursa | eliminat impreuna cu Responsabil in majoritatea cazurilor `gnScadereStoc=0` | — | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Politica de preturi** | `Ct_clb_politici_preturi` = "Politica de preturi" | `frm_date_aviz` (doar) | Partener si sursa | eliminat pe majoritatea tipurilor cu comanda | — | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Tip venit/cheltuiala** | `Ct_clb_venchelt` = "Venit / cheltuiala" | `frm_date_factura` + `frm_date_aviz` | Pliat — analitice | eliminat pe aviz pentru `tip=23,41,25` (`ofacturare.vc2:7438-7461`) | vezi coloana anterioara | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Sectie** | `Ct_clb_sectie` = "Sectie" | `frm_date_factura` + `frm_date_aviz` | Pliat — analitice | intotdeauna prezent (niciun `RemoveObject` gasit) | — | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Responsabil** | `Ct_clb_responsabil` = "Responsabil" | `frm_date_factura` + `frm_date_aviz` | Pliat — analitice | eliminat cand `gnScadereStoc=0` sau `tip in(4,7,8,9,48,49)` — factura: `ofacturare.vc2:9646-9707` | vezi coloana anterioara | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Lucrare** | `Ct_clb_lucrare` = "Lucrare" | `frm_date_factura` + `frm_date_aviz` | Pliat — analitice | nu s-a gasit eliminare conditionata | — | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Ruta** | `Ct_clb_ruta` — **doar** `frm_modifica_factura` (`ofacturare_comun.vc2:5510-5526`, cautare `5695-5721`); **nu exista** in `frm_alte_date` sau `frm_date_factura`/`frm_date_aviz` | `frm_modifica_factura` (doar) | Pliat — alte date > delegat/transport | pliat | mereu editabil (fara restrictie in cod — I:521-522) | pe loc, `modifica_date_factura` (`V_ID_RUTA`), regim **neconditionat** — `modifica_date_factura_parametri.md:16` | singurul din cei 14 fara echivalent in `frm_alte_date`; **vezi Neclarificate** pentru introducerea initiala |
| **Delegat** | `Ct_clb_delegat` = "Delegat" (`ferestre_cere_date.vc2:2553`, `frm_alte_date`); acelasi nume in `frm_modifica_factura` (`ofacturare_comun.vc2:5473-5489`, cautare `5654-5678`) | `frm_alte_date` + `frm_modifica_factura` | Pliat — alte date > delegat/transport | pliat | mereu editabil | pe loc, `modifica_date_factura` (`V_ID_DELEGAT`), neconditionat — `modifica_date_factura_parametri.md:17` | `But_modifica1` din `frm_alte_date` (`ferestre_cere_date.vc2:2343`) deschide `nom_parteneri_modifica` pe delegatul curent — actiune, nu camp separat |
| **Auto / Masina** | `Ct_clb_masina` = "Masina" (`ferestre_cere_date.vc2:2569`); acelasi nume in `frm_modifica_factura` (`5491-5508`, cautare `5680-5693`) | `frm_alte_date` + `frm_modifica_factura` | Pliat — alte date > delegat/transport | pliat | mereu editabil | pe loc, `modifica_date_factura` (`V_ID_MASINA`), neconditionat — `modifica_date_factura_parametri.md:18` | — |
| **Agent** | `Ct_clb_agent` = "Agent" (`ferestre_cere_date.vc2:2537`); acelasi nume in `frm_modifica_factura` (`5455-5471`, cautare `5639-5652`) | `frm_alte_date` + `frm_modifica_factura` | Pliat — alte date > delegat/transport | pliat | mereu editabil | pe loc, `modifica_date_factura` (`V_ID_AGENT`), neconditionat — `modifica_date_factura_parametri.md:19` | — |
| **Data si ora expedierii** | `Clb_dataora_exp` = "Data si ora expedierii" (`ferestre_cere_date.vc2:2443`); `frm_modifica_factura`: `Clb_dataora_exp.Text_simplu1`, `ControlSource="poRec.dataora_exp"` (`5437-5453`) | `frm_alte_date` + `frm_modifica_factura` | Pliat — alte date > delegat/transport | pliat | mereu editabil | pe loc, `modifica_date_factura` (`V_DATAORA_EXP`), neconditionat — `modifica_date_factura_parametri.md:20` | validat **obligatoriu** in `inainte_de_do_termin` (`ofacturare_comun.vc2:5723-5734`) — singurul camp din grup cu validare de continut, nu doar de scriere |
| **Adresa de facturare** | `clb_adresa_facturare` = "Adresa facturare" (`ferestre_cere_date.vc2:2422`); `frm_modifica_factura` (`5418-5435`, cautare `5621-5637`) | `frm_alte_date` + `frm_modifica_factura` | Pliat — alte date > adresa de facturare | pliat | mereu editabil | pe loc, `modifica_date_factura` (`V_ID_FACTURARE`), neconditionat — `modifica_date_factura_parametri.md:21` | seteaza si `poRec.adresa_facturare` (text derivat), nu doar id-ul |
| **Text aditional** | `Ed_tx_simplu1` = "Text aditional (max. 1000 caractere)" (`ferestre_cere_date.vc2:2585`); `frm_modifica_factura`: `Ed_tx_simplu1._EDBASE1`, `MaxLength=1000` (`5528-5551`) | `frm_alte_date` + `frm_modifica_factura` | Pliat — alte date > text aditional | pliat | mereu editabil | pe loc, `modifica_date_factura` (`V_TEXT_ADITIONAL`), neconditionat, **fara** `NVL` — `modifica_date_factura_parametri.md:23` | comentariul VFP la `:4575` spune "MAXIM 250 CARACTERE" dar `MaxLength` control e 1000 — contradictie din sursa, neverificata mai departe |
| **Mod incasare** (radiogrup) | `opt_incasat` — 4 optiuni: Fara incasare / Chitanta / Bon fiscal / POS Card (`ferestre_cere_date.vc2:2638`), masina de stari `actualizeaza_tipincasare` (`2698-2856`) | `frm_alte_date` (doar) | Pliat — alte date > incasare | pliat | comuta vizibilitatea celorlalte campuri din grupul incasare | **nu** e parte din cei 14 parametri `modifica_date_factura` | **vezi Neclarificate** — probabil scris la emitere, dovada nu a fost gasita in materialele citite |
| **Casa** (-> "Banca POS" pe POS) | `Cb_casa` (`ferestre_cere_date.vc2:2362`) | `frm_alte_date` (doar) | Pliat — alte date > incasare | pliat, ascuns cand `opt_incasat=1` | vezi `actualizeaza_tipincasare` | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Serie chitanta** | `Clb_serie_chit` (`ferestre_cere_date.vc2:2503`) | `frm_alte_date` (doar) | Pliat — alte date > incasare | pliat, vizibil doar la Chitanta | `Thisform.clb_serie_chit.genereazaNumar()` la comutare (`2783`) | **nu** e parte din cei 14 parametri — alocare de numar propriu, nu antet document | **vezi Neclarificate** |
| **Nr. chitanta / Nr. bon** | `Clb_nrchit` (`ferestre_cere_date.vc2:2480`) | `frm_alte_date` (doar) | Pliat — alte date > incasare | pliat, eticheta variaza (Chitanta/Bon fiscal/POS) | `do_aloca_nr_bon`/`do_aloca_nr_pos` la comutare (`2807`, `2844`) | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Incasat** (suma) | `Clb_incasat` (`ferestre_cere_date.vc2:2461`) | `frm_alte_date` (doar) | Pliat — alte date > incasare | pliat, ascuns doar la `opt_incasat=1` | — | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Modifica bon** (buton, nu camp) | `cmdModificaBon` -> `do_modifica_bon` -> `viz_config_serii_complet WITH 3` (`ferestre_cere_date.vc2:2526`, `3001-3010`) | `frm_alte_date` (doar) | Pliat — alte date > incasare | pliat, vizibil doar la Bon fiscal | — | actiune, nu camp de antet | — |
| **POS** (bifa) | `chkPOS` (`ferestre_cere_date.vc2:2409`) | `frm_alte_date` (doar) | Pliat — alte date > incasare | pliat, vizibil doar la Bon fiscal | — | **nu** e parte din cei 14 parametri | **vezi Neclarificate** |
| **Detaliat** / **Listare detaliata** | `chkDetaliat` in `frm_alte_date` (`ferestre_cere_date.vc2:2396`, vizibil doar la Bon fiscal); control **cu acelasi nume** in `frm_modifica_factura` (`ControlSource="poRec.listare_detaliata"`, `5379-5390`) | `frm_alte_date` + `frm_modifica_factura` (posibil, vezi observatie) | Pliat — alte date > incasare (azi) / candidat mutare langa Text aditional | pliat | vizibil doar la Bon fiscal (`frm_alte_date`) | pe loc, `modifica_date_factura` (`V_LISTARE_DETALIATA = NVL(...,0)`), neconditionat — `modifica_date_factura_parametri.md:22` | **vezi Neclarificate** — nu s-a confirmat ca cele doua controale `chkDetaliat` scriu acelasi camp Oracle (`VANZARI.LISTARE_DETALIATA`); merse din numele identic, nu din dovada de cod citita in ambele locuri |
| **Tip factura** (SAF-T) | `cboTipFactura` in `frm_alte_date` (`ferestre_cere_date.vc2:2378`, grup incasare); control **cu acelasi nume** in `frm_modifica_factura` (`ControlSource="poRec.tip_saft"`, `RowSource` din `saft_tip_facturi`, `Visible = m.gl406`, `5335-5351`, `5739-5741`) | `frm_alte_date` + `frm_modifica_factura` (posibil) | Pliat — alte date > **grup nou "raportare"** (langa eFactura) — I-bis:583,588 | pliat | `frm_modifica_factura`: vizibil doar cand `gl406` (`COMUN\programe\oinit_optiuni.prg:524`) | pe loc, `modifica_date_factura` (`V_TIP_SAFT`), neconditionat — `modifica_date_factura_parametri.md:24` | **vezi Neclarificate** — `RowSource` al `cboTipFactura` din `frm_alte_date` nu a fost verificat, deci legatura cu `V_TIP_SAFT` e prin nume, nu prin cod citit in ambele locuri |
| **eFactura** | **niciun control, nicaieri** — `poRec.efactura` vine doar din `Scatter` initial (`ofacturare_comun.vc2:4538-4564`) sau e fortat `0` la selectie multipla (`:4576`) | — (nu exista azi) | Pliat — alte date > **grup nou "raportare"** — I-bis:583,588 | pliat, control nou | N/A | pe loc, `modifica_date_factura` (`V_EFACTURA`), neconditionat — `modifica_date_factura_parametri.md:25,88` | **camp fara control azi, nicaieri — primeste unul nou** in formularul unificat (cerinta explicita a sarcinii) |
| **cele patru bife de protectie a antetului** (`chkSerieAct`, `chkNrAct`, `chkDataAct`, `chkDataScad`) | `frm_modifica_factura`: `5405-5416`, `5392-5403`, `5353-5364`, `5366-5377`; activare comuna `Init` `5743-5750` | `frm_modifica_factura` (doar) | **DISPARE** — inlocuit cu un singur `but_modifica` la nivel de panou de antet (plan I:524-535) | — | fiecare bifa `Enabled` doar daca `!EMPTY(NVL(poRec.numar_act,0))` | N/A — mecanism de deblocare a UI, nu camp de date | decizia 9: se abandoneaza **si conditia lor**; cu antetul deschis in unificat, toate campurile sunt editabile fara exceptie si fara conditie de stare |
## Campuri fara control azi, nicaieri
- **`V_EFACTURA`** — vezi randul dedicat mai sus. Singurul camp din cei 14 parametri fara echivalent
in niciunul din cele patru formulare de azi; primeste control nou in formularul unificat, in
grupul nou "raportare" din sectiunea pliata, langa `V_TIP_SAFT`.
## Ce dispare
- **Cele patru bife** `chkSerieAct`/`chkNrAct`/`chkDataAct`/`chkDataScad` din `frm_modifica_factura`
— decizia 9 le elimina cu totul, inlocuite de un singur `but_modifica` la nivel de antet. Conditia
lor de activare (`!EMPTY(numar_act)`) se abandoneaza si ea, nu se transpune pe campuri.
- **`frm_articol_factura`** (dialogul de detaliu pe linie, `ofacturare.vc2:1108-2659`) — desfiintat
odata cu unificarea (plan §B); campurile lui de discount (procent + valoare unitara) se muta ca
**coloane in grid** (decizia 14, S4c), nu ca parte a antetului — nu apar in acest tabel pentru ca
nu sunt campuri de antet.
- **`frm_alte_date`** ca dialog separat nu dispare in etapa I (S3b: "`frm_alte_date` nu se sterge cat
timp calea veche mai e in uz"), dar cele patru grupuri ale lui se muta *si* in formularul unificat,
ca sectiune pliata.
## Ruta de scriere pe loc vs. regenerare (rezumat din G-bis)
| Ce s-a schimbat | Cum se scrie |
|---|---|
| Serie, numar, data, scadenta, delegat, auto (masina), agent, adresa facturare, text aditional, ruta, `dataora_exp`, `listare_detaliata`, `tip_saft`, `efactura` (cei 14 din I-bis) | pe loc, `modifica_date_factura` — propaga dupa `ID_FACT` |
| Explicatia si `taxcode` pe o linie | pe loc, `modifica_explicatie_articol` (`PACK_FACTURARE:14464-14472`) |
| Cantitati, preturi, linii adaugate/sterse, discount, gestiune, cota TVA | **regenerare** |
| Tip venit/cheltuiala, sectie, responsabil, lucrare, client, cod fiscal, sold, sursa/altele, gestiune sursa, politica de preturi, valuta, zi curs, tip document, mod incasare + campurile lui | **neclarificat** — nu apar in cei 14 parametri ai `modifica_date_factura` si nu s-a gasit alta ruta explicita in materialele citite (vezi sectiunea urmatoare) |
## Neclarificate
Campuri pentru care nu s-a gasit control azi, sau nu s-a gasit ruta de scriere la modificarea unui
document deja emis. Nu s-a inventat nimic — fiecare e marcat aici in loc de o presupunere in tabel.
1. **Ruta de scriere lipsa — analiticele antetului**: `Ct_clb_venchelt` (venit/cheltuiala),
`Ct_clb_sectie` (sectie), `Ct_clb_responsabil` (responsabil), `Ct_clb_lucrare` (lucrare). Niciunul
nu e parte din cei 14 parametri `modifica_date_factura` (I-bis). Nu s-a gasit alt apel care sa le
scrie la modificarea unui document existent, in materialele citite pentru S1.
2. **Ruta de scriere lipsa — identitate/sursa in antet, alta decat serie/numar/data**: `Ct_clb_fdoc`
(tip document — schimbarea felului la un document deja emis, distinct de `do_schimba_tipdoc` la
creare), `Ct_clb_valuta`, `Clb_zi_curs`, `Ct_clb_nume_client`, `Ct_clb_altele` (sursa),
`Ct_clb_gestiune_init`, `Ct_clb_politici_preturi` (aviz). Aceeasi observatie: fara parametru
dedicat in `modifica_date_factura`, fara alta ruta gasita.
3. **Ruta de scriere lipsa — grupul de incasare**: `opt_incasat`, `Cb_casa`, `Clb_serie_chit`,
`Clb_nrchit`, `Clb_incasat`, `chkPOS`. Nu apar in cei 14 parametri. Alocarea/dezalocarea numerelor
de chitanta/bon/POS e documentata (`actualizeaza_tipincasare`), dar scrierea efectiva a valorilor
de incasare in Oracle la modificarea unui document deja emis nu a fost gasita in materialele citite
pentru S1 — posibil sa se intample doar la emitere initiala, nu la editare ulterioara.
4. **Ambiguitate `chkDetaliat`**: exista cate un control cu acest nume atat in `frm_alte_date`
(`ferestre_cere_date.vc2:2396`, vizibil doar la Bon fiscal) cat si in `frm_modifica_factura`
(`ofacturare_comun.vc2:5379-5390`, `ControlSource="poRec.listare_detaliata"`, mereu vizibil). Nu
s-a verificat in cod daca cele doua scriu efectiv acelasi camp `VANZARI.LISTARE_DETALIATA` sau
sunt doua concepte distincte cu nume coincident — merjul in tabel e prin numele identic, nu prin
citirea ambelor `ControlSource`.
5. **Ambiguitate `cboTipFactura`**: acelasi tip de coincidenta — `frm_alte_date`
(`ferestre_cere_date.vc2:2378`, in grupul de incasare) si `frm_modifica_factura`
(`ControlSource="poRec.tip_saft"`, `5335-5351`). `RowSource`-ul din `frm_alte_date` nu a fost
deschis pentru a confirma ca populeaza acelasi `saft_tip_facturi`.
6. **Ruta `V_ID_RUTA` la introducerea initiala**: controlul `Ct_clb_ruta` exista doar in
`frm_modifica_factura` — nu a fost gasit un control echivalent pe niciunul din celelalte trei
formulare (creare document). Nu e clar din materialele citite unde/cum se stabileste ruta la
introducerea initiala a unui document (posibil implicit din utilizator/sesiune, nesetat prin UI).
7. **Linia exacta de definire a controalelor din tabelul §3 al inventarului**: `inventar_controale_formulare.md`
nu contine coloana `fisier:linie` pentru tabelul de antet (spre deosebire de tabelele de butoane) —
citatele de mai sus folosesc range-urile de `Init` (`ofacturare.vc2:9563-9796` / `:7354-7600`) si
liniile explicite date in prealabil pentru conditiile de vizibilitate, nu linia `ADD OBJECT` a
fiecarui control individual. Daca implementarea are nevoie de linia exacta, trebuie cautata cu
`vfp_symbols.ps1 -Where`.
8. **Drept de utilizator**: inventarul de baza semnaleaza deja ca nu a verificat daca vizibilitatea
controalelor de antet mai depinde si de `gcAcces`/drepturi, dincolo de `poDate.tip`/setari globale
de firma. Nepreluat aici, ramane deschis.