Files
comun/utile/Teste/editare_factura/test_defect1_crsjtvatemp.prg
Marius Mutu b9eba29ebe #6 editare factura emisa: S4 runda 3 completa (pagina de articole editabila)
frm_modific2024, pgfArticole.PAGE3 - editare in memorie, fara scriere in Oracle
(aceea ramane S5).

- sub-blocul A: cantitate/pret/pret_cu_tva editabile inline, marcaj lmodificat
  pe linie, coloana valoare pe linie
- sub-blocul B: stergere logica de linii (sters/DynamicForeColor gri) si adaugare
  de linii prin frm_articol_factura, cu alegerea articolului prin caut_articol()
- sub-blocul C: bara de totaluri sub grid (total linii convertit RON la cursul
  documentului, discount de antet editabil, total net), ascunsa pe
  transfer/custodie; verdict de corelatie ACT/RUL informativ, cu 3 stari
- suma ACT: sold net debit-credit, cont pe tip de document (4111 / 418 / 461,
  iar pe rate/contract 4111, 411 sau 461)
- suma RUL: doar ID_TIP_RULAJ = 0, adica miscarile reale; perechile
  ID_TIP_RULAJ = 3 sunt virtuale (tin locul procesului verbal de schimbare de
  pret) si nu intra in suma. Corectie cu liniile nestocate, marcata "ajustat"
- adaugarea de linii pe document in valuta: dialogul primeste tip_valuta si
  cursul documentului de pe tvanz, deci pretul se introduce direct in valuta;
  ofacturare.vc2 ramane neatins
- cei 5 apelanti frm_modific2024 (afisjurcom, anaf_efactura, cele doua .sc2 de
  import) pregatesc cursorul de articole inainte de Createobject, gardat pe
  SET PROCEDURE - registrul jurnal din ROACONT/ROAGEST ramane neschimbat

Teste headless pe MARIUSM_AUTO, suite care isi descopera singure documentele:
test_page3_articole 14/2 (cele 2 = artefact de grid nematerializat headless,
acoperit pe ecran), test_incarca_vanzare_din_nota 5/0,
test_adauga_linie_articol 20/0, test_adauga_linie_valuta 16/0,
test_ui_sterge_linie 8/0, test_verdict_act_rul 26/0.

docs/todos.txt: punctele 13 si 20, scrise de Marius.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
2026-08-09 20:48:42 +03:00

118 lines
4.4 KiB
Plaintext

* test_defect1_crsjtvatemp.prg
* Verifica fix-ul din frm_facturi.do_editare_factura (ofacturare_comun.vc2:3799-3804): inainte de
* Createobject('frm_modific2024',...), metoda precreeaza crsJtvaTemp cu update_jtva_coloane("",
* "crsJtvaTemp", 0) - acelasi tipar folosit de ooperatii_comune.prg:113 (viz_act, calea ROACONT
* "registru jurnal > modificare" care functiona deja corect). Fara aceasta linie,
* Column63.ControlSource din grid (Seek(...,'crsJtvaTemp','id_jtva')) crapa la constructia
* formularului, fiindca cursorul nu exista inca.
* Nu scrie in Oracle - doar SELECT-uri prin goExecutor si citiri de proprietati. QUIT la final.
SET SAFETY OFF
SET TALK OFF
LOCAL lcLog
lcLog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_defect1_crsjtvatemp_log.txt'
STRTOFILE('start' + CHR(13) + CHR(10), lcLog)
PUBLIC gcErrLog
gcErrLog = lcLog
ON ERROR DO test_error_handler WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
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), lcLog, 1)
QUIT
ENDIF
SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\programe\ofacturare_editare.prg ADDITIVE
*!* test_init_env_auto:139 incarca omodificari din copia ROACONT (alt working copy) - o eliberam
*!* si o reincarcam pe cea DE SUB TEST, cu cale completa
RELEASE CLASSLIB omodificari
SET CLASSLIB TO D:\ROA\ROAFACTURARE\COMUN\clase\omodificari.vcx ADDITIVE
DO verifica_defect1 WITH 1139934, 2021, 12, lcLog, 3, .T., 882
STRTOFILE('done' + CHR(13) + CHR(10), lcLog, 1)
QUIT
PROCEDURE verifica_defect1
LPARAMETERS tnCod, tnAn, tnLuna, tcLog, tnPageCountAsteptat, tlAreArticoleAsteptat, tnIdVanzareAsteptat
LOCAL llOk, lnIdSet, loForm, llCrsJtvaInchisInainte, llCrsJtvaCreatDupa, lnPageCount, llAreArticole, lnIdVanzare
IF USED('crsJtvaTemp')
USE IN crsJtvaTemp
ENDIF
llCrsJtvaInchisInainte = !USED('crsJtvaTemp')
llOk = IncarcaCursoareModificareNota(tnCod, tnAn, tnLuna, .F.)
lnPageCount = -1
llAreArticole = .F.
lnIdVanzare = 0
llCrsJtvaCreatDupa = .F.
IF llOk AND USED('tact') AND RECCOUNT('tact') > 0
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
*-- linia din fix (ofacturare_comun.vc2:3801) - fara ea, grid-ul din frm_modific2024
*-- crapa la constructie pe crsJtvaTemp lipsa
update_jtva_coloane("", "crsJtvaTemp", 0)
llCrsJtvaCreatDupa = USED('crsJtvaTemp') AND RECCOUNT('crsJtvaTemp') >= 0
SELECT tact
TRY
loForm = CREATEOBJECT([frm_modific2024], lnIdSet)
loForm.WindowType = 0
loForm.Show()
lnPageCount = loForm.pgfArticole.PageCount
llAreArticole = loForm.lAreArticoleVanzari
lnIdVanzare = loForm.nIdVanzare
loForm.Release()
CATCH TO loExc
STRTOFILE(' EXCEPTIE la Createobject/Show frm_modific2024: ' + TRANSFORM(loExc.ErrorNo) + ;
' [' + loExc.Message + ']' + CHR(13) + CHR(10), tcLog, 1)
ENDTRY
ENDIF
STRTOFILE('--- Defect 1 (crsJtvaTemp), cod=' + TRANSFORM(tnCod) + ' ---' + CHR(13) + CHR(10) + ;
' crsJtvaTemp inchis inainte de apel = ' + TRANSFORM(llCrsJtvaInchisInainte) + CHR(13) + CHR(10) + ;
' crsJtvaTemp creat de update_jtva_coloane (Used+Reccount>=0) = ' + TRANSFORM(llCrsJtvaCreatDupa) + CHR(13) + CHR(10) + ;
' PageCount = ' + TRANSFORM(lnPageCount) + ' (asteptat ' + TRANSFORM(tnPageCountAsteptat) + ')' + CHR(13) + CHR(10) + ;
' lAreArticoleVanzari = ' + TRANSFORM(llAreArticole) + ' (asteptat ' + TRANSFORM(tlAreArticoleAsteptat) + ')' + CHR(13) + CHR(10) + ;
' nIdVanzare = ' + TRANSFORM(lnIdVanzare) + ' (asteptat ' + TRANSFORM(tnIdVanzareAsteptat) + ')' + CHR(13) + CHR(10) + ;
' ' + IIF(llCrsJtvaInchisInainte AND llCrsJtvaCreatDupa AND lnPageCount == tnPageCountAsteptat AND llAreArticole == tlAreArticoleAsteptat AND lnIdVanzare == tnIdVanzareAsteptat, 'PASS', 'FAIL') + CHR(13) + CHR(10), tcLog, 1)
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('crsJtvaTemp')
USE IN crsJtvaTemp
ENDIF
ENDPROC
PROCEDURE test_error_handler
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
STRTOFILE('EROARE ' + TRANSFORM(tnError) + ' [' + tcProgram + ':' + TRANSFORM(tnLineNo) + '] ' + tcMessage + CHR(13) + CHR(10), gcErrLog, 1)
ENDPROC