Files
comun/docs/inventar-comun.md
Marius Mutu 53d9f1c64a Achizitie import unificata (ROAGEST): ointroduceri, teste UI, documentatie
- import_nota / import_adauga_factura: flux unificat note contabile + articole,
  sincronizare automata, total factura automat, TVA impartit pe conturile
  creditoare ale notelor (rundele 1-31)
- runda 32: totalurile import_nota pe _label/_textbox din _baza.vcx (Arial 10),
  fara containerele clb_tx_simplu si fara bifa "Recalculeaza TVA" (recalcul
  mereu automat); "Sincronizeaza facturile secundare" mutata sub butoane
- utile/Teste: harness UI VFP headless (vfp_ui_harness.ps1, ui_harness.prg,
  precompilare, mock-uri) in radacina; suitele e2e pentru achizitia din import
  grupate in utile/Teste/achizitie_import/
- docs: flux editare text vcx/scx, testare-ui-vfp si testare-vfp-mcp (mutate
  din ROAGEST, general valabile), inventar comun, orchestrare subagenti,
  conventie GO recno, depanare testare VFP

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019DGibQKa5uK4P2TNSFFQNh
2026-07-20 00:50:18 +03:00

24 KiB

Inventar COMUN - functii/clase reutilizabile (ROAGEST)

Scop: referinta rapida pt. plan/code-review, ca sa refoloseasca comunele in loc sa se reinventeze (ex: Scan manual pt. lista dintr-un cursor, cand exista deja cursor2lista()). Generat prin grep pe COMUN/programe/*.prg + cache text D:\ROA_vfp_textcache\roagest (nu presupuneri). Numerele = nr. aparitii grep in tot proiectul (indiciu de cat de "canonic" e functia).

1. Functii comune - COMUN\programe\oproceduri_comune.prg (clasa Oracle/executor + utilitare)

Functie Semnatura scurta Ce face Uz
oExecute (cSql,cCursor,lProgress,cTitlu,nHandle,lShowError,lQuitOnError,lReconnect) ruleaza SQL prin Oracle, deschide cursor. Retur: <0 eroare (vezi oPrelucrareEroare), 0 fara randuri, >0 nr. randuri 851
oExecuta idem oExecute, wrapper ca oExecute dar arata singur amessagebox la eroare si intoarce .T./.F. 256
oPrelucrareEroare () intoarce mesajul de eroare Oracle formatat, dupa un oExecute cu retur <0 93
oFunction2Value (cSql/cFunctie,...) executa o functie Oracle si intoarce direct valoarea scalara 31
oSelect2Value (cSql,...) SELECT cu 1 coloana/1 rand -> valoare scalara 58
oSelecteaza2Value variantul "Selecteaza" al lui oSelect2Value idem, alt nume istoric 20
oSelecteaza2Object (cSql,...) SELECT 1 rand -> obiect cu proprietati = coloane 23
Connect / Disconnect / Oreset() - (re)conectare/deconectare goConn, reset stare executor 33/10/119
ProcessError - procesare interna eroare conexiune 14
amessagebox (cMesaj,nIcon,cTitlu,...) MESSAGEBOX wrapper standard ROA (icon/titlu/localizare) - functia cea mai folosita din tot COMUN 1308
amessage - varianta simpla fara icon/butoane multiple 14
cursor2lista (cCursor,cColumn,cSeparator,cFiltru) Scan cursor -> lista valori separate (";" default), pt. coloane necaracter 36
cursor2listac (cCursor,cColumn,cSeparator,cFiltru) ca cursor2lista dar incadreaza itemii intre apostrof (pt. SQL IN ('a','b')) - de folosit in loc de Scan manual 2
lista2array (cLista,@aArray,cSeparator) sparge o lista delimitata intr-un array 35
lista2cursor (cLista,...) lista delimitata -> cursor 21
get_mask (nInt,nDec) intoarce masca de format numeric (ex. "999,999.9999") dupa nr. intregi/zecimale 24
formateaza - formatare valoare dupa masca/tip 18
NEW_ID (tabela,...) genereaza urmatorul ID secvential pt. o tabela 22
NRORD - numar de ordine (contor afisare grid/raport) 217
NRCRT - numar curent (similar NRORD, alt istoric) 108
Get_Ora (nTip) ora curenta formatata dupa tip 150
ULTIMAZI / ultima_zi_din_luna (an,luna) ultima zi calendaristica a lunii 16/25
C_LUNA / CLUNA3 / cluna (nLuna) nume luna (lung/prescurtat) in romana -
get_trimestru / get_semestru (nLuna) trimestrul/semestrul din numar luna -
SAVE_GRID / RESTORE_GRID (oGrid,cCheie) salveaza/restaureaza layout coloane grid (latimi/ordine) in ini/tabela 15/15
SAVE_GRID_COMMENT / RESTORE_GRID_COMMENT idem variante cu comentarii coloane -
SAVE_GRID_TAG / RESTORE_GRID_TAG idem variante cu tag/sortare curenta -
snr_grid - switch_and_restore_grid - schimba sursa gridului si reaplica layout salvat -
XMENU / XMENUP - meniu contextual generic (popup) 22
GETCHOICE - dialog alegere dintr-o lista -
Get_Version (lNoRevision,lInfo,cFileName) citeste versiunea din resursele .exe 15
Get_Hexa (nDeca) conversie zecimal->hex 12
format_msg - formateaza mesaj cu parametri (gen sprintf) -
GetHash - hash generic (verificare integritate/duplicate) 48
export_xls / ExportToXMLExcel - export cursor -> Excel (functii libere aici, la 1234/5502; NU sunt metoda goExport.export_xls din oexport.prg - cod si semnatura diferite, doar nume identic) 24
copiaza_structura_cursor (cSursa,cDest) copiaza doar structura unui cursor (fara date) 27
GETCALLSTACK - stack de apel curent, pt. debug/log erori 24
RemoveCharacters / RemoveCharactersDB (cStr,cChars) elimina caractere dintr-un string / varianta safe pt. query 56/9
XmlSpecialCharacters / WindowsSpecialCharacters / OracleSpecialCharacters (cStr) escapare caractere speciale pe context (XML/Windows/Oracle) 19/11/-
EncryptDecrypt (cStr,cCheie) criptare/decriptare simetrica simpla 23
StringAgg (cCursor,cColumn,cSeparator) agregare valori coloana intr-un singur string (gen LISTAGG) 18
GetNrFromString / GetDigitsFromString / GetIBANFromString (cStr) extrage numere/cifre/IBAN dintr-un text liber 18/-
Atasament2File / File2Atasament - conversie fisier <-> blob-atasament (baza de date) 12/12
romfast_suport / DownloadSupportFile - trimite/descarca fisier suport catre ROA 18
SaveBackupSet / RestoreBackupSet / ExistsBackupSet / DeleteBackupSet / UpdateBackupSet - set de proceduri pt. backup/restaurare setari private utilizator 22/12/12/12/10
GetOptiuneFirma / citeste_optiune_firma (cCod) citeste o optiune de configurare per firma 20
param_listari (cRaport,cTitlu,cSemnaturi,lFaraTab) pregateste parametri standard pt. rapoarte (titlu/semnaturi) 19
ceretitlu_rap - dialog cerere titlu raport 16
aInputBox - InputBox generic cu validare 12
GetPdfPath - cale generare/salvare PDF 13
GetDefaultValue / HasProperty / GetValue / SetValue pe clase interne (ex. optiuni) pattern generic proprietate-cu-default 14/11/464/540
verificare_note_contabile - valideaza notele contabile generate din import (echilibrare debit/credit) 11
verifica_partener / verificare_parteneri / verificare_parteneri_istoric (cCUI/cCod) valideaza/cauta partener in nomenclator dupa CIF/cod, inclusiv istoric 10/4/6
VerificaCodFiscal / GetMeniuVerificareCodFiscal / GetOptiuneVerificareCodFiscal - validare CUI/CIF (ANAF-like) 10
VerifCF / cValidCNP / ValidCNP / GetDataCNP (cCod) validare CIF/CNP + extragere data nastere din CNP 9/-
VerifIBAN / verificare_iban / GetSumaControlIBAN (cIban) validare IBAN (cifra de control) 8/4
TVA2PROCTVA / GetProcTvaStandard / GetCoeficientTvaStandard / ProcentTva2IdJtva / GetIdJtvaStandard - conversii cota TVA <-> procent <-> cod TVA Oracle (gcS) 6/11/-/-/5
GetTaxCodeIdPart / GetTaxCode / GetPaymentCode - coduri taxare/plata pt. e-Factura ANAF 12/-/-
GetArticolByCodDenumire / GetArticolById / GetArticolEFByPartDenumire - cautare articol nomenclator dupa cod/denumire/id 10/6/-
GetPartenerByCodFiscal / GetPartenerByDenumire / GetPartenerByContBanca / GetPartenerByUtil / GetIdPartenerBy... / GetDenumirePartenerById / GetCodFiscalPartenerById - familie de cautari partener (id<->cod fiscal<->denumire<->cont banca) - cauta_ pt. nomenclatoare, prioritar fata de SELECT ad-hoc* 2 fiecare
GetSectieByCsectie / GetSectieById / GetIdSectie / GetGestiuneById - cautari sectie/gestiune 2 fiecare
GetVencheltById / GetIdVenchelt - cautare venit/cheltuiala 2
GetDocumentByContPartenerAct - cautare document existent dupa partener+cont+act 4
GetFdocById - cautare tip document (fdoc) -
GetValutaByISO - cautare valuta dupa cod ISO -
NrLuni2AnLuna / GetDataIreg - conversii perioada an/luna -
sir2array - split string -> array (generic, non-cursor) -
nvl2 / nvl2Default (val,default) echivalent NVL Oracle in VFP 11
TooManyInstances (nInstante) verifica daca ruleaza deja alta instanta a exe-ului -
MyUnzip / UnzipQuickShell / MyUnzipCallBack - dezarhivare (update-uri, atasamente) -
HTTPDownloadFile / DownloadFile - descarcare fisier prin HTTP -
lansare_help / lansare_help_meniu / arata_manual - deschide manualul/help-ul aplicatiei -
viz_prg_instalat / versiune / CheckNewVersion / CheckVersion / UpdateVersion - verificare versiune instalata vs. server update 57 (versiune)
xdir / xdelete / DeleteFiles - utilitare fisiere (listare/stergere) 14/-
ImportTable - import tabel extern (DBF/CSV) -
GET_SCHEMA_GRID - genereaza schema coloane pt. grid dinamic -
CloneObj / CopyProps (oSursa,[oDest]) clonare obiect / copiere proprietati intre obiecte 10/-
Get_zileluc - zile lucratoare -
GetUserDocPath - folder documente utilizator curent -
aleg_document_pereche (vezi ooperatii_comune) vezi sectiune 2 -

Nota: multe din functiile de mai sus exista dublat in proceduri_comune.prg (varianta veche, non-obiect) - ex. NEW_ID, SAVE_GRID*, XMENU, cursor2lista*, lista2array/cursor, get_mask, Get_Version, Get_Hexa, format_msg, C_LUNA/cluna, get_trimestru/semestru, GETCALLSTACK, CloneObj/CopyProps, ceretitlu_rap. La duplicat castiga fisierul adaugat cel mai recent cu SET PROCEDURE ADDITIVE - in roagest.prg OPROCEDURI_COMUNE.PRG (linia 238) vine dupa proceduri_comune (linia 218), deci varianta activa e cea din oproceduri_comune.prg. Din varianta veche raman folosite doar 2 functii unice: extrage_optiuni(cLista,nId) (valoare dintr-o lista "id::val;id::val", 11 uz) si myScatter(tcBlank) (SCATTER generic in obiect, 3 uz); restul functiilor unice de acolo = moarte.

2. Functii comune - COMUN\programe\ooperatii_comune.prg (contabilitate/analitice/balanta)

Functie Ce face Uz
viz_act vizualizare document (act) generic -
aleg_document_pereche alege documentul pereche (ex. factura<->aviz) la asociere -
exista_cont_in_plan_conturi verifica daca un cont exista in planul de conturi -
verific_partener valideaza/completeaza partener pe o inregistrare contabila 7
verific_analitic / verific_analitic_ valideaza analitic contabil (cont+subcont) 7/2
verificare_note_contabile valideaza echilibrarea notelor contabile generate 11
sterge_nota / scrie_nota_import sterge/scrie nota contabila generata din import -
do_assign_analitic atribuie analitic automat pe o linie -
verific_cont verifica existenta/valabilitate cont contabil 9
viz_balanta_contabilitate / viz_balanta / make_tbalanta / Eval_balanta construire/vizualizare balanta de verificare -
completare_gruputil_analitice / completare_tva_analitice / completare_taxname / completare_paymentname / completare_explicatie_tva completeaza campuri derivate pe linie contabila (grup util, TVA, taxname, explicatie) -

3. Export si listare - COMUN\programe\oexport.prg (clasa oExportConfig -> obiect global goExport)

Pattern canonic: goExport.export2frx(...) / goExport.export2xlsx(...) / goExport.export2pdf(...). Preview rapoarte: FoxyPreviewer (gcReportPreviewer = "FoxyPreview" in roagest.prg).

Functie/metoda Semnatura scurta Ce face Uz
export2frx (tcAlias,tcRaport,tlCereTitlu,...,tcReportPreviewer,toPreviewerConfig) REPORT FORM cu preview/print (FoxyPreview), logo, imprimanta din setari - listarea standard, cea mai folosita 155
export2xls (tcAlias,tcNumeFisier,tcListaColoane,tcFiltru) EXPORT TO ... TYPE XL5 (.xls vechi) + deschide fisierul 30
export2xlsx (tcAlias,tcNumeFisier,tcListaColoane,tcFiltru) copytoxlsx() - XLSX nativ modern, preferat pt. cod nou 7
export2xlsxGrid (toGrid,tcNumeFisier,tcWhere,tcOrder) schema din grid (get_schema_grid) -> SELECT -> export2xlsx 3
exportMultiTable2Xlsx (tcTableList,tcFileName) mai multe tabele in acelasi workbook xlsx (clasa VFPxWorkbookXLSX) 3
Export2XmlXls (toGrid,tcFileName,tcSheetName,tlOpen) XML SpreadsheetML via clasa excelxml, direct din grid 2
export2pdf (tcAlias,tcRaport,tlPreview,tcCursorSalvare) REPORT FORM OBJECT pdflistener2 -> PDF; optional continutul in cursor 26
export2html (tcTargetTables,tcNumeFisier,tcTableTitles,tlJustTables) HTML/Excel-HTML din unul/mai multe tabele (TEXTMERGE) 9
export2xml_efactura (toDateFactura,tcCursorLinii,tlSilentios) wrapper getXmlEFactura() - XML e-Factura ANAF 6
export2frx_paginaregrup (...) listare cu numerotare pagini per grup (crsPaginiRaportGrup) 6
getRepPath / getLogoPath (tcRaport / tcLogo) rezolva USR_.frx / logo per schema (DIRGEN\USERREPORTS, atas_atasamente) 24/10
OPEN_DEFAULT_APP (tcNumeFisier) ShellExecute "open" cu aplicatia implicita 70
citesteSetare / modificaSetare (+ *Ini/*Registru) (cCheie[,cVal]) setari registru/ini dupa setTip/setPath/setSectiune 13/11
verificaDate (tcAlias,tnTip,tlSilentios) valideaza alias deschis/cu date inainte de export 16
listareUserReport / export_frx / export_xls - dispatcher + variante vechi (marcate de inlocuit); metoda export_xls != functia libera export_xls din oproceduri_comune.prg 22/13/26
FoxyPreview (functie libera, nu pe goExport) (tcRaport,toPreviewerConfig) preview FoxyPreviewer.App direct pe .frx, apelata din formulare 19
FoxyPreviewerCaller (clasa) AddReport(tcReport,tcClauses) / RunReport combina mai multe .frx intr-un singur preview 7
PreviewerConfig (clasa) SetValue/GetValue property-bag optiuni FoxyPreviewer (param toPreviewerConfig la export2frx) -

Export Excel - 3 mecanisme paralele (atentie la confuzii)

  1. goExport.export2xls/export2xlsx (mai sus) - preferat pt. cod nou (export2xlsx).
  2. export_excel / export_excel_grid / exportare / LIST_EXCEL (proceduri_excel.prg) - OLE Automation, scrie celula cu celula, necesita Excel instalat; uz mic (2-12). get_excel_mask de acolo = conversie masca VFP -> format Excel (nu confunda cu get_mask din sect. 1).
  3. Clasa excelxml (excelxml.vcx, COMUN\UTILE\excel) - Excel XML direct din gridobject, fara Excel instalat (proprietati: file, sheetname, openaftersaving; metoda save); 73 uz. Plus functiile libere export_xls/ExportToXMLExcel din oproceduri_comune.prg (sect. 1) - cod diferit de metoda goExport.export_xls, doar nume identic.

4. Utilitare transversale (COMUN\programe, fisiere neinventariate initial)

gencursor.prg

Functie Semnatura scurta Ce face Uz
gencursor (cNume,cAlias,cSelect,cFiltru,cSchema,cOrder,lAfisare,cGroup,...) obiect deca_baza/ca_baza cu cursor "lazy" (select/filtru/order pe goConn) - baza grilelor cu sursa dinamica; nu construi manual ca_baza 403

validare.prg - validare CIF/CNP cu ANAF/MFIN/VIES (vs. VerifCF/ValidCNP offline din sect. 1)

Functie/clasa Ce face Uz
VerificareCod (clasa) validare completa cu webservice: metode VERIFICARE_CIF/VERIFICARE_CNP/ANAF/MFIN/VIES/validare/GetError 169
VerificareANAF (clasa) sincronizare lista CIF-uri cu ANAF (VerificaListaCIF, ANAF_SincronWebService_PlatitorTva) 26
test_cif / VALIDARE_CIF / test_cnp / VALIDARE_CNP validari format + cifra control, offline 27/19/9/15
VERIFICARE_PLATITORTVA / VIES_VAT / ONRC platitor TVA / verificare VIES / interogare ONRC 5/5/9
IntroducereCod (clasa Form) formular introducere + validare cod 25

ocautare.prg - dialoguri standard de cautare/alegere (de refolosit in loc de SELECT+grid manual)

Functie Ce alege Uz (prg/forme)
caut_gestiune / caut_gestiune_dest gestiune (sursa/destinatie) 25/324, 12/37
caut_fdoc tip document 7/170
caut_explicatie_tva explicatie TVA (filtrare exigibil JC/JV) 9/143
caut_partener / CautPartenerContabilitate partener (generic / dupa cont contabil) 13/104, 16/16
caut_valuta / caut_valuta_iso valuta 11/104
cauta_nom_articole / caut_articol articol (filtru text / multiplu) 8/87, 20/42
caut_sectie / caut_facturi sectie / facturi dupa cont+partener+interval 8/71, 12/34
caut_lucrare, caut_venchelt, caut_contract, caut_delegati, ... ~40 alte dialoguri de nomenclator, uz mic in ROAGEST 2-17

oheader.prg

Clasa Ce face Uz
PSHeader (As Header) dublu-click pe header = sortare (cHOrder), evidentiaza coloana activa, apeleaza cCallMethod (default Refresh) pe parintele gridului 37 in forme

regex.prg

Functie Ce face Uz
strtranx STRTRAN cu regex (grupuri $1, evaluare =expr) 14
GetRegExp / GetRegExpAll / OccursRegExp / StrtranRegExp prima/toate potrivirile, numarare, inlocuire simpla 15/4/4/2
StripNonAscii elimina caractere non-ASCII dintr-un string (whitelist) 11

ini.prg

Functie Semnatura Ce face Uz
getini / setini (cIniFile,cSection,cVar[,cVal]) citire/scriere fisiere .ini low-level (FOPEN) - distinct de GetOptiuneFirma (Oracle) si goExport.citesteSetareIni (wwApi) 28/9

altele (o functie-doua per fisier)

Functie (fisier) Ce face Uz
get_oluna (oproceduri_util.prg) (an,luna) -> obiect cu intervalul calendaristic disponibil (lunamin/anmin/lunamax/anmax) din tabela calendar 22
ReferinteDocumenteNota / ReferinteDocument (odocumente.prg) verifica daca un document e referentiat de altul (pack_documente Oracle) - inainte de stergere/modificare 4/4
anunta_rezultat / scrie_in_mesaje / raport_mesaje (mesaje.prg) log mesaje de verificare in tabel + raport; uz de nisa 2-3

5. Clase UI comune (COMUN\clase, cache text D:\ROA_vfp_textcache\roagest\comun\clase)

Butoane - cmd_butoane.vcx (parinte: _cmd_base.vcx -> buton/cmd_buton)

Mecanism: fiecare buton seteaza doar proprietatea caction (nume metoda) + cpictureup/down. buton.Click (in _cmd_base.vcx) cauta metoda caction pe this.Parent, apoi this.Parent.Parent, apoi Thisform, si o executa cu clistaparametri ca argument daca exista (Pemstatus + macro &). Nu suprascrie Click pe butoane noi - seteaza doar caction pe o instanta din cmd_butoane.vcx.

Clasa buton caction Rol
but_nou / cmd_adauga do_adauga adauga inregistrare noua
but_copiaza do_copiaza copiaza inregistrarea curenta
but_sterge / cmd_sterge inainte_de_do_sterge sterge (cu hook de confirmare)
but_modifica / cmd_modifica inainte_de_do_modifica intra in modificare
but_termin / but_da / cmd_termin do_termin confirma/salveaza si inchide
but_renunt / but_nu / cmd_renunt do_renunt renunta/inchide fara salvare
but_salveaza do_salvare salveaza fara inchidere
but_reset / cmd_reset do_reset reseteaza formularul/filtrul
but_cautare / cmd_cauta do_cauta deschide cautare
but_compara do_compara comparare inregistrari
but_verifica do_verifica validare
but_retur do_retur operatie retur
but_precedent / but_urmator / but_urmator_tot do_precedent / do_urmator / do_urmator_tot navigare inregistrari
but_excel inainte_de_do_excel export Excel
but_listare inainte_de_do_listare listare/raport
but_factura / but_listfactura do_factura / do_listfact facturare/listare factura
but_grafic do_grafic afisare grafic
but_help do_help help contextual
but_modiparam do_modiparam modificare parametri
but_attach do_ataseaza ataseaza fisier
but_reface inainte_de_do_reface reface/reia operatie
cmd_login / cmd_logoff do_login / do_logoff autentificare
cmd_executa / cmd_select do_executa / do_select executie/selectie generica
but_sus / but_jos do_scrollup / do_scrolldown scroll

Container label+text - lb_tx.vcx (parinte: _container, folosesc _lbbase/_txbase din _lb_base.vcx/_tx_base.vcx)

Clasa Rol
clb_tx_simplu / cb_tx_simplu label + textbox simplu
cb_tx_autofill label + textbox cu autocompletare (cautare in nomenclator)
cb_tx_cautare label + textbox + buton cautare integrat
clb_tx_data label + textbox cu masca data
clb_an_luna pereche an/luna
clb_luna_intre / clb_nr_intre interval luna/numar (de-la, pana-la)
clb_n1n2_simplu pereche 2 numere simple
ct_cb_tx container compus text+combo
ed_tx_simplu label + editbox
op_tx_simplu label + optiongroup

Proprietate cheie comuna: pcobj (leaga containerul de camp/proprietate din obiectul sursa).

Baze formular - _frm_base.vcx / _frm_child.vcx

Clasa Rol
_frmbase baza standard formular; implementeaza deja do_adauga/do_copiaza/do_modifica/do_renunt/do_sterge/do_termin (override doar daca logica difera de default)
_frmnotitle ca _frmbase, fara bara de titlu; are propriile do_adauga/do_modifica/do_renunt/do_sterge/do_termin
frm_termin subclasa _frmbase, expune direct do_termin
frm_termin_renunt subclasa frm_termin, adauga do_renunt (fara override suplimentar)
frm_gol subclasa _frmbase "goala", cu propriile do_adauga/do_modifica/do_sterge
_pgfrmbase baza pageframe

Grid - _grd_base.vcx

Clasa Rol
_grdbase grid de baza (subclasa _grid)
_grdrow subclasa _grdbase, randuri custom
_grdfooter grid separat "atasat" la un grid sursa prin metoda attachtogrid (copiaza coloane/fonturi de la oSrcGrd) - pt. randuri de total/footer sub un grid principal

6. Conventii transversale

  • Prefixe variabile: g/gc/gn/gl (globale char/numeric/logic), p/pc/pn/pl (proprietati obiect), t/tc/tn/tl (parametri PARAMETERS/LPARAMETERS), l/lc/ln/ll (locale), m. (scoping explicit memvar quand hay coliziune cu camp).
  • SQL pass-through: mereu prin goExecutor.oExecute/oExecuta, niciodata SQLEXEC direct in cod nou; schema calificata cu gcS (ex. gcS + ".STOC"); parametri legati cu ?param (bind variable VFP->Oracle).
  • Retur executor: oExecute -> numeric (<0 eroare/oPrelucrareEroare(), 0 fara randuri, >0 nr. randuri); oExecuta -> logic (.T./.F., arata singur eroarea).
  • Cursoare temporare: prefix crs* (ex. crsListaTemp in cursor2lista/cursor2listac).
  • Mesaje utilizator: mereu amessagebox()/amessage(), nu MESSAGEBOX() direct.
  • Formatare numerica: get_mask() + formateaza(), nu masti hardcodate in cod nou.
  • Fisiere .vc2/.sc2: TAB-uri semnificative, proprietatile in blocul *<PropValue> sunt alfabetizate - orice editare manuala trebuie sa respecte formatul (vezi CLAUDE.md, flux editare text).

7. Ce am lasat pe dinafara (intentionat)

  • proceduri_comune.prg (varianta veche) - acoperita acum in nota de la sect. 1 (2 functii unice folosite, restul dublate sau moarte); functiile ei unice cu 0 aparitii (caut_nume_politica, make_sectii_utilizator, recompune_optiuni, cere*/compara*, debug_*_eventtracking, ...) - omise.
  • oproceduri_comune_imob.prg - varianta specifica ROAIMOB, nu ROAGEST.
  • xdate.prg - script procedural (incarca cursoarele xsets/xrequest/xnote la DO), nu expune functii.
  • Metoda getUserRepPath din oExportConfig - complet comentata (moarta); varianta activa e functia libera omonima din proceduri_rapoarte.prg (cod diferit).
  • Clase de nomenclatoare mari (onomenclatoare.vcx, onom_articole.vcx, stocuri.vcx, rulaje.vcx, ointroduceri*.vcx, oinventar.vcx) - business logic specific gestiune, prea voluminos pt. acest inventar (candidat pt. un inventar separat, per-flux, daca devine necesar).
  • Clasele de configurare/serii (configurare.vcx, serii_numere.vcx, ferestre_oracle.vcx, bon_fisc.vcx) si utilitarele (GridExtras, ctl32, hpdf) - neinventariate, uz mai rar in fluxurile curente de lucru (excelxml.vcx e acoperita la sect. 3).
  • Functiile din COMUN\programe fara nicio aparitie gasita prin grep in ROAGEST (posibil folosite doar de alte aplicatii ROA) - omise.

8. Cum se foloseste

  • La plan: inainte de a scrie cod/obiecte noi, scaneaza acest fisier + un grep tintit (grep -rn "<nume_functie_candidata>" COMUN/programe D:\ROA\_vfp_textcache\roagest) ca sa confirmi ca nu exista deja o comuna echivalenta.
  • La code-review: daca un diff introduce Scan manual pt. liste, MESSAGEBOX direct, SQLEXEC direct, un buton cu Click suprascris in loc de caction, un export Excel/listare construite manual in loc de goExport.export2*/FoxyPreview, sau un dialog de alegere nomenclator facut din SELECT+grid in loc de caut_* (ocautare.prg), semnaleaza reutilizarea comunei corespunzatoare din tabelele de mai sus.