Achizitie din import: schimbarea cursului resincronizeaza articolele si diferenta

cCurs.Text1.Valid armeaza sincronizarea amanata (repretare articole +
recalc diferente) si propaga cursul principalei in antet (oact.curs,
doar pe randuri in valuta). Teste: pas nou de schimbare curs pe DVI
secundar in test_valuta_dvi_usd (22/22 PASS), regresie
test_debifare_invaluta (68/68) si test_scenariu_dvi_complet PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KXsyJZBek1e9RvyLAQkoCx
This commit is contained in:
2026-07-25 00:43:23 +03:00
parent 39c825c1f8
commit a6d883df69
4 changed files with 121 additions and 3 deletions

View File

@@ -12455,11 +12455,22 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
*!* nu-l mai scria in camp) si se copiaza pe randul de TVA pereche; apoi ofer
*!* recalcularea sumei in lei din suma in valuta, ca la modificarea sumei in valuta
*!* 24.07.2026 claude - recalcularea din curs se aplica pe toate randurile documentului si reface totalurile suma_doc/suma_doc_val
Local lnSumaDinVal, lnRaspuns, lcDocKeyC, lnRecC, lnCntS, lnSLei, lnSVal
Local lnSumaDinVal, lnRaspuns, lcDocKeyC, lnRecC, lnCntS, lnSLei, lnSVal, lnMinNrDocC
If This.Value # 0
Select introdc
Replace curs With This.Value
Thisform.copiaza_valoare([curs])
lnRecC = Recno('introdc')
lnMinNrDocC = 99999998
Calculate Min(Iif(Inlist(tip_rand,'B','S'), nr_doc, 99999998)) To lnMinNrDocC
Try
Go lnRecC In introdc
Catch
Go Top In introdc
Endtry
If nr_doc = lnMinNrDocC And in_valuta = 1
Thisform.oact.curs = This.Value
Endif
If in_valuta = 1 And !Empty(Nvl(introdc.doc_key,''))
lcDocKeyC = introdc.doc_key
lnRecC = Recno('introdc')
@@ -12510,6 +12521,8 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
Thisform.do_executa
Endif
Endif
Thisform.lSyncPending = .T.
Thisform.tmrSync.Interval = 1
Endif
ENDPROC