523 lines
16 KiB
Plaintext
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
|