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

417 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(10,2),
descuento DECIMAL(10,2),
status_t CHAR(1),
nom_cli CHAR(30),
descripcion CHAR(30),
documento INT,
cod_cia SMALLINT
END RECORD
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
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
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
INPUT BY NAME tipo,fecha_inicial,fecha_final
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
# Busca los recibos de pagos para el rango de fechas especificado
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 ",
"FROM cctb00001 a,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.cod_cia,a.num_doc "
DISPLAY "<< Estoy Buscando los Documentos. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
DISPLAY " " AT 19,14
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
LET opt5 = fgl_winquestion("IMPRESION","DESEA REPORTE POR PANTALLA?","YES","YES|NO","question",0)
IF opt5 = "NO" THEN
START REPORT cobros_ft TO archivo
ELSE
START REPORT cobros_ft TO screen
END IF
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 salir = "N"
WHILE salir = "N"
FETCH lrecibos INTO cobros.*
IF status = NOTFOUND THEN
LET salir = "S"
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
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()
END WHILE
LET progreso = 100
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
FINISH REPORT cobros_ft
CLEAR SCREEN
LET opt = fgl_winquestion("Atencion","Desea Imprimir Reporte?",
"cancel","yes|no|cancel","question",0)
LET opt = UPSHIFT(opt)
IF opt = "YES" 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(10,2),
descuento DECIMAL(10,2),
status_t CHAR(1),
nom_cli CHAR(30),
descripcion CHAR(30),
documento INT,
cod_cia SMALLINT
END RECORD
DEFINE total1,total2,total3,total4,total5,total6,
total_monto,total_desc,total_neto DECIMAL(12,2)
DEFINE letrero CHAR(4)
DEFINE nombre_rp CHAR(20)
DEFINE hora CHAR(5),
otro_num INT
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY x.cod_cia,x.recibo,x.factura
FORMAT
PAGE HEADER
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"
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------" ,
"-----------"
# , negrillas_off
BEFORE GROUP OF x.cuenta_no
PRINT COLUMN 1, negrilla_on
PRINT COLUMN 1, x.cuenta_no clipped," ",x.descripcion,
negrillas_of
BEFORE GROUP OF x.cod_cia
SKIP 1 LINE
IF x.cod_cia = 1 THEN
PRINT "SAN CRISTOBAL"
END IF
IF x.cod_cia = 2 THEN
PRINT "SANTO DOMINGO"
END IF
IF x.cod_cia = 3 THEN
PRINT "SANTIAGO"
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
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 "&&&&&&"
AFTER GROUP OF x.recibo
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 "---,---,---.##"
SKIP 1 LINE
AFTER GROUP OF x.cuenta_no
PRINT 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 "---,---,---.##"
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