#6 editare factura emisa: S4b etapa 2 - butonul, dialogul si tipul lui id_articol
Enumerarea diferentelor dintre rulaje si articole capata interfata: buton pe pagina de articole, dialog cu grid si comutator de directie, plus verificarea la salvare. Dialogul propune, nu decide - aplicarea ramane o apasare explicita. - omodificari.vc2: cmdSincronizeazaArticole pe PAGE3, dezactivat odata cu restul paginii cand documentul e blocat in eFactura; frm_sincronizare_articole, derivata din frm_termin_renunt. Gridul e legat de propunere_afisata, cursor stabil creat in Load si doar golit si reumplut - propunere_sincronizare se recreeaza la fiecare apel, deci o legare directa s-ar rupe la prima comutare de directie. - id_articol trece de la I la N(20), in toate cele 6 locuri scrise pentru acest punct. Restul codebase-ului foloseste dintotdeauna N(20): valorile reale trec de 2^31 pe 89.8% din NOM_ARTICOLE, iar un camp I le trunchia tacit, asa incat potrivirea pe id_articol cadea si iesea perechea Adaugare+Semnalare in locul unei Modificari. Nu e o schimbare de design, e revenire la conventia casei. - doua accesari This. in loc de Thisform. in Click-ul butonului de adaugare articol: proprietatile sunt ale formularului, iar scurtcircuitul OR le evalua exact cand documentul avea articole - orice click real dadea eroare. - teste: test_s4b_dialog (35/0) acopera instantierea, comutarea directiei si aplicarea la salvare; test_s4b_sincronizare (42/0) capata cazul id_articol 3598545102, care ar fi picat inainte de schimbarea de tip. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
This commit is contained in:
@@ -195,6 +195,29 @@ IF Used('tvanz')
|
||||
Use In tvanz
|
||||
ENDIF
|
||||
|
||||
*!* --- A10: id_articol peste 2^31 (3598545102 = IV93900901, din documentele 1140895/1140921) ---
|
||||
*!* cu id_articol I in tvd valoarea se trunchia tacit si potrivirea cadea: iesea Adaugare+Semnalare
|
||||
CreeazaTvdTest()
|
||||
CreeazaTrulTest()
|
||||
AdaugaTvd(3598545102, 3, 10, 1, 1, 'IV93900901', 'IV93900901', 30)
|
||||
AdaugaTrul(3598545102, 5, 0, 12, 0, 1, '371', 1)
|
||||
|
||||
SELECT tvd
|
||||
LOCATE FOR id_articol = 3598545102
|
||||
DO asserteaza WITH 'A10 tvd pastreaza id_articol 3598545102 nealterat (campul nu mai e I)', ;
|
||||
Found() AND id_articol == 3598545102, 'citit=' + TRANSFORM(id_articol)
|
||||
|
||||
ConstruiestePropunereSincronizare('RUL_SURSA')
|
||||
DO asserteaza WITH 'A10 o singura linie in propunere, nu perechea Adaugare+Semnalare', ;
|
||||
Reccount('propunere_sincronizare') == 1, 'randuri=' + TRANSFORM(Reccount('propunere_sincronizare'))
|
||||
|
||||
SELECT propunere_sincronizare
|
||||
LOCATE FOR id_articol = 3598545102
|
||||
DO asserteaza WITH 'A10 potrivire reusita: Modificare, cant 3->5, pret 10->12', ;
|
||||
Found() AND Alltrim(actiune) == 'Modificare' AND cantitate_veche == 3 AND cantitate_noua == 5 ;
|
||||
AND pret_vechi == 10 AND pret_nou == 12, 'gasit=' + TRANSFORM(Found())
|
||||
|
||||
|
||||
*!* --- A9: retur .F. cand tvd/trul nu sunt deschise, cursorul iese oricum creat ---
|
||||
IF Used('tvd')
|
||||
Use In tvd
|
||||
@@ -287,6 +310,30 @@ DO asserteaza WITH 'B3 pret_cu_tva=0 pastrat: pret scris = pret_nou_cu_tva / pro
|
||||
Found() AND pret_cu_tva == 0 AND Round(pret,4) == 20.0000, TRANSFORM(pret)
|
||||
|
||||
|
||||
*!* --- B4: aplicarea pe id_articol peste 2^31 nimereste randul corect, nu creeaza linie noua ---
|
||||
CreeazaTvdTest()
|
||||
CreeazaTrulTest()
|
||||
AdaugaTvd(3598545102, 3, 10, 1, 1, 'IV93900901', 'IV93900901', 30)
|
||||
AdaugaTvd(700, 1, 5, 1, 1, 'ARTICOL 700', 'COD700', 5)
|
||||
AdaugaTrul(3598545102, 5, 0, 12, 0, 1, '371', 1)
|
||||
|
||||
LOCAL lnTvdInainteB4, lnAplicateB4
|
||||
lnTvdInainteB4 = Reccount('tvd')
|
||||
lnAplicateB4 = AplicaSincronizareArticole('RUL_SURSA', loForm)
|
||||
DO asserteaza WITH 'B4 id mare: o singura linie aplicata', lnAplicateB4 == 1, TRANSFORM(lnAplicateB4)
|
||||
DO asserteaza WITH 'B4 id mare: tvd nu a crescut (modificare, nu adaugare)', ;
|
||||
Reccount('tvd') == m.lnTvdInainteB4, TRANSFORM(Reccount('tvd'))
|
||||
|
||||
SELECT tvd
|
||||
LOCATE FOR id_articol = 3598545102
|
||||
DO asserteaza WITH 'B4 id mare: randul corect actualizat (cantitate=5, pret=12)', ;
|
||||
Found() AND cantitate == 5 AND pret == 12, TRANSFORM(cantitate) + '/' + TRANSFORM(pret)
|
||||
|
||||
LOCATE FOR id_articol = 700
|
||||
DO asserteaza WITH 'B4 id mare: articolul vecin 700 neatins', ;
|
||||
Found() AND cantitate == 1 AND pret == 5, ''
|
||||
|
||||
|
||||
*============================================================================================
|
||||
* SECTIUNEA C - AplicaSincronizareArticole, directia ARTICOLE_SURSA (scrie in trul)
|
||||
*============================================================================================
|
||||
@@ -347,7 +394,7 @@ PROCEDURE CreeazaTrulTest
|
||||
IF Used('trul')
|
||||
Use In trul
|
||||
ENDIF
|
||||
CREATE CURSOR trul (id_articol I, denumire C(100), codmat C(30), um C(10), cant N(12,3), cante N(12,3), ;
|
||||
CREATE CURSOR trul (id_articol N(20), denumire C(100), codmat C(30), um C(10), cant N(12,3), cante N(12,3), ;
|
||||
pretvtva N(14,4), id_tip_rulaj I, sters I, id_gestiune I, cont C(20), proc_tvav N(6,4))
|
||||
ENDPROC
|
||||
|
||||
|
||||
Reference in New Issue
Block a user