1907 lines
74 KiB
Plaintext
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 S�ado 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
|
|
|