{ ------------------------------------------------------------------------------- PROGRAMA : ACPRRP008 OBJETIVO : Listado del control de activos Fijos PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Sept. 28, 1993 ------------------------------------------------------------------------------- } GLOBALS "acprgb000.4gl" ##### Registro para buscar la inforacion DEFINE act_fij8 RECORD codigo SMALLINT, codigo_n SMALLINT, descripcion CHAR(30), cuenta_no CHAR(8), dcto_compra CHAR(10) , fech_compra DATE, vida_util SMALLINT, valor_compra DECIMAL(12,2), depr_acum DECIMAL(12,2) END RECORD #### Funcion que realiza la busqueda FUNCTION acprrp008() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM acfmrp008 FROM "acfmrp001" DISPLAY FORM acfmrp008 CALL pantalla() DISPLAY "acprrp008" AT 4,3 DISPLAY "Control de Activos Fijos" AT 6,28 LET tipo_papel = 2 CALL msgrp000(tipo_papel) INPUT BY NAME p_ano1,p_mes1 BEFORE FIELD p_ano1 LET p_ano1 = YEAR(TODAY) DISPLAY BY NAME p_ano1 AFTER FIELD p_ano1 IF p_ano1 is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_ano1 END IF AFTER FIELD p_mes1 IF p_mes1 is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_mes1 END IF SELECT UNIQUE a.fecha_corte INTO fecha_corte FROM prdtable a WHERE a.ano = p_ano1 AND a.mes = p_mes1 IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD p_ano1 END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF # Creando criterio de busqueda de inforacion de los activos CONSTRUCT criterio ON c.codigo,c.cuenta_no FROM codigo,cuenta_no LET selec1 = "SELECT c.codigo,c.codigo_n,c.descripcion,c.cuenta_no,c.fech_compra, ", " c.fech_compra,c.duracion,SUM(a.monto) ", "FROM actb00005 c,actb00004 a,actb00002 b ", "WHERE a.codigo = c.codigo AND a.status_t IS NULL AND c.status_t IS NULL ", " AND a.fecha <= ? AND a.cod_mov = b.cod_mov AND ", " b.uso = '1' AND ",criterio CLIPPED," GROUP BY 1,2,3,4,5,6,7" DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE busca_act FROM selec1 DECLARE activos SCROLL CURSOR FOR busca_act OPEN activos USING fecha_corte START REPORT reporte_8 TO "C:\\archivo" DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) WHILE STATUS != NOTFOUND FETCH activos INTO act_fij8.* 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 SELECT SUM(a.monto) INTO act_fij8.depr_acum FROM actb00004 a,actb00002 b WHERE a.codigo = act_fij8.codigo AND a.status_t IS NULL AND a.fecha <= fecha_corte AND a.cod_mov = b.cod_mov AND b.uso = '2' IF act_fij8.depr_acum IS NULL THEN LET act_fij8.depr_acum = 0 END IF OUTPUT TO REPORT reporte_8(act_fij8.*, fecha_corte) END WHILE FINISH REPORT reporte_8 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION ###### Funcion que genera el reporte REPORT reporte_8(x,fecha5) DEFINE x RECORD codigo SMALLINT, codigo_n SMALLINT, descripcion CHAR(30), cuenta_no CHAR(8), dcto_compra CHAR(10) , fech_compra DATE, vida_util INTEGER, valor_compra DECIMAL(12,2), depr_acum DECIMAL(12,2) END RECORD DEFINE hora CHAR(5) DEFINE fecha5,fecha6 DATE DEFINE dias INTEGER DEFINE deprec DECIMAL(8,2) DEFINE valor_libro,depr_acum,total1,total2,total3,total4,total5, total6,total7,total8,total9,total10 DECIMAL(12,2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 #### Sorteando la salida de informacion ORDER BY x.cuenta_no,x.codigo FORMAT PAGE HEADER LET hora = time LET l = ( 140 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT COLUMN 1, comp_on PRINT COLUMN 1, "acprrp008", COLUMN l,p_compania.nombre CLIPPED, COLUMN 133, "Pag. ",pageno USING "###" LET l = (140 - LENGTH("Sistema de Activos Fijos"))/2 PRINT COLUMN l, "Sistema de Activos Fijos", COLUMN 133, today using "dd/mm/yy" LET l = (140 - LENGTH("Control de Activos"))/2 PRINT COLUMN l, "Control de Activos", COLUMN 136, hora LET l = (140 - LENGTH("dddddddddddd"))/2 PRINT COLUMN l, "Al ",fecha5 USING "dd/mm/yy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------" PRINT COLUMN 1, "Codigo", COLUMN 8, "Codigo", COLUMN 46, "Documento", COLUMN 57, "Fecha", COLUMN 73, "Valor", COLUMN 86, "Depreciacion", COLUMN 103, "Depreciacion", COLUMN 122, "Valor", COLUMN 137, "Vida" PRINT COLUMN 1, "Viejo", COLUMN 8, "Nuevo", COLUMN 46, "Compra", COLUMN 57, "Compra", COLUMN 73, "Original", COLUMN 86, "Acumulada", COLUMN 103, "Mes", COLUMN 122, "Libro", COLUMN 137, "Util" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------" # , negrillas_off BEFORE GROUP OF x.cuenta_no LET total1 = 0 LET total2 = 0 LET total3 = 0 LET total4 = 0 LET total5 = 0 ON EVERY ROW #### Realizando los cxalculos de depreciacion IF x.vida_util IS NULL OR x.vida_util = 0 THEN LET deprec = 0 ELSE LET deprec = (x.valor_compra/x.vida_util)/12 END IF LET valor_libro = (x.valor_compra-x.depr_acum) IF x.depr_acum > x.valor_compra THEN LET valor_libro = 1 LET depr_acum = x.valor_compra - 1 LET deprec = 0 END IF IF total6 IS NULL THEN LET total6 = 0 END IF IF total7 IS NULL THEN LET total7 = 0 END IF IF total8 IS NULL THEN LET total8 = 0 END IF IF total9 IS NULL THEN LET total9 = 0 END IF IF total10 IS NULL THEN LET total10 = 0 END IF LET total1 = total1 + x.valor_compra LET total2 = total2 + valor_libro LET total3 = total3 + x.depr_acum LET total4 = total4 + deprec LET total6 = total6 + x.valor_compra LET total7 = total7 + valor_libro LET total8 = total8 + x.depr_acum LET total9 = total9 + deprec PRINT COLUMN 1,x.codigo USING "&&&&&&", COLUMN 8,x.codigo_n USING "&&&&&&"," ",x.descripcion CLIPPED, COLUMN 46,x.dcto_compra CLIPPED, COLUMN 57,x.fech_compra USING "dd/mm/yy", COLUMN 67,x.valor_compra USING "###,###,###.##", COLUMN 84,x.depr_acum USING "###,###,###.##", COLUMN 105,deprec USING "###,###.##", COLUMN 116,valor_libro USING "###,###,###.##", COLUMN 138,x.vida_util USING "&&" AFTER GROUP OF x.cuenta_no PRINT COLUMN 1,negrillas_on PRINT COLUMN 5,"T O T A L CUENTA ",x.cuenta_no CLIPPED, COLUMN 67,total1 USING "###,###,###.##", COLUMN 84,total3 USING "###,###,###.##", COLUMN 101,total4 USING "###,###,###.##", COLUMN 116,total2 USING "###,###,###.##" PRINT COLUMN 1,negrillas_off ON LAST ROW PRINT COLUMN 1,negrillas_on PRINT COLUMN 5,"T O T A L GRAL ", COLUMN 67,total6 USING "###,###,###.##", COLUMN 84,total8 USING "###,###,###.##", COLUMN 101,total9 USING "###,###,###.##", COLUMN 116,total7 USING "###,###,###.##" PRINT COLUMN 1,negrillas_off,normal LET total6 = 0 LET total7 = 0 LET total8 = 0 LET total9 = 0 END REPORT