297 lines
9.3 KiB
Plaintext
297 lines
9.3 KiB
Plaintext
{
|
|
=======================================================================
|
|
Programa : GEPRRP011
|
|
Sistema : Sistema de Informacion Gerencia Minoristas
|
|
Proceso : Clientes con Ventas Mayores a X Cantidad
|
|
Autor : Tadeo A. Ferreras
|
|
Fecha : Junio 21,1993
|
|
=======================================================================
|
|
}
|
|
GLOBALS
|
|
"geprgb000.4gl"
|
|
|
|
DEFINE ger_comp11 RECORD
|
|
cod_cia LIKE vetb00002.cod_cia,
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente SMALLINT,
|
|
nombre CHAR(30),
|
|
status_t CHAR(1),
|
|
cantidad2 DECIMAL(14,2),
|
|
cantidad1 DECIMAL(14,2),
|
|
posicion INTEGER,
|
|
codigo CHAR(6)
|
|
END RECORD,
|
|
cod1 SMALLINT
|
|
DEFINE selec9 CHAR(1000)
|
|
DEFINE salir,salir9,compa CHAR(1)
|
|
DEFINE idx9,idx1,j,m,p,s,s1 INTEGER
|
|
DEFINE ano19 CHAR(4)
|
|
DEFINE ano1,mes1 SMALLINT
|
|
DEFINE nom_mes CHAR(15)
|
|
|
|
DEFINE fecha_in,fecha_fi,fecha_in9,fecha_fi9 DATE,
|
|
cod_cli SMALLINT,
|
|
total2,cantidad1,cantidad2,cantidad3,cantidad4,cantidad5,cantidad6,
|
|
cantidad7,cantidad8,cantida9 DECIMAL(12,2)
|
|
|
|
FUNCTION geprrp011()
|
|
LET int_flag = FALSE
|
|
OPTIONS
|
|
FORM LINE 8
|
|
|
|
OPEN FORM gefmrp009 FROM "gefmrp009"
|
|
DISPLAY FORM gefmrp009
|
|
CALL pantalla()
|
|
DISPLAY "geprrp011" AT 4,3 ATTRIBUTE(RED)
|
|
|
|
DISPLAY "Ranking de Ventas Comparativas Al Ano Anterior Minoristas" AT 6,11
|
|
ATTRIBUTE(BLACK)
|
|
|
|
LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)
|
|
CALL defecto(impresor) RETURNING imprime, letras.*, archivo
|
|
|
|
INPUT BY NAME ano1,mes1,cantidad1
|
|
ON KEY(CONTROL-P)
|
|
CALL busca_printer() RETURNING imprime,letras.*, archivo
|
|
|
|
AFTER FIELD ano1
|
|
IF ano1 IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ano1
|
|
END IF
|
|
|
|
SELECT MIN(fecha_inicio) INTO fecha_in FROM prdtable
|
|
WHERE ano = ano1
|
|
|
|
SELECT MIN(fecha_inicio) INTO fecha_in9 FROM prdtable
|
|
WHERE ano = ano1 - 1
|
|
|
|
LET ano19 = ano1 - 1 USING "&&&&"
|
|
|
|
BEFORE FIELD mes1
|
|
LET mes1 = MONTH(today) USING "&&"
|
|
DISPLAY BY NAME mes1
|
|
|
|
AFTER FIELD mes1
|
|
IF mes1 IS NULL THEN
|
|
LET mes1 = MONTH(today) USING "&&"
|
|
END IF
|
|
DISPLAY BY NAME mes1
|
|
|
|
SELECT fecha_corte INTO fecha_fi FROM prdtable
|
|
WHERE ano = ano1 AND mes = mes1
|
|
|
|
SELECT fecha_corte INTO fecha_fi9 FROM prdtable
|
|
WHERE ano = ano1 - 1 AND mes = mes1
|
|
|
|
SELECT descrip INTO nom_mes FROM mestable
|
|
WHERE mes = mes1
|
|
|
|
AFTER FIELD cantidad1
|
|
IF cantidad1 IS NULL OR cantidad1 < 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cantidad1
|
|
END IF
|
|
AFTER INPUT
|
|
IF int_flag tHEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
CONSTRUCT BY NAME criterio ON a.cod_cia
|
|
ON KEY(CONTROL-P)
|
|
CALL busca_printer() RETURNING imprime,letras.*, archivo
|
|
AFTER CONSTRUCT
|
|
EXIT CONSTRUCT
|
|
END CONSTRUCT
|
|
|
|
|
|
IF int_flag tHEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET selec =
|
|
"SELECT a.cod_cia,a.tipo_cliente,a.sec_cliente,c.nombre,c.status_t,",
|
|
"SUM(a.neto) ",
|
|
"FROM vetb00002 a,vetb00004 c ",
|
|
"WHERE (a.status_t IS NULL) AND (a.fecha_factura BETWEEN ? AND ?) AND ",
|
|
" (a.ventas = '1') AND (a.tipo_cliente = c.tipo_cliente) AND ",
|
|
" (a.sec_cliente = c.sec_cliente) AND ",criterio CLIPPED,
|
|
" GROUP BY 1,2,3,4,5 HAVING SUM(a.neto) <= ? ORDER BY 6 DESC,1,2 "
|
|
|
|
DISPLAY "Buscando Informacion Ano Actual... Espere por Favor" AT 17,14
|
|
ATTRIBUTE(BOLD)
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE buscar CURSOR FOR comando
|
|
OPEN buscar USING fecha_in,fecha_fi,cantidad1
|
|
|
|
START REPORT gerencia11 TO archivo
|
|
DISPLAY "Impresion en Proceso..... Espere por Favor " AT 17,14
|
|
|
|
LET idx = 0
|
|
LET salir = "N"
|
|
WHILE salir != "S"
|
|
FETCH buscar INTO ger_comp11.*
|
|
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
|
|
|
|
LET idx = idx + 1
|
|
LET ger_comp11.posicion = idx
|
|
LET ger_comp11.cantidad1 = 0
|
|
|
|
SELECT SUM(a.neto) INTO ger_comp11.cantidad1 FROM vetb00002 a
|
|
WHERE (a.status_t IS NULL) AND (a.ventas = "1") AND
|
|
(a.fecha_factura BETWEEN fecha_in9 AND fecha_fi9) AND
|
|
(a.tipo_cliente = ger_comp11.tipo_cliente) AND
|
|
(a.sec_cliente=ger_comp11.sec_cliente) AND a.cod_cia=2
|
|
|
|
IF ger_comp11.cantidad2 IS NULL THEN
|
|
LET ger_comp11.cantidad2 = 0
|
|
END IF
|
|
IF ger_comp11.cantidad1 IS NULL THEN
|
|
LET ger_comp11.cantidad1 = 0
|
|
END IF
|
|
LET ger_comp11.codigo = ger_comp11.tipo_cliente USING "&&",
|
|
ger_comp11.sec_cliente USING "&&&&"
|
|
OUTPUT TO REPORT gerencia11(ger_comp11.*)
|
|
|
|
END WHILE
|
|
FINISH REPORT gerencia11
|
|
RUN imprime
|
|
END FUNCTION
|
|
|
|
REPORT gerencia11(x)
|
|
|
|
DEFINE x RECORD
|
|
cod_cia LIKE vetb00002.cod_cia,
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente SMALLINT,
|
|
nombre CHAR(30),
|
|
status_t CHAR(1),
|
|
cantidad2 DECIMAL(14,2),
|
|
cantidad1 DECIMAL(14,2),
|
|
posicion INTEGER,
|
|
codigo CHAR(6)
|
|
END RECORD
|
|
DEFINE j ARRAY[5000] OF RECORD
|
|
codigo CHAR(7),
|
|
nombre CHAR(30),
|
|
status_t CHAR(1),
|
|
cantidad1 DECIMAL(14,2),
|
|
cantidad2 DECIMAL(14,2),
|
|
posicion1 INTEGER,
|
|
posicion2 INTEGER
|
|
END RECORD
|
|
|
|
DEFINE mes11 SMALLINT
|
|
DEFINE nom_mes1 CHAR(15)
|
|
DEFINE descrip,descrip1 CHAR(30)
|
|
DEFINE nombre_sal CHAR(20),
|
|
|
|
hora CHAR(5)
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 2
|
|
TOP MARGIN 1
|
|
# ORDER BY x.cod_cia,x.cantidad2
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET hora = time
|
|
PRINT COLUMN 1, letras.comp_on,letras.negrillas_on
|
|
PRINT COLUMN 1, "geprrp011",
|
|
COLUMN 22, "R A Y . O . V A C D O M I N I C A N A, S. A.",
|
|
COLUMN 83, "Pag. ", pageno using "###"
|
|
PRINT COLUMN 22, " Sistema de Informacion Gerencial",
|
|
COLUMN 83, today using "dd/mm/yyyy"
|
|
PRINT COLUMN 12, "Ranking de Ventas Comparativas Ano Anterior Menor A ",
|
|
cantidad1 USING "#,###,###.##",
|
|
COLUMN 86, hora
|
|
PRINT COLUMN 22, " M I N O R I S T A S "
|
|
|
|
PRINT COLUMN 1, "ACUMULADO AL MES DE ",nom_mes CLIPPED
|
|
PRINT COLUMN 1, "----------------------------------------------------",
|
|
"--------------------------------------"
|
|
|
|
PRINT COLUMN 2, "Posicion",
|
|
COLUMN 68, "Cantidad"
|
|
|
|
PRINT COLUMN 1, ano1 USING "&&&&",
|
|
COLUMN 6, ano1-1 USING "&&&&",
|
|
COLUMN 12, "Cliente",
|
|
COLUMN 63, ano1 USING "&&&&",
|
|
COLUMN 78, ano1-1 USING "&&&&",
|
|
COLUMN 85, "Status"
|
|
|
|
PRINT COLUMN 1, "----------------------------------------------------",
|
|
"--------------------------------------"
|
|
PRINT COLUMN 1, letras.negrillas_off
|
|
BEFORE GROUP OF x.cod_cia
|
|
CASE
|
|
WHEN x.cod_cia = 1
|
|
PRINT COLUMN 1,letras.negrillas_on,"PRODUCTOS LOCALES"
|
|
EXIT CASE
|
|
WHEN x.cod_cia = 2
|
|
PRINT COLUMN 1,letras.negrillas_on,"PRODUCTOS IMPORTADOS"
|
|
EXIT CASE
|
|
END CASE
|
|
ON EVERY ROW
|
|
IF idx1 IS NULL THEN
|
|
LET idx1 = 0
|
|
END IF
|
|
LET idx1 = idx1 + 1
|
|
LET idx = x.posicion
|
|
LET j[idx].codigo = x.codigo
|
|
LET j[idx].nombre = x.nombre
|
|
LET j[idx].status_t = x.status_t
|
|
LET j[idx].cantidad1 = x.cantidad1
|
|
LET j[idx].cantidad2 = x.cantidad2
|
|
IF x.cantidad1 = 0 THEN
|
|
LET j[idx].posicion1 = 0
|
|
ELSE
|
|
LET j[idx].posicion1 = idx1
|
|
END IF
|
|
LET j[idx].posicion2 = x.posicion
|
|
|
|
ON LAST ROW
|
|
|
|
FOR idx = 1 TO idx1
|
|
IF j[idx].posicion2 IS NOT NULL AND j[idx].posicion2 > 0 THEN
|
|
PRINT COLUMN 1, j[idx].posicion2 USING "##&",
|
|
COLUMN 6, j[idx].posicion1 USING "##&",
|
|
COLUMN 15, j[idx].codigo," ",j[idx].nombre CLIPPED,
|
|
COLUMN 55, j[idx].cantidad2 USING "###,###,###.##",
|
|
COLUMN 70, j[idx].cantidad1 USING "###,###,###.##",
|
|
COLUMN 87, j[idx].status_t
|
|
END IF
|
|
END FOR
|
|
|
|
PRINT COLUMN 55, "--------------",
|
|
COLUMN 70, "--------------"
|
|
PRINT COLUMN 30, "TOTAL VENTAS...."," ",
|
|
COLUMN 55, SUM(x.cantidad2) USING "###,###,###.##",
|
|
COLUMN 70, SUM(x.cantidad1) USING "###,###,###.##"
|
|
PRINT COLUMN 1, letras.comp_off,letras.negrillas_off
|
|
|
|
END REPORT
|