{ ------------------------------------------------------------------------------- PROGRAMA : COPRRP013 OBJETIVO : VALORES FOB PROGRAMADOR : Ing. Juan Fco. Soto FECHA REALIZACION : Marzo 10, 1993 ------------------------------------------------------------------------------- } GLOBALS "coprgb000.4gl" FUNCTION coprrp013() 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 num_oc INTEGER, tipo CHAR(2), 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 LET formulario = formulario CLIPPED,"cofmrp013" OPEN FORM cofmrp013 FROM "cofmrp013" DISPLAY FORM cofmrp013 CALL pantalla() DISPLAY "coprrp013" AT 4,3 DISPLAY "Valores FOB" AT 6,34 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 CONSTRUCT criterio ON b.cod_n,b.cod_grupo, b.cod_tipo,b.cod_sec FROM cod_n,cod_grupo, cod_tipo,cod_sec LET select_cost = "SELECT max(a.num_oc),a.tipo,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec ", "FROM cotb00015 a ", "WHERE a.cod_n = 1 and ", " a.tipo = '02' and ", "a.status_t is null ", "GROUP BY 2,3,4,5,6 ", "ORDER BY 3,4,5,6" DISPLAY "<< Buscando los Costos de los Activos >>" AT 19,14 ATTRIBUTE (REVERSE) PREPARE busca_costo FROM select_cost CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF DECLARE material_costo SCROLL CURSOR FOR busca_costo OPEN material_costo DISPLAY " " AT 19,14 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 ", " FROM intb00002 a, intb00001 b ", " 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.status_t is NULL AND ", "b.status_t is NULL AND ", criterio clipped, " 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 ", " FROM intb00002 a, intb00001 b ", " 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.status_t is NULL AND ", "b.status_t is NULL AND ", criterio clipped, " ORDER BY 1,2,3,4" END IF DISPLAY "<< Buscando Las Materias Primas >>" AT 19,14 ATTRIBUTE (REVERSE) PREPARE busca FROM selec DISPLAY " " AT 19,14 CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF DECLARE accion CURSOR FOR busca OPEN accion DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT maestra TO "jh" WHILE status != notfound FETCH accion INTO materia.* IF status = notfound THEN EXIT WHILE END IF LET materia.costo = 0 LET salir = "N" WHILE salir != "S" FETCH ABSOLUTE idx_c material_costo INTO costos.* IF status = notfound THEN LET idx_c = 1 LET salir = "S" EXIT WHILE END IF LET idx_c = idx_c + 1 IF costos.cod_n = materia.cod_n AND costos.cod_grupo = materia.cod_grupo AND costos.cod_tipo = materia.cod_tipo AND costos.cod_sec = materia.cod_sec THEN SELECT precio INTO materia.costo FROM cotb00015 WHERE num_oc = costos.num_oc and tipo = costos.tipo and cod_n = costos.cod_n and cod_grupo = costos.cod_grupo and cod_tipo = costos.cod_tipo and cod_sec = costos.cod_sec and status_t is null LET salir = "S" END IF IF salir = "S" THEN LET idx_c = 1 EXIT WHILE END IF END WHILE IF materia.costo is null THEN LET materia.costo = 0 END IF OUTPUT TO REPORT maestra(materia.*) END WHILE FINISH REPORT maestra CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT maestra(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 = (142 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT comp_on,doble_on PRINT COLUMN 1, "coprrp013", COLUMN l, p_companias.nombre CLIPPED, COLUMN 135, "Pag. ",pageno using "###" PRINT COLUMN 32, "Sistema de Compras", COLUMN 135, today using "dd/mm/yy" PRINT COLUMN 59, "Reporte de Valores FOB", COLUMN 138, hora PRINT COLUMN 3, ASCII 27, ASCII 80,doce PRINT COLUMN 1, "coprrp013", COLUMN 12, comp_on, COLUMN 14, doble_on, COLUMN 16, negrillas_on, COLUMN 28, p_companias.nombre CLIPPED, COLUMN 64, negrillas_off, COLUMN 65, doble_off, COLUMN 66, comp_off, COLUMN 85, "Pag. ", pageno using "###" PRINT COLUMN 1, COLUMN 38, "Sistema de Compras", COLUMN 87, today using "dd/mm/yy" PRINT COLUMN 1, COLUMN 37, "Reporte de Valor FOB", COLUMN 90, 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 = (94 - LENGTH(varia)) / 2 PRINT COLUMN l, varia # ESTA LINEA TIENE 50 GUIONES PRINT COLUMN 1, doce PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------" PRINT COLUMN 48, "Codigo", COLUMN 61, "FOB" PRINT COLUMN 1, " M a t e r i a l", COLUMN 48, "Arancel", COLUMN 61, "Libro", COLUMN 73, "FOB/Pagado", COLUMN 84, "Diferencia" # ESTA LINEA TIENE 50 GUIONES PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------" ON EVERY ROW IF x.base > 0 THEN LET x.costo = x.costo / x.base END IF PRINT COLUMN 1, x.cod_n USING "&","-", COLUMN 3, x.cod_grupo USING "&","-", COLUMN 5, x.cod_tipo USING "&&","-", COLUMN 8, x.cod_sec USING "&&&", COLUMN 12, x.descrip_esp, COLUMN 43, x.unidad_med, COLUMN 48, x.cod_nab, COLUMN 61, "___________"; IF x.costo = 0 THEN PRINT COLUMN 73, "__________"; ELSE PRINT COLUMN 73, x.costo using "##,###.####"; END IF PRINT COLUMN 84, "__________" ON LAST ROW SKIP 1 LINE PRINT COLUMN 3, "Total de Registros Impresos = ", count(*) USING "####" PRINT COLUMN comp_off END REPORT