* test_s8_pas1_cursuri.prg * S8 pas 1 - continuare investigare read-only: CURS/MULTIPLICATOR nu exista direct pe * VANZARI_DETALII (confirmat de test_s8_pas1_ddl_view.prg). Aici se verifica VANZARI_CURSURI: * structura, cheia de join catre o linie de vanzare, si daca join-ul ar multiplica randurile * view-ului (risc de cardinalitate). Nu scrie nimic in Oracle. QUIT la final. SET SAFETY OFF SET TALK OFF PUBLIC gcErrLog gcErrLog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_s8_pas1_cursuri_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', 2026, 8 IF gnHandle <= 0 STRTOFILE('EROARE: conectare esuata' + CHR(13) + CHR(10), gcErrLog, 1) QUIT ENDIF LOCAL lcOut, lcSql lcOut = '' *!* --- 1. exista tabela VANZARI_CURSURI? coloanele ei --- lcSql = [select column_id, column_name, data_type from all_tab_columns where owner = 'MARIUSM_AUTO' and table_name = 'VANZARI_CURSURI' order by column_id] IF Used('crscur') Use In crscur ENDIF IF goExecutor.oExecute(m.lcSql, [crscur]) < 0 lcOut = lcOut + 'EROARE VANZARI_CURSURI: ' + goExecutor.cEroare + CHR(13) + CHR(10) ELSE lcOut = lcOut + '--- VANZARI_CURSURI, coloane (' + TRANSFORM(RECCOUNT('crscur')) + ') ---' + CHR(13) + CHR(10) IF RECCOUNT('crscur') = 0 lcOut = lcOut + '(tabela nu exista sau owner gresit)' + CHR(13) + CHR(10) ELSE SELECT crscur SCAN lcOut = lcOut + TRANSFORM(column_id) + '. ' + ALLTRIM(column_name) + ' ' + ALLTRIM(data_type) + CHR(13) + CHR(10) ENDSCAN ENDIF USE IN crscur ENDIF goExecutor.oReset() STRTOFILE(m.lcOut, gcErrLog, 1) lcOut = '' *!* --- 2. VANZARI, coloane CURS/MULTIPLICATOR pe antet (ca sa comparam cu ce s-ar citi pe linie) --- lcSql = [select column_id, column_name, data_type from all_tab_columns where owner = 'MARIUSM_AUTO' and table_name = 'VANZARI' ] + ; [and (column_name like '%CURS%' or column_name like '%MULTIPLIC%') order by column_id] IF Used('crsvcurs') Use In crsvcurs ENDIF IF goExecutor.oExecute(m.lcSql, [crsvcurs]) < 0 lcOut = lcOut + 'EROARE VANZARI curs: ' + goExecutor.cEroare + CHR(13) + CHR(10) ELSE lcOut = lcOut + CHR(13) + CHR(10) + '--- VANZARI (antet), coloane CURS/MULTIPLICATOR (' + TRANSFORM(RECCOUNT('crsvcurs')) + ') ---' + CHR(13) + CHR(10) SELECT crsvcurs SCAN lcOut = lcOut + TRANSFORM(column_id) + '. ' + ALLTRIM(column_name) + ' ' + ALLTRIM(data_type) + CHR(13) + CHR(10) ENDSCAN USE IN crsvcurs ENDIF goExecutor.oReset() STRTOFILE(m.lcOut, gcErrLog, 1) lcOut = '' *!* --- 3. mostre de valori din VANZARI_DETALII pentru documentele 1050/1047 - PRETD, ID_VALUTAD, ID_CTR, ID_POL, DIFERENTA --- lcSql = [select id_vanzare, id_vanzare_det, id_pol, id_ctr, diferenta, pretd, id_valutad from vanzari_detalii where id_vanzare in (1050,1047) order by id_vanzare, id_vanzare_det] IF Used('crsval') Use In crsval ENDIF IF goExecutor.oExecute(m.lcSql, [crsval]) < 0 lcOut = lcOut + 'EROARE mostre 1050/1047: ' + goExecutor.cEroare + CHR(13) + CHR(10) ELSE lcOut = lcOut + CHR(13) + CHR(10) + '--- VANZARI_DETALII, mostre 1050/1047 ---' + CHR(13) + CHR(10) SELECT crsval SCAN lcOut = lcOut + 'id_vanzare=' + TRANSFORM(id_vanzare) + ' det=' + TRANSFORM(id_vanzare_det) + ; ' id_pol=' + TRANSFORM(NVL(id_pol,-1)) + ' id_ctr=' + TRANSFORM(NVL(id_ctr,-1)) + ; ' diferenta=' + TRANSFORM(NVL(diferenta,-1)) + ' pretd=' + TRANSFORM(NVL(pretd,-1)) + ; ' id_valutad=' + TRANSFORM(NVL(id_valutad,-1)) + CHR(13) + CHR(10) ENDSCAN USE IN crsval ENDIF goExecutor.oReset() STRTOFILE(m.lcOut, gcErrLog, 1) lcOut = '' *!* --- 4. cauta un document cu id_ctr populat si unul cu id_valutad populat (in afara de 1050/1047), ca proba de continut real --- lcSql = [select * from (select id_vanzare, id_vanzare_det, id_ctr, id_pol from vanzari_detalii where id_ctr is not null and sters = 0 order by id_vanzare_det desc) where rownum <= 3] IF Used('crsctr') Use In crsctr ENDIF IF goExecutor.oExecute(m.lcSql, [crsctr]) < 0 lcOut = lcOut + 'EROARE cautare id_ctr: ' + goExecutor.cEroare + CHR(13) + CHR(10) ELSE lcOut = lcOut + CHR(13) + CHR(10) + '--- exemple cu id_ctr populat (max 3) ---' + CHR(13) + CHR(10) SELECT crsctr SCAN lcOut = lcOut + 'id_vanzare=' + TRANSFORM(id_vanzare) + ' det=' + TRANSFORM(id_vanzare_det) + ' id_ctr=' + TRANSFORM(id_ctr) + ' id_pol=' + TRANSFORM(NVL(id_pol,-1)) + CHR(13) + CHR(10) ENDSCAN USE IN crsctr ENDIF goExecutor.oReset() STRTOFILE(m.lcOut, gcErrLog, 1) lcOut = '' lcSql = [select * from (select id_vanzare, id_vanzare_det, id_valutad, pretd from vanzari_detalii where id_valutad is not null and sters = 0 order by id_vanzare_det desc) where rownum <= 3] IF Used('crsval2') Use In crsval2 ENDIF IF goExecutor.oExecute(m.lcSql, [crsval2]) < 0 lcOut = lcOut + 'EROARE cautare id_valutad: ' + goExecutor.cEroare + CHR(13) + CHR(10) ELSE lcOut = lcOut + CHR(13) + CHR(10) + '--- exemple cu id_valutad populat (max 3) ---' + CHR(13) + CHR(10) SELECT crsval2 SCAN lcOut = lcOut + 'id_vanzare=' + TRANSFORM(id_vanzare) + ' det=' + TRANSFORM(id_vanzare_det) + ' id_valutad=' + TRANSFORM(id_valutad) + ' pretd=' + TRANSFORM(NVL(pretd,-1)) + CHR(13) + CHR(10) ENDSCAN USE IN crsval2 ENDIF goExecutor.oReset() STRTOFILE(m.lcOut, gcErrLog, 1) lcOut = '' STRTOFILE('done' + CHR(13) + CHR(10), gcErrLog, 1) QUIT PROCEDURE test_error_handler LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo STRTOFILE('EROARE ' + TRANSFORM(tnError) + ' [' + tcProgram + ':' + TRANSFORM(tnLineNo) + '] ' + tcMessage + CHR(13) + CHR(10), gcErrLog, 1) ENDPROC