{ ------------------------------------------------------------------------------ PROGRAMA : COPRRP029 OBJETIVO : REPORTE DE COMPRAS POR SUPLIDOR PROGRAMADOR : JUAN SOTO FECHA REALIZACION : AGOSTO 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------------------- } GLOBALS "coprgb000.4gl" DEFINE rango_prt RECORD fecha_ini like cotb00014.fech_oc, fecha_fin like cotb00014.fech_oc END RECORD #---------------------------------------------------------------------------- ################# # co_suplidor()# ################# MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave CALL coprrp029() END MAIN FUNCTION coprrp029() DEFINE co_sp RECORD cod_sp LIKE cotb00001.cod_sp, cod_sp_sec like cotb00001.cod_sp_sec, nom_sp like cotb00001.nom_sp, tipo like cotb00014.tipo, num_oc like cotb00014.num_oc, fech_oc like cotb00014.fech_oc, cantidad like cotb00015.cantidad, precio like cotb00015.precio, cod_n like cotb00015.cod_n, cod_grupo like cotb00015.cod_grupo, cod_tipo like cotb00015.cod_tipo, cod_sec like cotb00015.cod_sec, tasa_cambio like cotb00031.tasa_cambio END RECORD, p_cod_sp,p_cod_sp_sec INTEGER DEFINE P_DESCRIP CHAR(30) DEFINE total1 DECIMAL(14,2) DEFINE criterio CHAR(50) DEFINE selec1,selec2 CHAR(600) DEFINE tipo_papel, numero_msg SMALLINT OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cofmrp029 from "cofmrp029" DISPLAY FORM cofmrp029 # INDICA EL TIPO DE PAPEL PARA LA IMPRESION LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME rango_prt.fecha_ini,rango_prt.fecha_fin, p_cod_sp,p_cod_sp_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET handler = configureOutput("SVG") START REPORT compras_s TO XML HANDLER handler DECLARE curs_1 CURSOR FOR SELECT a.cod_sp,a.cod_sp_sec,a.nom_sp,b.tipo,b.num_oc,b.fech_oc,c.cantidad, c.precio,c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, d.tasa_cambio FROM cotb00001 a, cotb00014 b, cotb00015 c, OUTER cotb00031 d WHERE a.cod_sp_sec = b.cod_sp_sec and a.cod_sp = b.cod_sp and a.cod_sp = p_cod_sp and a.cod_sp_sec = p_cod_sp_sec and b.num_oc = c.num_oc and b.tipo IS NOT NULL AND c.cod_mon = d.cod_mon and c.status_t is null and b.fech_oc between rango_prt.fecha_ini and rango_prt.fecha_fin ORDER BY b.num_oc,b.tipo,c.precio,c.cod_n,c.cod_grupo,c.cod_tipo DISPLAY " " AT 2,1 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) FOREACH curs_1 INTO co_sp.* OUTPUT TO REPORT compras_s(co_sp.*) END FOREACH DECLARE curs_2 CURSOR FOR SELECT a.cod_sp,a.cod_sp_sec,a.nom_sp,b.tipo,b.num_oc,b.fech_oc,c.cantidad, c.precio,c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, d.tasa_cambio FROM cotb00001 a, cotb00033 b, cotb00034 c, OUTER cotb00031 d WHERE a.cod_sp_sec = b.cod_sp_sec and a.cod_sp = b.cod_sp and a.cod_sp = p_cod_sp and a.cod_sp_sec = p_cod_sp_sec and b.num_oc = c.num_oc and b.tipo IS NULL AND c.cod_mon = d.cod_mon and c.status_t is null and b.fech_oc between rango_prt.fecha_ini and rango_prt.fecha_fin ORDER BY b.num_oc,b.tipo,c.precio,c.cod_n,c.cod_grupo,c.cod_tipo DISPLAY " " AT 2,1 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 2,1 ATTRIBUTE (REVERSE) FOREACH curs_2 INTO co_sp.* OUTPUT TO REPORT compras_s(co_sp.*) END FOREACH FINISH REPORT compras_s CLEAR FORM # CLEAR SCREEN END FUNCTION #------------------------------------------------------------------------------- ## DEFINICION DEL REGISTRO DE SALIDA REPORT compras_s(x) DEFINE x RECORD cod_sp LIKE cotb00001.cod_sp, cod_sp_sec like cotb00001.cod_sp_sec, nom_sp like cotb00001.nom_sp, tipo like cotb00014.tipo, num_oc like cotb00014.num_oc, fech_oc like cotb00014.fech_oc, cantidad like cotb00015.cantidad, precio like cotb00015.precio, cod_n like cotb00015.cod_n, cod_grupo like cotb00015.cod_grupo, cod_tipo like cotb00015.cod_tipo, cod_sec like cotb00015.cod_sec, tasa_cambio like cotb00031.tasa_cambio END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_off, doce,normal CHAR(2) DEFINE p_descrip1,p_descrip CHAR(30) , nombre_m CHAR(20) DEFINE base2 INTEGER DEFINE valor,valor2 DECIMAL(14,2) DEFINE hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 PAGE LENGTH 150 FORMAT PAGE HEADER LET hora = time LET l = (123 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1,comp_on PRINT COLUMN 1, "coprrp029", COLUMN l, p_companias.nombre CLIPPED, COLUMN 116, "Pag. ",pageno using "###" PRINT COLUMN 43, " SISTEMA DE COMPRAS ", COLUMN 116, today using "dd/mm/yyyy" PRINT COLUMN 42, " REPORTE DE COMPRA POR SUPLIDOR ", COLUMN 116, hora PRINT COLUMN 45, "DEL ", rango_prt.fecha_ini USING "dd/mm/yyyy", " AL ", rango_prt.fecha_fin USING "dd/mm/yyyy" ## IMPRESION DE ENCABEZADOS SKIP 1 LINE PRINT COLUMN 1, "FECHA: ",today using "dd/mm/yyyy" PRINT COLUMN 1, "SUPLIDOR: ", x.cod_sp using "##","-", x.cod_sp_sec using "####"," ",x.nom_sp SKIP 1 LINE PRINT COLUMN 1, negrillas_on PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-----------------------------------" SKIP 1 LINE PRINT COLUMN 1, "NUMERO/ORDEN", COLUMN 17, "FECHA", COLUMN 24, "CODIGO/PROD.", COLUMN 48, " DESCRIPCION", COLUMN 84, "CANTIDAD", COLUMN 100, "PRECIO/UN.", COLUMN 114, "TASA", COLUMN 125, "TOTAL " PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-----------------------------------" PRINT COLUMN 1, negrillas_off ## IMPRESION DEL DETALLE ON EVERY ROW IF x.tipo = "01" THEN SELECT z.descrip_esp INTO p_descrip from intb00001 z where z.cod_n = x.cod_n and z.cod_grupo = x.cod_grupo and z.cod_tipo = x.cod_tipo and z.cod_sec = x.cod_sec END IF IF x.tipo = "02" THEN SELECT z.descrip_esp INTO p_descrip from iptb00002 z where z.cod_n = x.cod_n and z.cod_grupo = x.cod_grupo and z.cod_tipo = x.cod_tipo and z.cod_sec = x.cod_sec END IF IF x.tipo = "03" THEN SELECT z.descrip_esp INTO p_descrip from irtb00001 z where z.cod_n = x.cod_n and z.cod_grupo = x.cod_grupo and z.cod_tipo = x.cod_tipo and z.cod_sec = x.cod_sec END IF LET base2 = 1 IF base2 IS NULL OR base2 = 0 THEN LET base2 = 1 END IF LET valor = (x.cantidad / base2) * x.precio LET valor2 = valor * x.tasa_cambio PRINT COLUMN 1, x.num_oc USING "&&&&&&", COLUMN 14, x.fech_oc USING "DD/MM/YYYY", COLUMN 26, x.cod_n USING "&&&&","-",x.cod_grupo USING "&&&&", "-", x.cod_tipo USING "&&&&","-", x.cod_sec USING "&&&&", COLUMN 37, p_descrip CLIPPED, " ",nombre_m CLIPPED," ", p_descrip1 CLIPPED, COLUMN 78, x.cantidad USING "###,###,###.##", COLUMN 95, x.precio USING "###,###,###.##", COLUMN 113, x.tasa_cambio USING "##.##", COLUMN 118, valor2 USING "###,###,###.##" AFTER GROUP OF x.num_oc SKIP 1 LINE ON LAST ROW PRINT COLUMN 1, negrillas_on PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-----------------------------------" PRINT COLUMN 7, " TOTAL GENERAL : ", COLUMN 118, SUM(valor2) USING "###,###,###.##" PRINT COLUMN 1, negrillas_off # PRINT COLUMN 1,comp_off END REPORT