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

22 KiB

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.