SET SAFETY OFF SET TALK OFF SET NOTIFY OFF CLOSE DATABASES PUBLIC gcLog, gcCaz, gnPass, gnFail gcLog = "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out\probe_cont_667b.log" IF !DIRECTORY("D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out") MD "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\out" ENDIF STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcLog) gcCaz = "" gnPass = 0 gnFail = 0 ON ERROR DO AfErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() DO "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\test_init_env_auto_roafacturare.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT' IF TYPE('gnHandle') <> 'N' OR gnHandle <= 0 DO AfLog WITH "FAIL: conexiune Oracle esuata" DO Final ENDIF gnIdUtil = 8 DO AfLog WITH "ENV OK" LOCAL lnOk, lnIdPolStoc, lcSql, lcMesaj, lnIdArt667, lcNumeArt667, lnIdArtNise, lnIdNotaOrig lnOk = SQLEXEC(gnHandle, "select varvalue from optiuni where program='ROAFACTURARE' and varname='ID_POL_PRET_STOC'", "crsopt") lnIdPolStoc = IIF(lnOk > 0 AND USED('crsopt') AND !ISNULL(crsopt.varvalue), VAL(ALLTRIM(crsopt.varvalue)), 0) IF USED('crsopt') USE IN crsopt ENDIF PUBLIC gnId_pol_pret_stoc gnId_pol_pret_stoc = lnIdPolStoc DO AfLog WITH "politica stoc id_pol=" + TRANSFORM(lnIdPolStoc) IF lnIdPolStoc <= 0 DO Final ENDIF IF USED('crspol') USE IN crspol ENDIF lnOk = SQLEXEC(gnHandle, "select nume_lista_preturi, id_nota, preturi_cu_tva from crm_politici_preturi where id_pol = " + TRANSFORM(lnIdPolStoc), "crspol") IF lnOk > 0 AND USED('crspol') AND RECCOUNT('crspol') > 0 lnIdNotaOrig = crspol.id_nota DO AfLog WITH "politica nume=[" + ALLTRIM(NVL(crspol.nume_lista_preturi,[])) + "] id_nota=" + TRANSFORM(NVL(crspol.id_nota,0)) + " preturi_cu_tva=" + TRANSFORM(NVL(crspol.preturi_cu_tva,0)) ENDIF IF USED('crspol') USE IN crspol ENDIF IF !ISNULL(lnIdNotaOrig) AND NVL(lnIdNotaOrig,0) > 0 IF USED('crsn') USE IN crsn ENDIF lnOk = SQLEXEC(gnHandle, "select scd, scc from crm_note_vanzari v join note_contabile n on n.id_set=v.id_set where v.id_nota=" + TRANSFORM(lnIdNotaOrig), "crsn") IF lnOk > 0 AND USED('crsn') AND RECCOUNT('crsn') > 0 DO AfLog WITH "nota politicii: scd=[" + ALLTRIM(NVL(crsn.scd,[])) + "] scc=[" + ALLTRIM(NVL(crsn.scc,[])) + "]" ENDIF IF USED('crsn') USE IN crsn ENDIF ENDIF IF USED('crsart') USE IN crsart ENDIF lnOk = SQLEXEC(gnHandle, "select a.id_articol, e.denumire from crm_politici_pret_art a join nom_articole e on e.id_articol=a.id_articol where a.id_pol=" + TRANSFORM(lnIdPolStoc) + " and trim(e.cont)='667' and rownum=1", "crsart") IF lnOk > 0 AND USED('crsart') AND RECCOUNT('crsart') = 1 lnIdArt667 = crsart.id_articol lcNumeArt667 = ALLTRIM(NVL(crsart.denumire,[])) ENDIF IF USED('crsart') USE IN crsart ENDIF IF USED('crsartn') USE IN crsartn ENDIF lnOk = SQLEXEC(gnHandle, "select a.id_articol, e.denumire from crm_politici_pret_art a join nom_articole e on e.id_articol=a.id_articol where a.id_pol=" + TRANSFORM(lnIdPolStoc) + " and trim(e.cont)='371' and rownum=1", "crsartn") IF lnOk > 0 AND USED('crsartn') AND RECCOUNT('crsartn') = 1 lnIdArtNise = crsartn.id_articol ENDIF IF USED('crsartn') USE IN crsartn ENDIF DO AfLog WITH "--- STARE CURENTA (cu nota politicii setata) ---" lcMesaj = verifica_cont_venit_linie(lnIdArt667, lnIdPolStoc) DO AfLog WITH "667 [" + lcNumeArt667 + "] -> [" + lcMesaj + "]" IF !EMPTY(lcMesaj) gnFail = gnFail + 1 ELSE gnPass = gnPass + 1 ENDIF IF lnIdArtNise > 0 lcMesaj = verifica_cont_venit_linie(lnIdArtNise, lnIdPolStoc) DO AfLog WITH "371 art=" + TRANSFORM(lnIdArtNise) + " -> [" + lcMesaj + "]" ENDIF DO AfLog WITH "--- REPRODUCERE: id_nota politica = NULL (tranzactie, ROLLBACK la final) ---" lnOk = SQLEXEC(gnHandle, "UPDATE crm_politici_preturi SET id_nota = NULL WHERE id_pol = " + TRANSFORM(lnIdPolStoc)) DO AfLog WITH "update id_nota=NULL lnOk=" + TRANSFORM(lnOk) lcMesaj = verifica_cont_venit_linie(lnIdArt667, lnIdPolStoc) DO AfLog WITH "667 art=" + TRANSFORM(lnIdArt667) + " fara nota politica -> [" + lcMesaj + "]" IF !EMPTY(lcMesaj) gnPass = gnPass + 1 DO AfLog WITH "REPRODUS: eroarea 'nu are cont de venit' apare cand politica nu are nota si articolul e 667" ELSE gnFail = gnFail + 1 DO AfLog WITH "NU S-A REPRODUS" ENDIF lcMesaj = deriva_cont_venit_fara_pol(lnIdArt667, "667") DO AfLog WITH "deriva_cont_venit_fara_pol(667,667)=[" + lcMesaj + "]" DO AfLog WITH "--- simulare cursor_articol Oracle pentru articolul 667, fara nota politica ---" lcSql = "select nvl(pack_facturare.nid_venchelt, nvl(a.id_venchelt, 0)) as id_venchelt, " + ; "(case when " + TRANSFORM(lnIdPolStoc) + " = 0 then nvl(a.id_nota, b.id_nota) else b.id_nota end) as nota_fol, " + ; "d.scd as scd, d.scc as scc, d.id_set " + ; "from crm_politici_pret_art a " + ; "left join crm_politici_preturi b on a.id_pol = b.id_pol " + ; "left join crm_note_vanzari c on (case when a.id_pol = " + TRANSFORM(lnIdPolStoc) + " then nvl(a.id_nota, b.id_nota) else b.id_nota end) = c.id_nota " + ; "left join note_contabile d on d.id_set = c.id_set " + ; "where a.id_pol = " + TRANSFORM(lnIdPolStoc) + " and a.id_articol = " + TRANSFORM(lnIdArt667) IF USED('crssim') USE IN crssim ENDIF lnOk = SQLEXEC(gnHandle, lcSql, "crssim") IF lnOk > 0 AND USED('crssim') IF RECCOUNT('crssim') > 0 DO AfLog WITH "Oracle ar folosi nota " + TRANSFORM(NVL(crssim.nota_fol,0)) + " -> scd=[" + ALLTRIM(NVL(crssim.scd,[])) + "] scc=[" + ALLTRIM(NVL(crssim.scc,[])) + "] => daca scc e gol, FACT-033 'nu are cont de venit'" ELSE DO AfLog WITH "Oracle: zero randuri pentru articol in politica" ENDIF ENDIF IF USED('crssim') USE IN crssim ENDIF DO Final PROCEDURE AfLog LPARAMETERS tcMsg STRTOFILE(tcMsg + CHR(13) + CHR(10), gcLog, 1) ENDPROC PROCEDURE AfErr LPARAMETERS tnErr, tcMsg, tcProg, tnLine DO AfLog WITH "ERROR " + TRANSFORM(tnErr) + " [" + gcCaz + tcProg + ":" + TRANSFORM(tnLine) + "] " + tcMsg ENDPROC PROCEDURE Final IF TYPE('gnHandle') = 'N' AND gnHandle > 0 SQLEXEC(gnHandle, "ROLLBACK") DO AfLog WITH "ROLLBACK trimis" ENDIF DO AfLog WITH "TOTAL PASS=" + TRANSFORM(gnPass) + " FAIL=" + TRANSFORM(gnFail) DO AfLog WITH "END " + TTOC(DATETIME()) QUIT ENDPROC