{ ------------------------------------------------------------------------------- PROGRAMA : COPRRP015 OBJETIVO : Codigos Arancelarios (Copia del coprrp013) PROGRAMADOR : Ing. Juan Fco. Soto FECHA REALIZACION : Marzo, 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------------------- } GLOBALS "coprgb000.4gl" FUNCTION coprrp015() DEFINE idx_c SMALLINT DEFINE salir CHAR(1) DEFINE mes CHAR(2) DEFINE materia RECORD cod_n LIKE intb00002.cod_n, cod_grupo LIKE intb00002.cod_grupo, cod_tipo LIKE intb00002.cod_tipo, cod_sec LIKE intb00002.cod_sec, descrip_esp LIKE intb00001.descrip_esp, pto_reorden LIKE intb00002.pto_reorden, dia_llegada LIKE intb00002.dia_llegada, cod_nab LIKE intb00002.cod_nab, bodega LIKE intb00002.bodega , unidad_med LIKE intb00001.unidad_med, base LIKE intb00002.base, costo LIKE intb00013.costo_st END RECORD, cod smallint DEFINE select_cost CHAR(1000) DEFINE costos RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, costo LIKE cotb00015.precio END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM cofmrp015 FROM "cofmrp015" DISPLAY FORM cofmrp015 CALL pantalla() DISPLAY "coprrp015" AT 4,3 DISPLAY "Codigos Arancelarios" AT 6,30 IF status < 0 THEN CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF LET tipo_papel = 1 CALL msgrp000(tipo_papel) IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF INPUT BY NAME decide AFTER FIELD decide IF decide IS NULL THEN NEXT FIELD decide END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CONSTRUCT criterio ON b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec FROM cod_n,cod_grupo,cod_tipo,cod_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF decide = "A" THEN LET selec = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp, ", " a.pto_reorden,a.dia_llegada,a.cod_nab,a.bodega,b.unidad_med, ", " a.base,MAX(c.precio) ", "FROM intb00002 a, intb00001 b, OUTER cotb00015 c ", "WHERE a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ", " a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND ", " a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ", " a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec AND ", " a.status_t is NULL AND b.status_t is NULL AND ", criterio clipped," GROUP BY 1,2,3,4,5,6,7,8,9,10,11 ORDER BY 5" ELSE LET selec = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp, ", " a.pto_reorden,a.dia_llegada,a.cod_nab,a.bodega,b.unidad_med, ", " a.base,MAX(c.precio) ", "FROM intb00002 a, intb00001 b, OUTER cotb00015 c ", "WHERE a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ", " a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND ", " a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ", " a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec AND ", " a.status_t is NULL AND b.status_t is NULL AND ", criterio clipped," GROUP BY 1,2,3,4,5,6,7,8,9,10,11 ORDER BY 1,2,3,4" END IF DISPLAY "<< Buscando Informacion... Espere Por Favor. >>" AT 19,14 PREPARE busca FROM selec DECLARE accion CURSOR FOR busca OPEN accion DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 START REPORT maestra1 TO "C:\\archivo" WHILE status != notfound FETCH accion INTO materia.* IF status = notfound THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF materia.costo IS NULL THEN LET materia.costo = 0 END IF OUTPUT TO REPORT maestra1(materia.*) END WHILE FINISH REPORT maestra1 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT maestra1(x) DEFINE x RECORD cod_n LIKE intb00002.cod_n, cod_grupo LIKE intb00002.cod_grupo, cod_tipo LIKE intb00002.cod_tipo, cod_sec LIKE intb00002.cod_sec, descrip_esp LIKE intb00001.descrip_esp, pto_reorden LIKE intb00002.pto_reorden, dia_llegada LIKE intb00002.dia_llegada, cod_nab LIKE intb00002.cod_nab, bodega LIKE intb00002.bodega, unidad_med LIKE intb00001.unidad_med, base LIKE intb00002.base, costo LIKE intb00013.costo_st END RECORD DEFINE l SMALLINT DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE hora CHAR(5) DEFINE varia CHAR(19) OUTPUT LEFT MARGIN 2 FORMAT PAGE HEADER LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET hora = time LET l = (80 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, negrillas_on PRINT COLUMN 1, "coprrp015", COLUMN l, p_companias.nombre CLIPPED, COLUMN 73, "Pag. ",pageno using "###" PRINT COLUMN 17, " Sistema de Compras", COLUMN 73, today using "dd/mm/yy" PRINT COLUMN 17, " Codigos Arancelarios", COLUMN 76, hora IF decide = "N" THEN LET varia = "N u m e r i c o" clipped ELSE LET varia = "A l f a b e t i c o" END IF LET l = (80 - LENGTH(varia)) / 2 PRINT COLUMN l, varia # ESTA LINEA TIENE 50 GUIONES PRINT COLUMN 1, "--------------------------------------------------", "-------------------------------" PRINT COLUMN 50, "Codigo" PRINT COLUMN 1, "M a t e r i a l", COLUMN 50, "Arancel", COLUMN 71, "FOB/Pagado" # ESTA LINEA TIENE 50 GUIONES PRINT COLUMN 1, "--------------------------------------------------", "-------------------------------" PRINT negrillas_off ON EVERY ROW IF x.base > 0 THEN LET x.costo = x.costo / x.base END IF PRINT COLUMN 1, x.cod_n USING "&","-", x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-", x.cod_sec USING "&&&",2 spaces, x.descrip_esp,2 spaces, x.unidad_med, COLUMN 50, x.cod_nab; IF x.costo = 0 THEN PRINT COLUMN 71, "__________" ELSE PRINT COLUMN 71, x.costo using "###,###.##" END IF ON LAST ROW SKIP 1 LINE PRINT COLUMN 3, "Total de Registros Impresos = ", count(*) USING "####" PRINT COLUMN comp_off END REPORT