Files
MBS/PROYECTO/ccdir/ccprrp045.4gl
T

314 lines
9.8 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP045
OBJETIVO : Facturas Vendidas y Saldadas en un Rango de Fechas
PROGRAMADOR : Lic. Abner Montalvo
FECHA REALIZACION : Octubre 6, 1998
-------------------------------------------------------------------------------
}
GLOBALS "ccprgb000.4gl"
DEFINE fecha_inicial, fecha_final DATE
DEFINE salir, salir1, tipo_venta CHAR(1)
DEFINE cod_cliente CHAR(6),
nombre_cliente CHAR(30),
selec5 CHAR(500),
b_balance1,b_balance DECIMAL(12,2),
flag SMALLINT
DEFINE tot_gen1 RECORD
totald DECIMAL(12,2),
totalc DECIMAL(12,2),
totalg DECIMAL(12,2)
END RECORD
DEFINE sub_tot RECORD
totald DECIMAL(12,2),
totalc DECIMAL(12,2),
totalg DECIMAL(12,2),
total1 DECIMAL(12,2)
END RECORD
DEFINE clientes RECORD
valor1 DECIMAL(12,2),
valor DECIMAL(12,2)
END RECORD
DEFINE ftrango RECORD
aplica_a INTEGER,
tipo_doc CHAR(2),
num_doc INTEGER,
fecha_orig DATE,
valor DECIMAL(12,2),
tipo_cliente SMALLINT,
sec_cliente SMALLINT
END RECORD
DEFINE ftdoc RECORD
aplica_a INTEGER,
tipo_doc CHAR(2),
num_doc INTEGER,
fecha_orig DATE,
valor DECIMAL(12,2),
tipo_cliente SMALLINT,
sec_cliente SMALLINT
END RECORD
DEFINE ftsalida RECORD
aplica_a INTEGER,
tipo_doc CHAR(2),
num_doc INTEGER,
fecha_orig DATE,
valor DECIMAL(12,2),
tipo_cliente SMALLINT,
sec_cliente SMALLINT
END RECORD
FUNCTION ccprrp045()
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM ccfmrp045 FROM "ccfmrp045"
DISPLAY FORM ccfmrp045
CALL pantalla()
DISPLAY "ccprrp045" AT 4,3 ATTRIBUTE(RED)
DISPLAY " Facturas Saldadas " AT 6,25 ATTRIBUTE(BLACK)
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
CALL defecto(impresor) RETURNING imprime,letras.*, archivo
INPUT BY NAME fecha_inicial,fecha_final
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime,letras.*, archivo
AFTER FIELD fecha_inicial
IF fecha_inicial is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_inicial
END IF
BEFORE FIELD fecha_final
LET fecha_final = today
AFTER FIELD fecha_final
IF fecha_final is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
IF fecha_final < fecha_inicial THEN
LET numero_msg = 86
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF fecha_inicial is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_inicial
END IF
IF fecha_final is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
IF fecha_final < fecha_inicial THEN
LET numero_msg = 86
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
EXIT INPUT
END INPUT
LET parametro = "D"
CALL elijeimpresion(parametro) RETURNING orden,destino,letras.*
# Busca las Facturas para el rango de fechas.
LET selec5 =
" SELECT b.aplica_a, b.tipo_doc, b.num_doc, b.fecha_orig, ",
" b.valor, b.tipo_cliente, b.sec_cliente ",
" FROM cctb00001 b ",
" WHERE b.fecha_orig >= ", fecha_inicial, " AND ",
" b.fecha_orig <= ", fecha_final, " AND ",
" b.tipo_doc = 'FT' ", " AND ",
" b.status_t IS NULL ",
" ORDER BY b.fecha_orig, b.tipo_doc, b.num_doc "
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
PREPARE sel FROM selec5
DECLARE point_01 CURSOR FOR sel
# Busca los documentos que esten en el rango de fechas especificado
START REPORT reporte45 TO archivo
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
LET tot_gen1.totald = 0
LET tot_gen1.totalc = 0
LET tot_gen1.totalg = 0
FOREACH point_01 INTO ftrango.*
LET tot_gen1.totalg = 0
DISPLAY ftrango.tipo_doc AT 20,38
DISPLAY ftrango.num_doc AT 20,41
SELECT SUM(valor+monto_desc)
INTO tot_gen1.totalg
FROM cctb00001
WHERE fecha_orig >= fecha_inicial AND
fecha_orig <= fecha_final AND
aplica_a = ftrango.aplica_a AND
status_t is null
# tipo_doc NOT IN ("FT")
# IF tot_gen1.totalg IS NULL THEN
# LET tot_gen1.totalg = 0.00
# END IF
#Busca los documentos que afectan la factura, si la misma esta saldada
IF tot_gen1.totalg = 0 THEN
DECLARE point_02 CURSOR FOR
SELECT c.aplica_a, c.tipo_doc, c.num_doc, c.fecha_orig,
(c.valor + c.monto_desc), c.tipo_cliente, c.sec_cliente
FROM cctb00001 c
WHERE c.fecha_orig >= fecha_inicial AND
c.fecha_orig <= fecha_final AND
c.aplica_a = ftrango.aplica_a AND
c.tipo_doc NOT IN ("FT") AND
c.status_t IS NULL
ORDER BY c.fecha_orig, c.tipo_doc, c.num_doc
LET ftsalida.* = ftrango.*
OUTPUT TO REPORT reporte45(ftsalida.*)
FOREACH point_02 INTO ftdoc.*
DISPLAY ftdoc.tipo_doc AT 21,38
DISPLAY ftdoc.num_doc AT 21,41
LET ftsalida.* = ftdoc.*
OUTPUT TO REPORT reporte45(ftsalida.*)
END FOREACH
END IF
END FOREACH
FINISH REPORT reporte45
CALL fdestino(destino,archivo,imprime)
CLEAR SCREEN
END FUNCTION
REPORT reporte45(x)
DEFINE x RECORD
aplica_a INTEGER,
tipo_doc CHAR(2),
num_doc INTEGER,
fecha_orig DATE,
valor DECIMAL(12,2),
tipo_cliente SMALLINT,
sec_cliente SMALLINT
END RECORD
DEFINE campo1 CHAR(6)
DEFINE hora CHAR(5)
DEFINE tipo CHAR(2) ,
ventas DECIMAL(12,2),
direccion CHAR(80)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY x.aplica_a, x.tipo_doc, x.num_doc, x.fecha_orig
FORMAT
PAGE HEADER
LET hora = time
PRINT COLUMN 1, letras.comp_on
PRINT COLUMN 1, "ccprrp045",
COLUMN 31, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 103, "Pag.",
COLUMN 108, pageno using "###"
PRINT COLUMN 39, "Sistema de Cuentas por Cobrar",
COLUMN 101, today using "dd/mm/yyyy"
PRINT COLUMN 46, "Facturas Saldadas",
COLUMN 106, hora
PRINT COLUMN 42, "Del ", fecha_inicial using "dd/mm/yyyy",
" Al ", fecha_final using "dd/mm/yyyy"
SKIP 1 LINES
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------",
"-----------"
PRINT COLUMN 1, "Documento",
COLUMN 12, "Fecha",
COLUMN 28, "Valor",
COLUMN 34, "Cliente"
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------" ,
"-----------"
ON EVERY ROW
PRINT COLUMN 1, x.tipo_doc, "-",
COLUMN 4, x.num_doc USING "&&&&&&",
COLUMN 11, x.fecha_orig using "dd/mm/yyyy",
COLUMN 20, x.valor USING "##,###,##&.&&";
IF x.tipo_doc = "FT" THEN
LET nombre_cliente = NULL
SELECT nombre INTO nombre_cliente
FROM vetb00004
WHERE tipo_cliente = a.tipo_cliente AND
sec_cliente = a.sec_cliente
PRINT COLUMN 34, x.tipo_cliente USING "&&", "-",
COLUMN 36, x.sec_cliente USING "&&&&", " ",
nombre_cliente
ELSE
PRINT " "
END IF
AFTER GROUP OF x.aplica_a
PRINT COLUMN 20, "-------------"
PRINT COLUMN 4, "Balance Factura ",
COLUMN 20, GROUP SUM(x.valor) USING "##,###,##&.&&"
ON LAST ROW
PRINT letras.normal
END REPORT