2395 lines
80 KiB
Plaintext
2395 lines
80 KiB
Plaintext
{
|
|
--------------------------------------------------------------------------
|
|
PROGRAMA : VEPRMT001
|
|
OBJETIVO : Este programa captura la factura comercial
|
|
REALIZADO POR : Ing. Juan Fco. Soto.
|
|
FECHA : Enero 12,1993.
|
|
--------------------------------------------------------------------------
|
|
}
|
|
GLOBALS
|
|
"veprgb000.4gl"
|
|
|
|
DEFINE p_codigo,mes_chequeo SMALLINT
|
|
DEFINE porce,cant_prod,cant_vend DECIMAL (8,2)
|
|
DEFINE codigo_provincia INTEGER
|
|
DEFINE fecha_final DATE,
|
|
cod_b1 CHAR(13),
|
|
lleva_parcial,ch_itbi,cod_b2 CHAR(1),
|
|
cod_b4 CHAR(15),
|
|
cuenta_arr INTEGER,
|
|
observacion CHAR(180) ,
|
|
obs1,obs2,obs3 CHAR(50),obs4 CHAR(30)
|
|
DEFINE prtb09 RECORD LIKE prtb00009.* #-> Monitoreo de la orden de produccion
|
|
DEFINE f_cctb01 RECORD LIKE cctb00001.*,
|
|
f_avance,f_total_avance,f_valor_av DEC(10,2),
|
|
f_num_avance INTEGER
|
|
|
|
FUNCTION veprmt001()
|
|
|
|
DEFINE valor,valor1,t_valor,valor_p,balance DECIMAL(12,2)
|
|
DEFINE tipo_fact,p_cod,p_bonif,cantidad_total,ano_act,ano_fe,credito,t_bonif,
|
|
factor INTEGER,
|
|
cod_fact SMALLINT,
|
|
ch_balance CHAR(14)
|
|
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 vefmmt001 FROM "vefmmt001"
|
|
DISPLAY FORM vefmmt001
|
|
DISPLAY "veprmt001" AT 1,1 ATTRIBUTE (blue)
|
|
LET hoy = today
|
|
|
|
DISPLAY hoy using "dd/mm/yyyy" AT 1,68 ATTRIBUTE (blue)
|
|
DISPLAY "Factura de Ventas" AT 3,30 ATTRIBUTE (blue)
|
|
DISPLAY "<Esc> Adiciona " AT 3,1 ATTRIBUTE (BOLD)
|
|
DISPLAY "<Delete> Cancela Operacion" AT 3,54 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
|
|
|
|
FOR idx = 1 to 10
|
|
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].descrip_esp = NULL
|
|
LET fact_det[idx].unidad_med = NULL
|
|
LET fact_det[idx].cantidad = 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].descrip_esp to s_fact[idx].descrip_esp
|
|
DISPLAY fact_det[idx].unidad_med to s_fact[idx].unidad_med
|
|
DISPLAY fact_det[idx].cantidad to s_fact[idx].cantidad
|
|
DISPLAY fact_det[idx].precio to s_fact[idx].precio
|
|
DISPLAY fact_det[idx].monto_fact to s_fact[idx].monto_fact
|
|
END FOR
|
|
|
|
LABEL vuelve:
|
|
LET descrip1 = NULL
|
|
LET descrip2 = NULL
|
|
LET descrip3 = 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
|
|
LET hice = "S"
|
|
LET h = 1
|
|
|
|
LABEL otravez:
|
|
INITIALIZE detalle TO NULL
|
|
PROMPT "Esta Factura Tiene ITBI? " FOR ch_itbi
|
|
LET ch_itbi = UPSHIFT(ch_itbi)
|
|
IF ch_itbi != "S" AND
|
|
ch_itbi != "N" THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
INITIALIZE fact_gral.* TO NULL
|
|
GOTO otravez
|
|
END IF
|
|
IF ch_itbi = "N" THEN
|
|
LET fact_gral.porc_itbi = 0
|
|
LET fact_gral.itbi = 0
|
|
END IF
|
|
|
|
LABEL regresa:
|
|
INPUT BY NAME fact_gral.* WITHOUT DEFAULTS ATTRIBUTE (blue)
|
|
|
|
ON KEY (CONTROL-B)
|
|
LET mes_chequeo = MONTH(TODAY)
|
|
|
|
CALL anular()
|
|
NEXT FIELD cod_cia
|
|
|
|
ON KEY (CONTROL-E)
|
|
CASE
|
|
WHEN INFIELD(tipo_cliente)
|
|
CALL veprmt101()
|
|
LET fact_gral.tipo_cliente = cliente_bas.tipo_cliente
|
|
LET fact_gral.sec_cliente = cliente_bas.sec_cliente
|
|
LET fact_gral.nombre = cliente_bas.nombre CLIPPED
|
|
LET credito = cliente_bas.limite_credito
|
|
LET codigo_provincia = cliente_bas.cod_provincia
|
|
DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
fact_gral.nombre
|
|
WHEN INFIELD(sec_cliente)
|
|
CALL veprmt101()
|
|
LET fact_gral.tipo_cliente = cliente_bas.tipo_cliente
|
|
LET fact_gral.sec_cliente = cliente_bas.sec_cliente
|
|
LET fact_gral.nombre = cliente_bas.nombre CLIPPED
|
|
LET credito = cliente_bas.limite_credito
|
|
LET codigo_provincia = cliente_bas.cod_provincia
|
|
DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
fact_gral.nombre
|
|
END CASE
|
|
|
|
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 fact_gral.cod_tarifa,descrip6 ATTRIBUTE (BOLD)
|
|
NEXT FIELD cod_tarifa
|
|
|
|
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(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(blue)
|
|
DISPLAY BY NAME fact_gral.descrip ATTRIBUTE(blue)
|
|
NEXT FIELD orden
|
|
|
|
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 sec_vend
|
|
END IF
|
|
|
|
LET fact_gral.sec_vend = transportista.sec_transp
|
|
LET fact_gral.nombre_vend = descrip6
|
|
|
|
DISPLAY BY NAME fact_gral.sec_vend ATTRIBUTE (blue)
|
|
DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (blue)
|
|
|
|
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 (blue)
|
|
DISPLAY BY NAME fact_gral.sec_transp ATTRIBUTE (blue)
|
|
DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (blue)
|
|
|
|
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 (blue)
|
|
DISPLAY BY NAME fact_gral.sec_transp ATTRIBUTE (blue)
|
|
DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (blue)
|
|
|
|
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 = p_companias.nombre CLIPPED
|
|
END IF
|
|
|
|
DISPLAY BY NAME compania ATTRIBUTE (blue)
|
|
|
|
AFTER FIELD ventas
|
|
IF fact_gral.ventas IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
IF fact_gral.ventas = "1" THEN
|
|
LET p_codigo = 30
|
|
LET tipo_f = "FT"
|
|
LET tipo_fact = 30
|
|
ELSE
|
|
LET tipo_fact = 31
|
|
LET p_codigo = 31
|
|
LET tipo_f = "FE"
|
|
SELECT prima
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00019 WHERE disponible = "S"
|
|
|
|
LET fact_gral.nombre_tipo = "EXPORTACION"
|
|
END IF
|
|
IF ch_itbi = "S" THEN
|
|
SELECT prima,@itbi,porciento
|
|
INTO fact_gral.prima_us,fact_gral.porc_itbi,porce
|
|
FROM vetb00019 WHERE disponible = "S"
|
|
|
|
IF fact_gral.ventas = "1" THEN
|
|
IF fact_gral.porc_itbi IS NULL THEN
|
|
LET fact_gral.porc_itbi = 0
|
|
END IF
|
|
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 fact_gral.prima_us = 1
|
|
END IF
|
|
|
|
LET fact_gral.nombre_tipo = "EXPORTACION"
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.porc_desc,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 porc_desc
|
|
IF fact_gral.porc_desc < 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
|
|
AFTER FIELD zona
|
|
IF fact_gral.zona IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
|
|
LET longitud = LENGTH(fact_gral.zona CLIPPED)
|
|
IF longitud < 3 THEN
|
|
LET numero_msg = 77
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
|
|
LET tipo1 = fact_gral.zona
|
|
IF fact_gral.ventas = "1" THEN
|
|
SELECT unique descrip INTO descrip1 FROM vetb00008
|
|
WHERE cod_zona = tipo1
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
END IF
|
|
IF fact_gral.ventas = "2" THEN
|
|
LET tipo2 = NULL
|
|
LET tipo2 = fact_gral.zona
|
|
SELECT unique nom_pais INTO descrip1 FROM cotb00018
|
|
WHERE cod_pais = tipo1
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
END IF
|
|
|
|
LET fact_gral.factura = 0
|
|
SELECT ult_factura INTO fact_gral.factura FROM vetb00001
|
|
|
|
IF fact_gral.factura IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
LET fact_gral.factura = fact_gral.factura + 1
|
|
SELECT UNIQUE a.factura FROM vetb00002 a
|
|
WHERE a.factura = fact_gral.factura
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 382
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_cia
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.factura ATTRIBUTE (blue)
|
|
DISPLAY BY NAME descrip1 ATTRIBUTE(blue)
|
|
|
|
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
|
|
IF fact_gral.fecha_factura IS NULL THEN
|
|
LET fact_gral.fecha_factura = TODAY
|
|
DISPLAY BY NAME fact_gral.fecha_factura
|
|
END IF
|
|
|
|
LET p_fechas = fact_gral.fecha_factura
|
|
LET hoy = fact_gral.fecha_factura
|
|
|
|
CALL prd()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha_factura
|
|
END IF
|
|
|
|
IF fact_gral.fecha_factura < "310394" THEN
|
|
LET numero_msg = 58
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
|
|
SELECT a.nombre,a.limite_credito,a.cod_provincia,a.telefono
|
|
INTO fact_gral.nombre,credito,codigo_provincia,
|
|
cliente_bas.telefono
|
|
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 = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.nombre ATTRIBUTE (blue)
|
|
|
|
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
|
|
|
|
IF fact_gral.tipo_cliente = 12 THEN
|
|
SELECT d.nombre_provincia INTO fact_gral.ciudad
|
|
FROM vetb00020 d
|
|
WHERE d.cod_provincia = codigo_provincia
|
|
|
|
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 (blue)
|
|
DISPLAY BY NAME fact_gral.ciudad ATTRIBUTE (blue)
|
|
|
|
SELECT SUM(@valor+@monto_desc) INTO valor FROM cctb00001
|
|
WHERE @fecha_orig <= fact_gral.fecha_factura AND
|
|
@tipo_cliente = fact_gral.tipo_cliente AND
|
|
@sec_cliente = fact_gral.sec_cliente AND
|
|
@status_t IS NULL AND tipo_doc NOT in ("DE","PC")
|
|
|
|
IF valor IS NULL THEN
|
|
LET valor = 0.00
|
|
END IF
|
|
|
|
SELECT SUM(@valor+@monto_desc) INTO valor1 FROM cctb00001
|
|
WHERE @fecha_orig <= fact_gral.fecha_factura AND
|
|
@tipo_cliente = fact_gral.tipo_cliente AND
|
|
@sec_cliente = fact_gral.sec_cliente AND
|
|
@status_t IS NULL AND tipo_doc = "DE" AND num_doc = aplica_a
|
|
|
|
IF valor1 IS NULL THEN
|
|
LET valor1 = 0.00
|
|
END IF
|
|
LET balance = valor - valor1
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
LET ch_balance = balance using "###,###,###.##"
|
|
DISPLAY BY NAME ch_balance ATTRIBUTE(BOLD)
|
|
END IF
|
|
BEFORE FIELD nombre
|
|
IF fact_gral.sec_cliente != 51 THEN
|
|
NEXT FIELD porc_desc
|
|
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 a.* INTO condicion.* FROM vetb00012 a
|
|
WHERE a.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 condicion.descrip ATTRIBUTE (blue)
|
|
|
|
BEFORE FIELD porc_itbi
|
|
IF fact_gral.ventas = "2" THEN
|
|
NEXT FIELD sec_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
|
|
IF fact_gral.cond_pago != 1 OR fact_gral.sec_vend !=8888 THEN
|
|
SELECT nom1_emp, apell1_emp INTO descrip5,descrip6
|
|
FROM adtb00003 WHERE num_emp = fact_gral.sec_vend
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_vend
|
|
END IF
|
|
|
|
LET fact_gral.nombre_vend = descrip5 clipped," ",descrip6 clipped
|
|
DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (blue)
|
|
|
|
# Verifica que el vendedor venda al cliente de la factura
|
|
|
|
IF fact_gral.sec_vend != 8888 THEN
|
|
SELECT unique * FROM vetb00028
|
|
WHERE sec_vend = fact_gral.sec_vend AND
|
|
tipo_cliente = fact_gral.tipo_cliente AND
|
|
sec_cliente = fact_gral.sec_cliente
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 119
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_vend
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
BEFORE FIELD cod_transp
|
|
LET fact_gral.nombre_tran = NULL
|
|
LET p_cedula = NULL
|
|
LET p_serie = NULL
|
|
|
|
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
|
|
ELSE
|
|
|
|
LET fact_gral.nombre_tran = NULL
|
|
LET p_cedula = NULL
|
|
LET p_serie = NULL
|
|
SELECT a.nombre,a.cedula,a.serie
|
|
INTO fact_gral.nombre_tran,p_cedula,p_serie FROM vetb00015 a
|
|
WHERE a.cod_transp = fact_gral.cod_transp AND
|
|
a.sec_transp = fact_gral.sec_transp 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 cod_transp
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (blue)
|
|
END IF
|
|
|
|
AFTER FIELD cod_tarifa
|
|
IF fact_gral.cod_tarifa IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD cod_tarifa
|
|
ELSE
|
|
LET descrip6 = NULL
|
|
SELECT descrip INTO descrip6 FROM vetb00023
|
|
WHERE cod_tarifa = fact_gral.cod_tarifa AND status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
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)
|
|
END IF
|
|
|
|
BEFORE FIELD fecha_factura
|
|
LET fact_gral.fecha_factura = hoy
|
|
DISPLAY BY NAME fact_gral.fecha_factura
|
|
|
|
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 orden
|
|
IF fact_gral.orden IS NOT NULL THEN
|
|
SELECT UNIQUE a.fecha_oc INTO fact_gral.fecha_orden FROM prtb00012 a
|
|
WHERE a.num_oc = fact_gral.orden AND
|
|
a.tipo_cliente = fact_gral.tipo_cliente AND
|
|
a.sec_cliente = fact_gral.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD orden
|
|
END IF
|
|
ELSE
|
|
NEXT FIELD orden
|
|
END IF
|
|
DISPLAY BY NAME fact_gral.fecha_orden
|
|
|
|
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
|
|
DELETE FROM vetb00042 WHERE factura = fact_gral.factura AND
|
|
cod_mov = p_codigo
|
|
RETURN
|
|
END IF
|
|
IF fact_gral.fecha_factura IS NULL THEN
|
|
LET fact_gral.fecha_factura = TODAY
|
|
DISPLAY BY NAME fact_gral.fecha_factura
|
|
END IF
|
|
|
|
LET p_fechas = fact_gral.fecha_factura
|
|
LET hoy = fact_gral.fecha_factura
|
|
|
|
CALL prd()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha_factura
|
|
END IF
|
|
IF fact_gral.ventas IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
|
|
IF ch_itbi = "S" THEN
|
|
SELECT prima,@itbi,porciento
|
|
INTO fact_gral.prima_us,fact_gral.porc_itbi,porce
|
|
FROM vetb00019 WHERE disponible = "S"
|
|
|
|
IF fact_gral.ventas = "1" THEN
|
|
IF fact_gral.porc_itbi IS NULL THEN
|
|
LET fact_gral.porc_itbi = 0
|
|
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 fact_gral.prima_us = 1
|
|
END IF
|
|
LET fact_gral.nombre_tipo = "EXPORTACION"
|
|
LET tipo_fact = 31
|
|
LET tipo_f = "FE"
|
|
END IF
|
|
END IF
|
|
|
|
LET fact_gral.factura = 0
|
|
SELECT ult_factura INTO fact_gral.factura FROM vetb00001
|
|
|
|
IF fact_gral.factura IS NULL THEN
|
|
LET fact_gral.factura = 0
|
|
END IF
|
|
LET fact_gral.factura = fact_gral.factura + 1
|
|
SELECT UNIQUE a.factura FROM vetb00002 a
|
|
WHERE a.factura = fact_gral.factura
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 382
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_cia
|
|
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)
|
|
|
|
IF fact_gral.sec_cliente IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
CALL detalles()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
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:
|
|
DECLARE buscame CURSOR FOR
|
|
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec FROM prtb00013 a
|
|
WHERE a.num_oc = fact_gral.orden
|
|
LET idx = 1
|
|
FOREACH buscame INTO fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL set_count(idx-1)
|
|
INPUT ARRAY fact_det WITHOUT DEFAULTS FROM s_fact.*
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
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,a.unidad_med,SUM(b.cantidad_2)
|
|
INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med,
|
|
p_existencia
|
|
FROM iptb00002 a,OUTER 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 GROUP BY 1,2
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
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].descrip_esp TO s_fact[scr_l].descrip_esp
|
|
DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med
|
|
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
|
|
|
|
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,a.unidad_med,SUM(b.cantidad_2)
|
|
INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med,
|
|
p_existencia
|
|
FROM iptb00002 a, OUTER 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 GROUP BY 1,2
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
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].descrip_esp TO s_fact[scr_l].descrip_esp
|
|
DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med
|
|
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
|
|
|
|
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,a.unidad_med,SUM(b.cantidad_2)
|
|
INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med,
|
|
p_existencia
|
|
FROM iptb00002 a, OUTER 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 GROUP BY 1,2
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
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].descrip_esp TO s_fact[scr_l].descrip_esp
|
|
DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med
|
|
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
|
|
|
|
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,a.unidad_med,SUM(b.cantidad_2)
|
|
INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med,
|
|
p_existencia
|
|
FROM iptb00002 a, OUTER 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 GROUP BY 1,2
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
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].descrip_esp TO s_fact[scr_l].descrip_esp
|
|
DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med
|
|
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
|
|
|
|
END CASE
|
|
|
|
AFTER FIELD cod_n
|
|
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
|
|
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
|
|
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
|
|
|
|
# Busca la descripcion del producto con su existencia
|
|
|
|
LET p_existencia = 0
|
|
SELECT a.descrip_esp,a.unidad_med,SUM(b.cantidad_2)
|
|
INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med,
|
|
p_existencia
|
|
FROM iptb00002 a,OUTER 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 GROUP BY 1,2
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
# BUSCA LA MARCA DEL PRODUCTO
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
LET verdad = NULL
|
|
CALL precios()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
DISPLAY fact_det[curr].descrip_esp,fact_det[curr].unidad_med,
|
|
fact_det[curr].precio
|
|
TO s_fact[scr_l].descrip_esp,s_fact[scr_l].unidad_med,
|
|
s_fact[scr_l].precio
|
|
|
|
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 p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
|
|
IF fact_det[curr].cod_n != 5 THEN
|
|
IF fact_det[curr].cantidad > p_existencia THEN
|
|
LET numero_msg = 30
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
END IF
|
|
|
|
#-> Busca la cantidad ordenada a produccion vg Tuesday, 16 January, 2001
|
|
SELECT MAX(a.cantidad) INTO cant_prod FROM prtb00013 a
|
|
WHERE a.num_oc = fact_gral.orden
|
|
AND a.cod_n = fact_det[curr].cod_n
|
|
AND a.cod_tipo = fact_det[curr].cod_tipo
|
|
AND a.cod_grupo = fact_det[curr].cod_grupo
|
|
AND a.cod_sec = fact_det[curr].cod_sec
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET cant_prod = 0
|
|
END IF
|
|
|
|
#-> Busca la cantidad despachada de la orden vg Tuesday, 16 January, 2001
|
|
CALL cantidad_desp(fact_gral.orden,fact_det[curr].cod_n,
|
|
fact_det[curr].cod_tipo,fact_det[curr].cod_grupo,
|
|
fact_det[curr].cod_sec)
|
|
|
|
LET cant_vend = cant_vend + fact_det[curr].cantidad
|
|
|
|
IF cant_vend > cant_prod THEN
|
|
LET numero_msg = 1661
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
|
|
IF fact_det[curr].precio IS NULL THEN
|
|
LET fact_det[curr].precio = 0
|
|
END IF
|
|
|
|
LET fact_det[curr].monto_fact = fact_det[curr].cantidad *
|
|
fact_det[curr].precio
|
|
|
|
DISPLAY fact_det[curr].monto_fact to s_fact[scr_l].monto_fact
|
|
|
|
# Calculo del sub-total de la factura
|
|
|
|
LET fact_gral.itbi = 0
|
|
LET fact_gral.sub_total = 0
|
|
LET fact_gral.total_fact = 0
|
|
LET fact_gral.desc_valor = 0
|
|
|
|
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
|
|
|
|
LET fact_gral.sub_total = fact_gral.sub_total +
|
|
fact_det[idx].monto_fact
|
|
END IF
|
|
END FOR
|
|
|
|
# Calculo descuento de la factura
|
|
|
|
IF fact_gral.porc_desc > 0 THEN
|
|
LET fact_gral.desc_valor=fact_gral.sub_total *
|
|
(fact_gral.porc_desc / 100)
|
|
END IF
|
|
|
|
IF fact_gral.desc_valor IS NULL THEN
|
|
LET fact_gral.desc_valor = 0
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.sub_total,fact_gral.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.itbi=((fact_gral.sub_total - fact_gral.desc_valor)*
|
|
(fact_gral.porc_itbi/100))
|
|
ELSE
|
|
LET fact_gral.itbi=0
|
|
END IF
|
|
LET itbi = fact_gral.itbi using "###,###,###.##"
|
|
DISPLAY BY NAME fact_gral.itbi ATTRIBUTE (BOLD)
|
|
|
|
# Calculo total de la factura
|
|
|
|
LET fact_gral.total_fact= (fact_gral.sub_total-fact_gral.desc_valor)
|
|
+ fact_gral.itbi
|
|
DISPLAY BY NAME fact_gral.total_fact ATTRIBUTE (BOLD)
|
|
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
DELETE FROM vetb00042 WHERE factura = fact_gral.factura AND
|
|
cod_mov = p_codigo
|
|
RETURN
|
|
END IF
|
|
|
|
LET fact_gral.itbi = 0
|
|
LET fact_gral.sub_total = 0
|
|
LET fact_gral.total_fact = 0
|
|
LET fact_gral.desc_valor = 0
|
|
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
|
|
|
|
LET fact_gral.sub_total = fact_gral.sub_total +
|
|
fact_det[idx].monto_fact
|
|
END IF
|
|
END FOR
|
|
|
|
# Calculo descuento de la factura
|
|
|
|
IF fact_gral.porc_desc > 0 THEN
|
|
LET fact_gral.desc_valor = fact_gral.sub_total *
|
|
(fact_gral.porc_desc / 100)
|
|
END IF
|
|
|
|
IF fact_gral.desc_valor IS NULL THEN
|
|
LET fact_gral.desc_valor = 0
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.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.itbi=((fact_gral.sub_total - fact_gral.desc_valor)*
|
|
(fact_gral.porc_itbi/100))
|
|
ELSE
|
|
LET fact_gral.itbi=0
|
|
END IF
|
|
LET itbi = fact_gral.itbi using "###,###,###.##"
|
|
DISPLAY BY NAME fact_gral.itbi ATTRIBUTE (BOLD)
|
|
|
|
# Calculo total de la factura
|
|
|
|
LET fact_gral.total_fact=fact_gral.sub_total-fact_gral.desc_valor +
|
|
fact_gral.itbi
|
|
DISPLAY BY NAME fact_gral.total_fact ATTRIBUTE (BOLD)
|
|
|
|
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LABEL anterior:
|
|
PROMPT "Las Informaciones Estan Correctas (S/N)" FOR CHAR opt
|
|
LET cuenta_arr = arr_count()
|
|
LET opt = UPSHIFT(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 != "N") THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
GOTO anterior
|
|
END IF
|
|
|
|
|
|
IF opt = "S" THEN
|
|
LABEL aqui:
|
|
LET verdad = "S"
|
|
|
|
IF (opt4 != "S" AND opt4 != "s") THEN
|
|
IF (opt4 != "n" AND opt4 != "N") THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
GOTO aqui
|
|
END IF
|
|
END IF
|
|
|
|
# Pregunta sobre si la factura va ser impresa ahora o luego
|
|
|
|
LABEL anterior2:
|
|
PROMPT "Desea Imprimir Esta Factura Ahora (S/N)" FOR CHAR opt1
|
|
LET opt1 = upshift(opt1)
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
IF opt1 IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
GOTO anterior2
|
|
END IF
|
|
|
|
IF (opt1 != "S" AND opt1 != "s") THEN
|
|
IF opt1 != "N" AND opt1 != "n" THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
GOTO anterior2
|
|
END IF
|
|
END IF
|
|
|
|
LET impresion = opt1
|
|
|
|
IF fact_gral.ventas = "1" THEN
|
|
LET fact_gral.prima_us = 1
|
|
END IF
|
|
LET lleva_parcial = "N"
|
|
|
|
LABEL brinca:
|
|
# Actualiza la tabla de datos generales de la factura
|
|
IF fact_gral.factura IS NOT NULL THEN
|
|
INSERT INTO vetb22222 VALUES (fact_gral.factura)
|
|
|
|
INSERT INTO vetb00002 (cod_cia,factura,fecha_factura,ventas,zona,orden,
|
|
fecha_orden,conduce,fecha_conduce,tipo_cliente,
|
|
sec_cliente,cod_vend,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,NULL,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)
|
|
|
|
# INSERTA EL DETALLE DE LA FACTURA
|
|
INSERT INTO vetb00048
|
|
VALUES (fact_gral.factura,observacion,null,user,current,
|
|
null,null)
|
|
|
|
# Actualiza la tabla control de la numeracion de la factura
|
|
|
|
UPDATE vetb00001 SET ult_factura = fact_gral.factura,
|
|
us_crea = USER,
|
|
fech_crea = CURRENT
|
|
END IF
|
|
|
|
# Actualizacion de la tabla de cuentas por cobrar
|
|
|
|
IF fact_gral.cond_pago > 1 THEN
|
|
|
|
LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias
|
|
|
|
INSERT INTO cctb00001
|
|
VALUES (NULL,fact_gral.cod_cia,tipo_f,fact_gral.factura,
|
|
fact_gral.tipo_cliente,fact_gral.sec_cliente,NULL,
|
|
fact_gral.sec_vend,fact_gral.fecha_factura,p_fecha_ven,
|
|
fact_gral.factura, NULL,NULL,fact_gral.total_fact,NULL,NULL,
|
|
t_costos,0, NULL, USER,CURRENT, NULL, NULL)
|
|
|
|
#-> Actualiza los avances de las ordenes, aplicandolos a la facturas. Victor Gomez S�bado 24 de Marzo de 200102:37:58 p.m.
|
|
SELECT MIN(a.num_doc)INTO f_num_avance FROM cctb00001 a
|
|
WHERE a.tipo_doc = "AV" AND a.fecha_orig > "31122000"
|
|
AND a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
AND a.num_cheque = fact_gral.orden
|
|
AND a.status_t IS NULL
|
|
|
|
IF f_num_avance IS NOT NULL THEN
|
|
#-> VAlidar que la orden no haya sido aplicada en su totalidad Vg
|
|
SELECT SUM(b.valor) INTO f_avance FROM cctb00001 b
|
|
WHERE b.tipo_doc = "AV" AND b.fecha_orig > "31122000"
|
|
AND b.num_doc = f_num_avance
|
|
AND b.status_t IS NULL
|
|
|
|
IF fact_gral.total_fact < f_avance THEN
|
|
LET f_valor_av = fact_gral.total_fact
|
|
ELSE
|
|
LET f_valor_av = (fact_gral.total_fact - f_avance)
|
|
END IF
|
|
|
|
IF f_valor_av > 0 THEN
|
|
LET f_valor_av = f_valor_av * -1
|
|
LET tipo_f = "AV"
|
|
INSERT INTO cctb00001 VALUES (NULL,fact_gral.cod_cia,tipo_f,f_num_avance,
|
|
fact_gral.tipo_cliente,fact_gral.sec_cliente,NULL,
|
|
fact_gral.sec_vend,fact_gral.fecha_factura,p_fecha_ven,
|
|
fact_gral.factura, NULL,NULL,f_valor_av,NULL,NULL,
|
|
t_costos,0, NULL, USER,CURRENT, NULL, NULL)
|
|
|
|
END IF
|
|
|
|
END IF
|
|
END IF
|
|
#-> Actulizacion de la tabla de monitoreo de la orden de produccion vg Wednesday, 17 January, 2001 09:33:21 AM
|
|
LET prtb09.num_oc = fact_gral.orden
|
|
LET prtb09.fecha = fact_gral.fecha_factura
|
|
|
|
IF cant_vend = cant_prod THEN
|
|
#-> Actualiza la fecha de cierre de la orden de corte vg Wednesday, 17 January, 200112:42:33 PM
|
|
UPDATE prtb00012 SET fecha_cierre = fact_gral.fecha_factura
|
|
WHERE @num_oc = fact_gral.orden
|
|
AND @tipo_cliente = fact_gral.tipo_cliente
|
|
AND @sec_cliente = fact_gral.sec_cliente
|
|
|
|
LET prtb09.pendiente = "N"
|
|
LET prtb09.detalle = "CIERRE DE ORDEN DE PRODUCCION SEGUN FACT. # ",fact_gral.factura USING "<<<<<<<",
|
|
" DE FECHA : ",fact_gral.fecha_factura USING "dd/mm/yyyy"
|
|
ELSE
|
|
LET prtb09.pendiente = "S"
|
|
LET prtb09.detalle = "DESPACHO DE MERCANCIA SEGUN FACT. # ",fact_gral.factura USING "<<<<<<<",
|
|
" DE FECHA : ",fact_gral.fecha_factura USING "dd/mm/yyyy"
|
|
END IF
|
|
|
|
INSERT INTO prtb00009 VALUES (prtb09.num_oc,prtb09.fecha,prtb09.pendiente,
|
|
prtb09.detalle,NULL,USER,CURRENT,NULL,NULL)
|
|
#----------------------------------------------------------------------------------------------------
|
|
|
|
FOR idx = 1 TO cuenta_arr
|
|
|
|
IF fact_det[idx].cod_n IS NOT NULL AND
|
|
fact_det[idx].cantidad > 0 THEN
|
|
INSERT INTO vetb00003
|
|
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].cantidad,0,0,
|
|
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 fact_det[idx].cantidad = fact_det[idx].cantidad * -1
|
|
|
|
IF fact_det[idx].cod_n != 5 THEN
|
|
INSERT INTO iptb00006 (cod_cia,num_doc,fact_no,fecha,cod_transp,sec_transp,
|
|
cod_sp,cod_sp_sec,placa,cod_tarifa,cod_mov,cod_n,
|
|
cod_grupo,cod_tipo,cod_sec,cantidad_2,
|
|
bodega,us_crea,fech_crea)
|
|
VALUES (fact_gral.cod_cia,fact_gral.factura,fact_gral.factura,
|
|
fact_gral.fecha_factura,fact_gral.cod_transp,fact_gral.sec_transp,
|
|
fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.placa_transp,
|
|
fact_gral.cod_tarifa,tipo_fact,fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,fact_det[idx].cantidad,1,USER,CURRENT)
|
|
END IF
|
|
LET fact_det[idx].cantidad = fact_det[idx].cantidad * -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
|
|
END IF
|
|
END FOR
|
|
ELSE
|
|
GOTO regresa
|
|
END IF
|
|
# Impresion de la factura
|
|
|
|
IF opt1 = "S" or opt1 = "s" THEN
|
|
|
|
#-> Valida si la factura realmente existe vg S�bado 24 de Marzo de 2001
|
|
SELECT * FROM vetb00002
|
|
WHERE @factura = fact_gral.factura
|
|
IF STATUS = NOTFOUND THEN
|
|
GOTO regresa
|
|
END IF
|
|
|
|
START REPORT imp_fact TO "C:\\factura"
|
|
|
|
FOR idx = 1 TO cuenta_arr
|
|
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 AND
|
|
fact_det[idx].cantidad IS NOT NULL AND
|
|
fact_det[idx].cantidad > 0 THEN
|
|
LET cod_fact = 1
|
|
OUTPUT TO REPORT imp_fact(fact_gral.*,fact_det[idx].*,tot_porc,
|
|
p_bonifica[idx],cod_fact)
|
|
END IF
|
|
END FOR
|
|
|
|
DISPLAY nombre_m CLIPPED AT 1,1
|
|
FINISH REPORT imp_fact
|
|
RUN "TYPE C:\\factura > LPT1"
|
|
LET impresion = "S"
|
|
END IF
|
|
|
|
IF fact_gral.cond_pago = 1 THEN
|
|
PROMPT
|
|
"Presione Cualquier Tecla Para Imprimir Volante de Pago" FOR CHAR opt3
|
|
CALL veprfu001()
|
|
END IF
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
FOR idx = 1 to arr_count()
|
|
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].descrip_esp = NULL
|
|
LET fact_det[idx].unidad_med = NULL
|
|
LET fact_det[idx].cantidad = NULL
|
|
LET fact_det[idx].precio = NULL
|
|
LET fact_det[idx].monto_fact = NULL
|
|
END FOR
|
|
|
|
LET fact_gral.itbi = 0
|
|
LET fact_gral.sub_total = 0
|
|
LET fact_gral.total_fact = 0
|
|
LET fact_gral.desc_valor = 0
|
|
GOTO otravez
|
|
END FUNCTION
|
|
|
|
FUNCTION repite_codigo()
|
|
|
|
LET verdad = NULL
|
|
LET ant_art.cod_n = fact_det[curr].cod_n
|
|
LET ant_art.cod_grupo = fact_det[curr].cod_grupo
|
|
LET ant_art.cod_tipo = fact_det[curr].cod_tipo
|
|
LET ant_art.cod_sec = fact_det[curr].cod_sec
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != curr THEN
|
|
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
|
|
|
|
IF fact_det[idx].cod_n = ant_art.cod_n AND
|
|
fact_det[idx].cod_grupo = ant_art.cod_grupo AND
|
|
fact_det[idx].cod_tipo = ant_art.cod_tipo AND
|
|
fact_det[idx].cod_sec = ant_art.cod_sec THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
LET verdad = "S"
|
|
ELSE
|
|
IF verdad != "S" THEN
|
|
LET verdad = "N"
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END FUNCTION
|
|
|
|
FUNCTION tarifas()
|
|
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd014"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
|
|
|
|
LET int_flag = false
|
|
CONSTRUCT criterio ON a.descrip FROM descrip
|
|
|
|
LET selec2 = "SELECT a.cod_tarifa,a.descrip,a.tarifa_pago FROM vetb00023 a ",
|
|
"WHERE a.status_t IS NULL AND ",criterio clipped," ORDER BY 1 "
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_tarifa
|
|
END IF
|
|
|
|
PREPARE busca_tarifa FROM selec2
|
|
IF STATUS >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
|
|
DECLARE buscar_tarifa CURSOR FOR busca_tarifa
|
|
|
|
LET idx = 1
|
|
FOREACH buscar_tarifa INTO arr_tarifa[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
MESSAGE
|
|
" <Esc> Selecciona Tarifa del Transportista Donde Esta el cursor"
|
|
DISPLAY ARRAY arr_tarifa TO s_datos.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET fact_gral.cod_tarifa = arr_tarifa[curr1].cod_tarifa
|
|
LET descrip6 = arr_tarifa[curr1].descrip
|
|
|
|
LABEL salir_tarifa:
|
|
CLOSE WINDOW busqueda
|
|
END FUNCTION
|
|
|
|
FUNCTION condiciones()
|
|
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd011"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
|
|
|
|
LET int_flag = false
|
|
CONSTRUCT BY NAME criterio ON a.descrip
|
|
|
|
LET selec2 = "SELECT a.cond_pago, a.descrip",
|
|
" FROM vetb00012 a",
|
|
" WHERE ",
|
|
"a.status_t IS NULL AND ",
|
|
criterio clipped,
|
|
"ORDER BY 1 "
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_consulta_e
|
|
END IF
|
|
|
|
PREPARE busca_cond1 FROM selec2
|
|
IF STATUS >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
|
|
DECLARE buscar_cond CURSOR FOR busca_cond1
|
|
LET idx = 1
|
|
|
|
FOREACH buscar_cond INTO arr_condicion[idx].*
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
MESSAGE " <Esc> Selecciona Empleado donde esta el cursor"
|
|
DISPLAY ARRAY arr_condicion TO s_condicion.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET fact_gral.cond_pago = arr_condicion[curr1].cond_pago
|
|
LET fact_gral.descrip = arr_condicion[curr1].descrip
|
|
|
|
LABEL salir_consulta_e:
|
|
CLOSE WINDOW busqueda
|
|
END FUNCTION
|
|
|
|
FUNCTION cons_transp()
|
|
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd012"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
|
|
|
|
LET int_flag = false
|
|
CONSTRUCT criterio ON a.nombre FROM descrip6
|
|
|
|
LET selec2 = "SELECT a.cod_transp,a.sec_transp, a.nombre FROM vetb00015 a ",
|
|
"WHERE a.status_t IS NULL AND ",criterio clipped," ORDER BY 1,2"
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_consulta_e
|
|
END IF
|
|
|
|
PREPARE busca_transp1 FROM selec2
|
|
IF STATUS >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
|
|
DECLARE buscar_transp CURSOR FOR busca_transp1
|
|
LET idx = 1
|
|
|
|
FOREACH buscar_transp INTO arr_transp[idx].*
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
MESSAGE " <Esc> Selecciona Empleado donde esta el cursor"
|
|
DISPLAY ARRAY arr_transp TO s_transp.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET fact_gral.cod_transp = arr_transp[curr1].cod_transp
|
|
LET fact_gral.sec_transp = arr_transp[curr1].sec_transp
|
|
LET fact_gral.nombre_tran = arr_transp[curr1].nombre
|
|
|
|
LABEL salir_consulta_e:
|
|
CLOSE WINDOW busqueda
|
|
END FUNCTION
|
|
|
|
REPORT imp_fact(x,z,porciento,bonifica,cod_f)
|
|
|
|
DEFINE x RECORD
|
|
cod_cia LIKE vetb00002.cod_cia,
|
|
ventas LIKE vetb00002.ventas,
|
|
zona LIKE vetb00002.zona,
|
|
nombre_tipo CHAR(11),
|
|
factura LIKE vetb00002.factura,
|
|
fecha_factura LIKE vetb00002.fecha_factura,
|
|
tipo_cliente LIKE vetb00002.tipo_cliente,
|
|
sec_cliente LIKE vetb00002.sec_cliente,
|
|
nombre CHAR(30),
|
|
direccion CHAR(50),
|
|
ciudad CHAR(20),
|
|
prima_us LIKE vetb00002.prima_us,
|
|
porc_desc LIKE vetb00002.porc_desc,
|
|
nombre_desc CHAR(30),
|
|
cond_pago LIKE vetb00002.cond_pago,
|
|
descrip CHAR(30),
|
|
orden LIkE vetb00002.orden,
|
|
fecha_orden LIKE vetb00002.fecha_orden,
|
|
conduce LIKE vetb00002.conduce,
|
|
fecha_conduce LIKE vetb00002.fecha_conduce,
|
|
porc_itbi LIKE vetb00002.porc_itbi,
|
|
sec_vend LIKE vetb00002.sec_vend,
|
|
nombre_vend CHAR(30),
|
|
cod_transp LIKE iptb00006.cod_transp,
|
|
sec_transp LIKE iptb00006.sec_transp,
|
|
cod_tarifa LIKE iptb00006.cod_tarifa,
|
|
nombre_tran CHAR(30),
|
|
fecha_embarque LIKE vetb00002.fecha_embarque,
|
|
placa_transp LIKE iptb00006.placa,
|
|
sub_total DECIMAL(12,2),
|
|
desc_valor DECIMAL(12,2),
|
|
itbi DECIMAL(12,2),
|
|
total_fact DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE z RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descrip_esp CHAR(30),
|
|
unidad_med CHAR(30),
|
|
cantidad DECIMAL(12,2),
|
|
precio DECIMAL(12,3),
|
|
monto_fact DECIMAL(12,3)
|
|
END RECORD
|
|
|
|
DEFINE cantidad_p INTEGER,
|
|
i,cod_f SMALLINT
|
|
DEFINE c_cajas,bonifica INTEGER
|
|
DEFINE tot_b,tot_n,tot_m,peso_n,medida,peso_b DECIMAL(12,2),
|
|
ch_fech CHAR(20)
|
|
DEFINE porciento DECIMAL(8,3)
|
|
DEFINE valor_porc DECIMAL (12,2)
|
|
DEFINE normal,doce,negras,negras_off,doble CHAR(2)
|
|
DEFINE rnc CHAR(10)
|
|
DEFINE nombre_vend,apellido_vend CHAR(15)
|
|
DEFINE comprimido,comprimido_of CHAR(1)
|
|
DEFINE presenta LIKE iptb00010.conversion
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
PAGE LENGTH 66
|
|
LEFT MARGIN 0
|
|
|
|
ORDER BY x.factura,z.cod_n,z.cod_sec
|
|
|
|
FORMAT
|
|
|
|
BEFORE GROUP OF x.factura
|
|
LET comprimido = ASCII 15
|
|
LET comprimido_of = ASCII 18
|
|
LET negras = ASCII 27, ASCII 69
|
|
LET negras_off = ASCII 27, ASCII 70
|
|
LET doble = ASCII 14
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 27, ASCII 80
|
|
|
|
SELECT num_rnc INTO rnc FROM vetb00004
|
|
WHERE tipo_cliente = x.tipo_cliente AND sec_cliente = x.sec_cliente AND
|
|
status_t IS NULL
|
|
|
|
PRINT normal,comprimido_of
|
|
SKIP 12 LINE
|
|
|
|
IF x.ventas = "1" THEN
|
|
PRINT COLUMN 4, negras,"SENORES"
|
|
END IF
|
|
|
|
IF x.ventas = "2" THEN
|
|
PRINT COLUMN 4, "SIR"
|
|
END IF
|
|
PRINT COLUMN 4, x.nombre," COD.#",x.tipo_cliente using "&&","-",
|
|
x.sec_cliente using "&&&&"
|
|
PRINT COLUMN 4, x.direccion CLIPPED,cliente_bas.telefono
|
|
PRINT COLUMN 4, x.ciudad CLIPPED," RNC #",rnc,
|
|
COLUMN 46, doble,"FACTURA ",x.factura using "&&&&&"
|
|
|
|
SKIP 2 LINES
|
|
PRINT comprimido
|
|
|
|
IF x.cond_pago > 1 AND x.ventas = "1" THEN
|
|
LET nombre_vend = p_adtb03.nom1_emp CLIPPED
|
|
LET apellido_vend = p_adtb03.apell1_emp CLIPPED
|
|
END IF
|
|
IF x.ventas = "2" THEN
|
|
LET nombre_vend = x.descrip
|
|
LET apellido_vend = NULL
|
|
END IF
|
|
|
|
IF x.cond_pago = 1 THEN
|
|
LET nombre_vend = x.descrip
|
|
LET apellido_vend = NULL
|
|
END IF
|
|
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 3, x.orden using "<<<<<<",
|
|
COLUMN 32, x.fecha_orden using "dd/mm/yyyy",
|
|
COLUMN 60, condicion.descrip CLIPPED,
|
|
COLUMN 80, "(",x.sec_vend using "&&&",") ",x.nombre_vend CLIPPED,
|
|
COLUMN 124, x.fecha_factura using "dd/mm/yyyy"
|
|
SKIP 4 LINE
|
|
LET tot_n = 0
|
|
LET tot_b = 0
|
|
LET tot_m = 0
|
|
|
|
ON EVERY ROW
|
|
|
|
IF z.cantidad <> 0 THEN
|
|
LET p_iptb01.factor_conv = 0
|
|
LET p_iptb01.unidad = z.unidad_med
|
|
SELECT a.factor_conv,a.unidad INTO p_iptb01.factor_conv,p_iptb01.unidad
|
|
FROM iptb00001 a
|
|
WHERE a.cod_n = z.cod_n AND a.cod_grupo = z.cod_grupo AND
|
|
a.cod_tipo = z.cod_tipo AND a.cod_sec = z.cod_sec
|
|
|
|
IF p_iptb01.factor_conv IS NULL OR p_iptb01.factor_conv = 0 THEN
|
|
LET p_iptb01.factor_conv = 1
|
|
LET p_iptb01.unidad = z.unidad_med
|
|
END IF
|
|
|
|
PRINT COLUMN 3, z.cod_n USING "&","-",z.cod_grupo USING "&","-",
|
|
z.cod_tipo USING "&&","-",z.cod_sec USING "&&&",
|
|
COLUMN 12, z.cantidad USING "###,###.###"," ",
|
|
z.unidad_med CLIPPED,
|
|
COLUMN 31, z.cantidad/p_iptb01.factor_conv USING "###,###,###",
|
|
COLUMN 46, z.descrip_esp CLIPPED,
|
|
COLUMN 111, z.precio USING "###,###.###",
|
|
COLUMN 125, z.monto_fact USING "##,###,###.##"
|
|
END IF
|
|
|
|
AFTER GROUP OF x.factura
|
|
# Impresion de informaciones que pertenecen a facturas de exportacion
|
|
IF x.ventas = "2" THEN
|
|
|
|
IF x.nombre_desc IS NOT NULL THEN
|
|
PRINT COLUMN 124,"--------------"
|
|
PRINT COLUMN 78, "VALOR BRUTO ",
|
|
COLUMN 124, x.sub_total using "###,###,###.##"
|
|
|
|
END IF
|
|
|
|
IF x.desc_valor <> 0 THEN
|
|
|
|
PRINT COLUMN 77, x.porc_desc using "<<<.##"," %DISCOUNT",
|
|
COLUMN 124, x.desc_valor using "###,###,###.##"
|
|
END IF
|
|
PRINT COLUMN 124, "--------------"
|
|
PRINT COLUMN 78, "TOTAL F.O.B. PLANT, D.R.",
|
|
COLUMN 124, x.total_fact using "###,###,###.##"
|
|
PRINT COLUMN 124, "______________"
|
|
PRINT COLUMN 124, "--------------"
|
|
|
|
LET ch_fech = x.fecha_embarque using "ddd, mmm. dd, yyyy"
|
|
LET ch_fech = upshift(ch_fech)
|
|
PRINT COLUMN 47, "INLAND FREIGHT : COLLECT"
|
|
PRINT COLUMN 47, "INSURANCE : TO BE COVERED BY CUSTOMER"
|
|
PRINT COLUMN 47, "TO BE SHIPPED : ", ch_fech
|
|
END IF
|
|
|
|
# Impresion de datos que concierne solamente a tipos de facturas locales
|
|
|
|
IF x.ventas = "1" THEN
|
|
PRINT COLUMN 124, "--------------"
|
|
PRINT COLUMN 78, "VALOR BRUTO ",
|
|
COLUMN 124, x.sub_total using "###,###,###.##"
|
|
|
|
IF x.desc_valor <> 0 THEN
|
|
|
|
PRINT COLUMN 77, x.porc_desc using "<<<.##"," %DESCUENTO",
|
|
COLUMN 124, x.desc_valor using "###,###,###.##"
|
|
END IF
|
|
|
|
PRINT COLUMN 124, "--------------"
|
|
PRINT COLUMN 78, "SUB-TOTAL",
|
|
COLUMN 124, x.total_fact - x.itbi using "###,###,###.##"
|
|
IF x.porc_itbi > 0 THEN
|
|
PRINT COLUMN 78, x.porc_itbi using "###.##","%"," ITBI",
|
|
COLUMN 124, x.itbi using "###,###,###.##"
|
|
END IF
|
|
PRINT COLUMN 124, "--------------"
|
|
PRINT COLUMN 78, "VALOR NETO ",
|
|
COLUMN 124, x.total_fact using "###,###,###.##"
|
|
PRINT COLUMN 124, "=============="
|
|
|
|
END IF
|
|
|
|
PRINT comprimido_of
|
|
#SKIP 8 LINE
|
|
PAGE TRAILER
|
|
PRINT doce,comprimido_of
|
|
|
|
LET obs1=observacion[1,50]
|
|
LET obs2=observacion[51,101]
|
|
LET obs3=observacion[102,152]
|
|
LET obs4=observacion[152,180]
|
|
|
|
PRINT COLUMN 3, obs1
|
|
PRINT COLUMN 3, obs2
|
|
PRINT COLUMN 3, obs3
|
|
PRINT COLUMN 3, obs4
|
|
|
|
PRINT COLUMN 4, "NOMBRE: ",x.nombre_tran
|
|
PRINT COLUMN 4, "CEDULA: ",p_cedula using "&&&&&&&&&",
|
|
" SERIE: ",p_serie using "&&&"
|
|
|
|
PRINT COLUMN 4, "PLACA DEL VEHICULO: ",x.placa_transp
|
|
SKIP 2 LINES
|
|
PRINT COLUMN 4, "-------------------"
|
|
PRINT COLUMN 4, "FIRMA TRANSPORTISTA"
|
|
|
|
END REPORT
|
|
|
|
FUNCTION veprfu001()
|
|
DEFINE pagos RECORD
|
|
documento LIKE vetb00002.factura,
|
|
detalle CHAR(30),
|
|
factura LIKE vetb00002.factura,
|
|
cheque_no LIKE cctb00001.num_cheque,
|
|
banco LIKE cctb00001.banco,
|
|
valor_cheque DECIMAL(12,2),
|
|
valor_efectivo DECIMAL (12,2)
|
|
END RECORD
|
|
|
|
OPEN WINDOW captura AT 7,12 WITH FORM "vefmwd013"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 1,COMMENT LINE LAST)
|
|
INPUT BY NAME pagos.*
|
|
BEFORE FIELD factura
|
|
LET pagos.factura = fact_gral.factura
|
|
|
|
AFTER FIELD detalle
|
|
IF pagos.detalle IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD detalle
|
|
END IF
|
|
|
|
AFTER FIELD factura
|
|
IF pagos.factura IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD factura
|
|
ELSE
|
|
SELECT a.fecha_factura,a.tipo_cliente,a.sec_cliente,b.nombre,
|
|
a.neto,b.cod_provincia,a.sub_total,a.monto_itbi INTO
|
|
fact_gral.fecha_factura,fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,fact_gral.nombre,fact_gral.total_fact,
|
|
codigo_provincia,fact_gral.sub_total,fact_gral.itbi
|
|
FROM vetb00002 a,vetb00004 b
|
|
WHERE a.factura = pagos.factura AND a.tipo_cliente = b.tipo_cliente AND
|
|
a.sec_cliente = b.sec_cliente AND a.status_t IS NULL
|
|
|
|
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 = codigo_provincia
|
|
END IF
|
|
LET fact_gral.factura = pagos.factura
|
|
BEFORE FIELD documento
|
|
LET pagos.documento = 0
|
|
SELECT ult_recibo INTO pagos.documento FROM cctb00003 WHERE tipo_doc = "PC"
|
|
|
|
IF pagos.documento IS NULL THEN
|
|
LET pagos.documento = 0
|
|
END IF
|
|
LET pagos.documento = pagos.documento + 1
|
|
DISPLAY BY NAME pagos.documento
|
|
#NEXT FIELD detalle
|
|
|
|
AFTER FIELD banco
|
|
LET descrip1 = NULL
|
|
LET descrip2 = NULL
|
|
IF pagos.banco IS NOT NULL THEN
|
|
SELECT nombre_bc,localidad INTO descrip1,descrip2 FROM bancos
|
|
WHERE cod_banco = pagos.banco
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD banco
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY BY NAME descrip1 ATTRIBUTE (BOLD)
|
|
|
|
AFTER FIELD valor_cheque
|
|
IF pagos.valor_cheque IS NOT NULL THEN
|
|
LET pagos.valor_efectivo = fact_gral.total_fact - pagos.valor_cheque
|
|
ELSE
|
|
LET pagos.valor_efectivo = fact_gral.total_fact
|
|
END IF
|
|
|
|
DISPLAY BY NAME pagos.valor_efectivo
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
END INPUT
|
|
|
|
LET p_fecha_ven = "01/01/01"
|
|
LET fact_gral.total_fact = fact_gral.total_fact * -1
|
|
|
|
IF fact_gral.total_fact IS NULL THEN
|
|
LET fact_gral.total_fact = 0
|
|
END IF
|
|
IF fact_gral.total_fact <> 0 THEN
|
|
DELETE FROM cctb00001 WHERE num_doc = pagos.documento AND tipo_doc = "PC"
|
|
|
|
INSERT INTO cctb00001
|
|
VALUES (NULL,fact_gral.cod_cia,"PC",pagos.documento,
|
|
fact_gral.tipo_cliente,fact_gral.sec_cliente,NULL,
|
|
fact_gral.sec_vend,fact_gral.fecha_factura,p_fecha_ven,
|
|
fact_gral.factura,pagos.cheque_no,pagos.banco,
|
|
fact_gral.total_fact,pagos.valor_efectivo,pagos.valor_cheque,
|
|
0,0,NULL,USER,CURRENT,NULL, NULL)
|
|
|
|
LET fact_gral.total_fact = fact_gral.total_fact * -1
|
|
|
|
START REPORT volante TO "C:\\RECIBO"
|
|
OUTPUT TO REPORT volante(fact_gral.*,pagos.*,descrip1,descrip2)
|
|
FINISH REPORT volante
|
|
RUN "TYPE C:\\RECIBO > LPT3"
|
|
UPDATE cctb00003 SET ult_recibo = pagos.documento WHERE tipo_doc = "PC"
|
|
|
|
CLOSE WINDOW captura
|
|
END IF
|
|
END FUNCTION
|
|
|
|
REPORT volante (x,y,t,t1)
|
|
|
|
DEFINE y RECORD
|
|
documento LIKE vetb00002.factura,
|
|
detalle CHAR(30),
|
|
factura LIKE vetb00002.factura,
|
|
cheque_no LIKE cctb00001.num_cheque,
|
|
banco LIKE cctb00001.banco,
|
|
valor_cheque DECIMAL(12,2),
|
|
valor_efectivo DECIMAL (12,2)
|
|
END RECORD
|
|
|
|
DEFINE x RECORD
|
|
cod_cia LIKE vetb00002.cod_cia,
|
|
ventas LIKE vetb00002.ventas,
|
|
zona LIKE vetb00002.zona,
|
|
nombre_tipo CHAR(11),
|
|
factura LIKE vetb00002.factura,
|
|
fecha_factura LIKE vetb00002.fecha_factura,
|
|
tipo_cliente LIKE vetb00002.tipo_cliente,
|
|
sec_cliente LIKE vetb00002.sec_cliente,
|
|
nombre CHAR(30),
|
|
direccion CHAR(50),
|
|
ciudad CHAR(20),
|
|
prima_us LIKE vetb00002.prima_us,
|
|
porc_desc LIKE vetb00002.porc_desc,
|
|
nombre_desc CHAR(30),
|
|
cond_pago LIKE vetb00002.cond_pago,
|
|
descrip CHAR(30),
|
|
orden LIkE vetb00002.orden,
|
|
fecha_orden LIKE vetb00002.fecha_orden,
|
|
conduce LIKE vetb00002.conduce,
|
|
fecha_conduce LIKE vetb00002.fecha_conduce,
|
|
porc_itbi LIKE vetb00002.porc_itbi,
|
|
sec_vend LIKE vetb00002.sec_vend,
|
|
nombre_vend CHAR(30),
|
|
cod_transp LIKE iptb00006.cod_transp,
|
|
sec_transp LIKE iptb00006.sec_transp,
|
|
cod_tarifa LIKE vetb00023.cod_tarifa,
|
|
nombre_tran CHAR(30),
|
|
fecha_embarque LIKE vetb00002.fecha_embarque,
|
|
placa_transp LIKE iptb00006.placa,
|
|
sub_total DECIMAL(12,2),
|
|
desc_valor DECIMAL(12,2),
|
|
itbi DECIMAL(12,2),
|
|
total_fact DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE t,t1 CHAR(30)
|
|
DEFINE doble CHAR(1)
|
|
DEFINE comp_off,negras,negras_of,italic,italic_of CHAR(2)
|
|
DEFINE solicitante CHAR(30)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET negras = ASCII 27, ASCII 69
|
|
LET negras_of = ASCII 27, ASCII 70
|
|
LET doble = ASCII 14
|
|
LET italic = ASCII 27, ASCII 52
|
|
LET italic_of = ASCII 27, ASCII 53
|
|
LET comp_off = ASCII 18
|
|
|
|
PRINT COLUMN 70,comp_off, ASCII 27, ASCII 80
|
|
PRINT COLUMN 70,doble, y.documento using "&&&&&&"
|
|
PRINT COLUMN 5, negras,p_companias.nombre CLIPPED,negras_of,
|
|
COLUMN 72, today using "dd/mm/yyyy"
|
|
PRINT COLUMN 5, p_companias.direccion CLIPPED," TEL. ",p_companias.telefono
|
|
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 15, italic,"RECIBO DE INGRESO"
|
|
SKIP 2 LINE
|
|
|
|
LET valor_orig = x.total_fact
|
|
LET valor_letras = NULL
|
|
CALL convierte()
|
|
|
|
SELECT solicitante_s INTO solicitante FROM vetb00006
|
|
WHERE tipo_cliente_s = x.tipo_cliente AND sec_cliente_s = x.sec_cliente AND
|
|
status_t IS NULL
|
|
|
|
PRINT COLUMN 5, "RECIBIMOS DE: ",negras,y.detalle,negras_of,
|
|
COLUMN 40, "ESTABLECIMIENTO: ",negras,x.nombre,negras_of
|
|
PRINT COLUMN 5, "DIRECCION: ",negras,x.direccion,negras_of
|
|
PRINT COLUMN 5, "LOCALIDAD: ",negras,x.ciudad,negras_of
|
|
PRINT COLUMN 5, "LA SUMA DE: ", negras,valor_letras clipped,negras_of#,
|
|
#COLUMN 56, "RD$ ",negras,x.total_fact using "###,###,###.##",negras_of
|
|
PRINT COLUMN 5, "VALOR RECIBIDO: ",
|
|
COLUMN 25,"EN EFECTIVO: ",negras,y.valor_efectivo using "##,###,###.##",
|
|
negras_of,
|
|
COLUMN 58, "EN CHEQUES: ",negras,y.valor_cheque using "###,###,###.##",
|
|
negras_of
|
|
PRINT COLUMN 5,
|
|
"CHEQUE NO: ",negras,y.cheque_no,negras_of,"BANCO: ",negras,t clipped,
|
|
negras_of
|
|
PRINT COLUMN 5, "LOCALIDAD: ",negras,t1 clipped ,negras_of
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 1,
|
|
"------------------------------------------------------------------------------"
|
|
PRINT COLUMN 5, "FECHA",
|
|
COLUMN 20, "FACTURA",
|
|
COLUMN 39, "VALOR FACTURA",
|
|
COLUMN 60, "NETO COBRADO"
|
|
PRINT COLUMN 1,
|
|
"------------------------------------------------------------------------------"
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 3, x.fecha_factura using "dd/mm/yyyy",
|
|
COLUMN 20, x.factura using "&&&&&&" ,
|
|
COLUMN 38, x.sub_total - x.desc_valor + x.itbi using "###,###,###.##",
|
|
COLUMN 58, x.total_fact using "###,###,###.##"
|
|
PRINT italic_of
|
|
|
|
END REPORT
|
|
|
|
FUNCTION anular()
|
|
OPEN WINDOW anula AT 7,5 WITH FORM "vefmwd006" ATTRIBUTE (BORDER,
|
|
COMMENT LINE LAST - 1,PROMPT LINE LAST,FORM LINE FIRST + 1)
|
|
|
|
LABEL vuelve:
|
|
INPUT BY NAME p_fact_no
|
|
|
|
AFTER FIELD p_fact_no
|
|
SELECT UNIQUE fecha_factura,orden,tipo_cliente,sec_cliente,neto
|
|
INTO fact_gral.fecha_factura,fact_gral.orden,fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,fact_gral.total_fact
|
|
FROM vetb00002
|
|
WHERE factura = p_fact_no AND status_t IS NULL AND
|
|
fech_crea > datetime (1994-03-31 08:00) year to minute
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 102
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD p_fact_no
|
|
END IF
|
|
SELECT a.nombre
|
|
INTO fact_gral.nombre
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente AND
|
|
a.sec_cliente = fact_gral.sec_cliente
|
|
|
|
DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
fact_gral.total_fact,fact_gral.nombre ATTRIBUTE(blue)
|
|
|
|
IF fact_gral.fecha_factura < "310394" THEN
|
|
LET numero_msg = 58
|
|
CALL msg(numero_msg)
|
|
GOTO salir
|
|
END IF
|
|
LET p_fechas = fact_gral.fecha_factura
|
|
CALL prd()
|
|
IF bandera =1 THEN
|
|
SLEEP 2
|
|
EXIT INPUT
|
|
END IF
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT INPUT
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
GOTO salir
|
|
END IF
|
|
|
|
# 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
|
|
LET opt3 = UPSHIFT(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 != "N" THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
GOTO atras
|
|
END IF
|
|
|
|
IF opt3 = "N" THEN
|
|
GOTO salir
|
|
END IF
|
|
|
|
IF opt3 = "S" THEN
|
|
UPDATE vetb00002 SET status_t = "E",
|
|
us_mod = USER,
|
|
fech_mod = CURRENT
|
|
WHERE factura = p_fact_no AND fech_crea > datetime (1994-03-31 08:00)
|
|
year to minute
|
|
|
|
UPDATE iptb00006 SET status_t = "E",
|
|
us_mod = USER,
|
|
fech_mod = CURRENT
|
|
WHERE num_doc = p_fact_no AND cod_mov IN (30,31,32) AND
|
|
fech_crea > datetime (1994-03-31 08:00) year to minute
|
|
|
|
UPDATE vetb00003 SET status_t = "E",
|
|
us_mod = USER,
|
|
fech_mod = CURRENT
|
|
WHERE factura = p_fact_no AND fech_crea > datetime (1994-03-31 08:00)
|
|
year to minute
|
|
|
|
UPDATE cctb00001 SET status_t = "E",
|
|
us_mod = USER,
|
|
fech_mod = CURRENT
|
|
WHERE num_doc = p_fact_no AND (tipo_doc = "FT" or tipo_doc = "FE") AND
|
|
fech_crea > datetime (1994-03-31 08:00) year to minute
|
|
|
|
UPDATE cctb00001 SET status_t = "E",
|
|
us_mod = USER,
|
|
fech_mod = CURRENT
|
|
WHERE aplica_a = p_fact_no AND tipo_doc = "PC"
|
|
|
|
# ANULACION DE LAS SERIES
|
|
IF fact_gral.ventas = "1" THEN
|
|
LET p_codigo = 30
|
|
ELSE
|
|
LET p_codigo = 31
|
|
END IF
|
|
UPDATE vetb00042 set status_t = "E", us_mod = user, fech_mod = current
|
|
WHERE factura = p_fact_no AND cod_mov = p_codigo
|
|
|
|
LET numero_msg = 82
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
LABEL salir:
|
|
LET fact_gral.fecha_factura = TODAY
|
|
#CLOSE FORM vefmwd006
|
|
CLOSE WINDOW anula
|
|
END FUNCTION
|
|
|
|
FUNCTION precios()
|
|
# AQUI HAY QUE BUSCAR EL PRECIO PARA CALCULAR POR CLIENTE
|
|
LET p_costos1 = 0
|
|
SELECT precio INTO p_costos1 FROM vetb00025
|
|
WHERE ventas = fact_gral.ventas AND tipo_cliente = fact_gral.tipo_cliente AND
|
|
sec_cliente = fact_gral.sec_cliente AND 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
|
|
SELECT precio INTO p_costos1 FROM vetb00025
|
|
WHERE ventas = fact_gral.ventas AND tipo_cliente IS NULL AND
|
|
sec_cliente IS NULL AND 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 = 85
|
|
CALL msg(numero_msg)
|
|
LET verdad = "S"
|
|
END IF
|
|
{IF fact_det[curr].cod_n = 2 THEN
|
|
LET verdad = "N"
|
|
END IF}
|
|
END IF
|
|
|
|
LET fact_det[curr].precio = p_costos1
|
|
END FUNCTION
|
|
|
|
FUNCTION ver_desc()
|
|
OPEN WINDOW descuentos AT 10,5 WITH FORM "vefmwd007" ATTRIBUTE
|
|
(BORDER,FORM LINE FIRST +1,COMMENT LINE LAST -1,MESSAGE LINE LAST)
|
|
CALL set_count(h-1)
|
|
DISPLAY ARRAY descuenta TO s_desc.*
|
|
CLOSE WINDOW descuentos
|
|
END FUNCTION
|
|
|
|
FUNCTION detalles()
|
|
OPEN WINDOW wdetalle AT 12,2 WITH FORM "vefmwd075"
|
|
ATTRIBUTE(BORDER,FORM LINE FIRST +1)
|
|
INPUT BY NAME observacion WITHOUT DEFAULTS
|
|
CLOSE WINDOW wdetalle
|
|
END FUNCTION
|
|
|
|
FUNCTION cantidad_desp(forden,fcod_n,fcod_tipo,fcod_grupo,fcod_sec)
|
|
DEFINE forden INTEGER,
|
|
fcod_n,fcod_tipo,fcod_grupo,fcod_sec SMALLINT
|
|
|
|
SELECT SUM(b.cantidad) INTO cant_vend
|
|
FROM vetb00002 a, vetb00003 b
|
|
WHERE a.orden = forden AND a.fecha_factura > "31122000"
|
|
AND a.factura = b.factura
|
|
AND b.cod_n = fcod_n
|
|
AND b.cod_tipo = fcod_tipo
|
|
AND b.cod_grupo = fcod_grupo
|
|
AND b.cod_sec = fcod_sec
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET cant_vend = 0
|
|
END IF
|
|
|
|
END FUNCTION |