304 lines
14 KiB
Plaintext
304 lines
14 KiB
Plaintext
IMPORT util
|
|
|
|
TYPE t_sync_cmd RECORD
|
|
oper STRING,
|
|
data STRING
|
|
END RECORD
|
|
|
|
FUNCTION orden_e(sorden)
|
|
DEFINE scliente,sorden STRING
|
|
DEFINE orden RECORD
|
|
encabezado RECORD
|
|
num_oc,cotizacion_no,factura,tipo_cliente,sec_cliente,cond_pago,sec_vend INT,
|
|
nombre,direccion_linea1,direccion_linea2,ciudad,codigo_postal,pais_region,region_provincia,
|
|
telefono1,telefono2,correo_electronico,contacto VARCHAR(100),
|
|
orden_externa VARCHAR(30),
|
|
fecha_orden DATE,
|
|
metodo_pago,referencia STRING,
|
|
tipo_envio VARCHAR(100),
|
|
total_bruto,monto_descuento,sub_total,monto_itbis,total_neto,itbis,valor_envio FLOAT,
|
|
codigo_dgii,titulo_ncf,num_rnc VARCHAR(11),
|
|
ventas VARCHAR(1),
|
|
cod_zona VARCHAR(3),
|
|
conexion ,
|
|
usuario,clave STRING,
|
|
contacto_obra,telefono_contacto_obra STRING
|
|
END RECORD,
|
|
detalle DYNAMIC ARRAY OF RECORD
|
|
ultima_cotizacion,codid,cod_n,cod_grupo,cod_tipo,cod_sec INT,
|
|
precio,cantidad1,cantidad,descuento FLOAT,
|
|
titulo STRING
|
|
|
|
END RECORD,
|
|
respuesta RECORD
|
|
cod_msg,descripcion STRING,
|
|
orden INT
|
|
END RECORD
|
|
END RECORD
|
|
DEFINE cliente RECORD
|
|
nombre,cond_pago,rnc,tipo_doc STRING,
|
|
limite_cr FLOAT,
|
|
tipo_negocio INT,
|
|
direccion,urbanizacion,sector,pais,zona,provincia, telefono_casa,telefono_celular,email,url,contacto STRING,
|
|
tipo_cliente INT
|
|
END RECORD,
|
|
s,url, selec,ret,res STRING,
|
|
ult_numero,vendedor,i,ultimo_req INT,
|
|
pprima,pitbis,valor_orden DEC(12,2),
|
|
puser,pfecha_crea VARCHAR(50),
|
|
cmd,r_cmd t_sync_cmd,
|
|
data t_sync_cmd
|
|
|
|
DISPLAY "ORDEN_E ",sorden
|
|
CALL util.JSON.parse(sorden,orden)
|
|
LET orden.encabezado.sec_vend=9
|
|
DISPLAY "estoy en orden ",orden.encabezado.conexion
|
|
IF orden.encabezado.conexion != 'ACTIVA' THEN
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
CONNECT TO "smarmotech" USER orden.encabezado.usuario USING orden.encabezado.clave
|
|
IF STATUS < 0 THEN
|
|
LET orden.respuesta.cod_msg = 400
|
|
LET orden.respuesta.descripcion = 'USUARIO NO ES VALIDO'
|
|
RETURN util.JSON.stringify(orden)
|
|
END IF
|
|
END IF
|
|
|
|
#CRACION DE CLIENTES CUANDO LA ORDEN NO SE FACTURA
|
|
IF orden.encabezado.cod_zona IS NULL THEN
|
|
LET orden.encabezado.cod_zona = 20
|
|
ELSE
|
|
LET selec = "SELECT a.descrip FROM marmotech.dbo.vetb00008 a WHERE cod_zona = ? AND a.status_t IS NULL"
|
|
PREPARE buscazona FROM selec
|
|
EXECUTE buscazona USING orden.encabezado.cod_zona
|
|
IF STATUS = NOTFOUND THEN
|
|
LET orden.encabezado.cod_zona = 20
|
|
END IF
|
|
END IF
|
|
IF orden.encabezado.region_provincia IS NULL THEN
|
|
LET orden.encabezado.region_provincia = 11
|
|
ELSE
|
|
LET selec = "SELECT a.nombre_provincia FROM marmotech.dbo.vetb00020 a WHERE cod_provincia = ? AND a.status_t IS NULL"
|
|
PREPARE buscaprovincia FROM selec
|
|
EXECUTE buscaprovincia USING orden.encabezado.region_provincia
|
|
IF STATUS = NOTFOUND THEN
|
|
LET orden.encabezado.region_provincia = 11
|
|
END IF
|
|
END IF
|
|
|
|
LET cliente.cond_pago = 4
|
|
LET cliente.direccion = orden.encabezado.direccion_linea1
|
|
LET cliente.email = orden.encabezado.correo_electronico
|
|
LET cliente.nombre = orden.encabezado.nombre
|
|
LET cliente.pais = orden.encabezado.pais_region
|
|
LET cliente.provincia = orden.encabezado.region_provincia
|
|
LET cliente.zona = orden.encabezado.cod_zona
|
|
LET cliente.rnc = orden.encabezado.num_rnc
|
|
LET cliente.telefono_casa = orden.encabezado.telefono1
|
|
LET cliente.telefono_celular = orden.encabezado.telefono2
|
|
LET cliente.tipo_cliente = orden.encabezado.tipo_cliente
|
|
LET cliente.contacto = orden.encabezado.contacto
|
|
|
|
|
|
IF orden.encabezado.conexion != 'ACTIVA' THEN
|
|
LET scliente = util.JSON.stringify(cliente)
|
|
CALL crearcliente(scliente) RETURNING orden.encabezado.tipo_cliente,orden.encabezado.sec_cliente
|
|
END IF
|
|
LET selec ="
|
|
SELECT num_oc FROM marmotech.dbo.prtb00020"
|
|
|
|
PREPARE ordencmd FROM selec
|
|
LET selec = "UPDATE marmotech.dbo.prtb00020 set num_oc = ?,us_crea='ECOMMERCE',fech_crea = getdate()"
|
|
PREPARE updateprtb20 FROM selec
|
|
|
|
LET selec = "SELECT cod_n,cod_grupo,cod_tipo,cod_sec FROM marmotech.dbo.iptb00002 WHERE codid = ?"
|
|
PREPARE buscaprod FROM selec
|
|
|
|
{ " INSERT INTO marmotech.dbo.prtb00012
|
|
(ventas,cotizacion_no,num_oc,fecha_oc,orden_sustituta,sec_vend,tipo_cliente,
|
|
sec_cliente,direccion,telefono,fax,cond_pago,ubicacion,cerrada,us_crea,fech_crea,tipo_orden,nombre_file,
|
|
cantidad_i,precio_i,cantidad_mo,itbis,precio_mo,observacion,nombre_file2)
|
|
VALUES
|
|
('3',?,?,?,?,?,?,?,?,?,?,?,?,'N','ECOMMERCE',getdate(),'ECOMMERCE','0',?,?,?,?,?,?,?)"
|
|
}
|
|
LET selec =
|
|
" INSERT INTO marmotech.dbo.prtb00012
|
|
(ventas,cotizacion_no,num_oc,fecha_oc,orden_sustituta,sec_vend,tipo_cliente,
|
|
sec_cliente,direccion,telefono,fax,cond_pago,ubicacion,cerrada,us_crea,fech_crea,tipo_orden,
|
|
cantidad_i,precio_i,cantidad_mo,itbis,precio_mo,observacion,nombre_file2,nombre_file,codigo_dgii,titulo_ncf,
|
|
valor_envio,contacto_obra,telefono_contacto_obra)
|
|
VALUES
|
|
('3',?,?,?,?,?,?,?,?,?,?,?,?,'N','ECOMMERCE',getdate(),'ECOMMERCE',?,?,?,?,?,?,?,?,?,?,?,?,?)"
|
|
|
|
PREPARE insorden FROM selec
|
|
|
|
LET selec = "SELECT cotizacion_no FROM marmotech.dbo.vetb00053 "
|
|
|
|
PREPARE buscacot FROM selec
|
|
|
|
LET selec = "UPDATE marmotech.dbo.vetb00053 SET cotizacion_no = ?"
|
|
|
|
PREPARE actualizacot FROM selec
|
|
|
|
LET selec = "INSERT INTO marmotech.dbo.vetb00050
|
|
(cod_cia,ventas,cotizacion_no,fecha,tipo_cliente,sec_cliente,
|
|
nombre_cliente,rnc,nombre_proyecto,direccion_cliente,cod_provincia,telefono_r,plazo_entrega,
|
|
email,cond_pago,total_bruto,monto_desc,sub_total,monto_itbi,porc_itbi,total_neto,
|
|
us_crea,fech_crea,num_oc,contacto,comentario,sincronizado)
|
|
VALUES ('1','3',?,?,?,?,?,?,?,?,?,?,?,
|
|
?,?,?,?,?,?,?,?,'ECOMMERCE',getdate(),?,?,?,0)"
|
|
PREPARE insmacotiza FROM selec
|
|
|
|
LET selec = "INSERT INTO marmotech.dbo.vetb00051 (cod_cia,ventas,cotizacion_no,area,cod_n,cod_grupo,cod_tipo,
|
|
cod_sec,descripcion,
|
|
cantidad_1,cantidad,precio,porc_desc,descripcion_area,sincronizado)
|
|
VALUES ('1','3',?,'1',?,?,?,?,?,?,?,?,?,'AREA GENERAL',0)"
|
|
PREPARE insdetcotiza FROM selec
|
|
|
|
#REQUISICION DESPACHOS
|
|
LET selec = "SELECT a.num_req FROM marmotech.dbo.cctb00019 a"
|
|
PREPARE buscanumreq FROM selec
|
|
|
|
LET selec= "UPDATE marmotech.dbo.cctb00019 SET num_req = ?,us_crea=SUSER_SNAME(),fech_crea=getdate()"
|
|
PREPARE actualizareq FROM selec
|
|
|
|
LET SELEC ="
|
|
INSERT INTO marmotech.dbo.cctb00026 (num_req,num_oc,cotizacion_no,id,area,cod_n,cod_grupo,cod_tipo,cod_Sec,
|
|
cantidad_ord1,cantidad_ord,cantidad_1,cantidad,precio,descuento,descvalor,valor,
|
|
us_crea,fech_crea,estado
|
|
)
|
|
VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,'ECOMMERCE',GETDATE(),?)
|
|
|
|
"
|
|
PREPARE insrequisicion FROM selec
|
|
|
|
LET selec ="INSERT INTO marmotech.dbo.cctb00025 (num_req,fecha,sec_vend,us_crea,fech_crea,estado,estado_despacho,monto_req)
|
|
values (?,?,?,SUSER_SNAME(),GETDATE(),'AUTORIZADA','NO DESPACHADA',?)
|
|
"
|
|
PREPARE insmareq FROM SELEC
|
|
|
|
BEGIN WORK
|
|
|
|
EXECUTE buscacot INTO orden.encabezado.cotizacion_no
|
|
IF orden.encabezado.cotizacion_no IS NULL THEN
|
|
LET orden.encabezado.cotizacion_no = 0
|
|
END IF
|
|
|
|
LET orden.encabezado.cotizacion_no = orden.encabezado.cotizacion_no + 1
|
|
EXECUTE actualizacot USING orden.encabezado.cotizacion_no
|
|
|
|
EXECUTE ordencmd INTO ult_numero
|
|
|
|
IF ult_numero IS NULL THEN
|
|
LET ult_numero = 0
|
|
END IF
|
|
LET ult_numero = ult_numero + 1
|
|
|
|
EXECUTE updateprtb20 USING ult_numero
|
|
|
|
LET orden.encabezado.num_oc = ult_numero
|
|
LET orden.encabezado.fecha_orden = TODAY
|
|
EXECUTE insorden USING orden.encabezado.cotizacion_no, ult_numero, orden.encabezado.fecha_orden,
|
|
orden.encabezado.orden_externa,
|
|
orden.encabezado.sec_vend, orden.encabezado.tipo_cliente, orden.encabezado.sec_cliente,
|
|
orden.encabezado.direccion_linea1,orden.encabezado.telefono1,orden.encabezado.telefono2,
|
|
orden.encabezado.cond_pago,orden.encabezado.direccion_linea2,
|
|
orden.encabezado.total_bruto,orden.encabezado.monto_descuento,
|
|
orden.encabezado.sub_total,orden.encabezado.itbis,orden.encabezado.total_neto,
|
|
orden.encabezado.referencia,orden.encabezado.contacto,orden.encabezado.tipo_envio,
|
|
orden.encabezado.codigo_dgii,orden.encabezado.titulo_ncf,orden.encabezado.valor_envio,
|
|
orden.encabezado.contacto_obra,orden.encabezado.telefono_contacto_obra
|
|
|
|
|
|
LET selec =
|
|
" INSERT INTO marmotech.dbo.prtb00013 (num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec,
|
|
precio,descuento,cantidad,us_crea,fech_crea,estado_producto,codid,descripcion)
|
|
VALUES (?,?,'1',?,?,?,?,?,?,?,'ecommerce',getdate(),'EN PROCESO',?,?)
|
|
"
|
|
PREPARE insdetalle1 FROM selec
|
|
|
|
|
|
LET selec =
|
|
"
|
|
INSERT INTO marmotech.dbo.prtb00023 (num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad_1,
|
|
cantidad)
|
|
VALUES (?,?,?,?,?,?,?,?,?)
|
|
"
|
|
PREPARE insdetalle2 FROM selec
|
|
#COTIZACION
|
|
|
|
EXECUTE insmacotiza USING orden.encabezado.cotizacion_no,orden.encabezado.fecha_orden,orden.encabezado.tipo_cliente,
|
|
orden.encabezado.sec_cliente,orden.encabezado.nombre,orden.encabezado.num_rnc,
|
|
'COMPRA ECOMMERCE',orden.encabezado.direccion_linea1,orden.encabezado.region_provincia,
|
|
orden.encabezado.telefono1,'INMEDIATO',orden.encabezado.correo_electronico,
|
|
orden.encabezado.cond_pago,orden.encabezado.total_bruto,orden.encabezado.monto_descuento,
|
|
orden.encabezado.sub_total,orden.encabezado.monto_itbis, orden.encabezado.itbis,
|
|
orden.encabezado.total_neto,ult_numero,orden.encabezado.contacto,orden.encabezado.referencia
|
|
#REQUISICION DESPACHOS
|
|
EXECUTE buscanumreq INTO ultimo_req
|
|
|
|
IF ultimo_req IS NULL THEN
|
|
LET ultimo_req = 0
|
|
END IF
|
|
LET ultimo_req = ultimo_req + 1
|
|
|
|
EXECUTE actualizareq USING ultimo_req
|
|
|
|
|
|
|
|
#DETALLE ORDEN DE PEDIDOS y COTIZACIONES
|
|
LET valor_orden = 0
|
|
DISPLAY "DEETALLE ORDEN ",orden.detalle.getLength()
|
|
FOR i = 1 TO orden.detalle.getLength()
|
|
DISPLAY "codigo del detalle ",orden.detalle[i].codid
|
|
IF orden.detalle[i].codid IS NOT NULL THEN
|
|
LET valor_orden = (orden.detalle[i].cantidad*orden.detalle[i].precio)-orden.detalle[i].descuento
|
|
EXECUTE buscaprod INTO orden.detalle[i].cod_n,orden.detalle[i].cod_grupo,orden.detalle[i].cod_tipo,
|
|
orden.detalle[i].cod_sec
|
|
USING orden.detalle[i].codid
|
|
|
|
EXECUTE insdetalle1 USING ult_numero,i, orden.detalle[i].cod_n,orden.detalle[i].cod_grupo,
|
|
orden.detalle[i].cod_tipo,
|
|
orden.detalle[i].cod_sec,orden.detalle[i].precio,orden.detalle[i].descuento,
|
|
orden.detalle[i].cantidad,
|
|
orden.detalle[i].codid,orden.detalle[i].titulo
|
|
|
|
EXECUTE insdetalle2 USING ult_numero,i,'1',orden.detalle[i].cod_n,orden.detalle[i].cod_grupo,
|
|
orden.detalle[i].cod_tipo,
|
|
orden.detalle[i].cod_sec,orden.detalle[i].cantidad1,orden.detalle[i].cantidad
|
|
|
|
EXECUTE insdetcotiza USING orden.encabezado.cotizacion_no,orden.detalle[i].cod_n,orden.detalle[i].cod_grupo,
|
|
orden.detalle[i].cod_tipo,orden.detalle[i].cod_sec,orden.detalle[i].titulo,
|
|
orden.detalle[i].cantidad1,orden.detalle[i].cantidad,orden.detalle[i].precio,
|
|
orden.detalle[i].descuento
|
|
#DETALLE REQUISICION DESPACHOS
|
|
IF orden.detalle[i].descuento IS NULL THEN
|
|
LET orden.detalle[i].descuento = 0
|
|
END IF
|
|
IF valor_orden IS NULL THEN
|
|
LET valor_orden = 0
|
|
END IF
|
|
EXECUTE insrequisicion USING ultimo_req,orden.encabezado.num_oc, orden.encabezado.cotizacion_no,i,
|
|
'1',orden.detalle[i].cod_n,orden.detalle[i].cod_grupo,
|
|
orden.detalle[i].cod_tipo,orden.detalle[i].cod_sec,
|
|
orden.detalle[i].cantidad,orden.detalle[i].cantidad,orden.detalle[i].cantidad,
|
|
orden.detalle[i].cantidad,
|
|
orden.detalle[i].precio,'0',
|
|
orden.detalle[i].descuento,
|
|
valor_orden,'AUTORIZADAA'
|
|
|
|
END IF
|
|
END FOR
|
|
EXECUTE insmareq USING ultimo_req,orden.encabezado.fecha_orden,orden.encabezado.sec_vend,
|
|
valor_orden
|
|
|
|
COMMIT WORK
|
|
IF orden.encabezado.conexion <> 'ACTIVA' THEN
|
|
DISCONNECT CURRENT
|
|
END IF
|
|
DISPLAY "orden: ", orden.encabezado.num_oc
|
|
LET orden.respuesta.cod_msg=200
|
|
LET orden.respuesta.descripcion = "ADICION EXITOSA, EL NUMERO DE LA ORDEN EN GENERO ES ",orden.encabezado.num_oc
|
|
LET orden.respuesta.orden = orden.encabezado.num_oc
|
|
RETURN util.JSON.stringify(orden.respuesta)
|
|
END FUNCTION |