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

292 lines
10 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ACPRRP009
OBJETIVO : Listado del control de activos Fijos
PROGRAMADOR : JUAN FRANCISCO SOTO
FECHA REALIZACION : DICIEMBRE 19, 2001
-------------------------------------------------------------------------------
}
GLOBALS "acprgb000.4gl"
##### Registro para buscar la inforacion
DEFINE act_fij RECORD
codigo SMALLINT,
descripcion CHAR(30),
cuenta_no CHAR(8),
departamento SMALLINT,
dcto_compra CHAR(10) ,
fech_compra DATE,
vida_util SMALLINT,
status_t CHAR(1),
valor_compra DECIMAL(12,2),
depr_acum DECIMAL(12,2),
valor_libro DECIMAL(12,2),
deprec DECIMAL(12,2)
END RECORD
#### Funcion que realiza la busqueda
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 acprrp009()
END MAIN
FUNCTION acprrp009()
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM acfmrp009 FROM "acfmrp009"
DISPLAY FORM acfmrp009
# CALL pantalla()
DISPLAY "acprrp009" AT 4,3
DISPLAY "Control de Activos Fijos" AT 6,28
LET tipo_papel = 1
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,c.departamento
FROM codigo,cuenta_no,departamento
LET selec1 =
"SELECT c.codigo,c.descripcion,c.cuenta_no,c.departamento,CONVERT(CHAR(10),c.fech_compra,103), ",
" CONVERT(CHAR(10),c.fech_compra,103),c.duracion,c.status_t,SUM(a.monto) ",
"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.departamento,c.fech_compra, ",
" c.fech_compra,c.duracion,c.status_t ORDER BY 1"
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
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING HANDLER
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
LET idx = 1
WHILE STATUS != NOTFOUND
FETCH activos INTO act_fij.*
IF STATUS = NOTFOUND THEN
EXIT WHILE
END IF
IF idx = 1 THEN
START REPORT controles9 TO XML HANDLER handler
END IF
LET idx = idx + 1
LET act_fij.depr_acum = 0
LET act_fij.deprec = 0
LET act_fij.valor_libro = 0
SELECT SUM(a.monto)*-1 INTO act_fij.depr_acum FROM actb00004 a
WHERE a.codigo = act_fij.codigo AND a.status_t IS NULL AND
a.fecha <= fecha_corte AND a.monto < 0
IF act_fij.depr_acum IS NULL THEN
LET act_fij.depr_acum = 0
END IF
SELECT SUM(a.monto)*-1 INTO act_fij.deprec FROM actb00004 a
WHERE a.codigo = act_fij.codigo AND a.status_t IS NULL AND
a.fecha = fecha_corte AND a.cod_mov = 5
DISPLAY " " AT 20,10
DISPLAY "Datos---> ",act_fij.codigo USING "&&&&"," ",
act_fij.vida_util USING "&&&"," ",
act_fij.valor_compra USING "###,###,##&.&&"
AT 20,10
IF act_fij.deprec IS NULL THEN
LET act_fij.deprec = 0
END IF
#IF (act_fij.depr_acum+act_fij.deprec) >= (act_fij.valor_compra-1) THEN
IF (act_fij.depr_acum+act_fij.deprec) > (act_fij.valor_compra) THEN
LET act_fij.valor_libro = 1
LET act_fij.depr_acum = act_fij.valor_compra - 1
LET act_fij.deprec = 0
ELSE
LET act_fij.valor_libro=act_fij.valor_compra-act_fij.depr_acum
END IF
OUTPUT TO REPORT controles9(act_fij.*)
END WHILE
IF idx = 1 THEN
CALL fgl_winmessage("INFO","NO EXISTE INFORMACION CON ESOS PARAMETROS","INFO")
ELSE
FINISH REPORT controles9
END IF
END FUNCTION
###### Funcion que genera el reporte
REPORT controles9(x)
DEFINE x RECORD
codigo SMALLINT,
descripcion CHAR(30),
cuenta_no CHAR(8),
departamento SMALLINT,
dcto_compra CHAR(10) ,
fech_compra DATE,
vida_util INTEGER,
status_t CHAR(1),
valor_compra DECIMAL(12,2),
depr_acum DECIMAL(12,2),
valor_libro DECIMAL(12,2),
deprec DECIMAL(12,2)
END RECORD,
nombre_depto VARCHAR(80)
DEFINE hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
PAGE LENGTH 100
#### Sorteando la salida de informacion
ORDER BY x.cuenta_no,x.departamento,x.codigo
FORMAT
PAGE HEADER
LET hora = time
LET l = (140 - LENGTH(p_compania.nombre CLIPPED))/2
PRINT COLUMN 1, comp_on,negrillas_on
PRINT COLUMN 1, "acprrp009",
COLUMN l, p_companias.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
SKIP 1 LINE
PRINT COLUMN 1, "FECHA DE CORTE: ",fecha_corte USING "dd/mm/yy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------"
PRINT COLUMN 45, "Documento",
COLUMN 57, "Fecha",
COLUMN 73, "Valor",
COLUMN 86, "Depreciacion",
COLUMN 103, "Depreciacion",
COLUMN 122, "Valor",
COLUMN 137, "Vida"
PRINT COLUMN 1, "Activo",
COLUMN 45, "Compra",
COLUMN 57, "Compra",
COLUMN 73, "Original",
COLUMN 86, "Acumulada",
COLUMN 103, "Mes",
COLUMN 122, "Libro",
COLUMN 137, "Util"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------"
PRINT negrillas_off
ON EVERY ROW
#### Realizando los cxalculos de depreciacion
PRINT COLUMN 1, x.codigo USING "&&&&&&"," ",x.descripcion CLIPPED,
COLUMN 45, 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, x.deprec USING "###,###.##",
COLUMN 116, x.valor_libro USING "###,###,###.##",
COLUMN 138, x.vida_util USING "&&"
AFTER GROUP OF x.departamento
LET nombre_depto =null
SELECT a.nom_dpto INTO nombre_depto FROM adtb00001 a WHERE a.departamento = x.departamento
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 5, "TOTAL DEPARTAMENTO---> ",x.departamento USING "<<<<<<"," ",nombre_depto CLIPPED,
COLUMN 67, GROUP SUM(x.valor_compra) USING "###,###,###.##",
COLUMN 84, GROUP SUM(x.depr_acum)
USING "###,###,###.##",
COLUMN 101, GROUP SUM(x.deprec) USING "###,###,###.##",
COLUMN 116, GROUP SUM(x.valor_libro) USING "###,###,###.##"
PRINT COLUMN 1, negrillas_off
AFTER GROUP OF x.cuenta_no
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 5, "TOTAL CUENTA---> ",x.cuenta_no,
COLUMN 67, GROUP SUM(x.valor_compra) USING "###,###,###.##",
COLUMN 84, GROUP SUM(x.depr_acum)
USING "###,###,###.##",
COLUMN 101, GROUP SUM(x.deprec) USING "###,###,###.##",
COLUMN 116, GROUP SUM(x.valor_libro) USING "###,###,###.##"
PRINT COLUMN 1, negrillas_off
ON LAST ROW
PRINT COLUMN 1,negrillas_on
PRINT COLUMN 5,"TOTAL GRAL.---> ",
COLUMN 67, SUM(x.valor_compra) USING "###,###,###.##",
COLUMN 84, SUM(x.depr_acum) USING "###,###,###.##",
COLUMN 101, SUM(x.deprec) USING "###,###,###.##",
COLUMN 116, SUM(x.valor_libro) USING "###,###,###.##"
PRINT COLUMN 1,negrillas_off,normal
END REPORT