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