TODO 21: perioade TVA la verificarea codurilor fiscale + diacritice ANAF
- validare.prg: cele 7 campuri de perioada (inregistrare TVA, TVA la incasare, inactivare/reactivare) duse din raspunsul ANAF pana in cVerificareCod - validare.prg: AnafDecodeResponseText - raspunsul HTTP se citeste din responseBody prin ADODB.Stream cu Charset utf-8, cu cadere inapoi pe comportamentul vechi; repara diacriticele pierdute la marshalling-ul COM al lui responseText - oproceduri_comune.prg: perioadele in mesajul de detalii; fix id_part N(16), data D in crsXMLParteneriVerificare (Insert Into esua tacit, lista ramanea goala) - overificari.vc2: 7 coloane noi in grid, dublu-click pe Denumire/Cod fiscal deschide fisa partenerului, captionuri corectate in "inregistrare TVA" - oparteneri / ofacturare_comun / onomenclatoare: id_part in SELECT-urile care alimenteaza verificarea - teste headless noi: utile/Teste/test_todo21_perioade_anaf.prg, utile/Teste/todo21/ Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GztNyTRxjHqBg5kyNMmcy1
This commit is contained in:
@@ -4897,7 +4897,7 @@ DEFINE CLASS frm_facturi AS _frmbase OF "_frm_base.vcx"
|
||||
lcFilter = Filter("crsFacturi")
|
||||
lcWhere = Iif(!Empty(m.lcFilter), m.lcFilter, ".T.")
|
||||
IF m.lnOptiune = 1
|
||||
Select distinct cod_fiscal, data_act as data, client as denumire, adresa_facturare as adresa_roa, IIF(LEFT(UPPER(cod_fiscal), 2) = "RO", "RO", " ") AS ATRIBUT_FISCAL, .T. AS IsCIF, .F. AS codvalid ;
|
||||
Select distinct id_part, cod_fiscal, data_act as data, client as denumire, adresa_facturare as adresa_roa, IIF(LEFT(UPPER(cod_fiscal), 2) = "RO", "RO", " ") AS ATRIBUT_FISCAL, .T. AS IsCIF, .F. AS codvalid ;
|
||||
From crsFacturi ;
|
||||
Where &lcWhere ;
|
||||
Into Cursor crsCoduriFiscale ;
|
||||
@@ -4909,7 +4909,7 @@ DEFINE CLASS frm_facturi AS _frmbase OF "_frm_base.vcx"
|
||||
ldData = GOMONTH(m.ldData,1) - 1
|
||||
ENDIF
|
||||
|
||||
Select distinct cod_fiscal, m.ldData as data, client as denumire, adresa_facturare as adresa_roa, IIF(LEFT(UPPER(cod_fiscal), 2) = "RO", "RO", " ") AS ATRIBUT_FISCAL, .T. AS IsCIF, .F. AS codvalid ;
|
||||
Select distinct id_part, cod_fiscal, m.ldData as data, client as denumire, adresa_facturare as adresa_roa, IIF(LEFT(UPPER(cod_fiscal), 2) = "RO", "RO", " ") AS ATRIBUT_FISCAL, .T. AS IsCIF, .F. AS codvalid ;
|
||||
From crsFacturi ;
|
||||
Where &lcWhere ;
|
||||
Into Cursor crsCoduriFiscale ;
|
||||
|
||||
@@ -11806,7 +11806,7 @@ DEFINE CLASS frm_partener AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
lcFilter = FILTER("crsparteneri")
|
||||
lcWhere = IIF(x = 1, "recno() = " + ALLTRIM(STR(RECNO())), IIF(!EMPTY(m.lcFilter), m.lcFilter, ".T."))
|
||||
Select Distinct COD_FISCAL, denumire, IIF(LEFT(UPPER(COD_FISCAL), 2) = "RO", "RO", " ") AS ATRIBUT_FISCAL, .T. As IsCIF, .F. As codvalid ;
|
||||
Select Distinct id_part, COD_FISCAL, denumire, IIF(LEFT(UPPER(COD_FISCAL), 2) = "RO", "RO", " ") AS ATRIBUT_FISCAL, .T. As IsCIF, .F. As codvalid ;
|
||||
FROM crsparteneri ;
|
||||
WHERE &lcWhere ;
|
||||
INTO Cursor crsCoduriFiscale ;
|
||||
|
||||
@@ -3991,7 +3991,7 @@ DEFINE CLASS frm_bal_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
lcFilter = Filter("xtemp")
|
||||
lcWhere = Iif(m.lnOptiune = 1, "recno() = " + Alltrim(Str(Recno())), Iif(!Empty(m.lcFilter), m.lcFilter, ".T."))
|
||||
Select Distinct cod_fiscal, nume As denumire, Iif(Left(Upper(cod_fiscal), 2) = "RO", "RO", " ") As ATRIBUT_FISCAL, .T. As IsCIF, .F. As codvalid ;
|
||||
Select Distinct id_part, cod_fiscal, nume As denumire, Iif(Left(Upper(cod_fiscal), 2) = "RO", "RO", " ") As ATRIBUT_FISCAL, .T. As IsCIF, .F. As codvalid ;
|
||||
From xtemp;
|
||||
Where &lcWhere ;
|
||||
Into Cursor crsCoduriFiscale ;
|
||||
@@ -10704,7 +10704,7 @@ DEFINE CLASS frm_ireg_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
lcFilter = Filter("actcv")
|
||||
lcWhere = Iif(m.lnOptiune = 1, "recno() = " + Alltrim(Str(Recno())), Iif(!Empty(m.lcFilter), m.lcFilter, ".T."))
|
||||
Select Distinct cod_fiscal, nume as denumire, Iif(Left(Upper(cod_fiscal), 2) = "RO", "RO", " ") As ATRIBUT_FISCAL, .T. As IsCIF, .F. As codvalid ;
|
||||
Select Distinct id_part, cod_fiscal, nume as denumire, Iif(Left(Upper(cod_fiscal), 2) = "RO", "RO", " ") As ATRIBUT_FISCAL, .T. As IsCIF, .F. As codvalid ;
|
||||
From actcv ;
|
||||
Where &lcWhere ;
|
||||
Into Cursor crsCoduriFiscale ;
|
||||
|
||||
@@ -1598,6 +1598,20 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.Column26.Text1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.Column27.Header1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.Column27.Text1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.cDataInceputScpTva.Header1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.cDataInceputScpTva.Text1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.cDataSfarsitScpTva.Header1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.cDataSfarsitScpTva.Text1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.cDataAnulImpScpTva.Header1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.cDataAnulImpScpTva.Text1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.cDataInceputTvaInc.Header1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.cDataInceputTvaInc.Text1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.cDataSfarsitTvaInc.Header1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.cDataSfarsitTvaInc.Text1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="_grdbase1.cDataInactivare.Header1" UniqueID="" Timestamp="" />
|
||||
*< 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="" />
|
||||
@@ -1620,6 +1634,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
*<DefinedPropArrayMethod>
|
||||
*m: filtreatentionari
|
||||
*m: meniu_dblclick
|
||||
*m: meniu_dblclick_partener
|
||||
*p: lautoverificare && Daca se porneste verificarea automat din metoda Show, cand este apelata verificarea din Reg. TVA
|
||||
*p: lmfin
|
||||
*p: lvies
|
||||
@@ -1660,7 +1675,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
ADD OBJECT '_grdbase1' AS _grdbase WITH ;
|
||||
Anchor = 15, ;
|
||||
ColumnCount = 27, ;
|
||||
ColumnCount = 34, ;
|
||||
DeleteMark = .F., ;
|
||||
HeaderHeight = 32, ;
|
||||
Height = 283, ;
|
||||
@@ -1683,14 +1698,14 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
Column2.ControlSource = "crsverificareparteneri.denumire", ;
|
||||
Column2.Name = "Column2", ;
|
||||
Column2.ReadOnly = .T., ;
|
||||
Column2.ToolTipText = "Dublu click pentru verificare manuala pe www.mfinante.ro", ;
|
||||
Column2.ToolTipText = "Dublu click pentru modificarea partenerului", ;
|
||||
Column2.Visible = .T., ;
|
||||
Column2.Width = 221, ;
|
||||
Column3.ColumnOrder = 5, ;
|
||||
Column3.ControlSource = "crsverificareparteneri.cod_fiscal", ;
|
||||
Column3.Name = "Column3", ;
|
||||
Column3.ReadOnly = .T., ;
|
||||
Column3.ToolTipText = "Dublu click pentru verificare manuala pe www.mfinante.ro", ;
|
||||
Column3.ToolTipText = "Dublu click pentru modificarea partenerului", ;
|
||||
Column3.Visible = .T., ;
|
||||
Column3.Width = 75, ;
|
||||
Column4.ColumnOrder = 6, ;
|
||||
@@ -1701,57 +1716,57 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
Column4.Sparse = .F., ;
|
||||
Column4.Visible = .T., ;
|
||||
Column4.Width = 41, ;
|
||||
Column5.ColumnOrder = 10, ;
|
||||
Column5.ColumnOrder = 13, ;
|
||||
Column5.ControlSource = "crsverificareparteneri.firma", ;
|
||||
Column5.Name = "Column5", ;
|
||||
Column5.ReadOnly = .T., ;
|
||||
Column5.Visible = .T., ;
|
||||
Column5.Width = 305, ;
|
||||
Column6.ColumnOrder = 14, ;
|
||||
Column6.ColumnOrder = 21, ;
|
||||
Column6.ControlSource = "crsverificareparteneri.cod", ;
|
||||
Column6.Name = "Column6", ;
|
||||
Column6.ReadOnly = .T., ;
|
||||
Column6.Visible = .T., ;
|
||||
Column6.Width = 75, ;
|
||||
Column7.BackColor = 185,220,255, ;
|
||||
Column7.ColumnOrder = 16, ;
|
||||
Column7.ColumnOrder = 23, ;
|
||||
Column7.ControlSource = "crsverificareparteneri.adresa", ;
|
||||
Column7.DynamicBackColor = "RGB(185,220,255)", ;
|
||||
Column7.Name = "Column7", ;
|
||||
Column7.ReadOnly = .T., ;
|
||||
Column7.Visible = .T., ;
|
||||
Column7.Width = 150, ;
|
||||
Column8.ColumnOrder = 17, ;
|
||||
Column8.ColumnOrder = 24, ;
|
||||
Column8.ControlSource = "crsverificareparteneri.judet", ;
|
||||
Column8.Name = "Column8", ;
|
||||
Column8.ReadOnly = .T., ;
|
||||
Column8.Visible = .T., ;
|
||||
Column8.Width = 89, ;
|
||||
Column9.ColumnOrder = 18, ;
|
||||
Column9.ColumnOrder = 25, ;
|
||||
Column9.ControlSource = "crsverificareparteneri.regcom", ;
|
||||
Column9.Name = "Column9", ;
|
||||
Column9.ReadOnly = .T., ;
|
||||
Column9.Visible = .T., ;
|
||||
Column9.Width = 75, ;
|
||||
Column10.ColumnOrder = 19, ;
|
||||
Column10.ColumnOrder = 26, ;
|
||||
Column10.ControlSource = "crsverificareparteneri.codpostal", ;
|
||||
Column10.Name = "Column10", ;
|
||||
Column10.ReadOnly = .T., ;
|
||||
Column10.Visible = .T., ;
|
||||
Column10.Width = 75, ;
|
||||
Column11.ColumnOrder = 20, ;
|
||||
Column11.ColumnOrder = 27, ;
|
||||
Column11.ControlSource = "crsverificareparteneri.telefon", ;
|
||||
Column11.Name = "Column11", ;
|
||||
Column11.ReadOnly = .T., ;
|
||||
Column11.Visible = .T., ;
|
||||
Column11.Width = 75, ;
|
||||
Column12.ColumnOrder = 21, ;
|
||||
Column12.ColumnOrder = 28, ;
|
||||
Column12.ControlSource = "crsverificareparteneri.fax", ;
|
||||
Column12.Name = "Column12", ;
|
||||
Column12.ReadOnly = .T., ;
|
||||
Column12.Visible = .T., ;
|
||||
Column12.Width = 75, ;
|
||||
Column13.ColumnOrder = 22, ;
|
||||
Column13.ColumnOrder = 29, ;
|
||||
Column13.ControlSource = "crsverificareparteneri.vies", ;
|
||||
Column13.CurrentControl = "_checkbox1", ;
|
||||
Column13.Name = "Column13", ;
|
||||
@@ -1759,7 +1774,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
Column13.Sparse = .F., ;
|
||||
Column13.Visible = .T., ;
|
||||
Column13.Width = 75, ;
|
||||
Column14.ColumnOrder = 23, ;
|
||||
Column14.ColumnOrder = 30, ;
|
||||
Column14.ControlSource = "crsverificareparteneri.platitortva", ;
|
||||
Column14.CurrentControl = "_checkbox1", ;
|
||||
Column14.Name = "Column14", ;
|
||||
@@ -1767,7 +1782,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
Column14.Sparse = .F., ;
|
||||
Column14.Visible = .T., ;
|
||||
Column14.Width = 75, ;
|
||||
Column15.ColumnOrder = 24, ;
|
||||
Column15.ColumnOrder = 31, ;
|
||||
Column15.ControlSource = "crsverificareparteneri.eroare", ;
|
||||
Column15.Name = "Column15", ;
|
||||
Column15.ReadOnly = .T., ;
|
||||
@@ -1784,7 +1799,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
Column17.ReadOnly = .T., ;
|
||||
Column17.Sparse = .F., ;
|
||||
Column17.Width = 71, ;
|
||||
Column18.ColumnOrder = 25, ;
|
||||
Column18.ColumnOrder = 32, ;
|
||||
Column18.ControlSource = "crsverificareparteneri.duplicat", ;
|
||||
Column18.CurrentControl = "_checkbox1", ;
|
||||
Column18.Name = "Column18", ;
|
||||
@@ -1796,7 +1811,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
Column19.Name = "Column19", ;
|
||||
Column19.ReadOnly = .T., ;
|
||||
Column19.Width = 41, ;
|
||||
Column20.ColumnOrder = 9, ;
|
||||
Column20.ColumnOrder = 12, ;
|
||||
Column20.ControlSource = "stare", ;
|
||||
Column20.Name = "Column20", ;
|
||||
Column20.ReadOnly = .T., ;
|
||||
@@ -1806,25 +1821,25 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
Column21.Name = "Column21", ;
|
||||
Column21.ReadOnly = .T., ;
|
||||
Column21.Width = 78, ;
|
||||
Column22.ColumnOrder = 26, ;
|
||||
Column22.ColumnOrder = 33, ;
|
||||
Column22.ControlSource = "crsverificareparteneri.id_part", ;
|
||||
Column22.Name = "Column23", ;
|
||||
Column22.ReadOnly = .T., ;
|
||||
Column23.ColumnOrder = 11, ;
|
||||
Column23.ColumnOrder = 14, ;
|
||||
Column23.ControlSource = "crsverificareparteneri.tvaincasare", ;
|
||||
Column23.CurrentControl = "Check1", ;
|
||||
Column23.Name = "cTVAincasare", ;
|
||||
Column23.ReadOnly = .T., ;
|
||||
Column23.Sparse = .F., ;
|
||||
Column23.Width = 59, ;
|
||||
Column24.ColumnOrder = 12, ;
|
||||
Column24.ColumnOrder = 17, ;
|
||||
Column24.ControlSource = "crsverificareparteneri.splittva", ;
|
||||
Column24.CurrentControl = "Check1", ;
|
||||
Column24.Name = "cSplitTVA", ;
|
||||
Column24.ReadOnly = .T., ;
|
||||
Column24.Sparse = .F., ;
|
||||
Column24.Width = 59, ;
|
||||
Column25.ColumnOrder = 13, ;
|
||||
Column25.ColumnOrder = 18, ;
|
||||
Column25.ControlSource = "crsverificareparteneri.inactiv", ;
|
||||
Column25.CurrentControl = "Check1", ;
|
||||
Column25.Name = "cInactiv", ;
|
||||
@@ -1832,20 +1847,174 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
Column25.Sparse = .F., ;
|
||||
Column25.Width = 51, ;
|
||||
Column26.BackColor = 255,202,228, ;
|
||||
Column26.ColumnOrder = 15, ;
|
||||
Column26.ColumnOrder = 22, ;
|
||||
Column26.ControlSource = "crsverificareparteneri.adresa_roa", ;
|
||||
Column26.DynamicBackColor = "RGB(255,202,228)", ;
|
||||
Column26.Name = "Column26", ;
|
||||
Column26.ReadOnly = .T., ;
|
||||
Column26.Width = 150, ;
|
||||
Column27.ColumnOrder = 27, ;
|
||||
Column27.ColumnOrder = 34, ;
|
||||
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.Name = "Column27", ;
|
||||
Column27.ReadOnly = .T., ;
|
||||
Column27.Visible = .T., ;
|
||||
Column27.Width = 230
|
||||
Column27.Width = 230, ;
|
||||
Column28.ColumnOrder = 9, ;
|
||||
Column28.ControlSource = "crsverificareparteneri.data_inceput_scptva", ;
|
||||
Column28.Name = "cDataInceputScpTva", ;
|
||||
Column28.ReadOnly = .T., ;
|
||||
Column28.Visible = .T., ;
|
||||
Column28.Width = 85, ;
|
||||
Column29.ColumnOrder = 10, ;
|
||||
Column29.ControlSource = "crsverificareparteneri.data_sfarsit_scptva", ;
|
||||
Column29.Name = "cDataSfarsitScpTva", ;
|
||||
Column29.ReadOnly = .T., ;
|
||||
Column29.Visible = .T., ;
|
||||
Column29.Width = 85, ;
|
||||
Column30.ColumnOrder = 11, ;
|
||||
Column30.ControlSource = "crsverificareparteneri.data_anul_imp_scptva", ;
|
||||
Column30.Name = "cDataAnulImpScpTva", ;
|
||||
Column30.ReadOnly = .T., ;
|
||||
Column30.Visible = .T., ;
|
||||
Column30.Width = 85, ;
|
||||
Column31.ColumnOrder = 15, ;
|
||||
Column31.ControlSource = "crsverificareparteneri.data_inceput_tvainc", ;
|
||||
Column31.Name = "cDataInceputTvaInc", ;
|
||||
Column31.ReadOnly = .T., ;
|
||||
Column31.Visible = .T., ;
|
||||
Column31.Width = 85, ;
|
||||
Column32.ColumnOrder = 16, ;
|
||||
Column32.ControlSource = "crsverificareparteneri.data_sfarsit_tvainc", ;
|
||||
Column32.Name = "cDataSfarsitTvaInc", ;
|
||||
Column32.ReadOnly = .T., ;
|
||||
Column32.Visible = .T., ;
|
||||
Column32.Width = 85, ;
|
||||
Column33.ColumnOrder = 19, ;
|
||||
Column33.ControlSource = "crsverificareparteneri.data_inactivare", ;
|
||||
Column33.Name = "cDataInactivare", ;
|
||||
Column33.ReadOnly = .T., ;
|
||||
Column33.Visible = .T., ;
|
||||
Column33.Width = 85, ;
|
||||
Column34.ColumnOrder = 20, ;
|
||||
Column34.ControlSource = "crsverificareparteneri.data_reactivare", ;
|
||||
Column34.Name = "cDataReactivare", ;
|
||||
Column34.ReadOnly = .T., ;
|
||||
Column34.Visible = .T., ;
|
||||
Column34.Width = 85
|
||||
*< END OBJECT: ClassLib="_grd_base.vcx" BaseClass="grid" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataAnulImpScpTva.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Anulare inregistrare TVA", ;
|
||||
Name = "Header1", ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataAnulImpScpTva.Text1' AS textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataInactivare.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Data inactivare", ;
|
||||
Name = "Header1", ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataInactivare.Text1' AS textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataInceputScpTva.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Inceput inregistrare TVA", ;
|
||||
Name = "Header1", ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataInceputScpTva.Text1' AS textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataInceputTvaInc.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Inceput TVA incasare", ;
|
||||
Name = "Header1", ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataInceputTvaInc.Text1' AS textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataReactivare.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Data reactivare", ;
|
||||
Name = "Header1", ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataReactivare.Text1' AS textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataSfarsitScpTva.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Sfarsit inregistrare TVA", ;
|
||||
Name = "Header1", ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataSfarsitScpTva.Text1' AS textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataSfarsitTvaInc.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Sfarsit TVA incasare", ;
|
||||
Name = "Header1", ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataSfarsitTvaInc.Text1' AS textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T.
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT '_grdbase1.cInactiv.Check1' AS checkbox WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "", ;
|
||||
@@ -2566,7 +2735,7 @@ 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 pentru verificare manuala / istoric verificari", ;
|
||||
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, ;
|
||||
Left = 12, ;
|
||||
@@ -2761,7 +2930,10 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
IF llGasit
|
||||
Replace firma With .denumire, adresa With .adresa, datatvamfin With TRANSFORM(.data), platitortvamfin With .tva, stare With .mesaj, cod WITH ALLTRIM(STR(.cui)), ;
|
||||
tvaincasare WITH .tvaincasare, splittva WITH .splittva, inactiv WITH .inactiv, ;
|
||||
sursa WITH NVL(.sursa, 'ANAF'), data_sursa WITH .data_sursa
|
||||
sursa WITH NVL(.sursa, 'ANAF'), data_sursa WITH .data_sursa, ;
|
||||
data_inceput_scptva WITH .data_inceput_ScpTVA, data_sfarsit_scptva WITH .data_sfarsit_ScpTVA, data_anul_imp_scptva WITH .data_anul_imp_ScpTVA, ;
|
||||
data_inceput_tvainc WITH .dataInceputTvaInc, data_sfarsit_tvainc WITH .dataSfarsitTvaInc, ;
|
||||
data_inactivare WITH .dataInactivare, data_reactivare WITH .dataReactivare
|
||||
ENDIF
|
||||
ENDWITH
|
||||
ENDSCAN && (m.lcCursorVerificareANAF)
|
||||
@@ -2933,7 +3105,10 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
LOCAL lcAliasTmp
|
||||
IF TYPE('crsVerificareParteneri.sursa') = 'U'
|
||||
lcAliasTmp = 'crsVPTmp' + Sys(2015)
|
||||
SELECT *, SPACE(20) AS sursa, {} AS data_sursa FROM crsVerificareParteneri INTO CURSOR (lcAliasTmp) READWRITE
|
||||
SELECT *, SPACE(20) AS sursa, {} AS data_sursa, ;
|
||||
{} AS data_inceput_scptva, {} AS data_sfarsit_scptva, {} AS data_anul_imp_scptva, ;
|
||||
{} AS data_inceput_tvainc, {} AS data_sfarsit_tvainc, {} AS data_inactivare, {} AS data_reactivare ;
|
||||
FROM crsVerificareParteneri INTO CURSOR (lcAliasTmp) READWRITE
|
||||
USE IN (SELECT('crsVerificareParteneri'))
|
||||
SELECT * FROM (lcAliasTmp) INTO CURSOR crsVerificareParteneri READWRITE
|
||||
USE IN (SELECT(lcAliasTmp))
|
||||
@@ -2958,6 +3133,22 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
lnRaspuns = VerificaCodFiscal(loDate, @lnOptiune, @loPartener)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE meniu_dblclick_partener
|
||||
*** Modificarea partenerului de pe inregistrarea curenta (id_part vine din lista trimisa la verificare)
|
||||
Local lcAlias, lnIdPart, loRec
|
||||
|
||||
lcAlias = This._grdbase1.RecordSource
|
||||
Select (m.lcAlias)
|
||||
lnIdPart = Iif(Type(m.lcAlias + '.id_part') = 'N', Nvl(Evaluate(m.lcAlias + '.id_part'), 0), 0)
|
||||
|
||||
If Empty(m.lnIdPart)
|
||||
AMESSAGEBOX('Partenerul nu poate fi identificat in nomenclator!', 0 + 48, _Screen.Caption)
|
||||
Return
|
||||
Endif
|
||||
|
||||
loRec = nom_parteneri_modifica(m.lnIdPart) && in onomenclatoare.prg
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE chkDuplicat.Click
|
||||
Thisform.FiltreAtentionari()
|
||||
ENDPROC
|
||||
@@ -3002,7 +3193,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE _grdbase1.Column2.Text1.DblClick
|
||||
Thisform.meniu_dblclick()
|
||||
Thisform.meniu_dblclick_partener()
|
||||
|
||||
ENDPROC
|
||||
|
||||
@@ -3011,7 +3202,7 @@ DEFINE CLASS frm_verificare_parteneri AS _frmbase OF "_frm_base.vcx"
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE _grdbase1.Column3.Text1.DblClick
|
||||
Thisform.meniu_dblclick()
|
||||
Thisform.meniu_dblclick_partener()
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE _grdbase1.Column5.Text1.DblClick
|
||||
@@ -3338,7 +3529,7 @@ DEFINE CLASS frm_verificare_parteneri_istoric AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataAnulImpScpTva.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Anulare scutire TVA", ;
|
||||
Caption = "Anulare inregistrare TVA", ;
|
||||
Name = "Header1", ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
@@ -3370,7 +3561,7 @@ DEFINE CLASS frm_verificare_parteneri_istoric AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataInceputScpTva.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Inceput scutire TVA", ;
|
||||
Caption = "Inceput inregistrare TVA", ;
|
||||
Name = "Header1", ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
@@ -3461,7 +3652,7 @@ DEFINE CLASS frm_verificare_parteneri_istoric AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
ADD OBJECT '_grdbase1.cDataSfarsitScpTva.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Sfarsit scutire TVA", ;
|
||||
Caption = "Sfarsit inregistrare TVA", ;
|
||||
Name = "Header1", ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
@@ -52,4 +52,6 @@ INTERESUL MEU ESTE SA SIMPLIFIC INTERFATA, SA FIE MAI EFICIENTA, SA NU FIE 2 FOR
|
||||
|
||||
20. ROAFACTURARE - FACTURA DIN COMANDA, COMANDA SE CONSIDERA FACTURATA DACA EXISTA FACTURI CU ACELEASI CANTITATI. AS VREA SA PUN MARKER DE FACTURAT PE COMANDA, CA SA NU MAI CAUT FACTURI - ESTE COSTISITOR. DOAR CA TREBUIE SA FII ATENT CA O COMANDA SE POATE FACTURA TOTAL/PARTIAL, SAU DIN MAI MULTE FACTURI, SAU SE POATE INCHIDE FORTAT. ACUM INCHIDEREA FORTATA ADAUGA CANTITATI NEGATIVE PE COMANDA, CA SA FACA CANTITATILE NEFACTURATE ZERO.
|
||||
|
||||
21. ROACONT - in formularul de verificare coduri fiscale, ar trebui sa fie si perioadele de tva, tva incasare, inactivitate, la fel ca in istoric, pentru ca utilizatorul sa nu mai caute altundeva. de asemenea, in messagebox pentru verificarea automata pe ANAF individuala ar trebui sa fie toate aceste informatii. sa se poata edita partenerul din formularul de verificare coduri fiscale prin dublu-click pe numele/codul fiscal al partenerului, similar cu formularul saft.
|
||||
21. ROACONT - in formularul de verificare coduri fiscale, ar trebui sa fie si perioadele de tva, tva incasare, inactivitate, la fel ca in istoric, pentru ca utilizatorul sa nu mai caute altundeva. de asemenea, in messagebox pentru verificarea automata pe ANAF individuala ar trebui sa fie toate aceste informatii. sa se poata edita partenerul din formularul de verificare coduri fiscale prin dublu-click pe numele/codul fiscal al partenerului, similar cu formularul saft.
|
||||
|
||||
22. ROADEF - la datele firmei, dupa completarea codului fiscal sa existe buton de preluare date de pe ANAF, similar cu cel din ROACONT partener nou. vezi ca trebuie completate localitatea si judetul cu id-uri. am inceput sa lucrez ceva - poate trebuie doar continuat si corectat - am ramas la judet si localitate.
|
||||
@@ -4541,7 +4541,8 @@ Procedure verificare_parteneri
|
||||
If Left(Lower(tcXMLParteneri), 5) = "<?xml"
|
||||
Xmltocursor(tcXMLParteneri, 'crsXMLParteneriVerificare') && denumire, cod_fiscal, [atribut_fiscal], [ales], [data]
|
||||
Else
|
||||
Create Cursor crsXMLParteneriVerificare (cod_fiscal C(30), denumire C(100), atribut_fiscal C(2), ales L, dataact D)
|
||||
*!* 22.08.2026 marius.mutu: id_part si data lipseau din cursor, iar Insert Into de mai jos esua tacut (ON ERROR) - lista ramanea goala
|
||||
Create Cursor crsXMLParteneriVerificare (cod_fiscal C(30), denumire C(100), atribut_fiscal C(2), ales L, id_part N(16), data D)
|
||||
lnNrParteneri = Getwordcount(tcXMLParteneri, "|")
|
||||
For lnPartener = 1 To lnNrParteneri
|
||||
lcItem = Getwordnum(tcXMLParteneri, m.lnPartener, "|")
|
||||
@@ -4771,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
|
||||
Local lnRaspuns, loPartener, lcProvenienta, lcPerioade
|
||||
|
||||
lcCodFiscal = Transform(m.tcCodFiscal)
|
||||
lcDenumire = Transform(m.tcDenumire)
|
||||
@@ -4790,6 +4791,24 @@ Function verifica_partener_show_info
|
||||
'(sursa: 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 = ''
|
||||
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) + ' - ' + ;
|
||||
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
|
||||
If !Empty(Nvl(loPartener.data_inceput_tvainc, {}))
|
||||
lcPerioade = m.lcPerioade + '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
|
||||
If !Empty(Nvl(loPartener.data_inactivare, {}))
|
||||
lcPerioade = m.lcPerioade + 'Inactivare: ' + Dtoc(loPartener.data_inactivare) + ;
|
||||
Iif(Empty(Nvl(loPartener.data_reactivare, {})), '', ' Reactivare: ' + Dtoc(loPartener.data_reactivare)) + crlf
|
||||
Endif
|
||||
Endif
|
||||
|
||||
lcText = 'VERIFICARE CIF: ' + m.lcCodFiscal + ' ' + m.lcDenumire + crlf + crlf + ;
|
||||
Alltrim(loPartener.firma) + crlf + ;
|
||||
Iif(!Empty(m.lcProvenienta), m.lcProvenienta + crlf, '') + ;
|
||||
@@ -4799,7 +4818,8 @@ Function verifica_partener_show_info
|
||||
'TVA Incasare: ' + Iif(m.llTvaIncasare, 'DA', 'NU') + crlf + ;
|
||||
'Split TVA: ' + Iif(m.llSplitTVA, 'DA', 'NU') + crlf + ;
|
||||
'Inactiv: ' + Iif(m.llInactiv, 'DA *** ATENTIE!', 'NU') + crlf + ;
|
||||
'----------------------------------------------------' + crlf + ;
|
||||
m.lcPerioade + ;
|
||||
'----------------------------------------------------' + crlf + ;
|
||||
'* Adresa: ' + Alltrim(loPartener.adresa) + crlf + ;
|
||||
'* Judet: ' + loPartener.judet + crlf + ;
|
||||
'* Nr. inregistrare la Registrul Comertului: ' + loPartener.regcom + crlf + ;
|
||||
|
||||
@@ -635,6 +635,7 @@ Define Class VerificareCod As Custom
|
||||
Local lcMfinanteURL, lcMfinanteParams, lcRomfastURL, llMFINURL, loMFIN, loVIES, lcProcedura, llInterogareAnaf
|
||||
Local lStare, lcApart, lcBloc, lcDataTVAMFIN, lcEtaj, lcLocalitate, lcNr, lcScara, lcStrada
|
||||
Local llPlatitorTVAMFIN, lnSucces, llTVAIncasare, llSplitTVA, llInactiv, ldData, lcSqlIstoric, lcSursa, ldDataSursa
|
||||
Local ldInceputScpTva, ldSfarsitScpTva, ldAnulImpScpTva, ldInceputTvaInc, ldSfarsitTvaInc, ldInactivare, ldReactivare
|
||||
|
||||
Local lcTipInterogare, llInterogareVies, llInterogareMfin
|
||||
If Empty(tcTipInterogare) Or Type('tcTipInterogare') <> 'C'
|
||||
@@ -691,11 +692,13 @@ Define Class VerificareCod As Custom
|
||||
llInactiv = .F.
|
||||
lcSursa = ''
|
||||
ldDataSursa = {}
|
||||
Store {} To ldInceputScpTva, ldSfarsitScpTva, ldAnulImpScpTva, ldInceputTvaInc, ldSfarsitTvaInc, ldInactivare, ldReactivare
|
||||
|
||||
Create Cursor cVerificareCod (Valid L, eroare c(250), cod V(100) Null, firma V(100), adresa V(250), judet V(100), ;
|
||||
regcom V(30), codpostal V(20), telefon V(30), fax V(30), datatvamfin V(30), platitortvamfin L, VIES L, PlatitorTVA L, ;
|
||||
stare V(100), strada V(100), nr V(25), localitate V(100), Bloc V(30), Scara V(10), Etaj V(10), Apart V(20), ;
|
||||
tvaincasare L, splittva L, inactiv L, sursa C(20), data_sursa D)
|
||||
tvaincasare L, splittva L, inactiv L, sursa C(20), data_sursa D, ;
|
||||
data_inceput_scptva D, data_sfarsit_scptva D, data_anul_imp_scptva D, data_inceput_tvainc D, data_sfarsit_tvainc D, data_inactivare D, data_reactivare D)
|
||||
|
||||
Cursortoxml("cVerificareCod", "lcXML", 1, 0, 0, "1")
|
||||
Select cVerificareCod
|
||||
@@ -738,6 +741,14 @@ Define Class VerificareCod As Custom
|
||||
llInactiv = loMFIN.Inactiv
|
||||
lcSursa = Nvl(loMFIN.sursa, 'ANAF')
|
||||
ldDataSursa = Nvl(loMFIN.data_sursa, {})
|
||||
*!* 22.08.2026 marius.mutu: perioadele vin doar de la ANAF; pe traseul mfinante.ro raman goale
|
||||
ldInceputScpTva = loMFIN.data_inceput_scptva
|
||||
ldSfarsitScpTva = loMFIN.data_sfarsit_scptva
|
||||
ldAnulImpScpTva = loMFIN.data_anul_imp_scptva
|
||||
ldInceputTvaInc = loMFIN.data_inceput_tvainc
|
||||
ldSfarsitTvaInc = loMFIN.data_sfarsit_tvainc
|
||||
ldInactivare = loMFIN.data_inactivare
|
||||
ldReactivare = loMFIN.data_reactivare
|
||||
Endif && llValid AND llInterogareMfin
|
||||
|
||||
If m.llValid And m.llRO And m.llInterogareMfin
|
||||
@@ -789,8 +800,10 @@ Define Class VerificareCod As Custom
|
||||
lcStrada = This.RemoveCharacters(m.lcStrada)
|
||||
|
||||
TRY
|
||||
Insert Into cVerificareCod(Valid, eroare, cod, firma, adresa, judet, regcom, codpostal, telefon, fax, datatvamfin, platitortvamfin, VIES, PlatitorTVA, stare, strada, nr, localitate, bloc, scara, etaj, apart, tvaincasare, splittva, inactiv, sursa, data_sursa) ;
|
||||
Values (m.llValid, Left(m.lcEroare, 250), m.lcVerificareCod, m.lcFirma, m.lcAdresa, m.lcJudet, m.lcRegCom, m.lcCodpostal, m.lcTelefon, m.lcFax, m.lcDataTVAMFIN, m.llPlatitorTVAMFIN, m.llVies, m.llPlatitorTVA, m.lcStare, m.lcStrada, m.lcNr, m.lcLocalitate, m.lcBloc, m.lcscara, m.lcetaj, m.lcapart, m.llTVAIncasare, m.llSplitTVA, m.llInactiv, m.lcSursa, m.ldDataSursa)
|
||||
Insert Into cVerificareCod(Valid, eroare, cod, firma, adresa, judet, regcom, codpostal, telefon, fax, datatvamfin, platitortvamfin, VIES, PlatitorTVA, stare, strada, nr, localitate, bloc, scara, etaj, apart, tvaincasare, splittva, inactiv, sursa, data_sursa, ;
|
||||
data_inceput_scptva, data_sfarsit_scptva, data_anul_imp_scptva, data_inceput_tvainc, data_sfarsit_tvainc, data_inactivare, data_reactivare) ;
|
||||
Values (m.llValid, Left(m.lcEroare, 250), m.lcVerificareCod, m.lcFirma, m.lcAdresa, m.lcJudet, m.lcRegCom, m.lcCodpostal, m.lcTelefon, m.lcFax, m.lcDataTVAMFIN, m.llPlatitorTVAMFIN, m.llVies, m.llPlatitorTVA, m.lcStare, m.lcStrada, m.lcNr, m.lcLocalitate, m.lcBloc, m.lcscara, m.lcetaj, m.lcapart, m.llTVAIncasare, m.llSplitTVA, m.llInactiv, m.lcSursa, m.ldDataSursa, ;
|
||||
m.ldInceputScpTva, m.ldSfarsitScpTva, m.ldAnulImpScpTva, m.ldInceputTvaInc, m.ldSfarsitTvaInc, m.ldInactivare, m.ldReactivare)
|
||||
|
||||
Select cVerificareCod
|
||||
Go Top
|
||||
@@ -889,6 +902,13 @@ Define Class VerificareCod As Custom
|
||||
loMFIN.Inactiv = inactiv
|
||||
loMFIN.sursa = Nvl(sursa, 'ANAF')
|
||||
loMFIN.data_sursa = Nvl(data_sursa, {})
|
||||
loMFIN.data_inceput_scptva = Nvl(data_inceput_ScpTVA, {})
|
||||
loMFIN.data_sfarsit_scptva = Nvl(data_sfarsit_ScpTVA, {})
|
||||
loMFIN.data_anul_imp_scptva = Nvl(data_anul_imp_ScpTVA, {})
|
||||
loMFIN.data_inceput_tvainc = Nvl(dataInceputTvaInc, {})
|
||||
loMFIN.data_sfarsit_tvainc = Nvl(dataSfarsitTvaInc, {})
|
||||
loMFIN.data_inactivare = Nvl(dataInactivare, {})
|
||||
loMFIN.data_reactivare = Nvl(dataReactivare, {})
|
||||
Endif
|
||||
Endif
|
||||
|
||||
@@ -1615,6 +1635,14 @@ Define Class VerificareCod As Custom
|
||||
AddProperty(loMFIN, "Inactiv", .F.)
|
||||
AddProperty(loMFIN, "sursa", '')
|
||||
AddProperty(loMFIN, "data_sursa", {})
|
||||
*!* 22.08.2026 marius.mutu: perioadele ANAF (scop TVA, TVA la incasare, inactivitate) duse pana in messagebox
|
||||
AddProperty(loMFIN, "data_inceput_scptva", {})
|
||||
AddProperty(loMFIN, "data_sfarsit_scptva", {})
|
||||
AddProperty(loMFIN, "data_anul_imp_scptva", {})
|
||||
AddProperty(loMFIN, "data_inceput_tvainc", {})
|
||||
AddProperty(loMFIN, "data_sfarsit_tvainc", {})
|
||||
AddProperty(loMFIN, "data_inactivare", {})
|
||||
AddProperty(loMFIN, "data_reactivare", {})
|
||||
Return loMFIN
|
||||
Endfunc && GetEmptyMfinObj
|
||||
Enddefine
|
||||
@@ -1687,7 +1715,8 @@ Function ANAF_VerificaCuiSingle
|
||||
|
||||
loHTTP = ANAF_CreeazaCerereANAF(m.lnCuiCautat, m.ldData, .F.)
|
||||
llRaspunsPrimit = .T.
|
||||
lcJsonString = Alltrim(loHTTP.responseText)
|
||||
*!* 22.08.2026 marius.mutu: raspunsul ANAF e UTF-8 - decodare din responseBody, altfel diacriticele ajung mojibake (Stare)
|
||||
lcJsonString = Alltrim(AnafDecodeResponseText(loHTTP))
|
||||
|
||||
If !Empty(m.lcJsonString) And Left(m.lcJsonString, 1) = '{'
|
||||
Use In (Select(m.lcAliasTemp))
|
||||
@@ -1869,6 +1898,64 @@ Function ANAF_SondaOpreste
|
||||
Return m.llOprita
|
||||
Endfunc && ANAF_SondaOpreste
|
||||
|
||||
*!* 22.08.2026 marius.mutu: literele romanesti fara corespondent in codepage-ul local devin '?' la conversie, deci se inlocuiesc intai cu litera simpla
|
||||
Function AnafTextLocal
|
||||
Lparameters tcText
|
||||
Local lcText
|
||||
lcText = Nvl(m.tcText, '')
|
||||
lcText = Strtran(m.lcText, Chr(196) + Chr(131), 'a')
|
||||
lcText = Strtran(m.lcText, Chr(196) + Chr(130), 'A')
|
||||
lcText = Strtran(m.lcText, Chr(200) + Chr(153), 's')
|
||||
lcText = Strtran(m.lcText, Chr(200) + Chr(152), 'S')
|
||||
lcText = Strtran(m.lcText, Chr(197) + Chr(159), 's')
|
||||
lcText = Strtran(m.lcText, Chr(197) + Chr(158), 'S')
|
||||
lcText = Strtran(m.lcText, Chr(200) + Chr(155), 't')
|
||||
lcText = Strtran(m.lcText, Chr(200) + Chr(154), 'T')
|
||||
lcText = Strtran(m.lcText, Chr(197) + Chr(163), 't')
|
||||
lcText = Strtran(m.lcText, Chr(197) + Chr(162), 'T')
|
||||
Return Strconv(Strconv(m.lcText, 12), 6)
|
||||
Endfunc
|
||||
|
||||
*!* 22.08.2026 marius.mutu: citeste raspunsul ANAF din responseBody (bytes bruti) printr-un ADODB.Stream cu Charset='utf-8', ca sa pastreze toate diacriticele romanesti; cade pe AnafTextLocal(responseText) doar daca ADODB.Stream nu poate fi folosit
|
||||
Function AnafDecodeResponseText
|
||||
Lparameters toHTTP
|
||||
Local lcText, loStream, loEx As Exception, llOk
|
||||
|
||||
If Type('gvANAF_FallbackTextLogat') = 'U'
|
||||
Public gvANAF_FallbackTextLogat
|
||||
gvANAF_FallbackTextLogat = .F.
|
||||
Endif
|
||||
|
||||
lcText = ''
|
||||
llOk = .F.
|
||||
Try
|
||||
loStream = Createobject('ADODB.Stream')
|
||||
loStream.Type = 1
|
||||
loStream.Open()
|
||||
loStream.Write(toHTTP.responseBody)
|
||||
loStream.Position = 0
|
||||
loStream.Type = 2
|
||||
loStream.Charset = 'utf-8'
|
||||
lcText = loStream.ReadText()
|
||||
loStream.Close()
|
||||
llOk = .T.
|
||||
Catch To loEx
|
||||
llOk = .F.
|
||||
Endtry
|
||||
|
||||
If !m.llOk
|
||||
If !gvANAF_FallbackTextLogat
|
||||
If Type('goLog') = 'O'
|
||||
goLog.Log('AnafDecodeResponseText: ADODB.Stream indisponibil, revenire pe responseText', 'AnafDecodeResponseText')
|
||||
Endif
|
||||
gvANAF_FallbackTextLogat = .T.
|
||||
Endif
|
||||
lcText = AnafTextLocal(Alltrim(toHTTP.responseText))
|
||||
Endif
|
||||
|
||||
Return m.lcText
|
||||
Endfunc
|
||||
|
||||
*********************************************
|
||||
*** Verificare coduri fiscale folosind serviciul web ANAF, cate 500 de coduri per interogare
|
||||
*********************************************
|
||||
@@ -2206,7 +2293,7 @@ Define Class VerificareANAF As Custom
|
||||
loHTTP.Open('POST', lcServer, .F.) && !!! POST e blocat de furnizor
|
||||
loHTTP.setRequestHeader("Content-Type", "application/json;")
|
||||
loHTTP.Send(lcSend)
|
||||
lcAlias = This.ProceseazaRaspunsHTTP(loHTTP.Status, loHTTP.responseText, m.tcAlias)
|
||||
lcAlias = This.ProceseazaRaspunsHTTP(loHTTP.Status, AnafDecodeResponseText(loHTTP), m.tcAlias)
|
||||
Catch To loEx
|
||||
This.cMesajANAF = loEx.Message
|
||||
Endtry
|
||||
@@ -2234,6 +2321,7 @@ Define Class VerificareANAF As Custom
|
||||
Local lcAlias, lcJsonString, loJsonObject, loEx As Exception, lcMesaj, llRaspunsInteles
|
||||
|
||||
lcAlias = Iif(!Empty(m.tcAlias) And Type('tcAlias') = "C", m.tcAlias, "crsANAF")
|
||||
*!* 22.08.2026 marius.mutu: decodarea UTF-8 se face in apelant (AnafDecodeResponseText), inainte de a ajunge aici
|
||||
lcJsonString = Alltrim(Nvl(m.tcResponseText, ''))
|
||||
goLog.Log('tnStatus: ' + Transform(m.tnStatus) + ' lcJsonString: ' + m.lcJsonString, 'ANAF_SincronWebService_PlatitorTva')
|
||||
|
||||
|
||||
194
utile/Teste/test_todo21_perioade_anaf.prg
Normal file
194
utile/Teste/test_todo21_perioade_anaf.prg
Normal file
@@ -0,0 +1,194 @@
|
||||
* test_todo21_perioade_anaf.prg
|
||||
* TODO #21: perioadele ANAF (scop TVA, TVA la incasare, inactivare) duse pana la utilizator.
|
||||
* Verifica lantul de date din banda B, care ruleaza integral din .prg (nu are nevoie de
|
||||
* write-back-ul binarelor): cursorul crsANAF -> Procedure ANAF -> oEntitate (VERIFICARE_CIF)
|
||||
* -> verifica_partener_show_info. Mesajul modal e capturat cu mock_amessagebox (gcMockUltimMesaj),
|
||||
* nu afisat, ca sa nu blocheze rularea headless.
|
||||
*
|
||||
* Codurile fiscale de test se aleg din istoric_coduri_fiscale (unul cu perioada de TVA la
|
||||
* incasare, unul cu inactivare), ca verificarea sa treaca prin fluxul real ANAF/cache.
|
||||
*
|
||||
* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\test_todo21_perioade_anaf.prg"
|
||||
* Verdict in log: cate un rand OK/FAIL per pas si un TOTAL la final.
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
SET DELETED ON
|
||||
SET EXACT ON
|
||||
SET CENTURY ON
|
||||
SET DATE DMY
|
||||
SET NULLDISPLAY TO ''
|
||||
CLOSE DATABASES
|
||||
|
||||
PUBLIC gcUILog, gcMockUltimMesaj, gnMockUltimTip, gnMockRaspuns, gnButon
|
||||
gcUILog = "D:\ROA\ROACONT\COMUN\utile\Teste\test_todo21_perioade_anaf_log.txt"
|
||||
gcMockUltimMesaj = ''
|
||||
gnMockUltimTip = 0
|
||||
gnMockRaspuns = 1
|
||||
gnButon = 0
|
||||
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog)
|
||||
|
||||
PUBLIC gnEsecuri
|
||||
gnEsecuri = 0
|
||||
|
||||
ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
||||
ON SHUTDOWN QUIT
|
||||
|
||||
TRY
|
||||
*-- VFP rezolva procedurile in ordinea in care au fost deschise fisierele (castiga PRIMUL),
|
||||
*-- deci mock-ul si umbra trebuie incarcate INAINTE ca test_init_env_auto sa incarce
|
||||
*-- oproceduri_comune.prg real. verifica_partener_show_info sta in ACELASI fisier cu
|
||||
*-- FUNCTION amessagebox, asa ca umbra e o copie a fisierului cu amessagebox redenumit:
|
||||
*-- apelul cade atunci pe mock si mesajul poate fi verificat fara dialog modal.
|
||||
LOCAL lcSrc, lcUmbra
|
||||
lcUmbra = ADDBS(SYS(2023)) + 'oproceduri_comune_umbra.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' + CHR(13) + CHR(10))
|
||||
STRTOFILE(lcSrc, lcUmbra)
|
||||
ERASE (FORCEEXT(lcUmbra, 'fxp'))
|
||||
|
||||
SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\ui_harness.prg" ADDITIVE
|
||||
SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\mock_amessagebox.prg" ADDITIVE
|
||||
SET PROCEDURE TO (lcUmbra) ADDITIVE
|
||||
|
||||
DO "D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
||||
IF gnHandle <= 0
|
||||
DO PrLogLocal WITH 'FAIL: conectare Oracle esuata (gnHandle=' + TRANSFORM(gnHandle) + ')'
|
||||
QUIT
|
||||
ENDIF
|
||||
DO PrLogLocal WITH 'mediu initializat, gnHandle=' + TRANSFORM(gnHandle)
|
||||
|
||||
DO PrLogLocal WITH 'umbra + mock amessagebox incarcate (' + lcUmbra + ')'
|
||||
|
||||
*-- proba: mock-ul chiar castiga la un apel direct?
|
||||
LOCAL lnProba
|
||||
lnProba = amessagebox('PING', 0 + 64, 'T')
|
||||
DO PrLogLocal WITH 'proba amessagebox a intors ' + TRANSFORM(lnProba)
|
||||
|
||||
*-- coduri fiscale reale: unul cu perioada de TVA la incasare, unul cu inactivare
|
||||
LOCAL lcSql, lcCodTvaInc, lcCodInactiv
|
||||
TEXT TO lcSql NOSHOW
|
||||
select cod_fiscal_n from (
|
||||
select cod_fiscal_n from istoric_coduri_fiscale
|
||||
where data_inceput_tvainc is not null and cod_fiscal_n is not null
|
||||
order by dataorav_anaf desc) where rownum <= 1
|
||||
ENDTEXT
|
||||
lcCodTvaInc = ''
|
||||
IF goExecutor.oExecuta(lcSql, 'crsT21a') AND USED('crsT21a') AND RECCOUNT('crsT21a') > 0
|
||||
lcCodTvaInc = ALLTRIM(TRANSFORM(NVL(crsT21a.cod_fiscal_n, 0)))
|
||||
ENDIF
|
||||
USE IN (SELECT('crsT21a'))
|
||||
|
||||
TEXT TO lcSql NOSHOW
|
||||
select cod_fiscal_n from (
|
||||
select cod_fiscal_n from istoric_coduri_fiscale
|
||||
where data_inactivare is not null and cod_fiscal_n is not null
|
||||
order by dataorav_anaf desc) where rownum <= 1
|
||||
ENDTEXT
|
||||
lcCodInactiv = ''
|
||||
IF goExecutor.oExecuta(lcSql, 'crsT21b') AND USED('crsT21b') AND RECCOUNT('crsT21b') > 0
|
||||
lcCodInactiv = ALLTRIM(TRANSFORM(NVL(crsT21b.cod_fiscal_n, 0)))
|
||||
ENDIF
|
||||
USE IN (SELECT('crsT21b'))
|
||||
|
||||
DO PrLogLocal WITH 'coduri de test: TVA incasare=[' + lcCodTvaInc + '] inactiv=[' + lcCodInactiv + ']'
|
||||
IF EMPTY(lcCodTvaInc) AND EMPTY(lcCodInactiv)
|
||||
DO PrLogLocal WITH 'FAIL: nu s-a gasit niciun cod fiscal de test in istoric_coduri_fiscale'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
DO PrVerificaCod WITH lcCodTvaInc, 'TVA la incasare'
|
||||
DO PrVerificaCod WITH lcCodInactiv, 'inactivare'
|
||||
|
||||
DO PrLogLocal WITH IIF(gnEsecuri = 0, 'TOTAL OK', 'TOTAL FAIL: ' + TRANSFORM(gnEsecuri) + ' pas(i)')
|
||||
CATCH TO loEx
|
||||
DO PrLogLocal WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ')'
|
||||
ENDTRY
|
||||
|
||||
QUIT
|
||||
|
||||
**********************************************************
|
||||
PROCEDURE PrVerificaCod
|
||||
LPARAMETERS tcCodFiscal, tcEticheta
|
||||
|
||||
LOCAL loVerificare, loEnt, ldData, lcXml, lnRaspuns, llArePerioada
|
||||
IF EMPTY(tcCodFiscal)
|
||||
DO PrLogLocal WITH 'SKIP ' + tcEticheta + ': cod fiscal negasit'
|
||||
RETURN
|
||||
ENDIF
|
||||
|
||||
ldData = DATE(gnAn, gnLuna, 1)
|
||||
loVerificare = CREATEOBJECT('verificarecod') && validare.prg
|
||||
lcXml = loVerificare.Verificare('CIF', tcCodFiscal, 'ANAF', ldData)
|
||||
|
||||
IF TYPE('loVerificare.oEntitate') <> 'O'
|
||||
DO PrLogLocal WITH 'FAIL ' + tcEticheta + ': oEntitate lipseste pentru ' + tcCodFiscal
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
RETURN
|
||||
ENDIF
|
||||
loEnt = loVerificare.oEntitate
|
||||
|
||||
*-- 1. cele 7 campuri noi exista pe obiectul intors de VERIFICARE_CIF
|
||||
LOCAL lnLipsa, lcCamp, laCampuri[7], lnI
|
||||
laCampuri[1] = 'data_inceput_scptva'
|
||||
laCampuri[2] = 'data_sfarsit_scptva'
|
||||
laCampuri[3] = 'data_anul_imp_scptva'
|
||||
laCampuri[4] = 'data_inceput_tvainc'
|
||||
laCampuri[5] = 'data_sfarsit_tvainc'
|
||||
laCampuri[6] = 'data_inactivare'
|
||||
laCampuri[7] = 'data_reactivare'
|
||||
lnLipsa = 0
|
||||
FOR lnI = 1 TO 7
|
||||
lcCamp = laCampuri[lnI]
|
||||
IF !PEMSTATUS(loEnt, lcCamp, 5)
|
||||
lnLipsa = lnLipsa + 1
|
||||
DO PrLogLocal WITH 'FAIL ' + tcEticheta + ': lipseste ' + lcCamp + ' din oEntitate'
|
||||
ENDIF
|
||||
ENDFOR
|
||||
IF lnLipsa = 0
|
||||
DO PrLogLocal WITH 'OK ' + tcEticheta + ': cele 7 campuri de perioada exista in oEntitate'
|
||||
ELSE
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
DO PrLogLocal WITH ' ' + tcCodFiscal + ' firma=[' + ALLTRIM(TRANSFORM(loEnt.firma)) + '] sursa=[' + ALLTRIM(TRANSFORM(loEnt.sursa)) + ']'
|
||||
DO PrLogLocal WITH ' scpTVA ' + DTOC(loEnt.data_inceput_scptva) + ' - ' + DTOC(loEnt.data_sfarsit_scptva) + ' anul.imp ' + DTOC(loEnt.data_anul_imp_scptva)
|
||||
DO PrLogLocal WITH ' tvaInc ' + DTOC(loEnt.data_inceput_tvainc) + ' - ' + DTOC(loEnt.data_sfarsit_tvainc)
|
||||
DO PrLogLocal WITH ' inactiv ' + DTOC(loEnt.data_inactivare) + ' reactivat ' + DTOC(loEnt.data_reactivare)
|
||||
|
||||
*-- 2. cel putin o perioada e completata (altfel testul nu dovedeste nimic despre transport)
|
||||
llArePerioada = !EMPTY(loEnt.data_inceput_scptva) OR !EMPTY(loEnt.data_inceput_tvainc) OR !EMPTY(loEnt.data_inactivare)
|
||||
IF llArePerioada
|
||||
DO PrLogLocal WITH 'OK ' + tcEticheta + ': cel putin o perioada e completata'
|
||||
ELSE
|
||||
DO PrLogLocal WITH 'FAIL ' + tcEticheta + ': toate perioadele sunt goale (transportul nu e dovedit)'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
*-- 3. mesajul de verificare individuala contine perioadele
|
||||
gcMockUltimMesaj = ''
|
||||
lnRaspuns = verifica_partener_show_info(loEnt, tcCodFiscal, 'TEST ' + tcEticheta, '')
|
||||
IF 'Perioada TVA' $ gcMockUltimMesaj OR 'Inactivare:' $ gcMockUltimMesaj
|
||||
DO PrLogLocal WITH 'OK ' + tcEticheta + ': mesajul contine perioadele'
|
||||
ELSE
|
||||
DO PrLogLocal WITH 'FAIL ' + tcEticheta + ': mesajul NU contine perioadele'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
DO PrLogLocal WITH '--- mesaj ---' + CHR(13) + CHR(10) + gcMockUltimMesaj + '--- sfarsit mesaj ---'
|
||||
ENDPROC
|
||||
|
||||
**********************************************************
|
||||
PROCEDURE PrLogLocal
|
||||
LPARAMETERS tcMsg
|
||||
LOCAL lcL
|
||||
SET SAFETY OFF
|
||||
lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '')
|
||||
STRTOFILE(lcL + TRANSFORM(tcMsg) + CHR(13) + CHR(10), gcUILog)
|
||||
ENDPROC
|
||||
|
||||
**********************************************************
|
||||
PROCEDURE PrErrLocal
|
||||
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
|
||||
DO PrLogLocal WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
|
||||
ENDPROC
|
||||
27
utile/Teste/todo21/mock_meniu_dblclick_deps.prg
Normal file
27
utile/Teste/todo21/mock_meniu_dblclick_deps.prg
Normal file
@@ -0,0 +1,27 @@
|
||||
* mock_meniu_dblclick_deps.prg - inlocuieste nom_parteneri_modifica (COMUN\programe\onomenclatoare.prg)
|
||||
* si VerificaCodFiscal (COMUN\programe\oproceduri_comune.prg) in testele banda C (dublu-click in
|
||||
* grid-ul de verificare coduri fiscale), ca sa nu deschida formulare modale reale. Ambele proceduri
|
||||
* sunt definite in fisiere DIFERITE de overificari.vc2 (apelantul), deci mock-ul castiga normal
|
||||
* 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).
|
||||
|
||||
PROCEDURE nom_parteneri_modifica
|
||||
LPARAMETERS tnId_Part, tnIdTipPart, tcTipPart, tnSpecial, tcMesaj
|
||||
IF TYPE('gnMockNomModCount') = 'N'
|
||||
gnMockNomModCount = gnMockNomModCount + 1
|
||||
ENDIF
|
||||
IF TYPE('gnMockNomModId') = 'N'
|
||||
gnMockNomModId = tnId_Part
|
||||
ENDIF
|
||||
RETURN NULL
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE VerificaCodFiscal
|
||||
LPARAMETERS toDate, lnOptiune, loPartener
|
||||
IF TYPE('gnMockVerifCodCount') = 'N'
|
||||
gnMockVerifCodCount = gnMockVerifCodCount + 1
|
||||
ENDIF
|
||||
loPartener = NULL
|
||||
RETURN 7
|
||||
ENDPROC
|
||||
280
utile/Teste/todo21/test_todo21_grid_dblclick.prg
Normal file
280
utile/Teste/todo21/test_todo21_grid_dblclick.prg
Normal file
@@ -0,0 +1,280 @@
|
||||
* 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).
|
||||
*
|
||||
* 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)
|
||||
*
|
||||
* 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".
|
||||
*
|
||||
* 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).
|
||||
|
||||
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_grid_dblclick_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 gnMockNomModCount, gnMockNomModId, gnMockVerifCodCount
|
||||
gnMockNomModCount = 0
|
||||
gnMockNomModId = 0
|
||||
gnMockVerifCodCount = 0
|
||||
|
||||
TRY
|
||||
SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\mock_amessagebox.prg" ADDITIVE
|
||||
SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\todo21\mock_meniu_dblclick_deps.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
|
||||
|
||||
*-- cod fiscal real cu perioada ANAF, pentru banda A2 (do_verifica)
|
||||
LOCAL lcSql, lcCodAnaf
|
||||
TEXT TO lcSql NOSHOW
|
||||
select cod_fiscal_n from (
|
||||
select cod_fiscal_n from istoric_coduri_fiscale
|
||||
where (data_inceput_tvainc is not null or data_inactivare is not null) and cod_fiscal_n is not null
|
||||
order by dataorav_anaf desc) where rownum <= 1
|
||||
ENDTEXT
|
||||
lcCodAnaf = ''
|
||||
IF goExecutor.oExecuta(lcSql, 'crsGD1') AND USED('crsGD1') AND RECCOUNT('crsGD1') > 0
|
||||
lcCodAnaf = ALLTRIM(TRANSFORM(NVL(crsGD1.cod_fiscal_n, 0)))
|
||||
ENDIF
|
||||
USE IN (SELECT('crsGD1'))
|
||||
DO PrLog WITH 'cod fiscal ANAF de test: [' + lcCodAnaf + ']'
|
||||
|
||||
*-- partener real activ, pentru banda C (dublu-click -> editare partener)
|
||||
LOCAL lnIdPartTest, lcCodFiscalPart, lcDenumirePart
|
||||
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
|
||||
lnIdPartTest = 0
|
||||
lcCodFiscalPart = ''
|
||||
lcDenumirePart = ''
|
||||
IF goExecutor.oExecuta(lcSql, 'crsGD2') AND USED('crsGD2') AND RECCOUNT('crsGD2') > 0
|
||||
lnIdPartTest = NVL(crsGD2.id_part, 0)
|
||||
lcCodFiscalPart = ALLTRIM(NVL(crsGD2.cod_fiscal, ''))
|
||||
lcDenumirePart = ALLTRIM(NVL(crsGD2.denumire, ''))
|
||||
ENDIF
|
||||
USE IN (SELECT('crsGD2'))
|
||||
DO PrLog WITH 'partener de test: id_part=' + TRANSFORM(lnIdPartTest) + ' cod=[' + lcCodFiscalPart + '] denumire=[' + lcDenumirePart + ']'
|
||||
|
||||
IF EMPTY(lcCodAnaf) OR lnIdPartTest = 0
|
||||
DO PrLog WITH 'FAIL: nu s-au gasit date de test (cod fiscal ANAF sau partener activ)'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
*-- cursorul EXACT ca in oproceduri_comune.prg:4584 (verificare_parteneri), fara sa apelam
|
||||
*-- acea procedura (Show(1) modal) - Load-ul formularului adauga singur cele 7 campuri noi
|
||||
CREATE CURSOR crsVerificareParteneri (ales L, denumire C(100) NULL, cod_fiscal C(30) NULL, Valid L NULL, ;
|
||||
firma C(100) NULL, cod C(100) NULL, adresa_roa C(250) NULL, adresa C(250) NULL, ;
|
||||
judet C(100) NULL, regcom C(30) NULL, codpostal C(20) NULL, telefon C(30) NULL, fax C(30) NULL, ;
|
||||
datatvamfin C(30) NULL, platitortvamfin L NULL, VIES L NULL, PlatitorTVA L NULL, eroare C(250) NULL, ;
|
||||
IsCIF L NULL, duplicat L, atribut_fiscal C(2), stare C(100), atentie C(100), cod_fiscalfro C(30) NULL, ;
|
||||
id_part N(16), tvaincasare L, splittva L, inactiv L, Data D)
|
||||
|
||||
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)
|
||||
UPDATE crsVerificareParteneri SET IsCIF = .T.
|
||||
GO TOP
|
||||
|
||||
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)
|
||||
|
||||
*=====================================================================
|
||||
* Banda A: grid cu 34 coloane (era 27), cele 7 noi legate pe cursorul real
|
||||
*=====================================================================
|
||||
IF goFormGD._grdbase1.ColumnCount = 34
|
||||
DO PrLog WITH 'OK A1: _grdbase1.ColumnCount = 34'
|
||||
ELSE
|
||||
DO PrLog WITH 'FAIL A1: ColumnCount = ' + TRANSFORM(goFormGD._grdbase1.ColumnCount) + ' (asteptat 34)'
|
||||
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
|
||||
laCol[1,1] = 'cDataInceputScpTva'
|
||||
laCol[1,2] = 'data_inceput_scptva'
|
||||
laCol[2,1] = 'cDataSfarsitScpTva'
|
||||
laCol[2,2] = 'data_sfarsit_scptva'
|
||||
laCol[3,1] = 'cDataAnulImpScpTva'
|
||||
laCol[3,2] = 'data_anul_imp_scptva'
|
||||
laCol[4,1] = 'cDataInceputTvaInc'
|
||||
laCol[4,2] = 'data_inceput_tvainc'
|
||||
laCol[5,1] = 'cDataSfarsitTvaInc'
|
||||
laCol[5,2] = 'data_sfarsit_tvainc'
|
||||
laCol[6,1] = 'cDataInactivare'
|
||||
laCol[6,2] = 'data_inactivare'
|
||||
laCol[7,1] = 'cDataReactivare'
|
||||
laCol[7,2] = 'data_reactivare'
|
||||
llColOk = .T.
|
||||
FOR lnI = 1 TO 7
|
||||
lcNume = laCol[lnI, 1]
|
||||
IF !PEMSTATUS(goFormGD._grdbase1, lcNume, 5)
|
||||
llColOk = .F.
|
||||
DO PrLog WITH 'FAIL A3: coloana ' + lcNume + ' nu exista ca membru al _grdbase1'
|
||||
LOOP
|
||||
ENDIF
|
||||
lcSrc = LOWER(EVALUATE('goFormGD._grdbase1.' + lcNume + '.ControlSource'))
|
||||
IF !('crsverificareparteneri.' + laCol[lnI, 2] $ lcSrc)
|
||||
llColOk = .F.
|
||||
DO PrLog WITH 'FAIL A3: ' + lcNume + ' ControlSource=[' + lcSrc + '] asteptat crsverificareparteneri.' + laCol[lnI, 2]
|
||||
ENDIF
|
||||
ENDFOR
|
||||
IF llColOk
|
||||
DO PrLog WITH 'OK A3: cele 7 coloane noi exista pe binarul curent, cu ControlSource corect'
|
||||
ELSE
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
*-- do_verifica cu chkANAF fortat .T. in Init -> ramura serviciu web ANAF (banda A2)
|
||||
goFormGD.do_verifica(.F., .T., .F.)
|
||||
DO PrLog WITH 'do_verifica rulat (tlValidare=.F. tlMFIN=.T. tlVIES=.F.)'
|
||||
|
||||
SELECT crsVerificareParteneri
|
||||
LOCATE FOR cod_fiscal = lcCodAnaf
|
||||
IF FOUND()
|
||||
LOCAL llArePerioada
|
||||
llArePerioada = !EMPTY(crsVerificareParteneri.data_inceput_scptva) OR ;
|
||||
!EMPTY(crsVerificareParteneri.data_inceput_tvainc) OR ;
|
||||
!EMPTY(crsVerificareParteneri.data_inactivare)
|
||||
IF llArePerioada
|
||||
DO PrLog WITH 'OK A2: do_verifica a completat cel putin o perioada pentru ' + lcCodAnaf
|
||||
ELSE
|
||||
DO PrLog WITH 'FAIL A2: nicio perioada completata pentru ' + lcCodAnaf + ' dupa do_verifica'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
DO PrLog WITH ' scpTVA ' + DTOC(crsVerificareParteneri.data_inceput_scptva) + '-' + DTOC(crsVerificareParteneri.data_sfarsit_scptva) + ;
|
||||
' tvaInc ' + DTOC(crsVerificareParteneri.data_inceput_tvainc) + '-' + DTOC(crsVerificareParteneri.data_sfarsit_tvainc) + ;
|
||||
' inactiv ' + DTOC(crsVerificareParteneri.data_inactivare) + ' reactivat ' + DTOC(crsVerificareParteneri.data_reactivare)
|
||||
ELSE
|
||||
DO PrLog WITH 'FAIL A2: randul de test ' + lcCodAnaf + ' nu mai exista in cursor'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
*=====================================================================
|
||||
* Banda C: dublu-click pe coloanele ROA (denumire/cod fiscal) -> editare partener;
|
||||
* coloanele ANAF (firma/cod) raman pe meniul de verificare
|
||||
*=====================================================================
|
||||
SELECT crsVerificareParteneri
|
||||
LOCATE FOR id_part = lnIdPartTest
|
||||
|
||||
gnMockNomModCount = 0
|
||||
gnMockNomModId = 0
|
||||
gnMockVerifCodCount = 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) + ')'
|
||||
ELSE
|
||||
DO PrLog WITH 'FAIL C1: Column2 DblClick - nom_mod count=' + TRANSFORM(gnMockNomModCount) + ' id=' + TRANSFORM(gnMockNomModId) + ' verifcod count=' + TRANSFORM(gnMockVerifCodCount)
|
||||
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
|
||||
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'
|
||||
ELSE
|
||||
DO PrLog WITH 'FAIL C3: Column5 DblClick - verifcod count=' + TRANSFORM(gnMockVerifCodCount) + ' nom_mod count=' + TRANSFORM(gnMockNomModCount)
|
||||
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
|
||||
SELECT crsVerificareParteneri
|
||||
LOCATE FOR cod_fiscal = 'RO9999999'
|
||||
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'
|
||||
ELSE
|
||||
DO PrLog WITH 'FAIL C5: id_part gol - nom_mod count=' + TRANSFORM(gnMockNomModCount) + ' mesaj=[' + gcMockUltimMesaj + ']'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
goFormGD.Release()
|
||||
|
||||
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 tnError, tcMessage, tcProgram, tnLineNo
|
||||
DO PrLog WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
|
||||
ENDPROC
|
||||
164
utile/Teste/todo21/test_todo21_jurnal_data_factura.prg
Normal file
164
utile/Teste/todo21/test_todo21_jurnal_data_factura.prg
Normal file
@@ -0,0 +1,164 @@
|
||||
* test_todo21_jurnal_data_factura.prg
|
||||
* TODO #21, banda D: verificarea codurilor fiscale la DATA FACTURII in jurnalele de TVA
|
||||
* (Clase\ovanzcump.vc2 - frm_regcump2010/frm_regcump2025/frm_regvanz2010/frm_regvanz2025.do_verifica).
|
||||
*
|
||||
* Optiunea 3 din meniul XMENU ("VERIFICA TOTI PARTENERII LA DATA FACTURII - ANAF") deschide un
|
||||
* popup interactiv (ACTIVATE POPUP, proceduri_comune.prg:XMENU) care asteapta o tasta - nu poate
|
||||
* fi condus headless fara sa se conduca simularea unui formular de jurnal intreg (ovanzcump.vc2,
|
||||
* fara niciun harness existent, fisier text de 1.9 MB). Testul verifica deci:
|
||||
* 1. RUNTIME - cele doua ramuri de SELECT (optiunea 3 cu data facturii / restul optiunilor fara
|
||||
* data), copiate LITERAL din Clase\ovanzcump.vc2 (frm_regcump2010.do_verifica), rulate pe un
|
||||
* cursor `actcv` construit local: optiunea 3 pastreaza cate un rand PER DATA DE DOCUMENT
|
||||
* (acelasi partener, doua facturi in date diferite -> doua randuri), optiunea implicita
|
||||
* colapseaza pe partener (un singur rand), exact cauza pentru care s-a cerut punctul 4 din
|
||||
* TODO #21 (partenerul care isi schimba starea TVA in cursul lunii).
|
||||
* 2. STATIC - textul optiunii 3 de meniu si fragmentul "dataact As data" exista in TOATE cele
|
||||
* 4 metode (frm_regcump2010/2025, frm_regvanz2010/2025), citind Clase\ovanzcump.vc2 curent
|
||||
* de pe disc (dovada ca write-back-ul a dus modificarea in toate cele 4 locuri, nu doar in
|
||||
* cea testata la pasul 1).
|
||||
* Verificarea prin UI reala (meniul XMENU, formularul de jurnal) ramane de facut manual in IDE.
|
||||
*
|
||||
* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\todo21\test_todo21_jurnal_data_factura.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_jurnal_data_factura_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
|
||||
|
||||
TRY
|
||||
*=====================================================================
|
||||
* Pasul 1: comportamentul SELECT-urilor, copiate literal din
|
||||
* Clase\ovanzcump.vc2:39304-39318 (frm_regcump2010.do_verifica)
|
||||
*=====================================================================
|
||||
CREATE CURSOR actcv (id_part N(16), cod_fiscal C(30), denumire C(100), dataact D)
|
||||
INSERT INTO actcv VALUES (5001, 'RO12345671', 'PARTENER SCHIMBAT TVA SRL', {^2026-08-05})
|
||||
INSERT INTO actcv VALUES (5001, 'RO12345671', 'PARTENER SCHIMBAT TVA SRL', {^2026-08-22})
|
||||
INSERT INTO actcv VALUES (5002, 'RO12345672', 'PARTENER FIX SRL', {^2026-08-10})
|
||||
|
||||
LOCAL lcWhere
|
||||
lcWhere = ".T."
|
||||
|
||||
*-- optiunea 3: verificare la data facturii
|
||||
Select Distinct id_part, cod_fiscal, denumire, dataact As data, Iif(Left(Upper(cod_fiscal), 2) = "RO", "RO", " ") As ATRIBUT_FISCAL, .T. As IsCIF, .F. As codvalid ;
|
||||
From actcv ;
|
||||
Where &lcWhere ;
|
||||
Into Cursor crsOptiunea3 ;
|
||||
Order By denumire, cod_fiscal ;
|
||||
Readwrite
|
||||
|
||||
*-- optiunea implicita (azi/data 1 a lunii): fara data facturii
|
||||
Select Distinct id_part, cod_fiscal, denumire, Iif(Left(Upper(cod_fiscal), 2) = "RO", "RO", " ") As ATRIBUT_FISCAL, .T. As IsCIF, .F. As codvalid ;
|
||||
From actcv ;
|
||||
Where &lcWhere ;
|
||||
Into Cursor crsOptiunea2 ;
|
||||
Order By denumire, cod_fiscal ;
|
||||
Readwrite
|
||||
|
||||
IF RECCOUNT('crsOptiunea3') = 3
|
||||
DO PrLog WITH 'OK D1: optiunea 3 (data facturii) pastreaza 3 randuri - cate unul per data de document'
|
||||
ELSE
|
||||
DO PrLog WITH 'FAIL D1: optiunea 3 a dat ' + TRANSFORM(RECCOUNT('crsOptiunea3')) + ' randuri (asteptat 3)'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
IF RECCOUNT('crsOptiunea2') = 2
|
||||
DO PrLog WITH 'OK D2: optiunea implicita colapseaza pe partener - 2 randuri (5001 o singura data)'
|
||||
ELSE
|
||||
DO PrLog WITH 'FAIL D2: optiunea implicita a dat ' + TRANSFORM(RECCOUNT('crsOptiunea2')) + ' randuri (asteptat 2)'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
*-- id_part si data corecte pe fiecare rand din optiunea 3 (regasite dupa data, nu dupa recno)
|
||||
LOCAL llDataOk
|
||||
llDataOk = .T.
|
||||
SELECT crsOptiunea3
|
||||
LOCATE FOR id_part = 5001 AND data = {^2026-08-05}
|
||||
llDataOk = llDataOk AND FOUND()
|
||||
LOCATE FOR id_part = 5001 AND data = {^2026-08-22}
|
||||
llDataOk = llDataOk AND FOUND()
|
||||
LOCATE FOR id_part = 5002 AND data = {^2026-08-10}
|
||||
llDataOk = llDataOk AND FOUND()
|
||||
IF llDataOk
|
||||
DO PrLog WITH 'OK D3: fiecare rand din optiunea 3 are id_part si data (=dataact) corecte'
|
||||
ELSE
|
||||
DO PrLog WITH 'FAIL D3: cel putin o combinatie id_part/data lipseste din crsOptiunea3'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
*-- id_part completat si pe optiunea implicita (banda C3, in acelasi SELECT)
|
||||
SELECT crsOptiunea2
|
||||
LOCATE FOR EMPTY(NVL(id_part, 0))
|
||||
IF !FOUND()
|
||||
DO PrLog WITH 'OK D4: id_part completat pe toate randurile din optiunea implicita'
|
||||
ELSE
|
||||
DO PrLog WITH 'FAIL D4: exista randuri fara id_part in optiunea implicita'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
USE IN (SELECT('crsOptiunea3'))
|
||||
USE IN (SELECT('crsOptiunea2'))
|
||||
USE IN (SELECT('actcv'))
|
||||
|
||||
*=====================================================================
|
||||
* Pasul 2: verificare statica - toate cele 4 metode au optiunea 3 de meniu si
|
||||
* SELECT-ul cu "dataact As data" (dovada ca write-back-ul a atins toate cele 4 locuri)
|
||||
*=====================================================================
|
||||
LOCAL lcSrc
|
||||
lcSrc = FILETOSTR("D:\ROA\ROACONT\Clase\ovanzcump.vc2")
|
||||
DO PrLog WITH 'lungime Clase\ovanzcump.vc2 (text curent de pe disc) = ' + TRANSFORM(LEN(lcSrc)) + ' octeti'
|
||||
|
||||
LOCAL lnAparitiiMeniu, lnAparitiiSelect
|
||||
lnAparitiiMeniu = OCCURS('VERIFICA TOTI PARTENERII LA DATA FACTURII - ANAF', lcSrc)
|
||||
lnAparitiiSelect = OCCURS('dataact As data', lcSrc)
|
||||
|
||||
IF lnAparitiiMeniu = 4
|
||||
DO PrLog WITH 'OK D5: optiunea 3 de meniu apare de 4 ori in ovanzcump.vc2 (cate una per jurnal)'
|
||||
ELSE
|
||||
DO PrLog WITH 'FAIL D5: optiunea 3 de meniu apare de ' + TRANSFORM(lnAparitiiMeniu) + ' ori (asteptat 4)'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
IF lnAparitiiSelect = 4
|
||||
DO PrLog WITH 'OK D6: fragmentul "dataact As data" apare de 4 ori in ovanzcump.vc2 (cate unul per jurnal)'
|
||||
ELSE
|
||||
DO PrLog WITH 'FAIL D6: fragmentul "dataact As data" apare de ' + TRANSFORM(lnAparitiiSelect) + ' ori (asteptat 4)'
|
||||
gnEsecuri = gnEsecuri + 1
|
||||
ENDIF
|
||||
|
||||
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 tnError, tcMessage, tcProgram, tnLineNo
|
||||
DO PrLog WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
|
||||
ENDPROC
|
||||
Reference in New Issue
Block a user