Files
comun/utile/Teste/efactura_import/test_anulare_lot_ui.prg
Marius Mutu 940bb39701 Import eFactura in lot: borderou cu ce lipseste, coada de contabilizare, alegerea contului
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
2026-09-09 22:06:48 +03:00

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