diff --git a/clase/overificari.vc2 b/clase/overificari.vc2
index dadfc5d..5d34b12 100644
--- a/clase/overificari.vc2
+++ b/clase/overificari.vc2
@@ -1612,13 +1612,9 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
*< OBJECTDATA: ObjPath="_grdbase1.cDataInactivare.Text1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="_grdbase1.cDataReactivare.Header1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="_grdbase1.cDataReactivare.Text1" UniqueID="" Timestamp="" />
- *< OBJECTDATA: ObjPath="But_verifica1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Gridextra1" UniqueID="" Timestamp="" />
- *< OBJECTDATA: ObjPath="chkMFIN" UniqueID="" Timestamp="" />
+ *< OBJECTDATA: ObjPath="optVedere" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="chkVIES" UniqueID="" Timestamp="" />
- *< OBJECTDATA: ObjPath="chkMFINURL" UniqueID="" Timestamp="" />
- *< OBJECTDATA: ObjPath="chkVIESURL" UniqueID="" Timestamp="" />
- *< OBJECTDATA: ObjPath="spnPauza" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lblInfo" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="chkLiniaCurenta" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="chkDuplicat" UniqueID="" Timestamp="" />
@@ -1627,15 +1623,18 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
*< OBJECTDATA: ObjPath="But_renunt1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="cmdVerifica" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lblVerifica" UniqueID="" Timestamp="" />
- *< OBJECTDATA: ObjPath="chkExperimental" UniqueID="" Timestamp="" />
- *< OBJECTDATA: ObjPath="chkANAF" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="chkInactiv" UniqueID="" Timestamp="" />
*
+ *m: asazafiltre
+ *m: construiesteatentie
*m: filtreatentionari
*m: meniu_dblclick
*m: meniu_dblclick_partener
+ *m: setvedere
+ *p: lafiseazaales && Coloana Ales e vizibila doar cand apelantul o cere (D394 pe perioade vechi)
*p: lautoverificare && Daca se porneste verificarea automat din metoda Show, cand este apelata verificarea din Reg. TVA
+ *p: lexperimental && Nu mai functioneaza mfinante.ro experimental, pastrat ca proprietate citita/scrisa din alte formulare
*p: lmfin
*p: lvies
*
@@ -1647,13 +1646,17 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
cusername =
DoCreate = .T.
Height = 416
+ lafiseazaales = .F.
lautoverificare = .F.
+ lexperimental = .F.
lmfin = .F.
lvies = .F.
Name = "frm_verificare_parteneri"
Width = 774
_memberdata =
+
+
_shape1.Anchor = 10
_shape1.Height = 29
@@ -1661,11 +1664,13 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
_shape1.Name = "_shape1"
_shape1.Top = 0
_shape1.Width = 780
+ _shape2.Left = 717
_shape2.Name = "_shape2"
+ _shape2.Top = 0
Lb_titlu_alb_b121.Caption = "Verificare parteneri"
Lb_titlu_alb_b121.Left = 12
Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121"
- Lb_titlu_alb_b121.Top = 0
+ Lb_titlu_alb_b121.Top = 4
BUT_TERMIN1.Anchor = 8
BUT_TERMIN1.Left = 743
BUT_TERMIN1.Name = "BUT_TERMIN1"
@@ -1678,13 +1683,13 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ColumnCount = 34, ;
DeleteMark = .F., ;
HeaderHeight = 32, ;
- Height = 283, ;
+ Height = 298, ;
Left = 12, ;
Name = "_grdbase1", ;
Panel = 1, ;
ReadOnly = .T., ;
RecordSource = "crsverificareparteneri", ;
- Top = 84, ;
+ Top = 80, ;
Width = 756, ;
Column1.ColumnOrder = 1, ;
Column1.ControlSource = "crsverificareparteneri.ales", ;
@@ -1716,57 +1721,58 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
Column4.Sparse = .F., ;
Column4.Visible = .T., ;
Column4.Width = 41, ;
- Column5.ColumnOrder = 13, ;
+ Column5.ColumnOrder = 18, ;
Column5.ControlSource = "crsverificareparteneri.firma", ;
+ Column5.DynamicBackColor = "RGB(205,229,252)", ;
Column5.Name = "Column5", ;
Column5.ReadOnly = .T., ;
Column5.Visible = .T., ;
Column5.Width = 305, ;
- Column6.ColumnOrder = 21, ;
+ Column6.ColumnOrder = 22, ;
Column6.ControlSource = "crsverificareparteneri.cod", ;
+ Column6.DynamicBackColor = "RGB(205,229,252)", ;
Column6.Name = "Column6", ;
Column6.ReadOnly = .T., ;
Column6.Visible = .T., ;
Column6.Width = 75, ;
- Column7.BackColor = 185,220,255, ;
- Column7.ColumnOrder = 23, ;
+ Column7.ColumnOrder = 24, ;
Column7.ControlSource = "crsverificareparteneri.adresa", ;
- Column7.DynamicBackColor = "RGB(185,220,255)", ;
+ Column7.DynamicBackColor = "RGB(205,229,252)", ;
Column7.Name = "Column7", ;
Column7.ReadOnly = .T., ;
Column7.Visible = .T., ;
Column7.Width = 150, ;
- Column8.ColumnOrder = 24, ;
+ Column8.ColumnOrder = 25, ;
Column8.ControlSource = "crsverificareparteneri.judet", ;
Column8.Name = "Column8", ;
Column8.ReadOnly = .T., ;
Column8.Visible = .T., ;
Column8.Width = 89, ;
- Column9.ColumnOrder = 25, ;
+ Column9.ColumnOrder = 26, ;
Column9.ControlSource = "crsverificareparteneri.regcom", ;
Column9.Name = "Column9", ;
Column9.ReadOnly = .T., ;
Column9.Visible = .T., ;
Column9.Width = 75, ;
- Column10.ColumnOrder = 26, ;
+ Column10.ColumnOrder = 27, ;
Column10.ControlSource = "crsverificareparteneri.codpostal", ;
Column10.Name = "Column10", ;
Column10.ReadOnly = .T., ;
Column10.Visible = .T., ;
Column10.Width = 75, ;
- Column11.ColumnOrder = 27, ;
+ Column11.ColumnOrder = 28, ;
Column11.ControlSource = "crsverificareparteneri.telefon", ;
Column11.Name = "Column11", ;
Column11.ReadOnly = .T., ;
Column11.Visible = .T., ;
Column11.Width = 75, ;
- Column12.ColumnOrder = 28, ;
+ Column12.ColumnOrder = 29, ;
Column12.ControlSource = "crsverificareparteneri.fax", ;
Column12.Name = "Column12", ;
Column12.ReadOnly = .T., ;
Column12.Visible = .T., ;
Column12.Width = 75, ;
- Column13.ColumnOrder = 29, ;
+ Column13.ColumnOrder = 30, ;
Column13.ControlSource = "crsverificareparteneri.vies", ;
Column13.CurrentControl = "_checkbox1", ;
Column13.Name = "Column13", ;
@@ -1774,7 +1780,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
Column13.Sparse = .F., ;
Column13.Visible = .T., ;
Column13.Width = 75, ;
- Column14.ColumnOrder = 30, ;
+ Column14.ColumnOrder = 31, ;
Column14.ControlSource = "crsverificareparteneri.platitortva", ;
Column14.CurrentControl = "_checkbox1", ;
Column14.Name = "Column14", ;
@@ -1782,7 +1788,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
Column14.Sparse = .F., ;
Column14.Visible = .T., ;
Column14.Width = 75, ;
- Column15.ColumnOrder = 31, ;
+ Column15.ColumnOrder = 34, ;
Column15.ControlSource = "crsverificareparteneri.eroare", ;
Column15.Name = "Column15", ;
Column15.ReadOnly = .T., ;
@@ -1790,16 +1796,18 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
Column15.Width = 58, ;
Column16.ColumnOrder = 8, ;
Column16.ControlSource = "datatvamfin", ;
+ Column16.DynamicBackColor = "RGB(205,229,252)", ;
Column16.Name = "Column16", ;
Column16.ReadOnly = .T., ;
Column17.ColumnOrder = 7, ;
Column17.ControlSource = "platitortvamfin", ;
Column17.CurrentControl = "_checkbox1", ;
+ Column17.DynamicBackColor = "RGB(205,229,252)", ;
Column17.Name = "Column17", ;
Column17.ReadOnly = .T., ;
Column17.Sparse = .F., ;
Column17.Width = 71, ;
- Column18.ColumnOrder = 32, ;
+ Column18.ColumnOrder = 35, ;
Column18.ControlSource = "crsverificareparteneri.duplicat", ;
Column18.CurrentControl = "_checkbox1", ;
Column18.Name = "Column18", ;
@@ -1811,8 +1819,9 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
Column19.Name = "Column19", ;
Column19.ReadOnly = .T., ;
Column19.Width = 41, ;
- Column20.ColumnOrder = 12, ;
+ Column20.ColumnOrder = 17, ;
Column20.ControlSource = "stare", ;
+ Column20.DynamicBackColor = "RGB(205,229,252)", ;
Column20.Name = "Column20", ;
Column20.ReadOnly = .T., ;
Column20.Width = 88, ;
@@ -1820,83 +1829,92 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
Column21.ControlSource = "atentie", ;
Column21.Name = "Column21", ;
Column21.ReadOnly = .T., ;
- Column21.Width = 78, ;
- Column22.ColumnOrder = 33, ;
+ Column21.Width = 110, ;
+ Column22.ColumnOrder = 32, ;
Column22.ControlSource = "crsverificareparteneri.id_part", ;
Column22.Name = "Column23", ;
Column22.ReadOnly = .T., ;
- Column23.ColumnOrder = 14, ;
+ Column23.ColumnOrder = 19, ;
Column23.ControlSource = "crsverificareparteneri.tvaincasare", ;
Column23.CurrentControl = "Check1", ;
+ Column23.DynamicBackColor = "RGB(205,229,252)", ;
Column23.Name = "cTVAincasare", ;
Column23.ReadOnly = .T., ;
Column23.Sparse = .F., ;
Column23.Width = 59, ;
- Column24.ColumnOrder = 17, ;
+ Column24.ColumnOrder = 20, ;
Column24.ControlSource = "crsverificareparteneri.splittva", ;
Column24.CurrentControl = "Check1", ;
+ Column24.DynamicBackColor = "RGB(205,229,252)", ;
Column24.Name = "cSplitTVA", ;
Column24.ReadOnly = .T., ;
Column24.Sparse = .F., ;
Column24.Width = 59, ;
- Column25.ColumnOrder = 18, ;
+ Column25.ColumnOrder = 21, ;
Column25.ControlSource = "crsverificareparteneri.inactiv", ;
Column25.CurrentControl = "Check1", ;
+ Column25.DynamicBackColor = "RGB(205,229,252)", ;
Column25.Name = "cInactiv", ;
Column25.ReadOnly = .T., ;
Column25.Sparse = .F., ;
Column25.Width = 51, ;
- Column26.BackColor = 255,202,228, ;
- Column26.ColumnOrder = 22, ;
+ Column26.ColumnOrder = 23, ;
Column26.ControlSource = "crsverificareparteneri.adresa_roa", ;
- Column26.DynamicBackColor = "RGB(255,202,228)", ;
Column26.Name = "Column26", ;
Column26.ReadOnly = .T., ;
Column26.Width = 150, ;
- Column27.ColumnOrder = 34, ;
+ Column27.ColumnOrder = 33, ;
Column27.ControlSource = "IIF(EMPTY(NVL(sursa,'')),'',IIF(ALLTRIM(sursa)=='ANAF','ANAF','CACHE '+DTOC(NVL(data_sursa,DATE()))+IIF(ALLTRIM(sursa)=='CACHE_INDISP',' (ANAF indisponibil)','')))", ;
+ Column27.DynamicBackColor = "RGB(205,229,252)", ;
Column27.Name = "Column27", ;
Column27.ReadOnly = .T., ;
Column27.Visible = .T., ;
Column27.Width = 230, ;
Column28.ColumnOrder = 9, ;
Column28.ControlSource = "crsverificareparteneri.data_inceput_scptva", ;
+ Column28.DynamicBackColor = "RGB(205,229,252)", ;
Column28.Name = "cDataInceputScpTva", ;
Column28.ReadOnly = .T., ;
Column28.Visible = .T., ;
Column28.Width = 85, ;
Column29.ColumnOrder = 10, ;
Column29.ControlSource = "crsverificareparteneri.data_sfarsit_scptva", ;
+ Column29.DynamicBackColor = "RGB(205,229,252)", ;
Column29.Name = "cDataSfarsitScpTva", ;
Column29.ReadOnly = .T., ;
Column29.Visible = .T., ;
Column29.Width = 85, ;
Column30.ColumnOrder = 11, ;
Column30.ControlSource = "crsverificareparteneri.data_anul_imp_scptva", ;
+ Column30.DynamicBackColor = "RGB(205,229,252)", ;
Column30.Name = "cDataAnulImpScpTva", ;
Column30.ReadOnly = .T., ;
Column30.Visible = .T., ;
Column30.Width = 85, ;
- Column31.ColumnOrder = 15, ;
+ Column31.ColumnOrder = 12, ;
Column31.ControlSource = "crsverificareparteneri.data_inceput_tvainc", ;
+ Column31.DynamicBackColor = "RGB(205,229,252)", ;
Column31.Name = "cDataInceputTvaInc", ;
Column31.ReadOnly = .T., ;
Column31.Visible = .T., ;
Column31.Width = 85, ;
- Column32.ColumnOrder = 16, ;
+ Column32.ColumnOrder = 13, ;
Column32.ControlSource = "crsverificareparteneri.data_sfarsit_tvainc", ;
+ Column32.DynamicBackColor = "RGB(205,229,252)", ;
Column32.Name = "cDataSfarsitTvaInc", ;
Column32.ReadOnly = .T., ;
Column32.Visible = .T., ;
Column32.Width = 85, ;
- Column33.ColumnOrder = 19, ;
+ Column33.ColumnOrder = 14, ;
Column33.ControlSource = "crsverificareparteneri.data_inactivare", ;
+ Column33.DynamicBackColor = "RGB(205,229,252)", ;
Column33.Name = "cDataInactivare", ;
Column33.ReadOnly = .T., ;
Column33.Visible = .T., ;
Column33.Width = 85, ;
- Column34.ColumnOrder = 20, ;
+ Column34.ColumnOrder = 15, ;
Column34.ControlSource = "crsverificareparteneri.data_reactivare", ;
+ Column34.DynamicBackColor = "RGB(205,229,252)", ;
Column34.Name = "cDataReactivare", ;
Column34.ReadOnly = .T., ;
Column34.Visible = .T., ;
@@ -1916,7 +1934,8 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ForeColor = 0,0,0, ;
Margin = 0, ;
Name = "Text1", ;
- ReadOnly = .T.
+ ReadOnly = .T., ;
+ SelectedBackColor = 100,185,255
*< END OBJECT: BaseClass="textbox" />
ADD OBJECT '_grdbase1.cDataInactivare.Header1' AS header WITH ;
@@ -1932,7 +1951,8 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ForeColor = 0,0,0, ;
Margin = 0, ;
Name = "Text1", ;
- ReadOnly = .T.
+ ReadOnly = .T., ;
+ SelectedBackColor = 100,185,255
*< END OBJECT: BaseClass="textbox" />
ADD OBJECT '_grdbase1.cDataInceputScpTva.Header1' AS header WITH ;
@@ -1948,7 +1968,8 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ForeColor = 0,0,0, ;
Margin = 0, ;
Name = "Text1", ;
- ReadOnly = .T.
+ ReadOnly = .T., ;
+ SelectedBackColor = 100,185,255
*< END OBJECT: BaseClass="textbox" />
ADD OBJECT '_grdbase1.cDataInceputTvaInc.Header1' AS header WITH ;
@@ -1964,7 +1985,8 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ForeColor = 0,0,0, ;
Margin = 0, ;
Name = "Text1", ;
- ReadOnly = .T.
+ ReadOnly = .T., ;
+ SelectedBackColor = 100,185,255
*< END OBJECT: BaseClass="textbox" />
ADD OBJECT '_grdbase1.cDataReactivare.Header1' AS header WITH ;
@@ -1980,7 +2002,8 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ForeColor = 0,0,0, ;
Margin = 0, ;
Name = "Text1", ;
- ReadOnly = .T.
+ ReadOnly = .T., ;
+ SelectedBackColor = 100,185,255
*< END OBJECT: BaseClass="textbox" />
ADD OBJECT '_grdbase1.cDataSfarsitScpTva.Header1' AS header WITH ;
@@ -1996,7 +2019,8 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ForeColor = 0,0,0, ;
Margin = 0, ;
Name = "Text1", ;
- ReadOnly = .T.
+ ReadOnly = .T., ;
+ SelectedBackColor = 100,185,255
*< END OBJECT: BaseClass="textbox" />
ADD OBJECT '_grdbase1.cDataSfarsitTvaInc.Header1' AS header WITH ;
@@ -2012,7 +2036,8 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ForeColor = 0,0,0, ;
Margin = 0, ;
Name = "Text1", ;
- ReadOnly = .T.
+ ReadOnly = .T., ;
+ SelectedBackColor = 100,185,255
*< END OBJECT: BaseClass="textbox" />
ADD OBJECT '_grdbase1.cInactiv.Check1' AS checkbox WITH ;
@@ -2188,7 +2213,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ADD OBJECT '_grdbase1.Column16.Header1' AS header WITH ;
Alignment = 2, ;
- Caption = "Data verificata", ;
+ Caption = "Verificat la", ;
Name = "Header1", ;
WordWrap = .T.
*< END OBJECT: BaseClass="header" />
@@ -2287,7 +2312,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ADD OBJECT '_grdbase1.Column20.Header1' AS header WITH ;
Alignment = 2, ;
- Caption = "Stare", ;
+ Caption = "Mesaj ANAF", ;
Name = "Header1"
*< END OBJECT: BaseClass="header" />
@@ -2551,35 +2576,12 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
Top = 0
*< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" />
- ADD OBJECT 'But_verifica1' AS but_verifica WITH ;
- Anchor = 8, ;
- Comment = "*:OnResize=rt", ;
- Left = 683, ;
- Name = "But_verifica1", ;
- TabIndex = 13, ;
- ToolTipText = "Verificare coduri fiscale", ;
- Top = 0
- *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" />
-
- ADD OBJECT 'chkANAF' AS _checkbox WITH ;
- Alignment = 0, ;
- Anchor = 6, ;
- Caption = "Serviciu web ANAF", ;
- Enabled = .F., ;
- Left = 441, ;
- Name = "chkANAF", ;
- ToolTipText = "Se verifica prin serviciul web ANAF, cate 500 de coduri fiscale per interogare", ;
- Top = 393, ;
- Value = .F., ;
- Visible = .F.
- *< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" />
-
ADD OBJECT 'chkDuplicat' AS _checkbox WITH ;
Alignment = 0, ;
AutoSize = .F., ;
- Caption = "Coduri duplicate!", ;
+ Caption = "Coduri duplicate", ;
FontBold = .T., ;
- ForeColor = 255,0,0, ;
+ ForeColor = 128,0,128, ;
Height = 29, ;
Left = 358, ;
Name = "chkDuplicat", ;
@@ -2588,43 +2590,32 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ToolTipText = "Apasati pe buton pentru a selecta codurile fiscale/denumirile duplicate!", ;
Top = 50, ;
Visible = .F., ;
- Width = 131
- *< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" />
-
- ADD OBJECT 'chkExperimental' AS _checkbox WITH ;
- Alignment = 0, ;
- Anchor = 6, ;
- Caption = "Mod experimental", ;
- Enabled = .F., ;
- Left = 313, ;
- Name = "chkExperimental", ;
- ToolTipText = "Nu se cere codul Captcha si se interogheaza www.mfinante.ro fara pauza intre coduri fiscale", ;
- Top = 392, ;
- Value = .F., ;
- Visible = .F.
+ Width = 110
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" />
ADD OBJECT 'chkInactiv' AS _checkbox WITH ;
Alignment = 0, ;
AutoSize = .F., ;
- Caption = "Inactivi!", ;
+ Caption = "Inactivi", ;
FontBold = .T., ;
+ ForeColor = 180,120,0, ;
Height = 29, ;
- Left = 489, ;
+ Left = 470, ;
Name = "chkInactiv", ;
SpecialEffect = 0, ;
Style = 1, ;
- ToolTipText = "Apasati pe buton pentru a selecta codurile fiscale invalide!", ;
+ ToolTipText = "Apasati pe buton pentru a selecta partenerii inactivi la ANAF!", ;
Top = 50, ;
Visible = .F., ;
- Width = 72
+ Width = 110
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" />
ADD OBJECT 'chkInvalid' AS _checkbox WITH ;
Alignment = 0, ;
AutoSize = .F., ;
- Caption = "Coduri invalide!", ;
+ Caption = "Coduri invalide", ;
FontBold = .T., ;
+ ForeColor = 200,0,0, ;
Height = 29, ;
Left = 248, ;
Name = "chkInvalid", ;
@@ -2633,95 +2624,61 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ToolTipText = "Apasati pe buton pentru a selecta codurile fiscale invalide!", ;
Top = 50, ;
Visible = .F., ;
- Width = 111
+ Width = 110
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" />
ADD OBJECT 'chkLiniaCurenta' AS _checkbox WITH ;
Alignment = 0, ;
Anchor = 6, ;
Caption = "Verificare inregistrari de la linia curenta in jos", ;
- Left = 12, ;
+ Left = 303, ;
Name = "chkLiniaCurenta", ;
ToolTipText = "Verificare inregistrari de la linia curenta in jos (altfel toate inregistrarile)", ;
- Top = 372, ;
+ Top = 388, ;
Value = .F.
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" />
- ADD OBJECT 'chkMFIN' AS _checkbox WITH ;
- Alignment = 0, ;
- Caption = "Interogare Min. Finante", ;
- Enabled = .F., ;
- Left = 12, ;
- Name = "chkMFIN", ;
- ToolTipText = "Informatii persoane juridice de pe website-ul www.mfinante.ro (cod, firma, adresa, reg. com. cod postal, telefon, fax)", ;
- Top = 32, ;
- Value = .T.
- *< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" />
-
- ADD OBJECT 'chkMFINURL' AS _checkbox WITH ;
- Alignment = 0, ;
- Anchor = 6, ;
- Caption = "Interogare mfinante.ro via romfast.ro", ;
- Enabled = .F., ;
- Left = 312, ;
- Name = "chkMFINURL", ;
- ToolTipText = "Interogare direct mfinante.ro sau via romfast.ro", ;
- Top = 372, ;
- Value = .F., ;
- Visible = .F.
- *< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" />
-
ADD OBJECT 'chkPlatitor' AS _checkbox WITH ;
Alignment = 0, ;
AutoSize = .F., ;
BackColor = 150,150,150, ;
- Caption = "(Ne)Platitori TVA (cu/fara) RO!", ;
+ Caption = "(Ne)Platitori TVA", ;
FontBold = .T., ;
+ ForeColor = 170,20,90, ;
Height = 29, ;
- Left = 564, ;
+ Left = 583, ;
Name = "chkPlatitor", ;
SpecialEffect = 0, ;
Style = 1, ;
ToolTipText = "Apasati pe buton pentru a selecta inregistrarile Platitori TVA fara RO sau Neplatitori TVA cu RO", ;
Top = 50, ;
Visible = .F., ;
- Width = 210
+ Width = 110
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" />
ADD OBJECT 'chkVIES' AS _checkbox WITH ;
Alignment = 0, ;
- Caption = "Interogare VIES", ;
+ Anchor = 6, ;
+ Caption = "Interogare ANAF", ;
Left = 12, ;
Name = "chkVIES", ;
- ToolTipText = "Calitate platitor TVA din registrul operatorilor intracomunitari de pe website-ul ec.europa.eu", ;
- Top = 57, ;
+ ToolTipText = "Interogare registru ANAF: denumire, adresa, scop TVA, TVA la incasare, split TVA, inactivi", ;
+ Top = 386, ;
Value = .T.
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" />
- ADD OBJECT 'chkVIESURL' AS _checkbox WITH ;
- Alignment = 0, ;
- Anchor = 6, ;
- Caption = "Interogare ec.europa.eu via romfast.ro", ;
- Enabled = .F., ;
- Left = 12, ;
- Name = "chkVIESURL", ;
- ToolTipText = "Interogare direct ec.europa.eu sau via romfast.ro", ;
- Top = 392, ;
- Value = .F., ;
- Visible = .F.
- *< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" />
-
ADD OBJECT 'cmdVerifica' AS cmd_executa WITH ;
+ Anchor = 12, ;
BackColor = 0,0,0, ;
caction = do_verifica, ;
Caption = "\
ADD OBJECT 'Gridextra1' AS gridextra WITH ;
@@ -2735,13 +2692,13 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
*< END OBJECT: ClassLib="..\utile\gridextras\gridextras.vcx" BaseClass="custom" />
ADD OBJECT 'lblInfo' AS _label WITH ;
- Caption = "Apasati ESC pentru a intrerupe verificarile *** Dublu click pe Denumire/Cod fiscal = modificare partener, pe Firma/Cod ANAF = verificare manuala / istoric", ;
- FontSize = 8, ;
- ForeColor = 255,255,128, ;
+ Caption = "Alegeti optiunile si apasati Verifica!! *** Dublu click pe un rand = meniu de verificare", ;
+ FontSize = 10, ;
+ ForeColor = 128,128,128, ;
Left = 12, ;
Name = "lblInfo", ;
- Top = 16, ;
- Visible = .F.
+ Top = 32, ;
+ Visible = .T.
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" />
ADD OBJECT 'lblVerifica' AS _label WITH ;
@@ -2757,29 +2714,46 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
Width = 606
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" />
- ADD OBJECT 'spnPauza' AS _spinner WITH ;
- Anchor = 6, ;
- Enabled = .F., ;
- Height = 24, ;
- Increment = 1.00, ;
- KeyboardHighValue = 100, ;
- KeyboardLowValue = 0, ;
- Left = 245, ;
- Name = "spnPauza", ;
- SpinnerHighValue = 100.00, ;
- SpinnerLowValue = 0.00, ;
- ToolTipText = "Pauza (sec) intre interogarile www.mfinante.ro", ;
- Top = 388, ;
- Value = 5.0, ;
- Visible = .F., ;
- Width = 56
- *< END OBJECT: ClassLib="_baza.vcx" BaseClass="spinner" />
+ ADD OBJECT 'optVedere' AS _optiongrup WITH ;
+ AutoSize = .F., ;
+ BackStyle = 0, ;
+ BorderStyle = 0, ;
+ ButtonCount = 3, ;
+ Height = 21, ;
+ Left = 12, ;
+ Name = "optVedere", ;
+ Top = 55, ;
+ Value = 1, ;
+ Width = 230, ;
+ Option1.AutoSize = .T., ;
+ Option1.BackStyle = 0, ;
+ Option1.Caption = "Esential", ;
+ Option1.Height = 17, ;
+ Option1.Left = 0, ;
+ Option1.Name = "Option1", ;
+ Option1.Top = 2, ;
+ Option2.AutoSize = .T., ;
+ Option2.BackStyle = 0, ;
+ Option2.Caption = "Perioade TVA", ;
+ Option2.Height = 17, ;
+ Option2.Left = 70, ;
+ Option2.Name = "Option2", ;
+ Option2.Top = 2, ;
+ Option3.AutoSize = .T., ;
+ Option3.BackStyle = 0, ;
+ Option3.Caption = "Tot", ;
+ Option3.Height = 17, ;
+ Option3.Left = 175, ;
+ Option3.Name = "Option3", ;
+ Option3.Top = 2, ;
+ Option3.Width = 35
+ *< END OBJECT: ClassLib="_baza.vcx" BaseClass="optiongroup" />
PROCEDURE Activate
*** lansez verificarea automat, cand sunt apelat cu lista de parteneri din Reg TVA
*** o lansez pe activate ca sa se vada tabelul cu parteneri cand se face verificarea
Local llMFin, llVIES, llValidare
- llMFin = This.chkMFIN.Value
+ llMFin = This.lMFIN
llVIES = This.chkVIES.Value
llValidare = .T.
If This.lAutoverificare
@@ -2791,13 +2765,36 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
Endif
ENDPROC
- PROCEDURE do_termin
- Local lcMFINROMFAST, lcVIESROMFAST
- lcMFINROMFAST = TRANSFORM(this.chkMFINURL.Value)
- lcVIESROMFAST = TRANSFORM(this.chkVIESURL.Value)
- goAPI.WriteProfileString(m.gcSettingsFile, [validare], "mfinromfast", m.lcMFINROMFAST)
- goAPI.WriteProfileString(m.gcSettingsFile, [validare], "viesromfast", m.lcVIESROMFAST)
- DODEFAULT()
+ PROCEDURE asazafiltre
+ *!* 23.08.2026 marius.mutu: butoanele de filtru isi schimba latimea odata cu numarul din caption, deci se aseaza unul dupa altul, altfel se suprapun
+ Local lnI, lnLeft, lnTop, loBtn
+ Local Array laBtn[4]
+ laBtn[1] = This.chkInvalid
+ laBtn[2] = This.chkDuplicat
+ laBtn[3] = This.chkInactiv
+ laBtn[4] = This.chkPlatitor
+ lnLeft = This.chkInvalid.Left
+ lnTop = This.chkInvalid.Top
+ For lnI = 1 To 4
+ loBtn = laBtn[m.lnI]
+ If loBtn.Visible
+ loBtn.AutoSize = .T. && ia latimea textului curent
+ loBtn.AutoSize = .F.
+ loBtn.Height = This.chkInvalid.Height
+ loBtn.Top = m.lnTop
+ loBtn.Left = m.lnLeft
+ lnLeft = m.lnLeft + loBtn.Width + 8
+ Endif
+ Endfor
+ ENDPROC
+
+ PROCEDURE construiesteatentie
+ *!* 22.08.2026 marius.mutu: atentie se reconstruieste din campurile boolene, in ordinea gravitatii; Alltrim pe campul padded, altfel a doua eticheta cade la trunchiere
+ Update crsVerificareParteneri Set atentie = ''
+ Update crsVerificareParteneri Set atentie = Alltrim(Alltrim(atentie) + ' INVALID') Where !Valid And !Isnull(Valid)
+ Update crsVerificareParteneri Set atentie = Alltrim(Alltrim(atentie) + ' DUPLICAT') Where duplicat
+ Update crsVerificareParteneri Set atentie = Alltrim(Alltrim(atentie) + ' INACTIV') Where inactiv
+ Update crsVerificareParteneri Set atentie = Alltrim(Alltrim(atentie) + ' FARA RO') Where !Empty(firma) And ((Upper(atribut_fiscal) = 'RO' And !platitortvamfin) Or (Empty(atribut_fiscal) And platitortvamfin))
ENDPROC
PROCEDURE do_verifica
@@ -2806,13 +2803,13 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
*** tlMFIN - se doreste verificarea MFIN (se apeleaza din INIT automat)
*** tlVIES - se doreste verificarea VIES (se apeleaza din INIT automat)
- Local lcCodFiscal, lcEroare, lcKey, lcTipInterogare, lcXml, llAtributFiscal, llMFINURL, llVIESURL
+ Local lcCodFiscal, lcEroare, lcKey, lcTipInterogare, lcXml, llAtributFiscal
Local llMFIN, llVIES
Local llLiniaCurenta, lnRecord, lcConditieSuplimentara, llModExperimental
+ Local lnInvalid, lnDuplicat, lnPlatitor, lnInactiv
+ Store 0 To lnInvalid, lnDuplicat, lnPlatitor, lnInactiv
Local loPartener
- llMFINURL = This.chkMFINURL.Value && verificare prin ROMFAST.RO = .T.
- llVIESURL = This.chkVIESURL.Value && verificare prin ROMFAST.RO = .T.
llLiniaCurenta = This.chkLiniaCurenta.Value
lcConditieSuplimentara = ".T."
@@ -2826,18 +2823,18 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
*!* glRCViesURL = .T.
*!* gcRCVIESURL = "http://localhost/update/verificarecod.aspx/verificarecod/verificare/CIF/|CIF|/VIES"
*!* loVerificare = Createobject("verificarecod", glRCViesURL, glRCMfinURL, gcRCRomfastURL, gcRCMfinanteURL, gcRCMfinanteParams) && validare.prg
- loVerificare = Createobject("verificarecod", m.llMFINURL, m.llVIESURL) && validare.prg
+ loVerificare = Createobject("verificarecod", .F., .F.) && validare.prg, nu mai intretin ROMFAST.RO
*!* MOD EXPERIMENTAL
- llModExperimental = This.chkExperimental.Value
- llServiciuWebANAF = This.chkANAF.Value
+ llModExperimental = This.lExperimental
+ llServiciuWebANAF = .T. && mai functioneaza doar serviciul ANAF, nu si mfinante.ro
loVerificare.lOneSession = !m.llModExperimental
loVerificare.lCaptcha = !m.llModExperimental
*!* MOD EXPERIMENTAL ^
llValidare = Iif(Pcount() >= 1, m.tlValidare, .F.)
- llMFIN = Iif(Pcount() >= 2, m.tlMFIN, This.chkMFIN.Value)
+ llMFIN = Iif(Pcount() >= 2, m.tlMFIN, This.lMFIN)
llVIES = Iif(Pcount() >= 3, m.tlVIES, This.chkVIES.Value)
llValidare = llValidare Or m.llMFIN Or m.llVIES && se valideaza codurile daca se doreste verificarea MFIN/VIES
@@ -2857,10 +2854,12 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
Use In (Select('cCodDuplicat'))
Use In (Select('cDenumireDuplicat'))
- *** activez checkboxul CODURI/DENUMIRI DUPLICATE
+ *!* 22.08.2026 marius.mutu: caption cu numar, butonul ramane vizibil dezactivat la 0
Select crsVerificareParteneri
- Locate For duplicat
- This.chkDuplicat.Visible = Found()
+ Count For duplicat To lnDuplicat
+ This.chkDuplicat.Caption = "Duplicate (" + Transform(m.lnDuplicat) + ")"
+ This.chkDuplicat.Enabled = m.lnDuplicat > 0
+ This.chkDuplicat.Visible = .T.
Go Top In crsVerificareParteneri
@@ -2869,9 +2868,11 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
Replace All IsCIF With loVerificare.IsCIF(cod_fiscal)
Replace All Valid With Iif(IsCIF, loVerificare.validare('CIF', cod_fiscal), loVerificare.validare('CNP', cod_fiscal))
REPLACE all valid with .T. FOR EMPTY(NVL(cod_fiscal,'')) && nu consider invalide codurile fiscale goale
- *** activez checkboxul CODURI INVALIDE
- Locate For !Valid
- This.chkInvalid.Visible = Found()
+ *!* 22.08.2026 marius.mutu: caption cu numar, butonul ramane vizibil dezactivat la 0
+ Count For !Valid To lnInvalid
+ This.chkInvalid.Caption = "Coduri invalide (" + Transform(m.lnInvalid) + ")"
+ This.chkInvalid.Enabled = m.lnInvalid > 0
+ This.chkInvalid.Visible = .T.
Go Top In crsVerificareParteneri
Endif
@@ -2882,6 +2883,8 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
This.lblVerifica.Visible = .T.
This.cmdVerifica.Visible = .F.
+ *!* 22.08.2026 marius.mutu: lblInfo oglindeste starea verificarii, ESC intrerupe
+ This.lblInfo.Caption = This.lblVerifica.Caption + " *** ESC intrerupe"
*!* VERIFIC CODURILE FISCALE VALIDE PENTRU ATRIBUTUL FISCAL IN VIES
lcTipInterogare = Iif(m.llVIES, 'VIES', '') + Iif(m.llMFIN, 'MFIN', '')
@@ -2952,6 +2955,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
lcCodFiscal = Alltrim(Upper(cod_fiscal))
llAtributFiscal = Isalpha(lcCodFiscal)
This.lblVerifica.Caption = "Se verifica... " + Alltrim(denumire) + ' ' + Transform(Recno()) + "/" + Transform(Reccount()) + " " + Transform(Round(Recno()/Reccount()*100,2)) + ' % * Apasati tasta pentru a intrerupe operatia de verificare'
+ This.lblInfo.Caption = This.lblVerifica.Caption
Wait Window Alltrim(denumire) + ' ' + Transform(Recno()) + "/" + Transform(Reccount()) + " " + Transform(Round(Recno()/Reccount()*100,2)) + ' %' + ;
Chr(13) + Chr(10) + '* Apasati tasta pentru a intrerupe operatia de verificare' Nowait
@@ -2985,7 +2989,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
If !m.llModExperimental
If Recno('crsVerificareParteneri') < Reccount('crsVerificareParteneri')
- lcKey = Inkey(This.spnPauza.Value)
+ lcKey = Inkey(5)
If lcKey = 27 && ESC
If aMESSAGEBOX('Doriti sa intrerupeti operatia?', 4+32, _Screen.Caption) = 6
Exit
@@ -3006,19 +3010,25 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ENDIF && m.llServiciuWebANAF
Release loVerificare
- Update crsVerificareParteneri Set atentie = 'DUPLICAT' Where duplicat
- Update crsVerificareParteneri Set atentie = Alltrim(Alltrim(atentie) + ' ' + Iif(!platitortvamfin, 'NE', '') + 'PLATITOR TVA') Where !Empty(firma) And ((Upper(atribut_fiscal) = 'RO' And !platitortvamfin) Or (Empty(atribut_fiscal) And platitortvamfin))
+ This.ConstruiesteAtentie()
- *** activez checkboxul platitor TVA fara RO
+ *!* 22.08.2026 marius.mutu: caption cu numar, butonul ramane vizibil dezactivat la 0
Select crsVerificareParteneri
- Locate For 'PLATITOR TVA'$atentie
- This.chkPlatitor.Visible = Found()
+ Count For 'FARA RO'$atentie To lnPlatitor
+ This.chkPlatitor.Caption = "Atribut RO (" + Transform(m.lnPlatitor) + ")"
+ This.chkPlatitor.Enabled = m.lnPlatitor > 0
+ This.chkPlatitor.Visible = .T.
- LOCATE FOR inactiv
- This.chkInactiv.Visible = Found()
+ Count For inactiv To lnInactiv
+ This.chkInactiv.Caption = "Inactivi (" + Transform(m.lnInactiv) + ")"
+ This.chkInactiv.Enabled = m.lnInactiv > 0
+ This.chkInactiv.Visible = .T.
+ This.AsazaFiltre()
This.lblVerifica.Visible = .F.
This.cmdVerifica.Visible = .T.
+ *!* 22.08.2026 marius.mutu: lblInfo arata rezumatul verificarii
+ This.lblInfo.Caption = Transform(Reccount('crsVerificareParteneri')) + " parteneri verificati *** " + Transform(m.lnInvalid) + " coduri invalide *** " + Transform(m.lnDuplicat) + " duplicate *** " + Transform(m.lnInactiv) + " inactivi *** Dublu click pe un rand = meniu de verificare"
Go Top In crsVerificareParteneri
@@ -3029,7 +3039,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
LOCAL lcFilter
lcFilter = Iif(Thisform.chkInvalid.Value = 1, "!valid", ".T.") + ' and ' + ;
Iif(Thisform.chkDuplicat.Value = 1, "duplicat", ".T.") + ' And ' + ;
- Iif(Thisform.chkPlatitor.Value = 1, "'PLATITOR'$ATENTIE", ".T.") + ' And ' + ;
+ Iif(Thisform.chkPlatitor.Value = 1, "'FARA RO'$ATENTIE", ".T.") + ' And ' + ;
Iif(Thisform.chkInactiv.Value = 1, "inactiv", ".T.")
Thisform.gridextra1.customcolumnfilters[1,5] = m.lcFilter
@@ -3037,66 +3047,40 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ENDPROC
PROCEDURE Init
- LPARAMETERS tlValidare, tlMFIN, tlVIES, tlAutoVerificare, tlExperimental, tlServiciuWebANAF
- *** tlExperimental: .T. se verifica mfinante.ro fara captcha, fara pauze, cu interogari distincte pentru fiecare cod
- *** tlServiciuWebANAF: .T. se verifica prin serviciul web ANAF, cate 500 de coduri fiscale per interogare
+ LPARAMETERS tlValidare, tlMFIN, tlVIES, tlAutoVerificare, tlExperimental, tlServiciuWebANAF, tlAfiseazaAles
+ *** tlExperimental: nu mai functioneaza (pastrat doar ca proprietate, citit/scris din alte formulare)
+ *** tlServiciuWebANAF: neutilizat, mai functioneaza doar serviciul ANAF (verificare cate 500 de coduri fiscale per interogare)
+ *** tlAfiseazaAles: .T. arata coloana Ales (doar D394 pe perioade vechi o citeste)
#DEFINE CRLF CHR(13) + CHR(10)
- Local lcMFINROMFAST, lcVIESROMFAST, llMFINROMFAST, llVIESROMFAST
- lcMFINROMFAST = goAPI.GetProfileString(m.gcSettingsFile, [validare], "mfinromfast")
- lcVIESROMFAST = goAPI.GetProfileString(m.gcSettingsFile, [validare], "viesromfast")
- lcMFINROMFAST = NVL(m.lcMFINROMFAST, '')
- lcVIESROMFAST = NVL(m.lcVIESROMFAST, '')
- IF !INLIST(m.lcMFINROMFAST, '.T.', '.F.')
- llMFINROMFAST = .F.
- ELSE
- llMFINROMFAST = &lcMFINROMFAST
- ENDIF
- IF !INLIST(m.lcVIESROMFAST, '.T.', '.F.')
- llVIESROMFAST = .F.
- ELSE
- llVIESROMFAST = &lcVIESROMFAST
- ENDIF
+ This.lMFIN = m.tlMFIN
+ *!* 23.08.2026 marius.mutu: bifa arata interogarea ANAF, singura care se mai face (VIES nu se interogheaza nicaieri)
+ this.chkVIES.Value = m.tlVIES Or m.tlMFIN
- * Nu mai intretin nici un serviciu pentru verificarea prin romfast.ro
- llMFINROMFAST = .F.
- llVIESROMFAST = .F.
- tlExperimental = .F. && nu mai functioneaza mfinante.ro experimental
+ This.lExperimental = m.tlExperimental && mfinante.ro experimental, mai e trimis doar de D394 pe perioade vechi
+ This.lafiseazaales = Iif(Pcount() >= 7, m.tlAfiseazaAles, .F.)
- this.chkMFINURL.Value = m.llMFINROMFAST
- this.chkVIESURL.Value = m.llVIESROMFAST
-
- this.chkMFIN.Value = m.tlMFIN
- this.chkVIES.Value = m.tlVIES
-
- this.chkExperimental.Value = m.tlExperimental
- this.chkANAF.Value = .T. && m.tlServiciuWebANAF mai functioneaza doar serviciul ANAF, nu si mfinante.ro
-
- *!* this.but_verifica1.ToolTipText = "Verificare coduri fiscale"
-
- this.spnPauza.ToolTipText = "Pauza (sec) intre interogarile www.mfinante.ro" + CHR(13) + CHR(10) + ;
- "Daca interogarile sunt prea dese, mfinante.ro blocheaza cautarile." + CHR(13) + CHR(10) + ;
- "Incercati pauze mai mari de 5-6 secunde!"
-
- this.WindowState = 2
+ this.WindowState = 2
this.gridextra1.setup()
DODEFAULT()
This.lAutoVerificare = m.tlAutoVerificare
+ *!* 22.08.2026 marius.mutu: culoarea semnalata pe coloana Atentie si pe celula vinovata, cate o culoare per problema
+ this._grdbase1.Column21.DynamicForeColor = "IIF('INVALID'$ATENTIE, RGB(200,0,0), IIF('DUPLICAT'$ATENTIE, RGB(128,0,128), IIF('INACTIV'$ATENTIE, RGB(180,120,0), IIF('FARA RO'$ATENTIE, RGB(170,20,90), RGB(0,0,0)))))"
+ this._grdbase1.Column3.DynamicForeColor = "IIF(!Valid, RGB(200,0,0), RGB(0,0,0))"
+ this._grdbase1.Column2.DynamicForeColor = "IIF(duplicat, RGB(128,0,128), RGB(0,0,0))"
+ this._grdbase1.Column5.DynamicForeColor = "IIF(inactiv, RGB(180,120,0), RGB(0,0,0))"
+ this._grdbase1.Column17.DynamicForeColor = "IIF('FARA RO'$ATENTIE, RGB(170,20,90), RGB(0,0,0))"
-
- *** FONT ROSU PENTRU CODURILE, PARTENERII DUPLICATI
- this._grdbase1.SetAll("DynamicForeColor","IIF(duplicat, RGB(255,0,0), RGB(0,0,0))", "Column")
- *** FUNDAL GRI PENTRU PARTENERII CU RO SI FARA DATA LUARII IN EVIDENTA TVA SAU FARA RO SI CU DATA LUARII IN EVIDENTA TVA
- this._grdbase1.SetAll("DynamicBackColor","IIF('PLATITOR TVA'$ATENTIE, RGB(200,200,200), RGB(255,255,255))", "Column")
+ This.SetVedere(1)
SELECT crsVerificareParteneri
- GO TOP
+ GO TOP
- this._grDBASE1.HeaderHeight = 32
+ this._grDBASE1.HeaderHeight = 32
ENDPROC
PROCEDURE Load
@@ -3119,7 +3103,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
PROCEDURE meniu_dblclick
*** Verificare cod fiscal de pe inregistrarea curenta
Local loDate As "empty"
- Local lcAlias, lcCodFiscal, lcDenumire, lnOptiune, lnRaspuns, loPartener
+ Local lcAlias, lcCodFiscal, lcDenumire, lnIdPart, lnOptiune, lnRaspuns, loPartener
lnOptiune = 0
loPartener = Null
@@ -3127,10 +3111,16 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
lcAlias = This._grdbase1.RecordSource
Select (m.lcAlias)
+ lnIdPart = Iif(Type(m.lcAlias + '.id_part') = 'N', Nvl(Evaluate(m.lcAlias + '.id_part'), 0), 0)
AddProperty(loDate, "denumire", Alltrim(denumire))
AddProperty(loDate, "cod_fiscal", Alltrim(Nvl(cod_fiscal, '')))
+ *!* 22.08.2026 marius.mutu: prima optiune a meniului deschide fisa partenerului; ; din denumire se inlocuieste cu , ca sa nu sparga meniul
+ AddProperty(loDate, "optiuni_meniu_ante", Iif(Empty(m.lnIdPart), "\", "") + "MODIFICARE PARTENER - " + Strtran(Alltrim(denumire), ';', ',') + ";\-;")
lnRaspuns = VerificaCodFiscal(loDate, @lnOptiune, @loPartener)
+ If m.lnOptiune = 1
+ Thisform.meniu_dblclick_partener()
+ Endif
ENDPROC
PROCEDURE meniu_dblclick_partener
@@ -3149,6 +3139,65 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
loRec = nom_parteneri_modifica(m.lnIdPart) && in onomenclatoare.prg
ENDPROC
+ PROCEDURE setvedere
+ Lparameters tnVedere
+ *!* 22.08.2026 marius.mutu: comuta vederea Esential/Perioade TVA/Tot; nicio coloana nu se sterge, doar Visible
+ Local lnI
+ With This._grdbase1
+ For lnI = 1 To 34
+ .Columns(m.lnI).Visible = (m.tnVedere = 3)
+ Endfor
+
+ Do Case
+ Case m.tnVedere = 1 && Esential
+ .Column1.Visible = This.lafiseazaales
+ .Column21.Visible = .T.
+ .Column2.Visible = .T.
+ .Column2.Width = 130
+ .Column3.Visible = .T.
+ .Column3.Width = 85
+ .Column3.ControlSource = "IIF(EMPTY(NVL(atribut_fiscal,'')),'',ALLTRIM(atribut_fiscal)) + ALLTRIM(NVL(cod_fiscal,''))"
+ .Column3.Header1.Caption = "Cod fiscal ROA"
+ .Column5.Visible = .T.
+ .Column5.Width = 110
+ .Column17.Visible = .T.
+ .Column17.Width = 52
+ .cDataInceputScpTva.Visible = .T.
+ .cDataSfarsitScpTva.Visible = .T.
+ .cDataAnulImpScpTva.Visible = .T.
+ .Column27.Visible = .T.
+ Case m.tnVedere = 2 && Perioade TVA
+ .Column2.Visible = .T.
+ .Column2.Width = 221
+ .Column3.Visible = .T.
+ .Column3.Width = 75
+ .Column3.ControlSource = "crsverificareparteneri.cod_fiscal"
+ .Column3.Header1.Caption = "CIF/CNP"
+ .cDataInceputScpTva.Visible = .T.
+ .cDataSfarsitScpTva.Visible = .T.
+ .cDataAnulImpScpTva.Visible = .T.
+ .cDataInceputTvaInc.Visible = .T.
+ .cDataSfarsitTvaInc.Visible = .T.
+ .cDataInactivare.Visible = .T.
+ .cDataReactivare.Visible = .T.
+ .Column27.Visible = .T.
+ Otherwise && Tot
+ *!* 23.08.2026 marius.mutu: coloanele VIES raman ascunse si in Tot, nu se mai completeaza
+ .Column13.Visible = .F.
+ .Column14.Visible = .F.
+ .Column2.Width = 221
+ .Column3.Width = 75
+ .Column3.ControlSource = "crsverificareparteneri.cod_fiscal"
+ .Column3.Header1.Caption = "CIF/CNP"
+ .Column5.Width = 305
+ .Column16.Width = 75
+ .Column17.Width = 71
+ .Column1.Visible = This.lafiseazaales
+ Endcase
+ Endwith
+ This.optVedere.Value = m.tnVedere
+ ENDPROC
+
PROCEDURE chkDuplicat.Click
Thisform.FiltreAtentionari()
ENDPROC
@@ -3162,47 +3211,124 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
ENDPROC
- PROCEDURE chkMFIN.ProgrammaticChange
- Thisform.chkMFINURL.Visible = .F. && This.Value
- thisform.spnPauza.Visible = .F. && This.Value
- thisform.chkLiniaCurenta.Visible = This.Value or thisform.chkVies.Value
- ENDPROC
-
- PROCEDURE chkMFIN.Valid
- Thisform.chkMFINURL.Visible = This.Value
- thisform.spnPauza.Visible = This.Value
- thisform.chkLiniaCurenta.Visible = This.Value or thisform.chkVies.Value
- ENDPROC
-
PROCEDURE chkPlatitor.Click
Thisform.FiltreAtentionari()
ENDPROC
PROCEDURE chkVIES.ProgrammaticChange
- Thisform.chkViesURL.Visible = .F. && This.Value
- thisform.chkLiniaCurenta.Visible = This.Value or thisform.chkMfin.Value
+ thisform.chkLiniaCurenta.Visible = This.Value or thisform.lMFIN
ENDPROC
PROCEDURE chkVIES.Valid
- Thisform.chkViesURL.Visible = This.Value
- thisform.chkLiniaCurenta.Visible = This.Value or thisform.chkMfin.Value
+ thisform.chkLiniaCurenta.Visible = This.Value or thisform.lMFIN
+ ENDPROC
+
+ PROCEDURE optVedere.Click
+ Thisform.SetVedere(This.Value)
+ ENDPROC
+
+ PROCEDURE _grdbase1.cDataAnulImpScpTva.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.cDataInactivare.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.cDataInceputScpTva.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.cDataInceputTvaInc.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.cDataReactivare.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.cDataSfarsitScpTva.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.cDataSfarsitTvaInc.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.cInactiv.Check1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column10.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column11.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column12.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column13._checkbox1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column14._checkbox1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column15.Text1.DblClick
+ Thisform.meniu_dblclick()
ENDPROC
PROCEDURE _grdbase1.Column16.Text1.DblClick
Thisform.meniu_dblclick()
ENDPROC
+ PROCEDURE _grdbase1.Column17._checkbox1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column18._checkbox1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column19.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
PROCEDURE _grdbase1.Column2.Text1.DblClick
- Thisform.meniu_dblclick_partener()
-
+ Thisform.meniu_dblclick()
ENDPROC
PROCEDURE _grdbase1.Column20.Text1.DblClick
Thisform.meniu_dblclick()
ENDPROC
+ PROCEDURE _grdbase1.Column21.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column23.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column26.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column27.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
PROCEDURE _grdbase1.Column3.Text1.DblClick
- Thisform.meniu_dblclick_partener()
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column4._checkbox1.DblClick
+ Thisform.meniu_dblclick()
ENDPROC
PROCEDURE _grdbase1.Column5.Text1.DblClick
@@ -3213,6 +3339,26 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
Thisform.meniu_dblclick()
ENDPROC
+ PROCEDURE _grdbase1.Column7.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column8.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.Column9.Text1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.cSplitTVA.Check1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
+ PROCEDURE _grdbase1.cTVAincasare.Check1.DblClick
+ Thisform.meniu_dblclick()
+ ENDPROC
+
ENDDEFINE
DEFINE CLASS frm_verificare_parteneri_istoric AS _frmbase OF "_frm_base.vcx"
diff --git a/docs/flux-editare-vfp-text.md b/docs/flux-editare-vfp-text.md
index 3f4ebce..315986b 100644
--- a/docs/flux-editare-vfp-text.md
+++ b/docs/flux-editare-vfp-text.md
@@ -109,3 +109,11 @@ fals `roundtrip text1 != text2`. Ruleaza atunci cu lista rebazata:
la fiecare capat de linie - rezultatul e un fisier cu sfarsituri de linie amestecate (CRLF pe
continutul vechi, LF pe cel nou). Verificare finala obligatorie dupa orice scriere: numara
octetii `0x0A` neprecedati de `0x0D` (LF izolati) - trebuie sa fie 0.
+- **`-DryRun` NU e plasa de siguranta pentru capete de linie** - fidelity-check-ul compara doar
+ continutul text, nu CRLF vs LF, deci un fisier convertit integral la LF de un tool Edit/Write
+ (patit si cumulat, pe mai multe runde succesive) trece cu OK/EXITCODE=0. Verificare separata,
+ obligatorie dupa fiecare editare, langa censul de octeti non-ASCII deja documentat mai sus:
+ `perl -e 'local $/; open F,"<:raw",$ARGV[0]; $d=; $crlf=()=$d=~/\r\n/g; $lf=()=$d=~/\n/g; print $lf-$crlf' `
+ trebuie sa dea 0. Semnal secundar: daca `git diff --numstat` arata brusc tot fisierul schimbat
+ (nu doar liniile atinse), capetele de linie sunt gresite. Reparare (doar dupa ce ai confirmat ca
+ fisierul n-are deja niciun `\r`): `perl -pe 's/\n/\r\n/' < f > f.tmp`.
diff --git a/programe/oproceduri_comune.prg b/programe/oproceduri_comune.prg
index 6d6e17f..91890f4 100644
--- a/programe/oproceduri_comune.prg
+++ b/programe/oproceduri_comune.prg
@@ -4772,7 +4772,7 @@ Function verifica_partener_show_info
*** tcMesajIntrebare: IN, optional, daca se intreaba ceva la sfarsitul formularului (ex: Se completeaza datele in formularul partener nou?)
Local lcCodFiscal, lcDenumire, lcText, llCodRO, llPlatitorTVAMfin, llPlatitorTVAVIES, lnDialogType
- Local lnRaspuns, loPartener, lcProvenienta, lcPerioade
+ Local lnRaspuns, loPartener, lcSursaPrefix, llAtentie, lcTVA, lcStareFirma, lcIdent, lcMesajAnaf
lcCodFiscal = Transform(m.tcCodFiscal)
lcDenumire = Transform(m.tcDenumire)
@@ -4784,50 +4784,68 @@ Function verifica_partener_show_info
llTvaIncasare = loPartener.tvaincasare
llSplitTVA = loPartener.splittva
llInactiv = loPartener.inactiv
- *!* 01.08.2026 marius.mutu: marcaj explicit al sursei (ANAF live / cache), nu doar pe randurile din cache
- lcProvenienta = ''
+ llAtentie = ((m.llPlatitorTVAMfin And !m.llCodRO) Or (!m.llPlatitorTVAMfin And m.llCodRO)) Or m.llInactiv
+
+ *!* 22.08.2026 marius.mutu: marcaj explicit al sursei (ANAF live / cache), ca prefix pe linia denumirii
+ lcSursaPrefix = ''
If Pemstatus(m.loPartener, 'sursa', 5) And !Empty(Alltrim(Nvl(loPartener.sursa, '')))
- lcProvenienta = Iif(Alltrim(Nvl(loPartener.sursa, '')) == 'ANAF', '(sursa: ANAF)', ;
- '(sursa: CACHE ' + Dtoc(Nvl(loPartener.data_sursa, Date())) + Iif(Alltrim(Nvl(loPartener.sursa, '')) == 'CACHE_INDISP', ', ANAF indisponibil', '') + ')')
+ lcSursaPrefix = Iif(Alltrim(Nvl(loPartener.sursa, '')) == 'ANAF', 'ANAF: ', ;
+ 'CACHE ' + Dtoc(Nvl(loPartener.data_sursa, Date())) + Iif(Alltrim(Nvl(loPartener.sursa, '')) == 'CACHE_INDISP', ' (ANAF indisponibil)', '') + ': ')
Endif
- *!* 22.08.2026 marius.mutu: perioadele ANAF, doar cele completate (traseul mfinante.ro nu le are)
- lcPerioade = ''
+ *!* 22.08.2026 marius.mutu: mesaj grupat pe sectiuni TVA/STARE FIRMA/IDENTIFICARE, fara campuri goale
+ lcMesajAnaf = Iif(!Empty(Alltrim(Nvl(loPartener.stare, ''))), 'Mesaj ANAF: ' + Alltrim(loPartener.stare) + crlf, '')
+
+ lcTVA = Iif(m.llPlatitorTVAMfin, "Platitor TVA: DA (la " + Alltrim(loPartener.datatvamfin) + ")", "Platitor TVA: NU") + crlf
+ lcStareFirma = 'Inactiv: ' + Iif(m.llInactiv, 'DA', 'NU') + crlf
If Pemstatus(m.loPartener, 'data_inceput_scptva', 5)
If !Empty(Nvl(loPartener.data_inceput_scptva, {}))
- lcPerioade = m.lcPerioade + 'Perioada TVA: ' + Dtoc(loPartener.data_inceput_scptva) + ' - ' + ;
+ lcTVA = m.lcTVA + 'Perioada TVA: ' + Dtoc(loPartener.data_inceput_scptva) + ' - ' + ;
Iif(Empty(Nvl(loPartener.data_sfarsit_scptva, {})), 'in vigoare', Dtoc(loPartener.data_sfarsit_scptva)) + ;
Iif(Empty(Nvl(loPartener.data_anul_imp_scptva, {})), '', ' (anulare din oficiu: ' + Dtoc(loPartener.data_anul_imp_scptva) + ')') + crlf
Endif
+ lcTVA = m.lcTVA + m.lcMesajAnaf + 'TVA la incasare: ' + Iif(m.llTvaIncasare, 'DA', 'NU') + crlf
If !Empty(Nvl(loPartener.data_inceput_tvainc, {}))
- lcPerioade = m.lcPerioade + 'Perioada TVA la incasare: ' + Dtoc(loPartener.data_inceput_tvainc) + ' - ' + ;
+ lcTVA = m.lcTVA + 'Perioada TVA la incasare: ' + Dtoc(loPartener.data_inceput_tvainc) + ' - ' + ;
Iif(Empty(Nvl(loPartener.data_sfarsit_tvainc, {})), 'in vigoare', Dtoc(loPartener.data_sfarsit_tvainc)) + crlf
Endif
+ lcTVA = m.lcTVA + 'Split TVA: ' + Iif(m.llSplitTVA, 'DA', 'NU') + crlf
If !Empty(Nvl(loPartener.data_inactivare, {}))
- lcPerioade = m.lcPerioade + 'Inactivare: ' + Dtoc(loPartener.data_inactivare) + ;
+ lcStareFirma = m.lcStareFirma + 'Inactivare: ' + Dtoc(loPartener.data_inactivare) + ;
Iif(Empty(Nvl(loPartener.data_reactivare, {})), '', ' Reactivare: ' + Dtoc(loPartener.data_reactivare)) + crlf
Endif
+ Else
+ lcTVA = m.lcTVA + m.lcMesajAnaf + 'TVA la incasare: ' + Iif(m.llTvaIncasare, 'DA', 'NU') + crlf + ;
+ 'Split TVA: ' + Iif(m.llSplitTVA, 'DA', 'NU') + crlf
+ Endif
+
+ lcIdent = ''
+ If !Empty(loPartener.adresa)
+ lcIdent = m.lcIdent + 'Adresa: ' + Alltrim(loPartener.adresa) + crlf
+ Endif
+ If !Empty(loPartener.judet)
+ lcIdent = m.lcIdent + 'Judet: ' + loPartener.judet + crlf
+ Endif
+ If !Empty(loPartener.regcom)
+ lcIdent = m.lcIdent + 'Reg. comertului: ' + loPartener.regcom + crlf
+ Endif
+ If !Empty(loPartener.codpostal)
+ lcIdent = m.lcIdent + 'Cod postal: ' + loPartener.codpostal + crlf
+ Endif
+ If !Empty(loPartener.telefon)
+ lcIdent = m.lcIdent + 'Telefon: ' + loPartener.telefon + crlf
+ Endif
+ If !Empty(loPartener.fax)
+ lcIdent = m.lcIdent + 'Fax: ' + loPartener.fax + crlf
Endif
lcText = 'VERIFICARE CIF: ' + m.lcCodFiscal + ' ' + m.lcDenumire + crlf + crlf + ;
- Alltrim(loPartener.firma) + crlf + ;
- Iif(!Empty(m.lcProvenienta), m.lcProvenienta + crlf, '') + ;
- Iif((m.llPlatitorTVAMfin And !m.llCodRO) Or (!m.llPlatitorTVAMfin And m.llCodRO), ' *** ATENTIE *** ', '') + ;
- Iif(m.llPlatitorTVAMfin, "PLATITOR TVA (" + Alltrim(loPartener.datatvamfin) + ")", "NEPLATITOR TVA") + crlf + ;
- 'Stare: ' + Alltrim(loPartener.stare) + crlf + ;
- 'TVA Incasare: ' + Iif(m.llTvaIncasare, 'DA', 'NU') + crlf + ;
- 'Split TVA: ' + Iif(m.llSplitTVA, 'DA', 'NU') + crlf + ;
- 'Inactiv: ' + Iif(m.llInactiv, 'DA *** ATENTIE!', 'NU') + crlf + ;
- m.lcPerioade + ;
- '----------------------------------------------------' + crlf + ;
- '* Adresa: ' + Alltrim(loPartener.adresa) + crlf + ;
- '* Judet: ' + loPartener.judet + crlf + ;
- '* Nr. inregistrare la Registrul Comertului: ' + loPartener.regcom + crlf + ;
- '* Cod Postal: ' + loPartener.codpostal + crlf + ;
- '* Telefon: ' + loPartener.telefon + crlf + ;
- '* Fax: ' + loPartener.fax + crlf + ;
- Iif(!Empty(loPartener.eroare), Alltrim(loPartener.eroare) + crlf, '') + ;
- '----------------------------------------------------' + crlf + crlf + ;
+ m.lcSursaPrefix + Alltrim(loPartener.firma) + crlf + ;
+ Iif(m.llAtentie, ' *** ATENTIE *** ' + crlf, '') + crlf + ;
+ '--- TVA ---' + crlf + m.lcTVA + crlf + ;
+ Iif(!Empty(m.lcStareFirma), '--- STARE FIRMA ---' + crlf + m.lcStareFirma + crlf, '') + ;
+ Iif(!Empty(m.lcIdent), '--- IDENTIFICARE ---' + crlf + m.lcIdent + crlf, '') + ;
+ Iif(!Empty(loPartener.eroare), Alltrim(loPartener.eroare) + crlf + crlf, '') + ;
Iif(!Empty(m.tcMesajIntrebare), m.tcMesajIntrebare + crlf + crlf + crlf, "")
lnRaspuns = amessagebox(lcText, m.lnDialogType, _Screen.Caption)
@@ -4841,20 +4859,13 @@ Function GetMeniuVerificareCodFiscal
llVerificareCod = Type('tcCodFiscal') = 'C' And !Empty(m.tcCodFiscal)
lcMeniuOptiuniAnte = Iif(Type('tcOptiuniMeniuAnte') = 'C' And !Empty(m.tcOptiuniMeniuAnte), Alltrim(m.tcOptiuniMeniuAnte), '')
+ *!* 22.08.2026 marius.mutu: meniu scurtat, un raspuns ANAF acopera toate verificarile separate de mai jos
lcMenu = lcMeniuOptiuniAnte + ;
- Iif(!m.llVerificareCod, "\", "") + "Verificare ANAF (automat);" + ;
+ Iif(!m.llVerificareCod, "\", "") + "VERIFICARE ANAF;" + ;
+ Iif(!m.llVerificareCod, "\", "") + "VERIFICARE VIES;" + ;
+ "ISTORIC VERIFICARI COD FISCAL;" + ;
"\-;" + ;
- Iif(!m.llVerificareCod, "\", "") + "Verificare MFINANTE (manual);" + ;
- "\-;" + ;
- Iif(!m.llVerificareCod, "\", "") + "Verificare Registru inactivi ANAF (manual);" + ;
- "\-;" + ;
- Iif(!m.llVerificareCod, "\", "") + "Verificare Registru TVA Incasare (automat);" + ;
- Iif(!m.llVerificareCod, "\", "") + "Verificare Registru TVA Incasare (manual);" + ;
- "\-;" + ;
- Iif(!m.llVerificareCod, "\", "") + "Verificare VIES (automat);" + ;
- Iif(!m.llVerificareCod, "\", "") + "Verificare VIES (manual);" + ;
- "\-;" + ;
- "Istoric verificari cod fiscal"
+ Iif(!m.llVerificareCod, "\", "") + "DESCHIDE FISA PE MFINANTE.RO"
Return m.lcMenu
Endfunc
@@ -4867,14 +4878,11 @@ Function GetOptiuneVerificareCodFiscal
lnOptiune = Iif(Type('tnOptiune') = 'N', m.tnOptiune, 0)
+ *!* 22.08.2026 marius.mutu: numerotare pe meniul scurtat (1 ANAF, 2 VIES, 3 ISTORIC, 5 MFINANTE.RO)
lcTipVerificare = Iif(m.lnOptiune = 1, 'ANAF_SERVICIU_WEB', ;
- Iif(m.lnOptiune = 3, 'MFIN_MANUAL_COD', ;
- Iif(m.lnOptiune = 5, 'ANAF_MANUAL_COD', ;
- Iif(m.lnOptiune = 7, 'RTVAI_AUTO_COD', ;
- Iif(m.lnOptiune = 8, 'RTVAI_MANUAL_COD', ;
- Iif(m.lnOptiune = 10, 'VIES_AUTO', ;
- Iif(m.lnOptiune = 11, 'VIES_MANUAL', ;
- Iif(m.lnOptiune = 13, 'ISTORIC', ''))))))))
+ Iif(m.lnOptiune = 2, 'VIES_AUTO', ;
+ Iif(m.lnOptiune = 3, 'ISTORIC', ;
+ Iif(m.lnOptiune = 5, 'MFIN_MANUAL_COD', ''))))
Return m.lcTipVerificare
Endfunc
diff --git a/programe/validare.prg b/programe/validare.prg
index f5d6493..07fbccf 100644
--- a/programe/validare.prg
+++ b/programe/validare.prg
@@ -958,6 +958,10 @@ Define Class VerificareCod As Custom
If Type("This.oHTTP") <> "O" && la prima apelare a verificarii MFIN
If This.lXMLHTTP
This.oHTTP = Createobject("winhttp.winhttprequest.5.1")
+ Try
+ This.oHTTP.SetTimeouts(5000, 5000, 10000, 15000)
+ Catch To loEx
+ Endtry
Else
This.oHTTP = Createobject("InternetExplorer.Application")
This.oHTTP.Visible = .F.
@@ -1174,6 +1178,10 @@ Define Class VerificareCod As Custom
Try
*!* loHTTP = Createobject("MSXML2.ServerXMLHTTP")
loHTTP = Createobject("winhttp.winhttprequest.5.1")
+ Try
+ loHTTP.SetTimeouts(5000, 5000, 10000, 20000)
+ Catch To loEx
+ Endtry
loHTTP.Open("GET", lcRomfastURL, .F.)
loHTTP.Send()
lnStatus = loHTTP.Status
@@ -1236,9 +1244,16 @@ Define Class VerificareCod As Custom
*!* 15.03.2010 ^
ENDIF && .F.
Try
+ *!* 23.08.2026 marius.mutu: text/xml (nu urlencoded) - serviciul VIES da 400 pe content-type gresit
+ lcViesURL = "https://ec.europa.eu/taxation_customs/vies/services/checkVatService"
loHTTP = Createobject("winhttp.winhttprequest.5.1")
- loHTTP.Open("POST", "http://ec.europa.eu/taxation_customs/vies/services/checkVatService", .F.)
- loHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
+ *!* 23.08.2026 marius.mutu: timeout, altfel apelul blocheaza formularul la nesfarsit daca serviciul nu raspunde
+ Try
+ loHTTP.SetTimeouts(5000, 5000, 10000, 20000)
+ Catch To loEx
+ Endtry
+ loHTTP.Open("POST", m.lcViesURL, .F.)
+ loHTTP.setRequestHeader('Content-Type', 'text/xml; charset=utf-8')
TEXT TO lcValues NOSHOW TEXTMERGE
@@ -1249,20 +1264,21 @@ Define Class VerificareCod As Custom
- ENDTEXT
+ ENDTEXT
loHTTP.Send(lcValues)
lnStatus = loHTTP.Status
- If lnStatus = 200 && OK
+ If lnStatus = 200 && OK
lcXML = loHTTP.responseText
- llPlatitorTVA = (STREXTRACT(m.lcXML, [],[],1,1) = 'true') && true/false
- lcFirma = STRTRAN(STREXTRACT(m.lcXML, [],[],1,1), '-','',1,10,1)
- lcAdresa = STRTRAN(STREXTRACT(m.lcXML, [],[],1,1), '-','',1,10,1)
+ *!* 23.08.2026 marius.mutu: raspunsul are prefix de namespace (ns2:valid, ns2:name...) - delimitatorii vechi nu se mai potriveau
+ llPlatitorTVA = (STREXTRACT(m.lcXML, [valid>],[<],1,1) = 'true') && true/false
+ lcFirma = STRTRAN(STREXTRACT(m.lcXML, [name>],[<],1,1), '-','',1,10,1)
+ lcAdresa = STRTRAN(STREXTRACT(m.lcXML, [address>],[<],1,1), '-','',1,10,1)
lcAdresa = Strtran(m.lcAdresa, Chr(13) + CHR(10), ' ')
- llVies = .T.
+ llVies = .T.
Else
lcEroare = 'VERIFICARE_CIF VIES - ' + m.lcViesURL + ' eroare ' + Alltrim(Str(lnStatus))
- Endif && lnStatus
+ Endif && lnStatus
Catch To loEx
lcEroare = 'VERIFICARE_CIF VIES ' + CRLF + loEx.Message + " " + loEx.LineContents + " " + Transform(loEx.Lineno)
This.Log(m.lcEroare)
diff --git a/utile/Teste/todo21/mock_meniu_dblclick_deps.prg b/utile/Teste/todo21/mock_meniu_dblclick_deps.prg
index 55599b2..3b6047d 100644
--- a/utile/Teste/todo21/mock_meniu_dblclick_deps.prg
+++ b/utile/Teste/todo21/mock_meniu_dblclick_deps.prg
@@ -5,6 +5,9 @@
* daca e incarcat cu SET PROCEDURE ... ADDITIVE INAINTE de test_init_env_auto.
* Apelurile se numara in variabile PUBLIC (declarate si initializate de test inainte de fiecare pas):
* gnMockNomModCount / gnMockNomModId (nom_parteneri_modifica) si gnMockVerifCodCount (VerificaCodFiscal).
+* gcMockVerifCodOptiuniAnte (daca declarata C de test) - captureaza toDate.optiuni_meniu_ante primit.
+* gnMockVerifCodLnOptiune (daca declarata N de test) - controleaza ce intoarce mock-ul prin @lnOptiune,
+* ca testul sa simuleze alegerea din XMENU (ex. 1 = prima optiune din meniu) fara sa-l deschida.
PROCEDURE nom_parteneri_modifica
LPARAMETERS tnId_Part, tnIdTipPart, tcTipPart, tnSpecial, tcMesaj
@@ -22,6 +25,10 @@ PROCEDURE VerificaCodFiscal
IF TYPE('gnMockVerifCodCount') = 'N'
gnMockVerifCodCount = gnMockVerifCodCount + 1
ENDIF
+ IF TYPE('gcMockVerifCodOptiuniAnte') = 'C'
+ gcMockVerifCodOptiuniAnte = IIF(PEMSTATUS(toDate, 'optiuni_meniu_ante', 5), ALLTRIM(toDate.optiuni_meniu_ante), '')
+ ENDIF
+ lnOptiune = IIF(TYPE('gnMockVerifCodLnOptiune') = 'N', gnMockVerifCodLnOptiune, 0)
loPartener = NULL
RETURN 7
ENDPROC
diff --git a/utile/Teste/todo21/test_todo21_e2e_verificare.prg b/utile/Teste/todo21/test_todo21_e2e_verificare.prg
new file mode 100644
index 0000000..cd949c8
--- /dev/null
+++ b/utile/Teste/todo21/test_todo21_e2e_verificare.prg
@@ -0,0 +1,375 @@
+* test_todo21_e2e_verificare.prg
+* TODO #21 - test END-TO-END al verificarii codurilor fiscale.
+*
+* Spre deosebire de celelalte teste (care instantiaza direct frm_verificare_parteneri), acesta
+* intra prin punctul de intrare REAL folosit de toti apelantii - verificare_parteneri()
+* (COMUN\programe\oproceduri_comune.prg:4525) - cu lista in formatul sir
+* "cod***denumire***atribut***ales***id_part***data|...", si merge pana la capat:
+* sir -> crsXMLParteneriVerificare -> crsVerificareParteneri -> formular modal ->
+* Activate -> do_verifica -> serviciul web ANAF REAL -> perioade + atentie -> cursor final.
+*
+* Formularul se deschide cu Show(1) (modal), deci headless-ul s-ar agata. Deblocarea se face cu
+* un obiect Timer independent (clasa tmrE2EDeblocare, la finalul fisierului), care asteapta ca
+* verificarea sa PORNEASCA (lblVerifica.Visible = .T., pus la inceputul lui do_verifica) si abia
+* apoi ca ea sa se TERMINE (lblVerifica.Visible = .F., pus la final), inainte sa dea Release.
+* Fara cele doua faze, timer-ul ar putea elibera formularul in mijlocul verificarii - do_verifica
+* apeleaza Inkey(1), moment in care evenimentele de timer chiar se executa.
+*
+* Cursorul se pastreaza dupa inchidere (tlDontCloseCursor = .T.), iar asertiunile se fac pe el.
+*
+* Datele de test: coduri fiscale REALE alese dinamic din istoric_coduri_fiscale si un partener
+* REAL din nom_parteneri (id_part nenul), plus un cod invalid fabricat si un duplicat - nimic
+* hardcodat, deci testul nu depinde de starea unei anumite firme.
+*
+* Nu scrie nimic in Oracle (doar SELECT-uri) si nu modifica nomenclatorul.
+*
+* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\todo21\test_todo21_e2e_verificare.prg"
+* Verdict in log: TOTAL OK / TOTAL FAIL: n pas(i).
+
+SET SAFETY OFF
+SET TALK OFF
+SET DELETED ON
+SET EXACT ON
+SET CENTURY ON
+SET DATE DMY
+SET NULLDISPLAY TO ''
+CLOSE DATABASES
+
+PUBLIC gcLog
+gcLog = "D:\ROA\ROACONT\COMUN\utile\Teste\todo21\test_todo21_e2e_verificare_log.txt"
+STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcLog)
+
+PUBLIC gnEsecuri
+gnEsecuri = 0
+
+ON ERROR DO PrErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
+ON SHUTDOWN QUIT
+
+PUBLIC gcMockUltimMesaj, gnMockUltimTip, gnMockRaspuns
+gcMockUltimMesaj = ''
+gnMockUltimTip = 0
+gnMockRaspuns = 6
+
+PUBLIC goTmrE2E, gnE2EFazaTimer, gnE2ETicks, glE2EEliberat
+gnE2EFazaTimer = 0
+gnE2ETicks = 0
+glE2EEliberat = .F.
+
+TRY
+ SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\mock_amessagebox.prg" ADDITIVE
+ DO PrLog WITH 'mock-uri incarcate'
+
+ DO "D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
+ IF gnHandle <= 0
+ DO PrLog WITH 'FAIL: conectare Oracle esuata (gnHandle=' + TRANSFORM(gnHandle) + ')'
+ gnEsecuri = gnEsecuri + 1
+ DO PrLog WITH 'TOTAL FAIL: ' + TRANSFORM(gnEsecuri) + ' pas(i)'
+ QUIT
+ ENDIF
+ DO PrLog WITH 'mediu OK, schema=' + gcS
+
+ *=====================================================================
+ * Date de test reale, alese dinamic
+ *=====================================================================
+ LOCAL lcSql, lcCod1, lcCod2
+ TEXT TO lcSql NOSHOW
+select cod_fiscal_n from (
+ select cod_fiscal_n from istoric_coduri_fiscale
+ where cod_fiscal_n is not null and data_inceput_scptva is not null
+ order by dataorav_anaf desc) where rownum <= 2
+ ENDTEXT
+ lcCod1 = ''
+ lcCod2 = ''
+ IF goExecutor.oExecuta(lcSql, 'crsE1') AND USED('crsE1') AND RECCOUNT('crsE1') > 0
+ SELECT crsE1
+ GO TOP
+ lcCod1 = ALLTRIM(TRANSFORM(NVL(crsE1.cod_fiscal_n, 0)))
+ IF RECCOUNT('crsE1') > 1
+ SKIP
+ lcCod2 = ALLTRIM(TRANSFORM(NVL(crsE1.cod_fiscal_n, 0)))
+ ENDIF
+ ENDIF
+ USE IN (SELECT('crsE1'))
+
+ LOCAL lnIdPart, lcCodPart, lcDenPart
+ TEXT TO lcSql NOSHOW
+select id_part, cod_fiscal, denumire from (
+ select id_part, cod_fiscal, denumire from nom_parteneri
+ where nvl(inactiv,0) = 0 and nvl(sters,0) = 0 and not cod_fiscal is null
+ order by id_part desc) where rownum <= 1
+ ENDTEXT
+ lnIdPart = 0
+ lcCodPart = ''
+ lcDenPart = ''
+ IF goExecutor.oExecuta(lcSql, 'crsE2') AND USED('crsE2') AND RECCOUNT('crsE2') > 0
+ lnIdPart = NVL(crsE2.id_part, 0)
+ lcCodPart = ALLTRIM(NVL(crsE2.cod_fiscal, ''))
+ lcDenPart = ALLTRIM(NVL(crsE2.denumire, ''))
+ ENDIF
+ USE IN (SELECT('crsE2'))
+
+ DO PrLog WITH 'coduri ANAF de test: [' + lcCod1 + '] [' + lcCod2 + ']; partener: id_part=' + ;
+ TRANSFORM(lnIdPart) + ' cod=[' + lcCodPart + ']'
+
+ IF EMPTY(lcCod1) OR lnIdPart = 0
+ DO PrLog WITH 'FAIL: nu s-au gasit date de test in Oracle'
+ gnEsecuri = gnEsecuri + 1
+ DO PrLog WITH 'TOTAL FAIL: ' + TRANSFORM(gnEsecuri) + ' pas(i)'
+ QUIT
+ ENDIF
+
+ *=====================================================================
+ * Lista de intrare, construita EXACT ca la apelantii reali (D394, jurnale TVA): un cursor cu
+ * id_part / cod_fiscal / denumire / atribut_fiscal / ales / data, trecut prin Cursortoxml
+ * (vezi Clase/ovanzcump.vc2:19608-19618).
+ * 5 randuri: cod real 1 de doua ori (-> DUPLICAT), cod real 2, partener real cu id_part,
+ * cod fabricat invalid (-> INVALID).
+ *=====================================================================
+ LOCAL lcLista, ldData
+ ldData = DATE(YEAR(DATE()), MONTH(DATE()), 1)
+ CREATE CURSOR crsE2ELista (id_part N(16), cod_fiscal C(30), denumire C(100), atribut_fiscal C(2), ;
+ ales L, IsCIF L, Data D)
+ INSERT INTO crsE2ELista VALUES (0, lcCod1, 'E2E DUPLICAT A', 'RO', .F., .T., ldData)
+ INSERT INTO crsE2ELista VALUES (0, lcCod1, 'E2E DUPLICAT B', 'RO', .F., .T., ldData)
+ IF !EMPTY(lcCod2)
+ INSERT INTO crsE2ELista VALUES (0, lcCod2, 'E2E COD ANAF 2', 'RO', .F., .T., ldData)
+ ENDIF
+ INSERT INTO crsE2ELista VALUES (lnIdPart, lcCodPart, lcDenPart, ;
+ IIF(LEFT(UPPER(lcCodPart), 2) == 'RO', 'RO', ' '), .F., .T., ldData)
+ INSERT INTO crsE2ELista VALUES (0, '123', 'E2E COD INVALID', 'RO', .F., .T., ldData)
+ lcLista = ''
+ CURSORTOXML('crsE2ELista', 'lcLista', 1, 0, 0, '1')
+ USE IN (SELECT('crsE2ELista'))
+
+ *=====================================================================
+ * Timer de deblocare + apelul REAL (modal)
+ *=====================================================================
+ goTmrE2E = CREATEOBJECT('tmrE2EDeblocare')
+ goTmrE2E.Enabled = .T.
+
+ LOCAL lcCursor, ltStart
+ ltStart = DATETIME()
+ DO PrLog WITH 'apelez verificare_parteneri (modal) ...'
+ lcCursor = verificare_parteneri(m.lcLista, .T., .T., .F., .T., .T., .F., .T.)
+ goTmrE2E.Enabled = .F.
+ DO PrLog WITH 'verificare_parteneri s-a intors dupa ' + TRANSFORM(INT(DATETIME() - ltStart)) + ;
+ ' s, cursor=[' + TRANSFORM(lcCursor) + '], timer: faza=' + TRANSFORM(gnE2EFazaTimer) + ;
+ ' ticks=' + TRANSFORM(gnE2ETicks) + ' eliberat=' + TRANSFORM(glE2EEliberat)
+
+ *=====================================================================
+ * E1: cursorul supravietuieste (tlDontCloseCursor = .T.) si are toate randurile
+ *=====================================================================
+ LOCAL lnAsteptate
+ lnAsteptate = IIF(EMPTY(lcCod2), 4, 5)
+ IF USED('crsVerificareParteneri') AND RECCOUNT('crsVerificareParteneri') = lnAsteptate
+ DO PrLog WITH 'OK E1: cursorul crsVerificareParteneri a ramas deschis, ' + ;
+ TRANSFORM(lnAsteptate) + ' randuri'
+ ELSE
+ DO PrLog WITH 'FAIL E1: cursor deschis=' + TRANSFORM(USED('crsVerificareParteneri')) + ;
+ ' randuri=' + TRANSFORM(IIF(USED('crsVerificareParteneri'), RECCOUNT('crsVerificareParteneri'), -1)) + ;
+ ' asteptat ' + TRANSFORM(lnAsteptate)
+ gnEsecuri = gnEsecuri + 1
+ DO PrLog WITH 'TOTAL FAIL: ' + TRANSFORM(gnEsecuri) + ' pas(i)'
+ QUIT
+ ENDIF
+
+ *=====================================================================
+ * E2: id_part si data au traversat parsarea sirului (fix-ul C4 din TODO 21)
+ *=====================================================================
+ SELECT crsVerificareParteneri
+ LOCATE FOR ALLTRIM(NVL(denumire, '')) == lcDenPart
+ IF FOUND() AND NVL(crsVerificareParteneri.id_part, 0) = lnIdPart AND crsVerificareParteneri.Data = ldData
+ DO PrLog WITH 'OK E2: id_part=' + TRANSFORM(lnIdPart) + ' si data=' + DTOC(ldData) + ' au ajuns in cursor'
+ ELSE
+ DO PrLog WITH 'FAIL E2: id_part=' + TRANSFORM(IIF(FOUND(), NVL(crsVerificareParteneri.id_part, 0), -1)) + ;
+ ' data=' + IIF(FOUND(), DTOC(crsVerificareParteneri.Data), '?') + ' asteptat ' + ;
+ TRANSFORM(lnIdPart) + ' / ' + DTOC(ldData)
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *=====================================================================
+ * E3: codul invalid e marcat Valid = .F. si primeste eticheta INVALID
+ *=====================================================================
+ SELECT crsVerificareParteneri
+ LOCATE FOR ALLTRIM(NVL(denumire, '')) == 'E2E COD INVALID'
+ IF FOUND() AND NVL(crsVerificareParteneri.Valid, .T.) = .F. AND 'INVALID' $ crsVerificareParteneri.atentie
+ DO PrLog WITH 'OK E3: cod invalid -> Valid=.F., atentie=[' + ALLTRIM(crsVerificareParteneri.atentie) + ']'
+ ELSE
+ DO PrLog WITH 'FAIL E3: cod invalid -> Valid=' + TRANSFORM(IIF(FOUND(), crsVerificareParteneri.Valid, .NULL.)) + ;
+ ' atentie=[' + IIF(FOUND(), ALLTRIM(crsVerificareParteneri.atentie), '?') + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *=====================================================================
+ * E4: cele doua randuri cu acelasi cod fiscal sunt marcate DUPLICAT
+ *=====================================================================
+ LOCAL lnDupl
+ SELECT crsVerificareParteneri
+ COUNT FOR ALLTRIM(NVL(cod_fiscal, '')) == lcCod1 AND 'DUPLICAT' $ atentie TO lnDupl
+ IF lnDupl = 2
+ DO PrLog WITH 'OK E4: ambele randuri cu codul ' + lcCod1 + ' au eticheta DUPLICAT'
+ ELSE
+ DO PrLog WITH 'FAIL E4: randuri DUPLICAT pentru ' + lcCod1 + ' = ' + TRANSFORM(lnDupl) + ' (asteptat 2)'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *=====================================================================
+ * E5: ANAF a raspuns pe traseul real - cel putin un rand cu firma completata
+ * si cel putin o perioada de TVA completata (coloanele noi din TODO 21)
+ *=====================================================================
+ LOCAL lnCuFirma, lnCuPerioada
+ SELECT crsVerificareParteneri
+ COUNT FOR !EMPTY(NVL(firma, '')) TO lnCuFirma
+ COUNT FOR !EMPTY(NVL(data_inceput_scptva, {})) OR !EMPTY(NVL(data_inceput_tvainc, {})) ;
+ OR !EMPTY(NVL(data_inactivare, {})) TO lnCuPerioada
+ IF lnCuFirma > 0 AND lnCuPerioada > 0
+ DO PrLog WITH 'OK E5: ANAF a raspuns real - ' + TRANSFORM(lnCuFirma) + ' rand(uri) cu firma, ' + ;
+ TRANSFORM(lnCuPerioada) + ' cu perioade completate'
+ ELSE
+ DO PrLog WITH 'FAIL E5: firma=' + TRANSFORM(lnCuFirma) + ' perioade=' + TRANSFORM(lnCuPerioada) + ' (asteptat > 0)'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *=====================================================================
+ * E6: textul venit de la ANAF nu contine '?' (decodarea UTF-8 prin
+ * AnafDecodeResponseText - COMUN\programe\validare.prg)
+ *=====================================================================
+ LOCAL lnSemn, lcExemplu
+ lnSemn = 0
+ lcExemplu = ''
+ SELECT crsVerificareParteneri
+ SCAN FOR !EMPTY(NVL(firma, ''))
+ IF '?' $ NVL(firma, '') OR '?' $ NVL(adresa, '') OR '?' $ NVL(stare, '') OR '?' $ NVL(judet, '')
+ lnSemn = lnSemn + 1
+ lcExemplu = ALLTRIM(NVL(firma, '')) + ' / ' + ALLTRIM(NVL(adresa, ''))
+ ENDIF
+ ENDSCAN
+ IF lnSemn = 0
+ DO PrLog WITH 'OK E6: niciun "?" in textele ANAF (firma/adresa/judet/stare)'
+ ELSE
+ DO PrLog WITH 'FAIL E6: ' + TRANSFORM(lnSemn) + ' rand(uri) cu "?" in text, ex: [' + lcExemplu + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *=====================================================================
+ * E7: atentie contine numai etichetele definite, in ordinea gravitatii,
+ * si nu are text trunchiat (regresie: concatenarea pe camp padded)
+ *=====================================================================
+ LOCAL lcAtn, llOrdineOK, lnPozI, lnPozD, lnPozN, lnPozR, llRauOK
+ llOrdineOK = .T.
+ llRauOK = .T.
+ SELECT crsVerificareParteneri
+ SCAN
+ lcAtn = ALLTRIM(NVL(atentie, ''))
+ IF EMPTY(lcAtn)
+ LOOP
+ ENDIF
+ *-- fara spatii duble (semn ca s-a concatenat peste padding)
+ IF ' ' $ lcAtn
+ llRauOK = .F.
+ DO PrLog WITH ' atentie cu spatii duble pe randul ' + TRANSFORM(RECNO()) + ': [' + lcAtn + ']'
+ ENDIF
+ lnPozI = AT('INVALID', lcAtn)
+ lnPozD = AT('DUPLICAT', lcAtn)
+ lnPozN = AT('INACTIV', lcAtn)
+ lnPozR = AT('FARA RO', lcAtn)
+ IF (lnPozI > 0 AND lnPozD > 0 AND lnPozI > lnPozD) OR ;
+ (lnPozD > 0 AND lnPozN > 0 AND lnPozD > lnPozN) OR ;
+ (lnPozN > 0 AND lnPozR > 0 AND lnPozN > lnPozR)
+ llOrdineOK = .F.
+ DO PrLog WITH ' ordine gresita in atentie pe randul ' + TRANSFORM(RECNO()) + ': [' + lcAtn + ']'
+ ENDIF
+ ENDSCAN
+ IF llOrdineOK AND llRauOK
+ DO PrLog WITH 'OK E7: coloana atentie e coerenta (ordine INVALID/DUPLICAT/INACTIV/FARA RO, fara spatii duble)'
+ ELSE
+ DO PrLog WITH 'FAIL E7: coloana atentie incoerenta'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *=====================================================================
+ * E8: formularul a fost inchis de timer, nu a ramas deschis
+ *=====================================================================
+ IF glE2EEliberat AND gnE2EFazaTimer >= 2
+ DO PrLog WITH 'OK E8: verificarea a pornit si s-a terminat, formularul a fost eliberat normal'
+ ELSE
+ DO PrLog WITH 'FAIL E8: faza timer=' + TRANSFORM(gnE2EFazaTimer) + ' eliberat=' + TRANSFORM(glE2EEliberat) + ;
+ ' (formularul nu a parcurs ciclul complet de verificare)'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *-- rezumat pe randuri, pentru diagnostic
+ SELECT crsVerificareParteneri
+ SCAN
+ DO PrLog WITH ' ' + PADR(ALLTRIM(NVL(denumire, '')), 24) + ' cod=' + PADR(ALLTRIM(NVL(cod_fiscal, '')), 14) + ;
+ ' valid=' + TRANSFORM(NVL(Valid, .NULL.)) + ' dupl=' + TRANSFORM(duplicat) + ;
+ ' firma=[' + LEFT(ALLTRIM(NVL(firma, '')), 30) + ']' + ' atentie=[' + ALLTRIM(NVL(atentie, '')) + ']'
+ ENDSCAN
+
+ USE IN (SELECT('crsVerificareParteneri'))
+ DO PrLog WITH IIF(gnEsecuri = 0, 'TOTAL OK', 'TOTAL FAIL: ' + TRANSFORM(gnEsecuri) + ' pas(i)')
+CATCH TO loEx
+ DO PrLog WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ') ' + loEx.Procedure
+ DO PrLog WITH 'TOTAL FAIL: exceptie neasteptata'
+ENDTRY
+
+QUIT
+
+**********************************************************
+PROCEDURE PrLog
+ LPARAMETERS tcMsg
+ LOCAL lcL
+ SET SAFETY OFF
+ lcL = IIF(FILE(gcLog), FILETOSTR(gcLog), '')
+ STRTOFILE(lcL + TRANSFORM(tcMsg) + CHR(13) + CHR(10), gcLog)
+ENDPROC
+
+**********************************************************
+PROCEDURE PrErr
+ LPARAMETERS tnErr, tcMsg, tcProg, tnLine
+ DO PrLog WITH 'EROARE ' + TRANSFORM(tnErr) + ': ' + TRANSFORM(tcMsg) + ' in ' + ;
+ TRANSFORM(tcProg) + ' linia ' + TRANSFORM(tnLine)
+ gnEsecuri = gnEsecuri + 1
+ DO PrLog WITH 'TOTAL FAIL: eroare neasteptata'
+ QUIT
+ENDPROC
+
+**********************************************************
+* Deblocarea formularului modal, in doua faze:
+* faza 0 -> asteapta ca do_verifica sa PORNEASCA (lblVerifica.Visible = .T.)
+* faza 1 -> asteapta ca do_verifica sa TERMINE (lblVerifica.Visible = .F.) si da Release
+* Plasa de siguranta: dupa 240 de ticks (~8 minute) elibereaza oricum, ca sa nu agate testul.
+**********************************************************
+DEFINE CLASS tmrE2EDeblocare AS Timer
+ Interval = 2000
+ Enabled = .F.
+
+ PROCEDURE Timer
+ LOCAL lnI, loF, llVaz
+ gnE2ETicks = gnE2ETicks + 1
+ IF gnE2ETicks <= 3 OR MOD(gnE2ETicks, 15) = 0
+ DO PrLog WITH ' timer tick ' + TRANSFORM(gnE2ETicks) + ' forme=' + TRANSFORM(_SCREEN.FormCount) + ' faza=' + TRANSFORM(gnE2EFazaTimer)
+ ENDIF
+ FOR lnI = 1 TO _SCREEN.FormCount
+ loF = _SCREEN.Forms(lnI)
+ IF !PEMSTATUS(loF, 'lblVerifica', 5) OR !PEMSTATUS(loF, 'do_verifica', 5)
+ LOOP
+ ENDIF
+ llVaz = loF.lblVerifica.Visible
+ DO CASE
+ CASE loF.lAutoverificare OR llVaz
+ *-- verificarea nu a pornit inca sau e in curs (lblVerifica vizibil)
+ gnE2EFazaTimer = IIF(llVaz, 1, gnE2EFazaTimer)
+ CASE gnE2ETicks > 240
+ glE2EEliberat = .F.
+ loF.Release()
+ OTHERWISE
+ *-- Activate a rulat (lAutoverificare = .F.) si do_verifica s-a terminat
+ gnE2EFazaTimer = 2
+ glE2EEliberat = .T.
+ loF.Release()
+ ENDCASE
+ EXIT
+ ENDFOR
+ ENDPROC
+ENDDEFINE
diff --git a/utile/Teste/todo21/test_todo21_grid_dblclick.prg b/utile/Teste/todo21/test_todo21_grid_dblclick.prg
index d7fc594..e46e76b 100644
--- a/utile/Teste/todo21/test_todo21_grid_dblclick.prg
+++ b/utile/Teste/todo21/test_todo21_grid_dblclick.prg
@@ -1,17 +1,33 @@
* test_todo21_grid_dblclick.prg
-* TODO #21, benzile A (coloanele de perioada in grid-ul de verificare coduri fiscale) si C
-* (dublu-click pe denumire/cod fiscal ROA -> editare partener, coloanele ANAF raman pe verificare).
-* Instantiaza DIRECT frm_verificare_parteneri (COMUN\clase\overificari.vc2), fara Show(1) modal -
-* cursorul crsVerificareParteneri e construit ca in oproceduri_comune.prg (verificare_parteneri),
-* fara sa treaca prin acea procedura (care ar deschide formularul modal).
+* TODO #21, benzile A (coloanele de perioada in grid-ul de verificare coduri fiscale, inclusiv
+* coloana calculata cPerioadaTva) si D (meniul unic de dublu-click, vederi de grid, coloana Ales
+* conditionata). Instantiaza DIRECT frm_verificare_parteneri (COMUN\clase\overificari.vc2), fara
+* Show(1) modal - cursorul crsVerificareParteneri e construit ca in oproceduri_comune.prg
+* (verificare_parteneri), fara sa treaca prin acea procedura (care ar deschide formularul modal).
+*
+* Reproiectare: TOATE coloanele grid-ului cheama acum meniu_dblclick (nu mai exista rutare directa
+* pe Column2/3 vs Column5/6); prima optiune a meniului ("MODIFICARE PARTENER - ") vine
+* prin optiuni_meniu_ante, deci prin VerificaCodFiscal, care ar deschide XMENU (agata headless-ul) -
+* de-asta VerificaCodFiscal e mock-uita (mock_meniu_dblclick_deps.prg), nu apelata real.
*
* Mock-uri (fisiere DIFERITE de overificari.vc2 - rezolutia "primul incarcat" e sigura):
* mock_amessagebox.prg - dialogul "partener neidentificat"
-* mock_meniu_dblclick_deps.prg - nom_parteneri_modifica si VerificaCodFiscal (numara apelurile)
+* mock_meniu_dblclick_deps.prg - nom_parteneri_modifica, VerificaCodFiscal (numara apelurile,
+* captureaza optiuni_meniu_ante, controleaza @lnOptiune intors)
+*
+* Banda G (continutul coloanei atentie): do_verifica face verificare ANAF reala (nu se poate
+* controla ce raspunde ANAF), deci nu se pot fabrica exact cele 4 texte pe randurile reale - se
+* verifica doar BUCATA care umple atentie (COMUN\clase\overificari.vc2:2992-2996), copiata LITERAL
+* si rulata pe randuri fabricate distincte, fara alt apel la do_verifica.
+*
+* Banda H: chkANAF si chkExperimental au disparut ca obiecte din formular (do_verifica are acum
+* llServiciuWebANAF constant .T.; modul experimental e citit din proprietatea lExperimental, nu
+* dintr-un control) - se verifica ca lExperimental reflecta al 5-lea parametru la Init, nu o
+* valoare hardcodata (regresie deja prinsa o data). chkMFIN ramane ca obiect (doar Visible=.F.).
*
* Coduri de test: un cod fiscal REAL cu perioada ANAF (ales dinamic din istoric_coduri_fiscale,
* ca in test_todo21_perioade_anaf.prg) si un partener REAL din NOM_PARTENERI (ales dinamic, cel
-* mai nou activ), plus un rand cu id_part = 0 pentru cazul "partener neidentificat".
+* mai nou activ), plus randuri fabricate pentru meniu_dblclick/atentie.
*
* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\todo21\test_todo21_grid_dblclick.prg"
* Verdict in log: TOTAL OK / TOTAL FAIL: n pas(i).
@@ -40,10 +56,12 @@ gcMockUltimMesaj = ''
gnMockUltimTip = 0
gnMockRaspuns = 6
-PUBLIC gnMockNomModCount, gnMockNomModId, gnMockVerifCodCount
+PUBLIC gnMockNomModCount, gnMockNomModId, gnMockVerifCodCount, gcMockVerifCodOptiuniAnte, gnMockVerifCodLnOptiune
gnMockNomModCount = 0
gnMockNomModId = 0
gnMockVerifCodCount = 0
+gcMockVerifCodOptiuniAnte = ''
+gnMockVerifCodLnOptiune = 0
TRY
SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\mock_amessagebox.prg" ADDITIVE
@@ -74,7 +92,7 @@ select cod_fiscal_n from (
USE IN (SELECT('crsGD1'))
DO PrLog WITH 'cod fiscal ANAF de test: [' + lcCodAnaf + ']'
- *-- partener real activ, pentru banda C (dublu-click -> editare partener)
+ *-- partener real activ, pentru banda D (meniu_dblclick -> editare partener)
LOCAL lnIdPartTest, lcCodFiscalPart, lcDenumirePart
TEXT TO lcSql NOSHOW
select id_part, cod_fiscal, denumire from (
@@ -110,18 +128,67 @@ select id_part, cod_fiscal, denumire from (
INSERT INTO crsVerificareParteneri (denumire, cod_fiscal, id_part) VALUES ('TEST ANAF PERIOADA', lcCodAnaf, 0)
INSERT INTO crsVerificareParteneri (denumire, cod_fiscal, id_part) VALUES (lcDenumirePart, lcCodFiscalPart, lnIdPartTest)
INSERT INTO crsVerificareParteneri (denumire, cod_fiscal, id_part) VALUES ('TEST FARA ID_PART', 'RO9999999', 0)
+ *-- randul D1c: denumire cu ';' - trebuie inlocuit cu ',' ca sa nu sparga sirul XMENU
+ INSERT INTO crsVerificareParteneri (denumire, cod_fiscal, id_part) VALUES ('TEST; CU PUNCT VIRGULA', 'RO8888888', 777)
UPDATE crsVerificareParteneri SET IsCIF = .T.
GO TOP
+ *=====================================================================
+ * Banda F: coloana Ales (Column1) - conditionata de al 7-lea parametru la Init
+ *=====================================================================
+ LOCAL loFormAles
+ loFormAles = CREATEOBJECT('frm_verificare_parteneri', .F., .T., .F., .F., .F., .T.)
+ loFormAles.WindowType = 0
+ IF !loFormAles._grdbase1.Column1.Visible
+ DO PrLog WITH 'OK F1: Column1 (Ales) ascunsa cu 6 parametri (implicit, fara al 7-lea)'
+ ELSE
+ DO PrLog WITH 'FAIL F1: Column1 (Ales) vizibila desi formularul a primit doar 6 parametri'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ loFormAles.Release()
+
+ loFormAles = CREATEOBJECT('frm_verificare_parteneri', .F., .T., .F., .F., .F., .T., .T.)
+ loFormAles.WindowType = 0
+ IF loFormAles._grdbase1.Column1.Visible
+ DO PrLog WITH 'OK F2: Column1 (Ales) vizibila cu al 7-lea parametru .T.'
+ ELSE
+ DO PrLog WITH 'FAIL F2: Column1 (Ales) ramane ascunsa desi al 7-lea parametru e .T.'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ loFormAles.Release()
+
PUBLIC goFormGD
goFormGD = CREATEOBJECT('frm_verificare_parteneri', .F., .T., .F., .F., .F., .T.)
goFormGD.WindowType = 0
goFormGD.Show()
DOEVENTS FORCE
- DO PrLog WITH 'formular instantiat, chkANAF=' + TRANSFORM(goFormGD.chkANAF.Value)
+ DO PrLog WITH 'formular instantiat, lMFIN=' + TRANSFORM(goFormGD.lMFIN)
*=====================================================================
- * Banda A: grid cu 34 coloane (era 27), cele 7 noi legate pe cursorul real
+ * Banda H: chkANAF/chkExperimental/chkMFIN au disparut ca obiecte; lExperimental (proprietate) trebuie
+ *-- sa reflecte al 5-lea parametru la Init, nu o valoare hardcodata
+ *=====================================================================
+ IF goFormGD.lExperimental = .F.
+ DO PrLog WITH 'OK H1: tlExperimental=.F. (al 5-lea parametru) -> lExperimental=.F.'
+ ELSE
+ DO PrLog WITH 'FAIL H1: lExperimental=' + TRANSFORM(goFormGD.lExperimental) + ' asteptat .F.'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ LOCAL loFormExp
+ loFormExp = CREATEOBJECT('frm_verificare_parteneri', .F., .T., .F., .F., .T., .T.)
+ loFormExp.WindowType = 0
+ IF loFormExp.lExperimental = .T.
+ DO PrLog WITH 'OK H2: tlExperimental=.T. (al 5-lea parametru) -> lExperimental=.T.'
+ ELSE
+ DO PrLog WITH 'FAIL H2: lExperimental=' + TRANSFORM(loFormExp.lExperimental) + ' asteptat .T. (nu mai e hardcodat pe .F.)'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ loFormExp.Release()
+
+ *=====================================================================
+ * Banda A: cele 7 coloane de perioada ANAF din grid (34 in total; coloana calculata
+ * cPerioadaTva a fost scoasa - vederea Esential arata doua coloane de date, nu un text lung)
*=====================================================================
IF goFormGD._grdbase1.ColumnCount = 34
DO PrLog WITH 'OK A1: _grdbase1.ColumnCount = 34'
@@ -130,6 +197,13 @@ select id_part, cod_fiscal, denumire from (
gnEsecuri = gnEsecuri + 1
ENDIF
+ IF !PEMSTATUS(goFormGD._grdbase1, 'cPerioadaTva', 5)
+ DO PrLog WITH 'OK A1b: coloana calculata cPerioadaTva a fost scoasa din grid'
+ ELSE
+ DO PrLog WITH 'FAIL A1b: cPerioadaTva inca exista in grid'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
*-- coloanele redenumite sunt membri ai grid-ului dupa Name (cDataInceputScpTva...), nu dupa
*-- pozitia Column28..Column34 - VFP adreseaza obiectul din container dupa Name, nu dupa pozitie
LOCAL laCol[7,2], lnI, lcNume, lcSrc, llColOk
@@ -167,7 +241,7 @@ select id_part, cod_fiscal, denumire from (
gnEsecuri = gnEsecuri + 1
ENDIF
- *-- do_verifica cu chkANAF fortat .T. in Init -> ramura serviciu web ANAF (banda A2)
+ *-- do_verifica: llServiciuWebANAF e acum constanta .T. in cod (overificari.vc2:2808) -> ramura serviciu web ANAF (banda A2)
goFormGD.do_verifica(.F., .T., .F.)
DO PrLog WITH 'do_verifica rulat (tlValidare=.F. tlMFIN=.T. tlVIES=.F.)'
@@ -193,67 +267,214 @@ select id_part, cod_fiscal, denumire from (
ENDIF
*=====================================================================
- * Banda C: dublu-click pe coloanele ROA (denumire/cod fiscal) -> editare partener;
- * coloanele ANAF (firma/cod) raman pe meniul de verificare
+ * Banda D: meniu_dblclick unic pe toate coloanele (nu mai exista rutare directa pe coloana)
*=====================================================================
+
+ *-- D1a: partener cu id_part - prima optiune activa, cu denumirea lui
SELECT crsVerificareParteneri
LOCATE FOR id_part = lnIdPartTest
-
- gnMockNomModCount = 0
- gnMockNomModId = 0
- gnMockVerifCodCount = 0
+ gcMockVerifCodOptiuniAnte = ''
+ gnMockVerifCodLnOptiune = 0
goFormGD._grdbase1.Column2.Text1.DblClick()
- IF gnMockNomModCount = 1 AND gnMockNomModId = lnIdPartTest AND gnMockVerifCodCount = 0
- DO PrLog WITH 'OK C1: dublu-click Column2 (denumire) -> nom_parteneri_modifica(' + TRANSFORM(lnIdPartTest) + ')'
+ IF gcMockVerifCodOptiuniAnte == "MODIFICARE PARTENER - " + lcDenumirePart + ";\-;"
+ DO PrLog WITH 'OK D1a: Column2 DblClick -> optiuni_meniu_ante = [MODIFICARE PARTENER - ;\-;]'
ELSE
- DO PrLog WITH 'FAIL C1: Column2 DblClick - nom_mod count=' + TRANSFORM(gnMockNomModCount) + ' id=' + TRANSFORM(gnMockNomModId) + ' verifcod count=' + TRANSFORM(gnMockVerifCodCount)
+ DO PrLog WITH 'FAIL D1a: optiuni_meniu_ante=[' + gcMockVerifCodOptiuniAnte + ']'
gnEsecuri = gnEsecuri + 1
ENDIF
- gnMockNomModCount = 0
- gnMockNomModId = 0
- gnMockVerifCodCount = 0
- goFormGD._grdbase1.Column3.Text1.DblClick()
- IF gnMockNomModCount = 1 AND gnMockNomModId = lnIdPartTest AND gnMockVerifCodCount = 0
- DO PrLog WITH 'OK C2: dublu-click Column3 (cod fiscal ROA) -> nom_parteneri_modifica(' + TRANSFORM(lnIdPartTest) + ')'
- ELSE
- DO PrLog WITH 'FAIL C2: Column3 DblClick - nom_mod count=' + TRANSFORM(gnMockNomModCount) + ' id=' + TRANSFORM(gnMockNomModId) + ' verifcod count=' + TRANSFORM(gnMockVerifCodCount)
- gnEsecuri = gnEsecuri + 1
- ENDIF
-
- gnMockNomModCount = 0
- gnMockVerifCodCount = 0
+ *-- coloana ANAF (firma) cheama ACELASI meniu_dblclick - nu mai exista rutare separata
+ gcMockVerifCodOptiuniAnte = ''
goFormGD._grdbase1.Column5.Text1.DblClick()
- IF gnMockVerifCodCount = 1 AND gnMockNomModCount = 0
- DO PrLog WITH 'OK C3: dublu-click Column5 (firma ANAF) -> VerificaCodFiscal, fara editare partener'
+ IF gcMockVerifCodOptiuniAnte == "MODIFICARE PARTENER - " + lcDenumirePart + ";\-;"
+ DO PrLog WITH 'OK D1a2: Column5 (firma ANAF) DblClick -> acelasi meniu_dblclick unificat'
ELSE
- DO PrLog WITH 'FAIL C3: Column5 DblClick - verifcod count=' + TRANSFORM(gnMockVerifCodCount) + ' nom_mod count=' + TRANSFORM(gnMockNomModCount)
+ DO PrLog WITH 'FAIL D1a2: optiuni_meniu_ante=[' + gcMockVerifCodOptiuniAnte + '] - coloana ANAF nu mai e unificata cu restul'
gnEsecuri = gnEsecuri + 1
ENDIF
- gnMockNomModCount = 0
- gnMockVerifCodCount = 0
- goFormGD._grdbase1.Column6.Text1.DblClick()
- IF gnMockVerifCodCount = 1 AND gnMockNomModCount = 0
- DO PrLog WITH 'OK C4: dublu-click Column6 (cod ANAF) -> VerificaCodFiscal, fara editare partener'
- ELSE
- DO PrLog WITH 'FAIL C4: Column6 DblClick - verifcod count=' + TRANSFORM(gnMockVerifCodCount) + ' nom_mod count=' + TRANSFORM(gnMockNomModCount)
- gnEsecuri = gnEsecuri + 1
- ENDIF
-
- *-- id_part gol -> mesaj de avertizare, fara editare partener
+ *-- D1b: fara id_part - prima optiune dezactivata (prefix \)
SELECT crsVerificareParteneri
LOCATE FOR cod_fiscal = 'RO9999999'
+ gcMockVerifCodOptiuniAnte = ''
+ goFormGD._grdbase1.Column2.Text1.DblClick()
+ IF gcMockVerifCodOptiuniAnte == "\MODIFICARE PARTENER - TEST FARA ID_PART;\-;"
+ DO PrLog WITH 'OK D1b: fara id_part -> prima optiune dezactivata cu \'
+ ELSE
+ DO PrLog WITH 'FAIL D1b: optiuni_meniu_ante=[' + gcMockVerifCodOptiuniAnte + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *-- D1c: ';' din denumire devine ',' - altfel ar sparge sirul XMENU
+ SELECT crsVerificareParteneri
+ LOCATE FOR cod_fiscal = 'RO8888888'
+ gcMockVerifCodOptiuniAnte = ''
+ goFormGD._grdbase1.Column2.Text1.DblClick()
+ IF gcMockVerifCodOptiuniAnte == "MODIFICARE PARTENER - TEST, CU PUNCT VIRGULA;\-;"
+ DO PrLog WITH 'OK D1c: ";" din denumire e inlocuit cu "," in optiuni_meniu_ante'
+ ELSE
+ DO PrLog WITH 'FAIL D1c: optiuni_meniu_ante=[' + gcMockVerifCodOptiuniAnte + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *-- D2: lnOptiune = 1 (prima optiune aleasa) -> meniu_dblclick_partener -> nom_parteneri_modifica
+ SELECT crsVerificareParteneri
+ LOCATE FOR id_part = lnIdPartTest
+ gnMockVerifCodLnOptiune = 1
+ gnMockNomModCount = 0
+ gnMockNomModId = 0
+ goFormGD._grdbase1.Column2.Text1.DblClick()
+ IF gnMockNomModCount = 1 AND gnMockNomModId = lnIdPartTest
+ DO PrLog WITH 'OK D2: lnOptiune=1 -> meniu_dblclick_partener -> nom_parteneri_modifica(' + TRANSFORM(lnIdPartTest) + ')'
+ ELSE
+ DO PrLog WITH 'FAIL D2: nom_mod count=' + TRANSFORM(gnMockNomModCount) + ' id=' + TRANSFORM(gnMockNomModId)
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *-- D2b: orice alta optiune (ex. 7 = anulat/alta actiune din meniul de verificare) -> NU editeaza partenerul
+ gnMockVerifCodLnOptiune = 7
+ gnMockNomModCount = 0
+ goFormGD._grdbase1.Column2.Text1.DblClick()
+ IF gnMockNomModCount = 0
+ DO PrLog WITH 'OK D2b: lnOptiune<>1 -> nu se cheama meniu_dblclick_partener'
+ ELSE
+ DO PrLog WITH 'FAIL D2b: nom_mod count=' + TRANSFORM(gnMockNomModCount) + ' desi lnOptiune=7'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *-- D3: id_part gol + lnOptiune=1 -> mesaj de avertizare, fara editare partener (fostul C5)
+ SELECT crsVerificareParteneri
+ LOCATE FOR cod_fiscal = 'RO9999999'
+ gnMockVerifCodLnOptiune = 1
gnMockNomModCount = 0
gcMockUltimMesaj = ''
goFormGD._grdbase1.Column2.Text1.DblClick()
IF gnMockNomModCount = 0 AND 'nu poate fi identificat' $ LOWER(gcMockUltimMesaj)
- DO PrLog WITH 'OK C5: id_part gol -> mesaj de avertizare, fara editare partener'
+ DO PrLog WITH 'OK D3: id_part gol -> mesaj de avertizare, fara editare partener'
ELSE
- DO PrLog WITH 'FAIL C5: id_part gol - nom_mod count=' + TRANSFORM(gnMockNomModCount) + ' mesaj=[' + gcMockUltimMesaj + ']'
+ DO PrLog WITH 'FAIL D3: nom_mod count=' + TRANSFORM(gnMockNomModCount) + ' mesaj=[' + gcMockUltimMesaj + ']'
gnEsecuri = gnEsecuri + 1
ENDIF
+ *=====================================================================
+ * Banda E: SetVedere(1/2/3) - coloane vizibile si suma latimilor
+ *=====================================================================
+ LOCAL lnV, lnC, lnSuma, lcVizibile
+ FOR lnV = 1 TO 3
+ goFormGD.SetVedere(m.lnV)
+ lnSuma = 0
+ lcVizibile = ''
+ FOR lnC = 1 TO goFormGD._grdbase1.ColumnCount
+ IF goFormGD._grdbase1.Columns(m.lnC).Visible
+ lnSuma = lnSuma + goFormGD._grdbase1.Columns(m.lnC).Width
+ lcVizibile = lcVizibile + goFormGD._grdbase1.Columns(m.lnC).Name + '(' + TRANSFORM(goFormGD._grdbase1.Columns(m.lnC).Width) + ') '
+ ENDIF
+ ENDFOR
+ DO PrLog WITH 'Vedere ' + TRANSFORM(m.lnV) + ': suma latimi=' + TRANSFORM(m.lnSuma) + ' px, coloane vizibile: ' + m.lcVizibile
+ IF m.lnV = 1
+ IF m.lnSuma <= goFormGD._grdbase1.Width
+ DO PrLog WITH 'OK E1: vedere Esential, suma latimilor (' + TRANSFORM(m.lnSuma) + ') <= ' + TRANSFORM(goFormGD._grdbase1.Width) + ' px (latimea reala a gridului)'
+ ELSE
+ DO PrLog WITH 'FAIL E1: vedere Esential depaseste latimea gridului - suma=' + TRANSFORM(m.lnSuma) + ' px > ' + TRANSFORM(goFormGD._grdbase1.Width) + ' px'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ ENDIF
+ ENDFOR
+
+ *-- E2: in vederea Esential perioada de TVA se vede pe doua coloane de data, nu ca text lung
+ goFormGD.SetVedere(1)
+ IF goFormGD._grdbase1.cDataInceputScpTva.Visible AND goFormGD._grdbase1.cDataSfarsitScpTva.Visible ;
+ AND goFormGD._grdbase1.cDataAnulImpScpTva.Visible
+ DO PrLog WITH 'OK E2: vederea Esential arata Inceput / Sfarsit / Anulare TVA ca trei coloane'
+ ELSE
+ DO PrLog WITH 'FAIL E2: vederea Esential nu arata cele trei coloane de perioada TVA'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *=====================================================================
+ * Banda I: AsazaFiltre - butoanele de filtru au caption cu numar, deci latime variabila;
+ * trebuie asezate unul dupa altul, fara suprapunere, oricat de lung ar fi textul
+ *=====================================================================
+ LOCAL laFil[4], lnF, llSupra, lcPoz
+ goFormGD.chkInvalid.Caption = 'Coduri invalide (12345)'
+ goFormGD.chkDuplicat.Caption = 'Duplicate (12345)'
+ goFormGD.chkInactiv.Caption = 'Inactivi (12345)'
+ goFormGD.chkPlatitor.Caption = 'Atribut RO (12345)'
+ goFormGD.chkInvalid.Visible = .T.
+ goFormGD.chkDuplicat.Visible = .T.
+ goFormGD.chkInactiv.Visible = .T.
+ goFormGD.chkPlatitor.Visible = .T.
+ goFormGD.AsazaFiltre()
+ laFil[1] = goFormGD.chkInvalid
+ laFil[2] = goFormGD.chkDuplicat
+ laFil[3] = goFormGD.chkInactiv
+ laFil[4] = goFormGD.chkPlatitor
+ llSupra = .F.
+ lcPoz = ''
+ FOR lnF = 1 TO 4
+ lcPoz = lcPoz + ALLTRIM(laFil[m.lnF].Caption) + ' [' + TRANSFORM(laFil[m.lnF].Left) + '..' + ;
+ TRANSFORM(laFil[m.lnF].Left + laFil[m.lnF].Width) + '] '
+ IF m.lnF > 1 AND laFil[m.lnF].Left < laFil[m.lnF - 1].Left + laFil[m.lnF - 1].Width
+ llSupra = .T.
+ ENDIF
+ ENDFOR
+ DO PrLog WITH ' filtre: ' + m.lcPoz
+ IF !llSupra
+ DO PrLog WITH 'OK I1: butoanele de filtru nu se suprapun dupa AsazaFiltre'
+ ELSE
+ DO PrLog WITH 'FAIL I1: butoanele de filtru se suprapun'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *-- I2: chkMFIN a disparut ca obiect; ramane proprietatea lMFIN, setata din al 2-lea parametru
+ IF !PEMSTATUS(goFormGD, 'chkMFIN', 5) AND goFormGD.lMFIN = .T.
+ DO PrLog WITH 'OK I2: chkMFIN a fost scos, lMFIN = .T. (al 2-lea parametru la Init)'
+ ELSE
+ DO PrLog WITH 'FAIL I2: chkMFIN inca exista sau lMFIN=' + TRANSFORM(goFormGD.lMFIN) + ' (asteptat .T.)'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *=====================================================================
+ * Banda G: continutul coloanei atentie - metoda reala ConstruiesteAtentie (COMUN\clase\overificari.vc2),
+ * apelata real, pe randuri fabricate, fara ANAF
+ *=====================================================================
+ INSERT INTO crsVerificareParteneri (denumire, Valid, duplicat, inactiv, firma, atribut_fiscal, platitortvamfin) ;
+ VALUES ('ATN INVALID', .F., .F., .F., '', '', .F.)
+ INSERT INTO crsVerificareParteneri (denumire, Valid, duplicat, inactiv, firma, atribut_fiscal, platitortvamfin) ;
+ VALUES ('ATN DUPLICAT', .T., .T., .F., '', '', .F.)
+ INSERT INTO crsVerificareParteneri (denumire, Valid, duplicat, inactiv, firma, atribut_fiscal, platitortvamfin) ;
+ VALUES ('ATN INACTIV', .T., .F., .T., '', '', .F.)
+ INSERT INTO crsVerificareParteneri (denumire, Valid, duplicat, inactiv, firma, atribut_fiscal, platitortvamfin) ;
+ VALUES ('ATN FARARO', .T., .F., .F., 'FIRMA TEST SRL', 'RO', .F.)
+ INSERT INTO crsVerificareParteneri (denumire, Valid, duplicat, inactiv, firma, atribut_fiscal, platitortvamfin) ;
+ VALUES ('ATN COMBO', .T., .T., .T., 'FIRMA COMBO SRL', '', .T.)
+
+ goFormGD.ConstruiesteAtentie()
+
+ LOCAL laAtn[5,2]
+ laAtn[1,1] = 'ATN INVALID'
+ laAtn[1,2] = 'INVALID'
+ laAtn[2,1] = 'ATN DUPLICAT'
+ laAtn[2,2] = 'DUPLICAT'
+ laAtn[3,1] = 'ATN INACTIV'
+ laAtn[3,2] = 'INACTIV'
+ laAtn[4,1] = 'ATN FARARO'
+ laAtn[4,2] = 'FARA RO'
+ laAtn[5,1] = 'ATN COMBO'
+ laAtn[5,2] = 'DUPLICAT INACTIV FARA RO'
+
+ LOCAL lnG
+ FOR lnG = 1 TO 5
+ SELECT crsVerificareParteneri
+ LOCATE FOR denumire = laAtn[m.lnG, 1]
+ IF FOUND() AND ALLTRIM(crsVerificareParteneri.atentie) == laAtn[m.lnG, 2]
+ DO PrLog WITH 'OK G' + TRANSFORM(m.lnG) + ': ' + laAtn[m.lnG, 1] + ' -> atentie=[' + laAtn[m.lnG, 2] + ']'
+ ELSE
+ DO PrLog WITH 'FAIL G' + TRANSFORM(m.lnG) + ': ' + laAtn[m.lnG, 1] + ' -> atentie=[' + ALLTRIM(crsVerificareParteneri.atentie) + '] asteptat [' + laAtn[m.lnG, 2] + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ ENDFOR
+
goFormGD.Release()
DO PrLog WITH IIF(gnEsecuri = 0, 'TOTAL OK', 'TOTAL FAIL: ' + TRANSFORM(gnEsecuri) + ' pas(i)')
diff --git a/utile/Teste/todo21/test_todo21_mesaj_meniu.prg b/utile/Teste/todo21/test_todo21_mesaj_meniu.prg
new file mode 100644
index 0000000..2ddc56f
--- /dev/null
+++ b/utile/Teste/todo21/test_todo21_mesaj_meniu.prg
@@ -0,0 +1,376 @@
+* test_todo21_mesaj_meniu.prg
+* TODO #21: regresie pentru D6/D7 (mesajul de detalii grupat pe sectiuni) si D10 (meniul
+* scurtat de verificare cod fiscal), ca schimbari ulterioare in formular sa nu le strice tacut.
+* Fara HTTP, fara ANAF live, fara Oracle - GetMeniuVerificareCodFiscal/GetOptiuneVerificareCodFiscal/
+* verifica_partener_show_info nu depind de ele (doar de parametri si de variabila globala crlf,
+* setata mai jos ca in test_init_env_auto.prg).
+*
+* Pas 1-2: GetMeniuVerificareCodFiscal / GetOptiuneVerificareCodFiscal apelate DIRECT (functii
+* pure, fara XMENU in interior).
+* Pas 3: aritmetica optiuni_meniu_ante - copiata LITERAL din VerificaCodFiscal
+* (COMUN\programe\oproceduri_comune.prg:4960-4967: "lnOptiuneVerificare = m.lnOptiune" apoi
+* "lnOptiuneVerificare = m.lnOptiuneVerificare - Occurs(';', m.lcOptiuniMeniuAnte)"), aplicata pe
+* o pozitie FABRICATA (nu se apeleaza VerificaCodFiscal, care ar deschide XMENU si ar bloca
+* headless-ul).
+* Pas 4: verifica_partener_show_info, apelata prin umbra (copie a oproceduri_comune.prg cu
+* amessagebox redenumit, ca in test_todo21_perioade_anaf.prg) - amessagebox e inlocuit de
+* mock_amessagebox.prg, textul se captureaza in gcMockUltimMesaj fara dialog modal. Obiectele
+* partener sunt fabricate (CREATEOBJECT("empty") + ADDPROPERTY), fara verificare reala.
+*
+* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\todo21\test_todo21_mesaj_meniu.prg"
+* Verdict in log: TOTAL OK / TOTAL FAIL: n pas(i).
+
+SET SAFETY OFF
+SET TALK OFF
+SET DELETED ON
+SET EXACT ON
+SET CENTURY ON
+SET DATE DMY
+SET NULLDISPLAY TO ''
+CLOSE DATABASES
+
+PUBLIC gcLog, gcMockUltimMesaj, gnMockUltimTip, gnMockRaspuns, crlf
+gcLog = "D:\ROA\ROACONT\COMUN\utile\Teste\todo21\test_todo21_mesaj_meniu_log.txt"
+gcMockUltimMesaj = ''
+gnMockUltimTip = 0
+gnMockRaspuns = 6
+crlf = CHR(13) + CHR(10)
+STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcLog)
+
+PUBLIC gnEsecuri
+gnEsecuri = 0
+
+ON ERROR DO WriteTestErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
+ON SHUTDOWN QUIT
+
+TRY
+ *-- umbra: copie a oproceduri_comune.prg cu FUNCTION amessagebox redenumita, ca apelul din
+ *-- verifica_partener_show_info sa cada pe mock_amessagebox.prg (fara conflict de nume) si
+ *-- niciun dialog modal sa nu apara. VFP rezolva numele duplicate de procedura in favoarea
+ *-- fisierului deschis PRIMUL cu SET PROCEDURE - de-asta mock-ul si umbra se incarca aici,
+ *-- inaintea oricarui alt cod.
+ LOCAL lcSrc, lcUmbra
+ lcUmbra = ADDBS(SYS(2023)) + 'oproceduri_comune_umbra_mesajmeniu.prg'
+ lcSrc = FILETOSTR("D:\ROA\ROACONT\COMUN\programe\oproceduri_comune.prg")
+ lcSrc = STRTRAN(lcSrc, CHR(13) + CHR(10) + 'Function amessagebox' + CHR(13) + CHR(10), ;
+ CHR(13) + CHR(10) + 'Function amessagebox_umbrit_mm' + CHR(13) + CHR(10))
+ STRTOFILE(lcSrc, lcUmbra)
+ ERASE (FORCEEXT(lcUmbra, 'fxp'))
+
+ SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\mock_amessagebox.prg" ADDITIVE
+ SET PROCEDURE TO (lcUmbra) ADDITIVE
+ DO WriteTestLog WITH 'mock si umbra incarcate (fara Oracle - functiile testate nu depind de el)'
+
+ *==================================================================
+ * Pas 1: GetMeniuVerificareCodFiscal - cele 5 pozitii, in ordine, cu cod fiscal prezent
+ *==================================================================
+ LOCAL lcMenu, lcMenuAsteptat, lcMenuFaraCod, lcMenuFaraCodAsteptat
+
+ lcMenu = GetMeniuVerificareCodFiscal('RO1890420')
+ lcMenuAsteptat = "VERIFICARE ANAF;VERIFICARE VIES;ISTORIC VERIFICARI COD FISCAL;\-;DESCHIDE FISA PE MFINANTE.RO"
+ IF m.lcMenu == m.lcMenuAsteptat
+ DO WriteTestLog WITH 'OK P1a: meniul cu cod fiscal are exact cele 5 pozitii, in ordine'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P1a: meniu=[' + m.lcMenu + '] asteptat=[' + m.lcMenuAsteptat + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *-- Pas 3 (partial aici): fara cod fiscal, pozitiile dezactivabile au prefixul "\";
+ *-- ISTORIC (pozitia 3) ramane activa oricum.
+ lcMenuFaraCod = GetMeniuVerificareCodFiscal('')
+ lcMenuFaraCodAsteptat = "\VERIFICARE ANAF;\VERIFICARE VIES;ISTORIC VERIFICARI COD FISCAL;\-;\DESCHIDE FISA PE MFINANTE.RO"
+ IF m.lcMenuFaraCod == m.lcMenuFaraCodAsteptat
+ DO WriteTestLog WITH 'OK P1b: fara cod fiscal, ANAF/VIES/MFINANTE dezactivate (\), ISTORIC ramane activ'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P1b: meniu=[' + m.lcMenuFaraCod + '] asteptat=[' + m.lcMenuFaraCodAsteptat + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *==================================================================
+ * Pas 2: GetOptiuneVerificareCodFiscal - 1/2/3/5 mapate, 4 (separator) si restul goale
+ *==================================================================
+ LOCAL lnI, lcOptRezultat, lcOptAsteptat
+ DIMENSION laOptiuni(7,2)
+ laOptiuni(1,1) = 0
+ laOptiuni(1,2) = ''
+ laOptiuni(2,1) = 1
+ laOptiuni(2,2) = 'ANAF_SERVICIU_WEB'
+ laOptiuni(3,1) = 2
+ laOptiuni(3,2) = 'VIES_AUTO'
+ laOptiuni(4,1) = 3
+ laOptiuni(4,2) = 'ISTORIC'
+ laOptiuni(5,1) = 4
+ laOptiuni(5,2) = ''
+ laOptiuni(6,1) = 5
+ laOptiuni(6,2) = 'MFIN_MANUAL_COD'
+ laOptiuni(7,1) = 6
+ laOptiuni(7,2) = ''
+
+ FOR lnI = 1 TO 7
+ lcOptRezultat = GetOptiuneVerificareCodFiscal(laOptiuni(m.lnI,1))
+ lcOptAsteptat = laOptiuni(m.lnI,2)
+ IF m.lcOptRezultat == m.lcOptAsteptat
+ DO WriteTestLog WITH 'OK P2: GetOptiuneVerificareCodFiscal(' + TRANSFORM(laOptiuni(m.lnI,1)) + ') = [' + m.lcOptRezultat + ']'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P2: GetOptiuneVerificareCodFiscal(' + TRANSFORM(laOptiuni(m.lnI,1)) + ') = [' + m.lcOptRezultat + '], asteptat [' + m.lcOptAsteptat + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ ENDFOR
+
+ *==================================================================
+ * Pas 3: aritmetica optiuni_meniu_ante - formula copiata din VerificaCodFiscal:4960-4967
+ *==================================================================
+ LOCAL lcOptiuniMeniuAnte, lcMenuCombinat, lcMenuCombinatAsteptat, lnOptiuneSimulat, lnOptiuneVerificare, lcTip
+
+ lcOptiuniMeniuAnte = "MODIFICARE PARTENER - X;\-;"
+
+ *-- meniul combinat trebuie sa fie exact prepandatul + submeniul de verificare neschimbat
+ lcMenuCombinat = GetMeniuVerificareCodFiscal('RO1890420', m.lcOptiuniMeniuAnte)
+ lcMenuCombinatAsteptat = m.lcOptiuniMeniuAnte + m.lcMenuAsteptat
+ IF m.lcMenuCombinat == m.lcMenuCombinatAsteptat
+ DO WriteTestLog WITH 'OK P3a: meniul combinat = prepandate (2 pozitii) + submeniul de verificare neschimbat'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P3a: combinat=[' + m.lcMenuCombinat + '] asteptat=[' + m.lcMenuCombinatAsteptat + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *-- pozitia 3 din meniul COMBINAT (dupa cele 2 prepandate: "MODIFICARE PARTENER - X" si "\-")
+ *-- e primul element din submeniul de verificare -> trebuie sa cada pe ANAF_SERVICIU_WEB
+ lnOptiuneSimulat = 3
+ lnOptiuneVerificare = m.lnOptiuneSimulat
+ IF !EMPTY(m.lcOptiuniMeniuAnte)
+ lnOptiuneVerificare = m.lnOptiuneVerificare - OCCURS(';', m.lcOptiuniMeniuAnte)
+ ENDIF
+ lcTip = GetOptiuneVerificareCodFiscal(m.lnOptiuneVerificare)
+ IF m.lcTip == 'ANAF_SERVICIU_WEB'
+ DO WriteTestLog WITH 'OK P3b: pozitia 3 din meniul combinat (dupa cele 2 prepandate) = ANAF_SERVICIU_WEB'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P3b: pozitia 3 combinata a dat [' + m.lcTip + '], asteptat ANAF_SERVICIU_WEB'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *-- pozitia 7 (ultima din meniul combinat) e ultimul element din submeniu -> MFIN_MANUAL_COD
+ lnOptiuneSimulat = 7
+ lnOptiuneVerificare = m.lnOptiuneSimulat - OCCURS(';', m.lcOptiuniMeniuAnte)
+ lcTip = GetOptiuneVerificareCodFiscal(m.lnOptiuneVerificare)
+ IF m.lcTip == 'MFIN_MANUAL_COD'
+ DO WriteTestLog WITH 'OK P3c: pozitia 7 din meniul combinat = MFIN_MANUAL_COD'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P3c: pozitia 7 combinata a dat [' + m.lcTip + '], asteptat MFIN_MANUAL_COD'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *==================================================================
+ * Pas 4: verifica_partener_show_info - structura mesajului, pe obiecte fabricate
+ *==================================================================
+ LOCAL loPart
+
+ *-- 4a: sursa ANAF, atribut RO nepotrivit (neplatitor + cod RO) -> *** ATENTIE ***,
+ *-- Mesaj ANAF completat, identificare PARTIALA (telefon/fax/cod postal goale -> absente)
+ loPart = CREATEOBJECT("empty")
+ ADDPROPERTY(loPart, "firma", "FIRMA UNU SRL")
+ ADDPROPERTY(loPart, "sursa", "ANAF")
+ ADDPROPERTY(loPart, "data_sursa", {})
+ ADDPROPERTY(loPart, "platitortvamfin", .F.)
+ ADDPROPERTY(loPart, "datatvamfin", "")
+ ADDPROPERTY(loPart, "PlatitorTVA", .F.)
+ ADDPROPERTY(loPart, "tvaincasare", .T.)
+ ADDPROPERTY(loPart, "splittva", .F.)
+ ADDPROPERTY(loPart, "inactiv", .F.)
+ ADDPROPERTY(loPart, "stare", "ANULAT DIN OFICIU - TEST")
+ ADDPROPERTY(loPart, "adresa", "STR TEST NR 1")
+ ADDPROPERTY(loPart, "judet", "BUCURESTI")
+ ADDPROPERTY(loPart, "regcom", "J40/1/2020")
+ ADDPROPERTY(loPart, "codpostal", "")
+ ADDPROPERTY(loPart, "telefon", "")
+ ADDPROPERTY(loPart, "fax", "")
+ ADDPROPERTY(loPart, "eroare", "")
+
+ gcMockUltimMesaj = ''
+ verifica_partener_show_info(m.loPart, 'RO1234567', 'FIRMA UNU SRL', '')
+
+ IF 'ANAF: FIRMA UNU SRL' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'OK P4a1: prefix sursa "ANAF: " pe linia denumirii'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P4a1: prefixul ANAF lipseste din mesaj'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ IF '*** ATENTIE ***' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'OK P4a2: *** ATENTIE *** prezent (atribut RO nepotrivit)'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P4a2: *** ATENTIE *** lipseste pentru atribut RO nepotrivit'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ IF '--- TVA ---' $ m.gcMockUltimMesaj AND '--- STARE FIRMA ---' $ m.gcMockUltimMesaj AND '--- IDENTIFICARE ---' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'OK P4a3: cele 3 titluri de sectiune sunt prezente'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P4a3: lipseste cel putin un titlu de sectiune - [' + m.gcMockUltimMesaj + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ IF 'Mesaj ANAF: ANULAT DIN OFICIU - TEST' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'OK P4a4: Mesaj ANAF completat cand stare e nevida'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P4a4: linia Mesaj ANAF lipseste sau e gresita'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ IF NOT ('Cod postal:' $ m.gcMockUltimMesaj) AND NOT ('Telefon:' $ m.gcMockUltimMesaj) AND NOT ('Fax:' $ m.gcMockUltimMesaj)
+ DO WriteTestLog WITH 'OK P4a5: liniile pentru campurile goale (cod postal/telefon/fax) lipsesc'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P4a5: cel putin un camp gol si-a pastrat linia - [' + m.gcMockUltimMesaj + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ IF 'Adresa: STR TEST NR 1' $ m.gcMockUltimMesaj AND 'Judet: BUCURESTI' $ m.gcMockUltimMesaj AND 'Reg. comertului: J40/1/2020' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'OK P4a6: campurile completate (adresa/judet/reg. comertului) apar'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P4a6: lipseste cel putin un camp completat de identificare'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *-- 4b: sursa CACHE cu data, platitor+cod RO potrivite dar INACTIV -> *** ATENTIE *** pt. inactiv,
+ *-- fara proprietatile de perioada ANAF (ramura Else din verifica_partener_show_info),
+ *-- identificare COMPLETA (toate cele 6 campuri completate)
+ loPart = CREATEOBJECT("empty")
+ ADDPROPERTY(loPart, "firma", "FIRMA DOI SRL")
+ ADDPROPERTY(loPart, "sursa", "CACHE")
+ ADDPROPERTY(loPart, "data_sursa", {^2026-08-21})
+ ADDPROPERTY(loPart, "platitortvamfin", .T.)
+ ADDPROPERTY(loPart, "datatvamfin", "01/01/2015")
+ ADDPROPERTY(loPart, "PlatitorTVA", .T.)
+ ADDPROPERTY(loPart, "tvaincasare", .F.)
+ ADDPROPERTY(loPart, "splittva", .F.)
+ ADDPROPERTY(loPart, "inactiv", .T.)
+ ADDPROPERTY(loPart, "stare", "")
+ ADDPROPERTY(loPart, "adresa", "STR DOI NR 2")
+ ADDPROPERTY(loPart, "judet", "CLUJ")
+ ADDPROPERTY(loPart, "regcom", "J12/2/2015")
+ ADDPROPERTY(loPart, "codpostal", "400000")
+ ADDPROPERTY(loPart, "telefon", "0264000000")
+ ADDPROPERTY(loPart, "fax", "0264000001")
+ ADDPROPERTY(loPart, "eroare", "")
+
+ gcMockUltimMesaj = ''
+ verifica_partener_show_info(m.loPart, 'RO7654321', 'FIRMA DOI SRL', '')
+
+ IF 'CACHE 21/08/2026: FIRMA DOI SRL' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'OK P4b1: prefix sursa "CACHE dd/mm/yyyy: " pe linia denumirii'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P4b1: prefixul CACHE lipseste sau e gresit - [' + m.gcMockUltimMesaj + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ IF '*** ATENTIE ***' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'OK P4b2: *** ATENTIE *** prezent (inactiv)'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P4b2: *** ATENTIE *** lipseste pentru partener inactiv'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ IF 'Mesaj ANAF:' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'FAIL P4b3: linia Mesaj ANAF apare desi stare e goala'
+ gnEsecuri = gnEsecuri + 1
+ ELSE
+ DO WriteTestLog WITH 'OK P4b3: linia Mesaj ANAF lipseste cand stare e goala'
+ ENDIF
+ IF 'Cod postal: 400000' $ m.gcMockUltimMesaj AND 'Telefon: 0264000000' $ m.gcMockUltimMesaj AND 'Fax: 0264000001' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'OK P4b4: identificare completa (cod postal/telefon/fax completate) apare integral'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P4b4: lipseste cel putin un camp de identificare completat'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *-- 4c: sursa CACHE_INDISP, fara atentie, IDENTIFICARE complet goala -> sectiunea lipseste
+ loPart = CREATEOBJECT("empty")
+ ADDPROPERTY(loPart, "firma", "FIRMA TREI SRL")
+ ADDPROPERTY(loPart, "sursa", "CACHE_INDISP")
+ ADDPROPERTY(loPart, "data_sursa", {^2026-08-20})
+ ADDPROPERTY(loPart, "platitortvamfin", .T.)
+ ADDPROPERTY(loPart, "datatvamfin", "01/01/2015")
+ ADDPROPERTY(loPart, "PlatitorTVA", .T.)
+ ADDPROPERTY(loPart, "tvaincasare", .F.)
+ ADDPROPERTY(loPart, "splittva", .F.)
+ ADDPROPERTY(loPart, "inactiv", .F.)
+ ADDPROPERTY(loPart, "stare", "")
+ ADDPROPERTY(loPart, "adresa", "")
+ ADDPROPERTY(loPart, "judet", "")
+ ADDPROPERTY(loPart, "regcom", "")
+ ADDPROPERTY(loPart, "codpostal", "")
+ ADDPROPERTY(loPart, "telefon", "")
+ ADDPROPERTY(loPart, "fax", "")
+ ADDPROPERTY(loPart, "eroare", "")
+
+ gcMockUltimMesaj = ''
+ verifica_partener_show_info(m.loPart, 'RO1112223', 'FIRMA TREI SRL', '')
+
+ IF 'CACHE 20/08/2026 (ANAF indisponibil): FIRMA TREI SRL' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'OK P4c1: prefix "CACHE dd/mm/yyyy (ANAF indisponibil): " pe linia denumirii'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P4c1: prefixul CACHE_INDISP lipseste sau e gresit - [' + m.gcMockUltimMesaj + ']'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+ IF '*** ATENTIE ***' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'FAIL P4c2: *** ATENTIE *** apare desi codul si starea sunt consistente'
+ gnEsecuri = gnEsecuri + 1
+ ELSE
+ DO WriteTestLog WITH 'OK P4c2: *** ATENTIE *** absent cand nu e cazul'
+ ENDIF
+ IF '--- IDENTIFICARE ---' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'FAIL P4c3: sectiunea IDENTIFICARE apare desi toate campurile ei sunt goale'
+ gnEsecuri = gnEsecuri + 1
+ ELSE
+ DO WriteTestLog WITH 'OK P4c3: sectiunea IDENTIFICARE lipseste cand toate campurile ei sunt goale'
+ ENDIF
+ IF '--- TVA ---' $ m.gcMockUltimMesaj AND '--- STARE FIRMA ---' $ m.gcMockUltimMesaj
+ DO WriteTestLog WITH 'OK P4c4: sectiunile TVA/STARE FIRMA raman prezente'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P4c4: lipseste sectiunea TVA sau STARE FIRMA'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ *-- 4d: fara proprietatea sursa (stil mfinante.ro) -> fara prefix pe linia denumirii
+ loPart = CREATEOBJECT("empty")
+ ADDPROPERTY(loPart, "firma", "FIRMA PATRU SRL")
+ ADDPROPERTY(loPart, "platitortvamfin", .T.)
+ ADDPROPERTY(loPart, "datatvamfin", "01/01/2015")
+ ADDPROPERTY(loPart, "PlatitorTVA", .T.)
+ ADDPROPERTY(loPart, "tvaincasare", .F.)
+ ADDPROPERTY(loPart, "splittva", .F.)
+ ADDPROPERTY(loPart, "inactiv", .F.)
+ ADDPROPERTY(loPart, "stare", "")
+ ADDPROPERTY(loPart, "adresa", "")
+ ADDPROPERTY(loPart, "judet", "")
+ ADDPROPERTY(loPart, "regcom", "")
+ ADDPROPERTY(loPart, "codpostal", "")
+ ADDPROPERTY(loPart, "telefon", "")
+ ADDPROPERTY(loPart, "fax", "")
+ ADDPROPERTY(loPart, "eroare", "")
+
+ gcMockUltimMesaj = ''
+ verifica_partener_show_info(m.loPart, 'RO4445556', 'FIRMA PATRU SRL', '')
+
+ IF 'FIRMA PATRU SRL' $ m.gcMockUltimMesaj AND NOT ('ANAF:' $ m.gcMockUltimMesaj) AND NOT ('CACHE' $ m.gcMockUltimMesaj)
+ DO WriteTestLog WITH 'OK P4d: fara proprietatea sursa, linia denumirii nu are niciun prefix'
+ ELSE
+ DO WriteTestLog WITH 'FAIL P4d: mesajul are un prefix desi obiectul nu are proprietatea sursa'
+ gnEsecuri = gnEsecuri + 1
+ ENDIF
+
+ DO WriteTestLog WITH IIF(gnEsecuri = 0, 'TOTAL OK', 'TOTAL FAIL: ' + TRANSFORM(gnEsecuri) + ' pas(i)')
+CATCH TO loEx
+ DO WriteTestLog WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ') ' + loEx.Procedure
+ DO WriteTestLog WITH 'TOTAL FAIL: exceptie neasteptata'
+ENDTRY
+
+QUIT
+
+**********************************************************
+PROCEDURE WriteTestLog
+ LPARAMETERS tcMsg
+ LOCAL lcL
+ SET SAFETY OFF
+ lcL = IIF(FILE(gcLog), FILETOSTR(gcLog), '')
+ STRTOFILE(lcL + TRANSFORM(tcMsg) + CHR(13) + CHR(10), gcLog)
+ENDPROC
+
+**********************************************************
+PROCEDURE WriteTestErr
+ LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
+ DO WriteTestLog WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
+ENDPROC