IMPORT util FUNCTION ordenApi(xorden) DEFINE xorden STRING 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 STRING, tipo_cliente INT END RECORD DEFINE orden RECORD credenciales RECORD usuario,clave STRING END RECORD, encabezado RECORD nombre,direccion_linea1,direccion_linea2,ciudad,codigo_postal,pais_region,region_provincia, telefono1,telefono2,correo_electronico VARCHAR(100), orden_externa VARCHAR(30), fecha_orden DATE, metodo_pago STRING, total_bruto,monto_descuento,monto_itbis,total_neto,itbis FLOAT, num_rnc VARCHAR(11), ventas VARCHAR(1), cod_zona VARCHAR(3) END RECORD, detalle DYNAMIC ARRAY OF RECORD ultima_cotizacion,cod_n,cod_grupo,cod_tipo,cod_sec INT, precio,cantidad1,cantdad,descuento FLOAT END RECORD END RECORD DEFINE respuesta RECORD cod_msg INT, descripcion STRING, ncf_string STRING END RECORD DEFINE ult_numero,xtipocliente,xseccliente INT TRY CALL util.JSON.parse(xorden,orden) CATCH LET respuesta.cod_msg=404 LET respuesta.descripcion = 'ERROR EN JSON ',SQLCA.sqlerrm LET respuesta.ncf_string = 'NO TIENE' RETURN util.JSON.stringify(respuesta) END TRY TRY CONNECT TO "marmotech" USER orden.credenciales.usuario USING orden.credenciales.clave CATCH LET respuesta.cod_msg=404 LET respuesta.descripcion = 'ERROR EN CONEXION DB ',SQLCA.sqlerrm LET respuesta.ncf_string = 'NO TIENE' DISCONNECT CURRENT RETURN util.JSON.stringify(respuesta) END TRY # GESTION CLIENTE LET cliente.tipo_cliente=25 CALL crearcliente(cliente.*) RETURNING xtipocliente,xseccliente # CONSECUTIVO ATOMICO: incrementa prtb00020 (antes nunca lo avanzaba y solo # leia +1 -> el contador quedaba atrasado y se duplicaba PK_prtb00012) BEGIN WORK UPDATE prtb00020 SET num_oc = ISNULL(num_oc,0) + 1, us_crea = orden.credenciales.usuario, fech_crea = GETDATE() IF SQLCA.SQLERRD[3] = 0 THEN INSERT INTO prtb00020 (num_oc,us_crea) VALUES (1,orden.credenciales.usuario) END IF SELECT num_oc INTO ult_numero FROM prtb00020 COMMIT WORK INSERT INTO prtb00012 (ventas,tipo_orden,num_oc,fecha,tipo_cliente,sec_cliente,telefono,direccion,ubicacion, cerrada,cond_pago,itbis, valor_bruto,monto_desc,sub_total,neto,us_crea,fech_crea,num_oc_r) VALUES ('1','ECOMMERCE',ult_numero,orden.encabezado.fecha_orden,xtipocliente,xseccliente, 'N',1,orden.encabezado.itbis, orden.encabezado.total_bruto, orden.encabezado.monto_descuento,orden.encabezado.total_bruto-orden.encabezado.monto_descuento, orden.encabezado.total_neto,orden.credenciales.usuario,getdate(), orden.encabezado.orden_externa) END FUNCTION