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

261 lines
8.6 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : CCPRRP020
OBJETIVO : Comisiones por Cobros
PROGRAMADOR : Juan Fco. Sotot
FECHA REALIZACION : Mayo 28, 1993
-------------------------------------------------------------------------------
}
GLOBALS "ccprgb000.4gl"
DEFINE ano1 CHAR(4)
DEFINE dias,mes SMALLINT,
fecha_i,fecha_f DATE
DEFINE cod_cia SMALLINT
FUNCTION ccprrp020()
DEFINE vendedor RECORD
recibo INTEGER,
sec_vend SMALLINT,
fecha_recibo DATE,
fecha_factura DATE,
factura INTEGER,
monto DECIMAL(12,2),
sec_cliente LIKE cctb00001.sec_cliente,
tipo_cliente LIKE cctb00001.tipo_cliente,
porc_venta DECIMAL(10,4),
nombre_vend CHAR(30),
apellido_vend CHAR(30) ,
vende CHAR(6)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM ccfmrp020 FROM "ccfmrp020"
DISPLAY FORM ccfmrp020
CALL pantalla()
DISPLAY "ccprrp020" AT 4,3
DISPLAY "Comision por Cobros " AT 6,29
## Tipo de papel necesario para imprimir el reporte
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
## Criterio de busqueda para la impresion
INPUT BY NAME cod_cia,ano1,mes
SELECT a.fecha_corte INTO fecha_i
FROM prdtable a
WHERE a.ano = ano1 AND
a.mes = mes
CONSTRUCT criterio ON e.cod_emp_sec FROM sec_vend
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
DISPLAY " " AT 19,14
DISPLAY "<< Buscando Informacion ... Espere Por Favor >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
LET selec =
"SELECT e.num_doc,a.sec_vend,e.fecha_orig,a.fecha_factura, ",
" a.factura,e.valor,a.sec_cliente,a.tipo_cliente ",
"FROM vetb00002 a, prdtable c,cctb00001 e ",
"WHERE e.fecha_orig between c.fecha_inicio and c.fecha_corte and ",
" a.factura = e.aplica_a and e.tipo_doc IN ('PG','AV') and c.ano = ? and ",
" c.mes = ? and a.cod_cia = ? and ",criterio clipped," and ",
" a.ventas='1' and a.status_t is null and e.status_t is null "
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
START REPORT comision_r TO "C:\\archivo"
PREPARE b_vende FROM selec
DECLARE c_vende CURSOR FOR b_vende
OPEN c_vende USING ano1,mes,cod_cia
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere >>" AT 19,14
ATTRIBUTE (REVERSE)
WHILE STATUS != NOTFOUND
FETCH c_vende INTO vendedor.*
IF status = notfound THEN
EXIT WHILE
END IF
# Control facturas a pagar
LET fecha_f = NULL
SELECT MAX(a.fecha_factura) INTO fecha_f FROM vetb00002 a
WHERE a.factura = vendedor.factura
IF fecha_f IS NOT NULL THEN
LET vendedor.fecha_factura = fecha_f
LET dias = fecha_i - fecha_f
ELSE
LET vendedor.fecha_factura = fecha_i
END IF
IF dias < 90 THEN
LET vendedor.porc_venta = 0.02
SELECT nom1_emp,apell1_emp INTO vendedor.nombre_vend,
vendedor.apellido_vend
FROM adtb00003 WHERE num_emp = vendedor.sec_vend
LET vendedor.vende = vendedor.sec_vend using "&&&&"
OUTPUT TO REPORT comision_r(vendedor.*)
END IF
END WHILE
FINISH REPORT comision_r
RUN "TYPE C:\\archivo > %USPRINT%"
CLEAR SCREEN
END FUNCTION
REPORT comision_r(x)
DEFINE x RECORD
recibo INTEGER,
sec_vend SMALLINT,
fecha_recibo DATE,
fecha_factura DATE,
factura INTEGER,
monto DECIMAL(12,2),
sec_cliente LIKE cctb00001.sec_cliente,
tipo_cliente LIKE cctb00001.tipo_cliente,
porc_venta DECIMAL(10,4),
nombre_vend CHAR(30),
apellido_vend CHAR(30) ,
vende CHAR(6)
END RECORD
DEFINE primera CHAR(1)
DEFINE nombre_mes CHAR(10)
DEFINE total_clientes INTEGER
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
DEFINE i SMALLINT,
nombrec CHAR(30)
DEFINE t_monto,porc,total_gen,total_vend,valor_pagar DECIMAL(12,2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 4
ORDER BY x.vende,x.recibo
FORMAT
PAGE HEADER
LET doble_on = ASCII 001
LET doble_off = ASCII 002
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 027, ASCII 098
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 030
LET hora = time
SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = mes
LET lj = (99 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, comp_on
PRINT COLUMN 1, "ccprrp020",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 92, "Pag. ",pageno using "###"
PRINT COLUMN 35, "Sistema de Cuentas por Cobrar",
COLUMN 90, today using "dd/mm/yyyy"
PRINT COLUMN 35, "Relacion comision por Cobros",
COLUMN 95, hora
PRINT COLUMN 40, doble_on,nombre_mes,doble_off
SKIP 1 LINES
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------"
PRINT COLUMN 100, "COMISION"
PRINT COLUMN 2, "RECIBO",
COLUMN 10, "FECHA",
COLUMN 20, "APLICACION",
COLUMN 32, "FECHA",
COLUMN 45, "CLIENTE",
COLUMN 79, "MONTO",
COLUMN 88, "COMISION",
COLUMN 100, "A PAGAR"
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------",
"--------------------"
IF total_gen is null THEN
LET total_gen = 0
END IF
SKIP 1 LINE
BEFORE GROUP OF x.vende
LET total_vend = 0
LET t_monto = 0
PRINT COLUMN 1,doble_on,"VENDEDOR : ",
x.vende CLIPPED," ", x.nombre_vend clipped," ",
x.apellido_vend clipped, doble_off
SKIP 1 LINE
ON EVERY ROW
LET nombrec = NULL
SELECT a.nombre INTO nombrec
FROM vetb00004 a
WHERE a.tipo_cliente = x.tipo_cliente and
a.sec_cliente = x.sec_cliente
LET valor_pagar = x.monto * x.porc_venta
LET porc = x.porc_venta
PRINT COLUMN 1, x.recibo using "&&&&&&",
COLUMN 9, x.fecha_factura using "dd/mm/yy",
COLUMN 20, x.factura using "&&&&&&",
COLUMN 30, x.fecha_factura USING "dd/mm/yyyy",
COLUMN 43, nombrec,
COLUMN 75, x.monto using "##,###,###.##",
COLUMN 88, x.porc_venta using "###.####",
COLUMN 100, valor_pagar using "#,###,###.##"
LET t_monto = t_monto + x.monto
LET total_vend = valor_pagar + total_vend
AFTER GROUP OF x.vende
PRINT COLUMN 75, "-------------",
COLUMN 100, "------------"
PRINT COLUMN 45, "Total A Pagar: ",
COLUMN 75, GROUP SUM(x.monto) using "##,###,###.##",
COLUMN 100, total_vend using "#,###,###.##"
LET total_gen = total_gen + total_vend
LET total_vend = 0
SKIP TO TOP OF PAGE
ON LAST ROW
PRINT comp_off
END REPORT