Files
MBS/PROYECTO/vedir/veprrp029.4gl
T

523 lines
16 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP029
OBJETIVO : Relacion de ventas diarias y ranchero
PLAN RANCHERO
PROGRAMADOR : Ing. Juan Soto (Johnny)
FECHA REALIZACION : Agosto 19, 1994.
-------------------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
FUNCTION veprrp029()
DEFINE opcion CHAR(1)
DEFINE p_fecha1 DATE
DEFINE mes_ini CHAR(6)
DEFINE peri2,periodo,act1,ant,hoy CHAR(4)
DEFINE mes_fin CHAR(2)
DEFINE select_dia,select_zona,select_cliente,select_pilas CHAR(1000)
DEFINE p_mes,idx_d,registros,cuenta,peri,idx_t,idx_o,idx_e,idx_p,idx_m
SMALLINT
DEFINE n_encontre,p_ventas,esta,encontre,salir2,salir1,salir CHAR(1)
DEFINE ventas_dia RECORD
ventas CHAR(1),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad_vend INTEGER,
precio DECIMAL(12,2),
prima LIKE vetb00002.prima_us
END RECORD
DEFINE vtas_acum RECORD
ventas CHAR(1),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad_vend INTEGER,
precio DECIMAL(12,2),
prima LIKE vetb00002.prima_us
END RECORD
DEFINE ano_ant RECORD
ventas CHAR(1),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad_pres INTEGER,
precio DECIMAL(12,2),
prima DECIMAL(8,2)
END RECORD
DEFINE ventas RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(4) ,
sub_control CHAR(1),
ventas CHAR(1),
cantidad_vend INTEGER,
valor DECIMAL(12,2),
unidad_acum DECIMAL(12,2),
valor_acum DECIMAL(12,2),
codigo CHAR(7),
grupo_venta CHAR(1)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM vefmrp029 FROM "vefmrp029"
DISPLAY FORM vefmrp029
CALL pantalla()
DISPLAY "veprrp029" AT 4,3
DISPLAY "Ventas Diarias y Acumuladas Plan Ranchero" AT 6,19
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
LET rango.fech_in = today
INPUT BY NAME detalle,rango.fech_in,p_mes WITHOUT DEFAULTS
AFTER FIELD p_mes
IF p_mes is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_mes
END IF
IF p_mes > 12 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_mes
END IF
AFTER FIELD fech_in
IF rango.fech_in is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_in
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
# Busca Los Movimientos de las Facturas
LET hoy = MONTH(rango.fech_in)
LET mes_ini = rango.fech_in
LET act1 = YEAR(rango.fech_in) USING "&&&&"
LET periodo = act1[3,4],p_mes using "&&"
LET peri2 = ant[3,4],p_mes using "&&"
LET peri = periodo
SELECT a.fecha_inicio INTO p_fecha1 FROM prdtable a
WHERE a.mes = p_mes AND a.ano = act1
# Buscando Pilas vendias del ano actual
LET select_pilas =
"SELECT b.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" sum(a.cantidad),sum(a.cantidad * a.precio*b.prima_us) ",
"FROM vetb00003 a,vetb00002 b ",
"WHERE (b.fecha_factura between ? and ?) and (a.factura = b.factura) and ",
" (b.sec_vend = 8888) and b.status_t is null and a.status_t is null ",
" AND b.ventas = 1 GROUP BY 2,3,4,5,1 ORDER BY 1,2,3,4 "
DISPLAY "<< Estoy Buscando Ventas Del Ano Actual... Espere Por Favor. >>"
AT 19,14 ATTRIBUTE (BOLD,REVERSE)
PREPARE busca_act FROM select_pilas
DECLARE act SCROLL CURSOR FOR busca_act
OPEN act USING p_fecha1,rango.fech_in
LET select_dia =
"SELECT a.ventas,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, ",
" sum(b.cantidad),sum(b.cantidad * b.precio* a.prima_us) ",
"FROM vetb00002 a,vetb00003 b ",
"WHERE (a.factura = b.factura) and (a.fecha_factura = ?) and ",
" (a.sec_vend = 8888) and a.status_t is null and b.status_t is null ",
" AND a.ventas = 1 GROUP BY 2,3,4,5,1 ORDER BY 1,2,3,4,5 "
DISPLAY "<< Estoy Buscando Ventas Del Dia... Espere Por Favor. >>"
AT 19,14 ATTRIBUTE (BOLD,REVERSE)
PREPARE busca_dia FROM select_dia
DECLARE movi_dia SCROLL CURSOR FOR busca_dia
OPEN movi_dia USING rango.fech_in
# Busqueda de los codigos
LET select_cliente =
"SELECT unique d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec,d.descrip_esp, ",
" d.unidad_med,' ' ",
"FROM iptb00002 d,iptb00002 a ",
"WHERE d.status_t is null ORDER BY 1,2,3,4"
DISPLAY "<< Estoy Buscando Productos Terminados... Espere Por Favor. >>"
AT 19,14 ATTRIBUTE (BOLD,REVERSE)
PREPARE busca_movi FROM select_cliente
DECLARE movi_curs CURSOR FOR busca_movi
OPEN movi_curs
START REPORT ranchero TO "C:\\archivo"
DISPLAY " "
AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
SELECT count(*) INTO registros FROM iptb00002
LET n_encontre = null
LET cuenta = 0
LET identifica = "N"
LET verdad = null
LET salir1 = "N"
LET idx_t = 1
WHILE salir1 != "S"
FETCH movi_curs INTO ventas.*
IF STATUS = NOTFOUND THEN
LET salir1 = "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 ventas.ventas is null THEN
LET ventas.ventas = "1"
END IF
LET ventas.codigo = ventas.cod_n using "&",
ventas.cod_grupo using "&",
ventas.cod_tipo using "&&",
ventas.cod_sec using "&&&"
LET ventas.grupo_venta = ventas.codigo[5]
LET idx_t = idx_t + 1
LET ventas.ventas = "1"
LET ventas.cantidad_vend = 0
LET ventas.valor = 0
LET ventas.unidad_acum = 0
LET ventas.valor_acum = 0
LET idx_d = 1
LET salir = "N"
WHILE salir != "S"
FETCH ABSOLUTE idx_d movi_dia INTO ventas_dia.*
IF status = notfound THEN
LET idx_d = 1
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_d = idx_d + 1
IF ventas_dia.cod_n = ventas.cod_n and
ventas_dia.cod_grupo = ventas.cod_grupo and
ventas_dia.cod_tipo = ventas.cod_tipo and
ventas_dia.cod_sec = ventas.cod_sec THEN
LET ventas.cantidad_vend = ventas_dia.cantidad_vend
LET ventas.valor = ventas_dia.precio
LET idx_d = 1
LET salir = "S"
EXIT WHILE
END IF
END WHILE
LET idx = 1
LET salir2 = "N"
WHILE salir2 != "S"
FETCH ABSOLUTE idx act INTO vtas_acum.*
IF status = notfound THEN
LET idx = 1
LET salir2 = "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
IF vtas_acum.cod_n = ventas.cod_n and
vtas_acum.cod_grupo = ventas.cod_grupo and
vtas_acum.cod_tipo = ventas.cod_tipo and
vtas_acum.cod_sec = ventas.cod_sec THEN
LET ventas.unidad_acum = vtas_acum.cantidad_vend
LET ventas.valor_acum = vtas_acum.precio
LET salir2 = "S"
LET idx = 1
EXIT WHILE
END IF
END WHILE
IF ventas.unidad_acum is null THEN
LET ventas.unidad_acum = 0
END IF
IF ventas.valor_acum is null THEN
LET ventas.valor_acum = 0
END IF
IF ventas.valor is null THEN
LET ventas.valor = 0
END IF
IF ventas.cantidad_vend is null THEN
LET ventas.cantidad_vend = 0
END IF
DISPLAY ventas.codigo," ", ventas.cantidad_vend USING "###,###.##"
AT 20,14 SLEEP 1
OUTPUT TO REPORT ranchero(ventas.*,peri,p_mes)
END WHILE
FINISH REPORT ranchero
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT ranchero(x,peri1,p_mes1)
DEFINE x RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(4) ,
sub_control CHAR(1),
ventas CHAR(1),
cantidad_vend INTEGER,
valor DECIMAL(12,2),
unidad_acum DECIMAL(12,2),
valor_acum DECIMAL(12,2),
codigo CHAR(7),
grupo_venta CHAR(1)
END RECORD,
p_mes1 SMALLINT
DEFINE vendedor,imp,imp1 CHAR (1)
DEFINE nombre,tipo1 CHAR(21)
DEFINE nombre_mes1,nombre_dia,nombre_mes CHAR(11)
DEFINE descrip_zone CHAR(30)
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 t_cantidad_pres,t_valor_pres,t_t_cantidad_pres,t_t_valor_pres,
t_t_t_cantidad_pres, t_t_t_valor_pres,g_cantidad_vend,g_valor_vend,
g_unidad_acum,g_valor_acum,g_g_cantidad_vend,g_g_valor_vend,
g_g_unidad_acum,g_g_valor_acum,g_g_g_cantidad_vend,g_g_g_valor_vend,
g_g_g_unidad_acum,g_g_g_valor_acum,g_unidad_ant,g_valor_ant,
g_g_unidad_ant,g_g_valor_ant,g_g_g_unidad_ant,g_g_g_valor_ant,
t1_cantidad_pres,t1_valor_pres,g1_cantidad_vend,g1_valor_vend,
g1_unidad_acum,g1_valor_acum,g1_unidad_ant,g1_valor_ant
DECIMAL(12,2)
DEFINE peri1,d,m,i SMALLINT
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 4
ORDER BY x.ventas,x.grupo_venta,x.sub_control,x.codigo
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 71
LET negrillas_off = ASCII 27, ASCII 72
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, doce,negrillas_on
PRINT COLUMN 1, "veprrp029",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 94, "Pag. ",pageno using "###"
PRINT COLUMN 28, " Sistema de Ventas ",
COLUMN 94, today using "dd/mm/yy"
PRINT COLUMN 20, "Relacion de Ventas Diarias Y Acumuladas Por Mes",
" Plan Ranchero",
COLUMN 97, hora
SKIP 1 LINES
LET d = WEEKDAY(rango.fech_in)
LET m = MONTH(rango.fech_in)
LET d = d + 1
CALL meses()
LET nombre_mes = mes1[m]
LET nombre_mes1 = mes1[p_mes1]
CALL f_dias()
LET nombre_dia = dias[d]
PRINT COLUMN 1, "Dia: ",nombre_dia clipped," ",
DAY(rango.fech_in) using "<<<"," ",
"de ",nombre_mes clipped," de ",YEAR(rango.fech_in)
PRINT COLUMN 1, "---------------------------------------------------",
"--------------------------------------------------"
PRINT COLUMN 58, "D i a r i a",
COLUMN 80, "Acumulada de ",nombre_mes1 clipped
PRINT COLUMN 2, "P r o d u c t o",
COLUMN 50, "Unidades",
COLUMN 69, "Valor",
COLUMN 80, "Unidades",
COLUMN 96, "Valor"
PRINT COLUMN 1, "---------------------------------------------------",
"--------------------------------------------------",
negrillas_off
BEFORE GROUP OF x.ventas
SKIP 1 LINE
IF x.ventas = "1" THEN
LET nombre = "L O C A L"
ELSE
LET nombre = "E X P O R T A C I O N"
END IF
PRINT COLUMN 7,negrillas_on, nombre,negrillas_off
SKIP 1 LINE
AFTER GROUP OF x.codigo
PRINT COLUMN 1, x.cod_n using "&","-",x.cod_grupo using "&","-",
x.cod_tipo using "&&","-",x.cod_sec using "&&&",
" ",x.descrip_esp," ",x.unidad_med clipped,
COLUMN 47, GROUP SUM(x.cantidad_vend) using "#,###,###.##",
COLUMN 60, GROUP SUM(x.valor) using "#,###,###.##",
COLUMN 73, GROUP SUM(x.unidad_acum) using "###,###,###.##",
COLUMN 88, GROUP SUM(x.valor_acum) using "###,###,###.##"
AFTER GROUP OF x.sub_control
SKIP 1 LINE
PRINT COLUMN 6, "SUB-TOTAL ",x.sub_control clipped,
COLUMN 47, GROUP SUM(x.cantidad_vend) using "#,###,###.##",
COLUMN 60, GROUP SUM(x.valor) using "#,###,###.##",
COLUMN 73, GROUP SUM(x.unidad_acum) using "###,###,###.##",
COLUMN 88, GROUP SUM(x.valor_acum) using "###,###,###.##"
SKIP 1 LINE
AFTER GROUP OF x.grupo_venta
IF x.grupo_venta = "1" THEN
LET tipo1 = "SUPERCELL"
END IF
IF x.grupo_venta = "2" THEN
LET tipo1 = "H. DUTY"
END IF
IF x.grupo_venta = "3" THEN
LET tipo1 = "ALKALINAS"
END IF
IF x.grupo_venta = "4" THEN
LET tipo1 = "LAMPARAS"
END IF
IF x.grupo_venta = "5" THEN
LET tipo1 = "FOCOS"
END IF
IF x.grupo_venta = "6" THEN
LET tipo1 = "BOMBILLOS"
END IF
IF x.grupo_venta = "7" THEN
LET tipo1 = "EXIBIDORES"
END IF
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 9, "TOTAL ",tipo1 clipped,
COLUMN 47, GROUP SUM(x.cantidad_vend) using "#,###,###.##",
COLUMN 60, GROUP SUM(x.valor) using "#,###,###.##",
COLUMN 73, GROUP SUM(x.unidad_acum) using "###,###,###.##",
COLUMN 88, GROUP SUM(x.valor_acum) using "###,###,###.##"
PRINT COLUMN 1, negrillas_off
AFTER GROUP OF x.ventas
SKIP 1 LINE
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 7, "TOTAL ",nombre clipped,
COLUMN 47, GROUP SUM(x.cantidad_vend) using "#,###,###.##",
COLUMN 60, GROUP SUM(x.valor) using "#,###,###.##",
COLUMN 73, GROUP SUM(x.unidad_acum) using "###,###,###.##",
COLUMN 88, GROUP SUM(x.valor_acum) using "###,###,###.##"
PRINT COLUMN 1, negrillas_off
IF x.ventas = "1" THEN
SKIP TO TOP OF PAGE
END IF
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 7, negrillas_on
PRINT COLUMN 7, "TOTAL GENERAL ",
COLUMN 47, SUM(x.cantidad_vend) using "#,###,###.##",
COLUMN 60, SUM(x.valor) using "#,###,###.##",
COLUMN 73, SUM(x.unidad_acum) using "###,###,###.##",
COLUMN 88, SUM(x.valor_acum) using "###,###,###.##"
PRINT COLUMN 1, negrillas_off,normal
END REPORT