achizitie import: numarul DVI nu mai suprascrie numarul facturii

In import_nota, randul de TVA al DVI-ului pastreaza doc_key-ul facturii-mama.
copiaza_valoare il sarea doar ca tinta, nu si ca sursa, asa ca o trecere prin
celula "Nr" a randului DVI scria numarul vamal peste randurile facturii (B/G/S)
si, la Terminat, in ACT si RUL.nract. Garda e acum in ambele sensuri, pentru
numar, serie, data, fel document si partener; propagarea de partener din
Grid1.cPartC.Text1.Valid a primit aceeasi protectie.

Garzile comparau numele de camp bar, dar ControlSource-ul unei coloane de grid
e calificat la runtime (introdc.nract), deci nu se activau pe drumul din grila.

Teste noi in utile/Teste/achizitie_import.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U9uDgDfUQXbh2Neib36CN8
This commit is contained in:
2026-08-01 22:47:35 +03:00
parent 832fea4913
commit ebb20fab7e
13 changed files with 5482 additions and 7 deletions

View File

@@ -8808,17 +8808,23 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
*!* cheia documentului, doc_key se regenereaza pe grup dupa propagare.
Lparameters tcCamp
Local lcSelect, lcCursor, luValoare, lcDocKeyOld, lcDocKeyNou, lnRecCurent, llCheie
Local llCampValuta, llCampIdentitate, llSursaProtejata
Local llCampValuta, llCampIdentitate, llSursaProtejata, lcCamp
lcCursor = Thisform.grid1.RecordSource
lcSelect = Select()
Select (lcCursor)
lnRecCurent = Recno()
lcDocKeyOld = doc_key
luValoare = &tcCamp
llCheie = Inlist(Lower(tcCamp), 'serie_act', 'nract', 'id_fdoc', 'fdoc', 'id_partc', 'partc')
llCampValuta = Inlist(Lower(tcCamp), 'in_valuta', 'id_valuta', 'nume_val', 'curs', 'suma_val')
llCampIdentitate = Inlist(Lower(tcCamp), 'nract', 'serie_act', 'partc', 'id_fdoc', 'fdoc')
llSursaProtejata = (llCampValuta And Thisform.rand_protejat())
*!* la runtime VFP califica ControlSource-ul coloanei cu aliasul grilei (introdc.nract)
lcCamp = Lower(Alltrim(tcCamp))
If '.' $ lcCamp
lcCamp = Substr(lcCamp, Rat('.', lcCamp) + 1)
Endif
llCheie = Inlist(lcCamp, 'serie_act', 'nract', 'id_fdoc', 'fdoc', 'id_partc', 'partc')
llCampValuta = Inlist(lcCamp, 'in_valuta', 'id_valuta', 'nume_val', 'curs', 'suma_val')
llCampIdentitate = Inlist(lcCamp, 'nract', 'serie_act', 'partc', 'id_partc', 'id_fdoc', 'fdoc', 'dataact')
*!* randul DVI e protejat si ca SURSA - identitatea lui vamala nu se propaga pe factura-mama
llSursaProtejata = (llCampValuta And Thisform.rand_protejat()) Or (llCampIdentitate And Nvl(rand_dvi,0) = 1)
If !llSursaProtejata
Scan For doc_key == lcDocKeyOld And Recno() <> lnRecCurent
@@ -8832,7 +8838,7 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
Endscan
Endif
If llCheie
If llCheie And !llSursaProtejata
Go lnRecCurent
lcDocKeyNou = Thisform.calc_doc_key()
Scan For doc_key == lcDocKeyOld
@@ -8843,7 +8849,7 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
Go lnRecCurent
Select (lcSelect)
Release lcSelect, lcCursor, luValoare, lcDocKeyOld, lcDocKeyNou, lnRecCurent, llCheie
Release llCampValuta, llCampIdentitate, llSursaProtejata
Release llCampValuta, llCampIdentitate, llSursaProtejata, lcCamp
ENDPROC
PROCEDURE creeaza_rand_s
@@ -11883,12 +11889,20 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
lcSelect = SELECT()
SELECT introdc
*!* randul DVI are partener propriu (vama) - nu il da si nu il preia de la factura
IF Nvl(rand_dvi,0) = 1
SELECT (lcSelect)
RETURN
ENDIF
lnRecCurent = RECNO()
lcDocKey = doc_key
lnIdPart = id_partc
lcPart = partc
lcCont = scc
SCAN FOR !EMPTY(lcDocKey) AND doc_key == lcDocKey AND RECNO() <> lnRecCurent
IF Nvl(rand_dvi,0) = 1
LOOP
ENDIF
IF scc = lcCont AND EMPTY(id_partc)
REPLACE id_partc WITH lnIdPart, partc WITH lcPart
ENDIF