{ ------------------------------------------------------------------------------- PROGRAMA : ACPRRP006 OBJETIVO : depreciacion Anual y Trimestral PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Sept. 28, 1993 ------------------------------------------------------------------------------- } GLOBALS "acprgb000.4gl" ##### Definicion de las variables del reporte DEFINE act_fij6 RECORD codigo SMALLINT, descripcion CHAR(30), cuenta_no CHAR(8), vida_util INTEGER, valor_compra DECIMAL(12,2), status_t CHAR(1) 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 acprrp006() END MAIN ###### Funcion de busqueda de informacion FUNCTION acprrp006() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM acfmrp006 FROM "acfmrp006" DISPLAY FORM acfmrp006 CALL pantalla() DISPLAY "acprrp006" AT 4,3 DISPLAY "Depreciacion Trimestral y Anual" AT 6,25 LET tipo_papel = 2 CALL msgrp000(tipo_papel) # Creando el criterio de busqueda de informacion 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 ##### Selecionando la prima del dolar actual LET selec1 = "SELECT c.codigo,c.descripcion,c.cuenta_no,c.duracion,SUM(b.monto), ", " c.status_t ", "FROM actb00001 c,actb00004 b,actb00002 a ", "WHERE c.codigo = b.codigo AND c.status_t IS NULL AND ", " b.status_t IS NULL AND b.cod_mov=a.cod_mov AND a.uso = '1' AND ", criterio CLIPPED," GROUP BY 1,2,3,4,6" 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 CALL seleccionarsalida() RETURNING r_output CALL configureoutput(r_output) RETURNING HANDLER START REPORT trimestral 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_fij6.* 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 OUTPUT TO REPORT trimestral(act_fij6.*) END WHILE FINISH REPORT trimestral END FUNCTION #### Funcion que genera el reporte REPORT trimestral(x) DEFINE x RECORD codigo SMALLINT, descripcion CHAR(30), cuenta_no CHAR(8), vida_util INTEGER, valor_compra DECIMAL(12,2), status_t CHAR(1) END RECORD DEFINE fecha5 DATE , hora CHAR(5) DEFINE dias INTEGER DEFINE deprec DECIMAL(8,2) DEFINE total2,total4 DECIMAL(12,2) 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 = (134 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT COLUMN 1, doce PRINT COLUMN 1, "acprrp006", COLUMN l, p_companias.nombre CLIPPED, COLUMN 125, "Pag. ",pageno USING "###" LET l = (134 - LENGTH("Sistema de Activos Fijos"))/2 PRINT COLUMN l, "Sistema de Activos Fijos", COLUMN 125, today using "dd/mm/yyyy" LET l = (134 - LENGTH("Depreciacion Trimestral y Anual"))/2 PRINT COLUMN l, "Depreciacion Trimestral y Anual", COLUMN 128, hora PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------" PRINT COLUMN 49, "Depreciacion", COLUMN 65, "Depreciacion", COLUMN 81, "Depreciacion", COLUMN 99, "Depreciacion", COLUMN 121, "Depreciacion" PRINT COLUMN 1, "Activo", COLUMN 49, "Trimestre 1", COLUMN 65, "Trimestre 2", COLUMN 81, "Trimestre 3", COLUMN 99, "Trimestre 4", COLUMN 121, "Anual" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------" # , negrillas_off BEFORE GROUP OF x.cuenta_no LET total2 = 0 ON EVERY ROW ###### Si al articulo se le dio de baja la trimestral es igual a CERO(0) IF x.status_t IS NOT NULL THEN LET deprec = 0 END IF 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 deprec = deprec * 3 IF total4 IS NULL THEN LET total4 = 0 END IF #### Acumulando los totales de las columnas por cuenta LET total2 = total2 + deprec LET total4 = total4 + deprec PRINT COLUMN 1,x.codigo USING "&&&&&&"," ",x.descripcion CLIPPED, COLUMN 47,deprec USING "###,###,###.##", COLUMN 63,deprec USING "###,###,###.##", COLUMN 79,deprec USING "###,###,###.##", COLUMN 97,deprec USING "###,###,###.##", COLUMN 119,deprec*4 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 47,total2 USING "###,###,###.##", COLUMN 63,total2 USING "###,###,###.##", COLUMN 79,total2 USING "###,###,###.##", COLUMN 97,total2 USING "###,###,###.##", COLUMN 119,total2*4 USING "###,###,###.##" PRINT COLUMN 1,negrillas_off ON LAST ROW PRINT COLUMN 1,negrillas_on PRINT COLUMN 5,"T O T A L GRAL ", COLUMN 47,total4 USING "###,###,###.##", COLUMN 63,total4 USING "###,###,###.##", COLUMN 79,total4 USING "###,###,###.##", COLUMN 97,total4 USING "###,###,###.##", COLUMN 119,total4*4 USING "###,###,###.##" PRINT COLUMN 1,negrillas_off,normal LET total4 = 0 END REPORT