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

375 lines
13 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP417
OBJETIVO : Listar las Ventas A Contado
PROGRAMADOR : JUAN F. SOTO
FECHA REALIZACION : Julio 19, 1999
-------------------------------------------------------------------------------
}
DATABASE marmotech
GLOBALS
DEFINE criterio,selec_v CHAR(1000)
DEFINE p_vetb02 RECORD LIKE vetb00002.*
DEFINE p_vetb03 RECORD LIKE vetb00003.*
DEFINE p_iptb02 RECORD LIKE iptb00002.*
DEFINE p_vetb04 RECORD LIKE vetb00004.*
DEFINE p_iptb20 RECORD LIKE iptb00020.*
DEFINE p_compania RECORD LIKE companias.*
DEFINE salir CHAR(1)
DEFINE debito,debito1,credito,credito1 DECIMAL(12,2)
DEFINE select_ac CHAR(1000)
DEFINE lj,idx_ac,ano,idx_a,idx_c,l SMALLINT
DEFINE ano_act,c_ano CHAR(4)
DEFINE fecha_2 CHAR(8)
DEFINE nombre_cta CHAR(30)
DEFINE fecha_ini_per CHAR(8),
iptb05 RECORD LIKE iptb00005.*
DEFINE detalle CHAR(30)
DEFINE mes SMALLINT
DEFINE tasa DECIMAL(5,2)
DEFINE p_fecha,fecha1, fecha2 DATE
DEFINE nominas CHAR(1)
DEFINE entra CHAR(14)
DEFINE entra1 CHAR(5)
DEFINE tipo_papel SMALLINT
DEFINE afecta CHAR(1)
DEFINE mano_ob,material,material9,material6,gastos DECIMAL(12,2)
###### Variables para almacenar los datos selecionados
###### Variables que la almacenan la informacion enviada al reporte
DEFINE salir1 CHAR(1)
DEFINE idx INTEGER
END GLOBALS
MAIN
DEFER INTERRUPT
SELECT a.* INTO p_compania.* FROM companias a
CALL veprrp417()
END MAIN
FUNCTION veprrp417()
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
##### Abriendo y desplegando el formulario de captura de datos
OPEN FORM vefmrp416 FROM "vefmrp416"
DISPLAY FORM vefmrp416
CALL pantalla()
DISPLAY "veprrp417" AT 4,3
DISPLAY "Ventas Al Contado" AT 6,28
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
###### Aceptando los valores para el rango de fecha
INPUT BY NAME fecha1,fecha2
BEFORE FIELD fecha1
SELECT MAX(a.fecha) INTO p_fecha FROM cgtb00004 a
WHERE a.ref[1,9] = entra1
LET fecha1 = p_fecha + 1
DISPLAY BY NAME fecha1
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
ERROR "(16) CAMPO EN BLANCO"
NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha2 is null THEN
ERROR "(16) CAMPO EN BLANCO"
NEXT FIELD fecha2
END IF
###### Selecionando en rango de fecha de la tabla de periodo para el fecha2
END INPUT
##### Creando la facilidad para cancelar proceso con DELETE O SUPR
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = false
RETURN
END IF
CONSTRUCT BY NAME criterio ON a.ventas
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = false
RETURN
END IF
LET debito1 = 0
LET debito = 0
LET credito1 = 0
LET credito = 0
# Busca la informacion requerida
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
# Busca los codigos de los productos terminados
# Busca las ventas reales del ano actual hasta el mes indicado anteriormente
LET selec_v =
"SELECT UNIQUE a.*,b.*,c.* FROM vetb00002 a,vetb00003 b, iptb00002 c ",
"WHERE a.factura = b.factura AND b.cod_n = c.cod_n AND ",
" b.cod_grupo = c.cod_grupo AND b.cod_tipo = c.cod_tipo AND ",
" b.cod_sec = c.cod_sec AND a.fecha_factura BETWEEN '",fecha1," '",
" AND '",fecha2," '"," AND a.cond_pago = 1 AND ",
criterio CLIPPED," AND a.cod_cia = b.cod_cia ",
" AND a.status_t IS NULL AND b.status_t IS NULL "
DISPLAY " " AT 19,14
DISPLAY "<<Buscando Informacion... Espere Por Favor" AT 19,14
PREPARE busca_vr FROM selec_v
DECLARE movi_vr CURSOR FOR busca_vr
OPEN movi_vr
START REPORT reporte4 TO "C:\\archivo"
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
FOREACH movi_vr INTO p_vetb02.*,p_vetb03.*,p_iptb02.*
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = false
RETURN
END IF
IF p_vetb02.sec_vend != 144 THEN
LET p_vetb02.sec_vend = 999
END IF
IF p_vetb02.porc_desc IS NULL THEN
LET p_vetb02.porc_desc = 0
END IF
IF p_vetb02.porc_itbi IS NULL THEN
LET p_vetb02.porc_itbi = 0
END IF
LET p_vetb02.sub_total = p_vetb03.cantidad * p_vetb03.precio
LET p_vetb02.monto_desc = (p_vetb03.cantidad * p_vetb03.precio) *
(p_vetb03.cantidad_2/100)
LET p_vetb02.monto_itbi = (p_vetb02.sub_total - p_vetb02.monto_desc)*
(p_vetb02.porc_itbi/100)
LET p_vetb02.neto = p_vetb02.sub_total - p_vetb02.monto_desc +
p_vetb02.monto_itbi
OUTPUT TO REPORT reporte4(p_vetb02.*,p_vetb03.*,p_iptb02.*)
END FOREACH
FINISH REPORT reporte4
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT reporte4(x,v,b)
DEFINE x RECORD LIKE vetb00002.*
DEFINE v RECORD LIKE vetb00003.*
DEFINE b RECORD LIKE iptb00002.*
DEFINE vendedor,imp,imp1 CHAR (1)
DEFINE descrip_venta CHAR(22)
DEFINE descrip1 CHAR(30)
DEFINE doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_off,
doce,normal CHAR(2)
DEFINE hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY x.sec_vend,b.cod_cia,v.cod_n
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 27, ASCII 80
LET hora = time
LET lj = (80 - LENGTH(p_compania.nombre CLIPPED))/2
PRINT comp_off
PRINT COLUMN 1, "veprrp417",
COLUMN lj, p_compania.nombre CLIPPED,
COLUMN 75, "Pag. ",pageno using "###"
LET l = (80 - LENGTH("Sistema de Ventas")) / 2
PRINT COLUMN l, "Sistema de Ventas ",
COLUMN 75, today using "dd/mm/yy"
LET l = (80 - LENGTH("Ventas al Contado")) / 2
PRINT COLUMN l, "Ventas al Contado",
COLUMN 78, hora
IF x.ventas = "1" THEN
LET l = (80 - LENGTH("Ventas Locales")) / 2
PRINT COLUMN l, "Ventas Locales"
ELSE
LET l = (80 - LENGTH("Ventas Exportacion")) / 2
PRINT COLUMN l, "Ventas Exportacion"
END IF
PRINT COLUMN 34, "Al ",fecha2 USING "dd/mm/yy"
PRINT COLUMN 1,ASCII 27, ASCII 80
PRINT COLUMN 1,comp_on
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"------------------------------"
PRINT COLUMN 49, "MONTO",
COLUMN 64, "MONTO",
COLUMN 79, "MONTO",
COLUMN 94, "MONTO",
COLUMN 121, "CANTIDADES"
PRINT COLUMN 1, "PRODUCTO",
COLUMN 49, "BRUTO",
COLUMN 60, "DESCUENTO",
COLUMN 79, "ITBI",
COLUMN 94, "NETO",
COLUMN 123, "VENDIDAS"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"------------------------------"
SKIP 1 LINE
BEFORE GROUP OF x.sec_vend
SKIP 2 LINE
IF x.sec_vend = 144 THEN
PRINT "**** SAN CRISTOBAL ****"
ELSE
PRINT "**** SANTO DOMINGO ****"
END IF
BEFORE GROUP OF b.cod_cia
SKIP 1 LINE
IF b.cod_cia = 1 THEN
PRINT "PRODUCTO LOCAL"
ELSE
PRINT "PRODUCTO IMPORTADO"
END IF
BEFORE GROUP OF v.cod_n
SELECT a.producto INTO p_iptb20.producto FROM iptb00020 a
WHERE a.cod_n = v.cod_n
AFTER GROUP OF v.cod_n
PRINT COLUMN 1, v.cod_n USING "&&"," ",p_iptb20.producto CLIPPED,
COLUMN 40, GROUP SUM(x.sub_total) USING "###,###,###.##",
COLUMN 55, GROUP SUM(x.monto_desc) USING "###,###,###.##",
COLUMN 70, GROUP SUM(x.monto_itbi) USING "###,###,###.##",
COLUMN 85, GROUP SUM(x.neto) USING "###,###,###.##",
COLUMN 115, GROUP SUM(v.cantidad) USING "###,###,###.###"
AFTER GROUP OF b.cod_cia
PRINT COLUMN 40, "--------------",
COLUMN 55, "--------------",
COLUMN 70, "--------------",
COLUMN 85, "--------------",
COLUMN 115, "---------------"
PRINT COLUMN 1, "Total Por Origen Producto ---> ",
COLUMN 40, GROUP SUM(x.sub_total) USING "###,###,###.##",
COLUMN 55, GROUP SUM(x.monto_desc) USING "###,###,###.##",
COLUMN 70, GROUP SUM(x.monto_itbi) USING "###,###,###.##",
COLUMN 85, GROUP SUM(x.neto) USING "###,###,###.##",
COLUMN 115, GROUP SUM(v.cantidad) USING "###,###,###.###"
AFTER GROUP OF x.sec_vend
PRINT COLUMN 40, "--------------",
COLUMN 55, "--------------",
COLUMN 70, "--------------",
COLUMN 85, "--------------",
COLUMN 115, "---------------"
PRINT COLUMN 1, "Total Por Localidad ---> ",
COLUMN 40, GROUP SUM(x.sub_total) USING "###,###,###.##",
COLUMN 55, GROUP SUM(x.monto_desc) USING "###,###,###.##",
COLUMN 70, GROUP SUM(x.monto_itbi) USING "###,###,###.##",
COLUMN 85, GROUP SUM(x.neto) USING "###,###,###.##",
COLUMN 115, GROUP SUM(v.cantidad) USING "###,###,###.###"
ON LAST ROW
PRINT COLUMN 40, "--------------",
COLUMN 55, "--------------",
COLUMN 70, "--------------",
COLUMN 85, "--------------",
COLUMN 115, "---------------"
PRINT COLUMN 1, "Total Ventas ---> ",
COLUMN 40, SUM(x.sub_total) USING "###,###,###.##",
COLUMN 55, SUM(x.monto_desc) USING "###,###,###.##",
COLUMN 70, SUM(x.monto_itbi) USING "###,###,###.##",
COLUMN 85, SUM(x.neto) USING "###,###,###.##",
COLUMN 115, SUM(v.cantidad) USING "###,###,###.###"
PRINT COLUMN 40, "==============",
COLUMN 55, "==============",
COLUMN 70, "==============",
COLUMN 85, "==============",
COLUMN 115, "==============="
PRINT ASCII 27, ASCII 80
SKIP TO TOP OF PAGE
END REPORT
FUNCTION msgrp000(tipo_papel)
DEFINE tipo_papel SMALLINT,
longitud CHAR(11),
linea_papel CHAR(50)
CASE
WHEN tipo_papel = 1
LET longitud = " 9 1/2 x 11"
WHEN tipo_papel = 2
LET longitud = "14 7/8 x 11"
END CASE
LET linea_papel = "Coloque papel ",longitud," en la impresora."
DISPLAY linea_papel
AT 15,14
DISPLAY "Asegurese de que la impresora este encendida."
AT 16,14
DISPLAY "<Esc> Ejecuta impresion <Supr> Cancela impresion"
AT 18,14
END FUNCTION
FUNCTION pantalla()
DEFINE fecha CHAR(8),
hora char(5)
SELECT * INTO p_compania.*
FROM companias
LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2
LET fecha = today USING "dd/mm/yy"
LET hora = time
DISPLAY p_compania.nombre CLIPPED AT 4,l
ATTRIBUTE (REVERSE,YELLOW)
DISPLAY fecha AT 4,70 ATTRIBUTE (YELLOW)
DISPLAY "Sistema de Contabilidad General" AT 5,24
DISPLAY hora AT 6,73 ATTRIBUTE(YELLOW)
CALL fgl_drawbox(5,79,3,1)
CALL fgl_drawbox(1,79,22,1)
END FUNCTION