Files
MBS/PROYECTO/cgdir/edprrp118b.4gl
T

300 lines
9.5 KiB
Plaintext

GLOBALS "cgprgb000.4gl"
FUNCTION edprrp118(
fecha1, fecha2, detalle, entra, afecta, p_companias, acumulado_arr, usuario)
DEFINE
handler
om
.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename
STRING, -- filename of Report Design Document including .4rp extension
r_output STRING, -- output format option
preview INTEGER
DEFINE
acumulado_arr DYNAMIC ARRAY OF RECORD
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE intb00005.descrip_mov,
departamento SMALLINT,
nombre CHAR(30),
consumo DECIMAL(12, 2),
cuenta CHAR(10),
gasto_ind LIKE irtb00013.costo_st,
descripcion CHAR(50),
consumo_cuenta DECIMAL(12, 2),
cuenta_inv CHAR(10)
END RECORD,
ordenar CHAR(30)
DEFINE
afecta CHAR(3),
fecha1, fecha2 DATE,
p_cctb01 RECORD LIKE cctb00001.*,
entra CHAR(14),
detalle CHAR(100),
p_companias CHAR(30),
idz INT,
###### Variables para almacenar los datos selecionados
usuario, clave CHAR(80),
impresor SMALLINT
LET r_filename = "edprrp118b.4rp"
LET idz = 1
FOR idx = 1 TO acumulado_arr.getLength()
IF idx = 1 THEN
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview = 1
CALL seleccionarsalida()
RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler =
fgl_report_commitCurrentSettings() -- commit changes
END IF
START REPORT entrada14 TO XML HANDLER HANDLER
END IF
LET ordenar =
acumulado_arr[idz].cuenta CLIPPED,
"-",
acumulado_arr[idz].departamento USING "&&&&&"
OUTPUT TO REPORT entrada14(
p_cctb01.*,
fecha1,
fecha2,
detalle,
entra,
afecta,
p_companias,
acumulado_arr[idz].*,
ordenar, usuario)
LET idz = idz + 1
END FOR
IF idx > 1 THEN
FINISH REPORT entrada14
ELSE
CALL fgl_winmessage(
"INFO",
"NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS",
"INFO")
END IF
--RUN imprime
END FUNCTION
REPORT entrada14(
x, fecha1, fecha2, detalle1, entrada, afecta, p_companias, y, xordenar, usuario)
DEFINE x RECORD LIKE cctb00001.*
DEFINE usuario VARCHAR(50)
DEFINE
y RECORD
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE intb00005.descrip_mov,
departamento SMALLINT,
nombre CHAR(30),
consumo DECIMAL(12, 2),
cuenta CHAR(10),
gasto_ind LIKE irtb00013.costo_st,
descripcion CHAR(30),
consumo_cuenta DECIMAL(12, 2),
cuenta_inv CHAR(10)
END RECORD,
xordenar VARCHAR(30)
### Acumula los valores de las diferentes cuentas para entrada diario de nomina
DEFINE
invdebito,
invcredito,
debito,
credito,
total_departamento,
total_haber,
total_deber
DECIMAL(12, 2),
detalle1, nombre_cta, rango_fecha CHAR(100),
fecha1, fecha2 DATE, #### Almacena las fecha del rango de busqueda
hora CHAR(5),
entrada CHAR(14),
actual VARCHAR(20),
afecta CHAR(3),
p_companias, desc_cuenta CHAR(30)
ORDER BY xordenar
FORMAT
FIRST PAGE HEADER
LET hora = TIME
LET actual = TODAY USING "dd/mm/yyyy"
LET rango_fecha =
"Del ",
fecha1 USING "dd/mm/yyyy",
" Al ",
fecha2 USING "dd/mm/yyyy"
LET total_deber = 0
LET total_haber = 0
BEFORE GROUP OF y.departamento
LET total_departamento = 0
AFTER GROUP OF xordenar
IF y.consumo < 0 THEN
LET debito = GROUP SUM(y.consumo_cuenta) * -1
LET credito = 0
ELSE
LET debito = 0
LET credito = GROUP SUM(y.consumo_cuenta)
END IF
PRINTX entrada,
hora,
actual,
rango_fecha,
p_companias,
y.cod_mov,
y.consumo,
y.cuenta,
y.departamento,
y.descrip_mov,
y.gasto_ind,
y.nombre,
y.consumo_cuenta,
y.descripcion,
debito,
credito,
detalle1
IF afecta = "S" THEN
BEGIN WORK
IF y.consumo < 0 THEN
INSERT INTO cgtb00004(
fecha,
tipo,
ref,
cuenta_no,
departamento,
detalle_1,
debito,
credito,
us_crea,
fech_crea)
VALUES(fecha2,
1,
entrada,
y.cuenta,
y.departamento,
detalle1,
debito,
0,
usuarios,
GETDATE())
ELSE
INSERT INTO cgtb00004(
fecha,
tipo,
ref,
cuenta_no,
departamento,
detalle_1,
debito,
credito,
us_crea,
fech_crea)
VALUES(fecha2,
1,
entrada,
y.cuenta,
y.departamento,
detalle1,
0,
credito,
usuarios,
GETDATE())
END IF
COMMIT WORK
END IF
LET total_deber = debito + total_deber
LET total_haber = credito + total_haber
ON LAST ROW
SELECT a.descripcion
INTO nombre_cta
FROM cgtb00001 a
WHERE a.cuenta_no = y.cuenta_inv
IF nombre_cta IS NULL THEN
LET nombre_cta = "CUENTA SIN DESCRIPCION"
END IF
IF y.consumo < 0 THEN
LET invcredito = SUM(y.consumo_cuenta * -1)
LET invdebito = 0
LET total_haber = invcredito + total_haber
ELSE
LET invdebito = SUM(y.consumo_cuenta)
LET invcredito = 0
LET total_deber = invdebito + total_deber
END IF
IF afecta = "S" THEN
BEGIN WORK
IF y.consumo < 0 THEN
INSERT INTO cgtb00004(
fecha,
tipo,
ref,
cuenta_no,
detalle_1,
debito,
credito,
us_crea,
fech_crea)
VALUES(fecha2,
1,
entrada,
y.cuenta_inv,
detalle1,
0,
invcredito,
usuarios,
GETDATE())
ELSE
INSERT INTO cgtb00004(
fecha,
tipo,
ref,
cuenta_no,
detalle_1,
debito,
credito,
us_crea,
fech_crea)
VALUES(fecha2,
1,
entrada,
y.cuenta_inv,
detalle1,
invcredito,
0,
usuarios,
GETDATE())
END IF
{UPDATE cgtb00011
SET referencia = referencia + 1,
us_mod = usuario,
fech_mod = getdate()
WHERE entrada_no = 5}
COMMIT WORK
END IF
PRINTX y.cuenta_inv,
total_haber,
nombre_cta,
desc_cuenta,
total_deber,
invdebito,
invcredito
END REPORT