Cand documentul e deja trimis in eFactura, pagina de articole ramane vizibila, dar needitabila: cantitate, pret, pret achizitie, flagul pret cu TVA, discountul de antet, plus adaugarea si stergerea de linii. Alegerea e "vizibil, dar blocat", nu "pagina ascunsa" - contabilul trebuie sa vada ce contine factura trimisa. - omodificari.vc2: flag lArticoleReadOnly calculat in frm_modific2024.Show, impins peste .When-urile de celula, peste Enabled si peste garda din Click-ul butoanelor, si peste txtDiscountArt.ReadOnly. Eticheta lblArticoleReadOnly explica motivul. - ofacturare_editare.prg: id_fact adus pe tvanz, in IncarcaVanzareNota si in CreeazaCursorTvanzGol. EsteInEFactura interogheaza anaf_efactura dupa id_fact, nu dupa id_vanzare - fara asta garda nu s-ar fi declansat niciodata pe date reale. - teste: test_efactura_readonly (headless, garda in ambele sensuri), test_ui_efactura_readonly (formular vizibil - coloanele gridului nu se materializeaza sub -A -T), test_s7_rotunjire, si test_s8_matrice_surse pentru matricea S8 pe tipuri de sursa. S8 rulat pe cate un document din fiecare tip de sursa (lista de preturi, contract, aviz, factura din aviz), fiecare editat din ambele puncte de intrare: notele vechi raman STERS=1, id_fact nu se schimba, totalurile si liniile raman coerente. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
158 lines
6.5 KiB
Plaintext
158 lines
6.5 KiB
Plaintext
* test_ui_efactura_readonly.prg - verificare UI (formular vizibil, nu headless - coloanele
|
|
* gridului NU se materializeaza sub -A -T) a editabilitatii gridului de articole cand documentul
|
|
* a fost trimis in eFactura: cantitate/pret/pret_achizitie/checkbox pret_cu_tva NU primesc focus
|
|
* (When()=.F.) pe TOATE liniile, nu doar pe liniile de set. Verificarile de editabilitate se fac
|
|
* prin apel DIRECT al metodei .When() a controlului (echivalentul programatic al "celula
|
|
* primeste focus"), nu prin navigare cu input real (masina partajata - fara SendInput/click real).
|
|
* Document real: id_vanzare=1013 (cod=1140509/an=2025/luna=8), efectiv trimis in eFactura
|
|
* (VANZARI.ID_FACT=8008013, prezent in ANAF_EFACTURA). Controlul negativ (grid editabil cand NU e
|
|
* in eFactura) e deja acoperit headless, cu apel direct pe .When(), in test_efactura_readonly.prg -
|
|
* aici doar cazul SINTETIC de revenire (lArticoleReadOnly comutat inapoi pe acelasi document real,
|
|
* fara sa mai caute alt document), ca sa confirme ca gating-ul e chiar pe flag, nu o coincidenta.
|
|
* Nu scrie in Oracle. QUIT la final.
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
|
|
PUBLIC gcUILog, gcSyncDir
|
|
gcSyncDir = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\uisync_efactura\'
|
|
gcUILog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_ui_efactura_readonly_log.txt'
|
|
STRTOFILE('start' + CHR(13) + CHR(10), gcUILog)
|
|
|
|
ON ERROR DO test_error_handler WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
|
|
PUBLIC gnPass, gnFail
|
|
gnPass = 0
|
|
gnFail = 0
|
|
|
|
SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\utile\Teste\ui_harness.prg ADDITIVE
|
|
DO HarnessInit
|
|
|
|
DO ('D:\ROA\ROAFACTURARE\COMUN\utile\Teste\test_init_env_auto.prg') WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
|
IF gnHandle <= 0
|
|
STRTOFILE('EROARE: conectare esuata' + CHR(13) + CHR(10), gcUILog, 1)
|
|
DO HarnessDone WITH 'error'
|
|
QUIT
|
|
ENDIF
|
|
|
|
SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\programe\ofacturare_editare.prg ADDITIVE
|
|
|
|
*!* test_init_env_auto incarca intai copia omodificari din ROACONT - o eliberam si o reincarcam pe cea de sub test
|
|
RELEASE CLASSLIB omodificari
|
|
SET CLASSLIB TO D:\ROA\ROAFACTURARE\COMUN\clase\omodificari.vcx ADDITIVE
|
|
|
|
LOCAL llOk, lnIdSet, loForm, loGrid
|
|
|
|
llOk = IncarcaCursoareModificareNota(1140509, 2025, 8, .F.)
|
|
IF !llOk OR !Used('tact') OR Reccount('tact') = 0
|
|
STRTOFILE('EROARE: IncarcaCursoareModificareNota a esuat pe cod=1140509' + CHR(13) + CHR(10), gcUILog, 1)
|
|
DO HarnessDone WITH 'error'
|
|
QUIT
|
|
ENDIF
|
|
|
|
Select a.*, Iif(Nvl(id_jtva_coloana,0)=0,0,1) As cu_Tva From tact a Into Cursor tact Readwrite
|
|
Go Top In tact
|
|
lnIdSet = tact.id_set
|
|
|
|
IF !Used('crsJtvaTemp')
|
|
update_jtva_coloane("", "crsJtvaTemp", 6)
|
|
ENDIF
|
|
|
|
*!* articolele pregatite INAINTE de Createobject, ca Load() sa lege grid-ul o singura data pe
|
|
*!* tvd deja plin - fara asta, fallback-ul din Show() recreeaza tvd prin SQL dupa constructie,
|
|
*!* iar gridul (legat la construire pe cursorul initial) ramane cu ColumnCount=0
|
|
IncarcaArticoleFactura(1013, 'crsArticoleFactura')
|
|
|
|
Select tact
|
|
loForm = Createobject([frm_modific2024], lnIdSet)
|
|
loForm.WindowType = 0
|
|
loForm.Show()
|
|
loForm.pgfArticole.ActivePage = 3
|
|
DOEVENTS FORCE
|
|
|
|
DO asserteaza WITH 'documentul e recunoscut ca trimis in eFactura (lArticoleReadOnly)', loForm.lArticoleReadOnly, TRANSFORM(loForm.lArticoleReadOnly)
|
|
DO asserteaza WITH 'PAGE3 (articole) NU e suprimata - pgfArticole.PageCount = 3', loForm.pgfArticole.PageCount == 3, TRANSFORM(loForm.pgfArticole.PageCount)
|
|
DO asserteaza WITH 'cmdAdaugaArticol.Enabled = .F.', !loForm.pgfArticole.PAGE3.cmdAdaugaArticol.Enabled, TRANSFORM(loForm.pgfArticole.PAGE3.cmdAdaugaArticol.Enabled)
|
|
DO asserteaza WITH 'cmdStergeArticol.Enabled = .F.', !loForm.pgfArticole.PAGE3.cmdStergeArticol.Enabled, TRANSFORM(loForm.pgfArticole.PAGE3.cmdStergeArticol.Enabled)
|
|
DO asserteaza WITH 'marcajul vizual (lblArticoleReadOnly) e vizibil si are text', ;
|
|
loForm.pgfArticole.PAGE3.lblArticoleReadOnly.Visible AND !Empty(Alltrim(loForm.pgfArticole.PAGE3.lblArticoleReadOnly.Caption)), ;
|
|
loForm.pgfArticole.PAGE3.lblArticoleReadOnly.Caption
|
|
|
|
loGrid = loForm.pgfArticole.Page3.grdArticoleFactura
|
|
DO asserteaza WITH 'gridul are 15 coloane (neregresat)', loGrid.ColumnCount == 15, TRANSFORM(loGrid.ColumnCount)
|
|
DO asserteaza WITH 'documentul are cel putin o linie reala', Reccount('tvd') >= 1, TRANSFORM(Reccount('tvd'))
|
|
|
|
IF Reccount('tvd') >= 1
|
|
SELECT tvd
|
|
GO TOP
|
|
|
|
DO asserteaza WITH 'eFactura: cantitate NU primeste focus pe linie normala (nu doar pe linie de set)', loGrid.cCantitateArt.Text1.When() == .F., ''
|
|
DO asserteaza WITH 'eFactura: pret NU primeste focus', loGrid.cPretArt.Text1.When() == .F., ''
|
|
DO asserteaza WITH 'eFactura: pret_achizitie NU primeste focus', loGrid.cPretAchizitieArt.Text1.When() == .F., ''
|
|
DO asserteaza WITH 'eFactura: checkbox pret_cu_tva NU primeste focus', loGrid.cPretCuTvaArt._checkbox1.When() == .F., ''
|
|
|
|
*!* --- CAZ SINTETIC: acelasi document, flagul comutat manual pe .F. - gating-ul e pe flag, nu pe alta cauza ---
|
|
loForm.lArticoleReadOnly = .F.
|
|
DO asserteaza WITH 'CAZ SINTETIC flag=.F.: cantitate PRIMESTE focus (gating e pe lArticoleReadOnly)', loGrid.cCantitateArt.Text1.When() == .T., ''
|
|
DO asserteaza WITH 'CAZ SINTETIC flag=.F.: pret PRIMESTE focus', loGrid.cPretArt.Text1.When() == .T., ''
|
|
DO asserteaza WITH 'CAZ SINTETIC flag=.F.: checkbox pret_cu_tva PRIMESTE focus', loGrid.cPretCuTvaArt._checkbox1.When() == .T., ''
|
|
loForm.lArticoleReadOnly = .T.
|
|
ENDIF
|
|
|
|
STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcUILog, 1)
|
|
|
|
DO HarnessStep WITH 0, 'pagina3 articole - document trimis in eFactura, grid needitabil, marcaj vizual afisat', 15
|
|
|
|
loForm.Release()
|
|
|
|
IF Used('crsArticoleFactura')
|
|
Use In crsArticoleFactura
|
|
ENDIF
|
|
IF Used('actactan')
|
|
Use In actactan
|
|
ENDIF
|
|
IF Used('tact')
|
|
Use In tact
|
|
ENDIF
|
|
IF Used('rul_temp')
|
|
Use In rul_temp
|
|
ENDIF
|
|
IF Used('trul')
|
|
Use In trul
|
|
ENDIF
|
|
IF Used('rul_temp_obinv')
|
|
Use In rul_temp_obinv
|
|
ENDIF
|
|
IF Used('trul_obinv')
|
|
Use In trul_obinv
|
|
ENDIF
|
|
IF Used('tvanz')
|
|
Use In tvanz
|
|
ENDIF
|
|
IF Used('tvd')
|
|
Use In tvd
|
|
ENDIF
|
|
|
|
DO HarnessDone WITH 'done'
|
|
QUIT
|
|
|
|
|
|
PROCEDURE asserteaza
|
|
LPARAMETERS tcNume, tlConditie, tcValoare
|
|
|
|
IF m.tlConditie
|
|
gnPass = gnPass + 1
|
|
STRTOFILE('PASS ' + m.tcNume + CHR(13) + CHR(10), gcUILog, 1)
|
|
ELSE
|
|
gnFail = gnFail + 1
|
|
STRTOFILE('FAIL ' + m.tcNume + ' (valoare: ' + m.tcValoare + ')' + CHR(13) + CHR(10), gcUILog, 1)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
PROCEDURE test_error_handler
|
|
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
|
|
|
|
STRTOFILE('EROARE ' + TRANSFORM(tnError) + ' [' + tcProgram + ':' + TRANSFORM(tnLineNo) + '] ' + tcMessage + CHR(13) + CHR(10), gcUILog, 1)
|
|
ENDPROC
|