{ ------------------------------------------------------------------------------- PROGRAMA : ACPRRP003 OBJETIVO : control de activos Fijos y Depreciacion PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Sept. 28, 1993 ------------------------------------------------------------------------------- } GLOBALS "acprgb000.4gl" ###### Definicion de las variables del reporte DEFINE act_fij3 RECORD codigo SMALLINT, descripcion CHAR(30), fech_compra DATE, vida_util SMALLINT, departamento SMALLINT, nom_dpto CHAR(30), valor_compra DECIMAL(12,2), depr_acum DECIMAL(12,2), deprec DECIMAL(12,2), valor_libro DECIMAL(12,2) END RECORD MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT to "smarmotech" user usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL acprrp003() END MAIN ##### Funcion que realiza la busqueda FUNCTION acprrp003() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM acfmrp003 FROM "acfmrp003" DISPLAY FORM acfmrp003 # CALL pantalla() DISPLAY "acprrp003" AT 4,3 DISPLAY "Control de Activos Y Depreciacion" AT 6,23 LET tipo_papel = 2 CALL msgrp000(tipo_papel) INPUT BY NAME p_ano1,p_mes1 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 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 el criterio de busqueda de la informacion CONSTRUCT criterio ON c.codigo FROM codigo LET selec1 = "SELECT UNIQUE c.codigo,c.descripcion,CONVERT(CHAR(10),c.fech_compra,103),c.duracion, ", " c.departamento,a.nom_dpto ", "FROM actb00001 c,adtb00001 a ", "WHERE ",criterio CLIPPED," AND c.status_t IS NULL AND ", " c.departamento = a.departamento AND a.status_t IS NULL ", "ORDER BY 5, 1 " DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE busca_act FROM selec1 DECLARE activos CURSOR FOR busca_act OPEN activos CALL seleccionarsalida() RETURNING r_output CALL configureoutput(r_output) RETURNING handler START REPORT con_dep TO XML HANDLER handler DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) FOREACH activos INTO act_fij3.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF DISPLAY act_fij3.departamento AT 21,35 DISPLAY act_fij3.codigo AT 21,45 SELECT SUM(a.monto) INTO act_fij3.valor_compra FROM actb00004 a,actb00002 b WHERE a.codigo = act_fij3.codigo AND a.status_t IS NULL AND a.fecha <= fecha_corte AND a.cod_mov = b.cod_mov AND b.uso = "1" SELECT SUM(a.monto)*-1 INTO act_fij3.depr_acum FROM actb00004 a WHERE a.codigo = act_fij3.codigo AND a.status_t IS NULL AND a.fecha <= fecha_corte AND a.cod_mov != 5 AND a.monto < 0 IF act_fij3.valor_compra IS NULL THEN LET act_fij3.valor_compra = 0 END IF IF act_fij3.depr_acum IS NULL THEN LET act_fij3.depr_acum = 0 END IF SELECT SUM(a.monto)*-1 INTO act_fij3.deprec FROM actb00004 a WHERE a.codigo = act_fij3.codigo AND a.status_t IS NULL AND a.fecha = fecha_corte AND a.cod_mov = 5 IF act_fij3.deprec IS NULL THEN LET act_fij3.deprec = 0 END IF IF (act_fij3.depr_acum+act_fij3.deprec)>=(act_fij3.valor_compra-1) THEN LET act_fij3.deprec = 0 LET act_fij3.depr_acum = act_fij3.valor_compra-1 LET act_fij3.valor_libro = 1 ELSE LET act_fij3.valor_libro = act_fij3.valor_compra-act_fij3.depr_acum - act_fij3.deprec END IF OUTPUT TO REPORT con_dep(act_fij3.*, fecha_corte) END FOREACH FINISH REPORT con_dep END FUNCTION #### Funcion que realiza el reporte REPORT con_dep(x,fecha5) DEFINE x RECORD codigo SMALLINT, descripcion CHAR(30), fech_compra DATE, vida_util INTEGER, departamento SMALLINT, nom_dpto CHAR(30), valor_compra DECIMAL(12,2), depr_acum DECIMAL(12,2), deprec DECIMAL(12,2), valor_libro DECIMAL(12,2) END RECORD DEFINE hora CHAR(5) DEFINE fecha5 DATE , tasa_anual DECIMAL(8,2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ###### Sorteando la salida de informacion ###### ORDER BY x.codigo FORMAT PAGE HEADER LET hora = time LET l = (153 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT COLUMN 1, comp_on PRINT COLUMN 1, "acprrp003", COLUMN l, p_companias.nombre CLIPPED, COLUMN 133, "Pag. ",pageno USING "###" LET l = (153 - LENGTH("Sistema de Activos Fijos"))/2 PRINT COLUMN l, "Sistema de Activos Fijos", COLUMN 133, today using "dd/mm/yyyy" LET l = (153 - LENGTH("Control de Activos Fijos y Depreciaciones"))/2 PRINT COLUMN l, "Control de Activos Fijos y Depreciaciones", COLUMN 136, hora PRINT COLUMN 73, "Al ",fecha5 USING "dd/mm/yyyy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------" PRINT COLUMN 73, "Fecha De", COLUMN 87, "Costo A", COLUMN 96, "Valor de", COLUMN 105, "Tasa", COLUMN 111, "Vida", COLUMN 117, "Deprec.", COLUMN 130, "Deprec.", COLUMN 143, "Valor" PRINT COLUMN 1, "Activo", COLUMN 45, "Ubicacion", COLUMN 73, "Adquisic.", COLUMN 87, "La Fecha", COLUMN 96, "Descargo", COLUMN 105, "Anual", COLUMN 111, "Util", COLUMN 117, "Mensual", COLUMN 130, "Acumulada", COLUMN 141, "En Libro" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------" # , negrillas_off ON EVERY ROW ##### Realizando los calculos de depreciacion y valor en libro del activo LET tasa_anual = 0 IF x.vida_util > 0 THEN LET tasa_anual = 100/x.vida_util END IF PRINT COLUMN 1, x.codigo USING "&&&&&&"," ",x.descripcion , COLUMN 38, x.departamento USING "&&&&"," ",x.nom_dpto , COLUMN 73, x.fech_compra USING "dd/mm/yyyy", COLUMN 82, x.valor_libro USING "##,###,###.##", COLUMN 97, "1.00", COLUMN 104, tasa_anual USING "##", COLUMN 111, x.vida_util USING "##", COLUMN 112, x.deprec USING "##,###.##", COLUMN 124, x.depr_acum USING "##,###,###.##", COLUMN 137, x.valor_libro USING "##,###,###.##" AFTER GROUP OF x.departamento PRINT COLUMN 1, negrillas_on, "Total Departamento ", x.departamento USING "&&&&", COLUMN 83, GROUP SUM(x.valor_libro) USING "###,###,###.##", COLUMN 112, GROUP SUM(x.deprec) USING "###,###,###.##", COLUMN 127, GROUP SUM(x.depr_acum) USING "###,###,###.##", COLUMN 138, GROUP SUM(x.valor_libro) USING "###,###,###.##", negrillas_off PRINT ON LAST ROW PRINT COLUMN 1, negrillas_on, "Total General : ", COLUMN 83, SUM(x.valor_libro) USING "###,###,###.##", COLUMN 112, SUM(x.deprec) USING "###,###,###.##", COLUMN 127, SUM(x.depr_acum) USING "###,###,###.##", COLUMN 138, SUM(x.valor_libro) USING "###,###,###.##", negrillas_off,normal END REPORT