storno eFactura: forma rearanjata (butoane jos, meniu Trimite, stare pe un rand, redimensionabila), sume vizibile in grid (V(250)), fara SET STEP ON in borderou; e2e adaptat (mock xmenu)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WsxyCHJYL6W9MZ6FPnH8ax
This commit is contained in:
@@ -6000,7 +6000,7 @@ DEFINE CLASS anaf_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
lcAvertizare = m.lcAvertizare + 'Documentul original e nota de credit / are total negativ - stornarea va produce valori pozitive.' + Chr(13) + Chr(10)
|
||||
ENDIF
|
||||
|
||||
CREATE CURSOR crsStornoDetalii (element C(60), original C(250), nou C(250), tip N(1))
|
||||
CREATE CURSOR crsStornoDetalii (element C(60), original V(250), nou V(250), tip N(1))
|
||||
|
||||
loForma = NEWOBJECT('frm_storno_efactura', 'anaf_efactura.vcx', '', ;
|
||||
Thisform.oAnaf.AnafeFacturaServer, m.lnId, m.lcXmlOriginal, m.lcNumarOriginal, m.ldIssueDate, ;
|
||||
@@ -6557,7 +6557,6 @@ DEFINE CLASS anaf_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
If !Empty(m.lnOptiune)
|
||||
plFaraValidareEFactura = (m.lnOptiune = 2)
|
||||
llNuTrimiteEFacturaANAF = (m.lnOptiune = 3)
|
||||
SET STEP ON
|
||||
llSucces = Thisform.oAnaf.TrimiteFacturi(m.llNuTrimiteEFacturaANAF)
|
||||
Thisform.pgfeFactura.page1.grdFacturiEmise.Refresh()
|
||||
Endif
|
||||
@@ -15509,7 +15508,7 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
||||
*< OBJECTDATA: ObjPath="But_renunt1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="lblAntet" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="lblClient" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="lblNumar" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="txtNumar" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="lblMotiv" UniqueID="" Timestamp="" />
|
||||
@@ -15523,8 +15522,7 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
*< OBJECTDATA: ObjPath="grdModificari.cNou.Header1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="grdModificari.cNou.Text1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="lblStare" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="edtStatus" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="cmdValideaza" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="cmdGenereaza" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="cmdPdf" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="cmdTrimite" UniqueID="" Timestamp="" />
|
||||
|
||||
@@ -15533,6 +15531,7 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
*m: regenereazaxml
|
||||
*m: setstare
|
||||
*m: umplegrid
|
||||
*m: valideaza
|
||||
*p: pcciffirma
|
||||
*p: pcclient
|
||||
*p: pcfisierstorno
|
||||
@@ -15551,18 +15550,20 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
*</DefinedPropArrayMethod>
|
||||
|
||||
*<PropValue>
|
||||
BorderStyle = 1
|
||||
BorderStyle = 3
|
||||
DoCreate = .T.
|
||||
Height = 560
|
||||
Height = 480
|
||||
MinHeight = 480
|
||||
MinWidth = 760
|
||||
Name = "frm_storno_efactura"
|
||||
pcciffirma = ''
|
||||
pcclient = ''
|
||||
pcfisierstorno = ''
|
||||
pcmoneda = ''
|
||||
pcmotiv = ''
|
||||
pcnumarnou = ''
|
||||
pcnumaroriginal = ''
|
||||
pcxmloriginal = ''
|
||||
pcciffirma =
|
||||
pcclient =
|
||||
pcfisierstorno =
|
||||
pcmoneda =
|
||||
pcmotiv =
|
||||
pcnumarnou =
|
||||
pcnumaroriginal =
|
||||
pcxmloriginal =
|
||||
pddataoriginal = {}
|
||||
plb2c = .F.
|
||||
pltest = .F.
|
||||
@@ -15591,15 +15592,19 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
<memberdata name="regenereazaxml" display="RegenereazaXml"/>
|
||||
<memberdata name="setstare" display="SetStare"/>
|
||||
<memberdata name="umplegrid" display="UmpleGrid"/>
|
||||
<memberdata name="valideaza" display="Valideaza"/>
|
||||
</VFPData>
|
||||
_shape1.Anchor = 10
|
||||
_shape1.Height = 29
|
||||
_shape1.Left = 0
|
||||
_shape1.Name = "_shape1"
|
||||
_shape1.Top = 0
|
||||
_shape1.Width = 760
|
||||
_shape2.Anchor = 9
|
||||
_shape2.Left = 701
|
||||
_shape2.Name = "_shape2"
|
||||
_shape2.Top = 0
|
||||
Lb_titlu_alb_b121.Anchor = 3
|
||||
Lb_titlu_alb_b121.Caption = "Stornare eFactura"
|
||||
Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121"
|
||||
BUT_TERMIN1.Name = "BUT_TERMIN1"
|
||||
@@ -15614,78 +15619,73 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
Top = 2
|
||||
*< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" />
|
||||
|
||||
ADD OBJECT 'cmdGenereaza' AS cmd_executa WITH ;
|
||||
Anchor = 6, ;
|
||||
Caption = "\<Genereaza XML", ;
|
||||
Height = 30, ;
|
||||
Left = 12, ;
|
||||
Name = "cmdGenereaza", ;
|
||||
TabIndex = 4, ;
|
||||
Top = 438, ;
|
||||
Width = 140
|
||||
*< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" />
|
||||
|
||||
ADD OBJECT 'cmdPdf' AS cmd_executa WITH ;
|
||||
Anchor = 6, ;
|
||||
Caption = "\<PDF ANAF", ;
|
||||
Height = 30, ;
|
||||
Left = 160, ;
|
||||
Name = "cmdPdf", ;
|
||||
TabIndex = 4, ;
|
||||
Top = 512, ;
|
||||
TabIndex = 5, ;
|
||||
Top = 438, ;
|
||||
Width = 140
|
||||
*< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" />
|
||||
|
||||
ADD OBJECT 'cmdTrimite' AS cmd_executa WITH ;
|
||||
Anchor = 12, ;
|
||||
Caption = "\<Trimite la ANAF", ;
|
||||
FontBold = .T., ;
|
||||
ForeColor = 0,128,0, ;
|
||||
Height = 30, ;
|
||||
Left = 588, ;
|
||||
Left = 568, ;
|
||||
Name = "cmdTrimite", ;
|
||||
TabIndex = 5, ;
|
||||
Top = 512, ;
|
||||
Width = 160
|
||||
TabIndex = 6, ;
|
||||
Top = 438, ;
|
||||
Width = 180
|
||||
*< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" />
|
||||
|
||||
ADD OBJECT 'cmdValideaza' AS cmd_executa WITH ;
|
||||
Caption = "\<Valideaza", ;
|
||||
Height = 30, ;
|
||||
Left = 12, ;
|
||||
Name = "cmdValideaza", ;
|
||||
TabIndex = 3, ;
|
||||
Top = 512, ;
|
||||
Width = 140
|
||||
*< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" />
|
||||
|
||||
ADD OBJECT 'edtStatus' AS _editbox WITH ;
|
||||
Height = 50, ;
|
||||
Left = 220, ;
|
||||
Name = "edtStatus", ;
|
||||
ReadOnly = .T., ;
|
||||
Top = 448, ;
|
||||
Width = 528
|
||||
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="editbox" />
|
||||
|
||||
ADD OBJECT 'grdModificari' AS _grdbase WITH ;
|
||||
Anchor = 15, ;
|
||||
ColumnCount = 3, ;
|
||||
DeleteMark = .F., ;
|
||||
FontSize = 10, ;
|
||||
Height = 280, ;
|
||||
Height = 252, ;
|
||||
Left = 12, ;
|
||||
Name = "grdModificari", ;
|
||||
Panel = 1, ;
|
||||
ReadOnly = .T., ;
|
||||
RecordSource = "crsStornoDetalii", ;
|
||||
RowHeight = 19, ;
|
||||
TabIndex = 6, ;
|
||||
Top = 164, ;
|
||||
TabIndex = 3, ;
|
||||
Top = 134, ;
|
||||
Width = 736, ;
|
||||
Column1.ControlSource = "crsStornoDetalii.element", ;
|
||||
Column1.FontSize = 10, ;
|
||||
Column1.Name = "cElement", ;
|
||||
Column1.ReadOnly = .T., ;
|
||||
Column1.Width = 300, ;
|
||||
Column1.Width = 330, ;
|
||||
Column2.Alignment = 1, ;
|
||||
Column2.ControlSource = "crsStornoDetalii.original", ;
|
||||
Column2.FontSize = 10, ;
|
||||
Column2.Name = "cOriginal", ;
|
||||
Column2.ReadOnly = .T., ;
|
||||
Column2.Width = 200, ;
|
||||
Column2.Width = 180, ;
|
||||
Column3.Alignment = 1, ;
|
||||
Column3.ControlSource = "crsStornoDetalii.nou", ;
|
||||
Column3.FontSize = 10, ;
|
||||
Column3.Name = "cNou", ;
|
||||
Column3.ReadOnly = .T., ;
|
||||
Column3.Width = 200
|
||||
Column3.Width = 180
|
||||
*< END OBJECT: ClassLib="_grd_base.vcx" BaseClass="grid" />
|
||||
|
||||
ADD OBJECT 'grdModificari.cElement.Header1' AS header WITH ;
|
||||
@@ -15743,84 +15743,88 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
SelectedBackColor = 100,185,255
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'lblAntet' AS _label WITH ;
|
||||
AutoSize = .F., ;
|
||||
Caption = "", ;
|
||||
Height = 46, ;
|
||||
Left = 12, ;
|
||||
Name = "lblAntet", ;
|
||||
Top = 38, ;
|
||||
Width = 736, ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" />
|
||||
|
||||
ADD OBJECT 'lblAvertisment' AS _label WITH ;
|
||||
Anchor = 11, ;
|
||||
AutoSize = .F., ;
|
||||
Caption = "", ;
|
||||
ForeColor = 192,0,0, ;
|
||||
Height = 40, ;
|
||||
Height = 36, ;
|
||||
Left = 12, ;
|
||||
Name = "lblAvertisment", ;
|
||||
Top = 118, ;
|
||||
Top = 90, ;
|
||||
Width = 736, ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" />
|
||||
|
||||
ADD OBJECT 'lblClient' AS _label WITH ;
|
||||
Anchor = 1, ;
|
||||
AutoSize = .F., ;
|
||||
Caption = "", ;
|
||||
Height = 18, ;
|
||||
Left = 12, ;
|
||||
Name = "lblClient", ;
|
||||
Top = 34, ;
|
||||
Width = 736
|
||||
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" />
|
||||
|
||||
ADD OBJECT 'lblMotiv' AS _label WITH ;
|
||||
Anchor = 1, ;
|
||||
Caption = "Motiv (optional):", ;
|
||||
Left = 270, ;
|
||||
Name = "lblMotiv", ;
|
||||
Top = 90
|
||||
Top = 62
|
||||
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" />
|
||||
|
||||
ADD OBJECT 'lblNumar' AS _label WITH ;
|
||||
Anchor = 1, ;
|
||||
Caption = "Numar storno:", ;
|
||||
Left = 12, ;
|
||||
Name = "lblNumar", ;
|
||||
Top = 90
|
||||
Top = 62
|
||||
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" />
|
||||
|
||||
ADD OBJECT 'lblStare' AS _label WITH ;
|
||||
Anchor = 14, ;
|
||||
AutoSize = .F., ;
|
||||
Caption = "Nevalidat", ;
|
||||
FontBold = .T., ;
|
||||
ForeColor = 96,96,96, ;
|
||||
Height = 34, ;
|
||||
Left = 12, ;
|
||||
Name = "lblStare", ;
|
||||
Top = 452, ;
|
||||
Width = 200
|
||||
Top = 396, ;
|
||||
Width = 736, ;
|
||||
WordWrap = .T.
|
||||
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="label" />
|
||||
|
||||
ADD OBJECT 'txtMotiv' AS _textbox WITH ;
|
||||
Anchor = 11, ;
|
||||
ControlSource = "Thisform.pcmotiv", ;
|
||||
Format = "!K", ;
|
||||
Height = 23, ;
|
||||
Left = 375, ;
|
||||
MaxLength = 200, ;
|
||||
Name = "txtMotiv", ;
|
||||
TabIndex = 2, ;
|
||||
Top = 87, ;
|
||||
Top = 59, ;
|
||||
Width = 373
|
||||
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'txtNumar' AS _textbox WITH ;
|
||||
Anchor = 1, ;
|
||||
ControlSource = "Thisform.pcnumarnou", ;
|
||||
Format = "!K", ;
|
||||
Height = 23, ;
|
||||
Left = 105, ;
|
||||
Name = "txtNumar", ;
|
||||
TabIndex = 1, ;
|
||||
Top = 87, ;
|
||||
Top = 59, ;
|
||||
Width = 150
|
||||
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
PROCEDURE Activate
|
||||
DODEFAULT()
|
||||
TRY
|
||||
This.cmdValideaza.SetFocus()
|
||||
CATCH
|
||||
ENDTRY
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE EnableButoane
|
||||
LPARAMETERS tlEnable
|
||||
This.cmdValideaza.Enabled = m.tlEnable
|
||||
This.cmdGenereaza.Enabled = m.tlEnable
|
||||
This.cmdPdf.Enabled = m.tlEnable
|
||||
This.cmdTrimite.Enabled = m.tlEnable
|
||||
This.txtNumar.Enabled = m.tlEnable
|
||||
@@ -15832,6 +15836,7 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
LPARAMETERS toAnaf, tnIdEfactura, tcXmlOriginal, tcNumarOriginal, tdDataOriginal, ;
|
||||
tcClient, tcCifFirma, tnTotal, tcMoneda, tlTest, tlB2C, tcFisierStorno, tcNumarNou, ;
|
||||
tcAvertizare
|
||||
DODEFAULT()
|
||||
|
||||
This.poAnaf = toAnaf
|
||||
This.pnIdEfactura = tnIdEfactura
|
||||
@@ -15849,8 +15854,7 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
This.Caption = 'Stornare eFactura ' + m.tcNumarOriginal + ' - ' + IIF(m.tlTest, 'TEST', 'PRODUCTIE')
|
||||
This.Lb_titlu_alb_b121.Caption = This.Caption
|
||||
This.lblAntet.Caption = 'Factura ' + m.tcNumarOriginal + ' din ' + Dtoc(m.tdDataOriginal) + ' -> Storno' + Chr(13) + Chr(10) + ;
|
||||
'Client: ' + m.tcClient + ' CIF firma: ' + m.tcCifFirma + ' Moneda: ' + m.tcMoneda
|
||||
This.lblClient.Caption = 'Client: ' + m.tcClient + ' CIF: ' + m.tcCifFirma + ' Moneda: ' + m.tcMoneda
|
||||
This.lblAvertisment.Caption = m.tcAvertizare
|
||||
|
||||
This.grdModificari.SetAll("DynamicFontBold", "tip = 2", "Column")
|
||||
@@ -15870,8 +15874,7 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
llSucces = StornoEFacturaXML(This.pcXmlOriginal, m.lcNumarNou, m.lcNotaFinal, This.pcFisierStorno, @laModif, @lcMesaj)
|
||||
IF !m.llSucces
|
||||
This.edtStatus.Value = 'Eroare la regenerare: ' + m.lcMesaj
|
||||
This.SetStare(0)
|
||||
This.SetStare(0, 'Eroare la regenerare: ' + m.lcMesaj)
|
||||
RETURN .F.
|
||||
ENDIF
|
||||
This.UmpleGrid(@laModif)
|
||||
@@ -15879,27 +15882,32 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE SetStare
|
||||
LPARAMETERS tnStare
|
||||
LPARAMETERS tnStare, tcMesaj
|
||||
IF PCOUNT() < 2
|
||||
tcMesaj = ''
|
||||
ENDIF
|
||||
This.pnStare = m.tnStare
|
||||
This.cmdPdf.Enabled = .T.
|
||||
This.lblStare.ToolTipText = m.tcMesaj
|
||||
DO CASE
|
||||
CASE m.tnStare = 2
|
||||
* trimis - stare terminala (D26/D35)
|
||||
This.lblStare.Caption = 'Trimis'
|
||||
This.cmdValideaza.Enabled = .F.
|
||||
This.lblStare.Caption = IIF(Empty(m.tcMesaj), 'Trimis', m.tcMesaj)
|
||||
This.lblStare.ForeColor = RGB(0,64,160)
|
||||
This.cmdTrimite.Enabled = .F.
|
||||
This.txtNumar.Enabled = .F.
|
||||
This.txtMotiv.Enabled = .F.
|
||||
CASE m.tnStare = 1
|
||||
This.lblStare.Caption = 'Valid'
|
||||
This.cmdValideaza.Enabled = .T.
|
||||
This.lblStare.Caption = IIF(Empty(m.tcMesaj), 'Valid', m.tcMesaj)
|
||||
This.lblStare.ForeColor = RGB(0,128,0)
|
||||
This.cmdTrimite.Enabled = .T.
|
||||
This.txtNumar.Enabled = .T.
|
||||
This.txtMotiv.Enabled = .T.
|
||||
OTHERWISE
|
||||
This.lblStare.Caption = 'Nevalidat'
|
||||
This.cmdValideaza.Enabled = .T.
|
||||
This.cmdTrimite.Enabled = .F.
|
||||
* mesaj gol = nevalidat (gri), mesaj dat = eroare de validare/regenerare (rosu)
|
||||
This.lblStare.Caption = IIF(Empty(m.tcMesaj), 'Nevalidat', m.tcMesaj)
|
||||
This.lblStare.ForeColor = IIF(Empty(m.tcMesaj), RGB(96,96,96), RGB(192,0,0))
|
||||
This.cmdTrimite.Enabled = .T.
|
||||
This.txtNumar.Enabled = .T.
|
||||
This.txtMotiv.Enabled = .T.
|
||||
ENDCASE
|
||||
@@ -15919,6 +15927,34 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
This.grdModificari.Refresh()
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE Valideaza
|
||||
LOCAL llValid, lcMesajValid, loSrv, loExport
|
||||
IF !This.RegenereazaXml()
|
||||
RETURN .F.
|
||||
ENDIF
|
||||
loSrv = This.poAnaf
|
||||
This.EnableButoane(.F.)
|
||||
WAIT WINDOW 'Se valideaza...' NOWAIT
|
||||
loSrv.RefreshTokenAuto()
|
||||
loExport = CREATEOBJECT('ExportEFactura', .T., loSrv.cToken)
|
||||
llValid = m.loExport.ValidareEFacturaANAF(This.pcFisierStorno, @lcMesajValid)
|
||||
CLEAR TYPEAHEAD
|
||||
WAIT CLEAR
|
||||
This.EnableButoane(.T.)
|
||||
IF m.llValid
|
||||
This.SetStare(1)
|
||||
ELSE
|
||||
This.SetStare(0, IIF(Empty(m.lcMesajValid), 'Validare indisponibila - verificati tokenul/reteaua.', 'Invalid: ' + m.lcMesajValid))
|
||||
ENDIF
|
||||
RETURN m.llValid
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE cmdGenereaza.Click
|
||||
IF Thisform.RegenereazaXml()
|
||||
Thisform.SetStare(0, 'XML regenerat.')
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE cmdPdf.Click
|
||||
LOCAL lcXmlCurent, lcFisierPdf
|
||||
lcXmlCurent = Filetostr(Thisform.pcFisierStorno)
|
||||
@@ -15930,10 +15966,27 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE cmdTrimite.Click
|
||||
LOCAL lcMesajConf, loReturn, lcDirProcesat, lcFisierProcesat
|
||||
IF Thisform.pnStare <> 1
|
||||
LOCAL lcMesajConf, loReturn, lcDirProcesat, lcFisierProcesat, lnOptiune
|
||||
IF Thisform.pnStare = 2
|
||||
RETURN
|
||||
ENDIF
|
||||
lnOptiune = xmenu('\<Valideaza online si Trimite la ANAF;\<Trimite la ANAF fara validare;\<Doar valideaza online')
|
||||
DO CASE
|
||||
CASE m.lnOptiune = 1
|
||||
IF !Thisform.Valideaza()
|
||||
RETURN
|
||||
ENDIF
|
||||
CASE m.lnOptiune = 2
|
||||
IF !Thisform.RegenereazaXml()
|
||||
RETURN
|
||||
ENDIF
|
||||
CASE m.lnOptiune = 3
|
||||
Thisform.Valideaza()
|
||||
RETURN
|
||||
OTHERWISE
|
||||
RETURN
|
||||
ENDCASE
|
||||
|
||||
lcMesajConf = 'Trimiteti la ANAF (' + IIF(Thisform.plTest,'TEST','PRODUCTIE') + ') stornarea facturii ' + Thisform.pcNumarOriginal + ;
|
||||
' ca ' + ALLTRIM(Thisform.pcNumarNou) + ', total ' + Transform(Thisform.pnTotal) + ' ' + Thisform.pcMoneda + '? Operatia nu se poate anula.'
|
||||
IF AMESSAGEBOX(m.lcMesajConf, 4+32+256, _screen.Caption) <> 6
|
||||
@@ -15957,37 +16010,12 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
ENDTRY
|
||||
ENDIF
|
||||
goLog.Log('Storno eFactura: ' + Thisform.pcNumarOriginal + ' -> ' + ALLTRIM(Thisform.pcNumarNou) + ', index ' + loReturn.cIdIncarcare + ', ' + IIF(Thisform.plTest,'TEST','PRODUCTIE'))
|
||||
Thisform.edtStatus.Value = 'Trimis. Index incarcare ' + loReturn.cIdIncarcare + ' (' + IIF(Thisform.plTest,'TEST','PRODUCTIE') + '). ' + ;
|
||||
'Stergeti factura din ROA si emiteti factura corecta cu acelasi numar. Storno-ul apare in Trimise dupa descarcarea mesajelor.'
|
||||
Thisform.EnableButoane(.T.)
|
||||
Thisform.SetStare(2)
|
||||
Thisform.SetStare(2, 'Trimis. Index incarcare ' + loReturn.cIdIncarcare + ' (' + IIF(Thisform.plTest,'TEST','PRODUCTIE') + '). ' + ;
|
||||
'Stergeti factura din ROA si emiteti factura corecta cu acelasi numar. Storno-ul apare in Trimise dupa descarcarea mesajelor.')
|
||||
ELSE
|
||||
Thisform.edtStatus.Value = 'Eroare: ' + loReturn.cMesaj + '. Verificati in Trimise, dupa descarcare, inainte de a retrimite.'
|
||||
Thisform.EnableButoane(.T.)
|
||||
Thisform.SetStare(0)
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE cmdValideaza.Click
|
||||
LOCAL llValid, lcMesajValid, loSrv, loExport
|
||||
IF !Thisform.RegenereazaXml()
|
||||
RETURN
|
||||
ENDIF
|
||||
loSrv = Thisform.poAnaf
|
||||
Thisform.EnableButoane(.F.)
|
||||
WAIT WINDOW 'Se valideaza...' NOWAIT
|
||||
loSrv.RefreshTokenAuto()
|
||||
loExport = CREATEOBJECT('ExportEFactura', .T., loSrv.cToken)
|
||||
llValid = m.loExport.ValidareEFacturaANAF(Thisform.pcFisierStorno, @lcMesajValid)
|
||||
CLEAR TYPEAHEAD
|
||||
WAIT CLEAR
|
||||
Thisform.EnableButoane(.T.)
|
||||
IF m.llValid
|
||||
Thisform.edtStatus.Value = 'Valid.'
|
||||
Thisform.SetStare(1)
|
||||
ELSE
|
||||
Thisform.edtStatus.Value = IIF(Empty(m.lcMesajValid), 'Validare indisponibila - verificati tokenul/reteaua.', 'Invalid: ' + m.lcMesajValid)
|
||||
Thisform.SetStare(0)
|
||||
Thisform.SetStare(0, 'Eroare: ' + loReturn.cMesaj + '. Verificati in Trimise, dupa descarcare, inainte de a retrimite.')
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
|
||||
24
utile/Teste/storno/mock_xmenu_storno.prg
Normal file
24
utile/Teste/storno/mock_xmenu_storno.prg
Normal file
@@ -0,0 +1,24 @@
|
||||
* mock_xmenu_storno.prg - mock XMENU specific testului E2E storno (test_storno_e2e.prg).
|
||||
* Raspunde din coada PUBLIC gaXmenuQueue/gnXmenuQueuePos (populata de test inainte de fiecare
|
||||
* Click care deschide meniul cmdTrimite); coada goala -> 0 (echivalent Esc/renuntare la xmenu).
|
||||
* Logheaza toate apelurile in PUBLIC gaXmenuCalls/gnXmenuCalls.
|
||||
FUNCTION xmenu
|
||||
LPARAMETERS tcItems, tnBar
|
||||
LOCAL lnRaspuns
|
||||
IF TYPE('gnXmenuQueuePos') = 'N' AND gnXmenuQueuePos <= ALEN(gaXmenuQueue)
|
||||
lnRaspuns = gaXmenuQueue[gnXmenuQueuePos]
|
||||
gnXmenuQueuePos = gnXmenuQueuePos + 1
|
||||
ELSE
|
||||
lnRaspuns = 0
|
||||
ENDIF
|
||||
IF TYPE('gnXmenuCalls') = 'N'
|
||||
gnXmenuCalls = gnXmenuCalls + 1
|
||||
DIMENSION gaXmenuCalls[gnXmenuCalls, 2]
|
||||
gaXmenuCalls[gnXmenuCalls, 1] = TRANSFORM(tcItems)
|
||||
gaXmenuCalls[gnXmenuCalls, 2] = lnRaspuns
|
||||
ENDIF
|
||||
IF TYPE('gcUILog') = 'C'
|
||||
DO PrLogLocal WITH 'MOCK xmenu: [' + LEFT(TRANSFORM(tcItems), 100) + '] -> ' + TRANSFORM(lnRaspuns)
|
||||
ENDIF
|
||||
RETURN lnRaspuns
|
||||
ENDFUNC
|
||||
@@ -8,8 +8,9 @@
|
||||
*
|
||||
* ZERO trimiteri ANAF: Thisform.oAnaf.AnafeFacturaServer e inlocuit cu MockAnafServerStorno
|
||||
* (mock_anaf_server_storno.prg) imediat dupa ce forma reala citeste cCodFiscal/lTest de la
|
||||
* serverul real. cmdValideaza (ValidareEFacturaANAF, apel HTTP real, hardcodat /prod/ -
|
||||
* xmlefactura.prg:1275,1278) NU e apelat; se ocoleste cu SetStare(1) direct.
|
||||
* serverul real. Valideaza() (ValidareEFacturaANAF, apel HTTP real, hardcodat /prod/ -
|
||||
* xmlefactura.prg:1275,1278) NU e apelat; se ocoleste cu SetStare(1) direct. cmdTrimite.Click
|
||||
* deschide XMENU, mockuit din coada gaXmenuQueue (mock_xmenu_storno.prg).
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
@@ -21,15 +22,20 @@ SET NULLDISPLAY TO ''
|
||||
CLOSE DATABASES
|
||||
|
||||
PUBLIC gcUILog, gcTestDir, gcTesteDir
|
||||
PUBLIC gnPass, gnFail, gnMockRaspuns, gnAmsgCalls, gnMockApeluri
|
||||
PUBLIC gnPass, gnFail, gnMockRaspuns, gnAmsgCalls, gnMockApeluri, gnXmenuCalls, gnXmenuQueuePos
|
||||
PUBLIC loAnaf, loForm, loMockSrv, loStornoForm, lnLastErrorNo, lcLastErrorMsg
|
||||
DECLARE gaAmsgCalls[1,2]
|
||||
DECLARE gaMockApeluri[1,3]
|
||||
DECLARE gaXmenuCalls[1,2]
|
||||
DECLARE gaXmenuQueue[1]
|
||||
gnPass = 0
|
||||
gnFail = 0
|
||||
gnAmsgCalls = 0
|
||||
gnMockApeluri = 0
|
||||
gnMockRaspuns = 6
|
||||
gnXmenuCalls = 0
|
||||
gnXmenuQueuePos = 1
|
||||
gaXmenuQueue[1] = 0
|
||||
lnLastErrorNo = 0
|
||||
lcLastErrorMsg = ''
|
||||
|
||||
@@ -44,6 +50,7 @@ ON SHUTDOWN QUIT
|
||||
* mock-urile INAINTEA test_init_env_auto: la nume duplicat de procedura castiga fisierul
|
||||
* cautat PRIMUL (vezi mock_amessagebox.prg / capcana testare-ui-vfp.md)
|
||||
SET PROCEDURE TO (gcTestDir + 'mock_amessagebox_storno.prg') ADDITIVE
|
||||
SET PROCEDURE TO (gcTestDir + 'mock_xmenu_storno.prg') ADDITIVE
|
||||
SET PROCEDURE TO (gcTestDir + 'mock_anaf_server_storno.prg') ADDITIVE
|
||||
|
||||
TRY
|
||||
@@ -365,7 +372,28 @@ DEFINE CLASS DriverStorno AS Custom
|
||||
DO TVerdict WITH RECCOUNT('crsStornoDetalii') > 0, 'grid crsStornoDetalii populat', 'reccount=' + TRANSFORM(RECCOUNT('crsStornoDetalii'))
|
||||
DO TVerdict WITH 'TEST' $ UPPER(loStorno.Caption), 'Caption contine TEST', 'caption=[' + loStorno.Caption + ']'
|
||||
DO TVerdict WITH UPPER(ALLTRIM(loStorno.lblStare.Caption)) == 'NEVALIDAT', 'stare initiala Nevalidat', 'stare=[' + loStorno.lblStare.Caption + ']'
|
||||
DO TVerdict WITH loStorno.lblStare.ForeColor == RGB(96,96,96), 'lblStare gri la Nevalidat', 'forecolor=' + TRANSFORM(loStorno.lblStare.ForeColor)
|
||||
DO TVerdict WITH FILE(loStorno.pcFisierStorno), 'fisier storno exista pe disc', 'fisier=[' + loStorno.pcFisierStorno + ']'
|
||||
DO PrLogLocal WITH 'grid coloane: ' + TRANSFORM(loStorno.grdModificari.cElement.Width) + '/' + TRANSFORM(loStorno.grdModificari.cOriginal.Width) + '/' + TRANSFORM(loStorno.grdModificari.cNou.Width) + ;
|
||||
' controlsource: ' + loStorno.grdModificari.cElement.ControlSource + '|' + loStorno.grdModificari.cOriginal.ControlSource + '|' + loStorno.grdModificari.cNou.ControlSource
|
||||
DO TVerdict WITH loStorno.grdModificari.cElement.Width = 330 AND loStorno.grdModificari.cOriginal.Width = 180 AND loStorno.grdModificari.cNou.Width = 180, 'latimi coloane grid (330/180/180)', ''
|
||||
DO TVerdict WITH LOWER(loStorno.grdModificari.cElement.ControlSource) == 'crsstornodetalii.element' AND LOWER(loStorno.grdModificari.cOriginal.ControlSource) == 'crsstornodetalii.original' AND LOWER(loStorno.grdModificari.cNou.ControlSource) == 'crsstornodetalii.nou', 'controlsource coloane grid calificat', ''
|
||||
|
||||
* V(250) in loc de C(250) (fix Marius, cf. docs/storno_forma_ux_diff.md pct.12b) -
|
||||
* sumele nu mai vin cu padding la dreapta, care le scotea vizual din coloana.
|
||||
LOCAL lnPadFail, lcPadDetail
|
||||
lnPadFail = 0
|
||||
lcPadDetail = ''
|
||||
SELECT crsStornoDetalii
|
||||
SCAN
|
||||
IF LEN(crsStornoDetalii.original) != LEN(ALLTRIM(crsStornoDetalii.original)) OR LEN(crsStornoDetalii.nou) != LEN(ALLTRIM(crsStornoDetalii.nou))
|
||||
lnPadFail = lnPadFail + 1
|
||||
lcPadDetail = lcPadDetail + 'rand=' + TRANSFORM(RECNO()) + ' original=[' + crsStornoDetalii.original + '] nou=[' + crsStornoDetalii.nou + '] '
|
||||
ENDIF
|
||||
ENDSCAN
|
||||
DO TVerdict WITH lnPadFail = 0, 'fara padding pe original/nou (V(250), sumele nu mai ies din coloana)', 'randuri cu padding=' + TRANSFORM(lnPadFail) + ' ' + lcPadDetail
|
||||
|
||||
DO TVerdict WITH EMPTY(loStorno.txtMotiv.Value), 'txtMotiv fara apostrofuri la init', 'value=[' + TRANSFORM(loStorno.txtMotiv.Value) + ']'
|
||||
This.nState = 1
|
||||
|
||||
CASE This.nState = 1
|
||||
@@ -381,8 +409,20 @@ DEFINE CLASS DriverStorno AS Custom
|
||||
loStorno = loStornoForm
|
||||
loStorno.SetStare(1)
|
||||
DO TVerdict WITH UPPER(ALLTRIM(loStorno.lblStare.Caption)) == 'VALID', 'SetStare(1) -> Valid (ocolire ValidareEFacturaANAF, retea reala, cf. instructiuni)', 'stare=[' + loStorno.lblStare.Caption + ']'
|
||||
DO TVerdict WITH loStorno.lblStare.ForeColor == RGB(0,128,0), 'lblStare verde la Valid', 'forecolor=' + TRANSFORM(loStorno.lblStare.ForeColor)
|
||||
|
||||
* renuntare la xmenu (0) -> cmdTrimite.Click nu schimba nimic, fara retea
|
||||
gaXmenuQueue[1] = 0
|
||||
gnXmenuQueuePos = 1
|
||||
loStorno.cmdTrimite.Click()
|
||||
DO TVerdict WITH UPPER(ALLTRIM(loStorno.lblStare.Caption)) == 'TRIMIS', 'dupa cmdTrimite.Click -> Trimis', 'stare=[' + loStorno.lblStare.Caption + ']'
|
||||
DO TVerdict WITH UPPER(ALLTRIM(loStorno.lblStare.Caption)) == 'VALID', 'renuntare xmenu -> starea nu se schimba', 'stare=[' + loStorno.lblStare.Caption + ']'
|
||||
|
||||
* optiunea 2 (trimite fara validare, cf. instructiuni: fara Valideaza/retea reala)
|
||||
gaXmenuQueue[1] = 2
|
||||
gnXmenuQueuePos = 1
|
||||
loStorno.cmdTrimite.Click()
|
||||
DO TVerdict WITH loStorno.pnStare = 2, 'dupa cmdTrimite.Click (xmenu=2) -> Trimis', 'pnStare=' + TRANSFORM(loStorno.pnStare) + ' caption=[' + loStorno.lblStare.Caption + ']'
|
||||
DO TVerdict WITH loStorno.lblStare.ForeColor == RGB(0,64,160), 'lblStare albastru la Trimis', 'forecolor=' + TRANSFORM(loStorno.lblStare.ForeColor)
|
||||
DO TVerdict WITH ExistaApelMock('TrimiteFacturaXML'), 'mock a primit TrimiteFacturaXML', ''
|
||||
This.nState = 3
|
||||
|
||||
|
||||
Reference in New Issue
Block a user