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

226 lines
7.3 KiB
Plaintext

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