Files
MBS/WEBSERVICES/REST/cotizacion_insert.4gl
T

218 lines
7.1 KiB
Plaintext

IMPORT util
FUNCTION cotizacion()
DEFINE s STRING
DEFINE p RECORD
cotizaciones DYNAMIC ARRAY OF 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,
total_bruto DEC(12,2),
monto_desc DEC(12,2),
monto_itbis DEC(12,2),
total_cotizacion DEC(12,2),
us_crea VARCHAR(50),
us_mod VARCHAR(50),
fech_crea DATETIME YEAR TO MINUTE,
fech_mod DATETIME YEAR TO MINUTE
END RECORD,
detalles DYNAMIC ARRAY OF RECORD
cotizacion_no INT,
area SMALLINT,
descripcion_area CHAR(50),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion VARCHAR(80),
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) ,
codid INT,
guiid STRING,
sincronizado BOOLEAN
END RECORD,
pprima,pitbis DEC(12,2),
puser,pfecha_crea VARCHAR(50)
END RECORD ,
pcotizacion_no INT
DEFINE cotizacion 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,
total_bruto DEC(12,2),
monto_desc DEC(12,2),
monto_itbis DEC(12,2),
total_cotizacion DEC(12,2),
us_crea VARCHAR(50),
us_mod VARCHAR(50),
fech_crea DATETIME YEAR TO MINUTE,
fech_mod DATETIME YEAR TO MINUTE
END RECORD
DEFINE detalle RECORD
cotizacion_no INT,
area SMALLINT,
descripcion_area CHAR(50),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion VARCHAR(80),
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) ,
codid INT,
guiid STRING,
sincronizado BOOLEAN
END RECORD
DEFINE r RECORD
ERROR STRING
--max_order_num LIKE orders.order_num,
--max_customer_num LIKE customer.customer_num
END RECORD
DEFINE i INT
TRY
CALL util.JSON.parse(s, p)
CATCH
LET r.error = "FGL ERROR: ", err_get(status)
RETURN util.JSON.stringify(r)
END TRY
SELECT a.cotizacion_no INTO pcotizacion_no FROM vetb00053 a
LET pcotizacion_no = pcotizacion_no + 1
# BEGIN WORK
DECLARE cu21 CURSOR FOR INSERT INTO cotizacion_detalle (
cotizacion_no_mob ,
area ,
descripcion_area ,
cod_n ,
cod_grupo ,
cod_tipo ,
cod_sec ,
descripcion ,
cantidad ,
cantidad1 ,
precio ,
porc_desc ,
itbis ,
valor ,
codid ,
guiid,
sincronizado
)
VALUES(detalle.*)
OPEN cu21
DECLARE cu20 CURSOR FOR INSERT INTO cotizacion ( cotizacion_no_mob ,
fecha ,
ventas ,
tipo_cliente ,
sec_cliente ,
nombre ,
rnc ,
nombre_proyecto ,
direccion_proyecto ,
direccion_cliente ,
cond_pago ,
descripcion ,
celular ,
email ,
sec_vend ,
total_bruto ,
monto_desc ,
monto_itbis ,
total_cotizacion ,
us_crea ,
us_mod ,
fech_crea ,
fech_mod
)
VALUES(cotizacion.*)
OPEN cu20
FOR i = 1 TO p.cotizaciones.getLength()
LET cotizacion.* = p.cotizaciones[i].*
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)
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,P.pitbis,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.puser,p.pfecha_crea,"1")
LET pcotizacion_no = pcotizacion_no + 1
PUT cu20
END FOR
CLOSE cu20
FOR i = 1 TO p.detalles.getLength()
IF p.detalles[i].cod_n IS NOT NULL THEN
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,cantidad_1,porc_desc,precio,guiid,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,p.detalles[i].descripcion, p.detalles[i].cantidad,p.detalles[i].cantidad1,
p.detalles[i].porc_desc,p.detalles[i].precio,p.detalles[i].guiid,p.detalles[i].sincronizado)
PUT cu21
END IF
END FOR
# COMMIT WORK
CLOSE cu21
UPDATE cotizacion SET cotizacion_no = pcotizacion_no
WHERE cotizacion_no_mob = cotizacion.cotizacion_no
UPDATE cotizacion_detalle SET cotizacion_no = pcotizacion_no
WHERE cotizacion_no_mob = cotizacion.cotizacion_no
UPDATE vetb00053 SET cotizacion_no =pcotizacion_no
LET r.ERROR='INSERTE COTIZACION, VERIFIQUE SISTEMA DESKTOP'
RETURN util.JSON.stringify(r)
END FUNCTION