Files
roafacturare/docs/cercetare/inventar_controale_formulare.md
2026-09-09 22:19:22 +03:00

15 KiB

Inventar controale — formulare facturare (ROAFACTURARE, COMUN\clase)

Investigatie read-only (fara editari, fara git_sync.ps1/txt2vcx.ps1, fara commit). Toate liniile sunt din fisierele text .vc2 (FoxBin2Prg), verificate pe fisierul real (nu .bak). Scop: pregatirea unui mockup pentru un formular de facturare unificat — inventarul reflecta controalele existente, nu o propunere noua.

1. Butoane frm_facturare_articole (ofacturare.vc2:10968-15739)

Grid sursa (comanda/lista preturi) = grd_articole (Left=9,Top=336,Width=326,Height=130, RecordSource=crsarticole, ofacturare.vc2:11570). Grid destinatie (linii factura) = grd_factura (Left=379,Height=337, RecordSource=crsfactura, ofacturare.vc2:12263).

Control Clasa de baza Caption/Picture L/T/W/H ToolTipText Pozitie fata de grid fisier:linie
But_modifica1 but_modifica (fara caption, modific_sus.bmp) 773/61/30/27 "Modificare (CTRL+M)" dreapta-sus grd_factura (Anchor=9) ofacturare.vc2:11192
But_sterge1 but_sterge sterg_sus.bmp 811/61/30/27 "Stergere (CTRL+D)" dreapta-sus grd_factura, langa But_modifica1 ofacturare.vc2:11229
But_renunt1 but_renunt renunt_sus.bmp 792/1/30/27 "Renuntare (ESC)" coltul din dreapta-sus al formularului ofacturare.vc2:11202
But_reset1 but_reset reset_sus.bmp 303/295/30/27 "Reseteaza" deasupra grd_articole (Top grid=336) ofacturare.vc2:11213
But_urmator1 but_urmator, caction=do_urmator urmator1.bmp 343/348/30/27 "Verificare" lateral-dreapta grd_articole (Left grid+Width+8=343) ofacturare.vc2:11237
But_urmator2 but_urmator, caction=do_urmator2 urmator1.bmp 343/143/30/27 "Verificare" deasupra grd_articole, langa grd_contracte ofacturare.vc2:11247
But_urmator_tot1 ("adauga tot din comanda") but_urmator_tot, caction=do_adauga_tot urmator1_tot.bmp, fara ToolTipText 343/378/30/27, Visible=.F. implicit — lateral-dreapta grd_articole, sub But_urmator1 ofacturare.vc2:11257
But_retur but_retur retur1.bmp 343/407/30/27, Visible=.F. implicit "Retur" lateral-dreapta grd_articole, sub But_urmator_tot1 ofacturare.vc2:11221

"Adauga tot din comanda" — But_urmator_tot1.Click -> do_adauga_tot (ofacturare.vc2:13169-13198): parcurge crsarticole (SCAN) si apeleaza Thisform.do_adauga_articol(.T.) pentru fiecare linie; daca articolul e gestionabil si cantitatea ramasa >0, cere confirmare "Nu ati selectat toata cantitatea... treceti la urmatorul?" (aMessageBox cu butoane Da/Nu/Renunta, cod 7).

Vizibilitate pe tip document (Init, ofacturare.vc2:14976-15344, Do Case poDate.tip):

Control Vizibil cand Dovada
But_urmator_tot1 poDate.eProforma=1, poDate.lCopiere, tip=3 (comanda), tip=4 (din avize), tip in(21,28,42,47) (aviz din comanda), tip=25, tip in(8,9) (retur factura), tip=24 (retur aviz) ofacturare.vc2:15113,15120,15150,15166,15177,15215,15240,15245
But_retur tip in(1,5,7,10) (facturare din lista de preturi) ofacturare.vc2:15127 — comentariu explicit: "pot sa fac retur de articole intr-o factura de vanzare"
But_urmator2 / grd_contracte eliminate (RemoveObject) daca nu exista crsarticole1 (fara contracte pe formular) ofacturare.vc2:15294-15324

Conventia de clase de butoane (suita ROA): clasa de baza buton (_cmd_base.vc2:16, AS _cmdbase OF "_cmd_base.vcx") — 30x27px implicit, Caption="" (buton doar cu imagine), BackColor=alb, SpecialEffect=1. Click (_cmd_base.vc2:41-70) executa dinamic This.Parent.<caction>() (macro pe cAction/clistaparametri) — de-asta majoritatea instantelor nu au Caption/Click propriu, doar caction=<nume_metoda>. Subclasele concrete (but_nou, but_sterge, but_modifica, but_urmator_tot, etc.) sunt in cmd_butoane.vc2:7-441, fiecare hardcodand caption/cpictureup/cpicturedown/Picture (..\grafice\*.bmp, stare sus/jos) si ToolTipText cu shortcut intre paranteze (ex. "Modificare (CTRL+M)"). but_nou (do_adauga, nou_sus.bmp, "Adaugare (CTRL+N)") — cmd_butoane.vc2:214.

2. Butoane frm_facturare_articole2 (prototip, ofacturare.vc2:15741-19355)

Diferenta arhitecturala fata de #1: un singur grid grd_factura (Left=12,Top=204,Height=240, ofacturare.vc2:16601) cu editare inline prin comboboxuri in celule (cCodMat.cboCodmat, cDenumire.cCboDenumire, cGestiune.cCboGestiune) — nu exista casete separate de cautare articol (ct_codmat/ct_articole) si nici crsarticole/comanda sursa.

Control Clasa de baza Caption/Picture L/T/W/H ToolTipText Pozitie fata de grid fisier:linie
But_nou1 but_nou (mostenit, caption=do_adauga suprascris in clasa) nou_sus.bmp 719/175/30/27 "Adaugare (CTRL+N)" deasupra-dreapta grd_factura (Top grid=204) ofacturare.vc2:15936
But_sterge1 but_sterge sterg_sus.bmp 747/175/30/27 "Stergere (CTRL+D)" deasupra-dreapta grd_factura, langa But_nou1 ofacturare.vc2:15955
But_renunt1 but_renunt renunt_sus.bmp 716/1/30/27 "Renuntare (ESC)" coltul din dreapta-sus ofacturare.vc2:15944

But_nou1.Click -> do_adauga (ofacturare.vc2:17118-17122, override propriu, nu but_nou.caction implicit): SELECT crsFactura / APPEND BLANK / this.grd_factura.SetFocus() — adauga direct un rand gol in grid si da focus, spre deosebire de do_adauga_articol complex din #1.

Nu exista But_modifica in aceasta clasa — editarea se face inline in celulele gridului, nu prin dialog separat.

Bonus relevant pentru mockup: acest prototip incorporeaza deja aceleasi controale de antet (Ct_clb_venchelt, Ct_clb_sectie, Ct_clb_responsabil, Ct_clb_lucrare, Ct_clb_altele, Ct_clb_valuta, clb_fdoc, Clb_serie_act1, Clb_nract, Clb_dataact, Clb_data_scadenta, Clb_zi_curs) direct pe formularul de articole, la ofacturare.vc2:15741+182..749 — e cea mai apropiata schita existenta de un "formular unificat".

3. Antet frm_date_factura (ofacturare.vc2:8482-9869) si frm_date_aviz (ofacturare.vc2:6566-7618)

Control cerut frm_date_factura — caption real frm_date_aviz — caption real Tip/container Obligatoriu / vizibil conditionat
tip venit/cheltuiala Ct_clb_venchelt = "Venit / cheltuiala" Ct_clb_venchelt = "Venit / cheltuiala" ct_clb_cautare (container cautare) eliminat pe aviz pentru tip=23,41,25 (transfer/retur) — ofacturare.vc2:7438-7461
sectie Ct_clb_sectie = "Sectie" Ct_clb_sectie = "Sectie" ct_clb_cautare intotdeauna prezent in ambele (nu s-a gasit RemoveObject)
responsabil Ct_clb_responsabil = "Responsabil" Ct_clb_responsabil = "Responsabil" ct_clb_cautare eliminat cand gnScadereStoc=0 sau tip in(4,7,8,9,48,49) — factura: 9646-9707; aviz: eliminat pe majoritatea tipurilor cu comanda/lista
lucrare Ct_clb_lucrare = "Lucrare" Ct_clb_lucrare = "Lucrare" ct_clb_cautare nu s-a gasit eliminare conditionata
altele Ct_clb_altele — label dinamic ("Altele" implicit) idem ct_clb_cautare, .do_schimba_explicatia(...) eticheta se schimba pe tip: "Nr. contract"/"Nr. comanda"/"Nr. factura"/"Nr. facturi"/"Locatie" (9633-9643); eliminat complet daca gnScadereStoc=0 and tip in(1,5,10) fara copiere
valuta Ct_clb_valuta = "Valuta" nu exista pe aviz ct_clb_cautare eliminat daca poDate.in_valuta=0 (ofacturare.vc2:9725-9732)
fel document Ct_clb_fdoc = combo _combobox1 FACTURA/PROFORMA/BON FISCAL, label "Tip document" Ct_clb_fdoc = camp cautare "Felul documentului" (caut_ora.vcx) container diferit intre cele doua forme (combo la factura, cautare la aviz) intotdeauna vizibil
serie Clb_serie_act label "Serie document" Clb_serie_act (fara label explicit override) clb_serie_act (serii_numere.vcx) eliminat daca poDate.rezultat_serii nu e in (1,2,3) — nicio serie configurata
numar Clb_nract = "Numar document" Clb_nract = "Nr. documentului" clb_tx_simplu, InputMask=get_mask(14,0) mereu prezent
data act Clb_dataact = "Data document" Clb_dataact = "Data documentului" clb_tx_data mereu prezent
data scadenta Clb_data_scadenta = "Data scadenta" nu exista pe aviz clb_tx_data dezactivat (nu eliminat) cand gnScadentaAutomata=1 (.dezactiveaza(), 9713-9715)
zi curs Clb_zi_curs = "Data curs valutar" Clb_zi_curs = "Data cursului valutar" clb_tx_data eliminat pe factura daca tip in(8,9) retur (9718-9722)
client Ct_clb_nume_client = "Nume client" Ct_clb_nume_client = "Nume client" ct_clb_cautare eticheta se schimba pe aviz ("Retur de la"/"Gestiune sursa") in functie de tip transfer

Control specific doar in frm_date_factura: Ct_clb_gestiune_init="Gestiune sursa" (ToolTipText: "Daca nu alegeti gestiunea, la scaderea din stoc a unui articol va vor fi aratate stocurile tuturor gestiunilor pe care aveti drepturi.") — eliminat impreuna cu Ct_clb_responsabil in majoritatea cazurilor gnScadereStoc=0; txtCodFiscal/lblCodFiscal (cod fiscal, ReadOnly, langa client) si txtSoldLei/lblSoldLei (sold curent client, populat din GetSoldClient() daca poDate.id_client<>0); But_verifica1 (verificare ANAF). Control specific doar in frm_date_aviz: Ct_clb_politici_preturi="Politica de preturi" — eliminat pe majoritatea tipurilor cu comanda.

Toate conditiile de vizibilitate sunt in Init (nu in do_schimba_tipdoc, care doar realoca seria/numarul): frm_date_factura.Init = ofacturare.vc2:9563-9796; frm_date_aviz.Init = ofacturare.vc2:7354-7600 (citit doar pana la ~7533; ultimele ~65 linii nu au fost verificate, vezi "Necunoscute ramase").

4. frm_alte_date (ferestre_cere_date.vc2:2219-3353)

Control Caption Grupare logica fisier:linie
Ct_clb_delegat "Delegat" Delegat/transport 2553
Ct_clb_masina "Masina" Delegat/transport 2569
Ct_clb_agent "Agent" Delegat/transport 2537
Clb_dataora_exp "Data si ora expedierii" Delegat/transport 2443
opt_incasat (radiogrup 4 optiuni) "Fara incasare" / "Chitanta" / "Bon fiscal" / "POS Card" Incasare 2638
Cb_casa "Casa" (-> "Banca POS" pe POS) Incasare 2362
Clb_serie_chit "Serie chitanta" Incasare (doar Chitanta) 2503
Clb_nrchit "Nr. chitanta" (-> "Nr. bon" pe Bon fiscal/POS) Incasare 2480
Clb_incasat "Incasat" Incasare 2461
cmdModificaBon (icon but_modifica) Incasare (doar Bon fiscal), caction=do_modifica_bon 2526
chkPOS "POS" Incasare (doar Bon fiscal) 2409
chkDetaliat "Detaliat" Incasare (doar Bon fiscal) 2396
cboTipFactura (combo, langa label "Tip factura") Incasare 2378
clb_adresa_facturare "Adresa facturare" Adresa de facturare 2422
Ed_tx_simplu1 "Text aditional (max. 1000 caractere)" Text aditional 2585
But_modifica1 (icon) caction implicit -> do_modifica actiune pe delegat (deschide nom_parteneri_modifica) 2343

actualizeaza_tipincasare (2698-2856) comuta vizibilitatea pe This.opt_incasat.Value:

Valoare Vizibile Ascunse Numar alocat
1 = Fara incasare — cb_casa,clb_serie_chit,clb_nrchit,clb_incasat,_shape3,lb_simplu1,cmdModificaBon,chkPOS,chkDetaliat dezaloca 16(chitanta)/3(bon)/26(POS)
2 = Chitanta cb_casa,clb_serie_chit,clb_nrchit,clb_incasat,_shape3,lb_simplu1 cmdModificaBon,chkPOS,chkDetaliat Thisform.clb_serie_chit.genereazaNumar() (2783)
3 = Bon fiscal cb_casa,clb_nrchit,clb_incasat,_shape3,lb_simplu1,cmdModificaBon,chkPOS,chkDetaliat clb_serie_chit Thisform.do_aloca_nr_bon([CLICK]) (2807)
4 = POS/Card cb_casa,clb_nrchit,clb_incasat,_shape3,lb_simplu1,cmdModificaBon clb_serie_chit,chkPOS,chkDetaliat Thisform.do_aloca_nr_pos([CLICK]) (2844)

cmdModificaBon.Click -> do_modifica_bon (3001-3010) deschide viz_config_serii_complet WITH 3 (oserii_numere.prg) si, la confirmare, dezaloca+realoca numarul de bon fiscal.

5. Butoane frm_facturi (lista facturi, ofacturare_comun.vc2:1168-5126, fisierul real —

verificat, nu .pre_s4butoane.bak)

Control Caption/Picture Metoda apelata (caction/override) fisier:linie
but_modifica1 modific_sus.bmp caction implicit = inainte_de_do_modifica -> meniu xmenu("Modificare date factura;Editare factura (articole, cantitati, preturi)") -> optiune 1: do_modifica(), optiune 2: do_editare_factura() ADD OBJECT 1424; inainte_de_do_modifica 4925-4934; do_modifica 4538-4637; do_editare_factura 3715-3869
But_modifica2 (fara caption, Top=341 — pe grid-ul de detalii, nu in bara de sus) caction=do_modifica_explicatie, ToolTipText "Modificare explicatie articol" 1434; do_modifica_explicatie 4639-4656
But_copiaza1 copy_sus.bmp, Visible=.F. implicit caction mostenit = do_copiaza 1404; do_copiaza 3628-3713
But_sterge1 sterg_sus.bmp caction mostenit (inainte_de_do_sterge din clasa but_sterge) -> do_sterge 1463; do_sterge 4658-4874
But_listare1 listare_sus.bmp do_listare 1414
But_verifica1 (fara Picture explicit) do_verifica, ToolTipText "Vericare coduri fiscale pe serverul ANAF" 1473
But_attach1 attach_sus.bmp caction= gol, override But_attach1.Click 1394

Nu exista buton separat "editare 2024": do_editare_factura este optiunea 2 din meniul popup deschis de but_modifica1 (inainte_de_do_modifica), nu un buton propriu.

Init (4936-4959): daca glLunaInchisa (luna contabila inchisa), Thisform.but_sterge1.Visible = .F. si se scoate dreptul de stergere din gcAcces — singura conditionare de vizibilitate pe drept gasita in aceasta clasa.

Necunoscute ramase

  • do_modifica (frm_facturare_articole, 13746-13914, 168 linii) si do_sterge/do_editare_factura (frm_facturi) nu au fost citite in detaliu — doar identificate ca existenta/semnatura; daca mockup-ul are nevoie de logica exacta de validare la modificare/stergere linie, trebuie citite explicit.
  • frm_date_aviz.Init (7354-7600) a fost citit doar pana la ~7533; ultimele ~65 linii (probabil finalizare laPozitii/repozitionare, simetrice cu frm_date_factura) nu au fost verificate.
  • Nu am verificat daca vizibilitatea controalelor din sectiunea 3 mai depinde si de drept de utilizator (nu doar poDate.tip/gnScadereStoc/gnScadentaAutomata) — codul citit foloseste doar variabile globale de setare firma si tipul documentului, nicio verificare explicita gcAcces/drepturi pe aceste containere.
  • Dimensiunile exacte (Width/Height) ale containerelor ct_clb_cautare/clb_tx_* nu sunt listate explicit in multe instante (mostenite din clasa de baza caut_ora.vcx/lb_tx.vcx) — nu am deschis acele biblioteci pentru dimensiuni implicite; doar Left/Top/TabIndex sunt suprascrise per instanta.
  • Nu am inspectat caut_ora.vcx/lb_tx.vcx/serii_numere.vcx (clasele de baza ale containerelor clb_*/ct_clb_*) pentru a confirma dimensiunile standard sau comportamentul exact al proprietatii cconditie (pare sa controleze cand campul de cautare cere obligatoriu o valoare, nu vizibilitatea).