Files
MBS/PROYECTO/acdir/acprrp003.4gl
T

281 lines
9.5 KiB
Plaintext

{
-------------------------------------------------------------------------------
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