# 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.