#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
This commit is contained in:
2026-08-09 20:48:42 +03:00
parent 13b4f65723
commit b9eba29ebe
26 changed files with 3310 additions and 172 deletions

View File

@@ -0,0 +1,86 @@
* test_ui_pageframe_zero_rulaje.prg - defectul 2: pageframe-ul rulaje/articole colapsa complet
* (afiseaza_rulaje() -> pgfArticole.Visible = .F.) cand documentul are articole dar zero rulaje -
* conditia veche din Show() (omodificari.vc2) verifica doar trul/trul_obinv, nu si tvd. Document:
* cod=1140885/an=gnAn/luna=gnLuna (id_vanzare=1047) - verificat separat: Reccount(trul)=0,
* Reccount(trul_obinv)=0, Reccount(tvd)=2. Acelasi flux ca do_editare_factura (IncarcaArticoleFactura
* in cursor propriu, inainte de Createobject). 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\uisync2\'
gcUILog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_ui_pageframe_zero_rulaje_log.txt'
STRTOFILE('start' + CHR(13) + CHR(10), gcUILog)
ON ERROR DO test_error_handler WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
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
RELEASE CLASSLIB omodificari
SET CLASSLIB TO D:\ROA\ROAFACTURARE\COMUN\clase\omodificari.vcx ADDITIVE
LOCAL llOk, lnIdSet, loForm
llOk = IncarcaCursoareModificareNota(1140885, gnAn, gnLuna, .F.)
IF !llOk OR !Used('tact') OR Reccount('tact') = 0
STRTOFILE('EROARE: IncarcaCursoareModificareNota a esuat pe cod=1140885' + 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
*!* replica do_editare_factura: articolele se incarca ACUM, inainte de Createobject (id_vanzare=1047)
IncarcaArticoleFactura(1047, 'crsArticoleFactura')
STRTOFILE('Reccount(crsArticoleFactura) inainte de Createobject = ' + TRANSFORM(Reccount('crsArticoleFactura')) + CHR(13) + CHR(10), gcUILog, 1)
Select tact
loForm = Createobject([frm_modific2024], lnIdSet)
loForm.WindowType = 0
loForm.Show()
loForm.pgfArticole.ActivePage = 3
DOEVENTS FORCE
STRTOFILE('PageCount = ' + TRANSFORM(loForm.pgfArticole.PageCount) + CHR(13) + CHR(10) + ;
'pgfArticole.Visible = ' + TRANSFORM(loForm.pgfArticole.Visible) + CHR(13) + CHR(10) + ;
'lAreArticoleVanzari = ' + TRANSFORM(loForm.lAreArticoleVanzari) + CHR(13) + CHR(10) + ;
'Reccount(trul) = ' + TRANSFORM(IIF(Used('trul'),Reccount('trul'),-1)) + CHR(13) + CHR(10) + ;
'Reccount(trul_obinv) = ' + TRANSFORM(IIF(Used('trul_obinv'),Reccount('trul_obinv'),-1)) + CHR(13) + CHR(10) + ;
'Reccount(tvd) = ' + TRANSFORM(Reccount('tvd')) + CHR(13) + CHR(10) + ;
'ColumnCount grid = ' + TRANSFORM(loForm.pgfArticole.Page3.grdArticoleFactura.ColumnCount) + CHR(13) + CHR(10), gcUILog, 1)
DO HarnessStep WITH 0, 'pageframe zero rulaje - articole populate', 25
loForm.Release()
IF Used('crsArticoleFactura')
Use In crsArticoleFactura
ENDIF
DO HarnessDone WITH 'done'
QUIT
PROCEDURE test_error_handler
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
STRTOFILE('EROARE ' + TRANSFORM(tnError) + ' [' + tcProgram + ':' + TRANSFORM(tnLineNo) + '] ' + tcMessage + CHR(13) + CHR(10), gcUILog, 1)
ENDPROC