Registratura: adaugare/editare fara erori la partener NULL, lista doar ultimul document, fonturi Arial 10 (M1-M5)
M1 modifica_reg_dg: garda id_part NULL/empty (mesaj + Return .F.), NVL pe id_part/nr_pag, functia intoarce succes. M2 validare partener in toate cele 3 puncte de salvare, INAINTE de blocarea campurilor (Command2.Click salveaza inainte sa blocheze; bara laterala si Page3.Deactivate nu mai salveaza/prompteaza cu partener NULL). M3 do_adauga: documentul nou intra direct in editare (llock=.F., focus cmdDenumire); eliminat mesajul fals "Toate modificarile au efect imediat!". M4 viz_registratura + do_cauta: filtru initial "doar ultimul document" (subquery max(id_reg)); fara criterii de cautare se pastreaza filtrul, nu se incarca toata baza. M5 fonturi: eliminate 154 suprascrieri "Arial Narrow" si rebazate 96 controale baseclass pe COMUN _baza.vcx (textbox/label/checkbox/commandbutton/optiongroup); Init de grid propaga fontul la coloane si headere (fara asta raman Arial 9 - verificat empiric). Teste: harness headless (init env dedicat, form, adaugare+editare cu verificare in baza) + test UI vizual cu screenshots pe fluxul real (19 PASS / 0 FAIL). Diff-uri de audit in docs/diff_runda1_*.patch. M6 (build EXE) BLOCAT headless: roaRegistratura.pjx refera 48 fisiere hardcodate pe "c:\program files\...\vfp 9" (masina 32-bit din 2021) + COMUN\utile\hpdf\ReportOutput\ctl32_progressbar.vcx redenumit _old; necesita repathing o data in VFP9 IDE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018H9za5A9Tk6wcLFof6seds
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -285,6 +285,12 @@ DEFINE CLASS pg_meniu_princ AS pg_meniu OF "..\comun\clase\ofundal.vcx"
|
||||
|
||||
PROCEDURE Page3.Deactivate
|
||||
Local lnRaspuns
|
||||
*!* 23.07.2026 MM - partener NULL: nu se salveaza, se renunta explicit (P1/P2)
|
||||
If !This.ct_part_nr_data1.llock And (Isnull(goRegistratura.id_part) Or Empty(goRegistratura.id_part))
|
||||
This.ct_part_nr_data1.llock = .T.
|
||||
AMESSAGEBOX('Alegeti partenerul! Modificarile nu au fost salvate.',0+48,'Atentie')
|
||||
This.ct_part_nr_data1.Refresh()
|
||||
Endif
|
||||
If !This.ct_part_nr_data1.llock
|
||||
This.ct_part_nr_data1.llock = .T.
|
||||
lnRaspuns = AMESSAGEBOX('Dori<72>i s<> salva<76>i modific<69>rile f<>cute?',4+32,'Confirmare')
|
||||
|
||||
@@ -449,7 +449,6 @@ DEFINE CLASS frm_agenti AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Anchor = 15, ;
|
||||
ColumnCount = 5, ;
|
||||
DeleteMark = .F., ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Height = 336, ;
|
||||
Left = 15, ;
|
||||
Name = "grd_agenti", ;
|
||||
@@ -461,27 +460,22 @@ DEFINE CLASS frm_agenti AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
ZOrderSet = 6, ;
|
||||
Column1.ColumnOrder = 3, ;
|
||||
Column1.ControlSource = "zona", ;
|
||||
Column1.FontName = "Arial Narrow", ;
|
||||
Column1.Name = "cZona", ;
|
||||
Column1.Width = 172, ;
|
||||
Column2.ColumnOrder = 1, ;
|
||||
Column2.ControlSource = "nume_agent", ;
|
||||
Column2.FontName = "Arial Narrow", ;
|
||||
Column2.Name = "cNume", ;
|
||||
Column2.Width = 205, ;
|
||||
Column3.ColumnOrder = 4, ;
|
||||
Column3.ControlSource = "telefon1", ;
|
||||
Column3.FontName = "Arial Narrow", ;
|
||||
Column3.Name = "cTelefon1", ;
|
||||
Column3.Width = 116, ;
|
||||
Column4.ColumnOrder = 2, ;
|
||||
Column4.ControlSource = "functie", ;
|
||||
Column4.FontName = "Arial Narrow", ;
|
||||
Column4.Name = "cFunctia", ;
|
||||
Column4.Width = 127, ;
|
||||
Column5.ColumnOrder = 5, ;
|
||||
Column5.ControlSource = "telefon2", ;
|
||||
Column5.FontName = "Arial Narrow", ;
|
||||
Column5.Name = "cTelefon2", ;
|
||||
Column5.Width = 116
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_grd_base.vcx" BaseClass="grid" />
|
||||
@@ -489,81 +483,72 @@ DEFINE CLASS frm_agenti AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
ADD OBJECT 'grd_agenti.cFunctia.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Functie", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_agenti.cFunctia.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_agenti.cFunctia.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grd_agenti.cNume.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Nume", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_agenti.cNume.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_agenti.cNume.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grd_agenti.cTelefon1.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Telefon 1", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_agenti.cTelefon1.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_agenti.cTelefon1.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grd_agenti.cTelefon2.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Telefon 2", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_agenti.cTelefon2.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_agenti.cTelefon2.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grd_agenti.cZona.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Zona", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_agenti.cZona.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_agenti.cZona.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
PROCEDURE actualizeaza_grid1
|
||||
Lparameters lcFiltru
|
||||
@@ -667,6 +652,15 @@ DEFINE CLASS frm_agenti AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
PROCEDURE do_sterge2
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE grd_agenti.Init
|
||||
DODEFAULT()
|
||||
*!* 23.07.2026 MM - propaga fontul gridului la coloane si headere (P5)
|
||||
This.SetAll('FontName', This.FontName, 'Column')
|
||||
This.SetAll('FontSize', This.FontSize, 'Column')
|
||||
This.SetAll('FontName', This.FontName, 'Header')
|
||||
This.SetAll('FontSize', This.FontSize, 'Header')
|
||||
ENDPROC
|
||||
|
||||
ENDDEFINE
|
||||
|
||||
DEFINE CLASS frm_agenti_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
@@ -1006,7 +1000,6 @@ DEFINE CLASS frm_clienti AS _frmbase OF "..\comun\clase\_frm_base.vcx"
|
||||
ADD OBJECT 'grd_clienti' AS _grdrow WITH ;
|
||||
ColumnCount = 9, ;
|
||||
DeleteMark = .F., ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Height = 366, ;
|
||||
Left = 15, ;
|
||||
Name = "grd_clienti", ;
|
||||
@@ -1017,41 +1010,32 @@ DEFINE CLASS frm_clienti AS _frmbase OF "..\comun\clase\_frm_base.vcx"
|
||||
Width = 636, ;
|
||||
ZOrderSet = 6, ;
|
||||
Column1.ControlSource = "nume", ;
|
||||
Column1.FontName = "Arial Narrow", ;
|
||||
Column1.Name = "cNume", ;
|
||||
Column1.Width = 172, ;
|
||||
Column2.ControlSource = "cod_fiscal", ;
|
||||
Column2.FontName = "Arial Narrow", ;
|
||||
Column2.Name = "cCod_fiscal", ;
|
||||
Column2.Width = 91, ;
|
||||
Column3.ControlSource = "telefon", ;
|
||||
Column3.FontName = "Arial Narrow", ;
|
||||
Column3.Name = "cTelefon", ;
|
||||
Column4.ControlSource = "adresa", ;
|
||||
Column4.FontName = "Arial Narrow", ;
|
||||
Column4.Name = "cAdresa", ;
|
||||
Column4.Width = 270, ;
|
||||
Column5.ControlSource = "banca", ;
|
||||
Column5.FontName = "Arial Narrow", ;
|
||||
Column5.Name = "cBanca", ;
|
||||
Column5.Width = 114, ;
|
||||
Column6.ControlSource = "cont_banca", ;
|
||||
Column6.FontName = "Arial Narrow", ;
|
||||
Column6.Name = "cCont_banca", ;
|
||||
Column6.Width = 52, ;
|
||||
Column7.ControlSource = "reg_comert", ;
|
||||
Column7.FontName = "Arial Narrow", ;
|
||||
Column7.Name = "cReg_comert", ;
|
||||
Column7.Width = 133, ;
|
||||
Column8.ColumnOrder = 9, ;
|
||||
Column8.ControlSource = "judet", ;
|
||||
Column8.FontName = "Arial Narrow", ;
|
||||
Column8.Name = "cJudet", ;
|
||||
Column8.Visible = .T., ;
|
||||
Column8.Width = 68, ;
|
||||
Column9.ColumnOrder = 8, ;
|
||||
Column9.ControlSource = "localitate", ;
|
||||
Column9.FontName = "Arial Narrow", ;
|
||||
Column9.Name = "cLocalitate", ;
|
||||
Column9.Width = 127
|
||||
*< END OBJECT: ClassLib="..\comun\clase\_grd_base.vcx" BaseClass="grid" />
|
||||
@@ -1059,147 +1043,129 @@ DEFINE CLASS frm_clienti AS _frmbase OF "..\comun\clase\_frm_base.vcx"
|
||||
ADD OBJECT 'grd_clienti.cAdresa.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Adresa", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cAdresa.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_clienti.cAdresa.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cBanca.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Banca", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cBanca.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_clienti.cBanca.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cCod_fiscal.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Cod fiscal", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cCod_fiscal.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_clienti.cCod_fiscal.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cCont_banca.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Cont", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cCont_banca.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_clienti.cCont_banca.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cJudet.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Judet", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cJudet.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_clienti.cJudet.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
Visible = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cLocalitate.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Localitate", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cLocalitate.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_clienti.cLocalitate.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cNume.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Nume client", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cNume.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_clienti.cNume.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cReg_comert.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Nr.Reg.Com.", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cReg_comert.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_clienti.cReg_comert.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cTelefon.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Telefon", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grd_clienti.cTelefon.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grd_clienti.cTelefon.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
PROCEDURE actualizeaza_grid1
|
||||
Lparameters lcFiltru
|
||||
@@ -1292,6 +1258,15 @@ DEFINE CLASS frm_clienti AS _frmbase OF "..\comun\clase\_frm_base.vcx"
|
||||
PROCEDURE do_sterge2
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE grd_clienti.Init
|
||||
DODEFAULT()
|
||||
*!* 23.07.2026 MM - propaga fontul gridului la coloane si headere (P5)
|
||||
This.SetAll('FontName', This.FontName, 'Column')
|
||||
This.SetAll('FontSize', This.FontSize, 'Column')
|
||||
This.SetAll('FontName', This.FontName, 'Header')
|
||||
This.SetAll('FontSize', This.FontSize, 'Header')
|
||||
ENDPROC
|
||||
|
||||
ENDDEFINE
|
||||
|
||||
DEFINE CLASS frm_clienti_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
@@ -1709,7 +1684,6 @@ DEFINE CLASS frm_curs AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
AutoSize = .T., ;
|
||||
camp_nume = data, ;
|
||||
Caption = "Data", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Left = 54, ;
|
||||
Name = "Ck_data", ;
|
||||
TabIndex = 1, ;
|
||||
@@ -1723,7 +1697,6 @@ DEFINE CLASS frm_curs AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
AutoSize = .T., ;
|
||||
camp_nume = data2, ;
|
||||
Caption = "Data2", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Left = 99, ;
|
||||
Name = "Ck_data2", ;
|
||||
TabIndex = 1, ;
|
||||
@@ -1738,7 +1711,6 @@ DEFINE CLASS frm_curs AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
camp_nume = nume_val, ;
|
||||
Caption = "Valuta", ;
|
||||
Comment = "*:OnResize=LT", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Left = 6, ;
|
||||
Name = "Ck_numeval", ;
|
||||
TabIndex = 19, ;
|
||||
@@ -1774,7 +1746,6 @@ DEFINE CLASS frm_curs AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Anchor = 15, ;
|
||||
ColumnCount = 4, ;
|
||||
DeleteMark = .F., ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Height = 341, ;
|
||||
Left = 8, ;
|
||||
Name = "grid_curs", ;
|
||||
@@ -1784,21 +1755,17 @@ DEFINE CLASS frm_curs AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Top = 68, ;
|
||||
Width = 258, ;
|
||||
Column1.ControlSource = "nume_val", ;
|
||||
Column1.FontName = "Arial Narrow", ;
|
||||
Column1.Name = "Column1", ;
|
||||
Column1.Width = 74, ;
|
||||
Column2.ControlSource = "curs", ;
|
||||
Column2.FontName = "Arial Narrow", ;
|
||||
Column2.Format = "rk", ;
|
||||
Column2.InputMask = (get_mask(10,gnPCurs)), ;
|
||||
Column2.Name = "Column2", ;
|
||||
Column2.Width = 58, ;
|
||||
Column3.ControlSource = "data", ;
|
||||
Column3.FontName = "Arial Narrow", ;
|
||||
Column3.Name = "Column3", ;
|
||||
Column3.Width = 49, ;
|
||||
Column4.ControlSource = "data2", ;
|
||||
Column4.FontName = "Arial Narrow", ;
|
||||
Column4.Name = "Column4", ;
|
||||
Column4.Width = 51
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_grd_base.vcx" BaseClass="grid" />
|
||||
@@ -1806,66 +1773,58 @@ DEFINE CLASS frm_curs AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
ADD OBJECT 'grid_curs.Column1.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Nume valuta", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grid_curs.Column1.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grid_curs.Column1.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grid_curs.Column2.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Curs", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grid_curs.Column2.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grid_curs.Column2.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grid_curs.Column3.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Data", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grid_curs.Column3.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grid_curs.Column3.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grid_curs.Column4.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Data2", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grid_curs.Column4.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'grid_curs.Column4.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
PROCEDURE actualizeaza_grid1
|
||||
LPARAMETERS pcFiltru
|
||||
@@ -1950,6 +1909,15 @@ DEFINE CLASS frm_curs AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE grid_curs.Init
|
||||
DODEFAULT()
|
||||
*!* 23.07.2026 MM - propaga fontul gridului la coloane si headere (P5)
|
||||
This.SetAll('FontName', This.FontName, 'Column')
|
||||
This.SetAll('FontSize', This.FontSize, 'Column')
|
||||
This.SetAll('FontName', This.FontName, 'Header')
|
||||
This.SetAll('FontSize', This.FontSize, 'Header')
|
||||
ENDPROC
|
||||
|
||||
ENDDEFINE
|
||||
|
||||
DEFINE CLASS frm_curs_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
@@ -2007,9 +1975,8 @@ DEFINE CLASS frm_curs_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Top = 1
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\cmd_butoane.vcx" BaseClass="commandbutton" />
|
||||
|
||||
ADD OBJECT 'Command2' AS commandbutton WITH ;
|
||||
ADD OBJECT 'Command2' AS _commandbutton WITH ;
|
||||
Caption = "", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Height = 25, ;
|
||||
Left = 168, ;
|
||||
Name = "Command2", ;
|
||||
@@ -2017,7 +1984,7 @@ DEFINE CLASS frm_curs_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
TabIndex = 1, ;
|
||||
Top = 36, ;
|
||||
Width = 28
|
||||
*< END OBJECT: BaseClass="commandbutton" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="commandbutton" />
|
||||
|
||||
ADD OBJECT 'CUS_ODATA_CURS1' AS cus_odata_curs WITH ;
|
||||
Left = 102, ;
|
||||
@@ -2025,7 +1992,7 @@ DEFINE CLASS frm_curs_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Top = 8
|
||||
*< END OBJECT: ClassLib="onom_clienti.vcx" BaseClass="custom" />
|
||||
|
||||
ADD OBJECT 'Label1' AS label WITH ;
|
||||
ADD OBJECT 'Label1' AS _label WITH ;
|
||||
AutoSize = .T., ;
|
||||
BackStyle = 0, ;
|
||||
Caption = "Nume valuta", ;
|
||||
@@ -2035,9 +2002,9 @@ DEFINE CLASS frm_curs_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
TabIndex = 8, ;
|
||||
Top = 41, ;
|
||||
Width = 71
|
||||
*< END OBJECT: BaseClass="label" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="label" />
|
||||
|
||||
ADD OBJECT 'Label2' AS label WITH ;
|
||||
ADD OBJECT 'Label2' AS _label WITH ;
|
||||
AutoSize = .T., ;
|
||||
BackStyle = 0, ;
|
||||
Caption = "Curs", ;
|
||||
@@ -2047,9 +2014,9 @@ DEFINE CLASS frm_curs_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
TabIndex = 9, ;
|
||||
Top = 66, ;
|
||||
Width = 29
|
||||
*< END OBJECT: BaseClass="label" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="label" />
|
||||
|
||||
ADD OBJECT 'Label3' AS label WITH ;
|
||||
ADD OBJECT 'Label3' AS _label WITH ;
|
||||
AutoSize = .T., ;
|
||||
BackStyle = 0, ;
|
||||
Caption = "Data 1", ;
|
||||
@@ -2059,9 +2026,9 @@ DEFINE CLASS frm_curs_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
TabIndex = 10, ;
|
||||
Top = 91, ;
|
||||
Width = 38
|
||||
*< END OBJECT: BaseClass="label" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="label" />
|
||||
|
||||
ADD OBJECT 'Label4' AS label WITH ;
|
||||
ADD OBJECT 'Label4' AS _label WITH ;
|
||||
AutoSize = .T., ;
|
||||
BackStyle = 0, ;
|
||||
Caption = "Data 2", ;
|
||||
@@ -2071,9 +2038,9 @@ DEFINE CLASS frm_curs_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
TabIndex = 11, ;
|
||||
Top = 117, ;
|
||||
Width = 38
|
||||
*< END OBJECT: BaseClass="label" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="label" />
|
||||
|
||||
ADD OBJECT 'txtCurs' AS textbox WITH ;
|
||||
ADD OBJECT 'txtCurs' AS _textbox WITH ;
|
||||
ControlSource = "porec.curs", ;
|
||||
Height = 23, ;
|
||||
Left = 91, ;
|
||||
@@ -2081,9 +2048,9 @@ DEFINE CLASS frm_curs_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
TabIndex = 2, ;
|
||||
Top = 63, ;
|
||||
Width = 100
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'txtData1' AS textbox WITH ;
|
||||
ADD OBJECT 'txtData1' AS _textbox WITH ;
|
||||
ControlSource = "porec.data", ;
|
||||
Height = 23, ;
|
||||
Left = 91, ;
|
||||
@@ -2091,9 +2058,9 @@ DEFINE CLASS frm_curs_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
TabIndex = 3, ;
|
||||
Top = 88, ;
|
||||
Width = 100
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'txtData2' AS textbox WITH ;
|
||||
ADD OBJECT 'txtData2' AS _textbox WITH ;
|
||||
ControlSource = "porec.data2", ;
|
||||
Height = 23, ;
|
||||
Left = 91, ;
|
||||
@@ -2101,9 +2068,9 @@ DEFINE CLASS frm_curs_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
TabIndex = 4, ;
|
||||
Top = 114, ;
|
||||
Width = 100
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'txtValuta' AS textbox WITH ;
|
||||
ADD OBJECT 'txtValuta' AS _textbox WITH ;
|
||||
ControlSource = "porec.nume_val", ;
|
||||
Height = 23, ;
|
||||
Left = 91, ;
|
||||
@@ -2111,7 +2078,7 @@ DEFINE CLASS frm_curs_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
TabIndex = 12, ;
|
||||
Top = 36, ;
|
||||
Width = 75
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
PROCEDURE inainte_de_do_termin
|
||||
Private pnIdCursNou
|
||||
@@ -2294,7 +2261,6 @@ DEFINE CLASS frm_delegati AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
ADD OBJECT 'gdelegati' AS _grdrow WITH ;
|
||||
ColumnCount = 6, ;
|
||||
DeleteMark = .F., ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Height = 300, ;
|
||||
Left = 12, ;
|
||||
Name = "gdelegati", ;
|
||||
@@ -2305,36 +2271,30 @@ DEFINE CLASS frm_delegati AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Top = 72, ;
|
||||
Width = 565, ;
|
||||
Column1.ControlSource = "nume_part", ;
|
||||
Column1.FontName = "Arial Narrow", ;
|
||||
Column1.Name = "Column1", ;
|
||||
Column1.ReadOnly = .T., ;
|
||||
Column1.Width = 168, ;
|
||||
Column2.ControlSource = "nume", ;
|
||||
Column2.FontName = "Arial Narrow", ;
|
||||
Column2.Name = "Column2", ;
|
||||
Column2.ReadOnly = .T., ;
|
||||
Column2.Width = 169, ;
|
||||
Column3.ControlSource = "bi_seria", ;
|
||||
Column3.FontName = "Arial Narrow", ;
|
||||
Column3.Name = "Column3", ;
|
||||
Column3.ReadOnly = .T., ;
|
||||
Column3.Width = 49, ;
|
||||
Column4.ColumnOrder = 5, ;
|
||||
Column4.ControlSource = "eliberatde", ;
|
||||
Column4.FontName = "Arial Narrow", ;
|
||||
Column4.Name = "Column4", ;
|
||||
Column4.ReadOnly = .T., ;
|
||||
Column4.Width = 77, ;
|
||||
Column5.ColumnOrder = 6, ;
|
||||
Column5.ControlSource = "inactiv", ;
|
||||
Column5.FontName = "Arial Narrow", ;
|
||||
Column5.Name = "Column5", ;
|
||||
Column5.ReadOnly = .T., ;
|
||||
Column5.Sparse = .F., ;
|
||||
Column5.Width = 48, ;
|
||||
Column6.ColumnOrder = 4, ;
|
||||
Column6.ControlSource = "bi_numar", ;
|
||||
Column6.FontName = "Arial Narrow", ;
|
||||
Column6.Name = "Column6", ;
|
||||
Column6.ReadOnly = .T., ;
|
||||
Column6.Width = 66
|
||||
@@ -2343,106 +2303,94 @@ DEFINE CLASS frm_delegati AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
ADD OBJECT 'gdelegati.Column1.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Client", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'gdelegati.Column1.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'gdelegati.Column1.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'gdelegati.Column2.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Delegat", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'gdelegati.Column2.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'gdelegati.Column2.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'gdelegati.Column3.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "BI_seria", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'gdelegati.Column3.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'gdelegati.Column3.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'gdelegati.Column4.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Eliberat de..", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'gdelegati.Column4.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'gdelegati.Column4.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'gdelegati.Column5.Check1' AS checkbox WITH ;
|
||||
ADD OBJECT 'gdelegati.Column5.Check1' AS _checkbox WITH ;
|
||||
Alignment = 0, ;
|
||||
Caption = "", ;
|
||||
Centered = .T., ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Height = 17, ;
|
||||
Left = 16, ;
|
||||
Name = "Check1", ;
|
||||
ReadOnly = .T., ;
|
||||
Top = 71, ;
|
||||
Width = 60
|
||||
*< END OBJECT: BaseClass="checkbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="checkbox" />
|
||||
|
||||
ADD OBJECT 'gdelegati.Column5.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Inactiv", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'gdelegati.Column6.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "BI_numar", ;
|
||||
FontName = "Arial Narrow", ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'gdelegati.Column6.Text1' AS textbox WITH ;
|
||||
ADD OBJECT 'gdelegati.Column6.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial Narrow", ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1"
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
PROCEDURE actualizeaza_grid1
|
||||
LPARAMETERS pcFiltru
|
||||
@@ -2544,6 +2492,15 @@ DEFINE CLASS frm_delegati AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Endif
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE gdelegati.Init
|
||||
DODEFAULT()
|
||||
*!* 23.07.2026 MM - propaga fontul gridului la coloane si headere (P5)
|
||||
This.SetAll('FontName', This.FontName, 'Column')
|
||||
This.SetAll('FontSize', This.FontSize, 'Column')
|
||||
This.SetAll('FontName', This.FontName, 'Header')
|
||||
This.SetAll('FontSize', This.FontSize, 'Header')
|
||||
ENDPROC
|
||||
|
||||
ENDDEFINE
|
||||
|
||||
DEFINE CLASS frm_delegati_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
@@ -2874,14 +2831,14 @@ DEFINE CLASS frm_responsabili AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Name = "Responsabill"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_gnom_responsabili.Column1.Text1' AS textbox WITH ;
|
||||
ADD OBJECT '_gnom_responsabili.Column1.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT '_gnom_responsabili.Column2.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
@@ -2889,16 +2846,16 @@ DEFINE CLASS frm_responsabili AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_gnom_responsabili.Column2.Text1' AS textbox WITH ;
|
||||
ADD OBJECT '_gnom_responsabili.Column2.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT '_gnom_responsabili.Column3.Check1' AS checkbox WITH ;
|
||||
ADD OBJECT '_gnom_responsabili.Column3.Check1' AS _checkbox WITH ;
|
||||
Alignment = 0, ;
|
||||
Caption = "", ;
|
||||
Centered = .T., ;
|
||||
@@ -2908,7 +2865,7 @@ DEFINE CLASS frm_responsabili AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
ReadOnly = .T., ;
|
||||
Top = 30, ;
|
||||
Width = 60
|
||||
*< END OBJECT: BaseClass="checkbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="checkbox" />
|
||||
|
||||
ADD OBJECT '_gnom_responsabili.Column3.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
@@ -2916,7 +2873,7 @@ DEFINE CLASS frm_responsabili AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_gnom_responsabili.Column4.Check1' AS checkbox WITH ;
|
||||
ADD OBJECT '_gnom_responsabili.Column4.Check1' AS _checkbox WITH ;
|
||||
Alignment = 0, ;
|
||||
Caption = "", ;
|
||||
Centered = .T., ;
|
||||
@@ -2926,7 +2883,7 @@ DEFINE CLASS frm_responsabili AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
ReadOnly = .T., ;
|
||||
Top = 30, ;
|
||||
Width = 60
|
||||
*< END OBJECT: BaseClass="checkbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="checkbox" />
|
||||
|
||||
ADD OBJECT '_gnom_responsabili.Column4.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
@@ -2940,14 +2897,14 @@ DEFINE CLASS frm_responsabili AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_gnom_responsabili.Column5.Text1' AS textbox WITH ;
|
||||
ADD OBJECT '_gnom_responsabili.Column5.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'But_modifica1' AS but_modifica WITH ;
|
||||
Left = 415, ;
|
||||
@@ -3097,6 +3054,15 @@ DEFINE CLASS frm_responsabili AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
thisform.log("NOM_RESPONSABILI",v_responsabili.id_responsabil)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE _gnom_responsabili.Init
|
||||
DODEFAULT()
|
||||
*!* 23.07.2026 MM - propaga fontul gridului la coloane si headere (P5)
|
||||
This.SetAll('FontName', This.FontName, 'Column')
|
||||
This.SetAll('FontSize', This.FontSize, 'Column')
|
||||
This.SetAll('FontName', This.FontName, 'Header')
|
||||
This.SetAll('FontSize', This.FontSize, 'Header')
|
||||
ENDPROC
|
||||
|
||||
ENDDEFINE
|
||||
|
||||
DEFINE CLASS frm_responsabili_nou AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
@@ -3305,14 +3271,14 @@ DEFINE CLASS frm_tipc AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_grdrow1.Column1.Text1' AS textbox WITH ;
|
||||
ADD OBJECT '_grdrow1.Column1.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT '_grdrow1.Column2.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
@@ -3320,14 +3286,14 @@ DEFINE CLASS frm_tipc AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_grdrow1.Column2.Text1' AS textbox WITH ;
|
||||
ADD OBJECT '_grdrow1.Column2.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT '_grdrow1.Column3.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
@@ -3335,13 +3301,22 @@ DEFINE CLASS frm_tipc AS _frmbase OF "..\..\comun\clase\_frm_base.vcx"
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_grdrow1.Column3.Text1' AS textbox WITH ;
|
||||
ADD OBJECT '_grdrow1.Column3.Text1' AS _textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
*< END OBJECT: ClassLib="..\..\comun\clase\_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
PROCEDURE _grdrow1.Init
|
||||
DODEFAULT()
|
||||
*!* 23.07.2026 MM - propaga fontul gridului la coloane si headere (P5)
|
||||
This.SetAll('FontName', This.FontName, 'Column')
|
||||
This.SetAll('FontSize', This.FontSize, 'Column')
|
||||
This.SetAll('FontName', This.FontName, 'Header')
|
||||
This.SetAll('FontSize', This.FontSize, 'Header')
|
||||
ENDPROC
|
||||
|
||||
ENDDEFINE
|
||||
|
||||
@@ -1009,7 +1009,8 @@ DEFINE CLASS panelbutton AS container
|
||||
PROCEDURE do_arata_formular
|
||||
LOCAL loPagina
|
||||
loPagina = goFundal._pgfrmbase1.page3
|
||||
IF !loPagina.ct_part_nr_data1.llock
|
||||
*!* 23.07.2026 MM - partener NULL: fara prompt/salvare, raman in editare (P1/P2)
|
||||
IF !loPagina.ct_part_nr_data1.llock AND !(ISNULL(goRegistratura.id_part) OR EMPTY(goRegistratura.id_part))
|
||||
LOCAL lnRaspuns
|
||||
loPagina.ct_part_nr_data1.llock = .T.
|
||||
|
||||
@@ -1134,7 +1135,7 @@ DEFINE CLASS splitter2 AS shape && Up-Down Splitter class. Support ActiveX con
|
||||
*</DefinedPropArrayMethod>
|
||||
|
||||
HIDDEN hiddencontrols
|
||||
PROTECTED Init,MouseDown
|
||||
PROTECTED Init,mousedown
|
||||
*<PropValue>
|
||||
Height = 4
|
||||
MousePointer = 7
|
||||
|
||||
@@ -16,7 +16,7 @@ lcSelect = [select id_reg, id_part, denumire, id_pers, pers_contact, data, numar
|
||||
|
||||
lcOrder = []
|
||||
lcgroup = []
|
||||
lcFiltru = [sters=0]
|
||||
lcFiltru = [sters=0 and id_reg=(select max(id_reg) from vregistratura where sters=0)] && *!* 23.07.2026 MM - initial doar ultimul document (P4)
|
||||
lcFiltruOriginal = []
|
||||
llModParam = .T.
|
||||
llAfiseaza = .F.
|
||||
@@ -103,12 +103,18 @@ Parameters toRegistratura
|
||||
Local loRegistratura
|
||||
loRegistratura = toRegistratura
|
||||
|
||||
*!* 23.07.2026 MM - garda partener NULL/empty (P2), functia intoarce .T./.F.
|
||||
If Isnull(loRegistratura.id_part) Or Empty(loRegistratura.id_part)
|
||||
AMESSAGEBOX("Alegeti partenerul inainte de salvare!",0+48,"Atentie")
|
||||
Return .F.
|
||||
Endif
|
||||
|
||||
Local lcId_reg, lcId_part, lcId_pers, lcData, lcNumar, lcData_intern, lcNumar_intern, lcDescriere, lcObservatii, lcIdUtil
|
||||
Local lnSucces
|
||||
lnSucces = -1
|
||||
|
||||
lcId_reg = Alltrim(Str(loRegistratura.id_reg))
|
||||
lcId_part = Alltrim(Str(loRegistratura.id_part))
|
||||
lcId_part = Nvl(Alltrim(Str(loRegistratura.id_part)),'NULL')
|
||||
lcId_pers = Nvl(Alltrim(Str(loRegistratura.id_pers)),'NULL')
|
||||
lcId_responsabil = Nvl(Alltrim(Str(loRegistratura.id_responsabil)),'NULL')
|
||||
lcData = Dtos(loRegistratura.Data)
|
||||
@@ -120,7 +126,7 @@ lcDescriere = Nvl(Alltrim(loRegistratura.descriere),"")
|
||||
lcObservatii = Nvl(Alltrim(loRegistratura.observatii)," ")
|
||||
lcId_fdoc = Nvl(Alltrim(Str(loRegistratura.id_fdoc)),'NULL')
|
||||
lcId_mediu = Nvl(Alltrim(Str(loRegistratura.id_mediu)),'NULL')
|
||||
lcNr_pag = Alltrim(Str(loRegistratura.nr_pag))
|
||||
lcNr_pag = Nvl(Alltrim(Str(loRegistratura.nr_pag)),'NULL')
|
||||
lcIdUtil = Alltrim(Str(gnIdUtil))
|
||||
|
||||
lcSql = [begin pack_registratura.modifica_registratura(] + lcId_reg + [,] + lcId_part + [,] + lcId_pers + [,] + lcId_responsabil + ;
|
||||
@@ -134,6 +140,7 @@ If lnSucces < 0
|
||||
AMESSAGEBOX(goExecutor.cEroare,0+16,"Eroare")
|
||||
Endif
|
||||
|
||||
Return (lnSucces >= 0)
|
||||
Endproc && modifica_reg_dg
|
||||
***-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
29
Teste/build_registratura.prg
Normal file
29
Teste/build_registratura.prg
Normal file
@@ -0,0 +1,29 @@
|
||||
* build_registratura.prg - M6: recompilare completa a proiectului (headless).
|
||||
* Rulare: vfp9.exe -A -T "D:\ROA\ROAREGISTRATURA\Teste\build_registratura.prg"
|
||||
* Log: D:\ROA\ROAREGISTRATURA\Teste\log_build.txt (+ erori de compilare in .err daca apar)
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
PUBLIC gcBuildLog
|
||||
gcBuildLog = 'D:\ROA\ROAREGISTRATURA\Teste\log_build.txt'
|
||||
STRTOFILE('=== build_registratura ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcBuildLog)
|
||||
|
||||
ON ERROR DO blog WITH '*** EROARE ' + TRANSFORM(ERROR()) + ': ' + MESSAGE() + ;
|
||||
' | ' + MESSAGE(1) + ' | prg=' + PROGRAM() + ' lin=' + TRANSFORM(LINENO())
|
||||
|
||||
SET DEFAULT TO D:\ROA\ROAREGISTRATURA
|
||||
DO blog WITH 'BUILD EXE roaregistratura.exe FROM roaRegistratura RECOMPILE ...'
|
||||
BUILD EXE roaregistratura.exe FROM roaRegistratura RECOMPILE
|
||||
DO blog WITH 'Build incheiat. Verificati roaregistratura.err daca exista.'
|
||||
IF FILE('D:\ROA\ROAREGISTRATURA\roaregistratura.err')
|
||||
DO blog WITH '--- roaregistratura.err ---'
|
||||
DO blog WITH FILETOSTR('D:\ROA\ROAREGISTRATURA\roaregistratura.err')
|
||||
ELSE
|
||||
DO blog WITH 'FARA erori de compilare (.err inexistent).'
|
||||
ENDIF
|
||||
ON ERROR
|
||||
QUIT
|
||||
|
||||
PROCEDURE blog
|
||||
LPARAMETERS tcMsg
|
||||
STRTOFILE(TRANSFORM(tcMsg) + CHR(13)+CHR(10), gcBuildLog, 1)
|
||||
ENDPROC
|
||||
189
Teste/test_init_env_registratura.prg
Normal file
189
Teste/test_init_env_registratura.prg
Normal file
@@ -0,0 +1,189 @@
|
||||
* test_init_env_registratura.prg
|
||||
* Init mediu NEINTERACTIV pentru teste headless ROAREGISTRATURA
|
||||
* (echivalentul COMUN\utile\Teste\test_init_env_auto.prg, dar pentru acest proiect).
|
||||
* SET PATH / CLASSLIB / PROCEDURE preluate din Programe\roaregistratura.prg (a se mentine sincron).
|
||||
*
|
||||
* Utilizare (dintr-un script apelant):
|
||||
* DO Teste\test_init_env_registratura WITH 'CENTRAL', 'MARIUSM_AUTO', 'parola'
|
||||
* IF gnHandle <= 0 ... eroare conectare
|
||||
* ATENTIE: NU se ruleaza pe baza de productie (JCSSERVER / CONTAFIN_ORACLE).
|
||||
|
||||
LPARAMETERS tcHost, tcSchema, tcPassword, tnAn, tnLuna
|
||||
|
||||
tcHost = IIF(EMPTY(tcHost), 'CENTRAL', tcHost)
|
||||
tcSchema = IIF(EMPTY(tcSchema), 'MARIUSM_AUTO', tcSchema)
|
||||
tcPassword = IIF(EMPTY(tcPassword), 'ROMFASTSOFT', tcPassword)
|
||||
|
||||
SET DELETED ON
|
||||
SET ANSI ON
|
||||
SET EXACT ON
|
||||
SET SAFETY OFF
|
||||
CLOSE DATABASES
|
||||
SET CENTURY ON
|
||||
SET DATE DMY
|
||||
SET NULLDISPLAY TO ''
|
||||
SET SQLBUFFERING ON
|
||||
|
||||
PUBLIC CT_SUCCES, CT_INSUCCES, crlf, gnAn, gnLuna, gnIdUtil, gnIdFirma, gcS, gcFirma, ;
|
||||
gcNumeProgram, gcAppName, buton, gnButon, pnButon, gcAcces, glParametri, glQuit
|
||||
CT_SUCCES = 1
|
||||
CT_INSUCCES = -1
|
||||
crlf = CHR(13) + CHR(10)
|
||||
gnAn = IIF(EMPTY(tnAn), YEAR(DATE()), tnAn)
|
||||
gnLuna = IIF(EMPTY(tnLuna), MONTH(DATE()), tnLuna)
|
||||
gnIdUtil = -3
|
||||
gnIdFirma = 110
|
||||
gcS = UPPER(ALLTRIM(tcSchema))
|
||||
gcFirma = m.gcS
|
||||
gcNumeProgram = [ROAREGISTRATURA]
|
||||
gcAppName = [ROAREGISTRATURA]
|
||||
glParametri = .T.
|
||||
glQuit = .F.
|
||||
buton = 1
|
||||
gnButon = 1
|
||||
pnButon = 1
|
||||
gcAcces = [1;2;3;4;5;6;7;8;]
|
||||
|
||||
* globale cerute de oserii_numere/oinit_optiuni (sincron cu test_init_env_auto.prg)
|
||||
PUBLIC gnIdSucursala, gnIdMama, glEMama, gcCondSucursala, glLunaInchisa, gcUserName
|
||||
gnIdSucursala = NULL
|
||||
gnIdMama = 0
|
||||
glEMama = .F.
|
||||
gcCondSucursala = []
|
||||
glLunaInchisa = .F.
|
||||
gcUserName = [MARIUS M]
|
||||
* vezi comentariul din test_init_env_auto.prg: PUBLIC, nu Declare
|
||||
PUBLIC nror(65000)
|
||||
|
||||
PUBLIC gcAppPath, DIRGEN, gcBasePath, gcTempPath, gcGeneralIniFile, gcSettingsFile
|
||||
gcAppPath = [D:\ROA\ROAREGISTRATURA\]
|
||||
SET DEFAULT TO (gcAppPath)
|
||||
LOCAL lcPath
|
||||
lcPath = gcAppPath + 'Date;' + ;
|
||||
gcAppPath + 'Include;' + ;
|
||||
gcAppPath + 'FERESTRE;' + ;
|
||||
gcAppPath + 'GRAFICE;' + ;
|
||||
gcAppPath + 'CLASE;' + ;
|
||||
gcAppPath + 'MENIURI;' + ;
|
||||
gcAppPath + 'PROGRAME;' + ;
|
||||
gcAppPath + 'RAPOARTE;' + ;
|
||||
gcAppPath + 'COMUN\CLASE;' + ;
|
||||
gcAppPath + 'COMUN\FERESTRE;' + ;
|
||||
gcAppPath + 'COMUN\PROGRAME;' + ;
|
||||
gcAppPath + 'COMUN\GRAFICE;' + ;
|
||||
gcAppPath + 'COMUN\RAPOARTE;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\CTL32;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\HPDF;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\WEB;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\TESTE;' + ;
|
||||
ADDBS(SUBSTR(gcAppPath,1,RAT([\],gcAppPath,2)))+[COMUNROA\]
|
||||
SET PATH TO &lcPath ADDITIVE
|
||||
|
||||
*CLASE - sincron cu Programe\roaregistratura.prg
|
||||
SET CLASSLIB TO clase\roaregistratura ADDITIVE
|
||||
SET CLASSLIB TO CAUT ADDITIVE
|
||||
SET CLASSLIB TO ooptiuni ADDITIVE
|
||||
SET CLASSLIB TO registry ADDITIVE
|
||||
SET CLASSLIB TO decabaza ADDITIVE
|
||||
SET CLASSLIB TO cauta_alfa_forms ADDITIVE
|
||||
SET CLASSLIB TO ferestre_oracle ADDITIVE
|
||||
SET CLASSLIB TO caut_ora ADDITIVE
|
||||
SET CLASSLIB TO ferestre_registratura ADDITIVE
|
||||
SET CLASSLIB TO onomenclatoare ADDITIVE
|
||||
SET CLASSLIB TO Messagebox ADDITIVE
|
||||
SET CLASSLIB TO otoolbar ADDITIVE
|
||||
SET CLASSLIB TO ferestre_cere_date ADDITIVE
|
||||
SET CLASSLIB TO orapoarte_comun ADDITIVE
|
||||
SET CLASSLIB TO onom_articole ADDITIVE
|
||||
SET CLASSLIB TO serii_numere.vcx ADDITIVE
|
||||
SET CLASSLIB TO ferestre_atasamente.vcx ADDITIVE
|
||||
SET CLASSLIB TO wwdialogs.vcx ADDITIVE
|
||||
SET CLASSLIB TO appwiz.vcx ADDITIVE
|
||||
SET CLASSLIB TO accessibility.vcx ADDITIVE
|
||||
SET CLASSLIB TO ofundal_registratura.vcx ADDITIVE
|
||||
|
||||
*PROCEDURI - sincron cu Programe\roaregistratura.prg
|
||||
SET PROCEDURE TO quitapp ADDITIVE
|
||||
SET PROCEDURE TO init_program ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_comune ADDITIVE
|
||||
SET PROCEDURE TO gencursor.prg ADDITIVE
|
||||
SET PROCEDURE TO update_nomenclator.prg ADDITIVE
|
||||
SET PROCEDURE TO onomenclatoare ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_ams ADDITIVE
|
||||
SET PROCEDURE TO ocautare ADDITIVE
|
||||
SET PROCEDURE TO oinit_optiuni ADDITIVE
|
||||
SET PROCEDURE TO osecurity ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_roaregistratura ADDITIVE
|
||||
SET PROCEDURE TO acces_meniu ADDITIVE
|
||||
SET PROCEDURE TO oheader ADDITIVE
|
||||
SET PROCEDURE TO oparteneri_contracte ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_maintenance.prg ADDITIVE
|
||||
SET PROCEDURE TO cauta_alfa ADDITIVE
|
||||
SET PROCEDURE TO ini.prg ADDITIVE
|
||||
SET PROCEDURE TO oserii_numere ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_atasamente ADDITIVE
|
||||
SET PROCEDURE TO oexport.prg ADDITIVE
|
||||
SET PROCEDURE TO iniacces.prg ADDITIVE
|
||||
SET PROCEDURE TO filebringer.prg ADDITIVE
|
||||
SET PROCEDURE TO log_mesaje.prg ADDITIVE
|
||||
SET PROCEDURE TO wwutils.prg ADDITIVE && ShortPath() folosit de Log_Mesaje.Init
|
||||
|
||||
DECLARE INTEGER GetPrivateProfileString IN WIN32API ;
|
||||
STRING, STRING, STRING, STRING @, INTEGER, STRING
|
||||
DECLARE INTEGER WritePrivateProfileString IN Win32Api ;
|
||||
STRING, STRING, STRING, STRING
|
||||
DECLARE INTEGER PathFileExists IN shlwapi STRING pszPath
|
||||
|
||||
PUBLIC poLog, goLog, goApp
|
||||
poLog = NEWOBJECT("Log_Mesaje","Log_Mesaje.prg")
|
||||
goLog = poLog
|
||||
goApp = CREATEOBJECT("wzApplication")
|
||||
|
||||
DIRGEN = [D:\ROA\]
|
||||
gcBasePath = DIRGEN
|
||||
gcGeneralIniFile = DIRGEN + "settings.ini"
|
||||
gcSettingsFile = m.gcGeneralIniFile
|
||||
gcTempPath = ADDBS(SYS(2023)) + gcS + [\]
|
||||
IF !DIRECTORY(gcTempPath)
|
||||
MD (gcTempPath)
|
||||
ENDIF
|
||||
|
||||
PUBLIC gnHandle, goExecutor, goConn, goFirma, goCalendar
|
||||
gnHandle = 0
|
||||
goExecutor = CREATEOBJECT("oExecutor")
|
||||
goConn = CREATEOBJECT("oConn")
|
||||
goConn.Connect(m.tcHost, m.tcSchema, m.tcPassword)
|
||||
IF m.gnHandle <= 0
|
||||
RETURN .F.
|
||||
ENDIF
|
||||
|
||||
LOCAL llSucces, lcSql
|
||||
goFirma = NULL
|
||||
llSucces = goExecutor.oExecuta("select * from syn_v_nom_firme where schema = ?gcS", "cFirma")
|
||||
IF m.llSucces
|
||||
SELECT cFirma
|
||||
gnIdFirma = id_firma
|
||||
gcFirma = ALLTRIM(firma)
|
||||
SCATTER NAME goFirma
|
||||
ELSE
|
||||
goFirma = CREATEOBJECT('custom')
|
||||
goFirma.AddProperty('cod_fiscal', '')
|
||||
goFirma.AddProperty('schema', m.gcS)
|
||||
goFirma.AddProperty('firma', m.gcS)
|
||||
ENDIF
|
||||
USE IN (SELECT('cFirma'))
|
||||
|
||||
CREATE CURSOR dual (dummy c(10))
|
||||
INSERT INTO dual (dummy) VALUES ("")
|
||||
|
||||
* sesiune Oracle (pachetele pot lipsi din unele scheme - nu oprim initul)
|
||||
lcSql = [begin pack_sesiune.set_Id_Util(?gnIdUtil); end;]
|
||||
llSucces = goExecutor.oExecuta(lcSql)
|
||||
lcSql = [begin pack_sesiune.setluna(?gnLuna); pack_sesiune.setan(?gnAn); end;]
|
||||
llSucces = goExecutor.oExecuta(lcSql)
|
||||
|
||||
* variabilele globale ale aplicatiei folosite de fluxul registratura
|
||||
PUBLIC poReg, goRegistratura, podg_dg, podg_referinte, podg_obs, podg_link, goFundal
|
||||
STORE '' TO poReg, goRegistratura
|
||||
|
||||
RETURN .T.
|
||||
168
Teste/test_registratura_adaugare.prg
Normal file
168
Teste/test_registratura_adaugare.prg
Normal file
@@ -0,0 +1,168 @@
|
||||
* test_registratura_adaugare.prg
|
||||
* Test headless: fluxul de ADAUGARE document in registratura + salvarea datelor generale.
|
||||
* Reproduce si bugul cunoscut: modifica_reg_dg cu partener NULL (P2 din
|
||||
* docs\analiza_registratura_adaugare_editare.md). Dupa implementarea gardei (M1),
|
||||
* pasul 3 trebuie sa devina un refuz elegant (mesaj + return), nu eroare de executie.
|
||||
* Rulare: vfp9.exe -A -T "D:\ROA\ROAREGISTRATURA\Teste\test_registratura_adaugare.prg"
|
||||
* Log: D:\ROA\ROAREGISTRATURA\Teste\log_test_adaugare.txt
|
||||
* ATENTIE: ruleaza DOAR pe schema de test (CENTRAL/MARIUSM_AUTO). Documentul de test
|
||||
* este sters (soft-delete) la final prin pack_registratura.sterge_registratura.
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
|
||||
* mock amessagebox PRIMUL in lista de proceduri (la nume duplicat castiga PRIMUL - testare-ui-vfp.md cap. j)
|
||||
SET PROCEDURE TO D:\ROA\ROAREGISTRATURA\COMUN\utile\Teste\mock_amessagebox.prg ADDITIVE
|
||||
PUBLIC gnMockRaspuns
|
||||
gnMockRaspuns = 6
|
||||
|
||||
PUBLIC gcTestLog
|
||||
gcTestLog = 'D:\ROA\ROAREGISTRATURA\Teste\log_test_adaugare.txt'
|
||||
STRTOFILE('=== test_registratura_adaugare ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcTestLog)
|
||||
|
||||
ON ERROR DO tlog WITH '*** EROARE ' + TRANSFORM(ERROR()) + ': ' + MESSAGE() + ;
|
||||
' | ' + MESSAGE(1) + ' | prg=' + PROGRAM() + ' lin=' + TRANSFORM(LINENO())
|
||||
|
||||
DO tlog WITH 'Init mediu...'
|
||||
DO D:\ROA\ROAREGISTRATURA\Teste\test_init_env_registratura.prg
|
||||
IF TYPE('gnHandle') # 'N' OR gnHandle <= 0
|
||||
DO tlog WITH 'ESEC conectare - STOP'
|
||||
DO tfinal
|
||||
ENDIF
|
||||
DO tlog WITH 'Conectat, schema=' + gcS
|
||||
|
||||
* 0) cursorul listei + goRegistratura
|
||||
DO viz_registratura IN oproceduri_roaregistratura.prg
|
||||
IF !USED('cRegistratura')
|
||||
DO tlog WITH 'ESEC: nu exista cursorul cRegistratura - STOP'
|
||||
DO tfinal
|
||||
ENDIF
|
||||
SELECT cRegistratura
|
||||
LOCAL lnInregInitial
|
||||
lnInregInitial = RECCOUNT()
|
||||
SCATTER NAME goRegistratura MEMO BLANK
|
||||
DO tlog WITH 'Inregistrari initiale: ' + TRANSFORM(lnInregInitial)
|
||||
|
||||
* 1) alocare numar intern (seria 10, ca in ct_registratura.do_adauga)
|
||||
DO tlog WITH '--- Pas 1: alocare numar intern (seria 10)'
|
||||
LOCAL loGeneratorNumere, lcNumarIntern
|
||||
loGeneratorNumere = CREATEOBJECT('oGeneratorNumere')
|
||||
loGeneratorNumere.creeaza_cursor_serii(10)
|
||||
lcNumarIntern = ALLTRIM(STR(loGeneratorNumere.aloca_numar(10)))
|
||||
DO tlog WITH 'Numar intern alocat: ' + lcNumarIntern
|
||||
|
||||
* 2) adaugare document gol (pack_registratura.adauga_registratura)
|
||||
DO tlog WITH '--- Pas 2: adauga_registratura'
|
||||
LOCAL lnId_reg
|
||||
lnId_reg = 0
|
||||
lnId_reg = adauga_registratura('cRegistratura', lcNumarIntern)
|
||||
IF EMPTY(lnId_reg)
|
||||
DO tlog WITH 'ESEC: adauga_registratura a intors ' + TRANSFORM(lnId_reg) + ;
|
||||
' (pack_registratura lipseste din schema de test?) - STOP curat, nimic de sters'
|
||||
DO tfinal
|
||||
ENDIF
|
||||
DO tlog WITH 'OK document adaugat, id_reg=' + TRANSFORM(lnId_reg)
|
||||
|
||||
* pozitionare pe documentul nou + goRegistratura
|
||||
DO viz_registratura IN oproceduri_roaregistratura.prg
|
||||
SELECT cRegistratura
|
||||
LOCATE FOR id_reg = lnId_reg
|
||||
IF !FOUND()
|
||||
DO tlog WITH 'ESEC: documentul nou nu apare in vregistratura'
|
||||
ELSE
|
||||
SCATTER NAME goRegistratura MEMO
|
||||
DO tlog WITH 'Document nou gasit: nr_intern=' + TRANSFORM(NVL(numar_intern,'')) + ;
|
||||
' id_part=' + TRANSFORM(goRegistratura.id_part)
|
||||
ENDIF
|
||||
|
||||
* 3) salvare cu partener NULL - reproduce bugul P2
|
||||
* (astazi: eroare "Invalid use of NULL"/sql NULL; dupa fix M1: mesaj + refuz)
|
||||
DO tlog WITH '--- Pas 3: modifica_reg_dg cu id_part NULL (se asteapta refuz/eroare)'
|
||||
goRegistratura.descriere = 'TEST AUTOMAT - nu folositi'
|
||||
DO modifica_reg_dg WITH goRegistratura IN oproceduri_roaregistratura.prg
|
||||
DO tlog WITH 'Pas 3 incheiat (vezi mai sus daca a fost eroare de executie = bug P2 nereparat)'
|
||||
|
||||
* 4) salvare cu partener valid (refolosesc un partener din alt document existent)
|
||||
DO tlog WITH '--- Pas 4: modifica_reg_dg cu partener valid'
|
||||
LOCAL llSucces
|
||||
llSucces = goExecutor.oExecuta( ;
|
||||
"select id_part, denumire from vregistratura where id_part is not null and rownum = 1", 'cPartTest')
|
||||
IF llSucces AND USED('cPartTest') AND RECCOUNT('cPartTest') > 0
|
||||
SELECT cPartTest
|
||||
goRegistratura.id_part = id_part
|
||||
goRegistratura.denumire = denumire
|
||||
USE IN cPartTest
|
||||
goRegistratura.data = DATE()
|
||||
goRegistratura.numar = 'TST-' + lcNumarIntern
|
||||
goRegistratura.ie = 1
|
||||
goRegistratura.nr_pag = 1
|
||||
DO modifica_reg_dg WITH goRegistratura IN oproceduri_roaregistratura.prg
|
||||
|
||||
* verificare: datele au ajuns in baza
|
||||
DO viz_registratura IN oproceduri_roaregistratura.prg
|
||||
SELECT cRegistratura
|
||||
LOCATE FOR id_reg = lnId_reg
|
||||
IF FOUND() AND !ISNULL(id_part) AND ALLTRIM(NVL(numar,'')) == 'TST-' + lcNumarIntern
|
||||
DO tlog WITH 'OK salvare reusita: partener=' + TRANSFORM(NVL(denumire,'')) + ;
|
||||
' numar=' + TRANSFORM(NVL(numar,''))
|
||||
ELSE
|
||||
DO tlog WITH 'ESEC verificare: documentul nu are datele asteptate dupa salvare'
|
||||
ENDIF
|
||||
ELSE
|
||||
DO tlog WITH 'SKIP Pas 4: nu exista niciun partener in vregistratura pe schema de test'
|
||||
ENDIF
|
||||
|
||||
* 5) EDITAREA documentului (fluxul Modifica -> Salveaza): modific campuri si re-salvez
|
||||
DO tlog WITH '--- Pas 5: editare document (modificare descriere/nr_pag/data + re-salvare)'
|
||||
SELECT cRegistratura
|
||||
LOCATE FOR id_reg = lnId_reg
|
||||
IF FOUND() AND !ISNULL(id_part)
|
||||
SCATTER NAME goRegistratura MEMO
|
||||
goRegistratura.descriere = 'TEST AUTOMAT - EDITAT'
|
||||
goRegistratura.nr_pag = 5
|
||||
goRegistratura.data = DATE() - 1
|
||||
goRegistratura.ie = 2
|
||||
DO modifica_reg_dg WITH goRegistratura IN oproceduri_roaregistratura.prg
|
||||
|
||||
* verificare: modificarile au ajuns in baza
|
||||
DO viz_registratura IN oproceduri_roaregistratura.prg
|
||||
SELECT cRegistratura
|
||||
LOCATE FOR id_reg = lnId_reg
|
||||
IF FOUND() AND ALLTRIM(NVL(descriere,'')) == 'TEST AUTOMAT - EDITAT' ;
|
||||
AND NVL(nr_pag,0) = 5 AND ie = 2
|
||||
DO tlog WITH 'OK editare reusita: descriere=' + TRANSFORM(NVL(descriere,'')) + ;
|
||||
' nr_pag=' + TRANSFORM(NVL(nr_pag,0)) + ' ie=' + TRANSFORM(ie) + ;
|
||||
' data=' + TRANSFORM(data)
|
||||
ELSE
|
||||
DO tlog WITH 'ESEC verificare editare: documentul nu are valorile modificate'
|
||||
ENDIF
|
||||
ELSE
|
||||
DO tlog WITH 'SKIP Pas 5: documentul de test nu are partener (Pas 4 esuat/sarit)'
|
||||
ENDIF
|
||||
|
||||
* 6) curatenie: soft-delete documentul de test
|
||||
DO tlog WITH '--- Pas 6: stergere document de test'
|
||||
LOCAL lcSql, lnSucces
|
||||
lcSql = [begin pack_registratura.sterge_registratura(] + ALLTRIM(STR(lnId_reg)) + ;
|
||||
[,] + ALLTRIM(STR(gnIdUtil)) + [); end;]
|
||||
lnSucces = goExecutor.oExecute(lcSql)
|
||||
IF lnSucces < 0
|
||||
DO tlog WITH 'ATENTIE: stergerea a esuat: ' + TRANSFORM(goExecutor.cEroare) + ;
|
||||
' - stergeti manual id_reg=' + TRANSFORM(lnId_reg)
|
||||
ELSE
|
||||
DO tlog WITH 'OK document de test sters (soft-delete), id_reg=' + TRANSFORM(lnId_reg)
|
||||
ENDIF
|
||||
|
||||
DO tlog WITH '=== FINAL test_registratura_adaugare'
|
||||
DO tfinal
|
||||
|
||||
PROCEDURE tlog
|
||||
LPARAMETERS tcMsg
|
||||
STRTOFILE(TRANSFORM(tcMsg) + CHR(13)+CHR(10), gcTestLog, 1)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE tfinal
|
||||
ON ERROR
|
||||
CLOSE ALL
|
||||
QUIT
|
||||
ENDPROC
|
||||
111
Teste/test_registratura_form.prg
Normal file
111
Teste/test_registratura_form.prg
Normal file
@@ -0,0 +1,111 @@
|
||||
* test_registratura_form.prg
|
||||
* Test headless: incarcarea listei documentelor (viz_registratura) + instantierea
|
||||
* containerului ct_registratura pe un form ascuns (verifica clase/cursoare/grid).
|
||||
* Rulare: vfp9.exe -A -T "D:\ROA\ROAREGISTRATURA\Teste\test_registratura_form.prg"
|
||||
* Log: D:\ROA\ROAREGISTRATURA\Teste\log_test_form.txt
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
|
||||
* mock amessagebox PRIMUL in lista de proceduri (la nume duplicat castiga PRIMUL - testare-ui-vfp.md cap. j)
|
||||
SET PROCEDURE TO D:\ROA\ROAREGISTRATURA\COMUN\utile\Teste\mock_amessagebox.prg ADDITIVE
|
||||
PUBLIC gnMockRaspuns
|
||||
gnMockRaspuns = 6
|
||||
|
||||
PUBLIC gcTestLog
|
||||
gcTestLog = 'D:\ROA\ROAREGISTRATURA\Teste\log_test_form.txt'
|
||||
STRTOFILE('=== test_registratura_form ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcTestLog)
|
||||
|
||||
ON ERROR DO tlog WITH '*** EROARE ' + TRANSFORM(ERROR()) + ': ' + MESSAGE() + ;
|
||||
' | ' + MESSAGE(1) + ' | prg=' + PROGRAM() + ' lin=' + TRANSFORM(LINENO())
|
||||
|
||||
DO tlog WITH 'Init mediu...'
|
||||
DO D:\ROA\ROAREGISTRATURA\Teste\test_init_env_registratura.prg
|
||||
IF TYPE('gnHandle') # 'N' OR gnHandle <= 0
|
||||
DO tlog WITH 'ESEC conectare (gnHandle=' + TRANSFORM(IIF(TYPE('gnHandle')='N',gnHandle,-999)) + ') - STOP'
|
||||
DO tfinal
|
||||
ENDIF
|
||||
DO tlog WITH 'Conectat, gnHandle=' + TRANSFORM(gnHandle) + ' schema=' + gcS
|
||||
|
||||
* 1) incarcarea cursorului listei
|
||||
DO tlog WITH '--- Test 1: viz_registratura'
|
||||
DO viz_registratura IN oproceduri_roaregistratura.prg
|
||||
IF USED('cRegistratura')
|
||||
SELECT cRegistratura
|
||||
DO tlog WITH 'OK cursor cRegistratura, inregistrari=' + TRANSFORM(RECCOUNT())
|
||||
IF RECCOUNT() > 0
|
||||
GO BOTTOM
|
||||
DO tlog WITH 'Ultimul document: id_reg=' + TRANSFORM(NVL(id_reg,0)) + ;
|
||||
' nr_intern=' + TRANSFORM(NVL(numar_intern,'')) + ;
|
||||
' data_intern=' + TRANSFORM(data_intern) + ;
|
||||
' partener=' + TRANSFORM(NVL(denumire,''))
|
||||
GO TOP
|
||||
SCATTER NAME goRegistratura MEMO
|
||||
ELSE
|
||||
SCATTER NAME goRegistratura MEMO BLANK
|
||||
ENDIF
|
||||
ELSE
|
||||
DO tlog WITH 'ESEC: cursorul cRegistratura NU exista'
|
||||
ENDIF
|
||||
|
||||
* 2) instantierea containerului listei pe un form ascuns
|
||||
DO tlog WITH '--- Test 2: instantiere ct_registratura pe form ascuns'
|
||||
LOCAL loForm
|
||||
loForm = CREATEOBJECT('Form')
|
||||
loForm.Visible = .F.
|
||||
loForm.Width = 810
|
||||
loForm.Height = 420
|
||||
loForm.AddObject('ct1', 'ct_registratura')
|
||||
IF VARTYPE(loForm.ct1) = 'O'
|
||||
DO tlog WITH 'OK ct_registratura instantiat; grid RecordSource=' + ;
|
||||
loForm.ct1.grid_registratura.RecordSource + ;
|
||||
' coloane=' + TRANSFORM(loForm.ct1.grid_registratura.ColumnCount) + ;
|
||||
' font=' + loForm.ct1.grid_registratura.FontName + ;
|
||||
' size=' + TRANSFORM(loForm.ct1.grid_registratura.FontSize)
|
||||
DO tlog WITH 'Coloana1: font=' + loForm.ct1.grid_registratura.Columns(1).FontName + ;
|
||||
' ' + TRANSFORM(loForm.ct1.grid_registratura.Columns(1).FontSize) + ;
|
||||
' | header=' + loForm.ct1.grid_registratura.Columns(1).Header1.FontName + ;
|
||||
' ' + TRANSFORM(loForm.ct1.grid_registratura.Columns(1).Header1.FontSize) + ;
|
||||
' | text1=' + loForm.ct1.grid_registratura.Columns(1).Text1.FontName + ;
|
||||
' ' + TRANSFORM(loForm.ct1.grid_registratura.Columns(1).Text1.FontSize)
|
||||
loForm.ct1.Visible = .T.
|
||||
DO tlog WITH 'nireg (contor afisat)=' + TRANSFORM(loForm.ct1.nireg)
|
||||
ELSE
|
||||
DO tlog WITH 'ESEC: ct_registratura NU s-a instantiat'
|
||||
ENDIF
|
||||
loForm.Release()
|
||||
|
||||
* 3) instantierea zonei partener/nr/data (ct_part_nr_data)
|
||||
DO tlog WITH '--- Test 3: instantiere ct_part_nr_data'
|
||||
loForm = CREATEOBJECT('Form')
|
||||
loForm.Visible = .F.
|
||||
loForm.AddObject('ct2', 'ct_part_nr_data')
|
||||
IF VARTYPE(loForm.ct2) = 'O'
|
||||
DO tlog WITH 'OK ct_part_nr_data; llock=' + TRANSFORM(loForm.ct2.llock) + ;
|
||||
' buton="' + loForm.ct2.Command2.Caption + '"' + ;
|
||||
' txtClient.ReadOnly=' + TRANSFORM(loForm.ct2.txtClient.ReadOnly) + ;
|
||||
' font txtClient=' + loForm.ct2.txtClient.FontName + ;
|
||||
' ' + TRANSFORM(loForm.ct2.txtClient.FontSize)
|
||||
* deblocare/blocare campuri - nu ating baza
|
||||
loForm.ct2.deblocheaza_campuri()
|
||||
DO tlog WITH 'dupa deblocheaza_campuri: txtNumar.ReadOnly=' + TRANSFORM(loForm.ct2.txtNumar.ReadOnly)
|
||||
loForm.ct2.blocheaza_campuri()
|
||||
DO tlog WITH 'dupa blocheaza_campuri: txtNumar.ReadOnly=' + TRANSFORM(loForm.ct2.txtNumar.ReadOnly)
|
||||
ELSE
|
||||
DO tlog WITH 'ESEC: ct_part_nr_data NU s-a instantiat'
|
||||
ENDIF
|
||||
loForm.Release()
|
||||
|
||||
DO tlog WITH '=== FINAL test_registratura_form'
|
||||
DO tfinal
|
||||
|
||||
PROCEDURE tlog
|
||||
LPARAMETERS tcMsg
|
||||
STRTOFILE(TRANSFORM(tcMsg) + CHR(13)+CHR(10), gcTestLog, 1)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE tfinal
|
||||
ON ERROR
|
||||
CLOSE ALL
|
||||
QUIT
|
||||
ENDPROC
|
||||
193
Teste/test_registratura_ui.prg
Normal file
193
Teste/test_registratura_ui.prg
Normal file
@@ -0,0 +1,193 @@
|
||||
* test_registratura_ui.prg
|
||||
* Test UI VIZUAL (harness + screenshots): fluxul REAL al utilizatorului in fereastra
|
||||
* principala (Ferestre\fundal.scx) - lista documentelor, adaugare cu intrare directa
|
||||
* in editare (M3), fara prompt de salvare la bara laterala (M2), refuz elegant la
|
||||
* partener NULL (M1/M2), salvare + editare reala, filtrul "ultimul document" (M4),
|
||||
* fonturi Arial 10 (M5).
|
||||
* Rulare cu capturi:
|
||||
* powershell -File COMUN\utile\Teste\vfp_ui_harness.ps1 -TestPrg Teste\test_registratura_ui.prg ^
|
||||
* -Steps @('lista','adaugare_editare_directa','bara_fara_prompt','salvare_fara_partener','salvare_cu_partener','editare','lista_ultimul')
|
||||
* Log: Teste\test_registratura_ui_log.txt ; PNG: Teste\screenshots\
|
||||
* ATENTIE: doar pe schema de test (CENTRAL/MARIUSM_AUTO); documentul de test se sterge la final.
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
|
||||
PUBLIC gcUILog, gcSyncDir, gnMockRaspuns, gnPass, gnFail
|
||||
gcUILog = 'D:\ROA\ROAREGISTRATURA\Teste\test_registratura_ui_log.txt'
|
||||
gcSyncDir = 'D:\ROA\ROAREGISTRATURA\Teste\uisync\'
|
||||
IF !DIRECTORY(gcSyncDir)
|
||||
MD (gcSyncDir)
|
||||
ENDIF
|
||||
STORE 0 TO gnPass, gnFail
|
||||
gnMockRaspuns = 6
|
||||
|
||||
* mock amessagebox PRIMUL in lista de proceduri (la nume duplicat castiga PRIMUL)
|
||||
SET PROCEDURE TO D:\ROA\ROAREGISTRATURA\COMUN\utile\Teste\mock_amessagebox.prg ADDITIVE
|
||||
SET PROCEDURE TO D:\ROA\ROAREGISTRATURA\COMUN\utile\Teste\ui_harness.prg ADDITIVE
|
||||
|
||||
STRTOFILE('=== test_registratura_ui ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcUILog)
|
||||
|
||||
ON ERROR DO HarnessLog WITH '*** EROARE ' + TRANSFORM(ERROR()) + ': ' + MESSAGE() + ;
|
||||
' | ' + MESSAGE(1) + ' | prg=' + PROGRAM() + ' lin=' + TRANSFORM(LINENO())
|
||||
|
||||
DO HarnessLog WITH 'Init mediu...'
|
||||
DO D:\ROA\ROAREGISTRATURA\Teste\test_init_env_registratura.prg
|
||||
IF TYPE('gnHandle') # 'N' OR gnHandle <= 0
|
||||
DO HarnessLog WITH 'ESEC conectare - STOP'
|
||||
DO HarnessDone WITH 'esec_conectare'
|
||||
QUIT
|
||||
ENDIF
|
||||
DO HarnessLog WITH 'Conectat, schema=' + gcS
|
||||
|
||||
* globale suplimentare cerute de fundal.scx / Show
|
||||
PUBLIC gcUserNameApp, primadata, goCw, goHelp, oTool
|
||||
gcUserNameApp = 'MARIUS M'
|
||||
primadata = .T.
|
||||
STORE '' TO goCw, goHelp, oTool
|
||||
|
||||
* ------------- Pas 0: fereastra principala + lista (M4: doar ultimul document)
|
||||
DO viz_registratura IN oproceduri_roaregistratura.prg
|
||||
* NOSHOW: ocolesc Form.Show -> arata_meniu_fluna -> start_firma (init de aplicatie, nu de test);
|
||||
* Visible=.T. afiseaza formularul FARA sa ruleze metoda Show suprascrisa.
|
||||
DO FORM D:\ROA\ROAREGISTRATURA\Ferestre\fundal.scx NAME goFundal LINKED NOSHOW
|
||||
goFundal._pgfrmbase1.Page2.Ct_registratura1.do_initializeaza_cursor()
|
||||
goFundal.Visible = .T.
|
||||
goFundal.WindowState = 2
|
||||
goFundal._pgfrmbase1.ActivePage = 2
|
||||
DO verif WITH USED('cRegistratura') AND RECCOUNT('cRegistratura') = 1, ;
|
||||
'M4: lista initiala contine DOAR ultimul document (reccount=' + TRANSFORM(RECCOUNT('cRegistratura')) + ')'
|
||||
SELECT cRegistratura
|
||||
GO TOP
|
||||
SCATTER NAME goRegistratura MEMO
|
||||
DO HarnessLog WITH 'Ultimul document afisat: id_reg=' + TRANSFORM(NVL(id_reg,0))
|
||||
LOCAL loGrid
|
||||
loGrid = goFundal._pgfrmbase1.Page2.Ct_registratura1.grid_registratura
|
||||
DO verif WITH loGrid.FontName == 'Arial' AND loGrid.FontSize = 10, ;
|
||||
'M5: grid font=' + loGrid.FontName + ' ' + TRANSFORM(loGrid.FontSize)
|
||||
DO verif WITH loGrid.Columns(1).FontName == 'Arial' AND loGrid.Columns(1).FontSize = 10, ;
|
||||
'M5: coloana1 font=' + loGrid.Columns(1).FontName + ' ' + TRANSFORM(loGrid.Columns(1).FontSize)
|
||||
DO verif WITH loGrid.Columns(1).Header1.FontName == 'Arial' AND loGrid.Columns(1).Header1.FontSize = 10, ;
|
||||
'M5: header1 font=' + loGrid.Columns(1).Header1.FontName + ' ' + TRANSFORM(loGrid.Columns(1).Header1.FontSize)
|
||||
DO HarnessStep WITH 0, 'lista: doar ultimul document, fonturi Arial 10'
|
||||
|
||||
* ------------- Pas 1: adaugare -> intra DIRECT in editare (M3)
|
||||
LOCAL lnId_reg, loPnd
|
||||
goFundal._pgfrmbase1.Page2.Ct_registratura1.But_nou1.Click()
|
||||
lnId_reg = goRegistratura.id_reg
|
||||
loPnd = goFundal._pgfrmbase1.Page3.ct_part_nr_data1
|
||||
DO verif WITH goFundal._pgfrmbase1.ActivePage = 3, ;
|
||||
'M3: dupa adaugare s-a comutat pe Page3 (ActivePage=' + TRANSFORM(goFundal._pgfrmbase1.ActivePage) + ')'
|
||||
DO verif WITH !loPnd.llock, 'M3: documentul nou este DIRECT in editare (llock=' + TRANSFORM(loPnd.llock) + ')'
|
||||
DO verif WITH loPnd.Command2.Caption == 'Salveaza', ;
|
||||
'M3: butonul arata "Salveaza" (caption=' + loPnd.Command2.Caption + ')'
|
||||
DO verif WITH !EMPTY(lnId_reg), 'Adaugare: id_reg nou=' + TRANSFORM(NVL(lnId_reg,0))
|
||||
DO verif WITH loPnd.txtClient.FontName == 'Arial' AND loPnd.txtClient.FontSize = 10, ;
|
||||
'M5: txtClient font=' + loPnd.txtClient.FontName + ' ' + TRANSFORM(loPnd.txtClient.FontSize)
|
||||
DO HarnessStep WITH 1, 'adaugare: direct in editare, buton Salveaza'
|
||||
|
||||
* ------------- Pas 2: click pe bara laterala cu partener NULL -> FARA prompt de salvare (M2)
|
||||
LOCAL lcLogInainte
|
||||
lcLogInainte = FILETOSTR(gcUILog)
|
||||
goFundal._pgfrmbase1.Page3.ct_date_generale1.outlook2003bar1.Panel.button3.Click()
|
||||
LOCAL lcLogNou
|
||||
lcLogNou = SUBSTR(FILETOSTR(gcUILog), LEN(lcLogInainte) + 1)
|
||||
DO verif WITH !('Doriti sa salvati' $ lcLogNou), ;
|
||||
'M2: barei laterale NU i-a aparut promptul "Doriti sa salvati..." cu partener NULL'
|
||||
DO verif WITH !loPnd.llock, 'M2: raman in editare dupa click pe bara (llock=' + TRANSFORM(loPnd.llock) + ')'
|
||||
DO HarnessStep WITH 2, 'bara laterala: fara prompt, raman in editare'
|
||||
|
||||
* ------------- Pas 3: Salveaza cu partener NULL -> refuz elegant (M1/M2)
|
||||
lcLogInainte = FILETOSTR(gcUILog)
|
||||
loPnd.Command2.Click()
|
||||
lcLogNou = SUBSTR(FILETOSTR(gcUILog), LEN(lcLogInainte) + 1)
|
||||
DO verif WITH ('Alegeti partenerul' $ lcLogNou), 'M2: mesaj "Alegeti partenerul!" la salvare fara partener'
|
||||
DO verif WITH !loPnd.llock AND loPnd.Command2.Caption == 'Salveaza', ;
|
||||
'M2: campurile raman DEBLOCATE dupa refuz (llock=' + TRANSFORM(loPnd.llock) + ', caption=' + loPnd.Command2.Caption + ')'
|
||||
DO HarnessStep WITH 3, 'salvare fara partener: refuz, raman in editare'
|
||||
|
||||
* ------------- Pas 4: aleg partener + Salveaza -> salvare reusita (M1/M2)
|
||||
LOCAL llSucces
|
||||
llSucces = goExecutor.oExecuta( ;
|
||||
"select id_part, denumire from vregistratura where id_part is not null and rownum = 1", 'cPartTest')
|
||||
IF llSucces AND USED('cPartTest') AND RECCOUNT('cPartTest') > 0
|
||||
SELECT cPartTest
|
||||
goRegistratura.id_part = id_part
|
||||
goRegistratura.denumire = denumire
|
||||
USE IN cPartTest
|
||||
goRegistratura.data = DATE()
|
||||
goRegistratura.numar = 'TSTUI'
|
||||
goRegistratura.descriere = 'TEST UI AUTOMAT'
|
||||
goRegistratura.nr_pag = 1
|
||||
loPnd.Refresh()
|
||||
loPnd.Command2.Click()
|
||||
DO verif WITH loPnd.llock AND loPnd.Command2.Caption == 'Modifica', ;
|
||||
'M2: dupa salvare campurile sunt blocate (llock=' + TRANSFORM(loPnd.llock) + ', caption=' + loPnd.Command2.Caption + ')'
|
||||
* verificare in baza
|
||||
llSucces = goExecutor.oExecuta("select numar, descriere from vregistratura where id_reg = " + ;
|
||||
ALLTRIM(STR(lnId_reg)), 'cVerif')
|
||||
IF llSucces AND USED('cVerif') AND RECCOUNT('cVerif') > 0
|
||||
SELECT cVerif
|
||||
DO verif WITH ALLTRIM(NVL(numar,'')) == 'TSTUI', ;
|
||||
'M1: salvarea a ajuns in baza (numar=' + TRANSFORM(NVL(numar,'')) + ')'
|
||||
USE IN cVerif
|
||||
ELSE
|
||||
DO verif WITH .F., 'verificare in baza dupa salvare'
|
||||
ENDIF
|
||||
ELSE
|
||||
DO HarnessLog WITH 'SKIP Pas 4: niciun partener disponibil pe schema de test'
|
||||
ENDIF
|
||||
DO HarnessStep WITH 4, 'salvare cu partener: reusita, campuri blocate'
|
||||
|
||||
* ------------- Pas 5: editare (Modifica -> schimb descriere -> Salveaza)
|
||||
loPnd.Command2.Click() && Modifica -> deblocare
|
||||
DO verif WITH !loPnd.llock, 'Editare: campuri deblocate (llock=' + TRANSFORM(loPnd.llock) + ')'
|
||||
goRegistratura.descriere = 'TEST UI AUTOMAT - EDITAT'
|
||||
goRegistratura.nr_pag = 3
|
||||
loPnd.Command2.Click() && Salveaza
|
||||
llSucces = goExecutor.oExecuta("select descriere, nr_pag from vregistratura where id_reg = " + ;
|
||||
ALLTRIM(STR(lnId_reg)), 'cVerif2')
|
||||
IF llSucces AND USED('cVerif2') AND RECCOUNT('cVerif2') > 0
|
||||
SELECT cVerif2
|
||||
DO verif WITH ALLTRIM(NVL(descriere,'')) == 'TEST UI AUTOMAT - EDITAT' AND NVL(nr_pag,0) = 3, ;
|
||||
'Editare: modificarile au ajuns in baza (descriere=' + ALLTRIM(NVL(descriere,'')) + ', nr_pag=' + TRANSFORM(NVL(nr_pag,0)) + ')'
|
||||
USE IN cVerif2
|
||||
ELSE
|
||||
DO verif WITH .F., 'verificare in baza dupa editare'
|
||||
ENDIF
|
||||
DO HarnessStep WITH 5, 'editare document: re-salvare verificata in baza'
|
||||
|
||||
* ------------- Pas 6: inapoi pe lista -> tot ultimul document (M4 pe do_cauta/Page2.Activate)
|
||||
goFundal._pgfrmbase1.ActivePage = 2
|
||||
DO verif WITH RECCOUNT('cRegistratura') = 1, ;
|
||||
'M4: revenirea pe lista pastreaza filtrul ultimului document (reccount=' + TRANSFORM(RECCOUNT('cRegistratura')) + ')'
|
||||
SELECT cRegistratura
|
||||
GO TOP
|
||||
DO verif WITH id_reg = lnId_reg, 'M4: ultimul document afisat este cel de test (id_reg=' + TRANSFORM(id_reg) + ')'
|
||||
DO HarnessStep WITH 6, 'lista dupa: doar documentul de test'
|
||||
|
||||
* ------------- curatenie
|
||||
LOCAL lcSql, lnSucces
|
||||
lcSql = [begin pack_registratura.sterge_registratura(] + ALLTRIM(STR(lnId_reg)) + ;
|
||||
[,] + ALLTRIM(STR(gnIdUtil)) + [); end;]
|
||||
lnSucces = goExecutor.oExecute(lcSql)
|
||||
DO HarnessLog WITH IIF(lnSucces < 0, ;
|
||||
'ATENTIE: stergerea documentului de test a esuat - stergeti manual id_reg=' + TRANSFORM(lnId_reg), ;
|
||||
'Curatenie OK: document de test sters (soft-delete), id_reg=' + TRANSFORM(lnId_reg))
|
||||
|
||||
DO HarnessLog WITH '=== REZULTAT: PASS=' + TRANSFORM(gnPass) + ' FAIL=' + TRANSFORM(gnFail)
|
||||
DO HarnessDone WITH IIF(gnFail = 0, 'done', 'fail')
|
||||
ON ERROR
|
||||
CLOSE ALL
|
||||
QUIT
|
||||
|
||||
PROCEDURE verif
|
||||
LPARAMETERS tlOk, tcMsg
|
||||
IF tlOk
|
||||
gnPass = gnPass + 1
|
||||
DO HarnessLog WITH 'PASS: ' + tcMsg
|
||||
ELSE
|
||||
gnFail = gnFail + 1
|
||||
DO HarnessLog WITH 'FAIL: ' + tcMsg
|
||||
ENDIF
|
||||
ENDPROC
|
||||
@@ -1,4 +1,27 @@
|
||||
<!--
|
||||
23/07/2026
|
||||
ROAREGISTRATURA - 2.0.5
|
||||
|
||||
:modificare:
|
||||
Registratura - adaugare/editare documente:
|
||||
- Dupa "Adauga", documentul nou intra DIRECT in editare (butonul arata "Salveaza"),
|
||||
fara pasul suplimentar "Modifica"; s-a eliminat mesajul eronat "Toate modificarile au efect imediat!".
|
||||
- Salvarea unui document fara partener ales nu mai produce eroare: apare mesajul
|
||||
"Alegeti partenerul!" iar campurile raman deblocate pentru completare.
|
||||
- Navigarea in bara laterala (Date generale / Referinte / Observatii / Documente atasate)
|
||||
nu mai declanseaza promptul "Doriti sa salvati modificarile facute?" cand documentul nou
|
||||
nu are inca partener; se ramane in editare.
|
||||
- Butonul "Salveaza" valideaza partenerul si salveaza INAINTE de blocarea campurilor.
|
||||
|
||||
:modificare:
|
||||
Lista documentelor se deschide pozitionata pe ULTIMUL document inregistrat (nu se mai
|
||||
incarca toata baza la deschidere); incarcarea completa se face doar la cautare explicita.
|
||||
|
||||
:modificare:
|
||||
Fonturile din lista documentelor, datele documentului si nomenclatorul de parteneri au fost
|
||||
uniformizate la Arial 10 (rebazare pe clasele comune; eliminat "Arial Narrow").
|
||||
-->
|
||||
<!--
|
||||
27/02/2014
|
||||
ROAREGISTRATURA - 2.0.4
|
||||
|
||||
|
||||
165
docs/analiza_registratura_adaugare_editare.md
Normal file
165
docs/analiza_registratura_adaugare_editare.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# Analiza: adaugare/editare document in registratura + lista documentelor + fonturi
|
||||
|
||||
Data: 23.07.2026. Analiza pe surse (fara modificari de cod). Referintele de linie sunt in
|
||||
fisierele text FoxBin2Prg (`.vc2`), sincronizate cu binarele la data analizei.
|
||||
|
||||
## 1. Fluxul actual (cum functioneaza azi)
|
||||
|
||||
Fereastra principala (`ofundal_registratura.vc2`, clasa `pg_meniu_princ`):
|
||||
- **Page2 "Lista documentelor"** = `ct_registratura` (grid pe cursorul `cRegistratura`,
|
||||
incarcat de `viz_registratura` din `Programe\oproceduri_roaregistratura.prg`).
|
||||
- **Page3 "Datele documentului"** = `ct_part_nr_data` (Partener / Nr. doc / Data doc +
|
||||
butonul **Modifica/Salveaza** cu lacat) + `ct_date_generale` (bara outlook cu butoanele
|
||||
Date generale / Referinte / Observatii / Documente atasate, care deschid formulare
|
||||
separate `podg_dg`, `podg_referinte`, `podg_obs`, `podg_link`).
|
||||
- Starea editarii este `ct_part_nr_data.llock` (`.T.` = blocat). Butonul `Command2`
|
||||
comuta: la deblocare afiseaza "Toate modificarile au efect imediat!", la a doua apasare
|
||||
("Salveaza") apeleaza `modifica_reg_dg`.
|
||||
- Salvarea reala e `modifica_reg_dg` (`oproceduri_roaregistratura.prg:100`) -> apel PL/SQL
|
||||
`pack_registratura.modifica_registratura`.
|
||||
- Adaugarea (`ct_registratura.do_adauga`, `ferestre_registratura.vc2:1206`): aloca numar
|
||||
intern (`oGeneratorNumere`, seria 10), insereaza un rand GOL prin
|
||||
`pack_registratura.adauga_registratura`, apoi sare pe Page3. Documentul nou are
|
||||
**id_part NULL** pana alege utilizatorul partenerul.
|
||||
|
||||
## 2. Problemele identificate (cauze exacte)
|
||||
|
||||
### P1. Prompt "Doriti sa salvati modificarile facute?" aparut "din senin"
|
||||
Doua locuri intreaba automat cand `llock = .F.`:
|
||||
- `outlook2003bar.vc2:1009` (`do_arata_formular`): **orice click pe un buton din bara
|
||||
laterala** (Date generale, Referinte, Observatii, Documente atasate) intreaba si, la Da,
|
||||
ruleaza `modifica_reg_dg`.
|
||||
- `ofundal_registratura.vc2:286` (`Page3.Deactivate`): la parasirea paginii, la fel.
|
||||
|
||||
Deci scenariul raportat: utilizatorul apasa **Modifica** (deblocare), apoi navigheaza
|
||||
(ex. deschide sectiunea Date generale ca sa completeze campuri sau vrea partenerul) ->
|
||||
prompt de salvare -> Da -> eroare, pentru ca documentul nou are partener NULL.
|
||||
|
||||
### P2. Eroarea la partener NULL
|
||||
`modifica_reg_dg`, linia 111:
|
||||
```
|
||||
lcId_part = Alltrim(Str(loRegistratura.id_part)) && fara NVL!
|
||||
```
|
||||
`Str(.NULL.)` -> NULL, concatenarea in `lcSql` propaga NULL -> `goExecutor.oExecute(NULL)`
|
||||
-> eroare. Aceeasi problema potentiala: `lcNr_pag` (linia 123, fara NVL) si `Dtos()` pe
|
||||
date NULL (liniile 114/116 dau sir gol la NULL — tratat in IIF, ok).
|
||||
|
||||
Validarea de partener exista **doar** in `Command2.Click` (ramura Salveaza,
|
||||
`ferestre_registratura.vc2:332`), dar:
|
||||
- ruleaza DUPA ce campurile au fost deja blocate si caption-ul pus pe "Modifica"
|
||||
(stare inconsistenta: mesaj "Alegeti partenerul!", dar formularul ramane blocat si
|
||||
nesalvat);
|
||||
- celelalte doua puncte de salvare (P1) NU au deloc validarea.
|
||||
|
||||
### P3. Flux confuz Modifica/Salveaza
|
||||
- Mesajul de la deblocare ("Toate modificarile au efect imediat!") e fals: modificarile de
|
||||
date generale se salveaza doar la "Salveaza"/prompt; doar `ck_avizat.Valid` scrie imediat.
|
||||
- Dupa adaugare (`do_adauga`) documentul nou apare pe Page3 **blocat**: utilizatorul mai
|
||||
trebuie sa apese Modifica inainte sa poata alege partenerul — pas inutil si sursa
|
||||
promptului din P1.
|
||||
- Raspunsul "Nu" la prompt arunca modificarile fara re-citirea datelor originale:
|
||||
`goRegistratura` ramane cu valorile editate (afisare inselatoare pana la refresh).
|
||||
|
||||
### P4. Lista documentelor: incarcare integrala + pozitionare pe primul
|
||||
- `viz_registratura` incarca TOATE inregistrarile cu `sters=0` din `vregistratura`
|
||||
(fara filtru initial pe ultimul document), apoi `Go Top` -> se vede inceputul bazei.
|
||||
- `Page2.Activate` apeleaza `do_cauta()` la fiecare activare; fara bife, filtrul devine
|
||||
`STERS=0` -> reincarcare integrala la fiecare revenire pe lista.
|
||||
|
||||
### P5. Fonturi
|
||||
- Clasele COMUN de baza (`_baza.vcx`: `_textbox`, `_label`, `_checkbox`, `_grid` etc.)
|
||||
au deja **Arial 10** — controalele derivate din ele sunt OK.
|
||||
- In proiect insa:
|
||||
- `ferestre_registratura.vc2`: **75 aparitii** `FontName = "Arial Narrow"` (gridul
|
||||
`grid_registratura` + toate coloanele/headerele/text-urile, checkbox-urile de filtru);
|
||||
- `onom_clienti.vc2`: **79 aparitii**;
|
||||
- `ct_part_nr_data`, `ct_date_generale` si mare parte din `frm_dg_date_generale` folosesc
|
||||
controale **baseclass VFP** (textbox/label/checkbox/commandbutton fara clasa COMUN)
|
||||
fara FontName -> mostenesc fontul formului sau raman pe default (Arial 9).
|
||||
|
||||
### P6. Alte observatii (fragilitate, de semnalat)
|
||||
- `Ck_tipdoc` e legat de classlib `..\..\roacont\comun\clase\caut_ora.vcx` (referinta
|
||||
cross-proiect catre ROACONT, nu COMUN-ul propriu) — `ferestre_registratura.vc2:589`.
|
||||
- `cmdFel_document`/`cmdNresp`/etc. au Picture din `..\..\roacontracte\grafice\find.bmp`
|
||||
(alt proiect).
|
||||
- Proiectul nu a mai fost recompilat de mult cu COMUN-ul curent -> build necesar in VFP9
|
||||
IDE dupa aplicarea modificarilor.
|
||||
|
||||
## 3. Modificari propuse (minime, in ordinea prioritatii)
|
||||
|
||||
### M1. `modifica_reg_dg` — garda si NVL (oproceduri_roaregistratura.prg)
|
||||
- La inceput: daca `Isnull(toRegistratura.id_part) Or Empty(toRegistratura.id_part)` ->
|
||||
`AMESSAGEBOX('Alegeti partenerul inainte de salvare!')` si `Return .F.`.
|
||||
- `lcId_part`/`lcNr_pag` cu `Nvl(...)`; functia sa intoarca `.T./.F.` (succes), ca apelantii
|
||||
sa poata reactiona.
|
||||
|
||||
### M2. Punct unic de salvare + prompt doar cand exista partener
|
||||
- In `do_arata_formular` (outlook2003bar) si `Page3.Deactivate`: daca `llock=.F.` si
|
||||
`id_part` NULL -> mesaj "Alegeti partenerul!" si **fara** apel `modifica_reg_dg`
|
||||
(raman in editare in cazul barei laterale; la Deactivate se renunta explicit).
|
||||
- In `Command2.Click` (Salveaza): validarea partenerului INAINTE de `blocheaza_campuri()`;
|
||||
se blocheaza doar dupa salvarea reusita.
|
||||
|
||||
### M3. Dupa adaugare, intra direct in editare
|
||||
In `do_adauga` / la comutarea pe Page3 pentru document nou: `llock=.F.`,
|
||||
`deblocheaza_campuri()` (inclusiv pe formularele podg_* deschise) si focus pe
|
||||
`cmdDenumire` -> utilizatorul alege direct partenerul, fara pasul Modifica.
|
||||
Se elimina si mesajul fals "Toate modificarile au efect imediat!" (sau se inlocuieste cu
|
||||
"Apasati Salveaza pentru a pastra modificarile").
|
||||
|
||||
### M4. Lista: initial doar ultimul document
|
||||
- `viz_registratura` primeste filtrul initial:
|
||||
`sters=0 and id_reg = (select max(id_reg) from vregistratura where sters=0)`
|
||||
(de validat sintaxa cu gencursor la implementare; alternativ ordonare desc + `rownum=1`).
|
||||
- `do_cauta`: daca nicio bifa de filtru nu e activa, pastreaza filtrul "ultimul document"
|
||||
in loc de `STERS=0` (incarcare integrala doar la cautare explicita).
|
||||
- Dupa incarcare: pozitionare pe ultimul (unicul) rand -> martor pentru ultimul numar
|
||||
de inregistrare.
|
||||
|
||||
### M5. Fonturi Arial 10 — prin rebazare pe clasele din `_baza.vcx` (decizie Marius)
|
||||
- Controalele **baseclass VFP** din proiect se rebazeaza pe clasele COMUN care au deja
|
||||
Arial 10: `textbox` -> `_textbox`, `label` -> `_label`, `checkbox` -> `_checkbox`,
|
||||
`commandbutton` -> `_commandbutton`, `optiongroup` -> `_optiongrup`
|
||||
(toate `OF "..\comun\clase\_baza.vcx"`). Vizate: `ct_part_nr_data` (txtClient,
|
||||
txtNumar, txtData_ctr, cmdDenumire, Command2, Label3/4/9), `frm_dg_date_generale`
|
||||
(txt*, cmd*, Label*, ck_avizat, optIE) si textele/checkbox-urile din coloanele
|
||||
gridului `grid_registratura`.
|
||||
- Se ELIMINA suprascrierile explicite `FontName = "Arial Narrow"` (75 in
|
||||
`ferestre_registratura.vc2`, 79 in `onom_clienti.vc2`), astfel incat controalele sa
|
||||
mosteneasca Arial 10 din clasele de baza; gridul (`_grdrow` din `_grd_base.vcx`)
|
||||
ramane pe mostenirea lui odata scoase suprascrierile.
|
||||
- Controalele deja derivate din COMUN (`_lbbase`, `but_*`, `clb_tx_simplu`,
|
||||
`ck_filtru_*` etc.) raman neatinse.
|
||||
- Atentie la latimi: Arial e mai lat ca Arial Narrow — de verificat vizual coloanele
|
||||
gridului si etichetele dupa schimbare (conventie_ux_formulare.md).
|
||||
- Nota tehnica: rebazarea se face in textul `.vc2` (schimbarea `AS <clasa>` +
|
||||
`ClassLib` in markerul `END OBJECT`), cu fidelity-check la write-back; e o
|
||||
modificare mai invaziva decat schimbarea de font per control — de testat intai pe
|
||||
un singur control, apoi extins.
|
||||
|
||||
### M6. Recompilare
|
||||
Dupa aplicarea M1–M5: BUILD proiect in VFP9 IDE (recompilare cu COMUN-ul curent),
|
||||
apoi `git_sync` si commit (dupa aprobarea diff-urilor).
|
||||
|
||||
## 4. Testare
|
||||
|
||||
Scripturi noi in `Teste\` (rulare headless `vfp9.exe -A -T`, log in `Teste\log_*.txt`,
|
||||
mediu CENTRAL / MARIUSM_AUTO conform reguli_lucru.md):
|
||||
- `test_init_env_registratura.prg` — init mediu neinteractiv pentru ROAREGISTRATURA
|
||||
(SET PATH/CLASSLIB/PROCEDURE preluate din `Programe\roaregistratura.prg`).
|
||||
- `test_registratura_form.prg` — incarca cursorul listei (`viz_registratura`),
|
||||
verifica existenta cursorului, numarul de inregistrari si pozitionarea pe ultimul
|
||||
document; instantiaza containerul `ct_registratura` pe un form ascuns.
|
||||
- `test_registratura_adaugare.prg` — fluxul de adaugare SI editare: alocare numar intern,
|
||||
`adauga_registratura`, apoi `modifica_reg_dg` cu partener NULL (se asteapta eroare/refuz
|
||||
— reproduce bugul P2), cu partener valid (se asteapta succes), apoi EDITAREA
|
||||
documentului (modificare descriere/nr_pag/data + re-salvare + verificare in baza —
|
||||
fluxul Modifica -> Salveaza).
|
||||
|
||||
NOTA: scripturile NU se ruleaza pe baza de productie (JCSSERVER/CONTAFIN_ORACLE).
|
||||
Daca schema de test nu contine `pack_registratura`, testele de adaugare logheaza eroarea
|
||||
si se opresc curat (fara scrieri partiale).
|
||||
|
||||
## 5. Ce urmeaza
|
||||
Dupa aprobare, implementarea se livreaza ca diff-uri pe fisierele text
|
||||
(`docs\diff_runda1_*.patch`), write-back cu `txt2vcx.ps1` doar dupa OK.
|
||||
Reference in New Issue
Block a user