Files
MBS/PROYECTO/vedir/veprmt001_5.4gl
T

5486 lines
213 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 SMALLINT,
tmpdireccion CHAR(80)
DEFINE porce,valor_desc,cant_prod,cant_vend,itbis_o,xporciento,credito 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,exito1,exito2,ofertas BOOLEAN,
porcentaje_n DEC(8,2),
fpago,xsecvend,factura_old,factura_xc,cuenta_precio,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,xhash,tipodocumento VARCHAR(10),
xtrack RECORD
trackid,ERROR,mensaje 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,
fecha_factura DATE,
factura LIKE vetb00002.factura,
tipo_cliente INT,
sec_cliente INT,
nombre VARCHAR(100),
direccion VARCHAR(100),
ciudad VARCHAR(100),
cheque_no LIKE cctb00001.num_cheque,
banco LIKE cctb00001.banco,
valor_cheque DECIMAL(12,2),
valor_efectivo DECIMAL (12,2),
monto_cr DEC(12,2),
valor_total DEC(12,2)
END RECORD
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 p1 RECORD
codigo,estado,mensajes,encf,secuenciaUtilizada STRING
END RECORD
}
# {"codigo":2,"estado":"Rechazado","mensajes":[{"codigo":"03","valor":"\n-The 'TipoIngresos' element is invalid - The value '' is invalid according to its datatype 'TipoIngresosType' - The Pattern constraint failed."}],"encf":"E320000000166","secuenciaUtilizada":false}
DEFINE p1 RECORD
trackId,ERROR,mensaje STRING
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 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
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
CALL veprmt001()
ON ACTION buscar
CLEAR FORM
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 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
INTO fact_gral.nombre,credito,codigo_provincia,
cliente_bas.telefono
FROM vetb00004 a
WHERE a.tipo_cliente = fact_gral.tipo_cliente AND
a.sec_cliente = fact_gral.sec_cliente
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" 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
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,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
#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
{ COLOQUE ESTO EN COMENTARIO EL 15/11/2022 BEFORE FIELD nombre
IF pcontroloutlet <> "SI" AND pcontroloutlet2 <> "SI" THEN
NEXT FIELD tipo_cliente
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
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 INTO ch_itbi 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
INTO fact_gral.nombre,fact_gral.direccion,xdireccion_proyecto,num_rnc,emailcliente
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 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 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
INTO fact_gral.nombre,fact_gral.direccion,xdireccion_proyecto,num_rnc,fact_Gral.cond_pago
FROM vetb00050 a
WHERE a.cotizacion_no = pcotizacion
ELSE
IF fact_gral.direccion IS NULL THEN
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 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:
DECLARE buscame CURSOR FOR
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
{ INNER JOIN vetb00051 as c on
d.cotizacion_no = c.cotizacion_no and
a.cod_n = c.cod_n AND
a.area = c.area AND
a.cod_grupo = c.cod_grupo and
a.cod_tipo = c.cod_tipo and
a.cod_Sec = c.cod_Sec
WHERE a.num_oc = fact_gral.orden
UNION
SELECT DISTINCT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.cantidad_2,
c.precio,c.porc_desc,c.id_kit
FROM prtb00013 AS a
INNER JOIN iptb00006 b ON b.conduce_no = a.num_oc and
b.num_doc = fact_gral.conduce and
b.cod_mov = p_codigo 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
b.fecha > "01/01/2008"
INNER JOIN prtb00012 as d on
a.num_oc = d.num_oc AND d.status_t IS NULL
INNER JOIN vetb00031 as c on
d.cotizacion_no = c.cotizacion_no and
a.cod_n = c.cod_n AND
a.area = c.area AND
a.cod_grupo = c.cod_grupo and
a.cod_tipo = c.cod_tipo AND
a.cod_Sec = c.cod_Sec AND
d.status_t IS null
WHERE a.num_oc = fact_gral.orden}
ORDER BY a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec
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
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,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 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
INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med, p_existencia,
documento_detalle[curr].indicadorBienoServicio
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
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
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.tipo_cliente = fact_gral.tipo_cliente AND
a.sec_cliente = fact_gral.sec_cliente 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 fact_det[curr].cantidad > p_existencia THEN
CALL msg(30)
NEXT FIELD cantidad
END IF
NEXT FIELD kit_id
END IF
END IF
BEFORE FIELD precio
IF pcontroloutlet = "SI" THEN
NEXT FIELD kit_id
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
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
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 conduce
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" AND ch_itbi = 'N' THEN
CALL veprfu001()
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)
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)
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
DISPLAY "PRECIO: ",fact_det[idx].precio, " PCOMP ",pprecio[idx]
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 Sado 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' 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 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" THEN
CALL veprfu001()
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)
VALUES (fact_gral.cod_cia,tipo_f,fact_gral.factura,
fact_gral.tipo_cliente,fact_gral.sec_cliente,
fact_gral.sec_vend,fact_gral.fecha_factura,p_fecha_ven,
fact_gral.factura, fact_gral.total_fact,'0',
usuarios,GETDATE(),fact_gral.bodega,localidad,pcotizacion, fact_gral.orden,factura_xc)
END IF
#-> Actulizacion de la tabla de monitoreo de la orden de produccion vg Wednesday, 17 January, 2001 09:33:21 AM
LET prtb09.num_oc = fact_gral.orden
LET prtb09.fecha = fact_gral.fecha_factura
IF cant_vend <> cant_prod THEN
LET prtb09.pendiente = "S"
LET prtb09.detalle = "DESPACHO DE MERCANCIA SEGUN FACT. # ",fact_gral.factura USING "<<<<<<<",
" DE FECHA : ",fact_gral.fecha_factura USING "dd/mm/yyyy"
END IF
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
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
LET documento_encabezado.montoGravadoI1 = (fact_gral.sub_total*fact_gral.prima_us) - (fact_gral.desc_valor * fact_gral.prima_us)
LET documento_encabezado.montoGravadoI2 =0 USING "<&"
LET documento_encabezado.montoGravadoI3 =0 USING "<&"
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)
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(' ',"produccion",' ',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
# CALL procesoEncf(' ',"test",' ',0,0,'consultatrackid',respuesta)
# RETURNING phash,xrespuesta
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 ADICION VEPRMT001"
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" THEN
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)
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)
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"
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,
pagos.valor_total,otro_num_recibo,usuarios,getdate())
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()
OPEN WINDOW captura AT 7,12 WITH FORM "vefmwd013"
ATTRIBUTE (BORDER,FORM LINE FIRST + 1,COMMENT LINE LAST)
INPUT BY NAME pagos.*
BEFORE INPUT
LET pagos.tipo_cliente = fact_gral.tipo_cliente
LET pagos.sec_cliente = fact_gral.sec_cliente
LET pagos.nombre = fact_gral.nombre
LET pagos.direccion = fact_gral.direccion
LET pagos.ciudad = NULL
LET pagos.fecha_factura = fact_gral.fecha_factura
LET pagos.valor_efectivo = fact_gral.total_fact
LET pagos.factura = fact_gral.factura
LET pagos.valor_cheque = 0
LET pagos.valor_efectivo = fact_gral.total_fact
LET pagos.valor_total = fact_gral.total_fact
LET pagos.monto_cr = 0
LET pagos.fecha_factura = TODAY
IF ch_itbi = 'S' THEN
SELECT a.simbolo INTO pmoneda FROM vetb00060 a WHERE a.ventas = fact_gral.ventas
ELSE
SELECT a.simbolo INTO pmoneda FROM vetb00061 a WHERE a.ventas = fact_gral.ventas
END IF
DISPLAY BY NAME pagos.*
AFTER FIELD factura
IF pagos.factura IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD factura
ELSE
{ SELECT a.fecha_factura,a.tipo_cliente,a.sec_cliente,b.nombre,
a.neto,b.cod_provincia,a.sub_total,a.monto_itbi
INTO
fact_gral.fecha_factura,fact_gral.tipo_cliente,
fact_gral.sec_cliente,fact_gral.nombre,fact_gral.total_fact,
codigo_provincia,fact_gral.sub_total,fact_gral.itbi
FROM vetb00002 a,vetb00004 b
WHERE a.factura = pagos.factura AND a.tipo_cliente = b.tipo_cliente AND
a.sec_cliente = b.sec_cliente AND a.status_t IS NULL
}
SELECT b.calle,b.casa_num,b.barrio INTO descrip1,descrip2,descrip3
FROM vetb00005 b
WHERE b.tipo_cliente = fact_gral.tipo_cliente AND
b.sec_cliente = fact_gral.sec_cliente
SELECT d.nombre_provincia INTO fact_gral.ciudad FROM vetb00020 d
WHERE d.cod_provincia = codigo_provincia
END IF
LET fact_gral.factura = pagos.factura
#NEXT FIELD detalle
AFTER FIELD valor_cheque
IF pagos.valor_cheque IS NOT NULL THEN
LET pagos.valor_efectivo = fact_gral.total_fact - pagos.valor_cheque
ELSE
LET pagos.valor_efectivo = fact_gral.total_fact
END IF
DISPLAY BY NAME pagos.valor_efectivo
AFTER FIELD monto_cr
LET pagos.valor_total = pagos.valor_cheque + pagos.monto_cr + pagos.valor_efectivo
DISPLAY BY NAME pagos.valor_total
AFTER INPUT
IF int_flag THEN
LET int_flag = FALSE
RETURN
END IF
IF pagos.nombre IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nombre
END IF
LET pagos.valor_total = pagos.valor_cheque + pagos.monto_cr + pagos.valor_efectivo
DISPLAY BY NAME pagos.valor_total
IF pagos.valor_total > fact_gral.total_fact THEN
CALL msg(168)
NEXT FIELD valor_cheque
END IF
IF pagos.valor_total IS NULL THEN
CALL msg(16)
NEXT FIELD valor_cheque
END IF
LET p_fecha_ven = "01/01/01"
IF fact_gral.total_fact IS NULL THEN
LET fact_gral.total_fact = 0
END IF
IF fact_gral.total_fact <> 0 THEN
SELECT ult_recibo INTO pagos.documento FROM cctb00003 WHERE tipo_doc = "PC"
IF pagos.documento IS NULL THEN
LET pagos.documento = 0
END IF
LET pagos.documento = pagos.documento + 1
IF fact_gral.total_fact > 0 THEN
LET fact_gral.total_fact = fact_gral.total_fact * -1
END IF
IF pagos.valor_total > 0 THEN
LET pagos.valor_total = pagos.valor_total * -1
END IF
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)
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(),'1',
pagos.valor_efectivo,pagos.valor_cheque,pagos.monto_cr,localidad)
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 fact_gral.total_fact < 0 THEN
LET fact_gral.total_fact = fact_gral.total_fact*-1
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
START REPORT volante TO archivo
OUTPUT TO REPORT volante(pagos.*)
FINISH REPORT volante
RUN imprime
ELSE
NEXT FIELD monto_cr
END IF
END INPUT
CLOSE WINDOW captura
END FUNCTION
REPORT volante (y)
DEFINE y RECORD
documento LIKE vetb00002.factura,
fecha_factura DATE,
factura LIKE vetb00002.factura,
tipo_cliente INT,
sec_cliente INT,
nombre VARCHAR(100),
direccion VARCHAR(100),
ciudad VARCHAR(100),
cheque_no LIKE cctb00001.num_cheque,
banco LIKE cctb00001.banco,
valor_cheque DECIMAL(12,2),
valor_efectivo DECIMAL (12,2),
monto_cr DEC(12,2),
valor_total DEC(12,2)
END RECORD
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
LET selec = "SELECT distinct a.orden FROM exterior.dbo.vetb00002 a WHERE a.factura_c = ? AND a.status_t is null "
PREPARE controlf FROM selec
EXECUTE controlf USING p_fact_no
IF STATUS <> NOTFOUND THEN
CALL fgl_winmessage("ERROR","NO PUEDE ANULAR FACTURA, TIENE DOCUMENTOS EN FINANZAS","INFO")
NEXT FIELD p_fact_no
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
{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
IF factura_xc IS NOT NULL AND p.estado = 'Rechazado' 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
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.bodega,a.conduce,a.cod_vend
FROM factura,fecha_factura,tipo_cliente,sec_cliente,orden,
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(' ',"produccion",' ',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
# CALL procesoEncf(' ',"test",' ',0,0,'consultatrackid',respuesta)
# RETURNING phash,xrespuesta
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
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
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
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