fix(autopass): pastreaza tot array-ul erori/nemapate la Valideaza

GetProprietate intoarce doar element(1) pe un array (o functie VFP nu poate
intoarce un array), deci ExtrageListaRezultate pierdea toate erorile/nemapate
in afara de prima pe calea Valideaza. Helper nou CopiazaListaProprietate
(inversul AsignaListaProprietate): copiaza tot array-ul (AddProperty cu
dimensiune + ACOPY); array gol (flag nfjson) / lipsa / scalar -> .Null.,
consumatorul verifica TYPE(...)='A' inainte de iterare.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-13 12:07:02 +03:00
parent 5cac7069a6
commit 31bff0b17e

View File

@@ -713,8 +713,8 @@ DEFINE CLASS AutopassClient AS Custom
AddProperty(loRezItem, 'valid', This.GetProprietate(m.loElem, 'valid', .F.))
AddProperty(loRezItem, 'status_estimat', This.GetProprietate(m.loElem, 'status_estimat', ''))
AddProperty(loRezItem, 'rar_env', This.GetProprietate(m.loElem, 'rar_env', ''))
AddProperty(loRezItem, 'erori', This.GetProprietate(m.loElem, 'erori', .Null.))
AddProperty(loRezItem, 'nemapate', This.GetProprietate(m.loElem, 'nemapate', .Null.))
This.CopiazaListaProprietate(loRezItem, 'erori', m.loElem, 'erori')
This.CopiazaListaProprietate(loRezItem, 'nemapate', m.loElem, 'nemapate')
Else
* POST /v1/prezentari (raspuns implicit 'minim', SubmissionResultMinim din app/models.py):
* index, submission_id, vehicul, status, motiv, id_prezentare
@@ -1000,6 +1000,39 @@ DEFINE CLASS AutopassClient AS Custom
Endproc
*-------------------------------------------------------------------
Procedure CopiazaListaProprietate
*-------------------------------------------------------------------
* Copiaza pe un obiect-empty destinatie o proprietate a unui obiect-sursa parsat
* de nfjson care poate fi ARRAY (erori[]/nemapate[] din raspunsul Valideaza),
* PASTRAND tot array-ul. GetProprietate NU merge aici: pe un array intoarce doar
* element(1) (o functie VFP nu poate intoarce un array). Array gol (conventie nfjson
* '_EMPTY_ARRAY_FLAG_') sau proprietate lipsa/scalara -> proprietate .Null. pe
* destinatie (consumatorul verifica TYPE(...) = 'A' inainte de a itera). Inversul
* practic al AsignaListaProprietate.
Lparameters toDest, tcPropDest, toSursa, tcPropSursa
Local lnCount
If Vartype(m.toSursa) # 'O' Or Type('toSursa.' + m.tcPropSursa + '(1)') = 'U'
*-- proprietate lipsa sau scalara (nu se poate indexa cu (1)) -> nimic de copiat
AddProperty(m.toDest, m.tcPropDest, .Null.)
Return
Endif
If Type('toSursa.' + m.tcPropSursa + '(1)') = 'C' ;
And toSursa.&tcPropSursa(1) == '_EMPTY_ARRAY_FLAG_'
*-- array gol semnalat de nfjson
AddProperty(m.toDest, m.tcPropDest, .Null.)
Return
Endif
lnCount = Alen(m.toSursa.&tcPropSursa, 1)
AddProperty(m.toDest, m.tcPropDest + '(' + Transform(m.lnCount) + ')')
Acopy(m.toSursa.&tcPropSursa, toDest.&tcPropDest)
Endproc
*-------------------------------------------------------------------
Procedure GetNumarElemente
*-------------------------------------------------------------------