460 lines
16 KiB
Plaintext
460 lines
16 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : VEPRRP035
|
|
OBJETIVO : ESTRATIFICACION DE VENTAS POR TIPO DE DESCUENTOS
|
|
PROGRAMADOR : Juan F. Soto
|
|
FECHA REALIZACION : Junio 2, 1997.
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "veprgb000.4gl"
|
|
DEFINE fecha1,fecha2 DATE
|
|
DEFINE salir CHAR(1),
|
|
mes12,mes2 SMALLINT,
|
|
anon,tipo_pila SMALLINT,
|
|
fecha DATE,
|
|
sneto,spierde DECIMAL(12,2)
|
|
|
|
FUNCTION veprrp035()
|
|
DEFINE codigo CHAR(7),
|
|
c_desc DECIMAL(8,2),
|
|
bruto,valor,monto_desc,neto,gana_pierde DECIMAL(12,2),
|
|
costo DECIMAL(8,4)
|
|
|
|
DEFINE prt_datos RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cantidad INTEGER,
|
|
precio DECIMAL(8,2),
|
|
porc_desc DECIMAL(8,2),
|
|
nomen CHAR(1)
|
|
END RECORD
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
OPEN FORM vefmrp035 FROM "vefmrp035"
|
|
DISPLAY FORM vefmrp035
|
|
CALL pantalla()
|
|
DISPLAY "veprrp035" AT 4,3
|
|
DISPLAY "Estratificaion De Ventas Por Tipo De Descuentos" AT 6,17
|
|
|
|
LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)
|
|
|
|
INPUT BY NAME tipo_pila,anon,mes2
|
|
AFTER FIELD mes2
|
|
SELECT fecha_corte INTO fecha1
|
|
FROM prdtable
|
|
WHERE mes = mes2 AND ano = anon
|
|
AFTER INPUT
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET numero_msg = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
DISPLAY "Buscando Informacion... Espere Por Favor " AT 19,14
|
|
|
|
DECLARE busca CURSOR FOR
|
|
SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,SUM(b.cantidad),
|
|
AVG(b.precio),c.porc_desc ," "
|
|
FROM prdtable a,vetb00003 b,vetb00002 c
|
|
WHERE a.mes = mes2 AND a.ano = anon AND (c.cod_cia = tipo_pila) AND
|
|
(c.ventas = "1") AND (b.factura = c.factura )
|
|
AND (c.fecha_factura BETWEEN a.fecha_inicio AND a.fecha_corte)
|
|
AND c.status_t IS NULL
|
|
GROUP BY 1,2,3,4,7,8
|
|
|
|
START REPORT reporte_35 TO "C:\\archivo"
|
|
START REPORT reporte_a35 TO "C:\\archivo"
|
|
|
|
DISPLAY " " AT 19,14
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE)
|
|
|
|
FOREACH BUSCA INTO prt_datos.*
|
|
LET bruto = 0
|
|
LET monto_desc = 0
|
|
LET neto = 0
|
|
LET valor = 0
|
|
LET gana_pierde = 0
|
|
LET costo = 0
|
|
|
|
LET codigo = prt_datos.nomen CLIPPED
|
|
|
|
IF tipo_pila = 1 THEN
|
|
SELECT MAX(a.fecha_lq) INTO fecha
|
|
FROM cttb00036 a
|
|
WHERE a.fecha_lq <= fecha1 AND
|
|
a.ventas = 1 AND
|
|
a.cod_n = prt_datos.cod_n AND
|
|
a.cod_grupo = prt_datos.cod_grupo AND
|
|
a.cod_tipo = prt_datos.cod_tipo AND
|
|
a.cod_sec = prt_datos.cod_sec
|
|
|
|
SELECT UNIQUE a.costo_lq INTO costo
|
|
FROM cttb00036 a
|
|
WHERE a.ventas = 1 AND
|
|
a.cod_n = prt_datos.cod_n AND
|
|
a.cod_grupo = prt_datos.cod_grupo AND
|
|
a.cod_tipo = prt_datos.cod_tipo AND
|
|
a.cod_sec = prt_datos.cod_sec AND
|
|
a.fecha_lq = fecha
|
|
ELSE
|
|
SELECT MAX(a.fecha_lq) INTO fecha
|
|
FROM cttb00013 a
|
|
WHERE a.fecha_lq <= fecha1 AND
|
|
a.cod_n = prt_datos.cod_n AND
|
|
a.cod_grupo = prt_datos.cod_grupo AND
|
|
a.cod_tipo = prt_datos.cod_tipo AND
|
|
a.cod_sec = prt_datos.cod_sec
|
|
|
|
SELECT AVG(a.costo_lq) INTO costo
|
|
FROM cttb00013 a
|
|
WHERE a.cod_n = prt_datos.cod_n AND
|
|
a.cod_grupo = prt_datos.cod_grupo AND
|
|
a.cod_tipo = prt_datos.cod_tipo AND
|
|
a.cod_sec = prt_datos.cod_sec AND
|
|
a.fecha_lq = fecha
|
|
END IF
|
|
|
|
LET c_desc = prt_datos.porc_desc
|
|
LET bruto = prt_Datos.cantidad * prt_Datos.precio
|
|
LET monto_desc = bruto * (prt_datos.porc_desc/100)
|
|
LET neto = bruto - monto_desc
|
|
LET valor = prt_datos.cantidad * costo
|
|
|
|
LET gana_pierde = neto - valor
|
|
OUTPUT TO REPORT reporte_35(prt_datos.*,codigo,c_desc,bruto,
|
|
monto_desc,neto,valor,costo,gana_pierde)
|
|
OUTPUT TO REPORT reporte_a35(prt_datos.*,codigo,c_desc,bruto,
|
|
monto_desc,neto,valor,costo,gana_pierde)
|
|
END FOREACH
|
|
|
|
FINISH REPORT reporte_35
|
|
FINISH REPORT reporte_a35
|
|
CLEAR SCREEN
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
|
|
|
REPORT reporte_35(x,x_codigo,x_desc,xbruto,xmonto_desc,xneto,xvalor,xcosto,
|
|
xgana_pierde)
|
|
|
|
DEFINE x RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cantidad INTEGER,
|
|
precio DECIMAL(8,2),
|
|
porc_desc DECIMAL(8,2),
|
|
nomen CHAR(1)
|
|
END RECORD,
|
|
xbruto,xvalor,xmonto_desc,xneto,xgana_pierde DECIMAL(12,2),
|
|
xcosto DECIMAL(8,4)
|
|
|
|
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),
|
|
nombre_pto CHAR(30),
|
|
x_codigo CHAR(7),
|
|
x_desc DECIMAL(8,2),
|
|
nombre_mes1,nombre_mes2 CHAR(15)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 5
|
|
BOTTOM MARGIN 2
|
|
|
|
ORDER BY x_codigo,x_Desc
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET doble_on = ASCII 14
|
|
LET doble_off = ASCII 20
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET comp_on = ASCII 15
|
|
LET comp_off = ASCII 18
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 18
|
|
LET hora = time
|
|
|
|
SELECT descrip INTO nombre_mes2
|
|
FROM mestable
|
|
WHERE mes = mes2
|
|
LET lj = (165 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
PRINT comp_on,negrillas_on
|
|
PRINT COLUMN 1, "veprrp035",
|
|
COLUMN lj, p_companias.nombre CLIPPED,
|
|
COLUMN 158, "Pag. ",pageno using "###"
|
|
PRINT COLUMN 60, " Sistema de Ventas ",
|
|
COLUMN 158, today using "dd/mm/yy"
|
|
PRINT COLUMN 58, "ESTRATIFICACION DE VENTAS POR TIPOS DE DESCUENTOS",
|
|
COLUMN 161, hora
|
|
PRINT COLUMN 1, "Al Mes De ",nombre_mes2 CLIPPED,
|
|
" DEL ",anon USING "####"
|
|
|
|
SKIP 1 LINES
|
|
IF tipo_pila = 1 THEN
|
|
PRINT COLUMN 1, "Productos Locales"
|
|
ELSE
|
|
PRINT COLUMN 1, "Productos Compra Y Venta"
|
|
END IF
|
|
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"---------------------------------------------------",
|
|
"------------------------------------"
|
|
|
|
PRINT COLUMN 66, "Precio",
|
|
COLUMN 93, "Valor",
|
|
COLUMN 116, "Monto",
|
|
COLUMN 132, "Valor",
|
|
COLUMN 143, "Ultimo",
|
|
COLUMN 158, "Valor",
|
|
COLUMN 171, "Ganancia O"
|
|
|
|
PRINT COLUMN 1, " ARTICULOS ",
|
|
COLUMN 50, "Cantidad",
|
|
COLUMN 66, "Unitario",
|
|
COLUMN 93, "Bruto",
|
|
COLUMN 100, "% Desc.",
|
|
COLUMN 116, "Desc.",
|
|
COLUMN 132, "Neto",
|
|
COLUMN 143, "Costo",
|
|
COLUMN 158, "Costeo",
|
|
COLUMN 171, "Perdida"
|
|
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"---------------------------------------------------",
|
|
"------------------------------------"
|
|
PRINT negrillas_off
|
|
|
|
ON EVERY ROW
|
|
SELECT a.descrip_esp INTO nombre_pto
|
|
FROM iptb00002 a
|
|
WHERE a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec
|
|
|
|
PRINT COLUMN 1, x.cod_n USING "&","-",
|
|
x.cod_grupo USING "&","-",
|
|
x.cod_tipo USING "&&","-",
|
|
x.cod_sec USING "&&&"," ",
|
|
nombre_pto,
|
|
COLUMN 45, x.cantidad USING "##,###,###.##",
|
|
COLUMN 65, x.precio USING "##,###.##",
|
|
COLUMN 85, xbruto USING "##,###,###.##",
|
|
COLUMN 100, x.porc_desc USING "###.##%",
|
|
COLUMN 110, xmonto_desc USING "##,###,###.##",
|
|
COLUMN 125, xneto USING "##,###,###.##",
|
|
COLUMN 135, xcosto USING "#,###.####",
|
|
COLUMN 150, xvalor USING "##,###,###.##",
|
|
COLUMN 165, xgana_pierde USING "(((,(((,(##.##)"
|
|
|
|
AFTER GROUP OF x_desc
|
|
PRINT negrillas_on
|
|
PRINT COLUMN 1, "SUB-TOTAL DESCUENTO ",
|
|
COLUMN 45, GROUP SUM(x.cantidad) USING "##,###,###.##",
|
|
COLUMN 85, GROUP SUM(xbruto) USING "##,###,###.##",
|
|
COLUMN 110, GROUP SUM(xmonto_desc) USING "##,###,###.##",
|
|
COLUMN 125, GROUP SUM(xneto) USING "##,###,###.##",
|
|
#COLUMN 135, GROUP SUM(xcosto) USING "#,###.####",
|
|
COLUMN 150, GROUP SUM(xvalor) USING "##,###,###.##",
|
|
COLUMN 165, GROUP SUM(xgana_pierde) USING "(((,(((,(##.##)"
|
|
PRINT negrillas_off
|
|
|
|
AFTER GROUP OF x_codigo
|
|
PRINT negrillas_on
|
|
PRINT COLUMN 1, "TOTAL ",x.nomen,
|
|
COLUMN 45, GROUP SUM(x.cantidad) USING "##,###,###.##",
|
|
#COLUMN 65, x.precio USING "##,###.##",
|
|
COLUMN 85, GROUP SUM(xbruto) USING "##,###,###.##",
|
|
#COLUMN 100, x.porc_desc USING "###.##%",
|
|
COLUMN 110, GROUP SUM(xmonto_desc) USING "##,###,###.##",
|
|
COLUMN 125, GROUP SUM(xneto) USING "##,###,###.##",
|
|
COLUMN 150, GROUP SUM(xvalor) USING "##,###,###.##",
|
|
COLUMN 165, GROUP SUM(xgana_pierde) USING "(((,(((,(##.##)"
|
|
PRINT negrillas_off
|
|
|
|
|
|
ON LAST ROW
|
|
PRINT negrillas_on
|
|
LET sneto = SUM(xneto)
|
|
LET spierde = SUM(xgana_pierde)
|
|
|
|
PRINT COLUMN 1, "TOTAL GENERAL ",
|
|
COLUMN 45, SUM(x.cantidad) USING "##,###,###.##",
|
|
COLUMN 85, SUM(xbruto) USING "##,###,###.##",
|
|
COLUMN 110, SUM(xmonto_desc) USING "##,###,###.##",
|
|
COLUMN 125, SUM(xneto) USING "##,###,###.##",
|
|
COLUMN 150, SUM(xvalor) USING "##,###,###.##",
|
|
COLUMN 165, SUM(xgana_pierde) USING "(((,(((,(##.##)"
|
|
PRINT negrillas_off
|
|
|
|
END REPORT
|
|
REPORT reporte_a35(x,x_codigo,x_desc,xbruto,xmonto_desc,xneto,xvalor,xcosto,
|
|
xgana_pierde)
|
|
|
|
DEFINE x RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cantidad INTEGER,
|
|
precio DECIMAL(8,2),
|
|
porc_desc DECIMAL(8,2),
|
|
nomen CHAR(1)
|
|
END RECORD,
|
|
xbruto,xvalor,xmonto_desc,xneto,xgana_pierde DECIMAL(12,2),
|
|
xcosto DECIMAL(8,4)
|
|
|
|
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),
|
|
nombre_pto CHAR(30),
|
|
x_codigo CHAR(7),
|
|
x_desc DECIMAL(8,2),
|
|
nombre_mes1,nombre_mes2 CHAR(15)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 5
|
|
BOTTOM MARGIN 2
|
|
|
|
ORDER BY x_Desc
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET doble_on = ASCII 14
|
|
LET doble_off = ASCII 20
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET comp_on = ASCII 15
|
|
LET comp_off = ASCII 18
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 18
|
|
LET hora = time
|
|
|
|
SELECT descrip INTO nombre_mes2
|
|
FROM mestable
|
|
WHERE mes = mes2
|
|
PRINT comp_on,negrillas_on
|
|
PRINT COLUMN 1, "veprrp035",
|
|
COLUMN 60, "E L E C T R O D O M E S T I C O S J U V I A R",
|
|
COLUMN 158, "Pag. ",pageno using "###"
|
|
PRINT COLUMN 60, " Sistema de Ventas ",
|
|
COLUMN 158, today using "dd/mm/yy"
|
|
PRINT COLUMN 58, "ESTRATIFICACION DE VENTAS POR TIPOS DE DESCUENTOS",
|
|
COLUMN 161, hora
|
|
PRINT COLUMN 1, "Al Mes De ",nombre_mes2 CLIPPED,
|
|
" DEL ",anon USING "####"
|
|
|
|
SKIP 1 LINES
|
|
IF tipo_pila = 1 THEN
|
|
PRINT COLUMN 1, "Productos Locales"
|
|
ELSE
|
|
PRINT COLUMN 1, "Productos Compra Y Venta"
|
|
END IF
|
|
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"---------------------------------------------------",
|
|
"---------------------------------------------------"
|
|
|
|
PRINT COLUMN 66, "Precio",
|
|
COLUMN 83, "Valor",
|
|
COLUMN 106, "Monto",
|
|
COLUMN 122, "Valor",
|
|
COLUMN 137, "Porc.",
|
|
COLUMN 157, "Valor",
|
|
COLUMN 171, "Ganancia O",
|
|
COLUMN 185, "Porc",
|
|
COLUMN 194, "Porc"
|
|
|
|
PRINT COLUMN 1, " DESCUENTOS",
|
|
COLUMN 50, "Cantidad",
|
|
COLUMN 66, "Unitario",
|
|
COLUMN 83, "Bruto",
|
|
COLUMN 106, "Desc.",
|
|
COLUMN 122, "Neto",
|
|
COLUMN 137, "Neto",
|
|
COLUMN 157, "Costeo",
|
|
COLUMN 171, "Perdida",
|
|
COLUMN 185, "G o P",
|
|
COLUMN 194, "G. Total"
|
|
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"---------------------------------------------------",
|
|
"---------------------------------------------------"
|
|
PRINT negrillas_off
|
|
|
|
AFTER GROUP OF x_desc
|
|
PRINT negrillas_on
|
|
PRINT COLUMN 1, x_desc CLIPPED,"%",
|
|
COLUMN 45, GROUP SUM(x.cantidad) USING "##,###,###.##",
|
|
COLUMN 75, GROUP SUM(xbruto) USING "##,###,###.##",
|
|
COLUMN 100, GROUP SUM(xmonto_desc) USING "##,###,###.##",
|
|
COLUMN 115, GROUP SUM(xneto) USING "##,###,###.##",
|
|
COLUMN 135, (GROUP SUM(xneto)/sneto) * 100 USING "###.##%",
|
|
COLUMN 150, GROUP SUM(xvalor) USING "##,###,###.##",
|
|
COLUMN 165, GROUP SUM(xgana_pierde) USING "(((,(((,(##.##)",
|
|
COLUMN 183, (GROUP SUM(xgana_pierde) /spierde) * 100
|
|
USING "((((.##%)" ,
|
|
COLUMN 193, (GROUP SUM(xgana_pierde)/ GROUP SUM(xneto))
|
|
*100 USING "((((.##%)"
|
|
PRINT negrillas_off
|
|
|
|
ON LAST ROW
|
|
PRINT negrillas_on
|
|
PRINT COLUMN 45, "-------------",
|
|
COLUMN 75, "-------------",
|
|
COLUMN 100, "-------------",
|
|
COLUMN 115, "-------------",
|
|
COLUMN 134, "-------",
|
|
COLUMN 150, "-------------",
|
|
COLUMN 165, "---------------",
|
|
COLUMN 182, "---------"
|
|
|
|
PRINT COLUMN 1, "TOTAL GENERAL ",
|
|
COLUMN 45, SUM(x.cantidad) USING "##,###,###.##",
|
|
COLUMN 75, SUM(xbruto) USING "##,###,###.##",
|
|
COLUMN 100, SUM(xmonto_desc) USING "##,###,###.##",
|
|
COLUMN 115, SUM(xneto) USING "##,###,###.##",
|
|
COLUMN 134, (SUM(xneto)/sneto) * 100 USING "###.##%",
|
|
COLUMN 150, SUM(xvalor) USING "##,###,###.##",
|
|
COLUMN 165, SUM(xgana_pierde) USING "(((,(((,(##.##)",
|
|
COLUMN 182, (SUM(xgana_pierde) /spierde) * 100
|
|
USING "((((.##%)"
|
|
PRINT COLUMN 45, "=============",
|
|
COLUMN 75, "=============",
|
|
COLUMN 100, "=============",
|
|
COLUMN 115, "=============",
|
|
COLUMN 134, "=======",
|
|
COLUMN 150, "=============",
|
|
COLUMN 165, "===============",
|
|
COLUMN 182, "========="
|
|
PRINT negrillas_off
|
|
END REPORT
|