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

381 lines
14 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP036
OBJETIVO : Estado de Ganancias y Perdidas por Cliente y Pila
PROGRAMADOR : Abner Montalvo
FECHA REALIZACION : Junio 2, 1997
-------------------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
DEFINE mes_ini,mes_fin,ano_ini,ano_fin SMALLINT
DEFINE cia,salir CHAR(1)
DEFINE tipo CHAR(2)
DEFINE sec CHAR(4)
DEFINE fecha, fecha_corte_mes DATE
FUNCTION veprrp036()
DEFINE factura RECORD
tipo_cliente SMALLINT,
sec_cliente INTEGER,
nombre CHAR(30),
nomenclatura CHAR(10),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad INTEGER,
precio DECIMAL(12,2),
porc_desc DECIMAL(8,2),
descripcion CHAR(30),
costo_lq DECIMAL(12,4),
cliente CHAR(10)
END RECORD
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM vefmrp036 FROM "vefmrp036"
DISPLAY FORM vefmrp036
CALL pantalla()
DISPLAY "veprrp036" AT 4,3
DISPLAY "Estado de Ganancias y Perdidas por Cliente y Pila" AT 6,15
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME cia,ano_ini,mes_ini
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET numero_msg = FALSE
RETURN
END IF
IF mes_ini IS NOT NULL AND
ano_ini IS NOT NULL THEN
SELECT fecha_corte INTO fecha_corte_mes
FROM prdtable
WHERE ano = ano_ini AND
mes = mes_ini
END IF
# Busca Los Movimientos de las Facturas con su factura
CONSTRUCT criterio ON a.tipo_cliente,a.sec_cliente
FROM tipo_cliente1,sec_cliente1
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET numero_msg = FALSE
RETURN
END IF
LET selec =
"SELECT a.tipo_cliente,a.sec_cliente,b.nombre,' ', ",
" c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,SUM(c.cantidad), ",
" c.precio,a.porc_desc,d.descrip_esp ",
"FROM iptb00002 d, vetb00002 a, vetb00003 c, vetb00004 b ",
"WHERE a.sec_cliente = b.sec_cliente AND ",
" a.factura = c.factura AND ",
" a.cod_cia = c.cod_cia AND ",
" a.cod_cia = ? AND ",
" a.ventas = '1' AND ",
" a.status_t IS NULL AND ",
" a.fecha_factura IS NOT NULL AND ",
" MONTH(a.fecha_factura) = ? AND ",
" YEAR(a.fecha_factura) = ? AND ",
" a.sec_cliente IS NOT NULL AND ",
" b.sec_cliente IS NOT NULL AND ",
" a.tipo_cliente = b.tipo_cliente AND ",
" c.cod_n = d.cod_n AND ",
" c.cod_grupo = d.cod_grupo AND ",
" c.cod_tipo = d.cod_tipo AND ",
" c.cod_sec = d.cod_sec AND ",
criterio CLIPPED,
" GROUP BY 1,2,3,4,5,6,7,8,10,11,12 ",
" ORDER BY 1,2,4,5,6,7,8 "
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
PREPARE busca_movi FROM selec
DECLARE movi_curs SCROLL CURSOR FOR busca_movi
OPEN movi_curs USING cia,mes_ini,ano_ini
START REPORT reporte_36 TO "C:\\archivo"
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
LET salir = "N"
WHILE salir != "S"
FETCH movi_curs INTO factura.*
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
IF cia = 01 THEN
SELECT MAX(fecha_lq) INTO fecha FROM cttb00036
WHERE fecha_lq <= fecha_corte_mes and
cod_n = factura.cod_n AND
cod_grupo = factura.cod_grupo AND
cod_tipo = factura.cod_tipo AND
cod_sec = factura.cod_sec AND
status_t IS NULL
ELSE
SELECT MAX(fecha_lq) INTO fecha FROM cttb00013
WHERE fecha_lq <= fecha_corte_mes and
cod_n = factura.cod_n AND
cod_grupo = factura.cod_grupo AND
cod_tipo = factura.cod_tipo AND
cod_sec = factura.cod_sec AND
status_t IS NULL
END IF
IF cia = 01 THEN
SELECT AVG(costo_lq) INTO factura.costo_lq FROM cttb00036
WHERE cod_n = factura.cod_n AND
cod_grupo = factura.cod_grupo AND
cod_tipo = factura.cod_tipo AND
cod_sec = factura.cod_sec AND
fecha_lq = fecha AND
status_t IS NULL
ELSE
SELECT AVG(costo_lq) INTO factura.costo_lq FROM cttb00013
WHERE cod_n = factura.cod_n AND
cod_grupo = factura.cod_grupo AND
cod_tipo = factura.cod_tipo AND
cod_sec = factura.cod_sec AND
fecha_lq = fecha AND
status_t IS NULL
END IF
LET tipo = factura.tipo_cliente USING "&&"
LET sec = factura.sec_cliente USING "&&&&"
LET factura.cliente = tipo + sec USING "&&&&"
OUTPUT TO REPORT reporte_36(factura.*)
END WHILE
FINISH REPORT reporte_36
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT reporte_36(x)
DEFINE x RECORD
tipo_cliente SMALLINT,
sec_cliente INTEGER,
nombre CHAR(30),
nomenclatura CHAR(10),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad INTEGER,
precio DECIMAL(12,2),
porc_desc DECIMAL(8,2),
descripcion CHAR(30),
costo_lq DECIMAL(12,4),
cliente CHAR(10)
END RECORD
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)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY x.cliente, x.nomenclatura, x.porc_desc, x.cod_n, x.cod_grupo,
x.cod_tipo, x.cod_sec
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 lj = (180 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT comp_on,negrillas_on
PRINT COLUMN 1, "veprrp036",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 173, "Pag. ",pageno using "###"
PRINT COLUMN 83, " Sistema de Ventas ",
COLUMN 173, today using "dd/mm/yy"
PRINT COLUMN 81, "Estado de Ganancias y Perdidas por Cliente y Pila",
COLUMN 173, time
SKIP 1 LINES
IF cia = 01 THEN
PRINT COLUMN 1, "Productos Locales";
ELSE
PRINT COLUMN 1, "Productos de Compra y Venta";
END IF
PRINT COLUMN 98, "MES : ",
mes_ini using "&&",
"/",ano_ini using "&&&&"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------"
PRINT COLUMN 1, " ",
COLUMN 56, " ",
COLUMN 71, " Precio",
COLUMN 88, " Monto",
COLUMN 100, " Porc.",
COLUMN 117, " Monto",
COLUMN 134, " Monto",
COLUMN 151, "Ultimo",
COLUMN 165, " Monto ",
COLUMN 182, "Gananc."
PRINT COLUMN 1, "Articulo",
COLUMN 56, "Cantidad",
COLUMN 71, " Unidad",
COLUMN 88, " Bruto",
COLUMN 100, " Desc.",
COLUMN 117, " Desc.",
COLUMN 134, " Neto",
COLUMN 151, " Costo",
COLUMN 165, " Costo ",
COLUMN 182, "Perdida"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------"
PRINT negrillas_off
BEFORE GROUP OF x.cliente
PRINT COLUMN 1, negrillas_on,
x.tipo_cliente USING "&&","-",
x.sec_cliente USING "&&&&"," ",x.nombre CLIPPED,
negrillas_off
SKIP 1 LINE
ON EVERY ROW
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&"," ",
x.descripcion CLIPPED,
COLUMN 50, x.cantidad USING "###,###,###.##",
COLUMN 65, x.precio USING "##,###,###.###",
COLUMN 81, x.cantidad * x.precio USING "###,###,###.##",
COLUMN 97, x.porc_desc USING "###,###.##","%",
COLUMN 110, x.cantidad * x.precio * x.porc_desc / 100
USING "###,###,###.##",
COLUMN 126, (x.cantidad * x.precio) -
(x.cantidad * x.precio * x.porc_desc / 100)
USING "###,###,###.##",
COLUMN 142, x.costo_lq USING "##,###,###.####",
COLUMN 159, x.cantidad * x.costo_lq USING "###,###,###.##",
COLUMN 175, ((x.cantidad * x.precio) -
(x.cantidad * x.precio * x.porc_desc / 100)) -
(x.cantidad * x.costo_lq) USING "(((,(((,(((.##)"
AFTER GROUP OF x.porc_desc
PRINT COLUMN 1, negrillas_on,
COLUMN 11, "SUB-TOTAL DESCUENTO ",x.porc_desc,"%",
COLUMN 52, GROUP SUM(x.cantidad) USING "###,###,###.##",
COLUMN 83, GROUP SUM(x.cantidad * x.precio) USING "###,###,###.##",
COLUMN 112, GROUP SUM(x.cantidad * x.precio * x.porc_desc / 100)
USING "###,###,###.##",
COLUMN 128, GROUP SUM((x.cantidad * x.precio) -
(x.cantidad * x.precio * x.porc_desc / 100))
USING "###,###,###.##",
COLUMN 161, GROUP SUM(x.cantidad * x.costo_lq) USING "###,###,###.##",
COLUMN 177, GROUP SUM(((x.cantidad * x.precio) -
(x.cantidad * x.precio * x.porc_desc / 100)) -
(x.cantidad * x.costo_lq))
USING "(((,(((,(((.##)",
negrillas_off
SKIP 1 LINE
AFTER GROUP OF x.nomenclatura
PRINT COLUMN 1, negrillas_on,
COLUMN 11, "TOTAL ",x.nomenclatura,
COLUMN 52, GROUP SUM(x.cantidad) USING "###,###,###.##",
COLUMN 83, GROUP SUM(x.cantidad * x.precio) USING "###,###,###.##",
COLUMN 112, GROUP SUM(x.cantidad * x.precio * x.porc_desc / 100)
USING "###,###,###.##",
COLUMN 128, GROUP SUM((x.cantidad * x.precio) -
(x.cantidad * x.precio * x.porc_desc / 100))
USING "###,###,###.##",
COLUMN 161, GROUP SUM(x.cantidad * x.costo_lq) USING "###,###,###.##",
COLUMN 177, GROUP SUM(((x.cantidad * x.precio) -
(x.cantidad * x.precio * x.porc_desc / 100)) -
(x.cantidad * x.costo_lq))
USING "(((,(((,(((.##)",
negrillas_off
SKIP 1 LINE
AFTER GROUP OF x.cliente
SKIP 1 LINE
PRINT COLUMN 1, negrillas_on,
COLUMN 6, "SUB-TOTAL ",x.tipo_cliente using "&&","-",
x.sec_cliente using "&&&&"," ",
x.nombre CLIPPED,
COLUMN 52, GROUP SUM(x.cantidad) USING "###,###,###.##",
COLUMN 83, GROUP SUM(x.cantidad * x.precio) USING "###,###,###.##",
COLUMN 112, GROUP SUM(x.cantidad * x.precio * x.porc_desc / 100)
USING "###,###,###.##",
COLUMN 128, GROUP SUM((x.cantidad * x.precio) -
(x.cantidad * x.precio * x.porc_desc / 100))
USING "###,###,###.##",
COLUMN 161, GROUP SUM(x.cantidad * x.costo_lq) USING "###,###,###.##",
COLUMN 177, GROUP SUM(((x.cantidad * x.precio) -
(x.cantidad * x.precio * x.porc_desc / 100)) -
(x.cantidad * x.costo_lq))
USING "(((,(((,(((.##)",
negrillas_off
SKIP 1 LINE
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 1, negrillas_on,
"TOTAL GENERAL",
COLUMN 52, SUM(x.cantidad) USING "###,###,###.##",
COLUMN 83, SUM(x.cantidad * x.precio) USING "###,###,###.##",
COLUMN 112, SUM(x.cantidad * x.precio * x.porc_desc / 100)
USING "###,###,###.##",
COLUMN 128, SUM((x.cantidad * x.precio) -
(x.cantidad * x.precio * x.porc_desc / 100))
USING "###,###,###.##",
COLUMN 161, SUM(x.cantidad * x.costo_lq) USING "###,###,###.##",
COLUMN 177, SUM(((x.cantidad * x.precio) -
(x.cantidad * x.precio * x.porc_desc / 100)) -
(x.cantidad * x.costo_lq))
USING "(((,(((,(((.##)",
negrillas_off
PRINT normal
END REPORT