Files
DECOMARMOL/PROYECTO/ccdir - Copy/ccprrp005.4gl
T
2026-09-22 20:38:51 -04:00

411 lines
13 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),
opt5 CHAR(3)
DEFINE fecha_inicial, fecha_final DATE
DEFINE salir CHAR(1)
DEFINE cobros RECORD
cuenta_no CHAR(8),
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),
descripcion CHAR(30),
documento INT,
cod_cia SMALLINT,
localidad CHAR(40),
chitbis CHAR(2)
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 "decomarmol" 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.cod_emp,a.tipo_cliente,a.sec_cliente,a.num_doc
FROM localidad,tipo_cliente,sec_cliente,num_doc
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.num_doc, a.fecha_orig, a.aplica_a, a.tipo_cliente, ",
"a.sec_cliente,a.valor,a.monto_desc,a.status_t,b.nombre,' ', a.num_cheque,a.cod_emp, ",
"c.sucnombre,d.chitbis ",
"FROM cctb00001 a LEFT OUTER JOIN sucursales c on a.cod_emp=c.sucid LEFT OUTER JOIN ",
"cctb00011 d ",
"ON a.num_doc = d.num_doc and a.tipo_doc = d.tipo_Doc ,vetb00004 b ",
"WHERE a.fecha_orig between ? and ? ",
"and a.tipo_doc = ? AND ",
" a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente 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
LET idx = 1
LET salir = "N"
WHILE salir = "N"
FETCH lrecibos INTO cobros.*
IF status = NOTFOUND THEN
LET salir = "S"
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
IF tipo = "AV" AND cobros.factura != cobros.recibo THEN
LET cobros.descuento = 0
LET cobros.monto_recibo = 0
END IF
IF cobros.status_t = "E" THEN
LET cobros.nom_cli = "NULO"
LET cobros.descuento = 0
LET cobros.monto_recibo = 0
END IF
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),
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),
descripcion CHAR(30),
documento INT,
cod_cia SMALLINT,
localidad CHAR(40),
chitbis CHAR(2)
END RECORD
DEFINE total4,total5,total6 DECIMAL(12,2)
DEFINE nombre_rp CHAR(20)
DEFINE hora CHAR(5),
otro_num INT
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
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 "---,---,---.##"," ",
otro_num 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 82, SUM(x.descuento) using "---,---,---.##",
COLUMN 99, SUM(x.monto_recibo-x.descuento)
using "---,---,---.##"
PRINT normal
LET total4 = 0
LET total5 = 0
LET total6 = 0
END REPORT