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

334 lines
10 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : CCPRRP034
OBJETIVO : Documentos Por Vendedor
PROGRAMADOR : Tadeo A. Ferreras F.
FECHA REALIZACION : Oct. 04, 1994
-------------------------------------------------------------------------------
}
GLOBALS "ccprgb000.4gl"
DEFINE fecha_inicial,fecha_final DATE
DEFINE puede CHAR(1)
DEFINE valor_total,total_vend,t_monto,t_monto1 DECIMAL(12,2)
DEFINE ano1 CHAR(4)
DEFINE mes SMALLINT
DEFINE cod_cia SMALLINT
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CALL ARG_VAL(7) RETURNING strconect
IF strconect = 'marmotech' THEN
CONNECT to strconect USER 'conecta' USING 'conecta'
ELSE
CONNECT to strconect USER usuarios USING clave
END IF
SELECT a.* INTO p_companias.* FROM companias a
CALL ccprrp034()
END MAIN
FUNCTION ccprrp034()
DEFINE doc_vend RECORD
sec_vend SMALLINT,
tipo CHAR(2),
tipo_cliente SMALLINT,
sec_cliente INTEGER,
num_doc INTEGER,
nombre CHAR(30),
aplica_a INTEGER,
fecha DATE,
valor DECIMAL(12,2),
monto_desc DECIMAL(12,2),
neto DECIMAL(12,2)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM ccfmrp034 FROM "ccfmrp034"
DISPLAY FORM ccfmrp034
## 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 fecha_inicial,fecha_final
AFTER FIELD fecha_inicial
IF fecha_inicial IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_inicial
END IF
LET fecha_final = today
DISPLAY BY NAME fecha_final
AFTER FIELD fecha_final
IF fecha_final IS NULL THEN
LET fecha_final = today
DISPLAY BY NAME fecha_final
END IF
IF fecha_final < fecha_inicial THEN
LET numero_msg = 51
CALL msg(numero_msg)
NEXT FIELD fecha_inicial
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 fecha_final = today
DISPLAY BY NAME fecha_final
END IF
IF fecha_final < fecha_inicial THEN
LET numero_msg = 51
CALL msg(numero_msg)
NEXT FIELD fecha_inicial
END IF
EXIT INPUT
END INPUT
CONSTRUCT criterio ON e.tipo_cliente,e.sec_cliente,e.cod_emp_sec,e.tipo_doc
FROM tipo_cliente,sec_cliente,sec_vend,tipo_doc
LET selec =
"SELECT e.cod_emp_sec,e.tipo_doc,e.tipo_cliente,e.sec_cliente,e.num_doc,a.nombre,e.aplica_a,e.fecha_orig, ",
" e.valor+e.monto_desc,e.monto_desc,e.valor ",
"FROM cctb00001 e,vetb00004 a ",
"WHERE e.fecha_orig between ? AND ? AND e.tipo_cliente IS NOT NULL AND ",
" e.sec_cliente IS NOT NULL AND ",criterio CLIPPED," and e.tipo_cliente = a.tipo_cliente and ",
" e.sec_cliente = a.sec_cliente ",
" AND e.status_t IS NULL AND e.tipo_doc NOT IN ('FT','PC') "
DISPLAY "<< Buscando Informacion ... Espere Por Favor >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
{
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
}
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING handler
START REPORT reporte34 TO XML HANDLER handler
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere >>" AT 19,14
ATTRIBUTE (REVERSE)
PREPARE comando FROM selec
DECLARE c_vende CURSOR FOR comando
OPEN c_vende USING fecha_inicial,fecha_final
LET valor_total = 0
WHILE STATUS != NOTFOUND
FETCH c_vende INTO doc_vend.*
IF status = notfound THEN
EXIT WHILE
END IF
LET puede = "S"
IF doc_vend.tipo = "AV" THEN
IF doc_vend.num_doc = doc_vend.aplica_a THEN
LET doc_vend.valor = doc_vend.valor * -1
LET puede = "S"
ELSE
LET puede = "N"
END IF
END IF
IF puede = "S" THEN
IF doc_vend.valor IS NULL THEN
LET doc_vend.valor = 0
END IF
LET valor_total = valor_total + doc_vend.valor
# DISPLAY BY NAME valor_total
OUTPUT TO REPORT reporte34(doc_vend.*)
END IF
END WHILE
FINISH REPORT reporte34
LET puede = NULL
DISPLAY BY NAME valor_total
{
LET opt = fgl_winquestion("Atencion","Desea Imprimir Reporte?",
"yes","yes|no","question",0)
LET opt = UPSHIFT(opt)
IF opt = "YES" THEN
RUN imprime
END IF}
CLEAR SCREEN
END FUNCTION
REPORT reporte34(x)
DEFINE x RECORD
sec_vend SMALLINT,
tipo CHAR(2),
tipo_cliente SMALLINT,
sec_cliente INTEGER,
num_doc INTEGER,
nombre CHAR(30),
aplica_a INTEGER,
fecha DATE,
valor DECIMAL(12,2),
monto_desc DECIMAL(12,2),
neto DECIMAL(12,2)
END RECORD
DEFINE nombre,apellido CHAR(15)
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
DEFINE t_monto,porc,total_gen,total_vend,valor_pagar DECIMAL(12,2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 4
PAGE LENGTH 100
ORDER BY x.sec_vend,x.tipo,x.num_doc
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, doce,comp_on
PRINT COLUMN 1, "ccprrp034",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 92, "Pag. ",pageno using "###"
PRINT COLUMN 31, "Sistema de Cuentas por Cobrar",
COLUMN 90, today using "dd/mm/yyyy"
PRINT COLUMN 31, " DOCUMENTOS POR VENDEDOR ",
COLUMN 95, hora
SKIP 1 LINES
PRINT COLUMN 1, "FECHA: DEL ",fecha_inicial USING "dd/mm/yy",
" AL ",fecha_final USING "dd/mm/yy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------"
PRINT COLUMN 1, "VENDEDOR",
COLUMN 40, "TIPO",
COLUMN 45, "DOCTO.",
COLUMN 94, "FECHA",
COLUMN 112, "BRUTO",
COLUMN 134, "DESCUENTO" ,
COLUMN 145, "NETO"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------"
BEFORE GROUP OF x.sec_vend
SKIP 1 LINE
SELECT a.nom1_emp,a.apell1_emp INTO nombre,apellido
FROM adtb00003 a
WHERE a.num_emp = x.sec_vend
IF STATUS = NOTFOUND THEN
LET nombre = "VENDEDOR"
LET apellido = "NO EXISTE"
END IF
LET total_vend = 0
PRINT COLUMN 1,x.sec_vend USING "&&&&"," ", nombre clipped," ",
apellido clipped;
BEFORE GROUP OF x.num_doc
LET t_monto1 = 0
ON EVERY ROW
IF x.valor IS NULL THEN
LET x.valor = 0
END IF
AFTER GROUP OF x.num_doc
PRINT COLUMN 41, x.tipo,
COLUMN 45, x.num_doc USING "&&&&&&"," ",x.tipo_cliente USING "<<"," ",
x.sec_cliente USING "<<<<<<"," ",x.nombre,
COLUMN 92, x.fecha USING "dd/mm/yy",
COLUMN 104, GROUP SUM(x.valor) USING "(((,(((,(((.##)",
COLUMN 126, GROUP SUM(x.monto_desc) USING "(((,(((,(((.##)",
COLUMN 136, GROUP SUM(x.neto) USING "(((,(((,(((.##)"
AFTER GROUP OF x.sec_vend
PRINT COLUMN 104, "---------------",
COLUMN 126, "---------------",
COLUMN 136, "---------------"
PRINT COLUMN 40, "Total Vendedor",
COLUMN 104, GROUP SUM(x.valor) USING "((,(((,(((,(((.##)",
COLUMN 126, GROUP SUM(x.monto_desc) USING "(((,(((,(((.##)",
COLUMN 136, GROUP SUM(x.neto) USING "((,(((,(((,(((.##)"
ON LAST ROW
PRINT COLUMN 104, "---------------",
COLUMN 126, "---------------",
COLUMN 136, "---------------"
PRINT COLUMN 40, "Total Gral. ",
COLUMN 104, SUM(x.valor) USING "((,(((,(((,(((.##)",
COLUMN 126, SUM(x.monto_desc) USING "(((,(((,(((.##)",
COLUMN 136, SUM(x.neto) USING "((,(((,(((,(((.##)"
PRINT COLUMN 104, "===============",
COLUMN 126, "===============",
COLUMN 136, "==============="
PRINT comp_off
END REPORT