{ ------------------------------------------------------------------------------- PROGRAMA : ACPRRP002 OBJETIVO : Listado de depreciacion por tipo PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Sept. 28, 1993 ------------------------------------------------------------------------------- } GLOBALS "acprgb000.4gl" ##### Definicion de las variables del reporte DEFINE act_fij2 RECORD codigo SMALLINT, descripcion CHAR(30), cuenta_no CHAR(8), vida_util DECIMAL(12,2), valor_compra DECIMAL(12,2), deprec DECIMAL(12,2), status_t CHAR(1) END RECORD DEFINE tasa1 DECIMAL (8,2) 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 acprrp002() END MAIN ###### Funcion de busqueda de informacion FUNCTION acprrp002() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM acfmrp002 FROM "acfmrp001" DISPLAY FORM acfmrp002 DISPLAY "acprrp002" AT 4,3 DISPLAY "Depreciacion por tipo" AT 6,29 # Creando el criterio de busqueda de informacion 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 CONSTRUCT criterio ON c.codigo,c.cuenta_no FROM codigo,cuenta_no IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF SELECT prima INTO tasa1 FROM vetb00019 WHERE disponible = "S" LET selec1 = "SELECT c.codigo,c.descripcion,c.cuenta_no,c.duracion,SUM(a.monto),c.status_t ", "FROM actb00001 c,actb00004 a,actb00002 b ", "WHERE c.codigo=a.codigo AND (c.status_t IS NULL) AND a.status_t IS NULL AND ", " a.fecha <= ? AND a.cod_mov = b.cod_mov AND b.uso = '1' AND ", criterio CLIPPED, "GROUP BY c.codigo,c.descripcion,c.cuenta_no,c.duracion,c.status_t" DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE busca_act FROM selec1 DECLARE activos1 SCROLL CURSOR FOR busca_act OPEN activos1 USING fecha_corte CALL seleccionarsalida() RETURNING r_output CALL configureoutput(r_output) RETURNING HANDLER START REPORT depreciacion TO XML HANDLER handler DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) WHILE STATUS != NOTFOUND FETCH activos1 INTO act_fij2.* 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_fij2.deprec FROM actb00004 a WHERE a.status_t IS NULL AND a.codigo = act_fij2.codigo AND a.fecha = fecha_corte AND a.cod_mov = 5 IF act_fij2.deprec IS NULL THEN LET act_fij2.deprec = 0 END IF ###### Si al articulo se le dio de baja la depreciacion es igual a CERO(0) OUTPUT TO REPORT depreciacion(act_fij2.*) END WHILE FINISH REPORT depreciacion END FUNCTION #### Funcion que genera el reporte REPORT depreciacion(x) DEFINE x RECORD codigo SMALLINT, descripcion CHAR(30), cuenta_no CHAR(8), vida_util DECIMAL(12,2), valor_compra DECIMAL(12,2), deprec DECIMAL(12,2), status_t CHAR(1) END RECORD DEFINE hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 PAGE LENGTH 100 ##### Sorteando la salida de la informacion ORDER BY x.cuenta_no,x.codigo FORMAT PAGE HEADER LET hora = time LET l = (130 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT COLUMN 1, comp_on PRINT COLUMN 1, "acprrp002", COLUMN l, p_companias.nombre CLIPPED, COLUMN 125, "Pag. ",pageno USING "###" LET l = (130 - LENGTH("Sistema De Activo Fino"))/2 PRINT COLUMN l, "Sistema De Activo Fino", COLUMN 125, today using "dd/mm/yyyy" LET l = (130 - LENGTH("Depreciacion por Tipo"))/2 PRINT COLUMN l, "Depreciacion por Tipo", COLUMN 128, hora PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------" PRINT COLUMN 45, "Deprec. Mes", COLUMN 62, "Deprec. Trim.", COLUMN 103, "Deprec. Mes", COLUMN 120, "Deprec. Trim." PRINT COLUMN 1, "Activo", COLUMN 45, "Moneda Nac.", COLUMN 62, "Moneda Nac.", COLUMN 85, "Cambio", COLUMN 103, "Moneda Ext.", COLUMN 120, "Moneda Ext." PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------" # , negrillas_off ON EVERY ROW #### Acumulando los totales de las columnas por cuenta PRINT COLUMN 1,x.codigo USING "&&&&&&"," ",x.descripcion CLIPPED, COLUMN 44,x.deprec USING "###,###.##", COLUMN 62,x.deprec * 3 USING "###,###.##", COLUMN 85,tasa1 USING "###.##", COLUMN 103,x.deprec/tasa1 USING "###.##", COLUMN 120,(x.deprec*3)/tasa1 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 41,GROUP SUM(x.deprec) USING "##,###,###.##", COLUMN 59,GROUP SUM(x.deprec * 3) USING "##,###,###.##", COLUMN 96,GROUP SUM(x.deprec)/tasa1 USING "##,###,###.##", COLUMN 117,GROUP SUM(x.deprec*3)/tasa1 USING "##,###,###.##" PRINT COLUMN 1,negrillas_off ON LAST ROW PRINT COLUMN 1,negrillas_on PRINT COLUMN 5,"T O T A L GRAL. ", COLUMN 41,SUM(x.deprec) USING "##,###,###.##", COLUMN 59,SUM(x.deprec*3) USING "##,###,###.##", COLUMN 96,SUM(x.deprec)/tasa1 USING "##,###,###.##", COLUMN 117,SUM(x.deprec*3)/tasa1 USING "##,###,###.##" PRINT COLUMN 1,negrillas_off,normal END REPORT