- ooperatii_comune: verific_partener nu mai construieste SQL NULL cand contul primit e NULL (EMPTY(.NULL.) e .F. in VFP) - utile\context_watch.ps1 si utile\docs_revizie_check.ps1: masurarea contextului sesiunii si cadenta reviziei de documentatie, prin hook-uri Claude Code (instalare in docs\monitorizare-context.md) - reguli_lucru: delegare la subagenti, modificari minime si scoped, scrierea si revizuirea documentatiei, changelog strictul necesar (regulile 3, 6, 9, 11, 12) - scripturi-migrare-db: continutul unui script (scoped, fara select, idempotent) - teste noi pentru cele doua erori din achizitia de import - restul documentatiei compactata, fara pierdere de reguli Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RYbiinqXxdEqXi53x4Ro7K
24 KiB
Inventar COMUN - functii/clase reutilizabile (ROAGEST)
Scop: reutilizare comune la plan/code-review (ex. cursor2lista() in loc de Scan manual pe cursor). Generat prin grep pe COMUN/programe/*.prg + cache text D:\ROA_vfp_textcache\roagest. Numerele = nr. aparitii grep in proiect (indiciu 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 functii 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 incarcat cel mai recent cu SET PROCEDURE ADDITIVE -
in roagest.prg OPROCEDURI_COMUNE.PRG (linia 238) vine dupa proceduri_comune (linia 218), deci activa
e varianta din oproceduri_comune.prg. Unice din varianta veche: extrage_optiuni(cLista,nId)
(valoare din lista "id::val;id::val", 11 uz), 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)
goExport.export2xls/export2xlsx(mai sus) - preferat pt. cod nou.export_excel/export_excel_grid/exportare/LIST_EXCEL(proceduri_excel.prg) - OLE Automation celula-cu-celula, cere Excel instalat; uz mic (2-12).get_excel_maskacolo = masca VFP -> format Excel (nu confunda cuget_maskdin sect. 1).- Clasa
excelxml(excelxml.vcx, COMUN\UTILE\excel) - Excel XML direct dingridobject, fara Excel instalat (proprietati file/sheetname/openaftersaving, metodasave); 73 uz. Plus functiile libereexport_xls/ExportToXMLExceldin oproceduri_comune.prg (sect. 1) - cod diferit de metodagoExport.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 cugcS(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.crsListaTempin cursor2lista/cursor2listac). - Mesaje utilizator: mereu
amessagebox()/amessage(), nuMESSAGEBOX()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 in nota sect. 1 (2 functii unice folosite, restul dublate/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
getUserRepPathdin oExportConfig - complet comentata (moarta); varianta activa e functia libera omonima dinproceduri_rapoarte.prg(cod diferit). - Clase de nomenclatoare mari (
onomenclatoare.vcx,onom_articole.vcx,stocuri.vcx,rulaje.vcx,ointroduceri*.vcx,oinventar.vcx) - business logic gestiune, prea voluminos pt. acest inventar (candidat pt. 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 rar in fluxurile curente (excelxml.vcxe acoperita la sect. 3). - Functiile din
COMUN\programefara nicio aparitie prin grep in ROAGEST (posibil doar alte aplicatii ROA) - omise.
8. Cum se foloseste
- La plan: inainte de 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, export Excel/listare construite manual in loc degoExport.export2*/FoxyPreview, sau un dialog de alegere nomenclator din SELECT+grid in loc decaut_*(ocautare.prg), semnaleaza comuna corespunzatoare din tabelele de mai sus.