Files
MBS/PROYECTOS/facturacion.4gl

1907 lines
74 KiB
Plaintext

GLOBALS "..\\PROYECTO\\vedir\\veprgb000.4gl"
DEFINE pperfil, codigo_provincia, tipo_fact, cod_fact,pcod_transp,
ano_act,ano_fe,psec_transp,pcodcia SMALLINT,
pcontroloutlet,tipo_f,ventas CHAR(2),
hoy DATE,num_rnc VARCHAR(11),
ch_encabeza, ch_itbi, ch_servicios,
cliente_ncf, ncf_cliente CHAR(1),
--genera_ncf CHAR(3),
descripcion_doc VARCHAR(100),
--codigo VARCHAR(15),
proforma, aplaca_transp VARCHAR(20),
pcotizacion,cuenta_arr,factura_xc,xdocumento_almacen,factura_old,idz INTEGER,
xdireccion_proyecto, pubicacion, t_arr VARCHAR(100),
credito,valor,valor1,balance,porce,itbis_o, valor_desc,
cant_prod,cant_vend DECIMAL(12,2),
ch_balance CHAR(14),
documento_ref,accesso CHAR(15),
porcentaje_n DEC(8,2),
exito,execede BOOLEAN,
tot_porc DECIMAL(8,3),
observacion CHAR(180),
genera_ncf CHAR(3),
pdocumento_ref VARCHAR(25),
obs1,obs2,obs3 CHAR(50),obs4 CHAR(30)
DEFINE prtb09 RECORD LIKE prtb00009.*
FUNCTION autoFacturacion(datos,movi2)
DEFINE datos RECORD
cod_cia SMALLINT,
num_doc INT,
fecha DATE,
fact_no char(10),
conduce_no char(10),
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
cod_transp SMALLINT,
sec_transp SMALLINT,
placa char(10),
cod_tarifa SMALLINT,
cod_mov SMALLINT,
detalle varchar(255),
area SMALLINT,
cod_n INT,
cod_grupo INT,
cod_tipo INT,
cod_sec INT,
cantidad_1 decimal(12, 5),
cantidad_2 decimal(12, 5),
bodega SMALLINT,
us_crea char(50),
fech_crea date,
num_req INT,
codigo_bloque char(25),
sec_vend SMALLINT,
direccion char(500),
num_oc INT,
bodega_d SMALLINT,
num_Doc_retrabajo INT,
departamento INT,
factura INT,
cotizacion_no INT
END RECORD
DEFINE movi2 DYNAMIC ARRAY OF RECORD
area SMALLINT,
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_1 DEC(12,5),
cantidad_2 DEC(12,5),
cantidad_p DEC(12,5),
unidad_med LIKE iptb00002.unidad_med,
descrip_esp CHAR(80),
existencia DEC(12,5),
disponible DEC(12,5),
codigo_bloque CHAR(15),
id_kit INT
END RECORD
DEFINE movi3 DYNAMIC ARRAY OF RECORD
precio DEC(12,5),
descuento DEC(12,5)
END RECORD
LET ch_itbi = "N"
LET ch_encabeza = "S"
LET codigodgii = NULL
LET descripcion_ncf=NULL
LET ch_servicios = 'N'
#DATOS DE LA EMPRESA
SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,
b.rnc,a.bodega,a.cod_perfil
INTO localidad,sucnombre,p_companias.direccion,p_companias.direccion1,
p_companias.telefono,p_companias.fax,p_companias.rnc,fact_gral.bodega,pperfil
FROM seg0001 a,sucursales b,vetb00020 c
WHERE a.usuario = usuarios AND
a.sucid = b.sucid AND
b.localidad = c.cod_provincia
DISPLAY "query 1: ", localidad,sucnombre,p_companias.direccion,p_companias.direccion1,
p_companias.telefono,p_companias.fax,p_companias.rnc,fact_gral.bodega,pperfil
SET CONNECTION "SQL_C"
SELECT a.controlOutlet,b.num_emp,b.tipo_cliente,b.sec_cliente
INTO pcontroloutlet,fact_gral.sec_vend,fact_gral.tipo_cliente,fact_gral.sec_cliente
FROM seg0003 a,seg0001 b
WHERE a.usuario = usuarios AND a.usuario = b.usuario
DISPLAY "query 2: ",pcontroloutlet,fact_gral.sec_vend,fact_gral.tipo_cliente,fact_gral.sec_cliente
IF pcontroloutlet = 'SI' THEN
LET fact_gral.cod_transp = 12
LET fact_gral.sec_transp = 8
LET ch_encabeza = 'N'
--DISPLAY BY NAME ch_encabeza
SELECT a.bodega INTO fact_gral.bodega FROM seg0001 a WHERE a.usuario = usuarios
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
DISPLAY "query 3: ", pcontroloutlet,fact_gral.sec_vend,fact_gral.tipo_cliente,fact_gral.sec_cliente
ELSE
IF pcontroloutlet <> "SI" THEN
DISPLAY datos.cod_sp
DISPLAY datos.cod_sp_sec
SELECT a.codigodgii INTO codigodgii FROM vetb00004 a
WHERE a.tipo_cliente = datos.cod_sp AND a.sec_cliente = datos.cod_sp_sec
IF codigodgii IS NULL THEN
LET ch_itbi = "N"
ELSE
LET ch_itbi = "S"
END IF
DISPLAY "query 4: ", codigodgii
DISPLAY "query 4a: ", ch_itbi
IF datos.cod_sp = 18 OR datos.cod_sp = 19 THEN
LET ch_encabeza = "N"
END IF
END IF
END IF
SELECT a.dias,a.descrip INTO condicion.dias,condicion.descrip
FROM vetb00012 a WHERE a.cond_pago = fact_gral.cond_pago
DISPLAY "query 5: ",condicion.dias,condicion.descrip
LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias
IF pcontroloutlet <> 'SI' THEN
IF ch_itbi ='S' THEN
--CALL codigodgii(datos.cod_sp, datos.cod_sp_sec) RETURNING codigo
SELECT a.codigodgii INTO codigodgii FROM vetb00004 a
WHERE a.tipo_cliente = datos.cod_sp AND a.sec_cliente = datos.cod_sp_sec
DISPLAY "query 6: ",codigodgii
SELECT a.ncf, a.ventas INTO genera_ncf, ventas FROM vetb00060 a
WHERE a.tipo_cliente = datos.cod_sp
DISPLAY "query 6a: ",genera_ncf
--LET genera_ncf = fgl_winquestion("NCF","DESEA GENERAR FACTURA CON NCF?","YES","NO|YES","QUESTION",0)
END IF
ELSE
SELECT a.cod_zona INTO fact_gral.zona
FROM intb00009 a WHERE a.cod_bodega = fact_gral.bodega
DISPLAY "query 7: ",fact_gral.zona
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
DISPLAY "query 8: ",fact_gral.nombre,credito,codigo_provincia,cliente_bas.telefono
SELECT unique ISNULL(descrip,'NO TIENE') INTO descrip1 FROM vetb00008
WHERE cod_zona = CAST(fact_gral.zona as SMALLINT)
DISPLAY "query 9: ",descrip1
END IF
--AFTER FIELD bodega
IF pcontroloutlet = "SI" THEN
--SELECT a.bodega FROM iptb00048 a WHERE a.bodega = fact_gral.bodega AND a.usuario = usuarios
--IF STATUS = NOTFOUND THEN
-- CALL msg(503)
-- NEXT FIELD bodega
--END IF
SELECT a.cod_zona INTO fact_gral.zona FROM intb00009 a WHERE a.cod_bodega = fact_gral.bodega
DISPLAY "query 9: ", fact_gral.zona
--SELECT unique ISNULL(descrip,'NO TIENE') INTO descrip1 FROM vetb00008
--WHERE cod_zona = CAST(fact_gral.zona as SMALLINT)
--DISPLAY "query 10: ", descrip1
--DISPLAY BY NAME fact_gral.zona,descrip1
END IF
--AFTER FIELD codigodgii
IF codigodgii IS NOT NULL THEN
SET CONNECTION "SQL_E"
SELECT UNIQUE a.itbis INTO ch_itbi FROM vetb00071 a
WHERE a.tipo_doc = "FT" and a.codigo_dgii = codigodgii AND
a.sucid = localidad AND disponible = "S"
DISPLAY "query 10: ", ch_itbi
END IF
IF ch_itbi = 'N' THEN
LET fact_gral.porc_itbi=0
END IF
SET CONNECTION "SQL_C"
LET fact_gral.ventas = ventas
IF fact_gral.ventas = "1" THEN
LET tipo_f = "FT"
END IF
IF fact_gral.ventas = "2" THEN
LET tipo_f = "FE"
END IF
IF fact_gral.ventas = "3" THEN
LET tipo_f = "FE"
END IF
IF fact_gral.ventas = "4" THEN
LET tipo_f = "FE"
END IF
DISPLAY "fact_gral.ventas: ",fact_gral.ventas
DISPLAY "tipo_f: ",tipo_f
SELECT MAX(num_doc) INTO fact_gral.conduce FROM iptb00006
DISPLAY "bodega:", datos.bodega
DISPLAY "fact_gral.conduce:", fact_gral.conduce
LET fact_gral.tipo_cliente = datos.cod_sp
LET fact_gral.sec_cliente = datos.cod_sp_sec
LET fact_gral.orden = datos.num_oc
LET fact_gral.fecha_conduce = datos.fecha
LET fact_gral.cod_transp = datos.cod_transp
LET fact_gral.sec_transp = datos.sec_transp
LET fact_gral.placa_transp = datos.placa
DISPLAY "tipo_cliente: ",fact_gral.tipo_cliente
DISPLAY "sec_cliente: ",fact_gral.sec_cliente
DISPLAY "orden: ",fact_gral.orden
DISPLAY "fecha_conduce: ",fact_gral.fecha_conduce
DISPLAY "cod_transp: ",fact_gral.cod_transp
DISPLAY "sec_transp: ",fact_gral.sec_transp
DISPLAY "placa_transp: ",fact_gral.placa_transp
SELECT a.nombre,a.limite_credito,a.cod_zona,a.cod_provincia,a.telefono,a.num_rnc
INTO fact_gral.nombre,credito,fact_gral.zona,codigo_provincia,
cliente_bas.telefono,cliente_bas.num_rnc
FROM vetb00004 a
WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente
DISPLAY "************************************"
SELECT d.nombre_provincia INTO fact_gral.ciudad FROM vetb00020 d
WHERE d.cod_provincia = codigo_provincia
--SELECT unique descrip INTO descrip1 FROM vetb00008
--WHERE cod_zona = CAST(fact_gral.zona as SMALLINT)
DISPLAY "nombre :", fact_gral.nombre
DISPLAY "credito :",credito
DISPLAY "zona :",fact_gral.zona
DISPLAY "codigo_provincia :",codigo_provincia
DISPLAY "telefono :",cliente_bas.telefono
DISPLAY "num_rnc :",cliente_bas.num_rnc
DISPLAY "ciudad :",fact_gral.ciudad
# BUSCA EL VENDEDOR
LET fact_gral.sec_vend = datos.sec_vend
-- SELECT a.sec_vend INTO fact_gral.sec_vend FROM prtb00012 a
-- WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND
-- a.num_oc = fact_gral.orden
--
-- IF STATUS = NOTFOUND THEN
-- SELECT a.sec_vend INTO fact_gral.sec_vend FROM vetb00028 a
-- WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente
-- END IF
--
# CONTROL DE REPETICION DE CONDUCES
SELECT UNIQUE a.conduce FROM vetb00002 a WHERE a.conduce = fact_gral.conduce AND
a.ventas = fact_gral.ventas AND a.fecha_factura > "01/01/2009" AND a.bodega = fact_gral.bodega AND
a.status_t IS NULL
IF codigodgii IS NOT NULL THEN
IF ch_itbi = "S" THEN
LET cliente_ncf = "N"
SELECT a.ncf INTO cliente_ncf FROM vetb00060 a WHERE a.tipo_cliente = fact_gral.tipo_cliente
IF cliente_ncf = "S" THEN
DISPLAY "cliente_ncf: ",cliente_ncf
SET CONNECTION "SQL_E"
--LET codigodgii = NULL
LET descripcion = NULL
CALL tipoFact('FT', codigodgii) RETURNING descripcion,fecha_vencimiento
DISPLAY "codigodgii: ", codigodgii
DISPLAY "descripcion: ", descripcion
DISPLAY "fecha_vencimiento: ", fecha_vencimiento
SET CONNECTION "SQL_C"
END IF
END IF
END IF
IF pcontroloutlet = "SI" THEN
LET fact_gral.ventas = 1
END IF
LET fact_gral.cod_cia = datos.cod_cia
DISPLAY "fact_gral.cod_cia:", fact_gral.cod_cia
DISPLAY "fact_gral.ventas:", fact_gral.ventas
# BUSCA EL CODIGO DEL MOVIMIENTO
SELECT UNIQUE a.cod_mov INTO p_codigo FROM vetb00060 a
WHERE a.ventas = fact_gral.ventas
LET tipo_fact = p_codigo
IF fact_gral.ventas = "1" THEN
LET tipo_f = "FT"
ELSE
IF fact_gral.ventas = "2" THEN
LET tipo_f = "FE"
END IF
IF fact_gral.ventas = "3" THEN
LET tipo_f = "FE"
END IF
END IF
SELECT prima INTO fact_gral.prima_us
FROM vetb00019 WHERE disponible = "S"
IF fact_gral.tipo_cliente = 23 OR fact_Gral.tipo_cliente = 24 THEN
LET proforma = "PROFORMA"
ELSE
LET proforma="CONDUCE"
END IF
IF fact_gral.fecha_factura IS NULL THEN
LET fact_gral.fecha_factura = TODAY
END IF
LET p_fechas = fact_gral.fecha_factura
LET hoy = fact_gral.fecha_factura
--CALL prd(fact_gral.fecha_factura,usuarios) RETURNING bandera
DISPLAY "proforma: ", proforma
DISPLAY "fact_gral.sec_cliente: ",fact_gral.sec_cliente
DISPLAY "bandera: ",bandera
DISPLAY "fact_gral.sec_cliente: ",fact_gral.sec_cliente
DISPLAY "fact_gral.tipo_cliente: ",fact_gral.tipo_cliente
SELECT a.nombre,a.limite_credito,a.cod_zona,a.cod_provincia,a.telefono
INTO fact_gral.nombre,credito,fact_gral.zona,codigo_provincia,
cliente_bas.telefono
FROM vetb00004 a
WHERE a.tipo_cliente = fact_gral.tipo_cliente AND
a.sec_cliente = fact_gral.sec_cliente
DISPLAY "fact_gral.nombre: ",fact_gral.nombre
DISPLAY "fact_gral.zona: ", fact_gral.zona
DISPLAY "credito: ", credito
DISPLAY "codigo_provincia: ", codigo_provincia
DISPLAY "cliente_bas.telefono: ",cliente_bas.telefono
LET pcotizacion = NULL
SELECT a.cotizacion_no INTO pcotizacion FROM prtb00012 a
WHERE a.num_oc = fact_gral.orden AND a.status_t IS NULL
LET xdireccion_proyecto = NULL
SELECT a.nombre_cliente,a.direccion_cliente,a.direccion_proyecto,a.rnc
INTO fact_gral.nombre,fact_gral.direccion,xdireccion_proyecto,num_rnc
FROM vetb00050 a
WHERE a.cotizacion_no = pcotizacion
DISPLAY "fact_gral.nombre :", fact_gral.nombre
DISPLAY "fact_gral.direccion :",fact_gral.direccion
DISPLAY "xdireccion_proyecto :",xdireccion_proyecto
DISPLAY "num_rnc :",num_rnc
SELECT d.nombre_provincia INTO fact_gral.ciudad
FROM vetb00020 d
WHERE d.cod_provincia = codigo_provincia
DISPLAY "fact_gral.ciudad: ", fact_gral.ciudad
#CONTROL TIPO DE CLIENTES MONEDA
{ SELECT UNIQUE a.ventas FROM vetb00060 a
WHERE a.ventas = fact_Gral.ventas AND
a.tipo_cliente = fact_gral.tipo_cliente
SELECT unique descrip INTO descrip1 FROM vetb00008
WHERE cod_zona = CAST(fact_gral.zona as smallint)
}
# BUSCA EL VENDEDOR SOLO SI LA FACTURA NO ES PARA EL OUTLET
SELECT a.sec_vend INTO fact_gral.sec_vend
FROM prtb00012 a
WHERE a.tipo_cliente = fact_gral.tipo_cliente AND
a.sec_cliente = fact_gral.sec_cliente AND
a.num_oc = fact_gral.orden
IF STATUS = NOTFOUND THEN
SELECT a.sec_vend INTO fact_gral.sec_vend FROM vetb00028 a
WHERE a.tipo_cliente = fact_gral.tipo_cliente AND
a.sec_cliente = fact_gral.sec_cliente
END IF
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","AV","AP")
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 = "AV" 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 "pcontroloutlet: ",pcontroloutlet
DISPLAY "fact_gral.ventas: ",fact_gral.ventas
DISPLAY "fact_gral.sec_vend: ",fact_gral.sec_vend
DISPLAY "fact_gral.cod_transp: ",fact_gral.cod_transp
--BEFORE FIELD nombre
IF pcontroloutlet <> "SI" THEN
--NEXT FIELD porc_desc
DISPLAY "sali"
select a.cond_pago, sum(b.porc_desc) as porc_desc
INTO fact_gral.cond_pago
from vetb00050 a
inner join vetb00051 b on a.cotizacion_no = b.cotizacion_no
where a.cotizacion_no = datos.cotizacion_no
group by a.cond_pago, b.porc_desc
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
END IF
LET pubicacion = NULL
LET documento_ref = NULL
SELECT UNIQUE a.fecha_oc,a.ubicacion,a.nombre_file,
a.cond_pago,b.descrip,b.dias,a.cotizacion_no
INTO fact_gral.fecha_orden,pubicacion,documento_ref,
fact_gral.cond_pago,condicion.descrip,condicion.dias,
pcotizacion
FROM prtb00012 a,vetb00012 b
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.cond_pago = b.cond_pago AND
a.status_t IS NULL
END IF
IF fact_gral.ventas = "1" THEN
select sum(b.porc_desc) as porc_desc
INTO fact_gral.porc_desc
from vetb00050 a
inner join vetb00051 b on a.cotizacion_no = b.cotizacion_no
where a.cotizacion_no = datos.cotizacion_no
group by a.cond_pago, b.porc_desc
END IF
DISPLAY "nombre_tran :",fact_gral.nombre_tran
DISPLAY "p_cedula :",p_cedula
DISPLAY "p_serie :",p_serie
LET pcod_transp = fact_gral.cod_transp
LET psec_transp = fact_gral.sec_transp
LET fact_gral.cod_tarifa = datos.cod_tarifa
LET fact_gral.fecha_factura = hoy
# No permite que el usuario introduzca un ano que no corresponda al actual
LET ano_act = year(TODAY)
DISPLAY "fecha_factura: ",fact_gral.fecha_factura
DISPLAY "ano_act: ",ano_act
DISPLAY "requisicion: ",datos.num_req
IF pcontroloutlet <> "SI" THEN
SELECT a.dias INTO condicion.dias FROM vetb00012 a
WHERE a.cond_pago = fact_gral.cond_pago
LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias
LET porcentaje_n = 0
SELECT a.porc_negocio INTO porcentaje_n FROM vetb00086 a
WHERE a.cotizacion_no = pcotizacion
IF STATUS = NOTFOUND THEN
LET porcentaje_n = 0
END IF
END IF
SELECT a.porc_negocio INTO porcentaje_n FROM vetb00086 a
WHERE a.cotizacion_no = pcotizacion
IF STATUS = NOTFOUND THEN
LET porcentaje_n = 0
END IF
LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias
DISPLAY "condicion.dias:",condicion.dias
DISPLAY "porcentaje_n :",porcentaje_n
--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 OR fact_gral.fecha_factura > TODAY THEN
LET fact_gral.fecha_factura = TODAY
END IF
--CALL prd(fact_gral.fecha_factura,usuarios) RETURNING bandera
--IF bandera = 1 THEN
-- LET bandera = 0
-- NEXT FIELD fecha_factura
--END IF
DISPLAY "p_fecha_ven: ",p_fecha_ven
DISPLAY "fact_gral.ventas: ",fact_gral.ventas
# CONTROL LOCALIDAD VENDEDOR
SELECT a.sec_vend FROM vetb00084 a WHERE a.sec_vend = fact_gral.sec_vend
IF STATUS = NOTFOUND THEN
SELECT a.num_emp FROM adtb00003 WHERE a.num_emp = fact_gral.sec_vend
END IF
IF ch_itbi = 'N' THEN
LET fact_gral.porc_itbi=0
END IF
SET CONNECTION "SQL_C"
IF pcontroloutlet <> "SI" THEN
IF fact_gral.orden IS NOT NULL THEN
LET pubicacion = NULL
LET documento_ref = NULL
SELECT UNIQUE a.fecha_oc,a.ubicacion,a.nombre_file,
a.cond_pago,b.descrip,b.dias,a.cotizacion_no
INTO fact_gral.fecha_orden,pubicacion,documento_ref,fact_gral.cond_pago,
condicion.descrip,condicion.dias,pcotizacion
FROM prtb00012 a,vetb00012 b
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.cond_pago = b.cond_pago AND
a.status_t IS NULL
END IF
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"
LET itbis_o = fact_gral.itbi
IF porcentaje_n > 0 THEN
LET fact_gral.porc_itbi = fact_gral.porc_itbi * (porcentaje_n /100)
END IF
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.prima_us = NULL
ELSE
IF fact_gral.ventas = "3" THEN
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 tipo_fact = 31
LET tipo_f = "FE"
END IF
END IF
END IF
LET fact_gral.factura = 0
SELECT ult_factura INTO fact_gral.factura FROM vetb00001
LET fact_gral.factura = fact_gral.factura + 1
LET pcotizacion = NULL
SELECT a.cotizacion_no INTO pcotizacion FROM prtb00012 a
WHERE a.num_oc = fact_gral.orden AND a.status_t IS NULL
LET xdireccion_proyecto = NULL
SELECT a.nombre_cliente,a.direccion_cliente,a.direccion_proyecto,a.rnc
INTO fact_gral.nombre,fact_gral.direccion,xdireccion_proyecto,num_rnc
FROM vetb00050 a
WHERE a.cotizacion_no = pcotizacion
SELECT d.nombre_provincia INTO fact_gral.ciudad
FROM vetb00020 d
WHERE d.cod_provincia = codigo_provincia
-- CALL detalles()
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
IF fact_gral.prima_us IS NULL THEN
SELECT a.prima INTO fact_gral.prima_us
FROM vetb00019 a WHERE a.disponible = "S"
END IF
DISPLAY "*************************************"
DISPLAY "fact_gral.factura :",fact_gral.factura
DISPLAY "pcotizacion :",pcotizacion
DISPLAY "fact_gral.nombre :",fact_gral.nombre
DISPLAY "fact_gral.direccion :",fact_gral.direccion
DISPLAY "xdireccion_proyecto :",xdireccion_proyecto
DISPLAY "num_rnc :",num_rnc
DISPLAY "fact_gral.ciudad :",fact_gral.ciudad
DISPLAY "fact_gral.prima_us :",fact_gral.prima_us
DISPLAY "*************************************"
DISPLAY "fact_gral.conduce:", fact_gral.conduce
DISPLAY "p_codigo:", p_codigo
DISPLAY "fact_gral.bodega:", fact_gral.bodega
DISPLAY "datos.cotizacion_no:", datos.cotizacion_no
#-------------------------------------------
#-----------CONSOLIDADO---------------------
--SET CONNECTION "SQL_C"
SELECT ult_factura INTO fact_gral.factura FROM vetb00001
LET fact_gral.factura = fact_gral.factura + 1
DISPLAY fact_Gral.factura
DISPLAY usuarios
IF fact_gral.factura IS NOT NULL THEN
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,documento,placa_transporte,bodega,cotizacion_no,
tipo_factura,documento_ref,descripcion_documento,placa,
nombre_cliente,direccion_cliente,telefono,rnc)
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,factura_e,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,usuarios,GETDATE(),NULL,NULL,documento_ref,fact_gral.placa_transp,
fact_gral.bodega,pcotizacion,proforma,pdocumento_ref,descripcion_doc,fact_gral.placa_transp,
fact_gral.nombre,fact_gral.direccion,cliente_bas.telefono,num_rnc)
# INSERTA EL DETALLE DE LA FACTURA
INSERT INTO vetb00048
VALUES (fact_gral.factura,observacion,NULL,usuarios,GETDATE(),null,NULL)
# Actualiza la tabla control de la numeracion de la factura
UPDATE vetb00001 SET ult_factura = fact_gral.factura,us_crea = usuarios ,fech_crea = GETDATE()
UPDATE iptb00006 SET factura = fact_gral.factura
WHERE num_doc = fact_gral.conduce AND
cod_sp = fact_gral.tipo_cliente AND
cod_sp_sec = fact_gral.sec_cliente AND
bodega = fact_gral.bodega
END IF
DISPLAY "BUSCA AVANCE"
CALL busca_avance(fact_gral.tipo_cliente,fact_gral.sec_cliente,pcotizacion,
fact_gral.total_fact,fact_gral.fecha_factura,
fact_gral.sec_vend,localidad,fact_gral.factura,usuarios)
# Actualizacion de la tabla de cuentas por cobrar
DISPLAY "fact_gral.cond_pago: ",fact_gral.cond_pago
IF fact_gral.cond_pago > 1 THEN
INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,
fecha_ven,aplica_a,valor,monto_desc,us_crea,fech_crea,bodega,documento_ref,num_oc)
VALUES (fact_gral.cod_cia,tipo_f,fact_gral.factura,fact_gral.tipo_cliente,
fact_gral.sec_cliente,fact_gral.sec_vend,fact_gral.fecha_factura,
p_fecha_ven,fact_gral.factura, fact_gral.total_fact,'0',
SUSER_SNAME(),GETDATE(),fact_gral.bodega,pcotizacion,fact_gral.orden)
IF pcontroloutlet = "SI" THEN
CALL veprfu001()
--CALL veconduce(fact_gral.*,fact_det,usuarios,clave,impresor,localidad,cliente_bas.telefono) RETURNING exito
IF NOT exito THEN
ROLLBACK WORK
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
DISPLAY "cant_vend: ",cant_vend
DISPLAY "cant_prod: ",cant_prod
IF cant_vend <> cant_prod THEN
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"
DISPLAY "prtb09.detalle: ",prtb09.detalle
END IF
FOR idz = 1 TO movi2.getLength()
IF movi2[idz].cod_n IS NOT NULL THEN
select precio, porc_desc INTO movi3[idz].precio, movi3[idz].descuento
from vetb00051
where area = movi2[idz].area AND cod_n = movi2[idz].cod_n AND
cod_grupo = movi2[idz].cod_grupo AND
cod_tipo = movi2[idz].cod_tipo AND cod_sec = movi2[idz].cod_sec AND
cotizacion_no = datos.cotizacion_no
IF movi2[idz].cantidad_1 < 0 THEN
LET movi2[idz].cantidad_1 = movi2[idz].cantidad_1 * -1
END IF
IF movi2[idz].cantidad_2 IS NULL THEN
LET movi2[idz].cantidad_2 = 0
END IF
INSERT INTO vetb00003
VALUES (fact_gral.cod_cia,fact_gral.factura,movi2[idz].area,movi2[idz].cod_n,
movi2[idz].cod_grupo,movi2[idz].cod_tipo,movi2[idz].cod_sec,
movi2[idz].cantidad_1,movi2[idz].cantidad_2,valor_desc,
movi3[idz].precio,NULL,SUSER_SNAME(),GETDATE(),NULL,NULL,
localidad,movi2[idz].id_kit)
# Actualiza el campo placa cuando la factura es de exportacion
IF fact_gral.ventas = 2 THEN
UPDATE iptb00006 SET placa = fact_gral.placa_transp
WHERE num_doc = fact_gral.conduce AND cod_mov = 31
END IF
IF p_bonifica[idz] IS NULL THEN
LET p_bonifica[idz] = 0
END IF
IF opt4 = "N" or opt4 = "n" THEN
LET p_bonifica[idz] = 0
END IF
DISPLAY "movi2[idz].area :",movi2[idz].area
DISPLAY "movi2[idz].cod_n :",movi2[idz].cod_n
DISPLAY "movi2[idz].cod_grupo :",movi2[idz].cod_grupo
DISPLAY "movi2[idz].cod_tipo :",movi2[idz].cod_tipo
DISPLAY "movi2[idz].cod_sec :",movi2[idz].cod_sec
DISPLAY "movi2[idz].cantidad :",movi2[idz].cantidad_1
DISPLAY "movi2[idz].precio :",movi3[idz].precio
DISPLAY "movi2[idz].descuento :",movi3[idz].descuento
DISPLAY "movi2[idz].cantidad_2 :",movi2[idz].cantidad_2
DISPLAY "movi2[idz].kit_id :",movi2[idz].id_kit
END IF
END FOR
### ============================== IMPRESION CONSOLIDADO=============================
{ DISPLAY "CALL defecto"
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
DISPLAY "start report"
START REPORT imp_fact TO archivo
FOR idz = 1 TO movi2.getLength()
IF movi2[idz].cod_n IS NOT NULL AND
movi2[idz].cod_grupo IS NOT NULL AND
movi2[idz].cod_tipo IS NOT NULL AND
movi2[idz].cod_sec IS NOT NULL AND
movi2[idz].cantidad_1 IS NOT NULL AND
movi2[idz].cantidad_1 > 0 THEN
LET cod_fact = 1
OUTPUT TO REPORT imp_fact(fact_gral.*,movi2[idz].*,movi3[idz].*,tot_porc,p_bonifica[idz],cod_fact)
END IF
END FOR
--DISPLAY nombre_m CLIPPED AT 1,1
FINISH REPORT imp_fact
RUN imprime}
#-> Valida si la factura realmente existe vg Sado 24 de Marzo de 2001
SELECT DISTINCT a.factura FROM vetb00002 a WHERE a.factura = fact_gral.factura
IF STATUS = NOTFOUND THEN
DISPLAY "FACTURA NO EXISTE"
END IF
#------------------------- TERMINA SQL_C----------------------------------------------
# INSERTA EN EXTERIOR
CALL verificaNCF(fact_gral.tipo_cliente) RETURNING ncf_cliente
DISPLAY ncf_cliente
DISPLAY "IMPRESION GRAFICA"
IF ncf_cliente = "S" THEN
DISPLAY "localidad: ", localidad
IF localidad IS NULL THEN
--CALL fgl_winmessage("ERROR","LOCALIDAD ESTA EN BLANCO","INFO")
RETURN
END IF
LET kncf = NULL
IF codigodgii IS NOT NULL THEN
SET CONNECTION "SQL_E"
LET factura_xc = fact_gral.factura
# Control facturas NCF
FOR idz = 1 TO movi2.getLength()
IF movi2[idz].cod_n IS NOT NULL THEN
CALL verifica_cantidad(movi2[idz].area,movi2[idz].cod_n,movi2[idz].cod_grupo,movi2[idz].cod_tipo,
movi2[idz].cod_sec,movi2[idz].cantidad_1, fact_gral.orden)
RETURNING execede
IF NOT execede THEN
CONTINUE FOR
ELSE
EXIT FOR
END IF
END IF
END FOR
DISPLAY "execede: ",execede
IF NOT execede THEN
SELECT a.ncf INTO kncf FROM vetb00073 a
WHERE a.tipo_doc = "FT" AND a.codigo_dgii = codigodgii
IF kncf IS NULL THEN
LET kncf = 0
END IF
LET kncf = kncf + 1
SELECT ult_factura INTO fact_gral.factura FROM vetb00001 WHERE sucid = localidad
LET fact_gral.factura = fact_gral.factura + 1
UPDATE vetb00073 SET ncf = kncf,us_crea = usuarios,fech_crea = getdate()
WHERE tipo_doc = 'FT' AND codigo_dgii = codigodgii
UPDATE vetb00001 SET ult_factura = fact_gral.factura,us_crea = usuarios,fech_crea = GETDATE()
WHERE sucid = localidad
INSERT INTO vetb00072
VALUES(fact_gral.factura,"FT",codigodgii,kncf,usuarios,getdate(),localidad)
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,documento,placa_transporte,bodega,factura_c,sucid,
nombre_cliente,direccion_cliente,direccion_proyecto,conduce_almacen,rnc)
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,pcotizacion,fact_gral.fecha_conduce,
fact_gral.tipo_cliente,fact_gral.sec_cliente,factura_e,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,usuarios,GETDATE(),NULL,NULL,documento_ref,fact_gral.placa_transp,
fact_gral.bodega,factura_xc,localidad,fact_gral.nombre,fact_gral.direccion,
xdireccion_proyecto,fact_gral.conduce,num_rnc)
# Actualizacion de la tabla de cuentas por cobrar
CALL busca_avance(fact_gral.tipo_cliente,fact_gral.sec_cliente,pcotizacion,
fact_gral.total_fact,fact_gral.fecha_factura,
fact_gral.sec_vend,localidad,fact_gral.factura,usuarios)
IF fact_gral.cond_pago > 1 THEN
INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,
fecha_ven,
aplica_a,valor,monto_desc,us_crea,fech_crea,bodega,sucid,documento_ref,num_oc,
factura_ext)
VALUES (fact_gral.cod_cia,tipo_f,fact_gral.factura,
fact_gral.tipo_cliente,fact_gral.sec_cliente,
fact_gral.sec_vend,fact_gral.fecha_factura,p_fecha_ven,
fact_gral.factura, fact_gral.total_fact,'0',
usuarios,GETDATE(),fact_gral.bodega,localidad,pcotizacion, fact_gral.orden,factura_xc)
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
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
FOR idz = 1 TO movi2.getLength()
IF movi2[idz].cantidad_2 IS NULL THEN
LET movi2[idz].cantidad_2 = 0
END IF
IF movi2[idz].cod_n IS NOT NULL THEN
select precio, porc_desc INTO movi3[idz].precio, movi3[idz].descuento
from vetb00051
where area = movi2[idz].area AND cod_n = movi2[idz].cod_n AND
cod_grupo = movi2[idz].cod_grupo AND
cod_tipo = movi2[idz].cod_tipo AND cod_sec = movi2[idz].cod_sec AND
cotizacion_no = datos.cotizacion_no
INSERT INTO vetb00003
VALUES (fact_gral.cod_cia,fact_gral.factura,movi2[idz].area,movi2[idz].cod_n,
movi2[idz].cod_grupo,movi2[idz].cod_tipo,
movi2[idz].cod_sec,movi2[idz].cantidad_1,movi2[idz].cantidad_2,
valor_desc,movi3[idz].precio,NULL,usuarios,GETDATE(),NULL,NULL,localidad,
movi2[idz].id_kit,movi2[idz].descrip_esp)
IF movi2[idz].cantidad_1 > 0 THEN
LET movi2[idz].cantidad_1 = movi2[idz].cantidad_1 * -1
END IF
INSERT INTO iptb00006(cod_cia,num_doc,fecha,fact_no,conduce_no,cod_sp,cod_sp_sec,placa,cod_mov,
cod_n,cod_grupo,cod_tipo,cod_sec,cantidad_1,cantidad_2,bodega,us_crea,fech_crea)
VALUES (fact_gral.cod_cia,fact_gral.factura,fact_gral.fecha_factura,
fact_gral.factura,fact_gral.orden,fact_gral.tipo_cliente,
fact_gral.sec_cliente,fact_gral.placa_transp,
p_codigo,movi2[idz].cod_n,movi2[idz].cod_grupo,
movi2[idz].cod_tipo,movi2[idz].cod_sec,
movi2[idz].cantidad_1,movi2[idz].cantidad_1,
localidad,usuarios,getdate())
IF movi2[idz].cantidad_1 < 0 THEN
LET movi2[idz].cantidad_1 = movi2[idz].cantidad_1 * -1
END IF
#Actualiza el campo placa cuando la factura es de exportacion
IF fact_gral.ventas = 2 THEN
UPDATE iptb00006 SET placa = fact_gral.placa_transp
WHERE num_doc = fact_gral.conduce AND cod_mov = 31
END IF
IF p_bonifica[idz] IS NULL THEN
LET p_bonifica[idz] = 0
END IF
IF opt4 = "N" or opt4 = "n" THEN
LET p_bonifica[idz] = 0
END IF
END IF
END FOR
FOR idz = 1 TO movi2.getLength()
#IDENTIFICA EL PRODUCTO POR SU ORIGEN
SELECT a.cod_cia INTO pcodcia FROM iptb00002 a
WHERE a.cod_n = movi2[idz].cod_n AND a.cod_grupo = movi2[idz].cod_grupo AND
a.cod_tipo = movi2[idz].cod_tipo AND a.cod_Sec = movi2[idz].cod_sec
IF pcodcia = 1 OR pcodcia = 2 THEN
#BUSCA DOCUMENTO SECUENCIA PRODUCCION
SELECT a.num_doc INTO xdocumento_almacen FROM iptb00007 a WHERE cod_mov = 20
IF xdocumento_almacen IS NULL THEN
LET xdocumento_almacen =0
END IF
LET xdocumento_almacen=xdocumento_almacen +1
UPDATE iptb00007 SET num_doc = xdocumento_almacen WHERE cod_mov = 20
INSERT INTO iptb00006 (cod_cia,num_doc,fact_no,fecha,cod_mov,cod_n,
cod_grupo,cod_tipo,cod_sec,cantidad_2,
bodega,us_crea,fech_crea,cotizacion_no,num_oc)
VALUES (fact_gral.cod_cia,xdocumento_almacen,fact_gral.factura,
fact_gral.fecha_factura,20,movi2[idz].cod_n,
movi2[idz].cod_grupo,movi2[idz].cod_tipo,
movi2[idz].cod_sec,movi2[idz].cantidad_1,localidad,usuarios,getdate(),fact_gral.conduce,
fact_gral.orden)
END IF
END FOR
{ LET r_filename = "veprmt022.4rp"
LET r_output = "PDF"
LET preview = 1
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview)
LET HANDLER = fgl_report_commitCurrentSettings() -- commit changes
END IF
IF HANDLER IS NOT NULL THEN -- report engine was configured ok
START REPORT imp_factura TO XML HANDLER HANDLER
END IF
FOR idz = 1 TO movi2.getLength()
IF movi2[idz].cod_n IS NOT NULL AND
movi2[idz].cod_grupo IS NOT NULL AND
movi2[idz].cod_tipo IS NOT NULL AND
movi2[idz].cod_sec IS NOT NULL AND
movi2[idz].cantidad_1 IS NOT NULL AND
movi2[idz].cantidad_1 > 0 THEN
LET cod_fact = 1
OUTPUT TO REPORT imp_factura(fact_gral.*,movi2[idz].*,movi3[idz].*,tot_porc,
p_bonifica[idz],cod_fact,kncf,codigodgii,descripcion,observacion,usuarios,
fecha_vencimiento)
END IF
END FOR
FINISH REPORT imp_factura}
# AFECTA REGISTRO PARA LA PRODUCCION. FECHA 15/04/2018. POR JOHNNY SOTO
### IMPRESION FACTURA CON NCF
SET CONNECTION "SQL_C"
UPDATE vetb00002 SET factura_ext = fact_gral.factura
WHERE factura = factura_xc AND tipo_cliente = fact_gral.tipo_cliente AND
sec_cliente = fact_gral.sec_cliente
UPDATE cctb00001 SET factura_ext = fact_gral.factura WHERE num_doc = factura_xc AND
tipo_Doc IN ('FE','FT') AND tipo_cliente = fact_gral.tipo_cliente AND
sec_cliente = fact_gral.sec_cliente
--CALL movi2.clear()
LET fact_gral.itbi = 0
LET fact_gral.sub_total = 0
LET fact_gral.total_fact = 0
LET fact_gral.desc_valor = 0
INITIALIZE fact_Gral.* TO NULL
END IF
SET CONNECTION "SQL_E"
LET r_filename = "veprmt022.4rp"
LET r_output = "PDF"
LET preview = 1
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview)
LET HANDLER = fgl_report_commitCurrentSettings() -- commit changes
END IF
IF HANDLER IS NOT NULL THEN -- report engine was configured ok
START REPORT imp_factura TO XML HANDLER HANDLER
END IF
FOR idz = 1 TO movi2.getLength()
IF movi2[idz].cod_n IS NOT NULL AND
movi2[idz].cod_grupo IS NOT NULL AND
movi2[idz].cod_tipo IS NOT NULL AND
movi2[idz].cod_sec IS NOT NULL AND
movi2[idz].cantidad_1 IS NOT NULL AND
movi2[idz].cantidad_1 > 0 THEN
LET cod_fact = 1
OUTPUT TO REPORT imp_factura(fact_gral.*,movi2[idz].*,movi3[idz].*,tot_porc,
p_bonifica[idz],cod_fact,kncf,codigodgii,descripcion,observacion,usuarios,
fecha_vencimiento)
END IF
END FOR
FINISH REPORT imp_factura
END IF
END IF
END FUNCTION
FUNCTION verificaNCF(tipo)
DEFINE tipo SMALLINT,
ncf CHAR(1)
SELECT a.ncf INTO ncf
FROM vetb00060 a WHERE a.tipo_cliente = tipo
RETURN ncf
END FUNCTION
REPORT imp_factura(x,z,y,porciento,bonifica,cod_f,pncf,pcodigodgii,descripcion,observacion,usuarios,fecha_vencimiento)
DEFINE x RECORD
cod_cia LIKE vetb00002.cod_cia,
ventas LIKE vetb00002.ventas,
zona CHAR(3),
factura LIKE vetb00002.factura,
bodega SMALLINT,
conduce LIKE vetb00002.conduce,
fecha_conduce DATE,
fecha_factura DATE,
tipo_cliente LIKE vetb00002.tipo_cliente,
sec_cliente LIKE vetb00002.sec_cliente,
nombre CHAR(30),
direccion CHAR(80),
ciudad CHAR(20),
prima_us LIKE vetb00002.prima_us,
porc_desc LIKE vetb00002.porc_desc,
cond_pago LIKE vetb00002.cond_pago,
orden INT,
fecha_orden DATE,
porc_itbi LIKE vetb00002.porc_itbi,
sec_vend LIKE vetb00002.sec_vend,
nombre_vend CHAR(60),
cod_transp LIKE iptb00006.cod_transp,
sec_transp LIKE iptb00006.sec_transp,
cod_tarifa LIKE iptb00006.cod_tarifa,
nombre_tran CHAR(30),
fecha_embarque DATE,
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,
pncf INT, pcodigodgii CHAR(30),
descripcion,descripcion_bodega VARCHAR(100),
fecha_vencimiento DATE
DEFINE z RECORD
area SMALLINT,
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_1 DEC(12,5),
cantidad_2 DEC(12,5),
cantidad_p DEC(12,5),
unidad_med LIKE iptb00002.unidad_med,
descrip_esp CHAR(80),
existencia DEC(12,5),
disponible DEC(12,5),
codigo_bloque CHAR(15),
id_kit INT
END RECORD
DEFINE y RECORD
precio DEC(12,5),
descuento DEC(12,5)
END RECORD,
telefono char (30),celular char(15),
descrip_cond CHAR(50),
observacion VARCHAR(100)
DEFINE punidad,conduce_alm 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,ch_ncf CHAR(20)
DEFINE porciento DECIMAL(8,3)
DEFINE valor_porc,monto_factura DECIMAL (12,2)
DEFINE rnc CHAR(10)
DEFINE nombre_vend,apellido_vend CHAR(15)
DEFINE hora CHAR(5),
marca,modelo CHAR(25),
ldescuento DEC(12,2),
p_companias RECORD LIKE companias.*,
imagen BYTE,
localidad SMALLINT,
xconduce_almacen INT,
xdireccion,filedestino,nombre_file,sucnombre,chventas,xbodega,direccion_sucursal VARCHAR(100),
usuarios,codigo VARCHAR(50),
simbolo VARCHAR(4),
ch_fechavence VARCHAR(10),
vimagen BOOLEAN,
cliente_bas RECORD LIKE vetb00004.*,
condicion RECORD LIKE vetb00012.*,
ch_fecha VARCHAR(10)
OUTPUT
TOP MARGIN 0
PAGE LENGTH 66
LEFT MARGIN 0
ORDER BY x.factura
FORMAT
FIRST PAGE HEADER
LET xconduce_almacen = x.conduce
SELECT a.descripcion INTO descripcion_bodega FROM intb00009 a WHERE a.cod_bodega = x.bodega
SELECT a.descrip INTO condicion.descrip FROM vetb00012 a WHERE a.cond_pago = x.cond_pago
SELECT a.telefono,a.telex INTO cliente_bas.telefono,cliente_bas.telex FROM vetb00004 a
WHERE a.tipo_cliente = x.tipo_cliente AND a.sec_cliente = x.sec_cliente
SELECT a.* INTO p_companias.* FROM companias a WHERE a.cod_comp = x.cod_cia
SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc,a.bodega
INTO localidad,sucnombre,p_companias.direccion,p_companias.direccion1,
p_companias.telefono,p_companias.fax,p_companias.rnc
FROM seg0001 a,sucursales b,vetb00020 c
WHERE a.usuario = usuarios AND a.sucid = b.sucid AND b.localidad = c.cod_provincia
SELECT a.descripcion, a.simbolo INTO chventas,simbolo FROM vetb00060 a WHERE a.ventas = x.ventas
SELECT a.descripcion INTO xbodega FROM intb00009 a WHERE a.cod_bodega = x.bodega
LET conduce_alm = 0
SELECT a.conduce_almacen INTO conduce_alm FROM vetb00002 a WHERE a.factura = x.factura
LET vimagen=TRUE
LOCATE imagen IN MEMORY
SELECT a.firmafactura,a.nombre_file_firma INTO imagen,nombre_file FROM seg0001 a WHERE a.usuario = usuarios
LET filedestino = 'E:\\MARMOTECH\\test\\IMAGENES\\tmp\\',usuarios CLIPPED,nombre_file CLIPPED
IF imagen IS NULL THEN
LET vimagen=FALSE
ELSE
CALL imagen.writeFile(filedestino)
CALL comprimeImagen(filedestino,' -resize 200x200 ')
CALL imagen.readFile(filedestino)
END IF
AFTER GROUP OF x.factura
LET telefono = NULL
LET rnc = NULL
LET tot_n = 0
LET tot_b = 0
LET tot_m = 0
ON EVERY ROW
LET codigo = z.cod_n USING "&&&","-",z.cod_grupo USING "&&&&","-",z.cod_tipo USING "&&&&","-",
z.cod_Sec USING "&&&&&&&"
if x.direccion is null then
SELECT b.calle||' '||b.casa_num||''||b.barrio||' '||b.urbanizacion
INTO x.direccion
FROM vetb00005 b
WHERE b.tipo_cliente = x.tipo_cliente AND
b.sec_cliente = x.sec_cliente
end if
LET ch_ncf ="NCF:", pcodigodgii CLIPPED,pncf USING "&&&&&&&&"
SELECT a.num_rnc,a.telefono INTO rnc,telefono FROM vetb00004 a
WHERE a.tipo_cliente = x.tipo_cliente AND a.sec_cliente = x.sec_cliente AND
a.status_t IS NULL
SELECT a.descrip INTO descrip_cond FROM vetb00012 a
WHERE a.cond_pago = x.cond_pago
LET punidad = z.unidad_med
LET marca = NULL
LET modelo = NULL
LET ch_fecha = fecha_vencimiento USING "dd/mm/yyyy"
LET monto_factura = y.precio * z.cantidad_1
LET ldescuento = (z.cantidad_2 / 100) * (y.precio*z.cantidad_1)
LET xdireccion = x.direccion
PRINTX z.cod_n,z.cod_grupo,z.cod_tipo,z.cod_sec,
z.cantidad_1,z.unidad_med ,
z.descrip_esp ,marca , modelo ,
x.sub_total,ldescuento,monto_factura,
direccion_sucursal,p_companias.telefono,
p_companias.fax,p_companias.rnc,x.cond_pago, descripcion,
pcodigodgii,x.factura , x.fecha_factura,
x.sec_vend,x.nombre_vend ,x.nombre,x.tipo_cliente,
x.sec_cliente,x.conduce, # x.orden
xdireccion ,
x.porc_desc , x.desc_valor,y.precio,
x.porc_itbi, x.itbi,x.total_fact,
celular,x.prima_us,rnc,
p_companias.nombre,telefono,
ch_ncf,descrip_cond,observacion,
imagen,chventas,simbolo,x.nombre_tran,x.placa_transp,xbodega,
conduce_alm,ch_fecha,fecha_vencimiento,vimagen,
cliente_bas.telefono,cliente_bas.telex,descripcion_bodega,
condicion.descrip,xconduce_almacen,sucnombre,x.orden
END REPORT
REPORT imp_fact(x,z,y,porciento,bonifica,cod_f)
DEFINE x RECORD
cod_cia LIKE vetb00002.cod_cia,
ventas LIKE vetb00002.ventas,
zona LIKE vetb00002.zona,
factura LIKE vetb00002.factura,
bodega SMALLINT,
conduce LIKE vetb00002.conduce,
fecha_conduce LIKE vetb00002.fecha_conduce,
fecha_factura LIKE vetb00002.fecha_factura,
tipo_cliente LIKE vetb00002.tipo_cliente,
sec_cliente LIKE vetb00002.sec_cliente,
nombre CHAR(30),
direccion CHAR(170),
ciudad CHAR(20),
prima_us LIKE vetb00002.prima_us,
porc_desc LIKE vetb00002.porc_desc,
cond_pago LIKE vetb00002.cond_pago,
orden INT,
fecha_orden LIKE vetb00002.fecha_orden,
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
area SMALLINT,
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_1 DEC(12,5),
cantidad_2 DEC(12,5),
cantidad_p DEC(12,5),
unidad_med LIKE iptb00002.unidad_med,
descrip_esp CHAR(80),
existencia DEC(12,5),
disponible DEC(12,5),
codigo_bloque CHAR(15),
id_kit INT
END RECORD
DEFINE y RECORD
precio DEC(12,5),
descuento DEC(12,5)
END RECORD
DEFINE bonifica INTEGER,
i,cod_f SMALLINT,
plado1,plado2,plado3,pcantidad,pmedida,total_unidades DEC(12,5)
DEFINE tot_b,tot_n,tot_m DECIMAL(12,2),
ch_fech CHAR(20),
descripcion_area CHAR(30)
DEFINE porciento DECIMAL(8,3)
DEFINE normal,doce,negras,negras_off,doble CHAR(2)
DEFINE nombre_vend,apellido_vend CHAR(15)
DEFINE comprimido,comprimido_of CHAR(1)
DEFINE j,lj,h INTEGER,
etiqueta CHAR(30)
OUTPUT
TOP MARGIN 2
LEFT MARGIN 0
#PAGE LENGTH 65
BOTTOM MARGIN 3
ORDER BY x.factura,z.area,z.cod_n,z.cod_grupo,z.cod_tipo,z.cod_Sec
FORMAT
PAGE HEADER
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
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
LET j = (90 - LENGTH(p_companias.direccion CLIPPED))/2
LET i = (90 - LENGTH(p_companias.telefono CLIPPED))/2
LET h = (90 - LENGTH(p_companias.rnc CLIPPED))/2
# IF ch_encabeza = "S" THEN
# PRINT COLUMN lj, normal,doble,p_companias.nombre CLIPPED
# PRINT COLUMN j+3, p_companias.direccion
#PRINT COLUMN i-9, "Tels : ",p_companias.telefono ,
# " Fax : ",p_companias.fax
#PRINT COLUMN h-1, "RNC : ",p_companias.rnc CLIPPED,
# COLUMN 100, "Pag. ", pageno using "###"
# ELSE
# PRINT
# PRINT
# END IF
IF ch_encabeza = "S" THEN
PRINT COLUMN 4, normal,doble,"MARMOTECH, S. A."
ELSE
PRINT
END IF
PRINT COLUMN 4, doble,proforma CLIPPED,":",x.factura using "<<<<<<<<<"
IF descripcion_doc IS NOT NULL THEN
PRINT COLUMN 4, descripcion_Doc CLIPPED
ELSE
SKIP 1 LINE
END IF
PRINT COLUMN 4, doce,"PAGINA NO. ",pageno USING "<<<"
#PRINT normal,comprimido_of
IF x.ventas = "1" THEN
PRINT COLUMN 4,normal,comprimido_of, negras,"SENORES :"
ELSE
PRINT COLUMN 4, "SIR :"
END IF
PRINT COLUMN 4, x.nombre CLIPPED," COD.#",x.tipo_cliente using "&&","-",
x.sec_cliente using "&&&&&&"
PRINT COLUMN 4, x.direccion[1,55]
IF x.direccion[56,106] IS NOT NULL THEN
PRINT COLUMN 4, x.direccion[56,106]
ELSE
PRINT ''
END IF
IF x.direccion[107,170] IS NOT NULL THEN
PRINT COLUMN 4, x.direccion[107,170]
ELSE
PRINT ' '
END IF
PRINT COLUMN 4, "Telefono: ",cliente_bas.telefono
PRINT COLUMN 4, x.ciudad CLIPPED," RNC #",cliente_bas.num_rnc
PRINT COLUMN 4, pubicacion [1,60]
PRINT COLUMN 4, pubicacion[65,100] CLIPPED
PRINT comprimido
SELECT a.nom1_emp,a.apell1_emp INTO p_adtb03.nom1_emp,p_adtb03.apell1_emp
FROM adtb00003 a WHERE a.num_emp = fact_gral.sec_vend
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 = p_adtb03.nom1_emp
LET apellido_vend = NULL
END IF
PRINT "======================================================================================================",
"================================="
PRINT COLUMN 1, "SALIDA",
COLUMN 15, "ORDEN",
COLUMN 25, "FECHA",
COLUMN 38, "COTIZACION",
COLUMN 52, "FACTURA E",
COLUMN 65, "CONDICION",
COLUMN 80, "VENDEDOR",
COLUMN 113,"DOC.",
COLUMN 123, "FECHA FACTURA"
PRINT COLUMN 1, x.conduce USING "<<<<<",
COLUMN 14, x.orden using "&&&&&&",
COLUMN 25, x.fecha_orden using "dd/mm/yyyy",
COLUMN 38, pcotizacion USING "&&&&&&",
COLUMN 50, factura_e USING "&&&&&&",
# COLUMN 65, pcondicion.getitemtext(x.cond_pago) CLIPPED,
COLUMN 65, condicion.descrip[1,14],
COLUMN 80, "(",x.sec_vend using "&&&&",") ",x.nombre_vend[1,20],
COLUMN 113, documento_ref[1,10],
COLUMN 126, x.fecha_factura using "dd/mm/yyyy"
# PRINT COLUMN 65, condicion.descrip[15,30]
PRINT "======================================================================================================",
"================================="
LET tot_n = 0
LET tot_b = 0
LET tot_m = 0
PRINT COLUMN 5,"CODIGO",
COLUMN 21, "CANTIDAD",
COLUMN 37, "UNIDADES",
COLUMN 50, "DESCRIPCION",
COLUMN 102, "PRECIO",
COLUMN 114, "DESC.",
COLUMN 131, "TOTAL"
PRINT "======================================================================================================",
"================================="
BEFORE GROUP OF z.area
SELECT a.nombre_area INTO descripcion_area
FROM prtb00016 a
WHERE a.area_num=Z.area
PRINT "AREA: (",z.area USING "<<<",")",descripcion_area
SKIP 1 LINE
ON EVERY ROW
IF z.cantidad_1 <> 0 THEN
LET p_iptb01.factor_conv = 1
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 5, z.cod_n USING "&&&&","-",z.cod_grupo USING "&&&&","-",
z.cod_tipo USING "&&&&","-",z.cod_sec USING "&&&&&&",
COLUMN 13, z.cantidad_1 USING "###,###.#####"," ",z.unidad_med CLIPPED,
COLUMN 32, z.cantidad_1/p_iptb01.factor_conv USING "###,###",
COLUMN 50, z.descrip_esp CLIPPED,
COLUMN 98, y.precio USING "#,###,###.###",
COLUMN 114, z.cantidad_2 USING "###.###",
COLUMN 123, z.cantidad_1 USING "##,###,###.##"
END IF
DECLARE busca_d1 CURSOR FOR
SELECT a.etiqueta,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM iptb00025 a
WHERE a.area = z.area AND
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 AND
a.cod_mov = p_codigo AND
a.num_Doc = x.conduce
LET total_unidades = 0
FOREACH busca_d1 INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida
PRINT COLUMN 53,pcantidad USING "<<<,<<<"," ",etiqueta clipped," DE ",plado1 USING "<<.#####"," X ",
plado2 USING "<<.#####"," X ",plado3 USING "<<.#####"," = ",pmedida USING "<<<.#####"
LET total_unidades = total_unidades + pcantidad
END FOREACH
# IF total_unidades > 0 THEN
# PRINT COLUMN 53, "TOTAL UNIDADES ",total_unidades USING "<,<<<"
#END IF
ON LAST ROW
# Impresion de informaciones que pertenecen a facturas de exportacion
IF x.ventas = "2" THEN
IF x.desc_valor <> 0 THEN
PRINT COLUMN 77, x.porc_desc using "<<<.##"," %DISCOUNT",
COLUMN 122, x.desc_valor using "###,###,###.##"
END IF
PRINT COLUMN 122, "--------------"
PRINT COLUMN 78, "TOTAL F.O.B. PLANT, D.R.",
COLUMN 119, x.total_fact using "USD$###,###,###.##"
PRINT COLUMN 122, "______________"
PRINT COLUMN 122, "--------------"
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
IF x.ventas = "1" THEN
IF x.desc_valor <> 0 THEN
SKIP 1 LINE
PRINT COLUMN 78, "VALOR BRUTO ",
COLUMN 122, x.sub_total using "###,###,###.##"
PRINT COLUMN 78, "DESCUENTO",
COLUMN 122, x.desc_valor using "###,###,###.##"
END IF
#-> PRINT COLUMN 122, "--------------"
PRINT COLUMN 78, "SUB-TOTAL",
COLUMN 122, x.sub_total-x.desc_valor using "###,###,###.##"
IF x.porc_itbi > 0 THEN
PRINT COLUMN 78, x.porc_itbi using "##.##","%"," ITBIS",
COLUMN 122, x.itbi using "###,###,###.##"
END IF
PRINT COLUMN 122, "--------------"
PRINT COLUMN 78, "VALOR NETO ",
COLUMN 122, x.total_fact using "###,###,###.##"
PRINT COLUMN 122, "=============="
END IF
END IF
IF x.ventas = "3" THEN
SKIP 1 LINE
PRINT COLUMN 78, "VALOR BRUTO ",
COLUMN 122, x.sub_total using "###,###,###.##"
IF x.desc_valor <> 0 THEN
PRINT COLUMN 78, "DESCUENTO",
# COLUMN 93, x.desc_valor using "###,###,###.##"
COLUMN 122, x.desc_valor using "###,###,###.##"
END IF
#-> PRINT COLUMN 122, "--------------"
PRINT COLUMN 78, "SUB-TOTAL",
COLUMN 122, x.sub_total-x.desc_valor using "###,###,###.##"
IF x.porc_itbi > 0 THEN
PRINT COLUMN 61, porcentaje_n USING "###.##","%/ ",itbis_o USING "###.##","% ",
x.porc_itbi using "###.##","%"," ITBIS",
COLUMN 122, x.itbi using "###,###,###.##"
END IF
PRINT COLUMN 122, "--------------"
PRINT COLUMN 78, "VALOR NETO ",
COLUMN 118, x.total_fact using "USD$###,###,###.##"
PRINT COLUMN 122, "=============="
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, "OBSERVACIONES: ",UPSHIFT(obs1)
PRINT COLUMN 3, " ",UPSHIFT(obs2) CLIPPED
PRINT COLUMN 3, " ",UPSHIFT(obs3) CLIPPED
PRINT COLUMN 3, " ",UPSHIFT(obs4) CLIPPED
SKIP 3 LINES
PRINT COLUMN 4, "NOMBRE TRANSPORTISTA: ",x.nombre_tran, " ",
"CEDULA: ",p_cedula using "&&&&&&&&&",
" SERIE: ",p_serie using "&&&"
IF x.ventas = "2" THEN
PRINT COLUMN 4, "FACTURA COMERCIAL: ",x.placa_transp
ELSE
PRINT COLUMN 4, "PLACA DEL VEHICULO: ",x.placa_transp
END IF
{
SKIP 10 LINES
PRINT COLUMN 12, x.nombre CLIPPED
CALL convierte(x.total_fact)
PRINT COLUMN 05, valor_letras clipped,
COLUMN 72, x.total_fact using "###,###,###.##"
PRINT COLUMN 72, x.factura using "&&&&&"
PRINT COLUMN 10, condicion.dias USING "&&"
}
SKIP 3 LINES
PRINT COLUMN 4,"-------------------------------",20 SPACES,
"-------------------------------"
PRINT COLUMN 4," FACTURADO POR ",20 SPACES,
" REVISADO POR "
#SKIP 4 LINES
END REPORT
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 = "N"
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 tipoFact(ptipo_doc, codigo)
DEFINE ptipo_Doc CHAR(2),
codigo,tipo CHAR(5),
f_vencimiento DATE
DEFINE arrtipofact DYNAMIC ARRAY OF RECORD
codigodgii CHAR(14),
descripcion CHAR(80),
fecha_vencimiento DATE
END RECORD,
idz,numero_msg,curr1 SMALLINT
SET CONNECTION "SQL_E"
SELECT a.tipo_ncf,a.fecha_vencimiento
INTO tipo, f_vencimiento FROM vetb00071 a
WHERE a.tipo_doc = ptipo_doc and a.disponible = "S" AND a.sucid = 1 AND a.codigo_dgii = codigo
RETURN tipo,f_vencimiento
END FUNCTION
#--------------- PAGO AL CONTADO --------------------------------------------#
FUNCTION veprfu001()
DEFINE pagos RECORD
documento LIKE vetb00002.factura,
fecha_factura DATE,
factura LIKE vetb00002.factura,
tipo_cliente INT,
sec_cliente INT,
nombre VARCHAR(100),
direccion VARCHAR(100),
ciudad VARCHAR(100),
cheque_no LIKE cctb00001.num_cheque,
banco LIKE cctb00001.banco,
valor_cheque DECIMAL(12,2),
valor_efectivo DECIMAL (12,2),
monto_cr DEC(12,2),
valor_total DEC(12,2)
END RECORD
LET pagos.tipo_cliente = fact_gral.tipo_cliente
LET pagos.sec_cliente = fact_gral.sec_cliente
LET pagos.nombre = fact_gral.nombre
LET pagos.direccion = fact_gral.direccion
LET pagos.ciudad = NULL
LET pagos.fecha_factura = fact_gral.fecha_factura
LET pagos.valor_efectivo = fact_gral.total_fact
LET pagos.factura = fact_gral.factura
LET pagos.valor_cheque = 0
LET pagos.valor_efectivo = fact_gral.total_fact
LET pagos.valor_total = fact_gral.total_fact
LET pagos.monto_cr = 0
LET pagos.fecha_factura = TODAY
{ 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
LET fact_gral.factura = pagos.factura
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
LET pagos.valor_total = pagos.valor_cheque + pagos.monto_cr + pagos.valor_efectivo
LET pagos.valor_total = pagos.valor_cheque + pagos.monto_cr + pagos.valor_efectivo
{IF pagos.valor_total > fact_gral.total_fact THEN
CALL msg(168)
NEXT FIELD valor_cheque
END IF}
{IF pagos.valor_total IS NULL THEN
CALL msg(16)
NEXT FIELD valor_cheque
END IF}
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
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
DELETE FROM cctb00001 WHERE num_doc = pagos.documento AND tipo_doc = "PC"
LET pagos.valor_total = pagos.valor_total * -1
DISPLAY ",pagos.documento: ",pagos.documento
INSERT INTO cctb00001 (cod_cia,num_doc,tipo_doc,tipo_cliente,sec_cliente,
cod_emp,cod_emp_sec,fecha_orig,aplica_a,valor,
monto_desc,us_crea,fech_crea,costo,
valor_efectivo,valor_cheque,valor_tarjeta)
VALUES (fact_gral.cod_cia,pagos.documento, "PC",fact_gral.tipo_cliente,
fact_gral.sec_cliente,localidad,fact_gral.sec_vend, fact_gral.fecha_factura,pagos.factura,
pagos.valor_total,'0',usuarios,getdate(),'0',
pagos.valor_efectivo,pagos.valor_cheque,pagos.monto_cr)
UPDATE cctb00003 SET ult_recibo = pagos.documento,us_mod = usuarios,fech_mod = getdate()
WHERE tipo_doc = "PC"
END IF
END FUNCTION