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

544 lines
17 KiB
Plaintext

{
-------------------------------------------------------------------------------
caPROGRAMA : CCPRRP005
OBJETIVO : Relacion de Recibos de Pagos
PROGRAMADOR : Juan F. Soto
FECHA REALIZACION : Abril 1, 1993
-------------------------------------------------------------------------------
}
GLOBALS "ccprgb000.4gl"
DEFINE tipo CHAR(2)
DEFINE fecha_inicial, fecha_final DATE
DEFINE salir CHAR(1)
DEFINE cobros RECORD
cuenta_no CHAR(8),
tipo_doc CHAR(2),
recibo INTEGER,
fecha_recibo DATE,
factura INTEGER,
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
monto_recibo DECIMAL(12, 2),
descuento DECIMAL(12, 2),
status_t CHAR(1),
nom_cli CHAR(30),
comentario CHAR(100),
documento INT,
cod_cia SMALLINT,
localidad CHAR(40),
chitbis CHAR(2),
valor_efectivo DEC(12, 2),
valor_cheque DEC(12, 2),
valor_tarjeta DEC(12, 2),
valor_link DEC(12, 2),
bodega VARCHAR(100),
cod_mov, num_doc_alm INT,
factura_ext INT
END RECORD
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CALL startlog("CCRP05.TXT")
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
CALL defecto(
usuarios, clave, impresor)
RETURNING imprime,
negrilla_on,
negrillas_of,
doble_on,
doble_off,
comp_on,
comp_off,
doce,
normal,
archivo,
copia
CALL ccprrp005()
END MAIN
FUNCTION ccprrp005()
# WHENEVER ERROR CONTINUE
OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21
OPEN FORM ccfmrp005 FROM "ccfmrp005"
DISPLAY FORM ccfmrp005
DISPLAY "ccprrp005" AT 4, 3
DISPLAY "Documentos" AT 6, 35
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
CONSTRUCT criterio
ON a.sucid, a.tipo_cliente, a.sec_cliente, a.num_doc
FROM sucid, tipo_cliente, sec_cliente, num_doc
BEFORE CONSTRUCT
CALL localidades('1')
AFTER CONSTRUCT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
END CONSTRUCT
INPUT BY NAME tipo, fecha_inicial, fecha_final, grafico
AFTER FIELD tipo
IF tipo IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo
END IF
SELECT UNIQUE tipo_doc FROM cctb00001 WHERE tipo_doc = tipo
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD tipo
END IF
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
DISPLAY BY NAME fecha_final
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
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
SELECT a.* INTO p_companias.* FROM companias a
LET selec3 =
"SELECT a.cuenta_no,a.tipo_Doc,a.num_doc, a.fecha_orig, a.aplica_a, a.tipo_cliente, ",
"a.sec_cliente,a.valor,a.monto_desc,a.status_t,b.nombre,d.comentario, a.num_cheque,a.sucid, ",
"c.sucnombre,d.chitbis,a.valor_efectivo,a.valor_cheque,a.valor_tarjeta,a.valor_link,
x.descripcion,a.banco,a.num_cheque,a.factura_ext ",
"FROM cctb00001 a INNER JOIN vetb00004 b ON a.tipo_cliente = b.tipo_cliente AND ",
" a.sec_cliente = b.sec_cliente LEFT OUTER JOIN sucursales c on a.cod_emp=c.sucid LEFT OUTER JOIN ",
"cctb00011 d ON d.tipo_cliente = b.tipo_cliente AND d.sec_cliente = b.sec_cliente AND ",
" a.num_doc = d.num_doc and a.tipo_doc = d.tipo_Doc
LEFT OUTER JOIN intb00009 x ON a.bodega = x.cod_bodega ",
"WHERE a.fecha_orig between ? and ? ",
"and a.tipo_doc = ? AND ",
CRITERIO CLIPPED,
" ORDER BY a.num_doc "
DISPLAY "<< Estoy Buscando los Documentos. >>"
AT 19, 14
ATTRIBUTE(REVERSE, BOLD)
DISPLAY " " AT 19, 14
DISPLAY " " AT 19, 14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19, 14
ATTRIBUTE(REVERSE)
LET progreso = 20
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
PREPARE cobros_locales FROM selec3
DECLARE lrecibos CURSOR FOR cobros_locales
OPEN lrecibos USING fecha_inicial, fecha_final, tipo
# DELETE FROM tmpcobros
LET idx = 1
LET salir = "N"
WHILE salir = "N"
FETCH lrecibos INTO cobros.*
IF status = NOTFOUND THEN
LET salir = "S"
DISPLAY "salio del while"
EXIT WHILE
END IF
IF idx = 1 THEN
IF grafico = "SI" THEN
CALL seleccionarSalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING HANDLER
START REPORT cobros_ft TO XML HANDLER HANDLER
ELSE
CALL defecto(
usuarios, clave, impresor)
RETURNING imprime,
negrilla_on,
negrillas_of,
doble_on,
doble_off,
comp_on,
comp_off,
doce,
normal,
archivo,
copia
START REPORT cobros_ft TO archivo
END IF
END IF
IF cobros.monto_recibo IS NULL THEN
LET cobros.monto_recibo = 0
END IF
IF cobros.descuento IS NULL THEN
LET cobros.descuento = 0
END IF
IF cobros.monto_recibo < 0 THEN
LET cobros.monto_recibo = cobros.monto_recibo * -1
END IF
IF cobros.DESCUENTO < 0 THEN
LET cobros.descuento = cobros.descuento * -1
END IF
LET idx = idx + 1
IF tipo = "AV" AND cobros.factura != cobros.recibo THEN
LET cobros.descuento = 0
LET cobros.monto_recibo = 0
CONTINUE WHILE
END IF
IF cobros.status_t = "E" THEN
LET cobros.nom_cli = "NULO"
LET cobros.descuento = 0
LET cobros.monto_recibo = 0
END IF
# INSERT INTO tmpcobros VALUES (cobros.tipo_doc,cobros.recibo,cobros.monto_recibo,cobros.descuento)
OUTPUT TO REPORT cobros_ft(cobros.*)
LET progreso = progreso + 1
IF progreso > 80 THEN
LET progreso = 80
END IF
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
LET idx = idx + 1
END WHILE
LET progreso = 100
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
IF idx = 1 THEN
CALL fgl_winmessage(
"ERROR", "NO EXISTEN DATOS CON ESAS CONDICIONES", "INFO")
ELSE
FINISH REPORT cobros_ft
END IF
IF grafico <> "SI" THEN
RUN imprime
END IF
END FUNCTION
REPORT cobros_ft(x)
DEFINE x RECORD
cuenta_no CHAR(8),
tipo_Doc CHAR(2),
recibo INTEGER,
fecha_recibo DATE,
factura INTEGER,
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
monto_recibo DECIMAL(12, 2),
descuento DECIMAL(12, 2),
status_t CHAR(1),
nom_cli CHAR(30),
comentario CHAR(100),
documento INT,
cod_cia SMALLINT,
localidad CHAR(40),
chitbis CHAR(2),
valor_efectivo DEC(12, 2),
valor_cheque DEC(12, 2),
valor_tarjeta DEC(12, 2),
valor_link DEC(12, 2),
bodega VARCHAR(100),
cod_mov, num_doc_alm INT,
factura_ext INT
END RECORD
DEFINE total4, total5, total6 DECIMAL(12, 2)
DEFINE nombre_rp CHAR(20)
DEFINE
hora CHAR(5),
otro_num INT
OUTPUT
PAGE LENGTH 100
ORDER BY x.recibo, x.factura
FORMAT
PAGE HEADER
IF grafico <> "SI" THEN
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
ELSE
LET doble_on = NULL
LET doble_off = NULL
LET comp_on = NULL
LET comp_off = NULL
LET doce = NULL
LET normal = NULL
LET negrilla_on = NULL
END IF
LET hora = TIME
LET lj = (110 - LENGTH(p_companias.nombre CLIPPED)) / 2
PRINT COLUMN 1, comp_on, negrilla_on
PRINT COLUMN 1,
"ccprrp005",
COLUMN lj,
p_companias.nombre CLIPPED,
COLUMN 103,
"Pag. ",
PAGENO USING "###"
PRINT COLUMN 39,
"Sistema de Cuentas por Cobrar",
COLUMN 101,
TODAY USING "dd/mm/yyyy"
IF tipo = "AV" THEN
LET nombre_rp = "AVANCE ORDEN "
END IF
IF tipo = "FE" THEN
LET nombre_rp = "Factura Export."
END IF
IF tipo = "FT" THEN
LET nombre_rp = "Factura Local "
END IF
IF tipo = "PC" THEN
LET nombre_rp = "Pago de Contado"
END IF
IF tipo = "PG" THEN
LET nombre_rp = "Recibos de pago"
END IF
IF tipo = "NC" THEN
LET nombre_rp = "Notas de Creditos"
END IF
IF tipo = "OC" THEN
LET nombre_rp = "Otros Creditos"
END IF
IF tipo = "OD" THEN
LET nombre_rp = "Otros Debitos"
END IF
IF tipo = "ND" THEN
LET nombre_rp = "Notas de Debito"
END IF
PRINT COLUMN 46, nombre_rp, 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 2,
"Recibo",
COLUMN 10,
"Fecha",
COLUMN 18,
"Afecta",
COLUMN 26,
"C l i e n t e",
COLUMN 74,
"Monto",
COLUMN 86,
"Descuento",
COLUMN 107,
"Neto",
COLUMN 118,
"LOCALIDAD",
2 SPACES,
x.chitbis
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------",
"--------------------------"
# , negrillas_off
BEFORE GROUP OF x.recibo
WHENEVER ERROR CONTINUE
#BUSCA RELACION DE NUMEROS
LET otro_num = NULL
# SELECT a.num_trans INTO otro_num FROM cctb00020 a
# WHERE a.num_oc = x.recibo and a.tipo_doc =tipo
IF x.bodega IS NOT NULL THEN
LET x.bodega = 'ALMACEN: ', x.bodega CLIPPED
END IF
PRINT COLUMN 2,
x.recibo USING "######",
COLUMN 9,
x.fecha_recibo USING "dd/mm/yyyy",
2 SPACES,
x.comentario CLIPPED,
2 SPACES,
x.bodega CLIPPED,
"-",
X.cod_mov USING "<<",
"-",
X.num_doc_alm USING "<<<<<<<"
IF x.tipo_doc = 'AV' THEN
IF x.valor_efectivo > 0 THEN
PRINT 2 SPACES,
"Valor efectivo:",
x.valor_efectivo USING "###,###,###.##"
END IF
IF x.valor_cheque > 0 THEN
PRINT 2 SPACES,
"Valor Cheque :",
x.valor_cheque USING "###,###,###.##"
END IF
IF x.valor_tarjeta > 0 THEN
PRINT 2 SPACES,
"Valor Tarjeta :",
x.valor_tarjeta USING "###,###,###.##"
END IF
END IF
ON EVERY ROW
# WHENEVER ERROR CONTINUE
#BUSCA RELACION DE NUMEROS
# LET otro_num = NULL
# SELECT a.num_trans INTO otro_num FROM cctb00020 a
# WHERE a.num_oc = x.recibo and a.tipo_doc =tipo
IF tipo = "FE" OR tipo = "FT" THEN
LET x.documento = NULL
SELECT a.conduce
INTO x.factura
FROM vetb00002 a
WHERE a.factura = x.recibo
END IF
# PRINT COLUMN 2, x.recibo using "######",
# COLUMN 9, x.fecha_recibo using "dd/mm/yyyy";
IF tipo <> 'AV' THEN
PRINT COLUMN 20, x.factura USING "######";
ELSE
PRINT COLUMN 20, x.documento USING "&&&&&&";
END IF
PRINT COLUMN 27,
x.tipo_cliente USING "&&",
"-",
x.sec_cliente USING "&&&&&&",
" ",
x.nom_cli CLIPPED,
COLUMN 67,
x.monto_recibo USING "---,---,---.##",
COLUMN 82,
x.descuento USING "---,---,---.##",
COLUMN 98,
x.monto_recibo - x.descuento USING "---,---,---.##",
" ",
x.factura_ext USING "&&&&&&",
COLUMN 115,
x.localidad
AFTER GROUP OF x.recibo
IF GROUP COUNT(*) > 1 THEN
PRINT COLUMN 64,
"--------------",
COLUMN 80,
"--------------",
COLUMN 96,
"--------------"
PRINT COLUMN 67,
GROUP SUM(x.monto_recibo) USING "---,---,---.##",
COLUMN 82,
GROUP SUM(x.descuento) USING "---,---,---.##",
COLUMN 99,
GROUP SUM(x.monto_recibo - x.descuento)
USING "---,---,---.##"
END IF
SKIP 1 LINE
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 35,
"Totales --> ",
COLUMN 67,
SUM(x.monto_recibo) USING "--,---,---,---.##",
COLUMN 85,
SUM(x.descuento) USING "--,---,---,---.##",
COLUMN 103,
SUM(x.monto_recibo - x.descuento) USING "--,---,---,---.##"
SKIP 1 LINE
PRINT COLUMN 35, "******RESUMEN**********"
PRINT COLUMN 38,
"VALOR EFECTIVO :",
SUM(x.valor_efectivo) USING "###,###,###.##"
PRINT COLUMN 38,
"VALOR TRANSFERENCIA:",
SUM(x.valor_cheque) USING "###,###,###.##"
PRINT COLUMN 38,
"VALOR TARJETA :",
SUM(x.valor_tarjeta) USING "###,###,###.##"
PRINT COLUMN 38,
"VALOR LINK :",
SUM(x.valor_link) USING "###,###,###.##"
PRINT normal
LET total4 = 0
LET total5 = 0
LET total6 = 0
END REPORT