Files

1459 lines
46 KiB
Plaintext

{
--------------------------------------------------------------------------
PROGRAMA : VEPRMT099
OBJETIVO : Este programa captura la factura comercial que estaban antes
el ano 1993
REALIZADO POR : Ing. Juan Fco. Soto.
FECHA : Enero 12,1993.
--------------------------------------------------------------------------
}
GLOBALS
"veprgb000.4gl"
DEFINE mes_chequeo SMALLINT
FUNCTION veprmt999()
DEFINE t_valor,valor_p,balance DECIMAL(12,2)
DEFINE tipo_fact,p_cod,p_bonif,cantidad_total,ano_act,ano_fe,credito,t_bonif,
provincia,factor INTEGER
DEFINE hoy DATE
DEFINE hice,primera,tipo_p,opt2,opt1,opt CHAR(1)
DEFINE tipo_f,tipo2 CHAR(2)
DEFINE cod_desc,tipo1 SMALLINT
DEFINE precio_ant,cantidad_ant,precio DECIMAL(12,3),
i,longitud SMALLINT
DEFINE tot_porc1,porc_desc,tot_porc DECIMAL(8,3)
OPTIONS
FORM LINE 2,
ERROR LINE 24,
COMMENT LINE 23,
PROMPT LINE 22
CLEAR SCREEN
OPEN FORM vefmmt999 FROM "vefmmt999"
DISPLAY FORM vefmmt999
DISPLAY "veprmt999" AT 1,1 ATTRIBUTE (YELLOW)
LET hoy = today
DISPLAY hoy using "dd/mm/yy" AT 1,70 ATTRIBUTE (YELLOW)
DISPLAY "Factura de Ventas" AT 3,30 ATTRIBUTE (YELLOW)
DISPLAY "<Esc> Adiciona " AT 3,1 ATTRIBUTE (BOLD)
DISPLAY "<Supr> Cancela Operacion" AT 3,56 ATTRIBUTE (BOLD)
# WHENEVER ERROR CONTINUE
ERROR "Para Anular Una Factura Que este Hecha Precione Ctrl-B"
LABEL exito:
INITIALIZE fact_gral.*,primera TO NULL
LET porc_desc = 0
LET descrip1 = NULL
LET descrip2 = NULL
LET p_bonif = NULL
LET fact_gral.cod_cia = 1
LET fact_gral.fecha_factura = today
LET tot_porc1 = 0
LET fact_gral.itbi = 0
LET fact_gral.sub_total = 0
LET fact_gral.total_fact = 0
LET fact_gral.desc_valor = 0
LET tot_porc = 0
DISPLAY BY NAME descrip1,descrip2
FOR idx = 1 to 20
LET fact_det[idx].cod_n = null
LET fact_det[idx].cod_grupo = null
LET fact_det[idx].cod_tipo = null
LET fact_det[idx].cod_sec = null
LET fact_det[idx].cantidad = null
LET fact_det[idx].despacho = null
LET fact_det[idx].existencia = null
LET fact_det[idx].unidades = null
LET fact_det[idx].precio = null
LET fact_det[idx].monto_fact = null
END FOR
FOR idx = 1 to 4
DISPLAY fact_det[idx].cod_n to s_fact[idx].cod_n
DISPLAY fact_det[idx].cod_grupo to s_fact[idx].cod_grupo
DISPLAY fact_det[idx].cod_tipo to s_fact[idx].cod_tipo
DISPLAY fact_det[idx].cod_sec to s_fact[idx].cod_sec
DISPLAY fact_det[idx].cantidad to s_fact[idx].cantidad
DISPLAY fact_det[idx].despacho to s_fact[idx].despacho
DISPLAY fact_det[idx].existencia to s_fact[idx].existencia
DISPLAY fact_det[idx].unidades to s_fact[idx].unidades
DISPLAY fact_det[idx].precio to s_fact[idx].precio
DISPLAY fact_det[idx].monto_fact to s_fact[idx].monto_fact
END FOR
DISPLAY BY NAME descrip1,descrip2
LABEL vuelve:
LET descrip1 = null
LET descrip2 = null
LET p_bonif = null
LET tot_porc1 = 0
LET t_valor = 0
LET fact_gral.cond_pago = 2
LET fact_gral.porc_itbi = null
LET fact_gral.prima_us = null
DISPLAY BY NAME fact_gral.porc_itbi,fact_gral.prima_us,
descrip1,descrip2
LET hice = "S"
LET h = 1
INPUT BY NAME fact_gral.* WITHOUT DEFAULTS ATTRIBUTE (YELLOW)
ON KEY (CONTROL-B)
LET mes_chequeo = MONTH(TODAY)
CALL anular1()
NEXT FIELD cod_cia
ON KEY (CONTROL-W)
CASE
WHEN INFIELD(cod_tarifa)
CALL tarifas()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD cod_tarifa
END IF
LET descrip5 = descrip6[1,15] clipped
LET descrip6 = descrip6[16,30] clipped
DISPLAY BY NAME descrip5,descrip6 ATTRIBUTE (BOLD)
NEXT FIELD nombre_tran
WHEN INFIELD(zona)
IF fact_gral.ventas = "1" THEN
CALL busca_zona1()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD zona
END IF
ELSE
CALL busca_pais()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD zona
END IF
END IF
LET p_cod = fact_gral.zona
LET fact_gral.zona = p_cod using "&&&"
DISPLAY BY NAME fact_gral.zona,descrip1 ATTRIBUTE (BOLD)
NEXT FIELD fecha_factura
WHEN INFIELD(tipo_cliente)
CALL consulta_clientes()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD tipo_cliente
END IF
LET fact_gral.tipo_cliente = cliente_dir.tipo_cliente
LET fact_gral.sec_cliente = cliente_dir.sec_cliente
INITIALIZE descrip1,descrip2,descrip3 TO NULL
LET fact_gral.direccion = descrip1 clipped," ",descrip2 clipped,", ",
descrip3 clipped
DISPLAY BY NAME fact_gral.tipo_cliente ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.sec_cliente ATTRIBUTE(YELLOW)
DISPLAY BY NAME fact_gral.nombre ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.direccion ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.ciudad ATTRIBUTE (YELLOW)
NEXT FIELD prima_us
WHEN INFIELD(sec_cliente)
CALL consulta_clientes()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD tipo_cliente
END IF
LET fact_gral.tipo_cliente = cliente_dir.tipo_cliente
LET fact_gral.sec_cliente = cliente_dir.sec_cliente
INITIALIZE descrip1,descrip2,descrip3 TO NULL
SELECT a.nombre,b.calle,b.casa_num,b.barrio,
d.nombre_provincia,a.limite_credito
INTO fact_gral.nombre,descrip1,descrip2,descrip3,
fact_gral.ciudad,credito
FROM vetb00004 a,vetb00005 b,vetb00009 c,vetb00020 d
WHERE a.tipo_cliente = fact_gral.tipo_cliente and
a.sec_cliente = fact_gral.sec_cliente and
b.tipo_cliente = a.tipo_cliente and
b.sec_cliente = a.sec_cliente and
a.cod_zona = c.cod_zona and
a.cod_provincia = c.cod_provincia and
a.cod_provincia = d.cod_provincia and
a.status_t IS NULL
LET fact_gral.direccion = descrip1 clipped," ",descrip2 clipped,", ",
descrip3 clipped
DISPLAY BY NAME fact_gral.tipo_cliente ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.sec_cliente ATTRIBUTE(YELLOW)
DISPLAY BY NAME fact_gral.nombre ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.direccion ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.ciudad ATTRIBUTE (YELLOW)
NEXT FIELD prima_us
WHEN INFIELD(cond_pago)
CALL condiciones()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD cond_pago
END IF
DISPLAY BY NAME fact_gral.cond_pago ATTRIBUTE(YELLOW)
DISPLAY BY NAME fact_gral.descrip ATTRIBUTE(YELLOW)
NEXT FIELD orden
# WHEN INFIELD(cod_vend)
# CALL consulta_empleados()
# IF int_flag THEN
# LET numero_msg = 2
# CALL msg(numero_msg)
# LET int_flag = false
# NEXT FIELD cod_vend
# END IF
# # LET fact_gral.cod_vend = transportista.cod_transp
# LET fact_gral.sec_vend = transportista.sec_transp
# LET fact_gral.nombre_vend = descrip6
# DISPLAY BY NAME fact_gral.cod_vend ATTRIBUTE (YELLOW)
# DISPLAY BY NAME fact_gral.sec_vend ATTRIBUTE (YELLOW)
# DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (YELLOW)
# NEXT FIELD cod_transp
WHEN INFIELD(sec_vend)
CALL consulta_empleados()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD cod_vend
END IF
# LET fact_gral.cod_vend = transportista.cod_transp
LET fact_gral.sec_vend = transportista.sec_transp
LET fact_gral.nombre_vend = descrip6
# DISPLAY BY NAME fact_gral.cod_vend ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.sec_vend ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (YELLOW)
NEXT FIELD cod_transp
WHEN INFIELD(cod_transp)
#CALL cons_transp()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD cons_transp
END IF
DISPLAY BY NAME fact_gral.cod_transp ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.sec_transp ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (YELLOW)
NEXT FIELD cod_tarifa
WHEN INFIELD(sec_transp)
#CALL cons_transp()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD cons_transp
END IF
DISPLAY BY NAME fact_gral.cod_transp ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.sec_transp ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (YELLOW)
NEXT FIELD cod_tarifa
END CASE
AFTER FIELD cod_cia
IF fact_gral.cod_cia is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_cia
END IF
IF fact_gral.cod_cia = 1 THEN
LET compania = "R A Y - O - V A C D O M I N I C A N A, S. A."
END IF
IF fact_gral.cod_cia = 2 THEN
LET compania = "DISTRIBUIDORA DOMINICANA DE PILAS, S. A."
END IF
DISPLAY BY NAME compania ATTRIBUTE (YELLOW)
AFTER FIELD ventas
IF fact_gral.ventas is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD ventas
END IF
SELECT prima,@itbi INTO fact_gral.prima_us,fact_gral.porc_itbi
FROM vetb00019 WHERE disponible = "S"
IF fact_gral.ventas = "1" THEN
IF fact_gral.porc_itbi is null THEN
LET numero_msg = 87
CALL msg(numero_msg)
NEXT FIELD ventas
END IF
LET tipo_fact = 30
LET tipo_f = "FT"
LET fact_gral.nombre_tipo = "LOCAL"
LET fact_gral.prima_us = null
ELSE
LET fact_gral.porc_itbi = null
IF fact_gral.prima_us is null THEN
LET numero_msg = 87
CALL msg(numero_msg)
NEXT FIELD ventas
END IF
LET fact_gral.nombre_tipo = "EXPORTACION"
LET tipo_fact = 31
LET tipo_f = "FE"
END IF
DISPLAY BY NAME fact_gral.prima_us,fact_gral.porc_itbi
ATTRIBUTE(BOLD)
DISPLAY BY NAME fact_gral.nombre_tipo ATTRIBUTE (BOLD)
DISPLAY BY NAME descrip1 ATTRIBUTE (BOLD)
AFTER FIELD zona
LET longitud = LENGTH(fact_gral.zona)
IF longitud < 3 THEN
LET numero_msg = 77
CALL msg(numero_msg)
NEXT FIELD zona
END IF
LET tipo1 = fact_gral.zona
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD zona
END IF
LET tipo2 = fact_gral.zona[2,3]
IF fact_gral.ventas = "1" THEN
SELECT unique descrip INTO descrip1 FROM vetb00008
WHERE cod_zona = tipo1
IF status < 0 THEN
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
ELSE
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD ventas
END IF
END IF
END IF
IF fact_gral.ventas = "2" THEN
SELECT unique nom_pais INTO descrip1 FROM cotb00018
WHERE cod_pais = tipo2
IF status < 0 THEN
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
ELSE
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD ventas
END IF
END IF
END IF
SELECT max(ult_factura) INTO fact_gral.factura FROM vetb77777
LET fact_gral.factura = fact_gral.factura + 1
DISPLAY BY NAME fact_gral.factura ATTRIBUTE (YELLOW)
DISPLAY BY NAME descrip1 ATTRIBUTE(YELLOW)
AFTER FIELD sec_cliente
IF fact_gral.sec_cliente is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD sec_cliente
ELSE
SELECT a.nombre,a.limite_credito,a.cod_provincia
INTO fact_gral.nombre,credito,provincia
FROM vetb00004 a
WHERE a.tipo_cliente = fact_gral.tipo_cliente and
a.sec_cliente = fact_gral.sec_cliente AND
a.status_t IS NULL
IF status < 0 THEN
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
ELSE
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD tipo_cliente
END IF
END IF
DISPLAY BY NAME fact_gral.nombre ATTRIBUTE (YELLOW)
SELECT b.calle,b.casa_num,b.barrio
INTO descrip1,descrip2,descrip3
FROM vetb00005 b
WHERE b.tipo_cliente = fact_gral.tipo_cliente and
b.sec_cliente = fact_gral.sec_cliente
SELECT d.nombre_provincia INTO fact_gral.ciudad
FROM vetb00020 d
WHERE d.cod_provincia = provincia
IF status < 0 THEN
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
ELSE
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD tipo_cliente
END IF
END IF
LET fact_gral.direccion = descrip1 clipped," ",descrip2 clipped,", ",
descrip3 clipped
DISPLAY BY NAME fact_gral.direccion ATTRIBUTE (YELLOW)
DISPLAY BY NAME fact_gral.ciudad ATTRIBUTE (YELLOW)
END IF
BEFORE FIELD prima_us
IF fact_gral.ventas = "1" THEN
NEXT FIELD cond_pago
END IF
BEFORE FIELD cond_pago
LET fact_gral.cond_pago = 2
DISPLAY BY NAME fact_gral.cond_pago
AFTER FIELD cond_pago
IF fact_gral.cond_pago is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cond_pago
END IF
SELECT @descrip,@dias INTO fact_gral.descrip,dias_v FROM vetb00012
WHERE cond_pago = fact_gral.cond_pago
IF status < 0 THEN
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
ELSE
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cond_pago
END IF
END IF
DISPLAY BY NAME fact_gral.descrip ATTRIBUTE (YELLOW)
BEFORE FIELD porc_itbi
IF fact_gral.ventas = "2" THEN
NEXT FIELD sec_vend
END IF
AFTER FIELD porc_itbi
IF fact_gral.porc_itbi is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD porc_itbi
END IF
# AFTER FIELD cod_vend
# IF fact_gral.cod_vend is null THEN
# LET numero_msg = 16
# CALL msg(numero_msg)
# NEXT FIELD cod_vend
# END IF
AFTER FIELD sec_vend
IF fact_gral.sec_vend is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD sec_vend
END IF
SELECT nom1_emp, apell1_emp INTO descrip5,descrip6
FROM adtb00003
WHERE #cod_emp = fact_gral.cod_vend and
num_emp = fact_gral.sec_vend
IF status < 0 THEN
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
ELSE
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD sec_vend
END IF
END IF
LET fact_gral.nombre_vend = descrip5 clipped,", ",descrip6 clipped
DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (YELLOW)
BEFORE FIELD cod_transp
IF fact_gral.cond_pago = 1 or fact_gral.ventas = "2" THEN
NEXT FIELD fecha_embarque
END IF
AFTER FIELD cod_transp
IF fact_gral.cod_transp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_transp
END IF
AFTER FIELD sec_transp
IF fact_gral.sec_transp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD sec_transp
END IF
SELECT nombre,cedula,serie
INTO fact_gral.nombre_tran,p_cedula,p_serie
FROM vetb00015
WHERE cod_transp = fact_gral.cod_transp and
sec_transp = fact_gral.sec_transp and
status_t is null
IF status < 0 THEN
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
ELSE
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_transp
END IF
END IF
DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (YELLOW)
AFTER FIELD cod_tarifa
IF fact_gral.cod_tarifa is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_tarifa
END IF
SELECT descrip INTO descrip6 FROM vetb00023
WHERE cod_tarifa = fact_gral.cod_tarifa and
status_t is null
LET descrip5 = descrip6[1,15] clipped
LET descrip6 = descrip6[16,30] clipped
DISPLAY BY NAME descrip5,descrip6 ATTRIBUTE (BOLD)
BEFORE FIELD fecha_embarque
IF fact_gral.ventas = "1" THEN
NEXT FIELD placa_transp
END IF
AFTER FIELD fecha_embarque
IF fact_gral.fecha_embarque is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_embarque
END IF
# No permite que el usuario introduzca un ano que no corresponda al actual
LET ano_act = year(today)
LET ano_fe = year(fact_gral.fecha_embarque)
IF ano_fe < ano_act THEN
LET numero_msg = 59
CALL msg(numero_msg)
NEXT FIELD fecha_embarque
END IF
IF fact_gral.fecha_embarque < fact_gral.fecha_factura THEN
LET numero_msg = 100
CALL msg(numero_msg)
NEXT FIELD fecha_embarque
END IF
IF fact_gral.ventas = "2" THEN
EXIT INPUT
END IF
AFTER FIELD placa_transp
IF fact_gral.placa_transp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
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
LET fact_gral.itbi = 0
LET fact_gral.sub_total = 0
LET fact_gral.total_fact = 0
LET fact_gral.desc_valor = 0
LET tot_porc = 0
LABEL alla:
INPUT ARRAY fact_det WITHOUT DEFAULTS FROM s_fact.*
ON KEY (CONTROL-W)
LET curr = arr_curr()
LET scr_l = scr_line()
CASE
WHEN INFIELD (cod_n)
CALL busca_pt()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD cod_n
END IF
LET fact_det[curr].cod_n = pterminado.cod_n
LET fact_det[curr].cod_grupo = pterminado.cod_grupo
LET fact_det[curr].cod_tipo = pterminado.cod_tipo
LET fact_det[curr].cod_sec = pterminado.cod_sec
CALL repite_codigo()
IF verdad = "S" THEN
NEXT FIELD cod_n
END IF
LET verdad = null
# CALL precios()
IF verdad = "S" THEN
NEXT FIELD cod_n
END IF
SELECT a.descrip_esp,SUM(b.cantidad_2) INTO descrip1,p_existencia
FROM iptb00002 a,iptb00006 b
WHERE a.cod_n = fact_det[curr].cod_n AND
a.cod_grupo = fact_det[curr].cod_grupo AND
a.cod_tipo = fact_det[curr].cod_tipo AND
a.cod_sec = fact_det[curr].cod_sec AND
b.cod_n = fact_det[curr].cod_n AND
b.cod_grupo = fact_det[curr].cod_grupo AND
b.cod_tipo = fact_det[curr].cod_tipo AND
b.cod_sec = fact_det[curr].cod_sec AND
a.status_t is null and
b.status_t is null
LET descrip2 = descrip1
DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n
DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo
DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo
DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
DISPLAY BY NAME descrip2
NEXT FIELD cantidad
WHEN INFIELD (cod_grupo)
CALL busca_pt()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD cod_n
END IF
LET fact_det[curr].cod_n = pterminado.cod_n
LET fact_det[curr].cod_grupo = pterminado.cod_grupo
LET fact_det[curr].cod_tipo = pterminado.cod_tipo
LET fact_det[curr].cod_sec = pterminado.cod_sec
CALL repite_codigo()
IF verdad = "S" THEN
NEXT FIELD cod_n
END IF
LET verdad = null
# CALL precios()
IF verdad = "S" THEN
NEXT FIELD cod_n
END IF
SELECT a.descrip_esp,SUM(b.cantidad_2) INTO descrip1,p_existencia
FROM iptb00002 a,iptb00006 b
WHERE a.cod_n = fact_det[curr].cod_n AND
a.cod_grupo = fact_det[curr].cod_grupo AND
a.cod_tipo = fact_det[curr].cod_tipo AND
a.cod_sec = fact_det[curr].cod_sec AND
b.cod_n = fact_det[curr].cod_n AND
b.cod_grupo = fact_det[curr].cod_grupo AND
b.cod_tipo = fact_det[curr].cod_tipo AND
b.cod_sec = fact_det[curr].cod_sec AND
a.status_t is null and
b.status_t is null
LET descrip2 = descrip1
DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n
DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo
DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo
DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
DISPLAY BY NAME descrip2
NEXT FIELD cantidad
WHEN INFIELD (cod_tipo)
CALL busca_pt()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD cod_n
END IF
LET fact_det[curr].cod_n = pterminado.cod_n
LET fact_det[curr].cod_grupo = pterminado.cod_grupo
LET fact_det[curr].cod_tipo = pterminado.cod_tipo
LET fact_det[curr].cod_sec = pterminado.cod_sec
CALL repite_codigo()
IF verdad = "S" THEN
NEXT FIELD cod_n
END IF
LET verdad = null
# CALL precios()
IF verdad = "S" THEN
NEXT FIELD cod_n
END IF
SELECT a.descrip_esp,SUM(b.cantidad_2) INTO descrip1,p_existencia
FROM iptb00002 a,iptb00006 b
WHERE a.cod_n = fact_det[curr].cod_n AND
a.cod_grupo = fact_det[curr].cod_grupo AND
a.cod_tipo = fact_det[curr].cod_tipo AND
a.cod_sec = fact_det[curr].cod_sec AND
b.cod_n = fact_det[curr].cod_n AND
b.cod_grupo = fact_det[curr].cod_grupo AND
b.cod_tipo = fact_det[curr].cod_tipo AND
b.cod_sec = fact_det[curr].cod_sec AND
a.status_t is null and
b.status_t is null
LET descrip2 = descrip1
DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n
DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo
DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo
DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
DISPLAY BY NAME descrip2
NEXT FIELD cantidad
WHEN INFIELD (cod_sec)
CALL busca_pt()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD cod_n
END IF
LET fact_det[curr].cod_n = pterminado.cod_n
LET fact_det[curr].cod_grupo = pterminado.cod_grupo
LET fact_det[curr].cod_tipo = pterminado.cod_tipo
LET fact_det[curr].cod_sec = pterminado.cod_sec
CALL repite_codigo()
IF verdad = "S" THEN
NEXT FIELD cod_n
END IF
LET verdad = null
# CALL precios()
IF verdad = "S" THEN
NEXT FIELD cod_n
END IF
SELECT a.descrip_esp,SUM(b.cantidad_2) INTO descrip1,p_existencia
FROM iptb00002 a,iptb00006 b
WHERE a.cod_n = fact_det[curr].cod_n AND
a.cod_grupo = fact_det[curr].cod_grupo AND
a.cod_tipo = fact_det[curr].cod_tipo AND
a.cod_sec = fact_det[curr].cod_sec AND
b.cod_n = fact_det[curr].cod_n AND
b.cod_grupo = fact_det[curr].cod_grupo AND
b.cod_tipo = fact_det[curr].cod_tipo AND
b.cod_sec = fact_det[curr].cod_sec AND
a.status_t is null and
b.status_t is null
LET descrip2 = descrip1
DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n
DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo
DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo
DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
DISPLAY BY NAME descrip2
NEXT FIELD cantidad
END CASE
AFTER FIELD cod_n
LET curr = arr_curr()
LET scr_l = scr_line()
IF fact_det[curr].cod_n is not null AND
fact_det[curr].cod_grupo is not null AND
fact_det[curr].cod_tipo is not null AND
fact_det[curr].cod_sec is not null THEN
CALL repite_codigo()
IF verdad = "S" THEN
NEXT FIELD cod_grupo
END IF
END IF
AFTER FIELD cod_grupo
IF fact_det[curr].cod_n is not null AND
fact_det[curr].cod_grupo is not null AND
fact_det[curr].cod_tipo is not null AND
fact_det[curr].cod_sec is not null THEN
CALL repite_codigo()
IF verdad = "S" THEN
NEXT FIELD cod_tipo
END IF
END IF
AFTER FIELD cod_tipo
IF fact_det[curr].cod_n is not null AND
fact_det[curr].cod_grupo is not null AND
fact_det[curr].cod_tipo is not null AND
fact_det[curr].cod_sec is not null THEN
CALL repite_codigo()
IF verdad = "S" THEN
NEXT FIELD cod_sec
END IF
END IF
AFTER FIELD cod_sec
IF fact_det[curr].cod_n is not null AND
fact_det[curr].cod_grupo is not null AND
fact_det[curr].cod_tipo is not null AND
fact_det[curr].cod_sec is not null THEN
CALL repite_codigo()
IF verdad = "S" THEN
NEXT FIELD cod_n
END IF
# Calcula el precio por la cantidad vendida para el monto y el
# calculo del precio por la prima digitdada
LET verdad = null
CALL precios()
IF verdad = "S" THEN
NEXT FIELD cod_n
END IF
# Busca la descripcion del producto con su existencia
SELECT a.descrip_esp,SUM(b.cantidad_2) INTO descrip2,p_existencia
FROM iptb00002 a,iptb00006 b
WHERE a.cod_n = fact_det[curr].cod_n AND
a.cod_grupo = fact_det[curr].cod_grupo AND
a.cod_tipo = fact_det[curr].cod_tipo AND
a.cod_sec = fact_det[curr].cod_sec AND
b.cod_n = a.cod_n and
b.cod_grupo = a.cod_grupo and
b.cod_tipo = a.cod_tipo and
b.cod_sec = a.cod_sec and
a.status_t is null and
b.status_t is null
IF status < 0 THEN
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
ELSE
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
ELSE
LET fact_det[curr].cod_n = null
LET fact_det[curr].cod_grupo = null
LET fact_det[curr].cod_tipo = null
LET fact_det[curr].cod_sec = null
DISPLAY fact_det[curr].cod_n to s_fact[scr_l].cod_n
DISPLAY fact_det[curr].cod_grupo to s_fact[scr_l].cod_grupo
DISPLAY fact_det[curr].cod_tipo to s_fact[scr_l].cod_tipo
DISPLAY fact_det[curr].cod_sec to s_fact[scr_l].cod_sec
NEXT FIELD cod_n
END IF
DISPLAY BY NAME descrip2
AFTER FIELD cantidad
IF fact_det[curr].cod_n is not null AND
fact_det[curr].cod_grupo is not null AND
fact_det[curr].cod_tipo is not null AND
fact_det[curr].cod_sec is not null THEN
IF fact_det[curr].cantidad is null OR
fact_det[curr].cantidad = 0 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
# Busca factor de conversion de cada pila
SELECT cantidad INTO p_cantidad FROM vetb00014
WHERE cod_n = fact_det[curr].cod_n and
cod_grupo = fact_det[curr].cod_grupo and
cod_tipo = fact_det[curr].cod_tipo and
cod_sec = fact_det[curr].cod_sec and
status_t is null
IF status = notfound THEN
LET numero_msg = 94
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
LET fact_det[curr].unidades = fact_det[curr].cantidad * p_cantidad
DISPLAY fact_det[curr].unidades TO s_fact[scr_l].unidades
# Calcula el precio por las unidades y da el monto
LET fact_det[curr].monto_fact = fact_det[curr].unidades *
fact_det[curr].precio
DISPLAY fact_det[curr].monto_fact to s_fact[scr_l].monto_fact
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
LET excede[curr] = null
END IF
{ Convertir la existencia en cajas para desplegarla
LET p_existencia = p_existencia / p_cantidad
LET fact_det[curr].despacho = p_existencia
LET fact_det[curr].existencia = p_existencia
LET cant_pend[curr] = fact_det[curr].despacho * p_cantidad
DISPLAY fact_det[curr].existencia TO s_fact[scr_l].existencia
DISPLAY fact_det[curr].despacho TO s_fact[scr_l].despacho
NEXT FIELD despacho
ELSE
NEXT FIELD precio
END IF}
# Tiene Este Comentario por estar controlado en otro lado
# Esta decicion es para el precio del producto si no tiene
{ IF fact_det[curr].monto_fact is null or
fact_det[curr].monto_fact = 0 THEN
LET numero_msg = 85
CALL msg(numero_msg)
LET fact_det[curr].cod_n = null
LET fact_det[curr].cod_grupo = null
LET fact_det[curr].cod_tipo = null
LET fact_det[curr].cod_sec = null
LET fact_det[curr].cantidad = null
LET fact_det[curr].despacho = null
LET fact_det[curr].existencia = null
LET fact_det[curr].despacho = null
LET fact_det[curr].existencia = null
LET fact_det[curr].unidades = null
LET fact_det[curr].precio = null
LET fact_det[curr].monto_fact = null
DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n
DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo
DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo
DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec
DISPLAY fact_det[curr].cantidad to s_fact[scr_l].cantidad
DISPLAY fact_det[curr].despacho to s_fact[scr_l].desacho
DISPLAY fact_det[curr].existencia to s_fact[scr_l].existencia
DISPLAY fact_det[curr].despacho to s_fact[scr_l].despacho
DISPLAY fact_det[curr].existencia to s_fact[scr_l].existencia
DISPLAY fact_det[curr].precio to s_fact[scr_l].precio
DISPLAY fact_det[curr].monto_fact to s_fact[scr_l].monto_fact
DISPLAY fact_det[curr].unidades to s_fact[scr_l].unidades
NEXT FIELD cod_n
END IF}
AFTER FIELD precio
IF fact_det[curr].precio is not null THEN
LET fact_det[curr].monto_fact = fact_det[curr].precio *
fact_det[curr].unidades
DISPLAY fact_det[curr].monto_fact to s_fact[scr_l].monto_fact
END IF
BEFORE FIELD despacho
NEXT FIELD precio
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
# Busca la existencia de la pilas
IF fact_det[curr].cod_n is not null and
fact_det[curr].cod_grupo is not null and
fact_det[curr].cod_tipo is not null and
fact_det[curr].cod_sec is not null THEN
SELECT a.descrip_esp,SUM(b.cantidad_2) INTO descrip2,p_existencia
FROM iptb00002 a,iptb00006 b
WHERE a.cod_n = fact_det[curr].cod_n AND
a.cod_grupo = fact_det[curr].cod_grupo AND
a.cod_tipo = fact_det[curr].cod_tipo AND
a.cod_sec = fact_det[curr].cod_sec AND
b.cod_n = a.cod_n and
b.cod_grupo = a.cod_grupo and
b.cod_tipo = a.cod_tipo and
b.cod_sec = a.cod_sec and
a.status_t is null and
b.status_t is null
# Busca factor de conversion de cada pila
SELECT cantidad INTO p_cantidad FROM vetb00014
WHERE cod_n = fact_det[curr].cod_n and
cod_grupo = fact_det[curr].cod_grupo and
cod_tipo = fact_det[curr].cod_tipo and
cod_sec = fact_det[curr].cod_sec and
status_t is null
IF status = notfound THEN
LET numero_msg = 94
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
# Calculo del sub-total de la factura
LET t_costos = 0
FOR idx = 1 to arr_count()
IF fact_det[idx].monto_fact is not null THEN
SELECT material,labor,gasto_ind,max(mes_ini),max(mes_fin),max(ano)
INTO p_costos1,p_costos2,p_costos3 FROM iptb00004
WHERE cod_n = fact_det[idx].cod_n and
cod_grupo = fact_det[idx].cod_grupo and
cod_tipo = fact_det[idx].cod_tipo and
cod_sec = fact_det[idx].cod_sec and
ventas = fact_gral.ventas and
status_t is null
GROUP BY 1,2,3
LET p_costos = p_costos1 + p_costos2 + p_costos3
LET p_costos = fact_det[idx].unidades * p_costos
LET t_costos = t_costos + p_costos
LET fact_gral.sub_total = fact_gral.sub_total +
fact_det[idx].monto_fact
END IF
END FOR
LET cantidad_total = 0
IF primera is null THEN
LET primera = "S"
END IF
# Calculo descuento de la factura
IF fact_gral.porc_desc > 0 and fact_gral.ventas = "1" THEN
LET p_desc = fact_gral.sub_total * (fact_gral.porc_desc / 100)
LET fact_gral.desc_valor = p_desc
END IF
IF fact_gral.porc_desc > 0 and fact_gral.ventas = "2" THEN
LET fact_gral.desc_valor = fact_gral.porc_desc
END IF
IF fact_gral.desc_valor is null THEN
LET fact_gral.desc_valor = 0
END IF
LET desc_valor = fact_gral.desc_valor using "###,###.##"
DISPLAY BY NAME desc_valor ATTRIBUTE (BOLD)
# Calcula el porciento de ITBIS de la factura dependiendo del porciento
# especificado por el usuario
IF fact_gral.porc_itbi is not null THEN
LET fact_gral.total_fact = fact_gral.sub_total - fact_gral.desc_valor
LET fact_gral.itbi = (fact_gral.total_fact *
(fact_gral.porc_itbi / 100))
LET itbi = fact_gral.itbi using "###,###,###.##"
DISPLAY BY NAME itbi ATTRIBUTE (BOLD)
END IF
# Calculo total de la factura
IF fact_gral.ventas = "1" THEN
LET fact_gral.total_fact = fact_gral.sub_total - fact_gral.desc_valor +
fact_gral.itbi
END IF
# Cargos varios por conceptos varios en factura de exportacion
IF fact_gral.ventas = "2" THEN
LET fact_gral.total_fact = fact_gral.sub_total + fact_gral.desc_valor
LET desc_valor = fact_gral.desc_valor using "###,###.##"
DISPLAY BY NAME desc_valor ATTRIBUTE (BOLD)
END IF
LET sub_total = fact_gral.sub_total using "###,###,###.##"
LET total_fact = fact_gral.total_fact using "###,###,###.##"
DISPLAY BY NAME total_fact ATTRIBUTE (BOLD)
DISPLAY BY NAME sub_total ATTRIBUTE (BOLD)
# Si el usuario no introdujo ningun item en el arreglo
IF fact_gral.sub_total = 0 or fact_gral.sub_total is null THEN
LET numero_msg = 84
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
EXIT INPUT
END INPUT
LABEL anterior:
PROMPT "Las Informaciones Estan Correctas (S/N)" FOR CHAR opt
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF opt is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
GOTO anterior
END IF
IF (opt != "S" and opt != "s") THEN
IF (opt != "n" and opt != "N") THEN
LET numero_msg = -1301
CALL msg(numero_msg)
GOTO anterior
END IF
END IF
IF opt = "S" or opt = "s" THEN
# Actualiza la tabla de datos generales de la factura
INSERT INTO vetb88888
(cod_cia, factura, fecha_factura, ventas,zona, orden, fecha_orden,
conduce, fecha_conduce, tipo_cliente, sec_cliente,
sec_vend, cond_pago, porc_itbi,porc_desc, prima_us, sub_total, monto_desc,
monto_itbi, neto, fecha_embarque, status_impresion, status_t, us_crea,
fech_crea, us_mod, fech_mod)
VALUES
(fact_gral.cod_cia, fact_gral.factura, fact_gral.fecha_factura,
fact_gral.ventas, fact_gral.zona, fact_gral.orden, fact_gral.fecha_orden,
fact_gral.conduce, fact_gral.fecha_conduce, fact_gral.tipo_cliente,
fact_gral.sec_cliente,
fact_gral.sec_vend, fact_gral.cond_pago, fact_gral.porc_itbi,
fact_gral.porc_desc, fact_gral.prima_us, fact_gral.sub_total,
fact_gral.desc_valor, fact_gral.itbi, fact_gral.total_fact,
fact_gral.fecha_embarque, impresion, null, user, current, null, null)
# Actualiza la tabla control de la numeracion de la factura
UPDATE vetb77777 set ult_factura = fact_gral.factura,
us_crea = user,
fech_crea = current
# Actualizacion de la tabla de cuentas por cobrar
FOR idx = 1 TO arr_count()
IF fact_det[idx].cod_n is not null AND
fact_det[idx].cod_grupo is not null AND
fact_det[idx].cod_tipo is not null AND
fact_det[idx].cod_sec is not null THEN
# Actualiza la tabla de datos detallados de la factura
INSERT INTO vetb99999 values
(fact_gral.cod_cia,fact_gral.factura,fact_det[idx].cod_n,
fact_det[idx].cod_grupo,fact_det[idx].cod_tipo,fact_det[idx].cod_sec,
fact_det[idx].unidades,p_bonifica[idx],fact_det[idx].precio,null,user,
current,null,null)
# Actualizando la tabla de movimientos de inventario cuando la factura es
# normal o Tiene Cantidad a despachar
# LET cant_pend[idx] = cant_pend[idx] * -1
LET fact_det[idx].unidades = fact_det[idx].unidades * -1
LET fact_det[idx].unidades = fact_det[idx].unidades * -1
LET cant_pend[idx] = cant_pend[idx] * -1
# Actualiza la tabla maestra de producto terminados en la existencia
IF p_bonifica[idx] is null THEN
LET p_bonifica[idx] = 0
END IF
IF opt4 = "N" or opt4 = "n" THEN
LET p_bonifica[idx] = 0
END IF
# Cuando la cantidad excede a la existencia hay que guardar la existencia y
# ademas imprimir las cajas bonificadas pero no rebajar del inventario
LET p_cantidad_1 = null
IF excede[idx] = "S" THEN
IF p_bonifica[idx] > 0 THEN
LET p_cantidad_1 = p_bonifica[idx]
LET p_bonifica[idx] = 0
END IF
END IF
END IF
IF excede[idx] = "S" THEN
LET p_bonifica[idx] = p_cantidad_1
END IF
END FOR
# Impresion de la factura
IF opt1 = "S" or opt1 = "s" THEN
START REPORT imp_fact TO "%USHOME%\\archivo"
FOR idx = 1 TO arr_count()
IF fact_det[idx].cod_n is not null AND
fact_det[idx].cod_grupo is not null AND
fact_det[idx].cod_tipo is not null AND
fact_det[idx].cod_sec is not null THEN
OUTPUT TO REPORT
imp_fact(fact_gral.*,fact_det[idx].*,tot_porc,p_bonifica[idx])
END IF
END FOR
FINISH REPORT imp_fact
LET impresion = "S"
END IF
IF fact_gral.cond_pago = 1 THEN
PROMPT "Desea Imprimir Volante de Pago Ahora? (S/N) " FOR CHAR opt3
{ IF opt3 = "S" or opt3 = "s" THEN
CALL captura_pago()
END IF}
END IF
LET numero_msg = 1
CALL msg(numero_msg)
GOTO exito
ELSE
# Borra la factura de la tabla de descuentos para cuando el usuario
# haga alguna modificacion se le actualice en el proceso destinado para los
# descuentos
LET primera = null
DELETE FROM vetb00026 WHERE factura = fact_gral.factura
GOTO vuelve
END IF
FOR idx = 1 to 4
LET fact_det[idx].cod_n = null
LET fact_det[idx].cod_grupo = null
LET fact_det[idx].cod_tipo = null
LET fact_det[idx].cod_sec = null
LET fact_det[idx].cantidad = null
LET fact_det[idx].despacho = null
LET fact_det[idx].existencia = null
LET fact_det[idx].unidades = null
LET fact_det[idx].precio = null
LET fact_det[idx].monto_fact = null
DISPLAY fact_det[idx].cod_n to s_fact[idx].cod_n
DISPLAY fact_det[idx].cod_grupo to s_fact[idx].cod_grupo
DISPLAY fact_det[idx].cod_tipo to s_fact[idx].cod_tipo
DISPLAY fact_det[idx].cod_sec to s_fact[idx].cod_sec
DISPLAY fact_det[idx].cantidad to s_fact[idx].cantidad
DISPLAY fact_det[idx].despacho to s_fact[idx].despacho
DISPLAY fact_det[idx].existencia to s_fact[idx].existencia
DISPLAY fact_det[idx].unidades to s_fact[idx].unidades
DISPLAY fact_det[idx].precio to s_fact[idx].precio
DISPLAY fact_det[idx].monto_fact to s_fact[idx].monto_fact
END FOR
END FUNCTION
FUNCTION anular1()
OPEN WINDOW anula AT 7,5 WITH FORM "vefmwd006" ATTRIBUTE (BORDER,
COMMENT LINE LAST - 1,PROMPT LINE LAST - 2,FORM LINE FIRST + 1)
LABEL vuelve:
INPUT BY NAME p_fact_no
AFTER FIELD p_fact_no
SELECT month(fecha_factura) INTO mes_chequeo FROM vetb88888
where factura = p_fact_no and
status_t is null
IF status = notfound THEN
LET numero_msg = 102
CALL msg(numero_msg)
GOTO vuelve
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT INPUT
END IF
EXIT INPUT
END INPUT
# Este Int_flag es porque tuve que salir del input con el int_flag verdadero
# y asi poder salir del window sin problemas
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
GOTO salir
END IF
LABEL atras:
PROMPT "Esta seguro de Anular Esta Factura? (S/N)" FOR CHAR opt3
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
GOTO salir
END IF
IF opt3 != "S" and opt3 != "s" and opt3 != "N" and opt3 != "n" THEN
LET numero_msg = -1301
CALL msg(numero_msg)
GOTO atras
END IF
IF opt3 = "N" or opt3 = "n" THEN
GOTO salir
END IF
IF opt3 = "S" or opt3 = "s" THEN
UPDATE vetb88888 set status_t = "E",
us_mod = user,
fech_mod = current
WHERE factura = p_fact_no
UPDATE vetb99999 set status_t = "E",
us_mod = user,
fech_mod = current
WHERE factura = p_fact_no
LET numero_msg = 82
CALL msg(numero_msg)
END IF
LABEL salir:
CLOSE FORM vefmwd006
CLOSE WINDOW anula
END FUNCTION