* test_adauga_linie_articol.prg * Verifica S4 runda 3, sub-blocul B partea 2 (adaugarea de linii pe pagina de articole): * - CreeazaPoArticolNouTvd (ofacturare_editare.prg): obiectul poArticol gol, cu proprietatile * cerute de frm_articol_factura, valori implicite corecte (cantitate=1, gestionabil=0, * preturi_cu_tva=0, proc_tvav NULL - ca Init sa aleaga singur cota standard) * - Thisform.AdaugaLinieTvdDinArticol (omodificari.vc2, frm_modific2024): adauga in tvd o linie * noua cu id_vanzare_det=0 dintr-un poArticol deja completat (simuleaza ce lasa dialogul dupa * OK, fara sa deschida dialogul modal - netestabil headless, vezi raportul) - valoarea, flagul * pret_cu_tva, lmodificat si bara de totaluri (ActualizeazaBaraTotaluri) trebuie actualizate * Documentul nu e ancorat pe cod (se realoca la fiecare salvare) - descoperit prin descopera_caz_test.prg. * Nu scrie in Oracle - doar in cursorul tvd, in memorie. QUIT la final. SET SAFETY OFF SET TALK OFF PUBLIC gcErrLog gcErrLog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_adauga_linie_articol_log.txt' STRTOFILE('start' + CHR(13) + CHR(10), gcErrLog) ON ERROR DO test_error_handler WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() 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), gcErrLog, 1) QUIT ENDIF SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\programe\ofacturare_editare.prg ADDITIVE SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\descopera_caz_test.prg ADDITIVE *!* test_init_env_auto incarca clasa omodificari din working copy-ul ROACONT (alt SET PATH) - *!* o eliberam si o reincarcam pe cea de sub test, cu cale completa RELEASE CLASSLIB omodificari SET CLASSLIB TO D:\ROA\ROAFACTURARE\COMUN\clase\omodificari.vcx ADDITIVE PUBLIC gnPass, gnFail gnPass = 0 gnFail = 0 *========================= 1) CreeazaPoArticolNouTvd - obiect gol, valori implicite ========================= LOCAL loArt loArt = CreeazaPoArticolNouTvd(9999, 'ART999', 'ARTICOL TEST NOU', 'BUC', '707') DO asserteaza WITH 'id_articol preluat', loArt.id_articol == 9999, TRANSFORM(loArt.id_articol) DO asserteaza WITH 'codmat preluat', ALLTRIM(loArt.codmat) == 'ART999', loArt.codmat DO asserteaza WITH 'denumire preluata', ALLTRIM(loArt.denumire) == 'ARTICOL TEST NOU', loArt.denumire DO asserteaza WITH 'cantitate implicita = 1', loArt.cantitate == 1, TRANSFORM(loArt.cantitate) DO asserteaza WITH 'gestionabil = 0 (fara verificare de stoc - decizia 15)', loArt.gestionabil == 0, TRANSFORM(loArt.gestionabil) DO asserteaza WITH 'preturi_cu_tva = 0 (implicit fara TVA)', loArt.preturi_cu_tva == 0, TRANSFORM(loArt.preturi_cu_tva) DO asserteaza WITH 'proc_tvav NULL (Init alege singur cota standard)', ISNULL(loArt.proc_tvav), TRANSFORM(loArt.proc_tvav) DO asserteaza WITH 'discount_unitar = 0', loArt.discount_unitar == 0, TRANSFORM(loArt.discount_unitar) DO asserteaza WITH 'tip_valuta = 0 (RON)', loArt.tip_valuta == 0, TRANSFORM(loArt.tip_valuta) *========================= 2) AdaugaLinieTvdDinArticol - pe un document real cu articole ========================= LOCAL llCazA llCazA = DescoperaCazTest('FACTURA_ARTICOLE', 'crscaz_a') IF !llCazA STRTOFILE('EROARE: cazul FACTURA_ARTICOLE nu a fost gasit' + CHR(13) + CHR(10), gcErrLog, 1) STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcErrLog, 1) QUIT ENDIF STRTOFILE('caz A: cod=' + TRANSFORM(crscaz_a.cod) + ' id_vanzare=' + TRANSFORM(crscaz_a.id_vanzare) + ' nlin=' + TRANSFORM(crscaz_a.nlin) + CHR(13) + CHR(10), gcErrLog, 1) LOCAL llOk, lnIdSet, loForm, lnReccountInitial, lnReccountDupa, lnTotalInitial, lnTotalDupa LOCAL loArtNou, lnValoareAsteptata llOk = IncarcaCursoareModificareNota(crscaz_a.cod, crscaz_a.an, crscaz_a.luna, .F.) IF !llOk OR !Used('tact') OR Reccount('tact') = 0 STRTOFILE('EROARE: IncarcaCursoareModificareNota a esuat pe caz A' + CHR(13) + CHR(10), gcErrLog, 1) STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcErrLog, 1) 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 Select tact loForm = Createobject([frm_modific2024], lnIdSet) loForm.WindowType = 0 loForm.Show() DO asserteaza WITH 'formularul are articole (lAreArticoleVanzari)', loForm.lAreArticoleVanzari, TRANSFORM(loForm.lAreArticoleVanzari) lnReccountInitial = Reccount('tvd') loForm.ActualizeazaBaraTotaluri() lnTotalInitial = loForm.nTotalLiniiRon *!* poArticol construit ca dupa un OK de dialog: cantitate=2, pret fara TVA=100, TVA 19% loArtNou = CreeazaPoArticolNouTvd(8001, 'ART001NOU', 'ARTICOL ADAUGAT TEST', 'BUC', '707') loArtNou.cantitate = 2 loArtNou.preturi_cu_tva = 0 loArtNou.proc_tvav = 1.19 loArtNou.pretftva = 100 loArtNou.discount_unitar = 0 loArtNou.id_jtva_coloana = 1 loForm.AdaugaLinieTvdDinArticol(loArtNou) lnReccountDupa = Reccount('tvd') DO asserteaza WITH 'Reccount(tvd) creste cu 1', lnReccountDupa == lnReccountInitial + 1, TRANSFORM(lnReccountDupa) + ' (initial ' + TRANSFORM(lnReccountInitial) + ')' SELECT tvd GO BOTTOM DO asserteaza WITH 'linia noua: id_vanzare_det = 0', NVL(tvd.id_vanzare_det, -1) == 0, TRANSFORM(NVL(tvd.id_vanzare_det, -1)) DO asserteaza WITH 'linia noua: id_vanzare = nIdVanzare', tvd.id_vanzare == loForm.nIdVanzare, TRANSFORM(tvd.id_vanzare) DO asserteaza WITH 'linia noua: id_articol preluat', tvd.id_articol == 8001, TRANSFORM(tvd.id_articol) DO asserteaza WITH 'linia noua: cantitate = 2', tvd.cantitate == 2, TRANSFORM(tvd.cantitate) DO asserteaza WITH 'linia noua: pret = 100 (pretftva, flag=0)', ROUND(tvd.pret, 2) == 100, TRANSFORM(tvd.pret) DO asserteaza WITH 'linia noua: sters = 0', NVL(tvd.sters, -1) == 0, TRANSFORM(NVL(tvd.sters, -1)) DO asserteaza WITH 'linia noua: lmodificat = .T.', tvd.lmodificat == .T., TRANSFORM(tvd.lmodificat) lnValoareAsteptata = ROUND(2 * 100 * 1.19, 2) DO asserteaza WITH 'linia noua: valoare = cantitate*pret*proc_tvav', ROUND(tvd.valoare, 2) == m.lnValoareAsteptata, TRANSFORM(tvd.valoare) + ' (asteptat ' + TRANSFORM(m.lnValoareAsteptata) + ')' loForm.ActualizeazaBaraTotaluri() lnTotalDupa = loForm.nTotalLiniiRon DO asserteaza WITH 'bara de totaluri creste exact cu valoarea liniei noi', ROUND(lnTotalDupa - lnTotalInitial, 2) == m.lnValoareAsteptata, TRANSFORM(lnTotalDupa) + ' (initial ' + TRANSFORM(lnTotalInitial) + ')' STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcErrLog, 1) loForm.Release() IF Used('actactan') Use In actactan ENDIF IF Used('tact') Use In tact ENDIF IF Used('rul_temp') Use In rul_temp ENDIF IF Used('trul') Use In trul ENDIF IF Used('rul_temp_obinv') Use In rul_temp_obinv ENDIF IF Used('trul_obinv') Use In trul_obinv ENDIF IF Used('tvanz') Use In tvanz ENDIF IF Used('tvd') Use In tvd ENDIF QUIT PROCEDURE asserteaza LPARAMETERS tcNume, tlConditie, tcValoare IF m.tlConditie gnPass = gnPass + 1 STRTOFILE('PASS ' + m.tcNume + CHR(13) + CHR(10), gcErrLog, 1) ELSE gnFail = gnFail + 1 STRTOFILE('FAIL ' + m.tcNume + ' (valoare: ' + m.tcValoare + ')' + CHR(13) + CHR(10), gcErrLog, 1) ENDIF ENDPROC PROCEDURE test_error_handler LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo STRTOFILE('EROARE ' + TRANSFORM(tnError) + ' [' + tcProgram + ':' + TRANSFORM(tnLineNo) + '] ' + tcMessage + CHR(13) + CHR(10), gcErrLog, 1) ENDPROC