Files
MBS/WEBSERVICES/rep_cotizacion_2.4gl
T

1306 lines
64 KiB
Plaintext

IMPORT util
IMPORT os
TYPE t_sync_cmd RECORD
oper STRING,
data STRING
END RECORD
{FUNCTION gen_nombre_archivo(tip_sal)
DEFINE tip_sal,nom_arc STRING,
nro_rep INT
LET nro_rep=nro_rep+1
LET nom_arc="./ArchEnviados/rep_",fgl_getpid() USING "<<<<<<<<<&",
"-",nro_rep USING "<<<<<<<<<&",".",DOWNSHIFT(tip_sal)
RETURN nom_arc
END FUNCTION
}
DEFINE url_verification,estado STRING,
codigo_err INT
FUNCTION rep_cotizacion(s)
DEFINE nombreVendedor,selec,s,s_out,inserta,cliente_ant,cliente_act STRING,
emailcliente VARCHAR(100),
codigodgii VARCHAR(10),
tasaCambio,valorTope DEC(12,2),
secvend_ant,tipo_cliente_ant,sec_cliente_ant INT
DEFINE detalles DYNAMIC ARRAY OF RECORD
secuencia INT,
area SMALLINT,
descripcion_area CHAR(50),
codid VARCHAR(25),
codigo VARCHAR(20),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
# descripcion VARCHAR(100),
cantidad DEC(12,5),
cantidad1 DEC(12,5),
precio DEC(12,2),
porc_desc DEC(12,2),
itbis DEC(12,2),
valor DEC(12,2),
cantidad_reservada DEC(12,5),
fecha_inicio_reserva DATE,
fecha_vence_reserva DATE,
autorizada VARCHAR(10),
idkit INT
END RECORD
DEFINE p RECORD
cotizaciones RECORD
cotizacion_no INT,
fecha DATE,
ventas VARCHAR(1),
tipo_cliente SMALLINT,
sec_cliente INT,
nombre VARCHAR(100),
rnc VARCHAR(11),
nombre_proyecto VARCHAR(60),
direccion_proyecto VARCHAR(60),
direccion_cliente VARCHAR(80),
cond_pago SMALLINT,
descripcion VARCHAR(50),
celular VARCHAR(15),
email VARCHAR(60),
sec_vend INT,
total_bruto DEC(12,2),
monto_desc DEC(12,2),
monto_itbis DEC(12,2),
total_cotizacion DEC(12,2),
contacto VARCHAR(60),
nombre_ciudad VARCHAR(60),
telefono_o VARCHAR(20),
telefono_r VARCHAR(20),
celular1 VARCHAR(20),
soporte VARCHAR(200),
instalador VARCHAR(200),
vendedor_aux VARCHAR(100),
sec_vend_aux INT,
cod_provincia SMALLINT,
nombre_vend VARCHAR(60),
porc_itbis DEC(8,2),
plazo_entrega VARCHAR(100),
comentario VARCHAR(100),
usuario VARCHAR(50),
clave VARCHAR(50),
etiqueta_cotizacion VARCHAR(60),
cod_zona SMALLINT,
codigo VARCHAR(10),
guiId STRING,
sincronizado BOOLEAN,
tipo_documento CHAR(10),
bodega INT,
titulo_bodega VARCHAR(100)
END RECORD,
detalles DYNAMIC ARRAY OF RECORD
secuencia INT,
area SMALLINT,
descripcion_area CHAR(50),
codid VARCHAR(25),
codigo VARCHAR(20),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
# descripcion VARCHAR(100),
cantidad DEC(12,5),
cantidad1 DEC(12,5),
precio DEC(12,2),
porc_desc DEC(12,2),
itbis DEC(12,2),
valor DEC(12,2),
cantidad_reservada DEC(12,5),
fecha_inicio_reserva DATE,
fecha_vence_reserva DATE,
autorizada VARCHAR(10),
idkit INT
END RECORD,
pprima,pitbis DEC(12,2),
puser,pfecha_crea VARCHAR(50)
END RECORD
DEFINE cotizacion RECORD
cotizacion_no INT,
fecha DATE,
ventas VARCHAR(1),
tipo_cliente SMALLINT,
sec_cliente INT,
nombre VARCHAR(100),
rnc VARCHAR(11),
nombre_proyecto VARCHAR(60),
direccion_proyecto VARCHAR(60),
direccion_cliente VARCHAR(80),
cond_pago SMALLINT,
descripcion VARCHAR(50),
celular VARCHAR(15),
email VARCHAR(60),
sec_vend INT,
total_bruto DEC(12,2),
monto_desc DEC(12,2),
monto_itbis DEC(12,2),
total_cotizacion DEC(12,2),
contacto VARCHAR(60),
nombre_ciudad VARCHAR(60),
telefono_o VARCHAR(20),
telefono_r VARCHAR(20),
celular1 VARCHAR(20),
soporte VARCHAR(200),
instalador VARCHAR(200),
vendedor_aux VARCHAR(100),
sec_vend_aux INT,
cod_provincia SMALLINT,
nombre_vend VARCHAR(60),
porc_itbis DEC(8,2),
plazo_entrega VARCHAR(100),
comentario VARCHAR(100),
usuario VARCHAR(50),
clave VARCHAR(50),
etiqueta_cotizacion VARCHAR(60),
cod_zona SMALLINT,
codigo VARCHAR(10),
guiId STRING,
sincronizado BOOLEAN ,
tipo_documento CHAR(10),
bodega INT,
titulo_bodega VARCHAR(100)
END RECORD,
imagen BYTE
DEFINE rep_out RECORD
generales RECORD
cotizcion_no INT,
contenido STRING,
nomb_arch STRING,
cod_msg SMALLINT,
mensaje_out,valorBruto,valorDescuento,valorItbis,valorNeto STRING
END RECORD,
detalles DYNAMIC ARRAY OF RECORD
codid,area,cod_n,cod_grupo,cod_tipo,cod_sec INT,
titulo STRING,
cantidad1,cantidad,valorBruto,valorDescuento,valorItbis,valorTotal DEC(12,2)
END RECORD
END RECORD ,
detalles_out DYNAMIC ARRAY OF RECORD
codid,area,cod_n,cod_grupo,cod_tipo,cod_sec INT,
titulo STRING,
cantidad1,cantidad,valorBruto,valorDescuento,valorItbis,valorTotal DEC(12,2)
END RECORD,
cantidad_reg,pcotizacion_no INT
DEFINE r RECORD
ERROR STRING
END RECORD,
xdescripcion VARCHAR(100)
DEFINE tip_sal,arc_sal STRING
DEFINE p_hand om.SaxDocumentHandler,
xdescuento CHAR(2),
xfechadesc DATE,
pporc_desc,porc_auth,porc_vend FLOAT
DEFINE i INT
# WHENEVER ERROR CONTINUE
TRY
CALL util.JSON.parse(s, p)
CATCH
LET r.error = "FGL ERROR: ", err_get(status)
RETURN util.JSON.stringify(r)
END TRY
IF p.cotizaciones.porc_itbis IS NULL OR p.cotizaciones.porc_itbis=0 THEN
LET rep_out.generales.mensaje_out = 'ERROR PORCIENTO ITBIS ESTA EN BLANCO O CERO'
LET rep_out.generales.cod_msg = 400
LET s_out=util.JSON.stringify(rep_out)
RETURN s_out
END IF
LET cotizacion.* = p.cotizaciones.*
LET valorTope = 250000
{ ESTA PARTE FUNCIONA PARA CUANDO DESEO BLOQUEAR EL WS
LET rep_out.generales.mensaje_out = 'DEBE REALIZAR ESTA OPCION VIA GENERO, ESTE SERVICIO ESTA DESACTIVADO'
LET rep_out.generales.cod_msg = 400
LET s_out=util.JSON.stringify(rep_out)
RETURN s_out
}
DISPLAY "USUARIO: ",p.cotizaciones.usuario
CONNECT TO "smarmotech" USER p.cotizaciones.usuario USING p.cotizaciones.clave
IF STATUS < 0 THEN
LET rep_out.generales.mensaje_out = 'ERROR EN USUARIO CONECTANDOSE A LA BASE DE DATOS'," ",err_get(status)
LET rep_out.generales.cod_msg = 400
LET rep_out.generales.cotizcion_no = 0
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
# VERIFICA EMAIL
CALL inicializar()
LET url_verification =url_verification CLIPPED,p.cotizaciones.email CLIPPED
# CALL apiclient(url_verification) RETURNING estado,codigo_err
# IF codigo_Err =400 THEN
# LET rep_out.generales.mensaje_out = 'EMAIL CLIENTE ERRADO, NO PUEDE REALIZAR COTIZACION'
# LET rep_out.generales.cod_msg = -3
# LET s_out=util.JSON.stringify(rep_out)
# LET rep_out.generales.cotizcion_no = 0
# RETURN s_out
# END IF
IF p.cotizaciones.cond_pago IS NULL OR p.cotizaciones.cond_pago=1000 THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='CONDICION EN BLANCO o NO TIENE CONDICION, NO PUEDES REALIZAR COTIZACION'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
IF p.cotizaciones.sec_vend IS NULL OR p.cotizaciones.sec_vend=0 THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='COTIZACION TIENE EL CODIGO VENDEDOR EN BLANCO'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
IF p.cotizaciones.porc_itbis IS NULL OR p.cotizaciones.porc_itbis=0 THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='COTIZACION TIENE EL ITBIS EN NULO, NO PUEDE HACER COTIZACION'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
#CONTROL PROVINCIA
IF p.cotizaciones.cod_provincia IS NULL OR p.cotizaciones.cod_provincia = 0 THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='COTIZACION TIENE EL ID PROVINCIA EN CERO, NO PUEDE HACER COTIZACION'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
SELECT a.cod_provincia FROM vetb00020 a WHERE a.cod_provincia = p.cotizaciones.cod_provincia AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='PROVINCIA NO EXISTE EN BASE DE DATOS GENERO, FAVOR DE VERIFICAR'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
SELECT a.codigo FROM vetb00017 a WHERE a.codigo = p.cotizaciones.codigo
IF STATUS = NOTFOUND THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='PAIS ',p.cotizaciones.codigo, ' NO EXISTE EN BASE DE DATOS GENERO, FAVOR DE VERIFICAR'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
#-----------------------------------------------------------------------------------------------------------
# CONTROL ZONA
IF p.cotizaciones.cod_zona IS NULL OR p.cotizaciones.cod_zona = 0 THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='COTIZACION TIENE EL ID ZONA EN CERO, NO PUEDE HACER COTIZACION'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
SELECT DISTINCT a.cod_zona FROM vetb00009 a WHERE a.cod_zona = p.cotizaciones.cod_zona AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='ZONA NO EXISTEN EN BASE DE DATOS GENERO, NO PUEDE HACER COTIZACION'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
#BUSCA NOMBRE DEL CLIENTE
SELECT a.nombre INTO p.cotizaciones.nombre FROM vetb00004 a WHERE a.tipo_cliente = p.cotizaciones.tipo_cliente AND
a.sec_cliente = p.cotizaciones.sec_cliente AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='CLIENTE NO EXISTE EN LA MAESTRA DE CLIENTES EN GENERO, NO PUEDE HACER COTIZACION'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
LET emailcliente = NULL
IF p.cotizaciones.tipo_cliente = 15 OR p.cotizaciones.tipo_cliente = 16 THEN
SELECT RTRIM(a.patente) INTO emailcliente FROM vetb00004 a WHERE a.tipo_cliente = p.cotizaciones.tipo_cliente AND
a.sec_cliente = p.cotizaciones.sec_cliente
IF emailcliente IS NULL OR LENGTH(emailcliente) < 6 THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='CLIENTE NO TIENE EL EMAIL EN LA MAESTRA O NO ES VALIDO LA INFORMACION, FAVOR DE COLOCAR INFORMACION, COTIZACION NO PUEDE SER CREADA O MODIFICADA'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
END IF
#CONTROL NUMERO RNC CLIENTE
IF p.cotizaciones.tipo_cliente <> 0 THEN
SELECT a.prima INTO tasaCambio FROM vetb00019 a WHERE a.disponible='S'
LET valorTope = 250000
IF p.cotizaciones.ventas = 3 THEN
LET valorTope = valorTope / tasaCambio
END IF
LET selec =
"SELECT a.razon_social,RTRIM(a.calle),' NO.'+RTRIM(a.no_local),a.sector ",
"FROM DGII.dbo.empresas a ",
"WHERE a.rnc = ? "
PREPARE query2 FROM selec
SELECT UNIQUE a.codigo_dgii INTO codigodgii FROM vetb00060 a
WHERE a.tipo_cliente = P.cotizaciones.tipo_cliente AND
a.ncf = 'S' AND a.paga_itbis ="S"
IF STATUS <> NOTFOUND THEN
IF p.cotizaciones.rnc IS NULL THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='RNC CLIENTE EN BLANCO'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
ELSE
# ESTA DECISION ES PARA LOS CLIENTES CREDITO FISCAL
IF codigodgii ='B01' THEN
EXECUTE query2 USING p.cotizaciones.rnc
IF STATUS = NOTFOUND THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='RNC CLIENTE INVALIDO'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
END IF
#-----------------------------------------------------
# ESTA DECISION ES PARA LOS CLIENTES CONSUMIDORES QUE PASEN DE 250,000
#-----------------------------------------------------
IF codigodgii ='B02' AND p.cotizaciones.total_cotizacion > valorTope THEN
IF p.cotizaciones.tipo_documento <> 3 THEN # CLIENTES PASAPORTES NO CONTROLA
IF LENGTH(p.cotizaciones.rnc CLIPPED) <> 11 THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='LONGITUD CEDULA INVALIDA'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
END IF
END IF
#-------------------------------------------------------------------------
END IF
END IF
END IF
#---------------------------------------------------------------------
LET inserta = " INSERT INTO vetb00031 (id_kit,cotizacion_no,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad,precio,
porc_Desc)
SELECT a.id_kit,?,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,a.precio,a.porc_desc
FROM vetb00030 a WHERE a.id_kit = ?"
PREPARE comando FROM inserta
IF p.cotizaciones.tipo_cliente = 0 THEN
LET p.cotizaciones.tipo_cliente=NULL
LET p.cotizaciones.sec_cliente=null
END IF
----- CONTROLA QUE EL LUGAR DE ENTREGA NO ESTE EN BLANCO
IF p.cotizaciones.bodega IS NULL THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='LUGAR DE ENTREGA EN BLANCO'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
----- COLOCA EL VENDEDOR QUE TIENE EL CLIENTE COMO EJECUTIVO------------------------
LET secvend_ant = p.cotizaciones.sec_vend
SELECT a.sec_vend INTO p.cotizaciones.sec_vend FROM vetb00028 a WHERE a.tipo_cliente = p.cotizaciones.tipo_cliente AND
a.sec_cliente = p.cotizaciones.sec_cliente
IF p.cotizaciones.sec_vend IS NULL THEN
LET p.cotizaciones.sec_vend = secvend_ant
END IF
---- NOMBRE VENDEDOR -----
SELECT RTRIM(a.nom1_emp) || ' '|| a.apell1_emp INTO nombreVendedor FROM adtb00003 a WHERE a.num_emp = p.cotizaciones.sec_vend
# BUSCA PORCENTAJE DE DESCUENTO DEL VENDEDOR
SELECT a.descuento1 INTO porc_vend FROM seg0001 a WHERE a.usuario =p.cotizaciones.usuario
# CALCULA MONTOS COTIZACION
LET detalles = p.detalles
LET p.cotizaciones.total_bruto =0
LET p.cotizaciones.monto_desc =0
LET p.cotizaciones.monto_itbis =0
LET p.cotizaciones.total_cotizacion =0
LET rep_out.generales.valorBruto=0
LET rep_out.generales.valorDescuento =0
LET rep_out.generales.valorItbis =0
LET rep_out.generales.valorNeto =0
IF p.detalles.getLength() < 1 OR p.detalles.getLength() IS null THEN
IF p.cotizaciones.cotizacion_no =0 OR p.cotizaciones.cotizacion_no IS NULL THEN
LET rep_out.generales.cotizcion_no = 0
END IF
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='DETALLE COTIZACION ESTA LLEGANDO AL WS EN BLANCO'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
CALL calcula(detalles,p.cotizaciones.porc_itbis) RETURNING p.cotizaciones.total_bruto,p.cotizaciones.monto_desc,p.cotizaciones.monto_itbis,
p.cotizaciones.total_cotizacion,detalles_out
DISPLAY "ESTE FUE EL CALCULO 1: ",p.cotizaciones.total_bruto,p.cotizaciones.monto_desc,"-",p.cotizaciones.monto_itbis,
"-",p.cotizaciones.total_cotizacion
LET cotizacion.total_bruto = p.cotizaciones.total_bruto
LET cotizacion.monto_desc = p.cotizaciones.monto_desc
LET cotizacion.monto_itbis = p.cotizaciones.monto_itbis
LET cotizacion.total_cotizacion = p.cotizaciones.total_cotizacion
IF p.cotizaciones.cotizacion_no =0 OR p.cotizaciones.cotizacion_no IS NULL THEN
------- ADICIONA CLIENTE------------------------------------------------------------------------------
SELECT a.cotizacion_no INTO pcotizacion_no FROM vetb00053 a
IF pcotizacion_no IS NULL THEN
LET pcotizacion_no = 0
END IF
LET pcotizacion_no = pcotizacion_no + 1
BEGIN WORK
UPDATE vetb00053 SET cotizacion_no =pcotizacion_no
LET p.cotizaciones.cotizacion_no=pcotizacion_no
LET rep_out.generales.cotizcion_no = pcotizacion_no
# CONTROL ITBIS
LET cantidad_reg=p.detalles.getLength()
IF p.detalles.getLength() = 0 THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='COTIZACION NO TIENE PRODUCTOS ASOCIADOS'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
### COTIZACION MASTER
INSERT INTO vetb00050 ( cod_cia ,
ventas ,cotizacion_no ,tipo_cliente ,sec_cliente ,nombre_cliente ,rnc ,nombre_proyecto ,
direccion_cliente , direccion_proyecto ,email ,celular ,prima, porc_itbi,
fecha , comentario ,cond_pago , sec_vend ,
total_bruto , sub_total , monto_desc , monto_itbi , total_neto ,
us_crea , fech_crea,cod_provincia,telefono_o,telefono_r,celular1,sec_vend_aux,contacto,
plazo_entrega,instalador,cod_zona,codigo,sincronizado,guiid,bodega,titulo_bodega)
VALUES
("1",cotizacion.ventas,pcotizacion_no,cotizacion.tipo_cliente,cotizacion.sec_cliente,
cotizacion.nombre,cotizacion.rnc,cotizacion.nombre_proyecto,cotizacion.direccion_cliente,
cotizacion.direccion_proyecto,cotizacion.email,cotizacion.celular,P.pprima,cotizacion.porc_itbis,cotizacion.fecha,
cotizacion.descripcion,cotizacion.cond_pago,cotizacion.sec_vend,cotizacion.total_bruto,
cotizacion.total_bruto-cotizacion.monto_desc,cotizacion.monto_desc,cotizacion.monto_itbis,
cotizacion.total_cotizacion, p.cotizaciones.usuario,getdate(),cotizacion.cod_provincia,cotizacion.telefono_o,
cotizacion.telefono_r,cotizacion.celular1,cotizacion.sec_vend_aux,cotizacion.contacto,
cotizacion.plazo_entrega,cotizacion.instalador,cotizacion.cod_zona,cotizacion.codigo,cotizacion.sincronizado,cotizacion.guiId,cotizacion.bodega,cotizacion.titulo_bodega)
IF STATUS < 0 THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ="ERROR ADICIONANDO MASTER COTIZACION ",err_get(status)
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
FOR i = 1 TO p.detalles.getLength()
IF p.detalles[i].area IS NOT NULL THEN
LET xdescripcion = NULL
SELECT a.descrip_esp,a.descuento_permitido,a.fecha_desc,a.porc_desc
INTO xdescripcion,xdescuento,xfechadesc,pporc_desc
FROM iptb00002 a
WHERE a.cod_n = p.detalles[i].cod_n AND
a.cod_grupo = p.detalles[i].cod_grupo AND
a.cod_tipo = p.detalles[i].cod_tipo AND
a.cod_sec = p.detalles[i].cod_sec
IF STATUS = NOTFOUND THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='EL CODIGO ',p.detalles[i].codigo CLIPPED,' NO EXISTE NO PUEDE HACER LA COTIZACION',STATUS
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
IF p.detalles[I].secuencia IS null THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='SECUENCIA ITEM ESTA EN BLANCO, NO PUEDE REALIZAR COTIZACION'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
#RUTINA PARA CONTROL DEL DESCUENTO POR ITEMS
DISPLAY "PARAMETROS: ",p.detalles[i].cod_n,p.detalles[i].cod_grupo,p.detalles[i].cod_tipo,
p.detalles[i].cod_sec," desc ",p.detalles[i].porc_desc
SELECT DISTINCT a.porc_desc INTO porc_auth FROM vetb00088 a WHERE a.cotizacion_no =pcotizacion_no AND
a.cod_n = p.detalles[i].cod_n AND
a.cod_grupo = p.detalles[i].cod_grupo AND
a.cod_tipo = p.detalles[i].cod_tipo AND
a.cod_sec = p.detalles[i].cod_sec AND
a.area =p.detalles[i].area
IF STATUS = NOTFOUND THEN
DISPLAY "FECHA DESC: ",pporc_desc, " PERMITIDO: ",xdescuento
IF TODAY < xfechadesc OR xfechadesc IS NULL THEN
IF xdescuento = "NO" AND p.detalles[i].porc_desc > 0 THEN
ROLLBACK WORK
DISPLAY "PORCENTAJE DESDE COT XDESC ",p.detalles[i].porc_desc," PORCENTAJE PROD ",pporc_desc,
" FECHA ",xfechadesc," CODIGO: ",p.detalles[i].cod_n," ",
p.detalles[i].cod_grupo," ",
p.detalles[i].cod_tipo," ",
p.detalles[i].cod_sec
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='NO PUEDE COLOCAR COTIZACION, EXISTE UN ITEM LA CUAL NO PUEDES APLICAR DESCUENTO ',
xdescripcion CLIPPED, " CODIGO ",p.detalles[i].codigo," EL DESCUENTO QUE SE ESTA ENVIANDO ES ",
p.detalles[i].porc_desc
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
END IF
IF TODAY > xfechadesc THEN
IF p.detalles[i].porc_desc > porc_vend THEN
ROLLBACK WORK
DISPLAY "PORCENTAJE DESDE COT fecha mayor ",p.detalles[i].porc_desc," PORCENTAJE PROD ",pporc_desc,
" FECHA ",xfechadesc
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='NO PUEDE COLOCAR COTIZACION, EXISTE UN ITEM QUE TIENE UN % DESCUENTO MAYOR AL QUE TIENES EN TU PERFIL ',
xdescripcion CLIPPED, " CODIGO ",p.detalles[i].codigo," EL DESCUENTO QUE SE ESTA ENVIANDO ES ",
p.detalles[i].porc_desc USING "###.##"," TIENES EN EL TU PERFIL ",porc_vend USING "<<<.##"
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
END IF
END IF
#-----------------------------------------------------------------------------------------------------------------------
IF p.detalles[I].cantidad=0 THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='CANTIDAD ESTA EN CERO'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
IF p.detalles[I].precio=0 THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='PRECIO ESTA EN CERO'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
IF p.detalles[i].idkit=0 THEN
LET p.detalles[i].idkit=NULL
END IF
# LET detalle.* = p.detalles[i].*
INSERT INTO vetb00051 (cod_cia,ventas,cotizacion_no,area,descripcion_area,
cod_n,cod_grupo,cod_tipo,cod_Sec,descripcion,
cantidad_1,cantidad,porc_desc,precio,us_crea,fech_crea,
cantidad_reservada,fecha_inicio_reserva,fecha_vence_reserva,
autorizada,secuencia,us_mod,id_kit,sincronizado
)
VALUES ('1',cotizacion.ventas,pcotizacion_no,p.detalles[i].area,p.detalles[i].descripcion_area,
p.detalles[i].cod_n,p.detalles[i].cod_grupo,
p.detalles[i].cod_tipo,p.detalles[i].cod_sec, xdescripcion,
p.detalles[i].cantidad,p.detalles[i].cantidad1,
p.detalles[i].porc_desc,p.detalles[i].precio,p.cotizaciones.usuario,getdate(),
p.detalles[i].cantidad_reservada,p.detalles[i].fecha_inicio_reserva,
p.detalles[i].fecha_vence_reserva,p.detalles[i].autorizada,
p.detalles[i].secuencia,cantidad_reg,
p.detalles[i].idkit,cotizacion.sincronizado)
IF STATUS < 0 THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=SQLCA.sqlcode
LET rep_out.generales.mensaje_out ="ERROR ADICIONANDO DETALLE COTIZACION ",err_get(status)
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
# INSERTA TABLA COTIZACIONES KIT
IF p.detalles[i].idkit IS NOT NULL THEN
EXECUTE comando USING pcotizacion_no,p.detalles[i].idkit
END IF
# INSERTA TABLA LOG DETALLE COTIZACION
INSERT INTO detalles_cot_log VALUES (
p.detalles[i].secuencia ,p.detalles[i].area ,p.detalles[i].descripcion_area,
p.detalles[i].codid,p.detalles[i].codigo,p.detalles[i].cod_n,p.detalles[i].cod_grupo,
p.detalles[i].cod_tipo,p.detalles[i].cod_sec,p.detalles[i].cantidad,p.detalles[i].cantidad1,
p.detalles[i].precio,p.detalles[i].porc_desc,p.detalles[i].itbis,p.detalles[i].valor,
p.detalles[i].cantidad_reservada ,p.detalles[i].fecha_inicio_reserva,
p.detalles[i].fecha_vence_reserva,p.detalles[i].autorizada,p.detalles[i].idkit,getdate() )
END IF
END FOR
INSERT INTO cotizaciones_log VALUES (
p.cotizaciones.cotizacion_no,p.cotizaciones.fecha,p.cotizaciones.ventas,
p.cotizaciones.tipo_cliente,p.cotizaciones.sec_cliente,p.cotizaciones.nombre,
p.cotizaciones.rnc,p.cotizaciones.nombre_proyecto,p.cotizaciones.direccion_proyecto,
p.cotizaciones.direccion_cliente,p.cotizaciones.cond_pago,p.cotizaciones.descripcion,
p.cotizaciones.celular,p.cotizaciones.email,p.cotizaciones.sec_vend,p.cotizaciones.total_bruto,
p.cotizaciones.monto_desc,p.cotizaciones.monto_itbis,p.cotizaciones.total_cotizacion,
p.cotizaciones.contacto ,p.cotizaciones.nombre_ciudad , p.cotizaciones.telefono_o,p.cotizaciones.telefono_r,
p.cotizaciones.celular1,p.cotizaciones.soporte ,p.cotizaciones.instalador,p.cotizaciones.vendedor_aux,
p.cotizaciones.sec_vend_aux ,p.cotizaciones.cod_provincia,p.cotizaciones.nombre_vend,
p.cotizaciones.porc_itbis,p.cotizaciones.plazo_entrega,p.cotizaciones.comentario,
p.cotizaciones.usuario,p.cotizaciones.clave,p.cotizaciones.etiqueta_cotizacion,
GETDATE(),p.cotizaciones.bodega,p.cotizaciones.titulo_bodega)
COMMIT WORK
LET rep_out.generales.cod_msg=200
LET rep_out.generales.mensaje_out = 'ADICION EXITOSA PAR EL EJECUTIVO ',nombreVendedor CLIPPED, ' QUIEN LE VENDE A ESTE CLIENTE'
LET rep_out.generales.valorBruto = p.cotizaciones.total_bruto
LET rep_out.generales.valorDescuento = p.cotizaciones.monto_desc
LET rep_out.generales.valorItbis = p.cotizaciones.monto_itbis
LET rep_out.generales.valorNeto = p.cotizaciones.total_cotizacion
LET rep_out.detalles.* = detalles_out.*
LET s_out=util.JSON.stringify(rep_out)
DISPLAY "Valores: ",p.cotizaciones.total_bruto," ",p.cotizaciones.total_cotizacion
{ LET tip_sal = "PDF"
IF NOT fgl_report_loadCurrentSettings("veprmt049_mob.4rp") THEN
LET rep_out.generales.cod_msg = sqlca.sqlerrm
LET rep_out.generales.mensaje_out="ERROR:NO ENCONTRE EL 4RP FILE"
EXIT PROGRAM
END IF
LET arc_sal=gen_nombre_archivo(tip_sal)
CALL fgl_report_selectDevice(UPSHIFT(tip_sal))
CALL fgl_report_selectPreview(false)
CALL fgl_report_setOutputFileName(arc_sal)
LET p_hand=fgl_report_commitCurrentSettings()
IF p_hand IS NOT NULL THEN
START REPORT imprimeO TO XML HANDLER p_hand
LOCATE imagen IN MEMORY
FOR i = 1 TO p.detalles.getLength()
IF p.detalles[i].area IS NOT NULL THEN
LET detalle.area = p.detalles[i].area
LET detalle.cantidad = p.detalles[i].cantidad
LET detalle.cantidad1=p.detalles[i].cantidad1
LET detalle.cod_grupo=p.detalles[i].cod_grupo
LET detalle.cod_n=p.detalles[i].cod_n
LET detalle.cod_sec=p.detalles[i].cod_sec
LET detalle.cod_tipo=p.detalles[i].cod_tipo
LET detalle.descripcion_area=p.detalles[i].descripcion_area
LET detalle.precio = p.detalles[i].precio
LET detalle.porc_desc = p.detalles[i].porc_desc
LET detalle.valor = p.detalles[i].valor
SELECT a.descrip_esp, a.imagen INTO detalle.descripcion,imagen FROM iptb00002 a WHERE
a.cod_n = detalle.cod_n AND a.cod_grupo = detalle.cod_grupo AND
a.cod_tipo = detalle.cod_tipo AND a.cod_sec = detalle.cod_sec
IF imagen IS NULL OR LENGTH(imagen) < 4 THEN
CALL imagen.readFile("fotodefault.jpg")
DISPLAY "CARGUE DEFAULT"
UPDATE vetb00051 SET foto_producto = imagen
WHERE cotizacion_no = cotizacion.cotizacion_no
END IF
UPDATE vetb00051 SET descripcion = detalle.descripcion
WHERE cotizacion_no = cotizacion.cotizacion_no AND cod_n = detalle.cod_n AND
cod_Grupo = detalle.cod_grupo AND
cod_tipo = detalle.cod_tipo AND
cod_sec = detalle.cod_sec
OUTPUT TO REPORT imprimeO(cotizacion.*,detalle.*,imagen)
END IF
END FOR
FINISH REPORT imprimeO
END IF
IF os.Path.exists(arc_sal) THEN
CALL file_to_b64(arc_sal) RETURNING rep_out.generales.contenido
LET rep_out.generales.nomb_arch=os.path.basename(arc_sal)
LET rep_out.generales.cotizcion_no= pcotizacion_no
# DISPLAY "GRW file '",rep_out.generales.nomb_arch,"' sent."
ELSE
LET rep_out.generales.nomb_arch="Error generating the GRW report"
END IF
}
# DISPLAY "retorno: ",s_out
ELSE
----------------- MODIFICANDO LA COTIZACION -------------------------------------
DISPLAY "ESTE FUE EL CALCULO modifica1: ",p.cotizaciones.total_bruto,p.cotizaciones.monto_desc,"-",p.cotizaciones.monto_itbis,
"-",p.cotizaciones.total_cotizacion
# VERIFICA QUE LA COTIZACION NO TENGA ORDEN DE PEDIDOS
SELECT a.cotizacion_no FROM prtb00012 a WHERE a.cotizacion_no=p.cotizaciones.cotizacion_no AND
a.status_T IS NULL
IF STATUS <> NOTFOUND THEN
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='COTIZACION TIENE ORDEN, NO PUEDES MODIFICAR'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
IF p.cotizaciones.cond_pago IS NULL OR p.cotizaciones.cond_pago=1000 THEN
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='CONDICION EN BLANCO o NO TIENE CONDICION, NO PUEDES REALIZAR COTIZACION'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
IF cotizacion.porc_itbis IS NULL THEN
LET rep_out.generales.cotizcion_no = p.cotizaciones.cotizacion_no
LET rep_out.generales.mensaje_out = 'PORCIENTO ITBIS ESTA EN BLANCO, NO SE ACTUALIZO LA COTIZACION EN GENERO'
LET rep_out.generales.nomb_arch=' '
LET rep_out.generales.cod_msg = 400
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
#VERIFICA SI LA COTIZACION TIENE UN AVANCE APLICADO
SELECT DISTINCT a.tipo_cliente,a.sec_cliente
INTO tipo_cliente_ant,sec_cliente_ant FROM cctb00001 a
WHERE a.documento_ref = p.cotizaciones.cotizacion_no AND
a.tipo_Doc = 'AV' AND a.num_doc = a.aplica_a AND
a.status_t IS NULL
IF STATUS != NOTFOUND THEN
LET cliente_ant = tipo_cliente_ant USING "##","-",sec_cliente_ant USING "&&&&&&&&"
LET cliente_act = cotizacion.tipo_cliente USING "##","-",cotizacion.sec_cliente USING "&&&&&&&&"
IF cliente_ant <> cliente_act THEN
LET rep_out.generales.cotizcion_no = p.cotizaciones.cotizacion_no
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='COTIZACION TIENE RECIBO AVANCE'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
END IF
# ACTUALIZA COTIZACION
BEGIN WORK
UPDATE vetb00050 SET (
ventas ,tipo_cliente ,sec_cliente ,nombre_cliente ,rnc ,nombre_proyecto ,
direccion_cliente , direccion_proyecto ,email ,celular ,prima, porc_itbi,
fecha , comentario ,cond_pago , sec_vend ,
total_bruto , sub_total , monto_desc , monto_itbi , total_neto ,
cod_provincia,telefono_o,telefono_r,celular1,sec_vend_aux,contacto,
plazo_entrega,us_mod,fech_mod,instalador,cod_zona,codigo,bodega,titulo_bodega)
=
(cotizacion.ventas,cotizacion.tipo_cliente,cotizacion.sec_cliente,
cotizacion.nombre,cotizacion.rnc,cotizacion.nombre_proyecto,cotizacion.direccion_cliente,
cotizacion.direccion_proyecto,cotizacion.email,cotizacion.celular,P.pprima,p.cotizaciones.porc_itbis,
cotizacion.fecha,
cotizacion.descripcion,cotizacion.cond_pago,cotizacion.sec_vend,cotizacion.total_bruto,
cotizacion.total_bruto-cotizacion.monto_desc,cotizacion.monto_desc,cotizacion.monto_itbis,
cotizacion.total_cotizacion,cotizacion.cod_provincia,cotizacion.telefono_o,
cotizacion.telefono_r,cotizacion.celular1,cotizacion.sec_vend_aux,cotizacion.contacto,
cotizacion.plazo_entrega,p.cotizaciones.usuario,getdate(),cotizacion.instalador,cotizacion.cod_zona,
cotizacion.codigo,cotizacion.bodega,cotizacion.titulo_bodega
)
WHERE cotizacion_no = p.cotizaciones.cotizacion_no
IF STATUS < 0 THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = p.cotizaciones.cotizacion_no
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out = "ERROR ACTUALIZANDO COTIZACION MASTER ",err_get(status)
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
INSERT INTO cotizaciones_log VALUES (
p.cotizaciones.cotizacion_no,p.cotizaciones.fecha,p.cotizaciones.ventas,
p.cotizaciones.tipo_cliente,p.cotizaciones.sec_cliente,p.cotizaciones.nombre,
p.cotizaciones.rnc,p.cotizaciones.nombre_proyecto,p.cotizaciones.direccion_proyecto,
p.cotizaciones.direccion_cliente,p.cotizaciones.cond_pago,p.cotizaciones.descripcion,
p.cotizaciones.celular,p.cotizaciones.email,p.cotizaciones.sec_vend,p.cotizaciones.total_bruto,
p.cotizaciones.monto_desc,p.cotizaciones.monto_itbis,p.cotizaciones.total_cotizacion,
p.cotizaciones.contacto ,p.cotizaciones.nombre_ciudad , p.cotizaciones.telefono_o,p.cotizaciones.telefono_r,
p.cotizaciones.celular1,p.cotizaciones.soporte ,p.cotizaciones.instalador,p.cotizaciones.vendedor_aux,
p.cotizaciones.sec_vend_aux ,p.cotizaciones.cod_provincia,p.cotizaciones.nombre_vend,
p.cotizaciones.porc_itbis,p.cotizaciones.plazo_entrega,p.cotizaciones.comentario,
p.cotizaciones.usuario,p.cotizaciones.clave,p.cotizaciones.etiqueta_cotizacion,
GETDATE(),p.cotizaciones.bodega,p.cotizaciones.titulo_bodega)
DELETE FROM vetb00051 WHERE cotizacion_no =p.cotizaciones.cotizacion_no
DELETE FROM vetb00031 WHERE cotizacion_no =p.cotizaciones.cotizacion_no
FOR i = 1 TO p.detalles.getLength()
IF p.detalles[i].area IS NOT NULL THEN
LET xdescripcion = NULL
LET xdescuento = NULL
SELECT a.descrip_esp,a.descuento_permitido,a.fecha_desc,a.porc_desc
INTO xdescripcion,xdescuento,xfechadesc,pporc_desc
FROM iptb00002 a
WHERE a.cod_n = p.detalles[i].cod_n AND
a.cod_grupo = p.detalles[i].cod_grupo AND
a.cod_tipo = p.detalles[i].cod_tipo AND
a.cod_sec = p.detalles[i].cod_sec
IF STATUS = NOTFOUND THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = p.cotizaciones.cotizacion_no
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='EL CODIGO ',p.detalles[i].codigo CLIPPED,' NO EXISTE NO PUEDE HACER LA COTIZACION ',STATUS
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
ELSE
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = p.cotizaciones.cotizacion_no
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='EL AREA ESTA EN BLANCO'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
#RUTINA PARA CONTROL DEL DESCUENTO POR ITEMS
SELECT DISTINCT a.porc_desc INTO porc_auth FROM vetb00088 a WHERE a.cotizacion_no =pcotizacion_no AND
a.cod_n = p.detalles[i].cod_n AND
a.cod_grupo = p.detalles[i].cod_grupo AND
a.cod_tipo = p.detalles[i].cod_tipo AND
a.cod_sec = p.detalles[i].cod_sec AND
a.area =p.detalles[i].area
IF STATUS = NOTFOUND THEN
DISPLAY "FECHA DESC MOD: ",pporc_desc, " PERMITIDO: ",xdescuento
IF TODAY < xfechadesc OR xfechadesc IS NULL THEN
IF xdescuento = "NO" AND p.detalles[i].porc_desc > 0 THEN
ROLLBACK WORK
DISPLAY "PORCENTAJE DESDE COT XDESC MOD ",p.detalles[i].porc_desc," PORCENTAJE PROD ",pporc_desc,
" FECHA ",xfechadesc," CODIGO: ",p.detalles[i].cod_n," ",
p.detalles[i].cod_grupo," ",
p.detalles[i].cod_tipo," ",
p.detalles[i].cod_sec
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='NO PUEDE COLOCAR COTIZACION,EXISTE UN ITEM LA CUAL NO PUEDES APLICAR DESCUENTO ',
xdescripcion CLIPPED, " CODIGO ",p.detalles[i].codigo," EL DESCUENTO QUE SE ESTA ENVIANDO ES ",
p.detalles[i].porc_desc USING "###.##"
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
IF xdescuento = "SI" THEN
IF p.detalles[i].porc_desc > porc_vend THEN
ROLLBACK WORK
DISPLAY "PORCENTAJE DESDE COT DESC mayor ",p.detalles[i].porc_desc," PORCENTAJE PROD ",pporc_desc,
" FECHA ",xfechadesc
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='NO PUEDE COLOCAR COTIZACION, EXISTE UN ITEM QUE TIENE UN % DESCUENTO MAYOR AL QUE TIENES EN TU PERFIL ',
xdescripcion CLIPPED, " CODIGO ",p.detalles[i].codigo," EL DESCUENTO QUE SE ESTA ENVIANDO ES ",
p.detalles[i].porc_desc," TIENES EN EL TU PERFIL ",porc_vend USING "<<<.##"
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
END IF
END IF
IF TODAY > xfechadesc THEN
IF p.detalles[i].porc_desc > porc_vend THEN
ROLLBACK WORK
DISPLAY "PORCENTAJE DESDE COT fecha mayor MOD ",p.detalles[i].porc_desc," PORCENTAJE PROD ",pporc_desc,
" FECHA ",xfechadesc
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='NO PUEDE COLOCAR COTIZACION, EXISTE UN ITEM QUE TIENE UN % DESCUENTO MAYOR AL QUE TIENES EN TU PERFIL ',
xdescripcion CLIPPED, " CODIGO ",p.detalles[i].codigo," EL DESCUENTO QUE SE ESTA ENVIANDO ES ",
p.detalles[i].porc_desc USING "###.##"," TIENES EN EL TU PERFIL ",porc_vend USING "<<<.##"
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
END IF
END IF
#--------------------------------------------------------------------------------------------------------
IF p.detalles[I].secuencia IS null THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = p.cotizaciones.cotizacion_no
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='SECUENCIA ITEM ESTA EN BLANCO, NO PUEDE REALIZAR COTIZACION'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
IF p.detalles[I].cantidad=0 THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = p.cotizaciones.cotizacion_no
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='CANTIDAD ESTA EN CERO'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
IF p.detalles[I].precio=0 THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = p.cotizaciones.cotizacion_no
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out ='PRECIO ESTA EN CERO'
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
IF p.detalles[i].idkit=0 THEN
LET p.detalles[i].idkit=NULL
END IF
INSERT INTO vetb00051 (cod_cia,ventas,cotizacion_no,area,descripcion_area,
cod_n,cod_grupo,cod_tipo,cod_Sec, descripcion,
cantidad_1,cantidad,porc_desc,precio,us_crea,fech_crea,
cantidad_reservada,fecha_inicio_reserva,fecha_vence_reserva,
autorizada,secuencia
)
VALUES ('1',cotizacion.ventas,p.cotizaciones.cotizacion_no,p.detalles[i].area,p.detalles[i].descripcion_area,
p.detalles[i].cod_n,p.detalles[i].cod_grupo,
p.detalles[i].cod_tipo,p.detalles[i].cod_sec, xdescripcion,
p.detalles[i].cantidad,p.detalles[i].cantidad1,
p.detalles[i].porc_desc,p.detalles[i].precio,p.cotizaciones.usuario,getdate(),
p.detalles[i].cantidad_reservada,p.detalles[i].fecha_inicio_reserva,
p.detalles[i].fecha_vence_reserva,p.detalles[i].autorizada,
p.detalles[i].secuencia)
IF STATUS < 0 THEN
ROLLBACK WORK
LET rep_out.generales.cotizcion_no = 0
LET rep_out.generales.contenido = 'VACIO'
LET rep_out.generales.nomb_arch='notiene.pdf'
LET rep_out.generales.cod_msg=400
LET rep_out.generales.mensaje_out = SQLCA.sqlerrm
LET s_out=util.JSON.stringify(rep_out)
DISCONNECT CURRENT
RETURN s_out
END IF
# INSERTA TABLA LOG DETALLE COTIZACION
INSERT INTO detalles_cot_log VALUES (
p.detalles[i].secuencia ,p.detalles[i].area ,p.detalles[i].descripcion_area,
p.detalles[i].codid,p.detalles[i].codigo,p.detalles[i].cod_n,p.detalles[i].cod_grupo,
p.detalles[i].cod_tipo,p.detalles[i].cod_sec,p.detalles[i].cantidad,p.detalles[i].cantidad1,
p.detalles[i].precio,p.detalles[i].porc_desc,p.detalles[i].itbis,p.detalles[i].valor,
p.detalles[i].cantidad_reservada ,p.detalles[i].fecha_inicio_reserva,
p.detalles[i].fecha_vence_reserva,p.detalles[i].autorizada,p.detalles[i].idkit,getdate() )
# INSERTA TABLA COTIZACIONES KIT
IF p.detalles[i].idkit IS NOT NULL THEN
EXECUTE comando USING pcotizacion_no,p.detalles[i].idkit
END IF
END FOR
COMMIT WORK
LET rep_out.generales.cotizcion_no=p.cotizaciones.cotizacion_no
LET rep_out.generales.cod_msg=200
LET rep_out.generales.mensaje_out = 'MODIFICACION EXITOSA, ',rep_out.generales.mensaje_out CLIPPED
LET rep_out.generales.valorBruto = p.cotizaciones.total_bruto
LET rep_out.generales.valorDescuento = p.cotizaciones.monto_desc
LET rep_out.generales.valorItbis = p.cotizaciones.monto_itbis
LET rep_out.generales.valorNeto = p.cotizaciones.total_cotizacion
LET rep_out.detalles.* = detalles_out.*
LET s_out=util.JSON.stringify(rep_out)
END IF
DISCONNECT CURRENT
RETURN s_out
END FUNCTION
REPORT imprimeO(y,z,ximagen)
DEFINE ximagen BYTE
DEFINE y RECORD
cotizacion_no INT,
fecha DATE,
ventas VARCHAR(1),
tipo_cliente SMALLINT,
sec_cliente INT,
nombre VARCHAR(80),
rnc VARCHAR(11),
nombre_proyecto VARCHAR(50),
direccion_proyecto VARCHAR(50),
direccion_cliente VARCHAR(50),
cond_pago SMALLINT,
descripcion VARCHAR(50),
celular VARCHAR(15),
email VARCHAR(60),
sec_vend INT,
sub_total DEC(12,2),
monto_desc DEC(12,2),
monto_itbis DEC(12,2),
total_cotizacion DEC(12,2),
contacto VARCHAR(60),
nombre_ciudad VARCHAR(60),
telefono_o VARCHAR(20),
telefono_r VARCHAR(20),
celular1 VARCHAR(20),
soporte VARCHAR(200),
instalador VARCHAR(200),
vendedor_aux VARCHAR(100),
sec_vend_aux INT,
cod_provincia SMALLINT,
nombre_vend VARCHAR(60),
porc_itbis DEC(8,2),
plazo_entrega VARCHAR(100),
comentario VARCHAR(100),
usuario VARCHAR(50),
clave VARCHAR(50),
etiqueta_cotizacion VARCHAR(60)
END RECORD,
z RECORD
area SMALLINT,
descripcion_area CHAR(50),
codid VARCHAR(25),
codigo VARCHAR(20),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion VARCHAR(100),
cantidad DEC(12,5),
cantidad1 DEC(12,5),
precio DEC(12,2),
porc_desc DEC(12,2),
itbis DEC(12,2),
valor DEC(12,2)
END RECORD
,
xnombre_a CHAR(30),
xnombre_p CHAR(50),
xmedida CHAR(3),
xtotal_p,bruto,descuento,neto,total_area DEC(12,2),
pfecha,hora,etiqueta,etiqueta1,etiqueta2,etiqueta3,etiqueta4,etiqueta5 CHAR(100),
xorden INT,
p_companias RECORD
nombre CHAR(60),
direccion VARCHAR(80),
rnc VARCHAR(11),
telefono VARCHAR(20),
fax VARCHAR(20),
paginaweb VARCHAR(80),
telefono1 VARCHAR(20),
fax1 VARCHAR(20)
END RECORD,
nombre_vend VARCHAR(60),
psimbolo VARCHAR(4)
ORDER BY z.area,z.cod_n,z.cod_grupo,z.cod_tipo,z.cod_sec
FORMAT
FIRST PAGE HEADER
LET pfecha = TODAY USING "DD/MM/YYYY"
LET hora = TIME
LET etiqueta = "FORMA DE PAGO: "#,y.descrip
LET etiqueta3 = "PLAZO ENTREGA: "#,y.plazo_entrega
LET etiqueta4 = "COMENTARIO: "
LET etiqueta5 = "Entre la empresa ",p_companias.nombre CLIPPED," de una parte y de la otra parte:"
LET etiqueta1 = "Las variaciones en las tonalidades y vetas se entienden como parte de la naturaleza de las piedras naturales."
LET etiqueta2 = " No somos responsables en las tardanzas en la entrega cuando esten sujetas a especificaciones de medidas y/o terminaciones. "
SELECT a.simbolo INTO psimbolo FROM vetb00061 a WHERE a.ventas = y.ventas
SELECT ISNULL(a.nom1_emp,' ')||" "||ISNULL(a.apell1_emp,' ') INTO nombre_vend FROM adtb00003 a
WHERE a.num_emp = y.sec_vend
SELECT a.nombre,a.direccion,a.rnc,a.telefono,a.telefono1,a.fax,a.fax1,a.paginaweb
INTO p_companias.nombre,p_companias.direccion,p_companias.rnc,p_companias.telefono,
p_companias.telefono1,p_companias.fax,p_companias.fax1,p_companias.paginaweb
FROM companias a
BEFORE GROUP OF z.area
LET total_area = 0
ON EVERY ROW
# BUSCA ORDEN
LET xorden = null
#SELECT a.num_oc INTO xorden
#FROM prtb00012 a
#WHERE a.cotizacion_no = y.cotizacion_no AND a.status_t IS NULL
LET bruto = 0
LET descuento = 0
LET bruto = z.cantidad1 * z.precio
LET descuento = (z.cantidad1*z.precio*(z.porc_Desc/100))
LET xtotal_p = bruto - descuento
# LET y.sub_total = y.sub_total + y.monto_desc
LET xnombre_p = z.descripcion
LET xnombre_a = z.descripcion_area
PRINTX p_companias.*,y.*,z.*,bruto,descuento,neto,
etiqueta,etiqueta2,etiqueta3,etiqueta4,etiqueta5,
xnombre_a,xnombre_p,xmedida,xtotal_p,xorden,nombre_vend,psimbolo,ximagen
AFTER GROUP OF z.area
LET total_area = GROUP SUM(z.cantidad1*z.precio)
PRINTX total_area
END REPORT