8038 lines
318 KiB
Plaintext
8038 lines
318 KiB
Plaintext
{
|
|
--------------------------------------------------------------------------
|
|
PROGRAMA : VEPRMT001
|
|
OBJETIVO : Este programa captura la factura comercial
|
|
REALIZADO POR : Ing. Juan Fco. Soto.
|
|
FECHA : Enero 12,1993.
|
|
--------------------------------------------------------------------------
|
|
}
|
|
IMPORT util
|
|
|
|
GLOBALS "veprgb000.4gl"
|
|
|
|
DEFINE
|
|
mes_chequeo, XidEntrada, xventas,tipo_cuenta SMALLINT,
|
|
tmpdireccion CHAR(80),
|
|
generaE, esNCf BOOLEAN,
|
|
controlExistencia VARCHAR(2),
|
|
ambiente VARCHAR(50),efectivo_pesos,ck_pesos,tarjeta_pesos,link_pesos,cr_pesos,monto_dep,xefectivo_pesos, xck_pesos, xlink_pesos, xcr_pesos DECIMAL(12,2)
|
|
|
|
DEFINE
|
|
porce,
|
|
valor_desc,
|
|
cant_prod,
|
|
cant_vend,
|
|
itbis_o,
|
|
xporciento,
|
|
credito,
|
|
monto_cotizacion,
|
|
total_cotizado,
|
|
monto_credito,
|
|
montoPermitido
|
|
DECIMAL(18, 2),
|
|
cantidadParaCalcular DEC(12, 5)
|
|
DEFINE
|
|
codigo_provincia, t_arr, pubicacion VARCHAR(100),
|
|
aplaca_transp, proforma VARCHAR(20),
|
|
documento_ref, accesso CHAR(15),
|
|
execede, exito2, ofertas, usequery BOOLEAN,
|
|
porcentaje_n DEC(8, 2),
|
|
fpago, xsecvend, factura_old, factura_xc, xncf_final INT,
|
|
impresion1, cliente_ncf, pcontroloutlet, pcontroloutlet2 CHAR(2),
|
|
xtipocta CHAR(2),
|
|
cuenta_cliente VARCHAR(28),
|
|
estadoFactura, pdocumento_ref VARCHAR(25),
|
|
num_rnc VARCHAR(11),
|
|
emailcliente VARCHAR(100),
|
|
pperfil SMALLINT,
|
|
fcrea, ccrea, fechafirma DATETIME YEAR TO SECOND,
|
|
pmoneda VARCHAR(2),
|
|
respuesta, xrespuesta STRING,
|
|
phash, tipodocumento VARCHAR(10),
|
|
xtrack RECORD
|
|
trackid STRING,
|
|
mensaje DYNAMIC ARRAY OF STRING
|
|
END RECORD,
|
|
att DYNAMIC ARRAY OF RECORD
|
|
col1 STRING,
|
|
col2 STRING
|
|
END RECORD,
|
|
ch_itbi VARCHAR(1),
|
|
id_provincia_dgii, id_municipio_dgii VARCHAR(20),
|
|
ditbis DYNAMIC ARRAY OF DEC(12, 2)
|
|
|
|
DEFINE documento_encabezado RECORD
|
|
tipoEcf,
|
|
eNcf,
|
|
indicadorMontoGravado,
|
|
tipoPago,
|
|
fechaLimitePago,
|
|
FormadePAgo,
|
|
montoPago,
|
|
FechaVencimientoSecuencia,
|
|
rncEmisor,
|
|
razonSocialEmisor,
|
|
direccionEmisor,
|
|
Municipio,
|
|
Provincia,
|
|
telefonoEmisor,
|
|
correoEmisor,
|
|
webSite,
|
|
codigoVendedor,
|
|
numeroFacturaInterna,
|
|
numeroPedidoInterno,
|
|
fechaEmision,
|
|
rncComprador,
|
|
razonSocialComprador,
|
|
montoGravadoTotal,
|
|
montoGravadoI1,
|
|
montoGravadoI2,
|
|
montoGravadoI3,
|
|
montoExento,
|
|
itbis1,
|
|
itbis2,
|
|
itbis3,
|
|
totalItbis,
|
|
totalItbis1,
|
|
totalItbis2,
|
|
totalItbis3,
|
|
montoTotal,
|
|
tipoIngreso,
|
|
terminoPago,
|
|
TipoCuentaPago,
|
|
NumeroCuentaPago,
|
|
IdentificadorExtranjero,
|
|
contactoComprador,
|
|
CorreoComprador,
|
|
DireccionComprador,
|
|
MunicipioComprador,
|
|
ProvinciaComprador,
|
|
FechaEntrega,
|
|
FechaOrdenCompra,
|
|
NumeroOrdenCompra,
|
|
CodigoInternoComprador,
|
|
nombreFile,
|
|
IndicadorNotaCredito,
|
|
NCFmodificado,
|
|
codigoModificacion,
|
|
fechaNCFmodificado
|
|
STRING
|
|
END RECORD
|
|
|
|
DEFINE pagos RECORD
|
|
documento LIKE vetb00002.factura,
|
|
cuenta_no VARCHAR(8),
|
|
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, monto_link DEC(12, 2),
|
|
plataforma INT,
|
|
comision DEC(12, 2),
|
|
valor_total DEC(12, 2)
|
|
END RECORD
|
|
|
|
# Tasa digitada en el formulario vefmwd013 (recibo al contado). Variable suelta, no va en el record pagos.
|
|
DEFINE tasa DEC(12, 2)
|
|
|
|
DEFINE prtb09 RECORD LIKE prtb00009.*
|
|
DEFINE
|
|
lleva_parcial, ch_servicios, carpa, ch_encabeza CHAR(1),
|
|
pcotizacion,
|
|
cuenta_arr,
|
|
xdocumento_almacen,
|
|
otro_num_recibo,
|
|
documento_oferta
|
|
INTEGER,
|
|
observacion CHAR(180),
|
|
obs1, obs2, obs3 CHAR(50),
|
|
obs4 CHAR(30),
|
|
descripcion_doc VARCHAR(100),
|
|
genera_ncf CHAR(3),
|
|
xdireccion_proyecto VARCHAR(100),
|
|
exito BOOLEAN,
|
|
pcodcia SMALLINT,
|
|
pprecio DYNAMIC ARRAY OF DECIMAL(12, 2),
|
|
xsec_vend INT,
|
|
valor_control_ncf, valor_desc_moneda DEC(12, 2)
|
|
|
|
DEFINE otrojson RECORD
|
|
codigo, estado, secuenciaUtilizada STRING,
|
|
mensajes DYNAMIC ARRAY OF RECORD
|
|
valor, codigo STRING
|
|
END RECORD
|
|
END RECORD
|
|
|
|
DEFINE otrojson_track RECORD
|
|
trackid STRING,
|
|
mensajes DYNAMIC ARRAY OF RECORD
|
|
valor, codigo STRING
|
|
END RECORD
|
|
END RECORD
|
|
DEFINE p32 RECORD
|
|
codigo, estado, mensajes, encf, secuenciautilizada STRING
|
|
END RECORD
|
|
|
|
DEFINE p32err RECORD
|
|
codigo, estado STRING,
|
|
mensajes DYNAMIC ARRAY OF RECORD
|
|
codigo, valor, encf, secuenciautilizada STRING
|
|
END RECORD
|
|
END RECORD
|
|
|
|
DEFINE otro_json1 RECORD
|
|
codigo, estado, secuenciautilizada STRING,
|
|
MENSAJES DYNAMIC ARRAY OF STRING
|
|
END RECORD
|
|
DEFINE
|
|
p RECORD
|
|
trackid STRING,
|
|
codigo, estado, rnc, encf, secuenciaUtilizada, fechaRecepcion STRING,
|
|
|
|
mensajes DYNAMIC ARRAY OF RECORD
|
|
valor, codigo STRING
|
|
END RECORD
|
|
END RECORD,
|
|
codigo STRING
|
|
|
|
DEFINE registroEntrada DYNAMIC ARRAY OF RECORD
|
|
referenciaEntrada VARCHAR(25),
|
|
fecha DATE,
|
|
tipo CHAR(1),
|
|
cuenta_no VARCHAR(8),
|
|
departamento INT,
|
|
detalle VARCHAR(100),
|
|
debito, credito DEC(12, 2)
|
|
END RECORD
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("veprmt01.txt")
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(4) RETURNING impresor
|
|
CALL ARG_VAL(5) RETURNING xcopia
|
|
|
|
CONNECT TO "marmotech" AS "IFMX" USER usuarios USING clave
|
|
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
|
|
|
|
SET ISOLATION TO DIRTY READ
|
|
SELECT a.sucid,
|
|
b.sucnombre,
|
|
b.direccion,
|
|
c.nombre_provincia,
|
|
b.telefono,
|
|
b.fax,
|
|
b.rnc,
|
|
a.bodega,
|
|
a.cod_perfil,
|
|
ISNULL(a.descuento2, 0),
|
|
c.id_dgii,
|
|
c.id_municipio_dgii
|
|
INTO localidad,
|
|
sucnombre,
|
|
p_companias.direccion,
|
|
p_companias.direccion1,
|
|
p_companias.telefono,
|
|
p_companias.fax,
|
|
p_companias.rnc,
|
|
fact_gral.bodega,
|
|
pperfil,
|
|
xporciento,
|
|
id_provincia_dgii,
|
|
id_municipio_dgii
|
|
FROM seg0001 a, sucursales b, vetb00020 c
|
|
WHERE a.usuario = usuarios
|
|
AND a.sucid = b.sucid
|
|
AND b.localidad = c.cod_provincia
|
|
|
|
IF localidad IS NULL THEN
|
|
CALL fgl_winmessage(
|
|
"INFO",
|
|
"USUARIO NO TIENE LOCALIDAD ASIGNADA, COMUNIQUESE CON INFORMATICA",
|
|
"INFO")
|
|
EXIT PROGRAM
|
|
END IF
|
|
# VERIFICA SI EL USUARIO TIENE PERMISO A LAS OFERTAS
|
|
SELECT a.documento
|
|
INTO documento_oferta
|
|
FROM seg0010 a, vetb00032 b
|
|
WHERE a.usuario = usuarios
|
|
AND a.documento = b.documento
|
|
AND GETDATE() BETWEEN b.fecha_inicial AND b.fecha_final
|
|
IF STATUS = NOTFOUND THEN
|
|
|
|
LET ofertas = FALSE
|
|
ELSE
|
|
LET ofertas = TRUE
|
|
|
|
END IF
|
|
|
|
OPTIONS FORM LINE 2, ERROR LINE 24, COMMENT LINE 23, PROMPT LINE 22
|
|
|
|
CALL ui.Interface.loadStyles("formularios")
|
|
OPEN FORM vefmmt001 FROM "vefmmt001"
|
|
DISPLAY FORM vefmmt001
|
|
|
|
SELECT a.nombre, a.email
|
|
INTO p_companias.nombre, p_companias.email
|
|
FROM companias a
|
|
|
|
DISPLAY p_companias.nombre TO compania
|
|
DISPLAY BY NAME sucnombre
|
|
MENU
|
|
ON ACTION nuevo
|
|
CLEAR FORM
|
|
LET usequery = FALSE
|
|
LET ambiente = NULL
|
|
CALL ambiente() RETURNING ambiente
|
|
CALL veprmt001()
|
|
|
|
ON ACTION buscar
|
|
|
|
CLEAR FORM
|
|
LET ambiente = NULL
|
|
CALL ambiente() RETURNING ambiente
|
|
CALL veprmf001()
|
|
ON ACTION anular ATTRIBUTE(TEXT = "Anular", IMAGE = "garbage")
|
|
LET mes_chequeo = MONTH(TODAY)
|
|
SET CONNECTION "MSSQL"
|
|
CALL seg000(usuarios, pperfil, 'anular.veprmt002') RETURNING accesso
|
|
DISPLAY "usuario ", usuarios, " ", pperfil
|
|
IF accesso = "SI" THEN
|
|
|
|
CALL anular()
|
|
ELSE
|
|
CALL msg(503)
|
|
END IF
|
|
ON ACTION salir
|
|
EXIT MENU
|
|
END MENU
|
|
END MAIN
|
|
|
|
FUNCTION veprmt001()
|
|
DEFINE documento_Detalle DYNAMIC ARRAY OF RECORD
|
|
indicadorFacturacion,
|
|
nombreItem,
|
|
indicadorBienoServicio,
|
|
cantidadItem,
|
|
precioUnitarioItem,
|
|
montoItem
|
|
STRING,
|
|
DescripcionItem VARCHAR(1000),
|
|
NumeroLinea INT
|
|
END RECORD
|
|
|
|
DEFINE valor, valor1, t_valor, balance DECIMAL(12, 2)
|
|
DEFINE
|
|
tipo_fact, p_bonif, ano_act, ano_fe, cod_fact, pcod_transp, psec_transp
|
|
SMALLINT,
|
|
ch_balance CHAR(14)
|
|
DEFINE hoy DATE
|
|
DEFINE
|
|
hice, primera CHAR(1),
|
|
opt1, opt CHAR(7)
|
|
DEFINE tipo_f CHAR(2)
|
|
|
|
DEFINE tot_porc1, porc_desc, tot_porc DECIMAL(8, 3)
|
|
|
|
LET hoy = TODAY
|
|
|
|
DISPLAY hoy USING "dd/mm/yyyy" AT 1, 68 ATTRIBUTE(BLUE)
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
LABEL exito:
|
|
INITIALIZE fact_gral.*, primera TO NULL
|
|
INITIALIZE documento_encabezado.* TO NULL
|
|
LET pdocumento_ref = NULL
|
|
LET porc_desc = 0
|
|
LET descrip1 = NULL
|
|
LET descrip2 = NULL
|
|
LET p_bonif = NULL
|
|
LET fact_gral.cod_cia = 1
|
|
LET ch_fecha = TODAY USING "dd/mm/yyyy"
|
|
LET fact_gral.fecha_factura = ch_fecha
|
|
|
|
LET tot_porc1 = 0
|
|
LET fact_gral.itbi = 0
|
|
LET fact_gral.sub_total = 0
|
|
LET fact_gral.total_fact = 0
|
|
LET fact_gral.desc_valor = 0
|
|
LET tot_porc = 0
|
|
DISPLAY BY NAME descrip1
|
|
|
|
CALL fact_det.clear()
|
|
|
|
LABEL vuelve:
|
|
LET descrip1 = NULL
|
|
LET descrip2 = NULL
|
|
LET descrip3 = NULL
|
|
LET p_bonif = NULL
|
|
LET tot_porc1 = 0
|
|
LET t_valor = 0
|
|
LET fact_gral.cond_pago = 4
|
|
LET fact_gral.porc_itbi = NULL
|
|
LET fact_gral.prima_us = NULL
|
|
DISPLAY BY NAME fact_gral.porc_itbi, fact_gral.prima_us, descrip1
|
|
LET hice = "S"
|
|
LET h = 1
|
|
|
|
LABEL otravez:
|
|
INITIALIZE detalle TO NULL
|
|
|
|
LABEL regresa:
|
|
|
|
LET fact_gral.itbi = 0
|
|
LET fact_gral.sub_total = 0
|
|
LET fact_gral.total_fact = 0
|
|
LET fact_gral.desc_valor = 0
|
|
LET ch_itbi = "N"
|
|
LET ch_servicios = "N"
|
|
LET ch_encabeza = "S"
|
|
LET ch_balance = NULL
|
|
LET descrip1 = NULL
|
|
LET factura_e = NULL
|
|
LET pdocumento_ref = NULL
|
|
|
|
INPUT BY NAME impresion1,
|
|
ch_itbi,
|
|
ch_encabeza,
|
|
ch_servicios,
|
|
proforma,
|
|
descripcion_doc,
|
|
pcontroloutlet,
|
|
genera_ncf
|
|
BEFORE INPUT
|
|
LET proforma = "CONDUCE"
|
|
LET descripcion_doc = NULL
|
|
LET pcontroloutlet = 'NO'
|
|
LET ch_itbi = "S"
|
|
DISPLAY BY NAME ch_itbi
|
|
SET CONNECTION "MSSQL"
|
|
SELECT a.controlOutlet,
|
|
b.num_emp,
|
|
b.tipo_cliente,
|
|
b.sec_cliente,
|
|
a.controloutlet2,
|
|
b.bodega
|
|
INTO pcontroloutlet,
|
|
xsecvend,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
pcontroloutlet2,
|
|
fact_gral.bodega
|
|
FROM seg0003 a, seg0001 b
|
|
WHERE a.usuario = usuarios AND a.usuario = b.usuario
|
|
IF pcontroloutlet = 'SI' THEN
|
|
LET fact_gral.cod_transp = 12
|
|
LET fact_gral.sec_transp = 8
|
|
LET ch_encabeza = 'N'
|
|
IF pcontroloutlet2 = 'SI' THEN
|
|
LET ch_encabeza = 'S'
|
|
# LET fact_gral.sec_vend = xsecvend
|
|
CALL buscavend()
|
|
END IF
|
|
DISPLAY BY NAME ch_encabeza
|
|
|
|
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 BY NAME fact_gral.nombre_tran, pcontroloutlet
|
|
|
|
END IF
|
|
|
|
IF pcontroloutlet2 = "SI" THEN
|
|
|
|
# LET fact_gral.sec_vend = xsecvend
|
|
# LET codigodgii = '32'
|
|
CALL buscavend()
|
|
END IF
|
|
AFTER INPUT
|
|
IF INT_FLAG THEN
|
|
LET opt =
|
|
FGL_WINQUESTION(
|
|
"PREGUNTA",
|
|
"Desea Salir del Programa?",
|
|
"yes",
|
|
"Yes|no",
|
|
"question",
|
|
0)
|
|
IF UPSHIFT(opt) = "YES" THEN
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
|
|
IF pcontroloutlet <> "SI" AND pcontroloutlet2 = 'SI' THEN
|
|
|
|
IF ch_itbi IS NULL THEN
|
|
ERROR "DEBE ESPECIFICAR PARAMETRO ITBIS"
|
|
CONTINUE INPUT
|
|
END IF
|
|
IF ch_encabeza IS NULL THEN
|
|
ERROR "DEBE ESPECIFICAR PARAMETRO ENCABEZADO"
|
|
CONTINUE INPUT
|
|
END IF
|
|
END IF
|
|
# IF ch_servicios IS NULL THEN
|
|
# ERROR "DEBE ESPECIFICAR PARAMETRO SERVICIOS"
|
|
# CONTINUE INPUT
|
|
# END IF
|
|
|
|
IF proforma = "PROFORMA" THEN
|
|
LET genera_ncf = 'NO'
|
|
DISPLAY BY NAME genera_ncf
|
|
# IF descripcion_doc IS NULL THEN
|
|
# NEXT FIELD descripcion_doc
|
|
# END IF
|
|
ELSE
|
|
EXIT INPUT
|
|
END IF
|
|
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
IF pcontroloutlet2 <> "SI" THEN
|
|
LET codigodgii = NULL
|
|
LET descripcion_ncf = NULL
|
|
END IF
|
|
LET num_rnc = NULL
|
|
LET fpago = NULL
|
|
INPUT BY NAME fact_gral.*,
|
|
cliente_bas.telefono,
|
|
codigodgii,
|
|
factura_e,
|
|
pdocumento_ref,
|
|
num_rnc,
|
|
fpago,
|
|
xtipocta,
|
|
cuenta_cliente
|
|
WITHOUT DEFAULTS
|
|
ATTRIBUTE(BLUE)
|
|
ON ACTION buscaconduce ATTRIBUTE(TEXT = "Conduces", IMAGE = "find")
|
|
|
|
IF pcontroloutlet <> "SI" OR pcontroloutlet2 <> 'SI' THEN
|
|
|
|
CALL conduceSinfacturar(
|
|
'06/01/2020')
|
|
RETURNING fact_gral.conduce,
|
|
fact_gral.bodega,
|
|
p_codigo,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.nombre,
|
|
fact_gral.ventas,
|
|
fact_gral.orden
|
|
CALL datoscliente()
|
|
DISPLAY BY NAME fact_gral.conduce,
|
|
fact_gral.bodega,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.nombre,
|
|
fact_gral.ventas,
|
|
fact_gral.orden
|
|
NEXT FIELD ventas
|
|
END IF
|
|
BEFORE INPUT
|
|
SET CONNECTION "MSSQL"
|
|
|
|
CALL bodegas('1')
|
|
LET fpago = 8
|
|
LET xtipocta = "OT"
|
|
LET fact_gral.direccion = NULL
|
|
LET fact_gral.cod_cia = 1
|
|
LET compania = p_companias.nombre CLIPPED
|
|
LET fact_gral.cond_pago = 4
|
|
LET fact_gral.ventas = 1
|
|
# LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
CALL formaspago()
|
|
|
|
LET pventas = ui.ComboBox.forName("formonly.ventas")
|
|
CALL cventas()
|
|
|
|
SELECT a.dias, a.descrip, a.codigo_dgii, a.titulo_dgii
|
|
INTO condicion.dias,
|
|
condicion.descrip,
|
|
documento_encabezado.tipoPago
|
|
FROM vetb00012 a
|
|
WHERE a.cond_pago = fact_gral.cond_pago
|
|
|
|
DISPLAY BY NAME fact_gral.cod_cia,
|
|
fact_gral.cond_pago,
|
|
compania,
|
|
fact_gral.ventas,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente
|
|
|
|
LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias
|
|
|
|
DISPLAY BY NAME p_fecha_ven ATTRIBUTE(RED)
|
|
IF pcontroloutlet2 = "SI" THEN
|
|
LET genera_ncf = 'YES'
|
|
|
|
SELECT a.sec_vend, RTRIM(b.nom1_emp) + ' ' + RTRIM(b.apell1_emp)
|
|
INTO fact_gral.sec_vend, fact_gral.nombre_vend
|
|
FROM seg0000 a, adtb00003 b
|
|
WHERE a.usuario = usuarios AND a.sec_vend = b.num_emp
|
|
|
|
DISPLAY BY NAME fact_gral.sec_vend, fact_gral.nombre_vend
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
IF pcontroloutlet <> 'SI' AND pcontroloutlet2 <> 'SI' THEN
|
|
|
|
SELECT a.cod_zona
|
|
INTO fact_gral.zona
|
|
FROM intb00009 a
|
|
WHERE a.cod_bodega = fact_gral.bodega
|
|
|
|
# LET fact_gral.tipo_cliente=19
|
|
# LET fact_gral.sec_cliente=943
|
|
SELECT a.nombre,
|
|
a.limite_credito,
|
|
a.cod_provincia,
|
|
a.telefono,
|
|
a.zona_postal,
|
|
a.num_rnc
|
|
INTO fact_gral.nombre,
|
|
credito,
|
|
codigo_provincia,
|
|
cliente_bas.telefono,
|
|
tipodocumento,
|
|
num_rnc
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
|
|
SELECT UNIQUE ISNULL(descrip, 'NO TIENE')
|
|
INTO descrip1
|
|
FROM vetb00008
|
|
WHERE cod_zona = CAST(fact_gral.zona AS SMALLINT)
|
|
|
|
DISPLAY BY NAME fact_gral.nombre,
|
|
fact_gral.zona,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
descrip1,
|
|
fact_gral.bodega,
|
|
descrip1
|
|
|
|
LET ch_servicios = 'N'
|
|
CALL conduceSinfacturar(
|
|
'06/01/2020')
|
|
RETURNING fact_gral.conduce,
|
|
fact_gral.bodega,
|
|
p_codigo,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.nombre,
|
|
fact_gral.ventas,
|
|
fact_gral.orden
|
|
CALL datoscliente()
|
|
DISPLAY BY NAME fact_gral.conduce,
|
|
fact_gral.bodega,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.nombre,
|
|
fact_gral.ventas,
|
|
fact_gral.orden
|
|
NEXT FIELD ventas
|
|
END IF
|
|
AFTER FIELD bodega
|
|
IF pcontroloutlet = "SI" OR pcontroloutlet2 = '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
|
|
|
|
SELECT UNIQUE ISNULL(descrip, 'NO TIENE')
|
|
INTO descrip1
|
|
FROM vetb00008
|
|
WHERE cod_zona = CAST(fact_gral.zona AS SMALLINT)
|
|
DISPLAY BY NAME fact_gral.zona, descrip1
|
|
END IF
|
|
AFTER FIELD codigodgii
|
|
IF codigodgii IS NOT NULL THEN
|
|
SET CONNECTION "IFMX"
|
|
IF ch_itbi = "S" THEN
|
|
SELECT UNIQUE a.itbis
|
|
INTO ch_itbi
|
|
FROM vetb00071 a
|
|
WHERE a.tipo_doc = "FT"
|
|
AND a.codigo_dgii = codigodgii
|
|
AND a.disponible = "S"
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 391
|
|
CALL msg(numero_msg)
|
|
EXIT PROGRAM
|
|
END IF
|
|
END IF
|
|
END IF
|
|
IF ch_itbi = 'N' THEN
|
|
LET fact_gral.porc_itbi = 0
|
|
END IF
|
|
DISPLAY BY NAME fact_gral.porc_itbi
|
|
SET CONNECTION "MSSQL"
|
|
|
|
{
|
|
ON KEY (CONTROL-E)
|
|
CASE
|
|
WHEN INFIELD(tipo_cliente)
|
|
CALL veprmt101()
|
|
LET fact_gral.tipo_cliente = cliente_bas.tipo_cliente
|
|
LET fact_gral.sec_cliente = cliente_bas.sec_cliente
|
|
LET fact_gral.nombre = cliente_bas.nombre CLIPPED
|
|
LET credito = cliente_bas.limite_credito
|
|
LET codigo_provincia = cliente_bas.cod_provincia
|
|
DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
fact_gral.nombre
|
|
WHEN INFIELD(sec_cliente)
|
|
CALL veprmt101()
|
|
LET fact_gral.tipo_cliente = cliente_bas.tipo_cliente
|
|
LET fact_gral.sec_cliente = cliente_bas.sec_cliente
|
|
LET fact_gral.nombre = cliente_bas.nombre CLIPPED
|
|
LET credito = cliente_bas.limite_credito
|
|
LET codigo_provincia = cliente_bas.cod_provincia
|
|
DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
fact_gral.nombre
|
|
END CASE
|
|
|
|
ON KEY (CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD(cod_tarifa)
|
|
CALL tarifas()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_tarifa
|
|
END IF
|
|
LET descrip5 = descrip6[1,15] clipped
|
|
LET descrip6 = descrip6[16,30] clipped
|
|
DISPLAY BY NAME fact_gral.cod_tarifa,descrip6 ATTRIBUTE (BOLD)
|
|
NEXT FIELD cod_tarifa
|
|
|
|
WHEN INFIELD(zona)
|
|
IF fact_gral.ventas = "1" THEN
|
|
CALL busca_zona1()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD zona
|
|
END IF
|
|
ELSE
|
|
CALL busca_pais()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD zona
|
|
END IF
|
|
END IF
|
|
|
|
LET p_cod = fact_gral.zona
|
|
LET fact_gral.zona = p_cod using "&&&"
|
|
DISPLAY BY NAME fact_gral.zona,descrip1 ATTRIBUTE (BOLD)
|
|
NEXT FIELD fecha_factura
|
|
|
|
WHEN INFIELD(cond_pago)
|
|
CALL condiciones()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cond_pago
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.cond_pago ATTRIBUTE(blue)
|
|
DISPLAY BY NAME fact_gral.descrip ATTRIBUTE(blue)
|
|
NEXT FIELD orden
|
|
|
|
WHEN INFIELD(sec_vend)
|
|
CALL consulta_empleados()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD sec_vend
|
|
END IF
|
|
|
|
LET fact_gral.sec_vend = transportista.sec_transp
|
|
LET fact_gral.nombre_vend = descrip6
|
|
|
|
DISPLAY BY NAME fact_gral.sec_vend ATTRIBUTE (blue)
|
|
DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (blue)
|
|
|
|
WHEN INFIELD(cod_transp)
|
|
CALL cons_transp()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cons_transp
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.cod_transp ATTRIBUTE (blue)
|
|
DISPLAY BY NAME fact_gral.sec_transp ATTRIBUTE (blue)
|
|
DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (blue)
|
|
|
|
WHEN INFIELD(sec_transp)
|
|
CALL cons_transp()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cons_transp
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.cod_transp ATTRIBUTE (blue)
|
|
DISPLAY BY NAME fact_gral.sec_transp ATTRIBUTE (blue)
|
|
DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (blue)
|
|
|
|
END CASE
|
|
}
|
|
|
|
AFTER FIELD conduce
|
|
|
|
# IF ch_servicios = "N" THEN
|
|
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
|
|
|
|
IF fact_gral.conduce IS NOT NULL THEN
|
|
SELECT UNIQUE a.cod_sp,
|
|
a.cod_sp_sec,
|
|
a.num_oc,
|
|
CONVERT(CHAR(10), a.fecha, 103),
|
|
a.cod_transp,
|
|
a.sec_transp,
|
|
a.placa
|
|
INTO fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.orden,
|
|
fact_gral.fecha_conduce,
|
|
fact_gral.cod_transp,
|
|
fact_gral.sec_transp,
|
|
fact_gral.placa_transp
|
|
FROM iptb00006 a
|
|
WHERE a.num_doc = fact_gral.conduce
|
|
AND a.cod_mov = p_codigo
|
|
AND a.status_t IS NULL
|
|
AND a.bodega = fact_gral.bodega
|
|
AND a.fecha > "01/01/2008"
|
|
AND a.num_oc = fact_gral.orden
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD conduce
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.orden,
|
|
fact_gral.cod_transp,
|
|
fact_gral.sec_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
|
|
|
|
# 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, d.id_dgii, d.id_municipio_dgii
|
|
INTO fact_gral.ciudad,
|
|
documento_encabezado.Provincia,
|
|
documento_encabezado.Municipio
|
|
FROM vetb00020 d
|
|
WHERE d.cod_provincia = codigo_provincia
|
|
|
|
# LET fact_gral.direccion = descrip1 clipped,descrip2 clipped,", ",
|
|
# descrip3 clipped
|
|
|
|
SELECT UNIQUE descrip
|
|
INTO descrip1
|
|
FROM vetb00008
|
|
WHERE cod_zona = CAST(fact_gral.zona AS SMALLINT)
|
|
|
|
# BUSCA EL VENDEDOR
|
|
SELECT a.sec_vend, a.nombre_file
|
|
INTO fact_gral.sec_vend,
|
|
documento_encabezado.NumeroOrdenCompra
|
|
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
|
|
DISPLAY BY NAME fact_gral.sec_vend
|
|
|
|
DISPLAY BY NAME fact_gral.zona,
|
|
fact_gral.direccion,
|
|
fact_gral.nombre,
|
|
fact_gral.ciudad,
|
|
descrip1,
|
|
cliente_bas.num_rnc
|
|
ATTRIBUTE(BLUE)
|
|
|
|
# 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.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 395
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD conduce
|
|
END IF
|
|
|
|
END IF
|
|
# END IF
|
|
BEFORE FIELD ventas
|
|
IF pcontroloutlet = "SI" THEN
|
|
LET fact_gral.ventas = 1
|
|
END IF
|
|
|
|
LET pventas = ui.ComboBox.forName("formonly.ventas")
|
|
CALL cventas()
|
|
|
|
AFTER FIELD cod_cia
|
|
IF fact_gral.cod_cia IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_cia
|
|
END IF
|
|
|
|
IF fact_gral.cod_cia = 1 THEN
|
|
LET compania = p_companias.nombre CLIPPED
|
|
END IF
|
|
|
|
DISPLAY BY NAME compania ATTRIBUTE(BLUE)
|
|
|
|
AFTER FIELD ventas
|
|
IF fact_gral.ventas IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
# BUSCA EL CODIGO DEL MOVIMIENTO
|
|
SELECT UNIQUE a.cod_mov
|
|
INTO p_codigo
|
|
FROM vetb00060 a
|
|
WHERE a.ventas = fact_gral.ventas
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
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
|
|
# BUSCA LA PRIMA PARA LA MONEDA
|
|
SELECT a.tasa
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00061 a
|
|
WHERE a.ventas = fact_gral.ventas
|
|
|
|
IF fact_gral.prima_us IS NULL THEN
|
|
CALL msg(87)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
|
|
{SE COLOCO EN COMENTARIO PORQUE SE ESTA BUSCANDO POR MONEDA SELECT prima
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00019 WHERE disponible = "S"
|
|
}
|
|
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.porc_desc,
|
|
fact_gral.prima_us,
|
|
fact_gral.porc_itbi
|
|
ATTRIBUTE(BOLD)
|
|
|
|
DISPLAY BY NAME descrip1 ATTRIBUTE(BOLD)
|
|
|
|
DISPLAY BY NAME descrip1 ATTRIBUTE(BLUE)
|
|
|
|
AFTER FIELD tipo_cliente
|
|
IF fact_gral.tipo_cliente = 23 OR fact_Gral.tipo_cliente = 24 THEN
|
|
LET proforma = "PROFORMA"
|
|
ELSE
|
|
LET proforma = "CONDUCE"
|
|
END IF
|
|
DISPLAY BY NAME proforma
|
|
|
|
AFTER FIELD nombre
|
|
IF fact_gral.nombre IS NOT NULL AND pcontroloutlet2 = "SI" THEN
|
|
|
|
# CALL buscacliente(fact_gral.nombre,fact_gral.tipo_cliente,fact_gral.sec_cliente)
|
|
# RETURNING fact_gral.nombre,fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
# fact_gral.direccion,fact_gral.ciudad,fact_gral.sec_vend,fact_gral.nombre_vend, exito1
|
|
|
|
IF pcontroloutlet2 = 'SI' THEN
|
|
LET fact_gral.sec_vend = xsecvend
|
|
CALL buscavend()
|
|
END IF
|
|
{ IF exito1 = FALSE THEN
|
|
|
|
CALL msg(3)
|
|
IF pcontroloutlet2 = 'SI' THEN
|
|
SET CONNECTION "MSSQL"
|
|
IF fact_gral.sec_vend IS NULL OR fact_gral.sec_vend = 0 THEN
|
|
SELECT ISNULL(a.sec_vend,0) INTO xsec_vend FROM seg0000 a
|
|
WHERE a.usuario = usuarios
|
|
|
|
LET fact_gral.sec_vend = xsec_vend
|
|
END IF
|
|
|
|
CALL crearcliente(num_rnc,fact_gral.tipo_cliente,fact_gral.sec_vend)
|
|
RETURNING fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre,fact_gral.direccion,fact_gral.ciudad,
|
|
cliente_bas.telefono,fact_gral.zona
|
|
SET CONNECTION "IFMX"
|
|
END IF
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
}
|
|
DISPLAY BY NAME fact_gral.nombre,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.direccion,
|
|
fact_gral.ciudad,
|
|
fact_gral.sec_vend,
|
|
fact_gral.nombre_vend
|
|
NEXT FIELD direccion
|
|
END IF
|
|
AFTER FIELD direccion
|
|
LET tmpdireccion = NULL
|
|
LET tmpdireccion = fact_gral.direccion CLIPPED
|
|
|
|
AFTER FIELD sec_cliente
|
|
IF fact_gral.sec_cliente IS NULL THEN
|
|
IF pcontroloutlet2 <> "SI" OR pcontroloutlet <> 'SI' THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_cliente
|
|
END IF
|
|
ELSE
|
|
|
|
IF fact_gral.fecha_factura IS NULL THEN
|
|
LET fact_gral.fecha_factura = TODAY
|
|
DISPLAY BY NAME fact_gral.fecha_factura
|
|
END IF
|
|
|
|
LET p_fechas = fact_gral.fecha_factura
|
|
LET hoy = fact_gral.fecha_factura
|
|
|
|
CALL prd(fact_gral.fecha_factura, usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha_factura
|
|
END IF
|
|
|
|
-- IF pcontroloutlet <> "SI" THEN
|
|
|
|
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,
|
|
num_rnc
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
# IF fact_gral.tipo_cliente IS NOT NULL AND fact_gral.sec_cliente IS NOT NULL THEN
|
|
# IF pcontroloutlet2 = 'SI' THEN
|
|
# CALL crearcliente(num_rnc,fact_gral.tipo_cliente,fact_gral.sec_vend)
|
|
# RETURNING fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre,fact_gral.direccion,fact_gral.ciudad,
|
|
# cliente_bas.telefono,fact_gral.zona
|
|
# END IF
|
|
# END IF
|
|
# NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
{ SE COLOCO EN COMENTARIO PORQUE SE ESTA OBTENIENDO DE LA TABLA VETB00050
|
|
FECHA MODIFICACION 21/05/2018
|
|
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
|
|
|
|
}
|
|
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
|
|
IF pcotizacion IS NOT NULL THEN
|
|
LET xdireccion_proyecto = NULL
|
|
SELECT a.nombre_cliente,
|
|
a.direccion_cliente,
|
|
a.direccion_proyecto,
|
|
a.rnc,
|
|
a.total_bruto
|
|
INTO fact_gral.nombre,
|
|
fact_gral.direccion,
|
|
xdireccion_proyecto,
|
|
num_rnc,
|
|
monto_cotizacion
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = pcotizacion
|
|
END IF
|
|
SELECT d.nombre_provincia, d.id_dgii, d.id_municipio_dgii
|
|
INTO fact_gral.ciudad,
|
|
documento_encabezado.ProvinciaComprador,
|
|
documento_encabezado.MunicipioComprador
|
|
FROM vetb00020 d
|
|
WHERE d.cod_provincia = codigo_provincia
|
|
|
|
IF pcotizacion IS NULL THEN
|
|
IF fact_gral.direccion IS NULL THEN
|
|
LET fact_gral.direccion = NULL
|
|
SELECT UNIQUE RTRIM(a.calle) || ' ' || RTRIM(a.casa_num) || ' '
|
|
|| RTRIM(a.urbanizacion)
|
|
|| ' '
|
|
|| RTRIM(a.barrio)
|
|
INTO fact_gral.direccion
|
|
FROM vetb00005 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_Gral.sec_cliente
|
|
END IF
|
|
END IF
|
|
DISPLAY BY NAME fact_gral.nombre,
|
|
num_rnc,
|
|
cliente_bas.telefono,
|
|
fact_gral.ciudad,
|
|
fact_gral.direccion
|
|
#CONTROL TIPO DE CLIENTES MONEDA NCF
|
|
IF ch_itbi = 'S' THEN
|
|
SET CONNECTION "MSSQL"
|
|
SELECT UNIQUE a.codigo_dgii
|
|
INTO codigodgii
|
|
FROM vetb00060 a
|
|
WHERE a.ventas = fact_Gral.ventas
|
|
AND a.tipo_cliente = fact_gral.tipo_cliente
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 386
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
END IF
|
|
IF codigodgii IS NOT NULL THEN
|
|
SET CONNECTION "IFMX"
|
|
DISPLAY "codigodgii ", codigodgii
|
|
|
|
SELECT UNIQUE a.itbis
|
|
INTO ch_itbi
|
|
FROM vetb00071 a
|
|
WHERE a.tipo_doc = "FT"
|
|
AND a.codigo_dgii = codigodgii
|
|
AND a.disponible = "S"
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 391
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
END IF
|
|
IF ch_itbi = 'N' THEN
|
|
SET CONNECTION "MSSQL"
|
|
LET fact_gral.porc_itbi = 0
|
|
END IF
|
|
DISPLAY BY NAME fact_gral.porc_itbi
|
|
#NCF
|
|
IF genera_ncf = "YES" THEN
|
|
SET CONNECTION "MSSQL"
|
|
|
|
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
|
|
|
|
SET CONNECTION "IFMX"
|
|
|
|
LET codigodgii = NULL
|
|
LET descripcion = NULL
|
|
|
|
CALL btipo_fact(
|
|
localidad, 'FT')
|
|
RETURNING codigodgii, descripcion, fecha_vencimiento
|
|
|
|
LET int_flag = FALSE
|
|
DISPLAY BY NAME codigodgii
|
|
DISPLAY descripcion TO descripcion_ncf
|
|
DISPLAY BY NAME fecha_vencimiento
|
|
SET CONNECTION "MSSQL"
|
|
NEXT FIELD sec_vend
|
|
|
|
END IF
|
|
END IF
|
|
|
|
SET CONNECTION "MSSQL"
|
|
|
|
# LET fact_gral.direccion = descrip1 clipped,descrip2 clipped,", ",
|
|
# descrip3 clipped
|
|
|
|
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
|
|
IF pcontroloutlet2 <> "SI" THEN
|
|
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
|
|
|
|
DISPLAY BY NAME fact_gral.sec_vend,
|
|
fact_gral.nombre,
|
|
codigodgii
|
|
-- END IF FIN OUTLET
|
|
|
|
DISPLAY BY NAME fact_gral.zona,
|
|
fact_gral.direccion,
|
|
fact_gral.nombre,
|
|
fact_gral.ciudad,
|
|
descrip1,
|
|
num_rnc
|
|
ATTRIBUTE(BLUE)
|
|
|
|
SELECT SUM(@valor + @monto_desc)
|
|
INTO valor
|
|
FROM cctb00001
|
|
WHERE @fecha_orig <= fact_gral.fecha_factura
|
|
AND @tipo_cliente = fact_gral.tipo_cliente
|
|
AND @sec_cliente = fact_gral.sec_cliente
|
|
AND @status_t IS NULL
|
|
AND tipo_doc NOT IN ("DE", "PC", "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 BY NAME ch_balance ATTRIBUTE(BOLD)
|
|
END IF
|
|
END IF
|
|
|
|
BEFORE FIELD prima_us
|
|
IF fact_gral.ventas = "1" THEN
|
|
NEXT FIELD cond_pago
|
|
END IF
|
|
|
|
AFTER FIELD sec_vend
|
|
IF fact_gral.sec_vend IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_vend
|
|
END IF
|
|
|
|
IF fact_gral.cond_pago != 1 OR fact_gral.sec_vend != 8888 THEN
|
|
SELECT nom1_emp, apell1_emp
|
|
INTO descrip5, descrip6
|
|
FROM adtb00003
|
|
WHERE num_emp = fact_gral.sec_vend
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_vend
|
|
END IF
|
|
|
|
LET fact_gral.nombre_vend =
|
|
descrip5 CLIPPED, " ", descrip6 CLIPPED
|
|
DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE(BLUE)
|
|
|
|
# Verifica que el vendedor venda al cliente de la factura
|
|
{
|
|
IF pcontroloutlet <> "SI" THEN
|
|
IF fact_gral.sec_vend != 8888 THEN
|
|
SELECT unique * FROM vetb00028
|
|
WHERE sec_vend = fact_gral.sec_vend AND
|
|
tipo_cliente = fact_gral.tipo_cliente AND
|
|
sec_cliente = fact_gral.sec_cliente
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 119
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_vend
|
|
END IF
|
|
END IF
|
|
END IF}
|
|
END IF
|
|
--------------------------------------------------------------------------------------------
|
|
AFTER FIELD cod_transp
|
|
IF fact_gral.cod_transp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
# NEXT FIELD cod_transp
|
|
END IF
|
|
|
|
AFTER FIELD sec_transp
|
|
IF fact_gral.sec_transp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD sec_transp
|
|
ELSE
|
|
IF pcontroloutlet <> "SI" THEN
|
|
LET fact_gral.nombre_tran = NULL
|
|
LET p_cedula = NULL
|
|
LET p_serie = NULL
|
|
SELECT a.nombre, a.cedula
|
|
INTO fact_gral.nombre_tran, p_cedula
|
|
FROM vetb00015 a
|
|
WHERE a.cod_transp = fact_gral.cod_transp
|
|
AND a.sec_transp = fact_gral.sec_transp
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS < 0 THEN
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
ELSE
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_transp
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE(BLUE)
|
|
END IF
|
|
END IF
|
|
LET pcod_transp = fact_gral.cod_transp
|
|
LET psec_transp = fact_gral.sec_transp
|
|
AFTER FIELD cod_tarifa
|
|
IF fact_gral.cod_tarifa IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD cod_tarifa
|
|
ELSE
|
|
LET descrip6 = NULL
|
|
SELECT descrip
|
|
INTO descrip6
|
|
FROM vetb00023
|
|
WHERE cod_tarifa = fact_gral.cod_tarifa AND status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_tarifa
|
|
END IF
|
|
LET descrip5 = descrip6[1, 15] CLIPPED
|
|
LET descrip6 = descrip6[16, 30] CLIPPED
|
|
DISPLAY BY NAME descrip5, descrip6 ATTRIBUTE(BOLD)
|
|
END IF
|
|
|
|
BEFORE FIELD fecha_factura
|
|
LET fact_gral.fecha_factura = hoy
|
|
DISPLAY BY NAME fact_gral.fecha_factura
|
|
|
|
{ ES PARA PONER LA FACTURA COMERCIAL EN EL CAMPO PLACA BEFORE FIELD fecha_embarque
|
|
IF fact_gral.ventas = "1" or fact_gral.ventas = "3" THEN
|
|
NEXT FIELD placa_transp
|
|
END IF
|
|
}
|
|
AFTER FIELD fecha_embarque
|
|
IF fact_Gral.ventas = "2" THEN
|
|
IF fact_gral.fecha_embarque IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_embarque
|
|
END IF
|
|
END IF
|
|
|
|
# No permite que el usuario introduzca un ano que no corresponda al actual
|
|
|
|
LET ano_act = YEAR(TODAY)
|
|
LET ano_fe = YEAR(fact_gral.fecha_embarque)
|
|
|
|
IF fact_gral.fecha_embarque > fact_gral.fecha_factura THEN
|
|
LET numero_msg = 100
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_embarque
|
|
END IF
|
|
{POR EL ASUNTO DE LA FACTURA COMERCIAL IF fact_gral.ventas = "2" THEN
|
|
EXIT INPUT
|
|
END IF
|
|
}
|
|
AFTER FIELD orden
|
|
SET CONNECTION "MSSQL"
|
|
IF pcontroloutlet <> "SI" AND pcontroloutlet2 <> "SI" THEN
|
|
IF fact_gral.orden IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD orden
|
|
END IF
|
|
END IF
|
|
IF fact_gral.orden IS NOT NULL THEN
|
|
LET pubicacion = NULL
|
|
LET documento_ref = NULL
|
|
DISPLAY "orden ", fact_gral.orden
|
|
SELECT UNIQUE CONVERT(char(10), a.fecha_oc, 103),
|
|
a.ubicacion,
|
|
a.nombre_file,
|
|
a.cond_pago,
|
|
b.descrip,
|
|
b.dias,
|
|
a.cotizacion_no,
|
|
a.tipo_cliente,
|
|
a.sec_cliente
|
|
INTO fact_gral.fecha_orden,
|
|
pubicacion,
|
|
documento_ref,
|
|
fact_gral.cond_pago,
|
|
condicion.descrip,
|
|
condicion.dias,
|
|
pcotizacion,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente
|
|
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
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD orden
|
|
END IF
|
|
|
|
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,
|
|
num_rnc
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
|
|
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
|
|
|
|
DISPLAY BY NAME p_fecha_ven ATTRIBUTE(RED)
|
|
|
|
DISPLAY BY NAME fact_gral.fecha_orden,
|
|
documento_ref,
|
|
fact_gral.cond_pago,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.nombre,
|
|
fact_gral.zona
|
|
|
|
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
|
|
BEFORE FIELD placa_transp
|
|
# LET fact_Gral.placa_transp = aplaca_transp
|
|
LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias
|
|
DISPLAY BY NAME fact_gral.placa_transp
|
|
DISPLAY BY NAME p_fecha_ven ATTRIBUTE(RED)
|
|
|
|
AFTER FIELD placa_transp
|
|
IF fact_gral.placa_transp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
LET aplaca_transp = fact_gral.placa_transp
|
|
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 genera_ncf = "YES" AND codigodgii IS NULL THEN
|
|
SELECT a.paga_itbis, a.idEntrada
|
|
INTO ch_itbi, XidEntrada
|
|
FROM vetb00060 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
IF ch_itbi = 'S' THEN
|
|
CALL msg(16)
|
|
NEXT FIELD codigodgii
|
|
END IF
|
|
END IF
|
|
IF ch_itbi = 'S' THEN
|
|
SELECT a.itbis
|
|
INTO ch_itbi
|
|
FROM vetb00071 a
|
|
WHERE a.codigo_dgii = codigodgii AND a.disponible = 'S'
|
|
IF fact_gral.fecha_factura IS NULL THEN
|
|
LET fact_gral.fecha_factura = TODAY
|
|
DISPLAY BY NAME fact_gral.fecha_factura
|
|
END IF
|
|
END IF
|
|
DISPLAY BY NAME ch_itbi
|
|
IF fact_gral.fecha_factura > TODAY THEN
|
|
CALL msg(189)
|
|
NEXT FIELD fecha_factura
|
|
END IF
|
|
LET p_fechas = fact_gral.fecha_factura
|
|
LET hoy = fact_gral.fecha_factura
|
|
|
|
CALL prd(fact_gral.fecha_factura, usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha_factura
|
|
END IF
|
|
IF fact_gral.ventas IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
IF pcontroloutlet2 = 'SI' THEN
|
|
{ IF fact_gral.tipo_cliente = 19 OR fact_gral.tipo_cliente = 18 THEN
|
|
CALL fgl_winmessage("INFO","TIPO CLIENTE INVALIDO","INFO")
|
|
NEXT FIELD tipo_cliente
|
|
END IF}
|
|
|
|
IF codigodgii IS NULL AND ch_itbi = 'S' THEN
|
|
NEXT FIELD sec_cliente
|
|
END IF
|
|
# LET fact_gral.sec_vend = xsecvend
|
|
CALL buscavend()
|
|
SET CONNECTION "MSSQL"
|
|
SELECT UNIQUE a.cod_mov
|
|
INTO p_codigo
|
|
FROM vetb00060 a
|
|
WHERE a.ventas = fact_gral.ventas
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
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
|
|
|
|
# BUSCA LA PRIMA PARA LA MONEDA
|
|
SELECT a.tasa
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00061 a
|
|
WHERE a.ventas = fact_gral.ventas
|
|
|
|
DISPLAY BY NAME fact_gral.prima_us
|
|
IF fact_gral.prima_us IS NULL THEN
|
|
CALL msg(87)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
|
|
{ SELECT prima
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00019 WHERE disponible = "S"}
|
|
END IF
|
|
|
|
END IF
|
|
# CONTROL LOCALIDAD VENDEDOR
|
|
SET CONNECTION "MSSQL"
|
|
|
|
SELECT a.sec_vend
|
|
FROM vetb00084 a
|
|
WHERE a.sec_vend = fact_gral.sec_vend
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage(
|
|
"INFO",
|
|
"VENDEDOR NO TIENE LOCALIDAD ASIGNADA, COMUNIQUESE CON ADM SISTEMA",
|
|
"INFO")
|
|
CONTINUE INPUT
|
|
END IF
|
|
CALL buscavend()
|
|
IF fact_gral.orden IS NOT NULL THEN
|
|
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
|
|
END IF
|
|
DISPLAY BY NAME pcotizacion
|
|
# 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.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 395
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD conduce
|
|
END IF
|
|
|
|
IF ch_itbi = 'N' THEN
|
|
LET fact_gral.porc_itbi = 0
|
|
END IF
|
|
DISPLAY BY NAME fact_gral.porc_itbi
|
|
SET CONNECTION "MSSQL"
|
|
IF pcontroloutlet <> "SI" OR pcontroloutlet2 <> 'SI' THEN
|
|
|
|
IF fact_gral.orden IS NOT NULL THEN
|
|
LET pubicacion = NULL
|
|
LET documento_ref = NULL
|
|
SELECT UNIQUE CONVERT(char(10), a.fecha_oc, 103),
|
|
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
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD orden
|
|
END IF
|
|
END IF
|
|
|
|
IF ch_itbi = 'N' THEN
|
|
LET fact_gral.porc_itbi = 0
|
|
END IF
|
|
|
|
END IF
|
|
#PORCENTAJE NEGOCIACION
|
|
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
|
|
|
|
IF ch_itbi = "S" THEN
|
|
SELECT a.itbi, a.porciento
|
|
INTO fact_gral.porc_itbi, porce
|
|
FROM vetb00019 a
|
|
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
|
|
# BUSCA LA PRIMA PARA LA MONEDA
|
|
SELECT a.tasa
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00061 a
|
|
WHERE a.ventas = fact_gral.ventas
|
|
DISPLAY BY NAME fact_gral.prima_us
|
|
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
|
|
|
|
DISPLAY BY NAME fact_gral.prima_us, fact_gral.porc_itbi
|
|
ATTRIBUTE(BOLD)
|
|
|
|
DISPLAY BY NAME descrip1 ATTRIBUTE(BOLD)
|
|
|
|
IF fact_gral.sec_cliente IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
IF fact_gral.orden IS NULL
|
|
AND (pcontroloutlet <> "SI" AND pcontroloutlet2 <> "SI") THEN
|
|
CALL msg(16)
|
|
NEXT FIELD orden
|
|
END IF
|
|
#DIRECCION
|
|
|
|
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
|
|
|
|
IF pcotizacion IS NOT NULL THEN
|
|
LET xdireccion_proyecto = NULL
|
|
SELECT a.nombre_cliente,
|
|
a.direccion_cliente,
|
|
a.direccion_proyecto,
|
|
a.rnc,
|
|
a.email,
|
|
a.total_bruto
|
|
INTO fact_gral.nombre,
|
|
fact_gral.direccion,
|
|
xdireccion_proyecto,
|
|
num_rnc,
|
|
emailcliente,
|
|
monto_cotizacion
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = pcotizacion
|
|
END IF
|
|
SELECT d.nombre_provincia
|
|
INTO fact_gral.ciudad
|
|
FROM vetb00020 d
|
|
WHERE d.cod_provincia = codigo_provincia
|
|
IF pcontroloutlet2 = "SI" THEN
|
|
# LET fact_gral.sec_vend = xsecvend
|
|
CALL buscavend()
|
|
END IF
|
|
IF documento_encabezado.tipoPago = '1' AND fpago IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD fpago
|
|
END IF
|
|
IF documento_encabezado.tipoPago = '1' AND xtipocta IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD xtipocta
|
|
END IF
|
|
IF fpago = 3 AND cuenta_cliente IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD cuenta_cliente
|
|
END IF
|
|
IF genera_ncf = "YES" THEN
|
|
SELECT a.itbis
|
|
INTO ch_itbi
|
|
FROM vetb00071 a
|
|
WHERE a.codigo_dgii = codigodgii AND a.disponible = 'S'
|
|
# BUSCA EL TIPO DE DOCUMENTO DEL CLIENTE
|
|
SELECT a.num_rnc, a.zona_postal
|
|
INTO num_rnc, tipodocumento
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
|
|
IF pcotizacion IS NOT NULL THEN
|
|
SELECT a.rnc
|
|
INTO num_rnc
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = pcotizacion
|
|
END IF
|
|
IF tipodocumento = '2' THEN
|
|
IF LENGTH(num_rnc) != 11 THEN
|
|
CALL msg(77)
|
|
NEXT FIELD num_rnc
|
|
END IF
|
|
|
|
END IF
|
|
END IF
|
|
# BUSCA LA PRIMA PARA LA MONEDA
|
|
SELECT a.tasa
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00061 a
|
|
WHERE a.ventas = fact_gral.ventas
|
|
|
|
IF fact_gral.prima_us IS NULL THEN
|
|
CALL msg(87)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
# ESTO ES TEMPORAL, EN CASO QUE EL USUARIO DEJE LA VARIABLE ENCENDIDA
|
|
# LET genera_ncf = "NO"
|
|
DISPLAY BY NAME genera_ncf
|
|
# DIRECCION CLIENTE
|
|
IF pcotizacion IS NULL THEN
|
|
|
|
IF fact_gral.direccion IS NULL THEN
|
|
LET fact_gral.direccion = NULL
|
|
|
|
SELECT UNIQUE RTRIM(a.calle) || ' ' || RTRIM(a.casa_num) || ' '
|
|
|| RTRIM(a.urbanizacion)
|
|
|| ' '
|
|
|| RTRIM(a.barrio)
|
|
INTO fact_gral.direccion
|
|
FROM vetb00005 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_Gral.sec_cliente
|
|
END IF
|
|
|
|
END IF
|
|
IF pcotizacion IS NOT NULL THEN
|
|
LET xdireccion_proyecto = NULL
|
|
SELECT a.nombre_cliente,
|
|
a.direccion_cliente,
|
|
a.direccion_proyecto,
|
|
a.rnc,
|
|
a.cond_pago,
|
|
a.total_bruto
|
|
INTO fact_gral.nombre,
|
|
fact_gral.direccion,
|
|
xdireccion_proyecto,
|
|
num_rnc,
|
|
fact_Gral.cond_pago,
|
|
monto_cotizacion
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = pcotizacion
|
|
ELSE
|
|
IF fact_gral.direccion IS NULL THEN
|
|
SELECT UNIQUE 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
|
|
LET fact_Gral.direccion =
|
|
descrip1 CLIPPED,
|
|
" ",
|
|
descrip2 CLIPPED,
|
|
", ",
|
|
descrip3 CLIPPED
|
|
END IF
|
|
END IF
|
|
|
|
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
|
|
|
|
DISPLAY BY NAME p_fecha_ven, fact_gral.direccion ATTRIBUTE(RED)
|
|
EXIT INPUT
|
|
END INPUT
|
|
CALL detalles()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET fact_gral.itbi = 0
|
|
LET fact_gral.sub_total = 0
|
|
LET fact_gral.total_fact = 0
|
|
LET fact_gral.desc_valor = 0
|
|
LET tot_porc = 0
|
|
{ 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 }
|
|
CALL fact_det.clear()
|
|
|
|
LABEL alla:
|
|
IF pcontroloutlet2 = "SI" THEN
|
|
IF fact_gral.orden IS NOT NULL THEN
|
|
LET usequery = TRUE
|
|
LET selec =
|
|
"
|
|
SELECT DISTINCT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,
|
|
a.precio,a.descuento,a.id_kit
|
|
FROM prtb00013 AS a
|
|
INNER JOIN prtb00012 as d on
|
|
a.num_oc = d.num_oc AND d.status_t IS NULL
|
|
LEFT OUTER JOIN vetb00050 x ON d.cotizacion_no =x.cotizacion_no
|
|
LEFT OUTER JOIN vetb00051 x1 ON x1.cotizacion_no = x.cotizacion_no AND
|
|
x1.area =a.area AND
|
|
x1.cod_n = a.cod_n AND
|
|
x1.cod_grupo = a.cod_grupo AND
|
|
x1.cod_tipo = a.cod_tipo AND
|
|
x1.cod_Sec = a.cod_Sec
|
|
WHERE a.num_oc = ", fact_gral.orden
|
|
END IF
|
|
END IF
|
|
IF pcontroloutlet <> "SI" AND pcontroloutlet2 <> "SI" THEN
|
|
LET usequery = TRUE
|
|
LET selec =
|
|
"
|
|
SELECT DISTINCT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.cantidad_2,
|
|
a.precio,a.descuento,a.id_kit
|
|
FROM prtb00013 AS a
|
|
INNER JOIN iptb00006 b ON b.num_oc = a.num_oc and
|
|
b.num_doc = ",
|
|
fact_gral.conduce,
|
|
" and
|
|
b.cod_mov =",
|
|
p_codigo,
|
|
" AND
|
|
b.bodega =",
|
|
fact_gral.bodega,
|
|
" AND
|
|
a.area = b.area AND
|
|
a.cod_n = b.cod_n and
|
|
a.cod_grupo = b.cod_grupo and
|
|
a.cod_tipo = b.cod_tipo and
|
|
a.cod_Sec = b.cod_Sec AND
|
|
a.num_oc =",
|
|
fact_gral.orden,
|
|
" AND
|
|
b.fecha > '01/01/2008'
|
|
INNER JOIN prtb00012 as d on
|
|
a.num_oc = d.num_oc AND d.status_t IS NULL
|
|
LEFT OUTER JOIN vetb00050 x ON d.cotizacion_no =x.cotizacion_no
|
|
LEFT OUTER JOIN vetb00051 x1 ON x1.cotizacion_no = x.cotizacion_no AND
|
|
x1.area =a.area AND
|
|
x1.cod_n = a.cod_n AND
|
|
x1.cod_grupo = a.cod_grupo AND
|
|
x1.cod_tipo = a.cod_tipo AND
|
|
x1.cod_Sec = a.cod_Sec
|
|
ORDER BY a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec
|
|
"
|
|
|
|
END IF
|
|
IF usequery THEN
|
|
PREPARE ordenes FROM selec
|
|
DECLARE buscame CURSOR FOR ordenes
|
|
OPEN buscame
|
|
|
|
LET idx = 1
|
|
FOREACH buscame
|
|
INTO fact_det[idx].area,
|
|
fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,
|
|
fact_det[idx].cantidad,
|
|
fact_det[idx].precio,
|
|
fact_det[idx].cantidad_2,
|
|
fact_det[idx].kit_id
|
|
IF fact_Det[idx].cantidad < 0 THEN
|
|
LET fact_det[idx].cantidad = fact_det[idx].cantidad * -1
|
|
END IF
|
|
LET pprecio[idx] = fact_det[idx].precio
|
|
|
|
# LE COLOQUE EN COMENTARIO PORQUE LA TASA LA ESTOY CALCULANDO EN LA COTIZACION veprmt049
|
|
|
|
{ IF fact_gral.ventas=1 AND fact_det[idx].kit_id IS NOT NULL THEN
|
|
|
|
LET fact_det[idx].precio = fact_det[idx].precio * fact_gral.prima_us
|
|
END IF
|
|
}
|
|
LET idx = idx + 1
|
|
{ IF idx = 10 THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
}
|
|
END FOREACH
|
|
END IF
|
|
CALL set_count(idx - 1)
|
|
INPUT ARRAY fact_det WITHOUT DEFAULTS FROM s_fact.*
|
|
ON ACTION DELETE
|
|
LET curr = arr_curr()
|
|
CALL pprecio.deleteElement(curr)
|
|
CALL fact_Det.deleteElement(curr)
|
|
BEFORE INPUT
|
|
DISPLAY BY NAME fact_gral.direccion
|
|
CALL dialog.setCellAttributes(att)
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
CALL control_cotizacion(
|
|
fact_det[idx].area,
|
|
fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,
|
|
fact_det[idx].cantidad,
|
|
fact_gral.orden)
|
|
RETURNING xverdad,
|
|
fact_det[idx].cantidad_orden,
|
|
fact_det[idx].pendiente,
|
|
fact_det[idx].facturada
|
|
|
|
LET fact_det[idx].pendiente =
|
|
fact_det[idx].cantidad_orden - fact_det[idx].facturada
|
|
IF xverdad THEN
|
|
DISPLAY fact_det[idx].cantidad
|
|
TO s_fact[idx].cantidad
|
|
ATTRIBUTE(RED)
|
|
DISPLAY fact_det[idx].cantidad_orden
|
|
TO s_fact[idx].cantidad_orden
|
|
DISPLAY fact_det[idx].pendiente TO s_fact[idx].pendiente
|
|
DISPLAY fact_det[idx].facturada
|
|
TO s_fact[idx].facturada
|
|
ATTRIBUTE(BLACK)
|
|
ELSE
|
|
DISPLAY fact_det[idx].cantidad
|
|
TO s_fact[idx].cantidad
|
|
ATTRIBUTE(BLACK)
|
|
DISPLAY fact_det[idx].cantidad_orden
|
|
TO s_fact[idx].cantidad_orden
|
|
ATTRIBUTE(BLACK)
|
|
DISPLAY fact_det[idx].pendiente
|
|
TO s_fact[idx].pendiente
|
|
ATTRIBUTE(BLACK)
|
|
DISPLAY fact_det[idx].facturada
|
|
TO s_fact[idx].facturada
|
|
ATTRIBUTE(BLACK)
|
|
|
|
END IF
|
|
END FOR
|
|
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
AFTER ROW
|
|
LET t_arr = arr_count()
|
|
CALL after_all()
|
|
|
|
ON ACTION bcodigo
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
CALL busca_pt()
|
|
RETURNING fact_det[curr].cod_n,
|
|
fact_det[curr].cod_grupo,
|
|
fact_det[curr].cod_tipo,
|
|
fact_det[curr].cod_sec,
|
|
fact_det[curr].descrip_esp
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
{ LET fact_det[curr].cod_n = pterminado.cod_n
|
|
LET fact_det[curr].cod_grupo = pterminado.cod_grupo
|
|
LET fact_det[curr].cod_tipo = pterminado.cod_tipo
|
|
LET fact_det[curr].cod_sec = pterminado.cod_sec
|
|
|
|
CALL repite_codigo()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
}
|
|
LET verdad = NULL
|
|
CALL precios()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
SELECT a.descrip_esp, a.unidad_med, ISNULL(SUM(b.cantidad_2), 0)
|
|
INTO fact_det[curr].descrip_esp,
|
|
fact_det[curr].unidad_med,
|
|
p_existencia
|
|
FROM iptb00002 a, OUTER iptb00006 b
|
|
WHERE a.cod_n = fact_det[curr].cod_n
|
|
AND a.cod_grupo = fact_det[curr].cod_grupo
|
|
AND a.cod_tipo = fact_det[curr].cod_tipo
|
|
AND a.cod_sec = fact_det[curr].cod_sec
|
|
AND b.cod_n = a.cod_n
|
|
AND b.cod_grupo = a.cod_grupo
|
|
AND b.cod_tipo = a.cod_tipo
|
|
AND b.cod_sec = a.cod_sec
|
|
AND a.status_t IS NULL
|
|
AND b.status_t IS NULL
|
|
GROUP BY a.descrip_esp, a.unidad_med
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n
|
|
DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo
|
|
DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo
|
|
DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec
|
|
DISPLAY fact_det[curr].descrip_esp TO s_fact[scr_l].descrip_esp
|
|
DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med
|
|
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
|
|
|
|
AFTER FIELD cod_sec
|
|
|
|
IF fact_det[curr].cod_n IS NOT NULL
|
|
AND fact_det[curr].cod_grupo IS NOT NULL
|
|
AND fact_det[curr].cod_tipo IS NOT NULL
|
|
AND fact_det[curr].cod_sec IS NOT NULL THEN
|
|
|
|
# Busca la descripcion del producto con su existencia
|
|
LET fact_det[curr].descrip_esp = NULL
|
|
LET fact_det[curr].unidad_med = NULL
|
|
|
|
LET p_existencia = 0
|
|
|
|
SELECT a.descrip_esp,
|
|
a.unidad_med,
|
|
ISNULL(SUM(b.cantidad_2), 0),
|
|
a.tipoproducto,
|
|
a.control_existencia
|
|
INTO fact_det[curr].descrip_esp,
|
|
fact_det[curr].unidad_med,
|
|
p_existencia,
|
|
documento_detalle[curr].indicadorBienoServicio,
|
|
controlExistencia
|
|
FROM iptb00002 a
|
|
LEFT OUTER
|
|
JOIN iptb00006 b
|
|
ON (a.cod_n = b.cod_n
|
|
AND a.cod_grupo = b.cod_grupo
|
|
AND a.cod_tipo = b.cod_tipo
|
|
AND a.cod_sec = b.cod_sec)
|
|
AND b.bodega = fact_gral.bodega
|
|
AND b.status_t IS NULL
|
|
WHERE (a.cod_n = fact_det[curr].cod_n
|
|
AND a.cod_grupo = fact_det[curr].cod_grupo
|
|
AND a.cod_tipo = fact_det[curr].cod_tipo
|
|
AND a.cod_sec = fact_det[curr].cod_sec)
|
|
AND a.status_t IS NULL
|
|
GROUP BY a.descrip_esp,
|
|
a.unidad_med,
|
|
a.tipoproducto,
|
|
a.control_existencia
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
LET verdad = NULL
|
|
IF pcontroloutlet = "SI" THEN
|
|
SELECT ISNULL(a.precio, 0)
|
|
INTO fact_det[curr].precio
|
|
FROM vetb00025 a
|
|
INNER
|
|
JOIN seg0009 b
|
|
ON b.usuario = usuarios AND b.cod_lista = a.cod_lista
|
|
WHERE a.cod_n = fact_det[curr].cod_n
|
|
AND a.cod_grupo = fact_det[curr].cod_grupo
|
|
AND a.cod_tipo = fact_det[curr].cod_tipo
|
|
AND a.cod_sec = fact_det[curr].cod_sec
|
|
AND a.ventas = 1
|
|
AND a.status_t IS NULL
|
|
END IF
|
|
|
|
IF pcontroloutlet2 = "SI" THEN
|
|
|
|
IF ofertas THEN
|
|
|
|
CALL buscaOferta(
|
|
fact_det[curr].cod_n,
|
|
fact_det[curr].cod_grupo,
|
|
fact_det[curr].cod_tipo,
|
|
fact_det[curr].cod_sec,
|
|
documento_oferta)
|
|
RETURNING fact_det[curr].precio,
|
|
fact_det[curr].cantidad_2
|
|
|
|
LET pprecio[curr] = fact_det[curr].precio
|
|
|
|
ELSE
|
|
SELECT ISNULL(a.precio, 0)
|
|
INTO fact_det[curr].precio
|
|
FROM vetb00025 a, seg0009 b
|
|
WHERE a.cod_n = fact_det[curr].cod_n
|
|
AND a.cod_grupo = fact_det[curr].cod_grupo
|
|
AND a.cod_tipo = fact_det[curr].cod_tipo
|
|
AND a.cod_sec = fact_det[curr].cod_sec
|
|
AND a.cod_lista = b.cod_lista
|
|
AND a.ventas = fact_gral.ventas
|
|
AND b.usuario = usuarios
|
|
AND a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(85)
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
END IF
|
|
DISPLAY fact_det[curr].descrip_esp,
|
|
fact_det[curr].unidad_med,
|
|
fact_det[curr].precio,
|
|
fact_Det[curr].cantidad_2
|
|
TO s_fact[scr_l].descrip_esp,
|
|
s_fact[scr_l].unidad_med,
|
|
s_fact[scr_l].precio,
|
|
s_fact[scr_l].cantidad_2
|
|
|
|
END IF
|
|
DISPLAY fact_det[curr].descrip_esp,
|
|
fact_det[curr].unidad_med,
|
|
fact_det[curr].precio
|
|
TO s_fact[scr_l].descrip_esp,
|
|
s_fact[scr_l].unidad_med,
|
|
s_fact[scr_l].precio
|
|
AFTER FIELD precio
|
|
IF fact_det[curr].precio IS NOT NULL THEN
|
|
|
|
IF fact_det[curr].precio < pprecio[curr] THEN
|
|
CALL msg(1013)
|
|
NEXT FIELD precio
|
|
END IF
|
|
END IF
|
|
BEFORE FIELD cantidad
|
|
LET curr = arr_curr()
|
|
LET cantidadParaCalcular =
|
|
fact_det[curr].cantidad USING "###,###,###.#####"
|
|
LET fact_det[curr].cantidad = cantidadParaCalcular
|
|
DISPLAY fact_det[curr].cantidad TO s_fact[scr_l].cantidad
|
|
|
|
AFTER FIELD cantidad
|
|
IF fact_det[curr].cod_n IS NOT NULL
|
|
AND fact_det[curr].cod_grupo IS NOT NULL
|
|
AND fact_det[curr].cod_tipo IS NOT NULL
|
|
AND fact_det[curr].cod_sec IS NOT NULL THEN
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
IF pcontroloutlet = "SI" OR pcontroloutlet2 = "SI" THEN
|
|
IF controlExistencia = 'SI' THEN
|
|
IF fact_det[curr].cantidad > p_existencia THEN
|
|
CALL msg(30)
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
END IF
|
|
IF pcontroloutlet2 = 'SI' THEN
|
|
NEXT FIELD kit_id
|
|
END IF
|
|
IF pcontroloutlet = "SI" THEN
|
|
NEXT FIELD cantidad_2
|
|
END IF
|
|
END IF
|
|
END IF
|
|
BEFORE FIELD precio
|
|
IF pcontroloutlet = "SI" THEN
|
|
NEXT FIELD cantidad_2
|
|
END IF
|
|
AFTER FIELD cantidad_2 #-> Aqui se digita el % de descto. al producto.
|
|
IF fact_det[curr].cantidad_2 IS NULL THEN
|
|
LET fact_det[curr].cantidad_2 = 0
|
|
END IF
|
|
|
|
IF fact_det[curr].precio IS NULL THEN
|
|
LET fact_det[curr].precio = 0
|
|
CALL msg(16)
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
|
|
IF fact_det[curr].cantidad IS NOT NULL THEN
|
|
IF pcontroloutlet2 = "SI" OR pcontroloutlet = 'SI' THEN
|
|
IF fact_det[curr].cantidad_2 > xporciento THEN
|
|
LET fact_det[curr].cantidad_2 = 0
|
|
CALL msg(145)
|
|
NEXT FIELD cantidad_2
|
|
END IF
|
|
END IF
|
|
|
|
LET fact_det[curr].monto_fact =
|
|
fact_det[curr].cantidad * fact_det[curr].precio
|
|
|
|
IF fact_det[curr].cantidad_2
|
|
> 0 THEN #-> calcula el valor en descuento para cada articulo vg
|
|
LET valor_desc = 0
|
|
LET valor_desc =
|
|
fact_det[curr].monto_fact
|
|
* (fact_det[curr].cantidad_2 / 100)
|
|
LET fact_gral.desc_valor = fact_gral.desc_valor + valor_desc
|
|
LET fact_det[curr].monto_fact =
|
|
fact_det[curr].monto_fact - valor_desc
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY fact_det[curr].monto_fact TO s_fact[scr_l].monto_fact
|
|
|
|
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_det[curr].cod_n IS NOT NULL
|
|
AND fact_det[curr].cod_grupo IS NOT NULL
|
|
AND fact_det[curr].cod_tipo IS NOT NULL
|
|
AND fact_det[curr].cod_sec IS NOT NULL THEN
|
|
|
|
# Busca la descripcion del producto con su existencia
|
|
LET fact_det[curr].descrip_esp = NULL
|
|
LET fact_det[curr].unidad_med = NULL
|
|
LET p_existencia = 0
|
|
SELECT a.descrip_esp, a.unidad_med, SUM(b.cantidad_2)
|
|
INTO fact_det[curr].descrip_esp,
|
|
fact_det[curr].unidad_med,
|
|
p_existencia
|
|
FROM iptb00002 a, OUTER iptb00006 b
|
|
WHERE a.cod_n = fact_det[curr].cod_n
|
|
AND a.cod_grupo = fact_det[curr].cod_grupo
|
|
AND a.cod_tipo = fact_det[curr].cod_tipo
|
|
AND a.cod_sec = fact_det[curr].cod_sec
|
|
AND b.cod_n = a.cod_n
|
|
AND b.cod_grupo = a.cod_grupo
|
|
AND b.cod_tipo = a.cod_tipo
|
|
AND b.cod_sec = a.cod_sec
|
|
AND a.status_t IS NULL
|
|
AND b.status_t IS NULL
|
|
GROUP BY a.descrip_esp, a.unidad_med
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
#CONTROL FACTURA MONTO MAYOR A COTIZADO
|
|
IF pcotizacion IS NOT NULL THEN
|
|
SELECT ISNULL(SUM(a.sub_total), 0)
|
|
INTO total_cotizado
|
|
FROM vetb00002 a
|
|
WHERE a.cotizacion_no = pcotizacion AND a.status_t IS NULL
|
|
DISPLAY "cotizacion: ", pcotizacion
|
|
SELECT ISNULL(SUM(a.valor * - 1), 0)
|
|
INTO monto_credito
|
|
FROM cctb00001 a
|
|
WHERE a.documento_ref = pcotizacion
|
|
AND a.tipo_doc IN ('NC', 'OC')
|
|
AND a.status_t IS NULL
|
|
LET montoPermitido =
|
|
total_cotizado + fact_gral.sub_total - monto_credito
|
|
DISPLAY BY NAME total_cotizado,
|
|
monto_credito,
|
|
monto_cotizacion,
|
|
montoPermitido
|
|
IF montoPermitido > monto_cotizacion THEN
|
|
CALL msg(1680)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
|
|
LET opt =
|
|
FGL_WINQUESTION(
|
|
"PREGUNTA",
|
|
"La Informacion Esta Correcta?",
|
|
"yes",
|
|
"yes|no",
|
|
"question",
|
|
0)
|
|
{ PROMPT "Las Informaciones Estan Correctas (S/N)" FOR CHAR opt}
|
|
LET cuenta_arr = arr_count()
|
|
LET opt = UPSHIFT(opt)
|
|
|
|
IF opt = "YES" THEN
|
|
LABEL aqui:
|
|
LET verdad = "S"
|
|
|
|
LABEL anterior2:
|
|
|
|
IF fact_gral.ventas = "1" THEN
|
|
LET fact_gral.prima_us = 1
|
|
END IF
|
|
LET lleva_parcial = "N"
|
|
LET opt1 = "YES"
|
|
#-----------------------------------------------------------------------------------------
|
|
# CONSOLIDADO
|
|
|
|
SET CONNECTION "MSSQL"
|
|
|
|
SELECT a.ult_factura
|
|
INTO fact_gral.factura
|
|
FROM vetb00001 a
|
|
WHERE a.sucid = localidad
|
|
|
|
IF fact_gral.factura IS NULL THEN
|
|
LET fact_gral.factura = 1
|
|
INSERT INTO vetb00001(
|
|
ult_factura, us_crea, fech_crea, sucid)
|
|
VALUES(fact_gral.factura,
|
|
usuarios,
|
|
getdate(),
|
|
localidad)
|
|
ELSE
|
|
LET fact_gral.factura = fact_gral.factura + 1
|
|
END IF
|
|
DISPLAY fact_Gral.factura
|
|
|
|
DISPLAY BY NAME descrip1 ATTRIBUTE(BLUE)
|
|
|
|
LABEL brinca:
|
|
# Actualiza la tabla de datos generales de la factura
|
|
IF fact_gral.factura IS NOT NULL THEN
|
|
|
|
BEGIN WORK
|
|
# Actualiza la tabla control de la numeracion de la factura
|
|
|
|
UPDATE vetb00001
|
|
SET ult_factura = fact_gral.factura,
|
|
us_crea = SUSER_SNAME(),
|
|
fech_crea = GETDATE()
|
|
WHERE sucid = localidad
|
|
|
|
# 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.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
ROLLBACK WORK
|
|
LET numero_msg = 395
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
# BUSCA INFORMACION COTIZACION, ZONA GEOGRAFICA
|
|
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
|
|
IF pcotizacion IS NOT NULL THEN
|
|
LET xdireccion_proyecto = NULL
|
|
SELECT a.nombre_cliente,
|
|
a.direccion_cliente,
|
|
a.direccion_proyecto,
|
|
a.rnc,
|
|
a.cod_zona,
|
|
a.cod_provincia
|
|
INTO fact_gral.nombre,
|
|
fact_gral.direccion,
|
|
xdireccion_proyecto,
|
|
num_rnc,
|
|
fact_gral.zona,
|
|
codigo_provincia
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = pcotizacion
|
|
END IF
|
|
SELECT d.nombre_provincia, d.id_dgii, d.id_municipio_dgii
|
|
INTO fact_gral.ciudad,
|
|
documento_encabezado.ProvinciaComprador,
|
|
documento_encabezado.MunicipioComprador
|
|
FROM vetb00020 d
|
|
WHERE d.cod_provincia = codigo_provincia
|
|
|
|
IF pcotizacion IS NULL THEN
|
|
IF fact_gral.direccion IS NULL THEN
|
|
LET fact_gral.direccion = NULL
|
|
SELECT RTRIM(a.calle) || ' ' || RTRIM(a.casa_num)
|
|
|| ' '
|
|
|| RTRIM(a.urbanizacion)
|
|
|| ' '
|
|
|| RTRIM(a.barrio)
|
|
INTO fact_gral.direccion
|
|
FROM vetb00005 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_Gral.sec_cliente
|
|
END IF
|
|
END IF
|
|
DISPLAY BY NAME fact_gral.nombre,
|
|
num_rnc,
|
|
cliente_bas.telefono,
|
|
fact_gral.ciudad,
|
|
fact_gral.direccion
|
|
|
|
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,
|
|
sucid,
|
|
observaciones,
|
|
id_pago,
|
|
tipo_cta,
|
|
cod_provincia)
|
|
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,
|
|
SUSER_SNAME(),
|
|
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,
|
|
localidad,
|
|
observacion,
|
|
fpago,
|
|
xtipocta,
|
|
codigo_provincia)
|
|
# CONTROL RNC
|
|
|
|
IF cliente_ncf = "S" AND pcontroloutlet2 = "SI" THEN
|
|
IF num_rnc IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
LET num_rnc = 'NO TIENE'
|
|
NEXT FIELD cantidad
|
|
DISPLAY BY NAME num_rnc
|
|
ATTRIBUTE(RED, BLINK, REVERSE)
|
|
END IF
|
|
IF codigodgii = '32' THEN
|
|
|
|
IF fact_gral.total_fact * fact_gral.prima_us
|
|
> 250000
|
|
AND tipodocumento <> 3 THEN
|
|
|
|
CALL buscaRnc(
|
|
num_rnc)
|
|
RETURNING exito2,
|
|
fact_gral.nombre,
|
|
fact_gral.direccion,
|
|
fact_gral.ciudad,
|
|
cliente_bas.telefono
|
|
|
|
IF NOT exito2 THEN
|
|
|
|
ROLLBACK WORK
|
|
CALL msg(3)
|
|
DISPLAY BY NAME num_rnc
|
|
ATTRIBUTE(RED, BLINK, REVERSE)
|
|
RETURN
|
|
END IF
|
|
DISPLAY BY NAME fact_gral.nombre,
|
|
fact_gral.direccion,
|
|
fact_gral.ciudad,
|
|
cliente_bas.telefono
|
|
END IF
|
|
END IF
|
|
IF codigodgii <> '32' THEN
|
|
CALL buscaRnc(
|
|
num_rnc)
|
|
RETURNING exito2,
|
|
fact_gral.nombre,
|
|
fact_gral.direccion,
|
|
fact_gral.ciudad,
|
|
cliente_bas.telefono
|
|
IF NOT exito2 THEN
|
|
|
|
ROLLBACK WORK
|
|
CALL msg(3)
|
|
DISPLAY BY NAME num_rnc ATTRIBUTE(RED)
|
|
RETURN
|
|
END IF
|
|
DISPLAY BY NAME fact_gral.nombre,
|
|
fact_gral.direccion,
|
|
fact_gral.ciudad,
|
|
cliente_bas.telefono
|
|
END IF
|
|
END IF
|
|
#-------------------------------------------------------------------
|
|
|
|
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
|
|
|
|
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
|
|
|
|
IF fact_gral.cond_pago > 1 THEN
|
|
IF fact_gral.cond_pago = 4
|
|
AND (pcontroloutlet2 = "SI" OR pcontroloutlet = 'SI')
|
|
AND ch_itbi = 'N' THEN
|
|
|
|
LET esNcf = FALSE
|
|
CALL veprfu001()
|
|
IF int_flag THEN
|
|
CALL msg(2)
|
|
LET int_flag = FALSE
|
|
ROLLBACK WORK
|
|
RETURN
|
|
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
|
|
|
|
LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias
|
|
|
|
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,
|
|
sucid,efectivo_pesos,link_pesos,tarjeta_pesos,ck_pesos)
|
|
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,
|
|
localidad,efectivo_pesos,link_pesos,tarjeta_pesos,ck_pesos)
|
|
|
|
IF pcontroloutlet = "SI" OR pcontroloutlet2 = "SI" THEN
|
|
# IF pcontroloutlet = "SI" THEN
|
|
LET p_codigo = 94
|
|
# END IF
|
|
|
|
CALL veconduce(
|
|
fact_gral.*,
|
|
fact_det,
|
|
usuarios,
|
|
clave,
|
|
impresor,
|
|
localidad,
|
|
cliente_bas.telefono,
|
|
p_codigo,
|
|
observacion)
|
|
RETURNING exito
|
|
IF NOT exito THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1663)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
END IF
|
|
|
|
END IF
|
|
#-> Actulizacion de la tabla de monitoreo de la orden de produccion vg Wednesday, 17 January, 2001 09:33:21 AM
|
|
LET prtb09.num_oc = fact_gral.orden
|
|
LET prtb09.fecha = fact_gral.fecha_factura
|
|
|
|
IF cant_vend <> cant_prod THEN
|
|
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 idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cantidad_2 IS NULL THEN
|
|
LET fact_det[idx].cantidad_2 = 0
|
|
END IF
|
|
|
|
IF fact_det[idx].cod_grupo IS NOT NULL THEN
|
|
IF fact_det[idx].cod_n IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
IF fact_det[idx].cod_tipo IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cod_tipo
|
|
END IF
|
|
|
|
IF fact_det[idx].cod_sec IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
END IF
|
|
IF fact_det[idx].cod_tipo IS NOT NULL THEN
|
|
IF fact_det[idx].cod_n IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
IF fact_det[idx].cod_sec IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
|
|
IF fact_det[idx].cod_grupo IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
END IF
|
|
IF fact_det[idx].cod_n IS NOT NULL THEN
|
|
IF fact_det[idx].cod_grupo IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cod_grupo
|
|
END IF
|
|
IF fact_det[idx].cod_tipo IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cod_tipo
|
|
END IF
|
|
|
|
IF fact_det[idx].cod_sec IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
IF fact_det[idx].cantidad < 0 THEN
|
|
LET fact_det[idx].cantidad =
|
|
fact_det[idx].cantidad * -1
|
|
END IF
|
|
IF fact_det[idx].precio IS NOT NULL THEN
|
|
|
|
IF fact_det[idx].precio < pprecio[idx] THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1013)
|
|
NEXT FIELD precio
|
|
END IF
|
|
END IF
|
|
INSERT INTO vetb00003(
|
|
cod_cia,
|
|
factura,
|
|
area,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_Sec,
|
|
cantidad,
|
|
cantidad_2,
|
|
bonificacion,
|
|
precio,
|
|
us_crea,
|
|
fech_crea,
|
|
bodega,
|
|
id_kit,
|
|
sucid)
|
|
VALUES(fact_gral.cod_cia,
|
|
fact_gral.factura,
|
|
fact_det[idx].area,
|
|
fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,
|
|
fact_det[idx].cantidad,
|
|
fact_det[idx].cantidad_2,
|
|
valor_desc,
|
|
fact_det[idx].precio,
|
|
SUSER_SNAME(),
|
|
GETDATE(),
|
|
fact_gral.bodega,
|
|
fact_Det[idx].kit_id,
|
|
localidad)
|
|
|
|
# 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
|
|
AND bodega = fact_gral.bodega
|
|
END IF
|
|
|
|
IF p_bonifica[idx] IS NULL THEN
|
|
LET p_bonifica[idx] = 0
|
|
END IF
|
|
|
|
IF opt4 = "N" OR opt4 = "n" THEN
|
|
LET p_bonifica[idx] = 0
|
|
END IF
|
|
# END IF
|
|
END IF # cod_n IS NULL
|
|
END FOR
|
|
COMMIT WORK
|
|
DISPLAY BY NAME fact_gral.factura
|
|
### ============================== IMPRESION CONSOLIDADO=============================
|
|
IF opt1 = "YES" THEN
|
|
SET CONNECTION "MSSQL"
|
|
#-> 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
|
|
GOTO regresa
|
|
END IF
|
|
|
|
CALL defecto(
|
|
usuarios, clave, impresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
|
|
# DISPLAY BY NAME imprime
|
|
IF impresion1 = 'MA' THEN
|
|
START REPORT imp_fact TO archivo
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cod_n IS NOT NULL
|
|
AND fact_det[idx].cod_grupo IS NOT NULL
|
|
AND fact_det[idx].cod_tipo IS NOT NULL
|
|
AND fact_det[idx].cod_sec IS NOT NULL
|
|
AND fact_det[idx].cantidad IS NOT NULL
|
|
AND fact_det[idx].cantidad > 0 THEN
|
|
LET cod_fact = 1
|
|
|
|
OUTPUT TO REPORT imp_fact(
|
|
fact_gral.*,
|
|
fact_det[idx].*,
|
|
tot_porc,
|
|
p_bonifica[idx],
|
|
cod_fact)
|
|
END IF
|
|
END FOR
|
|
DISPLAY nombre_m CLIPPED AT 1, 1
|
|
FINISH REPORT imp_fact
|
|
RUN imprime
|
|
ELSE
|
|
LET r_output = "PDF"
|
|
CALL configureOutput(r_output) RETURNING HANDLER
|
|
START REPORT imp_fact TO XML HANDLER HANDLER
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cod_n IS NOT NULL
|
|
AND fact_det[idx].cod_grupo IS NOT NULL
|
|
AND fact_det[idx].cod_tipo IS NOT NULL
|
|
AND fact_det[idx].cod_sec IS NOT NULL
|
|
AND fact_det[idx].cantidad IS NOT NULL
|
|
AND fact_det[idx].cantidad > 0 THEN
|
|
LET cod_fact = 1
|
|
|
|
OUTPUT TO REPORT imp_fact(
|
|
fact_gral.*,
|
|
fact_det[idx].*,
|
|
tot_porc,
|
|
p_bonifica[idx],
|
|
cod_fact)
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT imp_fact
|
|
END IF
|
|
END IF
|
|
#------------------------- TERMINA MSSQL----------------------------------------------
|
|
# INSERTA EN EXTERIOR
|
|
|
|
IF genera_ncf = "YES" THEN
|
|
IF cliente_ncf = "S" THEN
|
|
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 "IFMX"
|
|
|
|
LET factura_xc = fact_gral.factura
|
|
# Control facturas NCF
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
|
|
IF fact_det[idx].cod_n IS NOT NULL THEN
|
|
IF pcontroloutlet2 <> 'SI'
|
|
AND pcontroloutlet <> 'SI' THEN
|
|
CALL verifica_cantidad(
|
|
fact_det[idx].area,
|
|
fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,
|
|
fact_det[idx].cantidad,
|
|
fact_gral.orden)
|
|
RETURNING execede
|
|
IF NOT execede THEN
|
|
CONTINUE FOR
|
|
ELSE
|
|
EXIT FOR
|
|
END IF
|
|
ELSE
|
|
LET execede = FALSE
|
|
END IF # CONTROL OUTLET
|
|
END IF
|
|
END FOR
|
|
IF NOT execede THEN
|
|
|
|
SELECT a.ncf
|
|
INTO kncf
|
|
FROM vetb00073 a
|
|
WHERE a.tipo_doc = "FT"
|
|
AND a.codigo_dgii = codigodgii
|
|
|
|
# SELECT MAX(a.ncf) INTO kncf FROM vetb00072 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
|
|
|
|
DISPLAY BY NAME kncf
|
|
|
|
SELECT ISNULL(a.ncf_final, 0)
|
|
INTO xncf_final
|
|
FROM vetb00071 a
|
|
WHERE a.codigo_dgii = codigodgii
|
|
AND a.disponible = 'S'
|
|
|
|
IF kncf > xncf_final THEN
|
|
CALL fgl_winmessage(
|
|
"NCF",
|
|
"PROBLEMAS CON LA SECUENCIA DE LOS NCF, LLAME A FINANZAS",
|
|
"INFO")
|
|
RETURN
|
|
END IF
|
|
SELECT ult_factura
|
|
INTO fact_gral.factura
|
|
FROM vetb00001
|
|
WHERE sucid = localidad
|
|
|
|
IF fact_gral.factura IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
LET fact_gral.factura = fact_gral.factura + 1
|
|
# CONTROL CONDUCE DE EXTERIOR, SE COLOCO EN COMENTARIO PORQUE ESTABA CREANDO UNA SITUACION, PERO DEFINITIVAMENTE,
|
|
# EL CONTROL PARA QUE NO FACTURARAN DOS ORDENES ESTABA FUNCIONANDO.
|
|
{ LET cuenta_registro = 0
|
|
SELECT DISTINCT a.orden FROM vetb00002 a
|
|
WHERE a.orden = fact_gral.orden AND a.status_t IS NULL
|
|
IF STATUS !=NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","NO ES POSIBLE FACTURAR CON NCF, ORDEN ESTA FACTURADA","INFO")
|
|
EXIT PROGRAM
|
|
END IF
|
|
}
|
|
BEGIN WORK
|
|
|
|
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)
|
|
|
|
LET documento_encabezado.eNcf =
|
|
"E",
|
|
codigodgii CLIPPED,
|
|
kncf USING "&&&&&&&&&&"
|
|
|
|
IF pcotizacion IS NULL THEN
|
|
LET fact_gral.direccion = tmpdireccion
|
|
IF fact_gral.direccion IS NULL THEN
|
|
LET fact_gral.direccion = NULL
|
|
|
|
SELECT UNIQUE RTRIM(a.calle) || ' '
|
|
|| RTRIM(
|
|
a.casa_num)
|
|
|| ' '
|
|
|| RTRIM(a.urbanizacion)
|
|
|| ' '
|
|
|| RTRIM(a.barrio)
|
|
INTO fact_gral.direccion
|
|
FROM vetb00005 a
|
|
WHERE a.tipo_cliente
|
|
=
|
|
fact_gral.tipo_cliente
|
|
AND a.sec_cliente
|
|
=
|
|
fact_Gral.sec_cliente
|
|
END IF
|
|
END IF
|
|
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,
|
|
ncf,
|
|
titulo_ncf,
|
|
fecha_vencimiento_ncf,
|
|
id_pago,
|
|
tipo_cta,
|
|
cotizacion_no,
|
|
observaciones)
|
|
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,
|
|
factura_xc,
|
|
localidad,
|
|
fact_gral.nombre,
|
|
fact_gral.direccion,
|
|
xdireccion_proyecto,
|
|
fact_gral.conduce,
|
|
num_rnc,
|
|
documento_encabezado.eNcf,
|
|
descripcion,
|
|
fecha_vencimiento,
|
|
fpago,
|
|
xtipocta,
|
|
pcotizacion,
|
|
observacion)
|
|
|
|
# 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
|
|
IF fact_gral.cond_pago = 4
|
|
AND (pcontroloutlet2 = "SI"
|
|
OR pcontroloutlet = "SI") THEN
|
|
LET esNcf = TRUE
|
|
DISPLAY 'ESOY EN NCF'
|
|
CALL veprfu001()
|
|
IF int_flag THEN
|
|
CALL msg(2)
|
|
LET int_flag = FALSE
|
|
ROLLBACK WORK
|
|
RETURN
|
|
END IF
|
|
LET otro_num_recibo = pagos.documento
|
|
END IF
|
|
SELECT a.dias, a.descrip
|
|
INTO condicion.dias, condicion.descrip
|
|
FROM vetb00012 a
|
|
WHERE a.cond_pago = fact_gral.cond_pago
|
|
|
|
LET p_fecha_ven =
|
|
fact_gral.fecha_factura + condicion.dias
|
|
|
|
IF fact_gral.total_fact < 0 THEN
|
|
LET fact_gral.total_fact =
|
|
fact_gral.total_fact * -1
|
|
END IF
|
|
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,efectivo_pesos,link_pesos,tarjeta_pesos,ck_pesos)
|
|
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,efectivo_pesos,link_pesos,tarjeta_pesos,ck_pesos)
|
|
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
|
|
|
|
CALL documento_detalle.clear()
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cantidad_2 IS NULL THEN
|
|
LET fact_det[idx].cantidad_2 = 0
|
|
END IF
|
|
IF fact_det[idx].cantidad < 0 THEN
|
|
LET fact_det[idx].cantidad =
|
|
fact_det[idx].cantidad * -1
|
|
END IF
|
|
IF fact_det[idx].cod_n IS NOT NULL THEN
|
|
|
|
# CALL verifica_cantidad(fact_det[idx].area,fact_det[idx].cod_n,fact_det[idx].cod_grupo,fact_det[idx].cod_tipo,
|
|
# fact_det[idx].cod_sec,fact_det[idx].cantidad, fact_gral.orden)
|
|
# RETURNING execede
|
|
IF fact_det[idx].cantidad < 0 THEN
|
|
LET fact_det[idx].cantidad =
|
|
fact_det[idx].cantidad * -1
|
|
END IF
|
|
|
|
IF fact_det[idx].cantidad > 0
|
|
AND idx <= 100 THEN
|
|
LET valor_desc = 0
|
|
LET valor_Desc_moneda = 0
|
|
LET valor_desc_moneda =
|
|
((fact_det[idx].precio
|
|
* fact_gral
|
|
.prima_us)
|
|
* fact_det[idx]
|
|
.cantidad)
|
|
* (fact_det[idx].cantidad_2
|
|
/ 100)
|
|
LET valor_desc =
|
|
(fact_det[idx].precio
|
|
* fact_det[idx]
|
|
.cantidad)
|
|
* (fact_det[idx].cantidad_2
|
|
/ 100)
|
|
IF valor_desc IS NULL THEN
|
|
LET valor_desc = 0
|
|
END IF
|
|
LET documento_detalle[idx]
|
|
.precioUnitarioItem =
|
|
(fact_Det[idx].precio
|
|
* fact_gral
|
|
.prima_us)
|
|
- ((fact_Det[idx].precio
|
|
* fact_gral
|
|
.prima_us)
|
|
* (fact_det[idx]
|
|
.cantidad_2
|
|
/ 100))
|
|
USING "<<<<<<<<<<<<<<<&.####"
|
|
|
|
IF ch_itbi = 'S' THEN
|
|
LET documento_detalle[idx]
|
|
.indicadorFacturacion =
|
|
1
|
|
LET ditbis[idx] =
|
|
fact_det[idx].monto_fact
|
|
* (fact_gral.porc_itbi
|
|
/ 100)
|
|
ELSE
|
|
IF codigodgii <> '46' THEN
|
|
LET documento_detalle[idx]
|
|
.indicadorFacturacion =
|
|
4
|
|
ELSE
|
|
LET documento_detalle[idx]
|
|
.indicadorFacturacion =
|
|
3
|
|
END IF
|
|
END IF
|
|
LET documento_detalle[idx]
|
|
.cantidadItem =
|
|
fact_det[idx].cantidad
|
|
USING "<<<<&&.##"
|
|
LET documento_detalle[idx]
|
|
.nombreItem =
|
|
fact_det[idx]
|
|
.descrip_esp CLIPPED
|
|
|
|
LET documento_detalle[idx]
|
|
.montoItem =
|
|
((fact_det[idx].precio
|
|
* fact_gral
|
|
.prima_us)
|
|
* fact_det[idx]
|
|
.cantidad)
|
|
- valor_desc_moneda
|
|
USING "<<<<<<<<<<<<<<<&.##"
|
|
END IF
|
|
|
|
IF ditbis[idx] IS NULL THEN
|
|
LET ditbis[idx] = 0
|
|
|
|
END IF
|
|
LET fact_Det[idx].monto_fact =
|
|
fact_Det[idx].monto_fact
|
|
+ ditbis[idx]
|
|
|
|
INSERT INTO vetb00003
|
|
VALUES(fact_gral.cod_cia,
|
|
fact_gral.factura,
|
|
fact_det[idx].area,
|
|
fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,
|
|
fact_det[idx].cantidad,
|
|
fact_det[idx].cantidad_2,
|
|
valor_desc,
|
|
fact_det[idx].precio,
|
|
NULL,
|
|
usuarios,
|
|
GETDATE(),
|
|
NULL,
|
|
NULL,
|
|
localidad,
|
|
fact_det[idx].kit_id,
|
|
fact_Det[idx].descrip_esp,
|
|
valor_desc,
|
|
ditbis[idx],
|
|
fact_det[idx].monto_fact)
|
|
|
|
IF fact_det[idx].cantidad > 0 THEN
|
|
LET fact_det[idx].cantidad =
|
|
fact_det[idx].cantidad * -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,
|
|
fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,
|
|
fact_det[idx].cantidad,
|
|
fact_det[idx].cantidad,
|
|
localidad,
|
|
usuarios,
|
|
getdate())
|
|
IF fact_det[idx].cantidad < 0 THEN
|
|
LET fact_det[idx].cantidad =
|
|
fact_det[idx].cantidad * -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[idx] IS NULL THEN
|
|
LET p_bonifica[idx] = 0
|
|
END IF
|
|
|
|
IF opt4 = "N" OR opt4 = "n" THEN
|
|
LET p_bonifica[idx] = 0
|
|
END IF
|
|
|
|
# END IF
|
|
END IF # cod_n IS NULL
|
|
END FOR
|
|
COMMIT WORK
|
|
#PROCESO E-NCF
|
|
|
|
LET p_companias.direccion = NULL
|
|
SELECT a.rnc, a.nombre, a.direccion1, a.email
|
|
INTO p_companias.rnc,
|
|
p_companias.nombre,
|
|
p_companias.direccion1,
|
|
p_companias.email
|
|
FROM companias a
|
|
LET documento_encabezado.numeroFacturaInterna =
|
|
fact_gral.factura
|
|
LET documento_encabezado.tipoIngreso = '01'
|
|
|
|
LET documento_encabezado.nombreFile =
|
|
p_companias.rnc CLIPPED,
|
|
"E",
|
|
codigodgii CLIPPED,
|
|
kncf USING "&&&&&&&&&&",
|
|
".xml"
|
|
|
|
LET documento_encabezado
|
|
.FechaVencimientoSecuencia =
|
|
fecha_vencimiento USING "dd-mm-yyyy"
|
|
LET documento_encabezado.numeroPedidoInterno =
|
|
fact_gral.orden
|
|
LET documento_encabezado.tipoEcf = codigodgii
|
|
LET documento_encabezado.codigoVendedor =
|
|
fact_gral.sec_vend
|
|
LET documento_encabezado.correoEmisor =
|
|
p_companias.email CLIPPED
|
|
LET documento_encabezado.direccionEmisor =
|
|
p_companias.direccion CLIPPED,
|
|
p_companias.direccion1 CLIPPED
|
|
|
|
LET documento_encabezado.Municipio =
|
|
id_municipio_dgii CLIPPED
|
|
LET documento_encabezado.Provincia =
|
|
id_provincia_dgii CLIPPED
|
|
|
|
LET documento_encabezado
|
|
.CodigoInternoComprador =
|
|
fact_gral.tipo_cliente USING "<<",
|
|
"-",
|
|
fact_gral.sec_cliente USING "<<<<<<<<<"
|
|
LET documento_encabezado.CorreoComprador =
|
|
emailcliente
|
|
IF xdireccion_proyecto IS NOT NULL THEN
|
|
LET fact_gral.direccion =
|
|
fact_gral.direccion CLIPPED,
|
|
" ",
|
|
xdireccion_proyecto CLIPPED
|
|
END IF
|
|
|
|
IF fact_gral.direccion IS NOT NULL
|
|
OR LENGTH(fact_gral.direccion) > 3 THEN
|
|
LET documento_encabezado
|
|
.DireccionComprador =
|
|
fact_gral.direccion
|
|
ELSE
|
|
LET documento_encabezado
|
|
.DireccionComprador =
|
|
NULL
|
|
END IF
|
|
LET documento_encabezado.FechaEntrega =
|
|
fact_gral.fecha_conduce
|
|
|
|
IF codigodgii = '32'
|
|
AND fact_gral.total_fact
|
|
* fact_gral.prima_us
|
|
>= 250000 THEN
|
|
|
|
LET documento_encabezado
|
|
.IdentificadorExtranjero =
|
|
num_rnc
|
|
# ELSE
|
|
# LET documento_encabezado.rncComprador = num_rnc CLIPPED
|
|
# LET documento_encabezado.razonSocialComprador = fact_gral.nombre CLIPPED
|
|
END IF
|
|
IF tipodocumento <> '3' THEN
|
|
LET documento_encabezado.rncComprador =
|
|
num_rnc CLIPPED
|
|
END IF
|
|
IF tipodocumento = '3' THEN
|
|
LET documento_encabezado
|
|
.IdentificadorExtranjero =
|
|
num_rnc CLIPPED
|
|
END IF
|
|
CALL sus_caracter(
|
|
fact_Gral.nombre)
|
|
RETURNING documento_encabezado
|
|
.razonSocialComprador
|
|
LET documento_encabezado.razonSocialComprador =
|
|
documento_encabezado
|
|
.razonSocialComprador CLIPPED
|
|
|
|
LET documento_encabezado.rncEmisor =
|
|
p_companias.rnc CLIPPED
|
|
LET documento_encabezado.razonSocialEmisor =
|
|
p_companias.nombre CLIPPED
|
|
|
|
LET documento_encabezado.fechaEmision =
|
|
fact_gral.fecha_factura USING "dd-mm-yyyy"
|
|
IF documento_encabezado.tipoPago <> '1' THEN
|
|
LET documento_encabezado.fechaLimitePago =
|
|
p_fecha_ven USING "dd-mm-yyyy"
|
|
LET documento_encabezado.terminoPago =
|
|
condicion.dias USING "<<<", " dias"
|
|
END IF
|
|
IF documento_encabezado.tipoPago = '1' THEN
|
|
LET documento_encabezado.montoPago =
|
|
fact_gral.total_fact
|
|
* fact_gral.prima_us
|
|
USING "<<<<<<<<<<<<<.##"
|
|
END IF
|
|
LET documento_encabezado.NumeroCuentaPago =
|
|
cuenta_cliente
|
|
LET documento_encabezado.TipoCuentaPago =
|
|
xtipocta
|
|
|
|
IF ch_itbi = 'S' THEN
|
|
LET documento_encabezado
|
|
.indicadorMontoGravado =
|
|
0
|
|
ELSE
|
|
LET documento_encabezado
|
|
.indicadorMontoGravado =
|
|
NULL
|
|
END IF
|
|
LET documento_encabezado.FormadePAgo = NULL
|
|
|
|
IF ch_itbi = 'S' THEN
|
|
LET documento_encabezado.itbis1 =
|
|
fact_gral.porc_itbi USING "<&"
|
|
LET documento_encabezado.montoExento = NULL
|
|
ELSE
|
|
LET documento_encabezado.itbis1 =
|
|
0 USING "<&"
|
|
LET documento_encabezado.montoExento =
|
|
fact_gral.total_fact
|
|
* fact_gral.prima_us
|
|
END IF
|
|
LET documento_encabezado.itbis2 = 0 USING "<&"
|
|
LET documento_encabezado.itbis3 = 0 USING "<&"
|
|
|
|
IF ch_itbi = 'S' THEN
|
|
|
|
LET documento_encabezado.montoExento =
|
|
0 USING "<&"
|
|
ELSE
|
|
LET documento_encabezado.montoExento =
|
|
(fact_gral.sub_total
|
|
* fact_gral.prima_us)
|
|
- (fact_gral.desc_valor
|
|
* fact_gral.prima_us)
|
|
END IF
|
|
IF codigodgii <> '46' THEN
|
|
IF ch_itbi <> 'S' THEN
|
|
LET documento_encabezado
|
|
.montoGravadoI1 =
|
|
0 USING "<<<<<<<<<<<<<<<&.##"
|
|
ELSE
|
|
|
|
LET documento_encabezado
|
|
.montoGravadoI1 =
|
|
(fact_gral.sub_total
|
|
* fact_gral.prima_us)
|
|
- (fact_gral.desc_valor
|
|
* fact_gral.prima_us)
|
|
USING "<<<<<<<<<<<<<<<&.##"
|
|
LET documento_encabezado
|
|
.montoGravadoI2 =
|
|
0 USING "<&"
|
|
LET documento_encabezado
|
|
.montoGravadoI3 =
|
|
0 USING "<&"
|
|
END IF
|
|
ELSE
|
|
LET documento_encabezado.montoGravadoI1 =
|
|
0 USING "<&"
|
|
LET documento_encabezado.montoGravadoI2 =
|
|
0 USING "<&"
|
|
LET documento_encabezado.montoGravadoI3 =
|
|
(fact_gral.sub_total
|
|
* fact_gral.prima_us)
|
|
- (fact_gral.desc_valor
|
|
* fact_gral.prima_us)
|
|
|
|
END IF
|
|
LET documento_encabezado.montoGravadoTotal =
|
|
(fact_gral.sub_total * fact_gral.prima_us)
|
|
- (fact_gral.desc_valor
|
|
* fact_gral.prima_us)
|
|
USING "<<<<<<<<<<<<<<<&.##"
|
|
|
|
LET documento_encabezado.totalItbis =
|
|
fact_gral.itbi * fact_gral.prima_us
|
|
USING "<<<<<<<<<<<<<<<&.##"
|
|
LET documento_encabezado.totalItbis1 =
|
|
fact_gral.itbi * fact_gral.prima_us
|
|
USING "<<<<<<<<<<<<<<&.##"
|
|
LET documento_encabezado.totalItbis2 =
|
|
0 USING "<&"
|
|
LET documento_encabezado.totalItbis3 =
|
|
0 USING "<&"
|
|
|
|
LET documento_encabezado.montoTotal =
|
|
fact_gral.total_fact * fact_gral.prima_us
|
|
USING "<<<<<<<<<<<<<<.##"
|
|
|
|
# AFECTA REGISTRO PARA LA PRODUCCION. FECHA 15/04/2018. POR JOHNNY SOTO
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
# IDENTIFICA EL PRODUCTO POR SU ORIGEN
|
|
SELECT a.cod_cia
|
|
INTO pcodcia
|
|
FROM iptb00002 a
|
|
WHERE a.cod_n = fact_det[idx].cod_n
|
|
AND a.cod_grupo
|
|
=
|
|
fact_det[idx].cod_grupo
|
|
AND a.cod_tipo
|
|
=
|
|
fact_Det[idx].cod_tipo
|
|
AND a.cod_Sec
|
|
=
|
|
fact_det[idx].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,
|
|
fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,
|
|
fact_det[idx].cantidad,
|
|
localidad,
|
|
usuarios,
|
|
getdate(),
|
|
fact_gral.conduce,
|
|
fact_gral.orden)
|
|
END IF
|
|
END FOR
|
|
# GENERA EL FILE XML PARA LOS eNCF
|
|
# LET documento_encabezado.rncComprador = NULL
|
|
# LET documento_encabezado.tipoIngreso = NULL
|
|
|
|
CALL generafile(
|
|
documento_encabezado.*,
|
|
documento_detalle,
|
|
localidad,
|
|
localidad,
|
|
'adicionar')
|
|
RETURNING phash,
|
|
respuesta,
|
|
fechafirma,
|
|
codigo
|
|
# ESTE UPDATE ES PORQUE EL HASH QUE DEBE TENER LA FACTURA ES EL QUE VIENE DE ESTA FUNCION
|
|
DISPLAY "esta es la respuesta en el veprmt001: ",
|
|
respuesta
|
|
UPDATE vetb00002
|
|
SET hash = phash,
|
|
ultima_respuesta = respuesta,
|
|
fechafirmadigital = fechafirma
|
|
WHERE factura = fact_gral.factura
|
|
AND sucid = localidad
|
|
DISPLAY "esta es la localidad: ", localidad
|
|
TRY
|
|
|
|
LET valor_control_ncf =
|
|
documento_encabezado.montoTotal
|
|
IF codigodgii <> 32 THEN
|
|
CALL procesoEncf(
|
|
' ',
|
|
ambiente,
|
|
' ',
|
|
0,
|
|
0,
|
|
'consultatrackid',
|
|
respuesta)
|
|
RETURNING phash, xrespuesta, codigo
|
|
|
|
DISPLAY "estado respuesta: ",
|
|
CURRENT,
|
|
xrespuesta,
|
|
" codigo: ",
|
|
codigo
|
|
TRY
|
|
CALL util.JSON.parse(xrespuesta, p)
|
|
CATCH
|
|
CALL util.JSON.parse(
|
|
respuesta, otrojson_track)
|
|
LET p.trackid =
|
|
otrojson_track.trackid
|
|
END TRY
|
|
DISPLAY "estado: ", xrespuesta
|
|
END IF
|
|
IF codigodgii = '32'
|
|
AND valor_control_ncf < 250000 THEN
|
|
# CALL procesoEncf(' ',ambiente,' ',0,0,'consultatrackid',respuesta)
|
|
# RETURNING phash,xrespuesta
|
|
IF codigo = 200 THEN
|
|
TRY
|
|
CALL util.JSON.parse(
|
|
respuesta, p32)
|
|
LET p.estado = p32.estado
|
|
LET p.mensajes[1].valor =
|
|
p32.mensajes
|
|
CATCH
|
|
CALL util.JSON.parse(
|
|
respuesta, otro_json1)
|
|
LET p.estado = otro_json1.estado
|
|
LET p.mensajes[1].valor =
|
|
otro_json1.MENSAJES[1]
|
|
END TRY
|
|
ELSE
|
|
DISPLAY "tomo el P32ERR:", respuesta
|
|
CALL util.JSON.parse(
|
|
respuesta, p32err)
|
|
LET p.estado = p32err.estado
|
|
LET p.mensajes[1].valor =
|
|
p32err.mensajes[1].valor
|
|
END IF
|
|
# LET p.estado = p1.estado
|
|
# LET p.secuenciaUtilizada = p1.secuenciaUtilizada
|
|
# LET p.encf = p1.encf
|
|
# LET p.mensajes[1].valor = p1.mensajes
|
|
|
|
DISPLAY "estado 32: ", p.estado
|
|
END IF
|
|
|
|
CATCH
|
|
TRY
|
|
CALL util.JSON.parse(
|
|
respuesta, otrojson)
|
|
LET p.estado = otrojson.estado
|
|
LET p.mensajes[1].valor =
|
|
otrojson.mensajes[1].valor
|
|
CATCH
|
|
LET p.estado = 'ERROR'
|
|
LET p.mensajes[1].valor =
|
|
"NO PUDE PARSEAR LA RESPUESTA EN EL PROGRAMA ADICION VEPRMT001"
|
|
END TRY
|
|
TRY
|
|
CALL util.JSON.parse(respuesta, xtrack)
|
|
LET p.trackid = xtrack.trackid
|
|
CATCH
|
|
LET p.estado = 'ERROR'
|
|
LET p.mensajes[1].valor =
|
|
"NO PUDE PARSEAR LA RESPUESTA EN EL PROGRAMA ADICION VEPRMT001"
|
|
END TRY
|
|
END TRY
|
|
|
|
IF p.estado = ' ' OR p.estado IS NULL THEN
|
|
LET p.estado = 'ERROR'
|
|
END IF
|
|
|
|
UPDATE vetb00002
|
|
SET trackid = p.trackid,
|
|
estado_dgii = p.estado,
|
|
mensaje = p.mensajes[1].valor
|
|
WHERE factura = fact_gral.factura
|
|
AND sucid = localidad
|
|
|
|
### IMPRESION FACTURA CON NCF
|
|
SET CONNECTION "MSSQL"
|
|
{ ESTE PROCEDIMIENTO ESTABA PARA IMPRIMIR EN OTRA IMPRESORA REMOTA
|
|
CALL defecto(usuarios,clave,xcopia) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia
|
|
|
|
|
|
|
|
START REPORT imp_fact_ncf TO archivo
|
|
|
|
FOR idx = 1 TO fact_Det.getLength()
|
|
IF fact_det[idx].cod_n IS NOT NULL AND
|
|
fact_det[idx].cod_grupo IS NOT NULL AND
|
|
fact_det[idx].cod_tipo IS NOT NULL AND
|
|
fact_det[idx].cod_sec IS NOT NULL AND
|
|
fact_det[idx].cantidad IS NOT NULL AND
|
|
fact_det[idx].cantidad > 0 THEN
|
|
LET cod_fact = 1
|
|
|
|
OUTPUT TO REPORT imp_fact_ncf(fact_gral.*,fact_det[idx].*,tot_porc,
|
|
p_bonifica[idx],cod_fact,kncf,codigodgii)
|
|
|
|
END IF
|
|
END FOR
|
|
|
|
FINISH REPORT imp_fact_ncf
|
|
|
|
RUN imprime
|
|
}
|
|
# INSERTA EL PAGO AL CONTADO EN LA PRIMERA CONEXION
|
|
|
|
IF fact_gral.cond_pago = 4
|
|
AND (pcontroloutlet2 = "SI"
|
|
OR pcontroloutlet = "SI") THEN
|
|
DISPLAY "ESTOY EN LA OPCION DEL PAGO: ",
|
|
fact_gral.total_fact
|
|
IF fact_gral.total_fact <> 0 THEN
|
|
LET pagos.factura = factura_xc
|
|
|
|
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"
|
|
IF pagos.valor_total > 0 THEN
|
|
LET pagos.valor_total =
|
|
pagos.valor_total * -1
|
|
END IF
|
|
|
|
#---------------------------------------------------------------------------------------------
|
|
|
|
BEGIN WORK
|
|
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,
|
|
sucid,efectivo_pesos,tarjeta_pesos,link_pesos,ck_pesos)
|
|
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,
|
|
localidad,efectivo_pesos,tarjeta_pesos,link_pesos,ck_pesos)
|
|
|
|
INSERT INTO cctb00011(
|
|
cod_cia,
|
|
num_doc,
|
|
tipo_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
comentario,
|
|
us_crea,
|
|
fech_crea,
|
|
SucID,
|
|
cod_emp_sec,
|
|
valor_recibo)
|
|
VALUES(fact_gral.cod_cia,
|
|
pagos.documento,
|
|
'PC',
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
observacion,
|
|
SUSER_SNAME(),
|
|
GETDATE(),
|
|
localidad,
|
|
fact_gral.sec_vend,
|
|
fact_gral.total_fact)
|
|
|
|
UPDATE cctb00003
|
|
SET ult_recibo = pagos.documento,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE tipo_doc = "PC"
|
|
|
|
INSERT INTO cctb00020(
|
|
cod_cia,
|
|
tipo_doc,
|
|
num_oc,
|
|
fecha,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
factura,
|
|
valor_efectivo,
|
|
num_trans,
|
|
us_crea,
|
|
fech_crea)
|
|
VALUES(localidad,
|
|
'PC',
|
|
pagos.documento,
|
|
pagos.fecha_factura,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.orden,
|
|
fact_gral.total_fact,
|
|
otro_num_recibo,
|
|
usuarios,
|
|
getdate())
|
|
|
|
#ACTUALIZACION CONTABILIDAD GENERAL
|
|
{ IF generaE THEN
|
|
FOR idx = 1 TO registroEntrada.getLength()
|
|
IF registroEntrada[idx].cuenta_no IS NOT NULL THEN
|
|
INSERT INTO cgtb00004
|
|
(fecha,tipo,ref, cuenta_no, detalle_1, departamento, debito,credito,us_crea,fech_crea,tipo_doc_cxc,num_doc_cxc,
|
|
cod_sp,cod_sp_sec)
|
|
VALUES(registroEntrada[idx].fecha,registroEntrada[idx].tipo ,registroEntrada[idx].referenciaEntrada,
|
|
registroEntrada[idx].cuenta_no,registroEntrada[idx].detalle,registroEntrada[idx].departamento,
|
|
registroEntrada[idx].debito,registroEntrada[idx].credito, usuarios,GETDATE(),
|
|
'PC',pagos.documento,fact_Gral.tipo_cliente,fact_gral.sec_cliente)
|
|
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
}
|
|
COMMIT WORK
|
|
END IF
|
|
END IF
|
|
|
|
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 defecto(
|
|
usuarios, clave, impresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
|
|
SET CONNECTION "IFMX"
|
|
{ IF impresion1 = "MA" THEN
|
|
START REPORT imp_fact_ncf TO archivo
|
|
|
|
FOR idx = 1 TO fact_Det.getLength()
|
|
IF fact_det[idx].cod_n IS NOT NULL AND
|
|
fact_det[idx].cod_grupo IS NOT NULL AND
|
|
fact_det[idx].cod_tipo IS NOT NULL AND
|
|
fact_det[idx].cod_sec IS NOT NULL AND
|
|
fact_det[idx].cantidad IS NOT NULL AND
|
|
fact_det[idx].cantidad > 0 THEN
|
|
LET cod_fact = 1
|
|
|
|
OUTPUT TO REPORT imp_fact_ncf(fact_gral.*,fact_det[idx].*,tot_porc,
|
|
p_bonifica[idx],cod_fact,kncf,codigodgii)
|
|
|
|
END IF
|
|
END FOR
|
|
|
|
FINISH REPORT imp_fact_ncf
|
|
|
|
RUN imprime
|
|
LET impresion = "S"
|
|
ELSE}
|
|
|
|
IF p.estado = 'Rechazado' THEN
|
|
DISPLAY BY NAME p.estado
|
|
ATTRIBUTE(RED, REVERSE)
|
|
RETURN
|
|
|
|
ELSE
|
|
DISPLAY BY NAME p.estado
|
|
ATTRIBUTE(GREEN, REVERSE)
|
|
END IF
|
|
DISPLAY p.mensajes[1].valor TO mensaje_dgii
|
|
|
|
LET r_filename = "veprmt022.4rp"
|
|
LET r_output = "PDF"
|
|
LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(
|
|
r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(
|
|
r_output) -- changing default
|
|
IF preview = 0 THEN
|
|
CALL fgl_report_selectPreview(
|
|
1) -- changing default
|
|
# CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter")
|
|
ELSE
|
|
CALL fgl_report_selectPreview(preview)
|
|
END IF
|
|
|
|
LET handler =
|
|
fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT imp_factura
|
|
TO XML HANDLER HANDLER
|
|
|
|
END IF
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cod_n IS NOT NULL
|
|
AND fact_det[idx].cod_grupo IS NOT NULL
|
|
AND fact_det[idx].cod_tipo IS NOT NULL
|
|
AND fact_det[idx].cod_sec IS NOT NULL
|
|
AND fact_det[idx].cantidad IS NOT NULL
|
|
AND fact_det[idx].cantidad > 0 THEN
|
|
|
|
LET cod_fact = 1
|
|
|
|
OUTPUT TO REPORT imp_factura(
|
|
fact_gral.*,
|
|
fact_det[idx].*,
|
|
tot_porc,
|
|
p_bonifica[idx],
|
|
cod_fact,
|
|
kncf,
|
|
codigodgii,
|
|
descripcion,
|
|
observacion,
|
|
usuarios,
|
|
fecha_vencimiento)
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT imp_factura
|
|
|
|
# END IF
|
|
# TERMINA OPCION MATRICIAL O PDF
|
|
ELSE
|
|
CALL fgl_Winmessage(
|
|
"INFO",
|
|
"LA FACTURACION CON NCF NO SE PUEDE REALIZAR, ESTA FACTURADA",
|
|
"INFO")
|
|
RETURN
|
|
END IF
|
|
|
|
END IF # FIN CLIENTE_NCF
|
|
END IF
|
|
END IF
|
|
####----------------- TERMINA EXTERIOR-----------------------------------------------
|
|
|
|
END IF
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
SET CONNECTION "MSSQL"
|
|
|
|
CALL fact_det.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 INPUT
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION repite_codigo()
|
|
|
|
LET verdad = NULL
|
|
LET ant_art.area = fact_det[curr].area
|
|
LET ant_art.cod_n = fact_det[curr].cod_n
|
|
LET ant_art.cod_grupo = fact_det[curr].cod_grupo
|
|
LET ant_art.cod_tipo = fact_det[curr].cod_tipo
|
|
LET ant_art.cod_sec = fact_det[curr].cod_sec
|
|
LET ant_art.cantidad = fact_det[curr].cantidad
|
|
LET ant_art.precio = fact_det[curr].precio
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != curr THEN
|
|
IF fact_det[idx].cod_n IS NOT NULL
|
|
AND fact_det[idx].cod_grupo IS NOT NULL
|
|
AND fact_det[idx].cod_tipo IS NOT NULL
|
|
AND fact_det[idx].cod_sec IS NOT NULL THEN
|
|
|
|
IF fact_Det[idx].area = ant_art.area
|
|
AND fact_det[idx].cod_n = ant_art.cod_n
|
|
AND fact_det[idx].cod_grupo = ant_art.cod_grupo
|
|
AND fact_det[idx].cod_tipo = ant_art.cod_tipo
|
|
AND fact_det[idx].cod_sec = ant_art.cod_sec THEN
|
|
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
LET verdad = "S"
|
|
ELSE
|
|
IF verdad != "S" THEN
|
|
LET verdad = "N"
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END FUNCTION
|
|
|
|
FUNCTION tarifas()
|
|
OPEN WINDOW busqueda
|
|
AT 7, 12
|
|
WITH FORM "vefmwd014"
|
|
ATTRIBUTE(BORDER,
|
|
FORM LINE FIRST + 2,
|
|
COMMENT LINE LAST,
|
|
MESSAGE LINE LAST)
|
|
|
|
LET int_flag = FALSE
|
|
CONSTRUCT criterio ON a.descrip FROM descrip
|
|
|
|
LET selec2 =
|
|
"SELECT a.cod_tarifa,a.descrip,a.tarifa_pago FROM vetb00023 a ",
|
|
"WHERE a.status_t IS NULL AND ",
|
|
criterio CLIPPED,
|
|
" ORDER BY 1 "
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_tarifa
|
|
END IF
|
|
|
|
PREPARE busca_tarifa FROM selec2
|
|
IF STATUS >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
|
|
DECLARE buscar_tarifa CURSOR FOR busca_tarifa
|
|
|
|
LET idx = 1
|
|
FOREACH buscar_tarifa INTO arr_tarifa[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx - 1)
|
|
MESSAGE " <Esc> Selecciona Tarifa del Transportista Donde Esta el cursor"
|
|
DISPLAY ARRAY arr_tarifa TO s_datos.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET fact_gral.cod_tarifa = arr_tarifa[curr1].cod_tarifa
|
|
LET descrip6 = arr_tarifa[curr1].descrip
|
|
|
|
LABEL salir_tarifa:
|
|
CLOSE WINDOW busqueda
|
|
END FUNCTION
|
|
|
|
FUNCTION cons_transp()
|
|
OPEN WINDOW busqueda
|
|
AT 7, 12
|
|
WITH FORM "vefmwd012"
|
|
ATTRIBUTE(BORDER,
|
|
FORM LINE FIRST + 2,
|
|
COMMENT LINE LAST,
|
|
MESSAGE LINE LAST)
|
|
|
|
LET int_flag = FALSE
|
|
CONSTRUCT criterio ON a.nombre FROM descrip6
|
|
|
|
LET selec2 =
|
|
"SELECT a.cod_transp,a.sec_transp, a.nombre FROM vetb00015 a ",
|
|
"WHERE a.status_t IS NULL AND ",
|
|
criterio CLIPPED,
|
|
" ORDER BY 1,2"
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_consulta_e
|
|
END IF
|
|
|
|
PREPARE busca_transp1 FROM selec2
|
|
IF STATUS >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
|
|
DECLARE buscar_transp CURSOR FOR busca_transp1
|
|
LET idx = 1
|
|
|
|
FOREACH buscar_transp INTO arr_transp[idx].*
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx - 1)
|
|
MESSAGE " <Esc> Selecciona Empleado donde esta el cursor"
|
|
DISPLAY ARRAY arr_transp TO s_transp.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET fact_gral.cod_transp = arr_transp[curr1].cod_transp
|
|
LET fact_gral.sec_transp = arr_transp[curr1].sec_transp
|
|
LET fact_gral.nombre_tran = arr_transp[curr1].nombre
|
|
|
|
LABEL salir_consulta_e:
|
|
CLOSE WINDOW busqueda
|
|
END FUNCTION
|
|
|
|
REPORT imp_fact(x, z, porciento, bonifica, cod_f)
|
|
DEFINE x RECORD
|
|
cod_cia LIKE vetb00002.cod_cia,
|
|
ventas LIKE vetb00002.ventas,
|
|
zona LIKE vetb00002.zona,
|
|
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 SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descrip_esp CHAR(50),
|
|
unidad_med CHAR(4),
|
|
cantidad DECIMAL(12, 5),
|
|
precio DECIMAL(12, 3),
|
|
cantidad_2 DEC(8, 2),
|
|
monto_fact DECIMAL(12, 3),
|
|
cantidad_orden DEC(12, 5),
|
|
pendiente DEC(12, 5),
|
|
facturada DEC(12, 5),
|
|
|
|
kit_id INT
|
|
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
|
|
IF proforma <> "PROFORMA" THEN
|
|
PRINT COLUMN 4,
|
|
doble,
|
|
proforma CLIPPED,
|
|
":",
|
|
x.factura USING "<<<<<<<<<"
|
|
ELSE
|
|
PRINT COLUMN 4,
|
|
doble,
|
|
"ORDEN DE DESPACHO" CLIPPED,
|
|
":",
|
|
x.factura USING "<<<<<<<<<"
|
|
END IF
|
|
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 <> 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 USING "###,###.#####",
|
|
" ",
|
|
z.unidad_med CLIPPED,
|
|
COLUMN 32,
|
|
z.cantidad / p_iptb01.factor_conv USING "###,###",
|
|
COLUMN 50,
|
|
z.descrip_esp CLIPPED,
|
|
COLUMN 98,
|
|
z.precio USING "#,###,###.###",
|
|
COLUMN 114,
|
|
z.cantidad_2 USING "###.###",
|
|
COLUMN 123,
|
|
z.monto_fact 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
|
|
# SI LA FACTURA ES PROFORMA NO SE IMPRIMEN LOS TOTALES
|
|
IF proforma <> "PROFORMA" THEN
|
|
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
|
|
END IF
|
|
#-------------------- TERMINA CONTROL PROFORMA-------------------------------------
|
|
PRINT comprimido_of
|
|
#SKIP 8 LINE
|
|
|
|
PAGE TRAILER
|
|
PRINT doce, comprimido_of
|
|
|
|
PRINT "ESTO NO ES UN DOCUMENTO OFICIAL, LA(S) MERCANCIAS QUE ESTE DOCUMENTO INVOLUCRA,"
|
|
PRINT "ESTAN EN PROCESO DE EXONERACION DEL ITBIS, MEDIANTE LA LEY 158-01."
|
|
PRINT "AL MOMENTO DE EMITIDA LA APROBACION, SE PROCEDERA A EMITIR LA FACTURA DEFINITIVA"
|
|
|
|
LET obs1 = observacion[1, 50]
|
|
LET obs2 = observacion[51, 101]
|
|
LET obs3 = observacion[102, 152]
|
|
LET obs4 = observacion[152, 180]
|
|
SKIP 1 LINE
|
|
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
|
|
IF proforma <> "PROFORMA" THEN
|
|
|
|
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
|
|
ELSE
|
|
SKIP 2 LINES
|
|
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
|
|
|
|
REPORT imp_fact_ncf(x, z, porciento, bonifica, cod_f, pncf, Pcodigodgii)
|
|
|
|
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(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 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
|
|
|
|
DEFINE
|
|
z RECORD
|
|
area SMALLINT,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descrip_esp CHAR(50),
|
|
unidad_med CHAR(5),
|
|
cantidad DEC(12, 5),
|
|
precio LIKE vetb00003.precio,
|
|
cantidad_2 LIKE vetb00003.cantidad_2,
|
|
monto_fact DECIMAL(12, 2),
|
|
kit_id INT
|
|
|
|
END RECORD,
|
|
Pcodigodgii LIKE vetb00071.codigo_dgii
|
|
|
|
DEFINE i, cod_f SMALLINT
|
|
DEFINE bonifica, pncf INTEGER
|
|
DEFINE
|
|
tot_b, tot_n, tot_m DECIMAL(12, 2),
|
|
ch_fech CHAR(20)
|
|
DEFINE porciento DECIMAL(8, 3)
|
|
DEFINE normal, doce, negras, negras_off, doble CHAR(2)
|
|
DEFINE rnc CHAR(11)
|
|
DEFINE comprimido, comprimido_of CHAR(1)
|
|
DEFINE j, lj, h INTEGER
|
|
|
|
OUTPUT
|
|
TOP MARGIN 2
|
|
LEFT MARGIN 0
|
|
# PAGE LENGTH 65
|
|
BOTTOM MARGIN 3
|
|
ORDER BY x.factura, z.cod_n, 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
|
|
|
|
SELECT a.nombre INTO p_companias.nombre FROM companias a
|
|
|
|
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED)) / 2
|
|
LET j =
|
|
(80
|
|
- LENGTH(
|
|
p_companias.direccion CLIPPED
|
|
|| ", "
|
|
|| p_companias.direccion1 CLIPPED))
|
|
/ 2
|
|
LET i =
|
|
(80
|
|
- LENGTH(
|
|
"Tels : "
|
|
|| p_companias.telefono
|
|
|| " Fax : "
|
|
|| p_companias.fax CLIPPED))
|
|
/ 2
|
|
LET h = (80 - LENGTH(p_companias.rnc CLIPPED)) / 2
|
|
|
|
#--------------------------------------------------------
|
|
PRINT COLUMN 1, normal, doble, p_companias.nombre CLIPPED
|
|
|
|
PRINT COLUMN 1,
|
|
doce,
|
|
p_companias.direccion CLIPPED,
|
|
", ",
|
|
p_companias.direccion1 CLIPPED,
|
|
COLUMN 61,
|
|
descripcion[1, 29]
|
|
PRINT COLUMN 1, sucnombre, COLUMN 61, descripcion[30, 60]
|
|
|
|
PRINT COLUMN 1,
|
|
"RNC : ",
|
|
p_companias.rnc,
|
|
COLUMN 60,
|
|
"NCF: ",
|
|
pcodigodgii CLIPPED,
|
|
pncf USING "&&&&&&&&"
|
|
|
|
PRINT COLUMN 1,
|
|
"Tels : ",
|
|
p_companias.telefono,
|
|
" Fax : ",
|
|
p_companias.fax,
|
|
COLUMN 61,
|
|
"Valida Hasta: ",
|
|
fecha_vencimiento USING "dd/mm/yyyy"
|
|
|
|
PRINT COLUMN 1, "Pag. ", PAGENO USING "###"
|
|
|
|
#PRINT normal,comprimido_of
|
|
|
|
#--------------------------------------------------------
|
|
|
|
SELECT num_rnc
|
|
INTO rnc
|
|
FROM vetb00004
|
|
WHERE tipo_cliente = x.tipo_cliente
|
|
AND sec_cliente = x.sec_cliente
|
|
AND status_t IS NULL
|
|
|
|
#PRINT normal,comprimido_of
|
|
PRINT COLUMN 1,
|
|
"----------------------------------------------------------------------------------------------"
|
|
PRINT COLUMN 1, "RNC CLIENTE: ", rnc
|
|
IF x.ventas = "1" THEN
|
|
PRINT COLUMN 1, negras, "SENORES :"
|
|
ELSE
|
|
PRINT COLUMN 1, "SIR :"
|
|
END IF
|
|
|
|
PRINT COLUMN 1,
|
|
x.nombre CLIPPED,
|
|
" COD.#",
|
|
x.tipo_cliente USING "&&",
|
|
"-",
|
|
x.sec_cliente USING "&&&&&&"
|
|
PRINT COLUMN 1, x.direccion CLIPPED, " ", cliente_bas.telefono
|
|
PRINT COLUMN 1, x.ciudad CLIPPED
|
|
PRINT COLUMN 1, pubicacion[1, 70]
|
|
PRINT COLUMN 1, pubicacion[71, 80]
|
|
|
|
PRINT COLUMN 60, doble, "FACTURA ", x.factura USING "&&&&&&&&"
|
|
|
|
PRINT COLUMN 1,
|
|
"--------------------------------------------------------------------------------------------"
|
|
PRINT normal, comprimido
|
|
|
|
PRINT "======================================================================================================",
|
|
"================================="
|
|
PRINT COLUMN 1,
|
|
"SALIDA",
|
|
COLUMN 15,
|
|
"ORDEN",
|
|
COLUMN 35,
|
|
"FECHA",
|
|
COLUMN 60,
|
|
"CONDICION",
|
|
COLUMN 80,
|
|
"VENDEDOR",
|
|
COLUMN 100,
|
|
"COTIZACION",
|
|
COLUMN 111,
|
|
"DOCUMENTO",
|
|
COLUMN 123,
|
|
"FECHA FACTURA"
|
|
|
|
PRINT COLUMN 1,
|
|
x.conduce USING "&&&&&&",
|
|
COLUMN 14,
|
|
x.orden USING "&&&&&&",
|
|
COLUMN 34,
|
|
x.fecha_orden USING "dd/mm/yyyy",
|
|
COLUMN 60,
|
|
condicion.descrip CLIPPED,
|
|
COLUMN 80,
|
|
"(",
|
|
x.sec_vend USING "&&&&",
|
|
") ",
|
|
x.nombre_vend CLIPPED,
|
|
COLUMN 100,
|
|
pcotizacion USING "&&&&&&",
|
|
COLUMN 111,
|
|
documento_ref[1, 14],
|
|
COLUMN 126,
|
|
x.fecha_factura USING "dd/mm/yyyy"
|
|
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 "======================================================================================================",
|
|
"================================="
|
|
|
|
ON EVERY ROW
|
|
|
|
IF z.cantidad <> 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 USING "###,###.###",
|
|
" ",
|
|
z.unidad_med CLIPPED,
|
|
COLUMN 32,
|
|
z.cantidad / p_iptb01.factor_conv USING "###,###",
|
|
COLUMN 50,
|
|
z.descrip_esp CLIPPED,
|
|
COLUMN 98,
|
|
z.precio USING "###,###.###",
|
|
COLUMN 114,
|
|
z.cantidad_2 USING "##.&&",
|
|
COLUMN 123,
|
|
z.monto_fact USING "##,###,###.##"
|
|
END IF
|
|
|
|
AFTER GROUP OF x.factura
|
|
# Impresion de informaciones que pertenecen a facturas de exportacion
|
|
IF x.ventas = "2" OR x.ventas = "4" THEN
|
|
|
|
PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78,
|
|
"VALOR BRUTO ",
|
|
COLUMN 122,
|
|
x.sub_total USING "###,###,###.##"
|
|
|
|
IF x.desc_valor <> 0 THEN
|
|
|
|
PRINT COLUMN 78,
|
|
"DISCOUNT",
|
|
COLUMN 122,
|
|
x.desc_valor USING "###,###,###.##"
|
|
END IF
|
|
PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78,
|
|
"TOTAL F.O.B. PLANT, D.R.",
|
|
COLUMN 122,
|
|
x.total_fact USING "###,###,###.##"
|
|
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
|
|
#PRINT COLUMN 47, "EXCHANGE RATE : ", x.prima_us USING "###.##"
|
|
END IF
|
|
|
|
# Impresion de datos que concierne solamente a tipos de facturas locales
|
|
|
|
IF x.ventas = "1" THEN
|
|
#->PRINT COLUMN 122, "--------------"
|
|
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 093,
|
|
x.desc_valor USING "###,###,###.##"
|
|
#COLUMN 122, x.desc_valor using "###,###,###.##"
|
|
END IF
|
|
|
|
#-> PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78,
|
|
"SUB-TOTAL",
|
|
COLUMN 119,
|
|
x.sub_total - x.desc_valor USING "RD$###,###,###.##"
|
|
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 119,
|
|
x.total_fact USING "RD$###,###,###.##"
|
|
PRINT COLUMN 122, "=============="
|
|
|
|
END IF
|
|
|
|
IF x.ventas = "3" THEN
|
|
#->PRINT COLUMN 122, "--------------"
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 78,
|
|
"VALOR BRUTO ",
|
|
COLUMN 118,
|
|
x.sub_total USING "USD$###,###,###.##"
|
|
|
|
IF x.desc_valor <> 0 THEN
|
|
|
|
PRINT COLUMN 78,
|
|
"DESCUENTO",
|
|
COLUMN 093,
|
|
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 78,
|
|
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
|
|
SKIP 1 LINE
|
|
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) CLIPPED,
|
|
" ",
|
|
UPSHIFT(obs2) CLIPPED
|
|
PRINT COLUMN 3,
|
|
" ",
|
|
UPSHIFT(obs3) CLIPPED,
|
|
" ",
|
|
UPSHIFT(obs4) CLIPPED
|
|
# IF x.ventas = 3 THEN
|
|
# PRINT COLUMN 3, "EXCHANGE RATE : ", x.prima_us USING "###.##"
|
|
# ELSE
|
|
# PRINT " "
|
|
# END IF
|
|
SKIP 2 LINES
|
|
|
|
PRINT COLUMN 4,
|
|
"NOMBRE TRANSPORTISTA: ",
|
|
x.nombre_tran,
|
|
" ",
|
|
"CEDULA: ",
|
|
p_cedula USING "&&&&&&&&&",
|
|
" SERIE: ",
|
|
p_serie USING "&&&"
|
|
|
|
PRINT COLUMN 4, "PLACA DEL VEHICULO: ", x.placa_transp
|
|
{
|
|
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 2 LINES
|
|
END REPORT
|
|
|
|
#--------------- PAGO AL CONTADO --------------------------------------------#
|
|
FUNCTION veprfu001()
|
|
DEFINE
|
|
rdeposito, deposito, i INT,
|
|
xmontoDeposito,
|
|
valorComision,
|
|
xvalorck,
|
|
xvalorCr,
|
|
xvalorEfectivo,
|
|
xvalorComision,
|
|
xvalorLink
|
|
DEC(18, 2),
|
|
entradaDiario VARCHAR(25),
|
|
tetb09, tetb01, tetb08, cgtb04, ucgtb04, vetb60, qcctb09,cgtb12 STRING
|
|
OPEN WINDOW captura
|
|
AT 7, 12
|
|
WITH FORM "vefmwd013"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 1, COMMENT LINE LAST)
|
|
INPUT BY NAME pagos.*, tasa
|
|
BEFORE INPUT
|
|
|
|
CALL plataformapago()
|
|
IF ch_itbi = 'S' THEN
|
|
LET selec =
|
|
"select a.simbolo from exterior.dbo.vetb00060 a WHERE a.ventas = ?"
|
|
|
|
ELSE
|
|
LET selec =
|
|
"select a.simbolo from marmotech.dbo.vetb00061 a WHERE a.ventas = ?"
|
|
|
|
END IF
|
|
|
|
PREPARE csimbolo FROM selec
|
|
EXECUTE csimbolo INTO pmoneda USING fact_gral.ventas
|
|
|
|
CALL cuenta()
|
|
# NEXT FIELD cuenta_no
|
|
DISPLAY "fact gral ",fact_gral.*
|
|
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 = 0
|
|
LET pagos.factura = fact_gral.factura
|
|
LET pagos.valor_cheque = 0
|
|
LET efectivo_pesos=0
|
|
LET ck_pesos=0
|
|
LET link_pesos=0
|
|
LET tarjeta_pesos=0
|
|
LET tasa=NULL
|
|
|
|
LET pagos.monto_link = 0
|
|
LET pagos.monto_cr = 0
|
|
LET pagos.fecha_factura = TODAY
|
|
--
|
|
|
|
DISPLAY BY NAME pagos.*, fact_gral.total_fact, tasa,
|
|
efectivo_pesos, ck_pesos, tarjeta_pesos, link_pesos
|
|
NEXT FIELD cuenta_no
|
|
AFTER FIELD factura
|
|
IF pagos.factura IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD factura
|
|
ELSE
|
|
{ SELECT a.fecha_factura,a.tipo_cliente,a.sec_cliente,b.nombre,
|
|
a.neto,b.cod_provincia,a.sub_total,a.monto_itbi
|
|
INTO
|
|
fact_gral.fecha_factura,fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,fact_gral.nombre,fact_gral.total_fact,
|
|
codigo_provincia,fact_gral.sub_total,fact_gral.itbi
|
|
FROM vetb00002 a,vetb00004 b
|
|
WHERE a.factura = pagos.factura AND a.tipo_cliente = b.tipo_cliente AND
|
|
a.sec_cliente = b.sec_cliente AND a.status_t IS NULL
|
|
}
|
|
|
|
SELECT UNIQUE b.calle, b.casa_num, b.barrio
|
|
INTO descrip1, descrip2, descrip3
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = fact_gral.tipo_cliente
|
|
AND b.sec_cliente = fact_gral.sec_cliente
|
|
|
|
SELECT d.nombre_provincia
|
|
INTO fact_gral.ciudad
|
|
FROM vetb00020 d
|
|
WHERE d.cod_provincia = codigo_provincia
|
|
END IF
|
|
LET fact_gral.factura = pagos.factura
|
|
|
|
AFTER FIELD cuenta_no
|
|
IF pagos.cuenta_no IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
|
|
LET cgtb12=" SELECT a.ventas FROM marmotech.dbo.cgtb00012 a ",
|
|
" WHERE a.cuenta_no=? "
|
|
|
|
PREPARE cgtb012 FROM cgtb12
|
|
EXECUTE cgtb012 USING pagos.cuenta_no INTO tipo_cuenta
|
|
|
|
|
|
AFTER FIELD valor_efectivo
|
|
DISPLAY "tipo cuenta ",tipo_cuenta
|
|
IF tipo_cuenta=1 THEN
|
|
LET efectivo_pesos=pagos.valor_efectivo*tasa
|
|
ELSE
|
|
DISPLAY "efectivo ",efectivo_pesos
|
|
LET efectivo_pesos=pagos.valor_efectivo
|
|
END IF
|
|
|
|
DISPLAY BY NAME efectivo_pesos
|
|
AFTER FIELD valor_cheque
|
|
IF tipo_cuenta=1 THEN
|
|
LET ck_pesos=pagos.valor_cheque*tasa
|
|
ELSE
|
|
LET ck_pesos=pagos.valor_cheque
|
|
END IF
|
|
|
|
display BY NAME ck_pesos
|
|
AFTER FIELD monto_link
|
|
IF tipo_cuenta=1 THEN
|
|
LET link_pesos=pagos.monto_link*tasa
|
|
ELSE
|
|
LET link_pesos=pagos.monto_link
|
|
END IF
|
|
DISPLAY BY NAME link_pesos
|
|
AFTER FIELD monto_cr
|
|
IF tipo_cuenta=1 THEN
|
|
LET tarjeta_pesos=pagos.monto_cr*tasa
|
|
ELSE
|
|
LET tarjeta_pesos=pagos.monto_cr
|
|
END IF
|
|
DISPLAY BY NAME tarjeta_pesos
|
|
#NEXT FIELD detalle
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
IF ch_itbi = "S" THEN
|
|
LET respuesta =
|
|
fgl_winquestion(
|
|
"INFO",
|
|
"SI CANCELA EN ESTE PUNTO, DEBES ANULAR FACTURA EN <C>, ESTAS SEGURO?",
|
|
"NO",
|
|
"YES|NO",
|
|
"QUESTION",
|
|
0)
|
|
IF respuesta = "YES" THEN
|
|
ROLLBACK WORK
|
|
EXIT INPUT
|
|
ELSE
|
|
CONTINUE INPUT
|
|
END IF
|
|
END IF
|
|
|
|
EXIT INPUT
|
|
END IF
|
|
|
|
IF pagos.nombre IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD nombre
|
|
END IF
|
|
|
|
IF pagos.cuenta_no IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
|
|
# Cuenta en pesos y cliente en dolares: la tasa es obligatoria y no puede ser 1 (igual que ccprmt001)
|
|
IF tipo_cuenta = 1 AND fact_gral.ventas <> 1 THEN
|
|
IF tasa IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tasa
|
|
ELSE
|
|
IF tasa <= 1 THEN
|
|
CALL fgl_winmessage(
|
|
"TASA NO PERMITIDA",
|
|
"EL CLIENTE ES EN DOLARES Y LA CUENTA DE DEPOSITO ESTA EN PESOS.\n\nDEBE REGISTRAR LA TASA DE CAMBIO (MAYOR QUE 1). NO SE PERMITE DEJARLA EN 1.",
|
|
"STOP")
|
|
NEXT FIELD tasa
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
IF tasa IS NULL THEN
|
|
LET tasa = 1
|
|
END IF
|
|
|
|
# Recalcula los valores en pesos con la tasa final del formulario (solo si la cuenta es en pesos)
|
|
IF tipo_cuenta = 1 THEN
|
|
LET efectivo_pesos = pagos.valor_efectivo * tasa
|
|
LET ck_pesos = pagos.valor_cheque * tasa
|
|
LET link_pesos = pagos.monto_link * tasa
|
|
LET tarjeta_pesos = pagos.monto_cr * tasa
|
|
ELSE
|
|
LET efectivo_pesos = pagos.valor_efectivo
|
|
LET ck_pesos = pagos.valor_cheque
|
|
LET link_pesos = pagos.monto_link
|
|
LET tarjeta_pesos = pagos.monto_cr
|
|
END IF
|
|
|
|
IF pagos.monto_cr > 0 AND pagos.plataforma IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD plataforma
|
|
END IF
|
|
IF pagos.monto_cr = 0 THEN
|
|
LET pagos.plataforma = 0
|
|
END IF
|
|
LET pagos.valor_total =
|
|
pagos.valor_cheque
|
|
+ pagos.monto_cr
|
|
+ pagos.valor_efectivo
|
|
+ pagos.monto_link
|
|
|
|
#BUSCA LA COMISION
|
|
LET pagos.comision = 0
|
|
LET pagos.comision = 0
|
|
IF pagos.plataforma > 0 THEN
|
|
LET qcctb09 =
|
|
"SELECT ISNULL(a.comisiones,0) FROM marmotech.dbo.cctb00009 a
|
|
WHERE a.id = ?
|
|
"
|
|
PREPARE bcctb09 FROM qcctb09
|
|
EXECUTE bcctb09 INTO pagos.comision USING pagos.plataforma
|
|
IF pagos.comision = 0 THEN
|
|
CALL msg(1683)
|
|
NEXT FIELD plataforma
|
|
END IF
|
|
LET valorComision = pagos.monto_cr * (pagos.comision / 100)
|
|
END IF
|
|
DISPLAY BY NAME pagos.valor_total, pagos.comision
|
|
|
|
IF pagos.valor_total > fact_gral.total_fact THEN
|
|
CALL msg(168)
|
|
NEXT FIELD valor_cheque
|
|
END IF
|
|
# El recibo al contado tiene que ser igual al pago total de la factura
|
|
IF pagos.valor_total < fact_gral.total_fact THEN
|
|
CALL fgl_winmessage(
|
|
"MONTO NO COINCIDE",
|
|
"EL MONTO DEL RECIBO TIENE QUE SER IGUAL AL PAGO DE LA FACTURA.",
|
|
"STOP")
|
|
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"
|
|
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
|
|
|
|
#--------------------- AFECTACIONES AL DIARIO GENERAL Y DEPOSITOS-----------------------------
|
|
|
|
CALL numeroDeposito(
|
|
pagos.cuenta_no,
|
|
pagos.fecha_factura,
|
|
localidad,
|
|
fact_gral.ventas,
|
|
pagos.plataforma)
|
|
RETURNING rdeposito,
|
|
xmontoDeposito,
|
|
xvalorck,
|
|
xvalorCr,
|
|
xvalorEfectivo,
|
|
xvalorComision,
|
|
xvalorLink, xefectivo_pesos, xck_pesos, xlink_pesos, xcr_pesos
|
|
DISPLAY "Asi llego el numero: ", rdeposito
|
|
IF rdeposito = 0 THEN
|
|
LET tetb09 = "SELECT a.num_doc FROM marmotech.dbo.tetb00009 a"
|
|
|
|
PREPARE ntetb09 FROM tetb09
|
|
EXECUTE ntetb09 INTO deposito
|
|
|
|
IF deposito IS NULL THEN
|
|
LET deposito = 0
|
|
LET tetb09 =
|
|
"INSERT INTO marmotech.dbo.tetb00009 VALUES (?)"
|
|
PREPARE itetb09 FROM tetb09
|
|
EXECUTE itetb09 USING deposito
|
|
END IF
|
|
|
|
LET deposito = deposito + 1
|
|
LET tetb09 = "UPDATE marmotech.dbo.tetb00009 SET num_doc = ?"
|
|
|
|
PREPARE utetb09 FROM tetb09
|
|
EXECUTE utetb09 USING deposito
|
|
|
|
DISPLAY BY NAME deposito
|
|
|
|
END IF
|
|
#INSERTAR EN LA TABLA DE DEPOSITOS
|
|
DISPLAY "antes de insertar en tetb0001: ",
|
|
deposito,
|
|
" rdeposito ",
|
|
rdeposito
|
|
|
|
|
|
LET monto_dep=pagos.valor_total
|
|
IF fact_gral.ventas!=1 THEN
|
|
IF tipo_cuenta=1 THEN
|
|
LET monto_dep=efectivo_pesos+tarjeta_pesos+link_pesos+ck_pesos
|
|
END IF
|
|
END IF
|
|
|
|
IF rdeposito = 0 THEN
|
|
LET tetb01 =
|
|
"
|
|
INSERT INTO marmotech.dbo.tetb00001 (num_doc,cuenta_no,fecha,monto,sucursal,us_crea,fech_crea,
|
|
monto_efectivo,monto_ck, monto_tarjeta, monto_link,p_comision,v_comision,plataforma,efectivo_pesos,tarjeta_pesos,
|
|
link_pesos,ck_pesos,ventas)
|
|
VALUES (?, ?, ?, ?, ?, ?,getdate(), ?, ?, ?, ?, ?, ?, ?,?,?,?,?,?)
|
|
"
|
|
PREPARE itetb01 FROM tetb01
|
|
EXECUTE itetb01
|
|
USING deposito,
|
|
pagos.cuenta_no,
|
|
pagos.fecha_factura,
|
|
monto_dep,
|
|
localidad,
|
|
usuarios,
|
|
pagos.valor_efectivo,
|
|
pagos.valor_cheque,
|
|
pagos.monto_cr,
|
|
pagos.monto_link,
|
|
pagos.comision,
|
|
valorComision,
|
|
pagos.plataforma,efectivo_pesos,tarjeta_pesos,link_pesos,ck_pesos,fact_gral.ventas
|
|
ELSE
|
|
DISPLAY "en el update ", rdeposito
|
|
LET tetb01 =
|
|
"
|
|
UPDATE marmotech.dbo.tetb00001 SET monto = ? + ?,
|
|
monto_efectivo = ? + ?,
|
|
monto_tarjeta = ? + ?,
|
|
monto_ck = ? + ?,
|
|
monto_link = ? + ?,
|
|
efectivo_pesos = ? + ?,
|
|
ck_pesos = ? + ?,
|
|
link_pesos = ? + ?,
|
|
tarjeta_pesos = ? + ?,
|
|
v_comision = ISNULL(v_comision,0)+ ?
|
|
WHERE num_doc = ?
|
|
"
|
|
PREPARE utetb01 FROM tetb01
|
|
EXECUTE utetb01
|
|
USING xmontoDeposito,
|
|
monto_dep,
|
|
xvalorEfectivo,
|
|
pagos.valor_efectivo,
|
|
xvalorCr,
|
|
pagos.monto_cr,
|
|
xvalorck,
|
|
pagos.valor_cheque,
|
|
xvalorLink,pagos.monto_link,
|
|
xefectivo_pesos,efectivo_pesos,
|
|
xck_pesos,ck_pesos,
|
|
xlink_pesos,link_pesos,
|
|
xcr_pesos,tarjeta_pesos,
|
|
valorComision,
|
|
rdeposito
|
|
|
|
END IF
|
|
DISPLAY "al tratar de insertar en tetb00008 ", deposito
|
|
LET tetb08 =
|
|
"
|
|
INSERT INTO marmotech.dbo.tetb00008
|
|
(num_doc,tipo_doc,documento,fecha,tipo_cliente,sec_cliente,nombre,valor,us_crea,fech_crea)
|
|
VALUES(?,'PC', ?, ?, ?, ?, ?, ?, ?,getdate())
|
|
"
|
|
PREPARE itetb08 FROM tetb08
|
|
EXECUTE itetb08
|
|
USING deposito,
|
|
pagos.documento,
|
|
pagos.fecha_factura,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.nombre,
|
|
pagos.valor_total,
|
|
usuarios
|
|
|
|
#----------------------------------------------------------------------------------------------------------
|
|
|
|
IF fact_gral.total_fact <> 0 THEN
|
|
|
|
IF pagos.valor_total > 0 THEN
|
|
LET pagos.valor_total = pagos.valor_total * -1
|
|
END IF
|
|
#----------------------------------------------------------------------------------------------
|
|
# GENERA REGISTROS PARA LA ENTRADA AL DIARIO GENERAL
|
|
#----------------------------------------------------------------------------------------------
|
|
|
|
LET vetb60 =
|
|
"SELECT a.idEntrada
|
|
FROM marmotech.dbo.vetb00060 a WHERE a.tipo_cliente = ?"
|
|
|
|
PREPARE idvetb60 FROM vetb60
|
|
EXECUTE idvetb60 INTO XidEntrada USING pagos.tipo_cliente
|
|
|
|
CALL GeneraEntradaDiario(
|
|
usuarios,
|
|
'RECIBOS INGRESOS',
|
|
XidEntrada,
|
|
pagos.cuenta_no,
|
|
pagos.fecha_factura,
|
|
pagos.valor_total,
|
|
0,
|
|
0,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.ventas,
|
|
0,
|
|
pagos.documento,
|
|
pagos.comision)
|
|
RETURNING generaE, registroEntrada
|
|
|
|
FOR i = 1 TO registroEntrada.getLength()
|
|
IF registroEntrada[i].referenciaEntrada IS NOT NULL THEN
|
|
LET entradaDiario = registroEntrada[i].referenciaEntrada
|
|
DISPLAY "SECUENCIA ENTRADA DIARIO: ", entradaDiario
|
|
END IF
|
|
END FOR
|
|
#-----------------------------------------------------------------------------------------------
|
|
|
|
INSERT INTO cctb00001(
|
|
cuenta_no,
|
|
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,
|
|
valor_link,
|
|
sucid,
|
|
p_comision,
|
|
v_comision,
|
|
plataforma,
|
|
num_doc_deposito,
|
|
referenciaEntrada,efectivo_pesos,tarjeta_pesos,link_pesos,ck_pesos,tasa)
|
|
VALUES(pagos.cuenta_no,
|
|
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(),
|
|
'1',
|
|
pagos.valor_efectivo,
|
|
pagos.valor_cheque,
|
|
pagos.monto_cr,
|
|
pagos.monto_link,
|
|
localidad,
|
|
pagos.comision,
|
|
valorComision,
|
|
pagos.plataforma,
|
|
deposito,
|
|
entradaDiario,efectivo_pesos,tarjeta_pesos,link_pesos,ck_pesos,tasa)
|
|
|
|
INSERT INTO cctb00011(
|
|
cod_cia,
|
|
num_doc,
|
|
tipo_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
comentario,
|
|
us_crea,
|
|
fech_crea,
|
|
SucID,
|
|
cod_emp_sec,
|
|
valor_recibo)
|
|
VALUES(fact_gral.cod_cia,
|
|
pagos.documento,
|
|
'PC',
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
observacion,
|
|
SUSER_SNAME(),
|
|
GETDATE(),
|
|
localidad,
|
|
fact_gral.sec_vend,
|
|
pagos.valor_total)
|
|
|
|
UPDATE cctb00003
|
|
SET ult_recibo = pagos.documento,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE tipo_doc = "PC"
|
|
|
|
IF pagos.valor_total < 0 THEN
|
|
LET pagos.valor_total = pagos.valor_total * -1
|
|
END IF
|
|
|
|
#ACTUALIZACION CONTABILIDAD GENERAL
|
|
IF generaE THEN
|
|
|
|
LET cgtb04 =
|
|
"
|
|
INSERT INTO marmotech.dbo.cgtb00004
|
|
(fecha,tipo,ref, cuenta_no, detalle_1, departamento, debito,credito,us_crea,fech_crea,tipo_doc_cxc,num_doc_cxc,
|
|
tipo_cliente,sec_cliente,sucid,valor_original,nombre_proveedor)
|
|
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?,GETDATE(),
|
|
'PC', ?, ?, ?, ?, ?,?)
|
|
"
|
|
PREPARE icgtb04 FROM cgtb04
|
|
|
|
LET ucgtb04 =
|
|
"
|
|
UPDATE marmotech.dbo.cctb00001 SET referenciaEntrada = ?
|
|
WHERE num_Doc = ? AND tipo_doc = 'PC' AND sucid = ?
|
|
"
|
|
PREPARE upcgtb04 FROM ucgtb04
|
|
|
|
FOR idx = 1 TO registroEntrada.getLength()
|
|
IF registroEntrada[idx].cuenta_no IS NOT NULL THEN
|
|
IF registroEntrada[idx].debito < 0 THEN
|
|
LET registroEntrada[idx].debito = registroEntrada[idx].debito *-1
|
|
END IF
|
|
IF registroEntrada[idx].credito < 0 THEN
|
|
LET registroEntrada[idx].credito = registroEntrada[idx].credito *-1
|
|
END IF
|
|
|
|
EXECUTE icgtb04
|
|
USING registroEntrada[idx].fecha,
|
|
registroEntrada[idx].tipo,
|
|
registroEntrada[idx].referenciaEntrada,
|
|
registroEntrada[idx].cuenta_no,
|
|
registroEntrada[idx].detalle,
|
|
registroEntrada[idx].departamento,
|
|
registroEntrada[idx].debito,
|
|
registroEntrada[idx].credito,
|
|
usuarios,
|
|
pagos.documento,
|
|
fact_gral.tipo_cliente,
|
|
fact_Gral.sec_cliente,
|
|
localidad,
|
|
pagos.valor_total,
|
|
fact_gral.nombre
|
|
|
|
EXECUTE upcgtb04
|
|
USING registroEntrada[idx].referenciaEntrada,
|
|
pagos.documento,
|
|
localidad
|
|
END IF
|
|
END FOR
|
|
|
|
CALL defecto(
|
|
usuarios, clave, impresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
|
|
START REPORT volante TO archivo
|
|
|
|
OUTPUT TO REPORT volante(pagos.*)
|
|
FINISH REPORT volante
|
|
RUN imprime
|
|
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
NEXT FIELD monto_cr
|
|
END IF
|
|
END INPUT
|
|
CLOSE WINDOW captura
|
|
|
|
END FUNCTION
|
|
|
|
REPORT volante(y)
|
|
|
|
DEFINE y RECORD
|
|
documento LIKE vetb00002.factura,
|
|
cuenta_no VARCHAR(8),
|
|
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, monto_link DEC(12, 2),
|
|
plataforma INT,
|
|
comision DEC(12, 2),
|
|
valor_total DEC(12, 2)
|
|
END RECORD
|
|
|
|
DEFINE doble CHAR(1)
|
|
DEFINE comp_off, negras, negras_of, italic, italic_of, normal CHAR(2)
|
|
DEFINE solicitante CHAR(30)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
|
|
LET normal = ASCII 27, ASCII 80
|
|
LET negras = ASCII 27, ASCII 69
|
|
LET negras_of = ASCII 27, ASCII 70
|
|
LET doble = ASCII 14
|
|
LET italic = ASCII 27, ASCII 52
|
|
LET italic_of = ASCII 27, ASCII 53
|
|
LET comp_off = ASCII 18
|
|
|
|
PRINT COLUMN 70, comp_off, ASCII 27, ASCII 80
|
|
IF y.tipo_cliente <> 19 AND y.tipo_cliente <> 18 THEN
|
|
PRINT COLUMN 5,
|
|
negras,
|
|
p_companias.nombre CLIPPED,
|
|
negras_of,
|
|
COLUMN 72,
|
|
TODAY USING "dd/mm/yyyy"
|
|
|
|
PRINT COLUMN 5,
|
|
p_companias.direccion CLIPPED,
|
|
" TEL. ",
|
|
p_companias.telefono
|
|
ELSE
|
|
SKIP 2 LINES
|
|
END IF
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 15, italic, "RECIBO DE INGRESO"
|
|
SKIP 2 LINE
|
|
|
|
LET valor_orig = Y.valor_total
|
|
LET valor_letras = NULL
|
|
IF valor_orig < 0 THEN
|
|
LET valor_orig = valor_orig * -1
|
|
END IF
|
|
DISPLAY "valor rec ", valor_orig
|
|
CALL convierte(valor_orig)
|
|
|
|
PRINT COLUMN 5, doble, "NO. DOCUMENTO:", y.documento USING "&&&&&&"
|
|
PRINT COLUMN 5, "RECIBIMOS DE: ", negras, y.nombre, negras_of
|
|
PRINT COLUMN 5, "DIRECCION: ", negras, y.direccion, negras_of
|
|
PRINT COLUMN 5, "LOCALIDAD: ", negras, y.ciudad, negras_of
|
|
PRINT COLUMN 5,
|
|
"LA SUMA DE: ",
|
|
negras,
|
|
valor_letras CLIPPED,
|
|
negras_of #,
|
|
#COLUMN 56, "RD$ ",negras,x.total_fact using "###,###,###.##",negras_of
|
|
PRINT COLUMN 5,
|
|
"VALOR RECIBIDO: ",
|
|
COLUMN 25,
|
|
"EN EFECTIVO: ",
|
|
negras,
|
|
y.valor_efectivo USING "##,###,###.##",
|
|
negras_of,
|
|
COLUMN 58,
|
|
"TRANSFERENCIA: ",
|
|
negras,
|
|
y.valor_cheque USING "###,###,###.##",
|
|
negras_of
|
|
PRINT COLUMN 25, "TARJETA: ", y.monto_cr USING "##,###,###.##"
|
|
|
|
PRINT COLUMN 5,
|
|
"CHEQUE NO: ",
|
|
negras,
|
|
y.cheque_no,
|
|
negras_of,
|
|
"BANCO: ",
|
|
negras,
|
|
y.banco CLIPPED,
|
|
negras_of
|
|
# PRINT COLUMN 5, "LOCALIDAD: ",negras,t1 clipped ,negras_of
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 1,
|
|
"------------------------------------------------------------------------------"
|
|
PRINT COLUMN 5,
|
|
"FECHA",
|
|
COLUMN 20,
|
|
"FACTURA",
|
|
COLUMN 39,
|
|
"VALOR FACTURA",
|
|
COLUMN 60,
|
|
"NETO COBRADO"
|
|
PRINT COLUMN 1,
|
|
"------------------------------------------------------------------------------"
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 3,
|
|
y.fecha_factura USING "dd/mm/yyyy",
|
|
COLUMN 20,
|
|
y.factura USING "&&&&&&",
|
|
COLUMN 38,
|
|
fact_gral.total_fact USING "###,###,###.##",
|
|
COLUMN 58,
|
|
y.valor_total USING "###,###,###.##"
|
|
ON LAST ROW
|
|
|
|
SKIP 4 LINE
|
|
PRINT COLUMN 5,
|
|
'OBSERVACION: ',
|
|
observacion WORDWRAP RIGHT MARGIN 80
|
|
PRINT italic_of
|
|
PRINT normal
|
|
END REPORT
|
|
|
|
FUNCTION anular()
|
|
DEFINE documento_anular RECORD
|
|
nombrefile,
|
|
rnc_emisor,
|
|
cantidadEncf,
|
|
fechaAnulacion,
|
|
numeroLineas,
|
|
tipoeCF,
|
|
secuenciaeCFdesde,
|
|
secuenciaeCFhasta,
|
|
cantidadeCFanulados
|
|
STRING
|
|
END RECORD
|
|
DEFINE
|
|
msg STRING,
|
|
correos, subject, procedimiento, cuerpo_correo VARCHAR(100),
|
|
fecha_xc VARCHAR(10),
|
|
motivo VARCHAR(200)
|
|
LET INT_FLAG = FALSE
|
|
CALL ui.Interface.loadStyles("formularios")
|
|
OPEN WINDOW anula
|
|
AT 7, 5
|
|
WITH FORM "vefmwd006"
|
|
ATTRIBUTE(BORDER,
|
|
COMMENT LINE LAST - 1,
|
|
PROMPT LINE LAST,
|
|
FORM LINE FIRST + 1)
|
|
|
|
INPUT BY NAME fact_gral.cod_cia, p_fact_no, motivo
|
|
BEFORE INPUT
|
|
DISPLAY sucnombre TO sucnombre
|
|
AFTER FIELD p_fact_no
|
|
SELECT UNIQUE CONVERT(CHAR(10), a.fecha_factura, 103),
|
|
a.orden,
|
|
a.tipo_cliente,
|
|
a.sec_cliente,
|
|
neto,
|
|
a.conduce,
|
|
a.bodega
|
|
INTO fact_gral.fecha_factura,
|
|
fact_gral.orden,
|
|
fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.total_fact,
|
|
fact_gral.conduce,
|
|
fact_gral.bodega
|
|
FROM vetb00002 a
|
|
WHERE a.factura = p_fact_no
|
|
AND a.status_t IS NULL
|
|
AND a.fech_crea > '01/01/2009'
|
|
AND a.cod_cia = fact_Gral.cod_cia
|
|
AND a.sucid = localidad
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 102
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD p_fact_no
|
|
END IF
|
|
SELECT a.nombre
|
|
INTO fact_gral.nombre
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
|
|
DISPLAY BY NAME fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,
|
|
fact_gral.total_fact,
|
|
fact_gral.nombre,
|
|
fact_gral.fecha_factura
|
|
ATTRIBUTE(BLUE)
|
|
|
|
#CONTROL DEVOLUCIONES
|
|
SELECT DISTINCT a.fact_no
|
|
FROM iptb00006 a
|
|
# WHERE a.cod_mov in (12,13) and CONVERT(int,a.fact_no) = p_fact_no AND
|
|
WHERE a.cod_mov IN (12, 13)
|
|
AND a.fact_no = p_fact_no
|
|
AND a.fecha > '01/01/2009'
|
|
AND a.status_t IS NULL
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 138
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD p_fact_no
|
|
END IF
|
|
LET p_fechas = fact_gral.fecha_factura
|
|
#CONTROL DOCUMENTO CUENTAS POR COBRAR
|
|
|
|
SELECT DISTINCT a.aplica_a
|
|
FROM cctb00001 a
|
|
WHERE a.aplica_a = p_fact_no
|
|
AND a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
AND a.tipo_doc NOT IN ("FT", "FE", 'AP', 'PC')
|
|
AND a.sucid = localidad
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"NO PUEDE ANULAR FACTURA, TIENE DOCUMENTOS EN CUENTAS POR COBRAR",
|
|
"INFO")
|
|
NEXT FIELD p_fact_no
|
|
END IF
|
|
{ SELECT UNIQUE a.usuario INTO p_usuario FROM seg0001 a
|
|
WHERE a.usuario = SUSER_SNAME()
|
|
|
|
IF p_usuario = "rsierra" THEN
|
|
IF fact_gral.fecha_factura != TODAY THEN
|
|
ERROR "NO PUEDE ANULAR FACTURA QUE NO SEAN DEL DIA DE HOY"
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
}
|
|
CALL prd(fact_gral.fecha_factura, usuarios) RETURNING bandera
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT INPUT
|
|
END IF
|
|
#CONTROL DOCUMENTO CUENTAS POR COBRAR
|
|
SELECT DISTINCT a.aplica_a
|
|
FROM cctb00001 a
|
|
WHERE a.aplica_a = p_fact_no
|
|
AND a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
AND a.tipo_doc NOT IN ("FT", "FE", "AP", "PC")
|
|
AND a.sucid = localidad
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"NO PUEDE ANULAR FACTURA, TIENE DOCUMENTOS EN CUENTAS POR COBRAR",
|
|
"INFO")
|
|
NEXT FIELD p_fact_no
|
|
END IF
|
|
IF fact_gral.orden IS NOT NULL THEN
|
|
LET selec =
|
|
"SELECT distinct a.orden FROM exterior.dbo.vetb00002 a WHERE a.factura_c = ? AND a.sucid = ? and a.status_t is null "
|
|
PREPARE controlf FROM selec
|
|
EXECUTE controlf USING p_fact_no, localidad
|
|
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"NO PUEDE ANULAR FACTURA, TIENE DOCUMENTOS EN FINANZAS",
|
|
"INFO")
|
|
NEXT FIELD p_fact_no
|
|
END IF
|
|
END IF
|
|
LET opt3 =
|
|
FGL_WINQUESTION(
|
|
"PREGUNTA",
|
|
"Esta seguro de Anular Esta Factura?",
|
|
"yes",
|
|
"Yes|no",
|
|
"question",
|
|
0)
|
|
|
|
LET opt3 = UPSHIFT(opt3)
|
|
|
|
IF opt3 = "YES" THEN
|
|
|
|
BEGIN WORK
|
|
UPDATE vetb00002
|
|
SET observaciones = motivo,
|
|
status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = GETDATE()
|
|
WHERE factura = p_fact_no
|
|
AND fech_crea > '01/01/2009'
|
|
AND cod_cia = fact_Gral.cod_cia
|
|
AND sucid = localidad
|
|
|
|
{ EN COMENTARIO PORQUE ESTE PROGRAMA NO ACTUALIZA INVENTARIO
|
|
UPDATE iptb00006 SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE num_doc = p_fact_no AND cod_mov IN (30,31,32,55) AND
|
|
fech_crea > datetime (2006-03-31 08:00) year to minute and cod_cia = fact_Gral.cod_cia
|
|
}
|
|
#ANULACION PARA LOS OUTLETS
|
|
UPDATE iptb00006
|
|
SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE num_doc = p_fact_no
|
|
AND cod_mov = 94
|
|
AND bodega = fact_gral.bodega
|
|
|
|
----------------------------------------------------------------------------------------------------
|
|
UPDATE iptb00006
|
|
SET iptb00006.factura = NULL,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE iptb00006.factura = p_fact_no
|
|
AND num_doc = fact_gral.conduce
|
|
AND bodega = fact_gral.bodega
|
|
AND status_T IS NULL
|
|
|
|
UPDATE vetb00003
|
|
SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE()
|
|
WHERE factura = p_fact_no
|
|
AND fech_crea > '01/01/2009'
|
|
AND cod_cia = fact_Gral.cod_cia
|
|
AND sucid = localidad
|
|
|
|
UPDATE cctb00001
|
|
SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE()
|
|
WHERE num_doc = p_fact_no
|
|
AND (tipo_doc = "FT" OR tipo_doc = "FE")
|
|
AND fech_crea > '01/01/2009'
|
|
AND cod_cia = fact_Gral.cod_cia
|
|
AND sucid = localidad
|
|
|
|
UPDATE cctb00001
|
|
SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE()
|
|
WHERE aplica_a = p_fact_no
|
|
AND tipo_doc = "PC"
|
|
AND fech_crea > '01/01/2009'
|
|
AND cod_cia = fact_Gral.cod_cia
|
|
AND sucid = localidad
|
|
|
|
UPDATE cctb00001
|
|
SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE()
|
|
WHERE aplica_a = p_fact_no
|
|
AND tipo_doc = "AP"
|
|
AND sucid = localidad
|
|
|
|
# ANULACION DE LAS SERIES
|
|
IF fact_gral.ventas = "1" THEN
|
|
LET p_codigo = 30
|
|
ELSE
|
|
LET p_codigo = 31
|
|
END IF
|
|
UPDATE vetb00042
|
|
SET status_t = "E", us_mod = usuarios, fech_mod = GETDATE()
|
|
WHERE factura = p_fact_no AND cod_mov = p_codigo
|
|
|
|
COMMIT WORK
|
|
# ANULAR EN EXTERIOR
|
|
IF fact_gral.tipo_cliente <> 19
|
|
AND fact_gral.tipo_cliente <> 18 THEN
|
|
SET CONNECTION "IFMX"
|
|
LET factura_xc = NULL
|
|
SELECT DISTINCT a.factura,
|
|
CONVERT(VARCHAR(10), a.fecha_factura, 103),
|
|
ISNULL(a.estado_dgii, 'NO TIENE')
|
|
INTO factura_xc, fecha_xc, p.estado
|
|
FROM vetb00002 a
|
|
WHERE a.factura_c = p_fact_no
|
|
AND a.sucid = localidad
|
|
AND a.status_t IS NULL
|
|
DISPLAY "ESTADO: ", p.estado, " factura ", factura_xc
|
|
IF factura_xc IS NOT NULL
|
|
AND (p.estado = 'Rechazado'
|
|
OR p.estado = 'NO TIENE'
|
|
OR p.estado = ''
|
|
OR p.estado IS NULL
|
|
OR p.estado = 'ERROR') THEN
|
|
|
|
# ASIGNACION VALORES PARA EL API ANULACION DGII
|
|
# BUSCA EL NCF
|
|
SELECT DISTINCT a.codigo_dgii, a.ncf
|
|
INTO codigodgii, kncf
|
|
FROM vetb00072 a
|
|
WHERE a.tipo_doc = 'FT'
|
|
AND a.documento = factura_xc
|
|
AND a.sucid = localidad
|
|
|
|
BEGIN WORK
|
|
UPDATE vetb00002
|
|
SET observaciones = motivo,
|
|
status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = GETDATE()
|
|
WHERE factura = factura_xc
|
|
AND fech_crea > '01/01/2009'
|
|
AND cod_cia = fact_Gral.cod_cia
|
|
AND sucid = localidad
|
|
|
|
UPDATE iptb00006
|
|
SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE num_doc = factura_xc
|
|
AND cod_mov IN (30, 31, 32, 55)
|
|
|
|
UPDATE vetb00003
|
|
SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = GETDATE()
|
|
WHERE factura = factura_xc
|
|
AND fech_crea > '01/01/2009'
|
|
AND cod_cia = fact_Gral.cod_cia
|
|
AND sucid = localidad
|
|
|
|
UPDATE cctb00001
|
|
SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = GETDATE()
|
|
WHERE num_doc = factura_xc
|
|
AND (tipo_doc = "FT" OR tipo_doc = "FE")
|
|
AND fech_crea > '01/01/2009'
|
|
AND cod_cia = fact_Gral.cod_cia
|
|
AND sucid = localidad
|
|
|
|
UPDATE cctb00001
|
|
SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = GETDATE()
|
|
WHERE aplica_a = factura_xc
|
|
AND tipo_doc = "PC"
|
|
AND fech_crea > '01/01/2009'
|
|
AND cod_cia = fact_Gral.cod_cia
|
|
AND sucid = localidad
|
|
|
|
UPDATE cctb00001
|
|
SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = GETDATE()
|
|
WHERE aplica_a = factura_xc
|
|
AND tipo_doc = "AP"
|
|
AND sucid = localidad
|
|
|
|
COMMIT WORK
|
|
|
|
SET CONNECTION "MSSQL"
|
|
LET msg =
|
|
"SE ANULO LA FACTURA CON NCF NO.",
|
|
factura_xc USING "&&&&&&&&"
|
|
CALL fgl_winmessage("INFO", msg, "INFO")
|
|
|
|
LET subject =
|
|
"FACTURA ANULADA ",
|
|
factura_xc USING "&&&&&&&",
|
|
"CON LA FECHA ",
|
|
fecha_xc
|
|
|
|
SET CONNECTION "MSSQL"
|
|
LET numero_msg = 82
|
|
CALL msg(numero_msg)
|
|
EXIT INPUT
|
|
ELSE
|
|
LET msg =
|
|
"NO ES POSIBLE ANULAR FACTURA EN FINANZAS, TIENE ESTADO ",
|
|
p.estado CLIPPED
|
|
CALL fgl_winmessage("INFO", msg, "INFO")
|
|
|
|
CONTINUE INPUT
|
|
END IF
|
|
|
|
END IF
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
# Este Int_flag es porque tuve que salir del input con el int_flag verdadero
|
|
# y asi poder salir del window sin problemas
|
|
|
|
LET fact_gral.fecha_factura = TODAY
|
|
|
|
CLOSE WINDOW anula
|
|
END FUNCTION
|
|
|
|
FUNCTION precios()
|
|
# AQUI HAY QUE BUSCAR EL PRECIO PARA CALCULAR POR CLIENTE
|
|
LET p_costos1 = 0
|
|
SELECT precio
|
|
INTO p_costos1
|
|
FROM vetb00025
|
|
WHERE ventas = fact_gral.ventas
|
|
AND tipo_cliente = fact_gral.tipo_cliente
|
|
AND sec_cliente = fact_gral.sec_cliente
|
|
AND cod_n = fact_det[curr].cod_n
|
|
AND cod_grupo = fact_det[curr].cod_grupo
|
|
AND cod_tipo = fact_det[curr].cod_tipo
|
|
AND cod_sec = fact_det[curr].cod_sec
|
|
AND status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
SELECT precio
|
|
INTO p_costos1
|
|
FROM vetb00025
|
|
WHERE ventas = fact_gral.ventas
|
|
AND tipo_cliente IS NULL
|
|
AND sec_cliente IS NULL
|
|
AND cod_n = fact_det[curr].cod_n
|
|
AND cod_grupo = fact_det[curr].cod_grupo
|
|
AND cod_tipo = fact_det[curr].cod_tipo
|
|
AND cod_sec = fact_det[curr].cod_sec
|
|
AND status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 85
|
|
CALL msg(numero_msg)
|
|
LET verdad = "N"
|
|
END IF
|
|
|
|
END IF
|
|
|
|
LET fact_det[curr].precio = p_costos1
|
|
END FUNCTION
|
|
|
|
FUNCTION ver_desc()
|
|
OPEN WINDOW descuentos
|
|
AT 10, 5
|
|
WITH FORM "vefmwd007"
|
|
ATTRIBUTE(BORDER,
|
|
FORM LINE FIRST + 1,
|
|
COMMENT LINE LAST - 1,
|
|
MESSAGE LINE LAST)
|
|
CALL set_count(h - 1)
|
|
DISPLAY ARRAY descuenta TO s_desc.*
|
|
CLOSE WINDOW descuentos
|
|
END FUNCTION
|
|
|
|
FUNCTION detalles()
|
|
OPEN WINDOW wdetalle
|
|
AT 12, 2
|
|
WITH FORM "vefmwd075"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 1)
|
|
INPUT BY NAME observacion WITHOUT DEFAULTS
|
|
CLOSE WINDOW wdetalle
|
|
END FUNCTION
|
|
|
|
FUNCTION cantidad_desp(forden, fcod_n, fcod_tipo, fcod_grupo, fcod_sec)
|
|
DEFINE
|
|
forden INTEGER,
|
|
fcod_n, fcod_tipo, fcod_grupo, fcod_sec SMALLINT
|
|
|
|
SELECT SUM(b.cantidad)
|
|
INTO cant_vend
|
|
FROM vetb00002 a, vetb00003 b
|
|
WHERE a.orden = forden
|
|
AND a.fecha_factura > "31122006"
|
|
AND a.factura = b.factura
|
|
AND b.cod_n = fcod_n
|
|
AND b.cod_tipo = fcod_tipo
|
|
AND b.cod_grupo = fcod_grupo
|
|
AND b.cod_sec = fcod_sec
|
|
AND a.status_t IS NULL
|
|
AND b.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET cant_vend = 0
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION actualiza_st(forden)
|
|
DEFINE
|
|
forden INTEGER,
|
|
prod_total, vent_total DEC(8, 2)
|
|
|
|
SELECT SUM(a.cantidad)
|
|
INTO prod_total
|
|
FROM prtb00013 a
|
|
WHERE a.num_oc = forden
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET prod_total = 0
|
|
END IF
|
|
|
|
SELECT SUM(b.cantidad)
|
|
INTO vent_total
|
|
FROM vetb00002 a, vetb00003 b
|
|
WHERE a.orden = forden
|
|
AND a.fecha_factura > "31122000"
|
|
AND a.factura = b.factura
|
|
AND a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
AND a.status_t IS NULL
|
|
AND b.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET vent_total = 0
|
|
END IF
|
|
|
|
#-> display "Vendido : ",vent_total," ","Prod : ",prod_total at 2,15 sleep 3
|
|
|
|
#-> Actualiza la fecha de cierre de la orden de corte vg Wednesday, 17 January, 200112:42:33 PM
|
|
IF vent_total = prod_total THEN
|
|
UPDATE prtb00012
|
|
SET fecha_cierre = fact_gral.fecha_factura
|
|
WHERE @num_oc = forden
|
|
AND @tipo_cliente = fact_gral.tipo_cliente
|
|
AND @sec_cliente = fact_gral.sec_cliente
|
|
|
|
LET prtb09.num_oc = forden
|
|
LET prtb09.fecha = fact_gral.fecha_factura
|
|
LET prtb09.pendiente = "N"
|
|
LET prtb09.detalle =
|
|
"CIERRE DE ORDEN DE PRODUCCION SEGUN FACT. # ",
|
|
fact_gral.factura USING "<<<<<<<",
|
|
" DE FECHA : ",
|
|
fact_gral.fecha_factura USING "dd/mm/yyyy"
|
|
|
|
INSERT INTO prtb00009
|
|
VALUES(prtb09.num_oc,
|
|
prtb09.fecha,
|
|
NULL,
|
|
prtb09.pendiente,
|
|
prtb09.detalle,
|
|
NULL,
|
|
SUSER_SNAME(),
|
|
GETDATE(),
|
|
NULL,
|
|
NULL)
|
|
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION convierte(valor_origen) # Funcion para convertir de valor a letras
|
|
DEFINE consegui CHAR(1)
|
|
DEFINE p,
|
|
miles,
|
|
m,
|
|
k,
|
|
a,
|
|
b,
|
|
d,
|
|
c,
|
|
entero,
|
|
unidades_mi,
|
|
unidades_m,
|
|
unidad,
|
|
mil,
|
|
millon,
|
|
unid_c,
|
|
u
|
|
INTEGER
|
|
DEFINE
|
|
cheles DECIMAL(7, 2),
|
|
valor_origen DEC(12, 2)
|
|
|
|
LET valor_orig = valor_origen
|
|
CALL letras()
|
|
LET valor_letras = NULL
|
|
LET consegui = "N"
|
|
LET entero = valor_orig
|
|
LET cheles = (valor_orig - entero) * 100
|
|
LET unidad = entero / 100
|
|
LET unidad = entero - (unidad * 100)
|
|
LET a = entero / 1000
|
|
LET a = entero - (a * 1000)
|
|
LET d = entero - 19
|
|
|
|
IF d >= 82 THEN
|
|
|
|
LET c = entero / 100
|
|
|
|
# Para Controlar los miles y los cientos
|
|
|
|
IF c <= 9 THEN
|
|
LET valor_letras = valor_letras CLIPPED, " ", centenas[c] CLIPPED
|
|
ELSE
|
|
LET c = entero / 1000
|
|
LET b = entero / 1000000
|
|
END IF
|
|
|
|
IF d > 19 THEN
|
|
LET d = unidad - 19
|
|
END IF
|
|
|
|
IF unidad > 0 AND unidad < 20 THEN
|
|
LET d = unidad
|
|
LET valor_letras = valor_letras CLIPPED, " ", unidades1[d] CLIPPED
|
|
LET consegui = "S"
|
|
END IF
|
|
|
|
ELSE
|
|
IF d > 0 AND d <= 81 THEN
|
|
LET valor_letras = valor_letras CLIPPED, " ", decenas[d] CLIPPED
|
|
LET consegui = "S"
|
|
END IF
|
|
END IF
|
|
|
|
# Para controlar los miles
|
|
|
|
IF entero > 999 THEN
|
|
LET unidades_m = a / 100
|
|
LET unidades_m = a - (unidades_m * 100)
|
|
LET valor_letras = NULL
|
|
|
|
IF c = 1 THEN
|
|
LET valor_letras = "MIL"
|
|
END IF
|
|
|
|
IF c > 1 AND c <= 19 THEN
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", unidades1[c] CLIPPED, " ", "MIL"
|
|
END IF
|
|
|
|
IF c >= 20 AND c <= 999 THEN
|
|
|
|
IF c < 82 THEN
|
|
LET c = c - 19
|
|
LET valor_letras = valor_letras CLIPPED, " ", decenas[c] CLIPPED
|
|
|
|
ELSE
|
|
LET k = c / 100
|
|
IF k > 0 AND k < 10 THEN
|
|
LET unid_c = c - (k * 100) # AQUI FUE
|
|
IF k > 1 THEN
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", centenas[k] CLIPPED
|
|
ELSE
|
|
IF k = 1 THEN
|
|
IF unid_c > 0 THEN
|
|
LET valor_letras =
|
|
valor_letras CLIPPED,
|
|
" ",
|
|
centenas[k] CLIPPED
|
|
ELSE
|
|
LET valor_letras =
|
|
valor_letras CLIPPED,
|
|
" ",
|
|
decenas[81] CLIPPED
|
|
END IF
|
|
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
LET unid_c = c - (k * 100)
|
|
|
|
IF unid_c > 0 AND unid_c < 20 THEN
|
|
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", unidades1[unid_c] CLIPPED
|
|
|
|
ELSE
|
|
LET unid_c = unid_c - 19
|
|
IF unid_c > 0 AND unid_c <= 81 THEN
|
|
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", decenas[unid_c] CLIPPED
|
|
|
|
LET consegui = "S"
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF c > 82 AND c < 100 AND consegui <> "S" THEN
|
|
LET c = c - 19
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", decenas[c] CLIPPED
|
|
|
|
END IF
|
|
|
|
IF c > 100 AND consegui <> "S" THEN
|
|
LET c = c - 119
|
|
IF c > 0 AND c <= 81 THEN
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", decenas[c] CLIPPED
|
|
LET consegui = "N"
|
|
END IF
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
LET valor_letras = valor_letras CLIPPED, " ", "MIL"
|
|
END IF
|
|
|
|
LET c = a
|
|
IF c > 100 THEN
|
|
|
|
LET c = c / 100
|
|
|
|
LET valor_letras = valor_letras CLIPPED, " ", centenas[c] CLIPPED
|
|
END IF
|
|
|
|
IF c = 100 THEN
|
|
LET valor_letras = valor_letras CLIPPED, " ", decenas[81] CLIPPED
|
|
END IF
|
|
|
|
IF unidades_m > 0 AND unidades_m - 19 <= 81 THEN
|
|
|
|
LET a = unidades_m - 19
|
|
IF a > 0 AND a <= 81 THEN
|
|
LET valor_letras = valor_letras CLIPPED, " ", decenas[a] CLIPPED
|
|
LET consegui = "S"
|
|
ELSE
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", unidades1[unidades_m] CLIPPED
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
#========================================================================================
|
|
# Para Controlar cantidades en millones
|
|
|
|
IF entero > 999999 THEN
|
|
LET c = 0
|
|
LET miles = entero - 1000000
|
|
|
|
LET m = miles / 1000
|
|
|
|
LET p = miles - (m * 1000)
|
|
|
|
LET u = m / 100
|
|
|
|
LET u = m - (u * 100)
|
|
|
|
LET unidades_mi = p
|
|
LET unidades_mi = unidades_mi / 100
|
|
LET unidades_mi = p - (unidades_mi * 100)
|
|
LET valor_letras = NULL
|
|
|
|
IF b = 1 THEN
|
|
LET valor_letras = "UN MILLON"
|
|
END IF
|
|
|
|
IF b > 1 AND b <= 19 THEN
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", unidades1[b] CLIPPED, " ", "MILLONES"
|
|
END IF
|
|
|
|
IF b >= 20 AND b <= 999999 THEN
|
|
|
|
IF b < 82 THEN
|
|
|
|
LET b = b - 19
|
|
LET valor_letras =
|
|
valor_letras CLIPPED,
|
|
" ",
|
|
decenas[b] CLIPPED,
|
|
" ",
|
|
"MILLONES"
|
|
ELSE
|
|
LET k = b / 100
|
|
LET valor_letras =
|
|
valor_letras CLIPPED,
|
|
" ",
|
|
centenas[k] CLIPPED,
|
|
" ",
|
|
"MILLONES"
|
|
END IF
|
|
END IF
|
|
LET b = m / 100
|
|
|
|
IF b > 0 AND b <= 9 THEN
|
|
|
|
IF b = 1 THEN
|
|
LET valor_letras = valor_letras CLIPPED, " CIEN "
|
|
ELSE
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", centenas[b] CLIPPED
|
|
END IF
|
|
IF u > 0 AND u <= 19 THEN
|
|
|
|
IF u = 1 THEN
|
|
LET unidades1[1] = "UN"
|
|
END IF
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", unidades1[u] CLIPPED
|
|
|
|
END IF
|
|
LET u = u - 19
|
|
# IF u > 0 and u <= 19 THEN
|
|
|
|
# IF u = 1 THEN
|
|
# LET unidades1[1] = "UN"
|
|
# END IF
|
|
# LET valor_letras = valor_letras clipped," ",unidades1[u] clipped
|
|
|
|
# END IF
|
|
|
|
IF u >= 1 AND u < 82 THEN
|
|
# LET u = u - 19 # adicione este 13/5/2011 La quite el 30/5/2011
|
|
LET valor_letras = valor_letras CLIPPED, " ", decenas[u] CLIPPED
|
|
|
|
END IF
|
|
LET valor_letras = valor_letras CLIPPED, " ", "MIL"
|
|
|
|
END IF
|
|
|
|
IF p > 100 THEN
|
|
LET p = p / 100
|
|
|
|
LET valor_letras = valor_letras CLIPPED, " ", centenas[p] CLIPPED
|
|
END IF
|
|
LET unidades_mi = unidades_mi - 19
|
|
|
|
IF unidades_mi > 0 AND unidades_mi <= 81 THEN
|
|
LET m = unidades_mi
|
|
LET valor_letras = valor_letras CLIPPED, " ", decenas[m] CLIPPED
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF unidad > 0 AND unidad < 20 AND consegui = "N" THEN
|
|
LET d = unidad
|
|
|
|
LET valor_letras = valor_letras CLIPPED, " ", unidades1[d] CLIPPED
|
|
|
|
END IF
|
|
|
|
IF unidad >= 20 AND d <= 81 AND consegui = "N" THEN
|
|
|
|
LET valor_letras = valor_letras CLIPPED, " ", decenas[d] CLIPPED
|
|
END IF
|
|
|
|
LET valor_letras =
|
|
valor_letras CLIPPED,
|
|
" ",
|
|
pmoneda CLIPPED,
|
|
" CON",
|
|
" ",
|
|
cheles USING "&&",
|
|
"/100"
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION letras()
|
|
|
|
LET unidades1[1] = "UNO"
|
|
LET unidades1[2] = "DOS"
|
|
LET unidades1[3] = "TRES"
|
|
LET unidades1[4] = "CUATRO"
|
|
LET unidades1[5] = "CINCO"
|
|
LET unidades1[6] = "SEIS"
|
|
LET unidades1[7] = "SIETE"
|
|
LET unidades1[8] = "OCHO"
|
|
LET unidades1[9] = "NUEVE"
|
|
LET unidades1[10] = "DIEZ"
|
|
LET unidades1[11] = "ONCE"
|
|
LET unidades1[12] = "DOCE"
|
|
LET unidades1[13] = "TRECE"
|
|
LET unidades1[14] = "CATORCE"
|
|
LET unidades1[15] = "QUINCE"
|
|
LET unidades1[16] = "DIECISEIS"
|
|
LET unidades1[17] = "DIECISIETE"
|
|
LET unidades1[18] = "DIECIOCHO"
|
|
LET unidades1[19] = "DIECINUEVE"
|
|
|
|
LET decenas[1] = "VEINTE"
|
|
LET decenas[2] = "VEINTE Y UNO"
|
|
LET decenas[3] = "VEINTE Y DOS"
|
|
LET decenas[4] = "VEINTE Y TRES"
|
|
LET decenas[5] = "VEINTE Y CUATRO"
|
|
LET decenas[6] = "VEINTE Y CINCO"
|
|
LET decenas[7] = "VEINTE Y SEIS"
|
|
LET decenas[8] = "VEINTE Y SIETE"
|
|
LET decenas[9] = "VEINTE Y OCHO"
|
|
LET decenas[10] = "VEINTE Y NUEVE"
|
|
LET decenas[11] = "TREINTA"
|
|
LET decenas[12] = "TREINTA Y UNO"
|
|
LET decenas[13] = "TREINTA Y DOS"
|
|
LET decenas[14] = "TREINTA Y TRES"
|
|
LET decenas[15] = "TREINTA Y CUATRO"
|
|
LET decenas[16] = "TREINTA Y CINCO"
|
|
LET decenas[17] = "TREINTA Y SEIS"
|
|
LET decenas[18] = "TREINTA Y SIETE"
|
|
LET decenas[19] = "TREINTA Y OCHO"
|
|
LET decenas[20] = "TREINTA Y NUEVE"
|
|
LET decenas[21] = "CUARENTA"
|
|
LET decenas[22] = "CUARENTA Y UNO"
|
|
LET decenas[23] = "CUARENTA Y DOS"
|
|
LET decenas[24] = "CUARENTA Y TRES"
|
|
LET decenas[25] = "CUARENTA Y CUATRO"
|
|
LET decenas[26] = "CUARENTA Y CINCO"
|
|
LET decenas[27] = "CUARENTA Y SEIS"
|
|
LET decenas[28] = "CUARENTA Y SIETE"
|
|
LET decenas[29] = "CUARENTA Y OCHO"
|
|
LET decenas[30] = "CUARENTA Y NUEVE"
|
|
LET decenas[31] = "CINCUENTA"
|
|
LET decenas[32] = "CINCUENTA Y UNO"
|
|
LET decenas[33] = "CINCUENTA Y DOS"
|
|
LET decenas[34] = "CINCUENTA Y TRES"
|
|
LET decenas[35] = "CINCUENTA Y CUATRO"
|
|
LET decenas[36] = "CINCUENTA Y CINCO"
|
|
LET decenas[37] = "CINCUENTA Y SEIS"
|
|
LET decenas[38] = "CINCUENTA Y SIETE"
|
|
LET decenas[39] = "CINCUENTA Y OCHO"
|
|
LET decenas[40] = "CINCUENTA Y NUEVE"
|
|
LET decenas[41] = "SESENTA"
|
|
LET decenas[42] = "SESENTA Y UNO"
|
|
LET decenas[43] = "SESENTA Y DOS"
|
|
LET decenas[44] = "SESENTA Y TRES"
|
|
LET decenas[45] = "SESENTA Y CUATRO"
|
|
LET decenas[46] = "SESENTA Y CINCO"
|
|
LET decenas[47] = "SESENTA Y SEIS"
|
|
LET decenas[48] = "SESENTA Y SIETE"
|
|
LET decenas[49] = "SESENTA Y OCHO"
|
|
LET decenas[50] = "SESENTA Y NUEVE"
|
|
LET decenas[51] = "SETENTA"
|
|
LET decenas[52] = "SETENTA Y UNO"
|
|
LET decenas[53] = "SETENTA Y DOS"
|
|
LET decenas[54] = "SETENTA Y TRES"
|
|
LET decenas[55] = "SETENTA Y CUATRO"
|
|
LET decenas[56] = "SETENTA Y CINCO"
|
|
LET decenas[57] = "SETENTA Y SEIS"
|
|
LET decenas[58] = "SETENTA Y SIETE"
|
|
LET decenas[59] = "SETENTA Y OCHO"
|
|
LET decenas[60] = "SETENTA Y NUEVE"
|
|
LET decenas[61] = "OCHENTA"
|
|
LET decenas[62] = "OCHENTA Y UNO"
|
|
LET decenas[63] = "OCHENTA Y DOS"
|
|
LET decenas[64] = "OCHENTA Y TRES"
|
|
LET decenas[65] = "OCHENTA Y CUATRO"
|
|
LET decenas[66] = "OCHENTA Y CINCO"
|
|
LET decenas[67] = "OCHENTA Y SEIS"
|
|
LET decenas[68] = "OCHENTA Y SIETE"
|
|
LET decenas[69] = "OCHENTA Y OCHO"
|
|
LET decenas[70] = "OCHENTA Y NUEVE"
|
|
LET decenas[71] = "NOVENTA"
|
|
LET decenas[72] = "NOVENTA Y UNO"
|
|
LET decenas[73] = "NOVENTA Y DOS"
|
|
LET decenas[74] = "NOVENTA Y TRES"
|
|
LET decenas[75] = "NOVENTA Y CUATRO"
|
|
LET decenas[76] = "NOVENTA Y CINCO"
|
|
LET decenas[77] = "NOVENTA Y SEIS"
|
|
LET decenas[78] = "NOVENTA Y SIETE"
|
|
LET decenas[79] = "NOVENTA Y OCHO"
|
|
LET decenas[80] = "NOVENTA Y NUEVE"
|
|
LET decenas[81] = "CIEN"
|
|
|
|
LET centenas[1] = "CIENTO"
|
|
LET centenas[2] = "DOCIENTOS"
|
|
LET centenas[3] = "TRESCIENTOS"
|
|
LET centenas[4] = "CUATROCIENTOS"
|
|
LET centenas[5] = "QUINIENTOS"
|
|
LET centenas[6] = "SEISCIENTOS"
|
|
LET centenas[7] = "SETECIENTOS"
|
|
LET centenas[8] = "OCHOCIENTOS"
|
|
LET centenas[9] = "NOVECIENTOS"
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION after_all()
|
|
|
|
# Calculo del sub-total de la factura
|
|
LET fact_gral.itbi = 0
|
|
LET fact_gral.sub_total = 0
|
|
LET fact_gral.total_fact = 0
|
|
LET fact_gral.desc_valor = 0
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cantidad IS NOT NULL THEN
|
|
LET fact_gral.sub_total =
|
|
fact_gral.sub_total
|
|
+ (fact_det[idx].cantidad * fact_det[idx].precio)
|
|
END IF
|
|
END FOR
|
|
|
|
DISPLAY BY NAME fact_gral.sub_total
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF fact_det[idx].cantidad IS NOT NULL THEN
|
|
LET fact_det[idx].monto_fact =
|
|
fact_det[idx].cantidad * fact_det[idx].precio
|
|
|
|
IF fact_det[idx].cantidad_2
|
|
> 0 THEN #-> calcula el valor en descuento para cada articulo vg
|
|
LET valor_desc = 0
|
|
LET valor_desc =
|
|
fact_det[idx].monto_fact * (fact_det[idx].cantidad_2 / 100)
|
|
LET fact_gral.desc_valor = fact_gral.desc_valor + valor_desc
|
|
LET fact_det[idx].monto_fact =
|
|
fact_det[idx].monto_fact - valor_desc
|
|
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
DISPLAY BY NAME fact_gral.desc_valor
|
|
|
|
# Calcula el porciento de ITBIS de la factura dependiendo del porciento
|
|
# especificado por el usuario
|
|
IF ch_itbi = 'S' THEN
|
|
IF fact_gral.porc_itbi IS NOT NULL THEN
|
|
LET fact_gral.itbi =
|
|
((fact_gral.sub_total - fact_gral.desc_valor)
|
|
* fact_gral.porc_itbi
|
|
/ 100)
|
|
#- LET fact_gral.itbi=(fact_gral.sub_total * fact_gral.porc_itbi/100)
|
|
ELSE
|
|
LET fact_gral.itbi = 0
|
|
END IF
|
|
END IF
|
|
LET itbi = fact_gral.itbi USING "###,###,###.##"
|
|
DISPLAY BY NAME fact_gral.itbi ATTRIBUTE(BOLD)
|
|
|
|
# Calculo total de la factura
|
|
|
|
LET fact_gral.total_fact =
|
|
(fact_gral.sub_total - fact_gral.desc_valor) + fact_gral.itbi
|
|
|
|
|
|
DISPLAY BY NAME fact_gral.total_fact ATTRIBUTE(BOLD)
|
|
|
|
END FUNCTION
|
|
{
|
|
FUNCTION despiece()
|
|
OPEN WINDOW despieza AT 15,5 WITH FORM "vefmwd017"
|
|
|
|
|
|
END FUNCTION
|
|
FUNCTION despiecerow()
|
|
DEFINE plado1,plado2,plado3,pcantidad,pmedida DEC(15,4)
|
|
|
|
DECLARE despiecer CURSOR FOR
|
|
SELECT a.etiqueta,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
|
|
FROM iptb00025 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 AND
|
|
a.cod_mov = p_codigo AND
|
|
a.num_Doc = x.conduce
|
|
LET total_unidades = 0
|
|
FOREACH despiecer INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida
|
|
|
|
|
|
FUNCTION ccondicion()
|
|
DEFINE kcond_pago SMALLINT, dcondicion CHAR(30)
|
|
|
|
LET pcondicion = ui.combobox.forname("formonly.cond_pago")
|
|
|
|
DECLARE bcondicion CURSOR FOR
|
|
SELECT a.cond_pago,a.descrip,a.dias FROM vetb00012 a
|
|
CALL pcondicion.clear()
|
|
FOREACH bcondicion INTO condicion.cond_pago,condicion.descrip,condicion.dias
|
|
CALL pcondicion.additem(condicion.cond_pago,condicion.descrip)
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
}
|
|
FUNCTION veprmf001()
|
|
DEFINE
|
|
tot_porc DEC(8, 2),
|
|
cod_fact SMALLINT,
|
|
imprime_ncf VARCHAR(3)
|
|
SET CONNECTION "MSSQL"
|
|
INPUT BY NAME impresion1
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
CALL msg(2)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
END INPUT
|
|
CONSTRUCT criterio
|
|
ON a.factura,
|
|
a.fecha_factura,
|
|
a.tipo_cliente,
|
|
a.sec_cliente,
|
|
a.orden,
|
|
a.cotizacion_no,
|
|
a.bodega,
|
|
a.conduce,
|
|
a.cod_vend
|
|
FROM factura,
|
|
fecha_factura,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
orden,
|
|
pcotizacion,
|
|
bodega,
|
|
conduce,
|
|
factura_e
|
|
BEFORE CONSTRUCT
|
|
CALL bodegas('1')
|
|
AFTER CONSTRUCT
|
|
IF int_flag THEN
|
|
CALL msg(2)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT CONSTRUCT
|
|
END CONSTRUCT
|
|
LET selec =
|
|
" SELECT a.cod_cia,a.ventas,a.zona,a.factura,a.bodega,a.conduce,convert(char(10),a.fecha_conduce,103),convert(char(10),a.fecha_factura,103),a.tipo_cliente, ",
|
|
" a.sec_cliente,g.nombre,ISNULL(RTRIM(b.direccion_cliente),' '), ",
|
|
" l.nombre_provincia,a.prima_us,a.porc_Desc,a.cond_pago,a.orden,convert(char(10),a.fecha_orden,103),a.porc_itbi,a.sec_vend, ",
|
|
" ISNULL(RTRIM(d.nom1_emp),' ') + ' ' + ISNULL(RTRIM(d.apell1_emp),' '),' ', ' ',' ',' ', ",
|
|
" convert(char(10),a.fecha_embarque,103),' ',a.sub_total,a.monto_Desc, ",
|
|
" a.monto_itbi,a.neto,a.cod_vend,a.documento,a.tipo_factura,a.descripcion_documento,a.documento_ref, ",
|
|
" a.cotizacion_no,g.num_rnc,CASE a.status_t WHEN 'E' THEN 'ANULADA' ELSE 'ACTIVA' END,a.us_crea,a.fech_crea,a.us_mod,a.fech_mod, ",
|
|
" a.observaciones ",
|
|
" FROM vetb00002 a left outer join ",
|
|
" vetb00050 b on a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente AND a.cotizacion_no = b.cotizacion_no, ",
|
|
" vetb00004 g left outer join vetb00020 l ON g.cod_provincia =l.cod_provincia , adtb00003 d,vetb00060 k ",
|
|
" WHERE a.ventas = k.ventas and a.tipo_cliente = k.tipo_cliente and ",
|
|
" a.tipo_cliente = g.tipo_cliente and ",
|
|
criterio CLIPPED,
|
|
" and ",
|
|
" a.sec_cliente = g.sec_cliente and ",
|
|
" a.sec_vend = d.num_emp and a.sucid=",
|
|
localidad,
|
|
" ORDER BY a.factura "
|
|
PREPARE comando FROM selec
|
|
DECLARE consulta SCROLL CURSOR FOR comando
|
|
OPEN consulta
|
|
|
|
FETCH FIRST consulta
|
|
INTO fact_gral.*,
|
|
factura_e,
|
|
documento_ref,
|
|
proforma,
|
|
descripcion_doc,
|
|
pdocumento_Ref,
|
|
pcotizacion,
|
|
cliente_bas.num_rnc,
|
|
estadoFactura,
|
|
cliente_bas.us_crea,
|
|
fcrea,
|
|
cliente_bas.us_mod,
|
|
ccrea,
|
|
observacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
CALL info()
|
|
CALL informacion(
|
|
fact_gral.conduce, fact_gral.ventas, fact_gral.bodega, pcotizacion)
|
|
LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
CALL bodegas('1')
|
|
# CALL busca_ncf(fact_gral.factura) RETURNING codigodgii,kncf,descripcion_ncf,factura_xc
|
|
|
|
MENU "NAVEGACION:"
|
|
COMMAND "Siguiente"
|
|
FETCH NEXT consulta
|
|
INTO fact_gral.*,
|
|
factura_e,
|
|
documento_ref,
|
|
proforma,
|
|
descripcion_doc,
|
|
pdocumento_Ref,
|
|
pcotizacion,
|
|
cliente_bas.num_rnc,
|
|
estadoFactura,
|
|
cliente_bas.us_crea,
|
|
fcrea,
|
|
cliente_bas.us_mod,
|
|
ccrea,
|
|
observacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
CALL info()
|
|
CALL informacion(
|
|
fact_gral.conduce,
|
|
fact_gral.ventas,
|
|
fact_gral.bodega,
|
|
pcotizacion)
|
|
LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
# CALL busca_ncf(fact_gral.factura) RETURNING codigodgii,kncf,descripcion_ncf,factura_xc
|
|
|
|
COMMAND "Anterior"
|
|
FETCH PREVIOUS consulta
|
|
INTO fact_gral.*,
|
|
factura_e,
|
|
documento_ref,
|
|
proforma,
|
|
descripcion_doc,
|
|
pdocumento_Ref,
|
|
pcotizacion,
|
|
cliente_bas.num_rnc,
|
|
estadoFactura,
|
|
cliente_bas.us_crea,
|
|
fcrea,
|
|
cliente_bas.us_mod,
|
|
ccrea,
|
|
observacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
CALL info()
|
|
CALL informacion(
|
|
fact_gral.conduce,
|
|
fact_gral.ventas,
|
|
fact_gral.bodega,
|
|
pcotizacion)
|
|
LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
# CALL busca_ncf(fact_gral.factura) RETURNING codigodgii,kncf,descripcion_ncf,factura_xc
|
|
|
|
COMMAND "Primero"
|
|
FETCH FIRST consulta
|
|
INTO fact_gral.*,
|
|
factura_e,
|
|
documento_ref,
|
|
proforma,
|
|
descripcion_doc,
|
|
pdocumento_Ref,
|
|
pcotizacion,
|
|
cliente_bas.num_rnc,
|
|
estadoFactura,
|
|
cliente_bas.us_crea,
|
|
fcrea,
|
|
cliente_bas.us_mod,
|
|
ccrea,
|
|
observacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
CALL info()
|
|
CALL informacion(
|
|
fact_gral.conduce,
|
|
fact_gral.ventas,
|
|
fact_gral.bodega,
|
|
pcotizacion)
|
|
LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
# CALL busca_ncf(fact_gral.factura) RETURNING codigodgii,kncf,descripcion_ncf,factura_xc
|
|
|
|
COMMAND "Ultimo"
|
|
FETCH LAST consulta
|
|
INTO fact_gral.*,
|
|
factura_e,
|
|
documento_ref,
|
|
proforma,
|
|
descripcion_doc,
|
|
pdocumento_Ref,
|
|
pcotizacion,
|
|
cliente_bas.num_rnc,
|
|
estadoFactura,
|
|
cliente_bas.us_crea,
|
|
fcrea,
|
|
cliente_bas.us_mod,
|
|
ccrea,
|
|
observacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
CALL info()
|
|
CALL informacion(
|
|
fact_gral.conduce,
|
|
fact_gral.ventas,
|
|
fact_gral.bodega,
|
|
pcotizacion)
|
|
LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
# CALL busca_ncf(fact_gral.factura) RETURNING codigodgii,kncf,descripcion_ncf,factura_xc
|
|
COMMAND "RECIBO"
|
|
CALL imprecibo()
|
|
COMMAND "ITEMS"
|
|
SET CONNECTION "MSSQL"
|
|
SELECT UNIQUE CONVERT(char(10), a.fecha_oc, 103),
|
|
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
|
|
|
|
SELECT a.nombre, a.cod_zona, a.cod_provincia, a.telefono, a.num_rnc
|
|
INTO fact_gral.nombre,
|
|
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
|
|
|
|
LET ch_encabeza = "S"
|
|
CALL fact_det.clear()
|
|
LET factura_old = fact_gral.factura
|
|
CALL defecto(
|
|
usuarios, clave, impresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
|
|
DISPLAY BY NAME imprime
|
|
IF impresion1 = 'MA' THEN
|
|
START REPORT imp_fact TO archivo
|
|
ELSE
|
|
LET r_output = "PDF"
|
|
CALL configureOutput(r_output) RETURNING HANDLER
|
|
START REPORT imp_fact TO XML HANDLER HANDLER
|
|
|
|
END IF
|
|
LET selec =
|
|
"SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,b.descrip_esp,b.unidad_med, ",
|
|
" a.cantidad,a.precio,a.cantidad_2,(a.cantidad*a.precio)*(a.cantidad_2/100), ",
|
|
" (a.cantidad*a.precio) -(a.cantidad*a.precio)*(a.cantidad_2/100) ",
|
|
" FROM vetb00003 a,iptb00002 b ",
|
|
" WHERE a.factura = ? AND ",
|
|
" a.cod_n = b.cod_n AND ",
|
|
" a.cod_grupo = b.cod_grupo AND ",
|
|
" a.cod_tipo = b.cod_tipo AND ",
|
|
" a.cod_Sec = b.cod_Sec and ",
|
|
" a.sucid = ? "
|
|
{ ESTA EN COMENTARIO PORQUE ESTABA DANDO UN ERROR DE IDIOMA
|
|
" UNION ",
|
|
"SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,b.descrip_esp,b.unidad_med, ",
|
|
" a.cantidad,a.precio,a.cantidad_2,(a.cantidad*a.precio)*(a.cantidad_2/100), ",
|
|
" (a.cantidad*a.precio) -(a.cantidad*a.precio)*(a.cantidad_2/100) ",
|
|
" FROM historicomtech.dbo.vetb00003 a,historicomtech.dbo.iptb00002 b ",
|
|
" WHERE a.factura = ? AND ",
|
|
" a.cod_n = b.cod_n AND ",
|
|
" a.cod_grupo = b.cod_grupo AND ",
|
|
" a.cod_tipo = b.cod_tipo AND ",
|
|
" a.cod_Sec = b.cod_Sec "
|
|
}
|
|
PREPARE cmdfact FROM selec
|
|
DECLARE busca_items CURSOR FOR cmdfact
|
|
OPEN busca_items USING fact_gral.factura, localidad
|
|
|
|
LET idx = 1
|
|
FOREACH busca_items INTO fact_Det[idx].*
|
|
LET valor_Desc =
|
|
(fact_det[idx].cantidad * fact_det[idx].precio)
|
|
* (fact_Det[idx].cantidad_2 / 100)
|
|
IF valor_desc IS NULL THEN
|
|
LET valor_desc = 0
|
|
END IF
|
|
LET fact_det[idx].monto_fact =
|
|
(fact_Det[idx].precio * fact_det[idx].cantidad) - valor_desc
|
|
LET cod_fact = 1
|
|
LET p_bonifica[idx] = 0
|
|
OUTPUT TO REPORT imp_fact(
|
|
fact_gral.*,
|
|
fact_det[idx].*,
|
|
tot_porc,
|
|
p_bonifica[idx],
|
|
cod_fact)
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL set_count(idx - 1)
|
|
|
|
DISPLAY ARRAY fact_det TO s_fact.*
|
|
FINISH REPORT imp_fact
|
|
IF impresion1 = 'MA' THEN
|
|
RUN imprime
|
|
END IF
|
|
# CONTROL NCF
|
|
SELECT a.ncf
|
|
INTO cliente_ncf
|
|
FROM vetb00060 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
IF cliente_ncf = "S" THEN
|
|
LET imprime_ncf =
|
|
fgl_winquestion(
|
|
"NCF",
|
|
"DESEA IMPRIMIR FACTURA CON NCF?",
|
|
"NO",
|
|
"NO|YES",
|
|
"QUESTION",
|
|
0)
|
|
IF imprime_ncf = "YES" THEN
|
|
### IMPRESION FACTURA CON NCF
|
|
SET CONNECTION "MSSQL"
|
|
|
|
SELECT a.sucid,
|
|
b.sucnombre,
|
|
b.direccion,
|
|
c.nombre_provincia,
|
|
b.telefono,
|
|
b.fax,
|
|
b.rnc
|
|
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
|
|
|
|
LET p_companias.nombre = sucnombre
|
|
|
|
CALL defecto(
|
|
usuarios, clave, impresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
|
|
SET CONNECTION "IFMX"
|
|
|
|
SELECT MAX(a.factura)
|
|
INTO factura_xc
|
|
FROM vetb00002 a
|
|
WHERE a.factura_c = fact_gral.factura
|
|
AND a.sucid = localidad
|
|
DISPLAY factura_xc TO factura1
|
|
DISPLAY "facturas exterior: ", factura_xc
|
|
DISPLAY "factura fact_Gral: ", fact_gral.factura
|
|
LET codigodgii = NULL
|
|
LET kncf = NULL
|
|
LET descripcion = NULL
|
|
SELECT a.codigo_dgii,
|
|
a.ncf,
|
|
b.tipo_ncf,
|
|
CONVERT(CHAR(10), b.fecha_vencimiento, 103),
|
|
b.itbis
|
|
INTO codigodgii,
|
|
kncf,
|
|
descripcion,
|
|
fecha_vencimiento,
|
|
ch_itbi
|
|
FROM vetb00072 a, vetb00071 b
|
|
WHERE a.documento = factura_xc
|
|
AND a.codigo_dgii = b.codigo_dgii
|
|
AND a.tipo_doc = 'FT'
|
|
AND b.disponible = 'S'
|
|
AND a.sucid = localidad
|
|
|
|
IF STATUS <> NOTFOUND THEN
|
|
LET fact_gral.factura = factura_xc
|
|
|
|
{ IF impresion1 = "MA" THEN
|
|
START REPORT imp_fact_ncf TO archivo
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cod_n IS NOT NULL AND
|
|
fact_det[idx].cod_grupo IS NOT NULL AND
|
|
fact_det[idx].cod_tipo IS NOT NULL AND
|
|
fact_det[idx].cod_sec IS NOT NULL AND
|
|
fact_det[idx].cantidad IS NOT NULL AND
|
|
fact_det[idx].cantidad > 0 THEN
|
|
|
|
LET cod_fact = 1
|
|
OUTPUT TO REPORT imp_fact_ncf(fact_gral.*,fact_det[idx].*,tot_porc,
|
|
p_bonifica[idx],cod_fact,kncf,codigodgii)
|
|
|
|
END IF
|
|
END FOR
|
|
|
|
FINISH REPORT imp_fact_ncf
|
|
RUN imprime
|
|
ELSE}
|
|
LET r_filename = "veprmt022.4rp"
|
|
LET r_output = "PDF"
|
|
LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(
|
|
r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(
|
|
r_output) -- changing default
|
|
IF preview = 0 THEN
|
|
CALL fgl_report_selectPreview(
|
|
1) -- changing default
|
|
# CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter")
|
|
ELSE
|
|
CALL fgl_report_selectPreview(preview)
|
|
END IF
|
|
|
|
LET handler =
|
|
fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT imp_factura TO XML HANDLER HANDLER
|
|
|
|
END IF
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
|
|
IF fact_det[idx].cod_n IS NOT NULL
|
|
AND fact_det[idx].cod_grupo IS NOT NULL
|
|
AND fact_det[idx].cod_tipo IS NOT NULL
|
|
AND fact_det[idx].cod_sec IS NOT NULL
|
|
AND fact_det[idx].cantidad IS NOT NULL
|
|
AND fact_det[idx].cantidad > 0 THEN
|
|
|
|
LET cod_fact = 1
|
|
|
|
OUTPUT TO REPORT imp_factura(
|
|
fact_gral.*,
|
|
fact_det[idx].*,
|
|
tot_porc,
|
|
p_bonifica[idx],
|
|
cod_fact,
|
|
kncf,
|
|
codigodgii,
|
|
descripcion,
|
|
observacion,
|
|
usuarios,
|
|
fecha_vencimiento)
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT imp_factura
|
|
|
|
# END IF
|
|
LET fact_gral.factura = factura_old
|
|
SET CONNECTION "MSSQL"
|
|
{ EVITANDO IMPIMIR EN OTRO PRINTER REMOTO
|
|
CALL defecto(usuarios,clave,xcopia) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia
|
|
|
|
|
|
START REPORT imp_fact_ncf TO archivo
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cod_n IS NOT NULL AND
|
|
fact_det[idx].cod_grupo IS NOT NULL AND
|
|
fact_det[idx].cod_tipo IS NOT NULL AND
|
|
fact_det[idx].cod_sec IS NOT NULL AND
|
|
fact_det[idx].cantidad IS NOT NULL AND
|
|
fact_det[idx].cantidad > 0 THEN
|
|
|
|
LET cod_fact = 1
|
|
OUTPUT TO REPORT imp_fact_ncf(fact_gral.*,fact_det[idx].*,tot_porc,
|
|
p_bonifica[idx],cod_fact,kncf,codigodgii)
|
|
|
|
END IF
|
|
END FOR
|
|
|
|
FINISH REPORT imp_fact_ncf
|
|
RUN imprime}
|
|
END IF # CLIENTE NCF
|
|
END IF
|
|
END IF
|
|
COMMAND "BuscaTrack"
|
|
LET selec =
|
|
"select a.factura_ext from marmotech.dbo.vetb00002 a WHERE a.factura = ? AND a.sucid = ?"
|
|
PREPARE comando_track FROM selec
|
|
EXECUTE comando_track
|
|
INTO factura_xc USING fact_gral.factura, localidad
|
|
|
|
IF factura_xc IS NOT NULL THEN
|
|
LET selec =
|
|
"select a.trackid,a.ultima_respuesta,b.codigo_dgii from exterior.dbo.vetb00002 a,exterior.dbo.vetb00072 b
|
|
WHERE a.factura = ? AND a.sucid = ? AND a.factura = b.documento AND b.tipo_doc = 'FT'"
|
|
PREPARE comando_track FROM selec
|
|
EXECUTE comando_track
|
|
INTO p.trackid, respuesta, codigodgii USING factura_xc,
|
|
localidad
|
|
|
|
DISPLAY "data desde cons: ",
|
|
p.trackid,
|
|
" resp: ",
|
|
respuesta,
|
|
" fe: ",
|
|
factura_xc
|
|
|
|
TRY
|
|
|
|
LET valor_control_ncf =
|
|
fact_gral.total_fact * fact_Gral.prima_us
|
|
IF codigodgii <> 32 THEN
|
|
CALL procesoEncf(
|
|
' ',
|
|
ambiente,
|
|
' ',
|
|
0,
|
|
0,
|
|
'consultatrackid',
|
|
respuesta)
|
|
RETURNING phash, xrespuesta, codigo
|
|
|
|
DISPLAY "estado respuesta: ",
|
|
CURRENT,
|
|
xrespuesta,
|
|
" codigo: ",
|
|
codigo
|
|
CALL util.JSON.parse(xrespuesta, p)
|
|
DISPLAY "estado: ", xrespuesta
|
|
END IF
|
|
IF codigodgii = '32' AND valor_control_ncf < 250000 THEN
|
|
|
|
IF codigo = 200 THEN
|
|
CALL util.JSON.parse(respuesta, p32)
|
|
LET p.estado = p32.estado
|
|
LET p.mensajes[1].valor = p32.mensajes
|
|
|
|
ELSE
|
|
DISPLAY "tomo el P32ERR:", respuesta
|
|
CALL util.JSON.parse(respuesta, p32err)
|
|
LET p.estado = p32err.estado
|
|
LET p.mensajes[1].valor = p32err.mensajes[1].valor
|
|
END IF
|
|
# LET p.estado = p1.estado
|
|
# LET p.secuenciaUtilizada = p1.secuenciaUtilizada
|
|
# LET p.encf = p1.encf
|
|
# LET p.mensajes[1].valor = p1.mensajes
|
|
|
|
DISPLAY "estado 32: ", p.estado
|
|
END IF
|
|
|
|
CATCH
|
|
LET p.estado = 'ERROR'
|
|
LET p.mensajes[1].valor =
|
|
"NO PUDE PARSEAR LA RESPUESTA EN EL PROGRAMA VEPRMT001"
|
|
END TRY
|
|
DISPLAY p.mensajes[1].valor TO mensaje_dgii
|
|
DISPLAY BY NAME p.estado
|
|
END IF
|
|
COMMAND "Retornar"
|
|
CLEAR FORM
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
FUNCTION info()
|
|
LET pcotizacion = NULL
|
|
SELECT a.cotizacion_no
|
|
INTO pcotizacion
|
|
FROM prtb00012 a
|
|
WHERE a.num_oc = fact_gral.orden
|
|
|
|
IF estadofactura = 'ANULADA' THEN
|
|
DISPLAY BY NAME estadofactura ATTRIBUTE(RED)
|
|
ELSE
|
|
DISPLAY BY NAME estadofactura ATTRIBUTE(BLUE)
|
|
END IF
|
|
#BUSQUEDA EN EXTERIOR DEL TRACKID Y ESTADO DGII
|
|
LET selec =
|
|
"SELECT DISTINCT a.trackid,a.estado_dgii FROM exterior.dbo.vetb00002 a
|
|
WHERE a.factura_c = ? and a.sucid = ? and a.status_t is null"
|
|
|
|
PREPARE bfactura FROM selec
|
|
EXECUTE bfactura INTO p.trackid, p.estado USING fact_gral.factura, localidad
|
|
|
|
DISPLAY BY NAME p.trackid, p.estado
|
|
DISPLAY BY NAME fact_gral.*,
|
|
factura_e,
|
|
documento_ref,
|
|
codigodgii,
|
|
kncf,
|
|
descripcion_ncf,
|
|
proforma,
|
|
descripcion_Doc,
|
|
pdocumento_Ref,
|
|
cliente_bas.us_crea,
|
|
fcrea,
|
|
cliente_bas.us_mod,
|
|
ccrea,
|
|
pcotizacion
|
|
|
|
DISPLAY factura_xc TO factura1
|
|
|
|
END FUNCTION
|
|
FUNCTION buscavend()
|
|
SELECT nom1_emp, apell1_emp
|
|
INTO descrip5, descrip6
|
|
FROM adtb00003
|
|
WHERE num_emp = fact_gral.sec_vend
|
|
|
|
LET fact_gral.nombre_vend = descrip5 CLIPPED, " ", descrip6 CLIPPED
|
|
DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE(BLUE)
|
|
|
|
END FUNCTION
|
|
FUNCTION datoscliente()
|
|
|
|
SELECT a.nombre,
|
|
a.limite_credito,
|
|
a.cod_zona,
|
|
a.cod_provincia,
|
|
a.telefono,
|
|
a.num_rnc,
|
|
a.zona_postal
|
|
INTO fact_gral.nombre,
|
|
credito,
|
|
fact_gral.zona,
|
|
codigo_provincia,
|
|
cliente_bas.telefono,
|
|
num_rnc,
|
|
tipodocumento
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
|
|
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
|
|
IF fact_gral.direccion IS NULL THEN
|
|
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
|
|
END IF
|
|
SELECT d.nombre_provincia
|
|
INTO fact_gral.ciudad
|
|
FROM vetb00020 d
|
|
WHERE d.cod_provincia = codigo_provincia
|
|
|
|
# BUSCA RNC EN COTIZACION
|
|
IF pcotizacion IS NOT NULL THEN
|
|
SELECT a.rnc
|
|
INTO num_rnc
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = pcotizacion
|
|
END IF
|
|
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, RTRIM(b.nom1_emp) || ' ' || RTRIM(b.apell1_emp)
|
|
INTO fact_gral.sec_vend, fact_gral.nombre_vend
|
|
FROM prtb00012 a, adtb00003 b
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
AND a.num_oc = fact_gral.orden
|
|
AND a.sec_vend = b.num_emp
|
|
DISPLAY "rnc ",
|
|
num_rnc,
|
|
" ",
|
|
fact_gral.tipo_cliente,
|
|
" ",
|
|
fact_gral.sec_cliente
|
|
DISPLAY BY NAME fact_gral.nombre,
|
|
num_rnc,
|
|
cliente_bas.telefono,
|
|
fact_gral.ciudad,
|
|
fact_gral.direccion,
|
|
fact_gral.nombre_vend,
|
|
fact_gral.sec_vend,
|
|
num_rnc
|
|
END FUNCTION
|
|
FUNCTION imprecibo()
|
|
|
|
WHENEVER ERROR CONTINUE
|
|
CLOSE FORM captura
|
|
|
|
WHENEVER ERROR STOP
|
|
OPEN WINDOW captura
|
|
AT 7, 12
|
|
WITH FORM "vefmwd013"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 1, COMMENT LINE LAST)
|
|
|
|
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.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
|
|
DISPLAY "en recibo: ", localidad, " factura ", pagos.factura
|
|
SELECT a.num_doc, a.valor_efectivo, a.valor_cheque
|
|
INTO pagos.documento, pagos.valor_efectivo, pagos.valor_cheque
|
|
FROM cctb00001 a
|
|
WHERE a.sucid = localidad
|
|
AND a.aplica_a = pagos.factura
|
|
AND a.tipo_doc = 'PC'
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
RETURN
|
|
END IF
|
|
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
|
|
|
|
SELECT a.simbolo
|
|
INTO pmoneda
|
|
FROM vetb00061 a
|
|
WHERE a.ventas = fact_gral.ventas
|
|
LET fact_gral.factura = pagos.factura
|
|
IF pagos.valor_efectivo IS NULL AND pagos.valor_cheque IS NULL THEN
|
|
LET pagos.valor_efectivo = fact_gral.total_fact
|
|
END IF
|
|
DISPLAY BY NAME pagos.*
|
|
CLOSE WINDOW captura
|
|
LET opt =
|
|
fgl_winquestion(
|
|
"RECIBO", "IMPRIME RECIBO?", "YES", "YES|NO", "QUESTION", 0)
|
|
IF opt = "YES" THEN
|
|
CALL defecto(
|
|
usuarios, clave, impresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
|
|
START REPORT volante TO archivo
|
|
|
|
OUTPUT TO REPORT volante(pagos.*)
|
|
FINISH REPORT volante
|
|
RUN imprime
|
|
END IF
|
|
|
|
END FUNCTION
|