Borderoul tine per factura ce mai are de completat si daca are articole de gestiune (camp gest, coloana si filtru), coada contabilizeaza in serie facturile bifate si incheie cu un rezumat, iar contul de furnizor/client se alege din planul de conturi. Cheia normalizata de articol, rezolvarea automata a partenerului si anularea in bloc intra tot aici. Pozitia in lista se pastreaza peste reaplicarea filtrului. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Aroafxp4z8bmM5oVECZRXY
143 lines
6.8 KiB
Plaintext
143 lines
6.8 KiB
Plaintext
* test_anulare_lot_ui.prg
|
|
* Verifica ecranul de confirmare a anularii in bloc (frm_anulare_lot_efactura,
|
|
* COMUN\clase\anaf_efactura.vc2): gridurile crsAcceptate/crsRefuzate se leaga, avertismentul
|
|
* de risc e vizibil, butonul de confirmare e dezactivat cand lista de acceptate e goala, si
|
|
* decizia (gnButon) se intoarce corect pentru ambele butoane. Fara Show(1) (modal): formularul
|
|
* e creat cu WindowType=0 si butoanele sunt actionate direct (.Click()).
|
|
*
|
|
* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\test_anulare_lot_ui.prg"
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
|
|
PUBLIC gcUILog
|
|
gcUILog = "D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\test_anulare_lot_ui_log.txt"
|
|
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog)
|
|
|
|
SET DELETED ON
|
|
SET EXACT ON
|
|
SET CENTURY ON
|
|
SET DATE DMY
|
|
SET NULLDISPLAY TO ''
|
|
CLOSE DATABASES
|
|
|
|
ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
ON SHUTDOWN QUIT
|
|
|
|
PUBLIC gnPass, gnFail
|
|
gnPass = 0
|
|
gnFail = 0
|
|
|
|
TRY
|
|
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
|
|
SET PROCEDURE TO anulare_lot_ef ADDITIVE
|
|
DO PrLogLocal WITH 'mediu initializat, gnHandle=' + TRANSFORM(gnHandle)
|
|
|
|
*=========================================================================
|
|
DO PrLogLocal WITH '=== TEST 1: lista de acceptate goala -> griduri legate, avertisment vizibil, buton confirma dezactivat, Renunta intoarce gnButon=2 ==='
|
|
DO CreeazaCursoareFixtura WITH .F.
|
|
|
|
LOCAL loForm1
|
|
loForm1 = CREATEOBJECT('frm_anulare_lot_efactura')
|
|
loForm1.WindowType = 0
|
|
|
|
DO TVerdict WITH TYPE('loForm1.grdAcceptate') = 'O', 'T1.1 grdAcceptate exista pe formular', TYPE('loForm1.grdAcceptate')
|
|
DO TVerdict WITH TYPE('loForm1.grdRefuzate') = 'O', 'T1.2 grdRefuzate exista pe formular', TYPE('loForm1.grdRefuzate')
|
|
DO TVerdict WITH UPPER(loForm1.grdAcceptate.RecordSource) == 'CRSACCEPTATE', 'T1.3 grdAcceptate legat pe crsAcceptate', loForm1.grdAcceptate.RecordSource
|
|
DO TVerdict WITH UPPER(loForm1.grdRefuzate.RecordSource) == 'CRSREFUZATE', 'T1.4 grdRefuzate legat pe crsRefuzate', loForm1.grdRefuzate.RecordSource
|
|
DO TVerdict WITH RECCOUNT('crsAcceptate') = 0, 'T1.5 crsAcceptate e gol (fixtura test)', TRANSFORM(RECCOUNT('crsAcceptate'))
|
|
DO TVerdict WITH RECCOUNT('crsRefuzate') = 2, 'T1.6 crsRefuzate are cele 2 randuri fixtura', TRANSFORM(RECCOUNT('crsRefuzate'))
|
|
DO TVerdict WITH !EMPTY(loForm1.lblAvertisment.Caption), 'T1.7 avertismentul de risc e vizibil (Caption ne-gol)', '[' + loForm1.lblAvertisment.Caption + ']'
|
|
DO TVerdict WITH ('MODIFICATA' $ UPPER(loForm1.lblAvertisment.Caption)) AND ('DEPUS' $ UPPER(loForm1.lblAvertisment.Caption)), 'T1.8 avertismentul mentioneaza cele doua cazuri neverificabile automat', '[' + loForm1.lblAvertisment.Caption + ']'
|
|
DO TVerdict WITH loForm1.lblAvertisment.Visible, 'T1.9 lblAvertisment.Visible = .T.', TRANSFORM(loForm1.lblAvertisment.Visible)
|
|
DO TVerdict WITH !loForm1.cmdConfirma.Enabled, 'T1.10 butonul de confirmare e dezactivat (lista de acceptate goala)', TRANSFORM(loForm1.cmdConfirma.Enabled)
|
|
|
|
gnButon = 0
|
|
loForm1.But_renunt1.Click()
|
|
DO TVerdict WITH gnButon = 2, 'T1.11 click pe Renunta intoarce gnButon=2', TRANSFORM(gnButon)
|
|
* But_renunt1.Click() a rulat deja do_renunt -> This.Release: formularul nu mai exista, nu se mai elibereaza inca o data
|
|
|
|
*=========================================================================
|
|
DO PrLogLocal WITH '=== TEST 2: lista de acceptate cu randuri -> buton confirma activ, Confirma anularea intoarce gnButon=1 ==='
|
|
DO CreeazaCursoareFixtura WITH .T.
|
|
|
|
LOCAL loForm2
|
|
loForm2 = CREATEOBJECT('frm_anulare_lot_efactura')
|
|
loForm2.WindowType = 0
|
|
|
|
DO TVerdict WITH RECCOUNT('crsAcceptate') = 2, 'T2.1 crsAcceptate are cele 2 randuri fixtura', TRANSFORM(RECCOUNT('crsAcceptate'))
|
|
DO TVerdict WITH loForm2.cmdConfirma.Enabled, 'T2.2 butonul de confirmare e activ (lista de acceptate nu e goala)', TRANSFORM(loForm2.cmdConfirma.Enabled)
|
|
|
|
gnButon = 0
|
|
loForm2.cmdConfirma.Click()
|
|
DO TVerdict WITH gnButon = 1, 'T2.3 click pe Confirma anularea intoarce gnButon=1', TRANSFORM(gnButon)
|
|
* cmdConfirma.Click() a rulat deja do_termin -> This.Release: formularul nu mai exista, nu se mai elibereaza inca o data
|
|
|
|
IF USED('crsAcceptate')
|
|
USE IN (SELECT('crsAcceptate'))
|
|
ENDIF
|
|
IF USED('crsRefuzate')
|
|
USE IN (SELECT('crsRefuzate'))
|
|
ENDIF
|
|
|
|
DO PrLogLocal WITH 'REZULTAT FINAL: PASS=' + TRANSFORM(gnPass) + ' FAIL=' + TRANSFORM(gnFail)
|
|
DO PrLogLocal WITH IIF(gnFail = 0, 'TOTAL: test terminat OK', 'TOTAL: test terminat CU ESECURI')
|
|
CATCH TO loEx
|
|
DO PrLogLocal WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ') ' + loEx.Procedure
|
|
ENDTRY
|
|
|
|
QUIT
|
|
|
|
**********************************************************
|
|
* creeaza crsAcceptate/crsRefuzate cu structura AnulareLotEF.CreeazaCursoareGoale, umplute cu
|
|
* randuri fabricate (fara Oracle) - tlCuAcceptate=.T. adauga 2 randuri in crsAcceptate
|
|
PROCEDURE CreeazaCursoareFixtura
|
|
LPARAMETERS tlCuAcceptate
|
|
|
|
IF USED('crsAcceptate')
|
|
USE IN (SELECT('crsAcceptate'))
|
|
ENDIF
|
|
CREATE CURSOR crsAcceptate (id_efactura N(20), id_fact N(20), cod N(15), an N(4), luna N(2), numar_act C(30), furnizor C(250), suma N(20,4))
|
|
IF tlCuAcceptate
|
|
INSERT INTO crsAcceptate VALUES (1001, 5001, 96001, 2026, 9, 'TEST-FIX-1', 'FIXTURA UI ANULARE 1', 119.00)
|
|
INSERT INTO crsAcceptate VALUES (1002, 5002, 96002, 2026, 9, 'TEST-FIX-2', 'FIXTURA UI ANULARE 2', 238.00)
|
|
ENDIF
|
|
|
|
IF USED('crsRefuzate')
|
|
USE IN (SELECT('crsRefuzate'))
|
|
ENDIF
|
|
CREATE CURSOR crsRefuzate (id_efactura N(20), id_fact N(20), cod N(15), an N(4), luna N(2), numar_act C(30), furnizor C(250), suma N(20,4), motiv C(200))
|
|
INSERT INTO crsRefuzate VALUES (1003, 0, 0, 0, 0, 'TEST-FIX-3', 'FIXTURA UI ANULARE 3', 50.00, 'factura nu e importata in contabilitate (id_fact lipseste)')
|
|
INSERT INTO crsRefuzate VALUES (1004, 5004, 96004, 2026, 9, 'TEST-FIX-4', 'FIXTURA UI ANULARE 4', 75.00, 'documentul are incasari/plati atasate - anuleaza manual nota 96004 din registrul jurnal')
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
PROCEDURE TVerdict
|
|
LPARAMETERS tlOk, tcNume, tcDetalii
|
|
IF tlOk
|
|
gnPass = gnPass + 1
|
|
ELSE
|
|
gnFail = gnFail + 1
|
|
ENDIF
|
|
DO PrLogLocal WITH IIF(tlOk, 'PASS ', 'FAIL ') + tcNume + ' | ' + TRANSFORM(tcDetalii)
|
|
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
|