Ejecución de proceso ERP mediante URL

Creado por David Miralpeix, Modificado el Tue, 26 Mar 2024 a las 10:58 AM por Pablo Céspedes

Se desea que el ERP sea capaz de ejecutar acciones (apertura de formularios, ejecución de procesos, etc) a partir de un protocolo de URL especifico.

Una vez formada la cadena con la URL, para ejecutarla es necesario:

- Tener el ERP abierto y correctamente logueado.

- Lanzar la URL por cualquier navegador o por el explorador de Windows (que usará el navegador por defecto


Versión 4:

Importante

Para poder utilizar esta funcionalidad es necesario que el cliente esté trabajando con el entorno TechFun.


La dirección URL deberá tener el siguiente formato:

erp://[tokenbasededatos]/[cadenab64]

Versión 5:

La dirección URL deberá tener el siguiente formato:

erp5://[tokenbasededatos]/[cadenab64]


Para obtener el token de base de datos del usuario podemos utilizar la siguiente consulta:

SELECT object_id('ahora_sesion')

Ejemplo de URL:

erp://628197288/SU1QUklNSVJPQkpFVE98W3siQ29sZWNjaW9uIjoiQ2xpZW50ZXMiLCJpZERvYyI6MDAwMDF9XXxDbGllbnRlfENsaWVudGVz

- [tokenbasededatos]:  Es el object_id de la tabla ahora_sesion de la base de datos desde donde se genera la dirección.

- [cadenab64]: Serán los datos de la petición representados en una cadena base 64.


Impresión de un objeto

 

 IMPRIMIROBJETO|Herencia|HijoDefecto|Objeto

  • Herencia: Se debe construir un objeto con formato JSON con dos propiedades: Coleccion e IdDoc.
  • HijoDefecto: hijo defecto del objeto. Cliente
  • Objeto: Clientes


IMPRIMIROBJETO|[{"Coleccion":"NombreColeccion","idDoc":valoridDoc}]|HijoDefecto|Coleccion
IMPRIMIROBJETO|[{"Coleccion":"Clientes","idDoc":1}]|Cliente|Clientes
IMPRIMIROBJETO|[{"Coleccion":"Facturas","idDoc":1}]|Factura|Facturas


Acceder a un objeto

 

  • Objeto: Clientes
  • IdDoc: IdDoc = 100
  • QueryFinal: SELECT iddoc _iddoc_, ''+ISNULL(CAST(Cliente AS VARCHAR(200)), '')+' - '+ISNULL(CAST(IdCliente AS VARCHAR(200)), '')+'' _cadenadescrip_, IdCliente, Cliente, Nif, DescripFormaPago, Ciudad, NumTelefono, NumFax, E_Mail From VDLG_CLIENTES
  • Where (Si no hay Where por defecto se pondrá ‘IdDoc >= 1’)
  • NuevaVentana: true o false. Indica si se abre una nueva ventana de VB6 o se carga el objeto sobre la anterior
  • Herencia: Indica si el objeto proviene de un objeto padre para heredar las propiedades. Si no proviene se deja el parámetro vacío
  • GroupBy: sirve para las flechas de navegación de los formularios, al cambiar de objeto seguir el orden de la colección. Si no contiene el groupby se deja el parámetro vacío.
  • OrderBy: sirve para las flechas de navegación de los formularios, al cambiar de objeto seguir el orden de la colección. (ORDER BY IdCliente asc)
  • FinalQueryCampos: Query con campos parseados iddoc y _cadenadescrip_. En la versión de prueba probar poniendo el mismo valor que el parámetro QueryFinal de arriba. Si es necesario se implementará la funcionalidad que hace Techfun
  • Arbol: por defecto poner noarbol

  • ABRIROBJETO|Clientes|IdDoc=2658|SELECT iddoc _iddoc_, ''+ISNULL(CAST(Cliente AS VARCHAR(200)), '')+' - '+ISNULL(CAST(IdCliente AS VARCHAR(200)), '')+'' _cadenadescrip_, IdCliente, Cliente, Nif, DescripFormaPago, Ciudad, NumTelefono, NumFax, E_Mail From VDLG_CLIENTES|IdDoc >= 1|false|[{"Coleccion":"Clientes"}]||ORDER BY IdCliente asc|SELECT iddoc , ''+ISNULL(CAST(Cliente AS VARCHAR(200)), '')+' - '+ISNULL(CAST(IdCliente AS VARCHAR(200)), '')+'' , IdCliente, Cliente, Nif, DescripFormaPago, Ciudad, NumTelefono, NumFax, E_Mail From VDLG_CLIENTES|noarbol



Abrir un colección

  • Objeto: Clientes
  • IdDoc: IdDoc = 1,723


ABRIRCOLECCION|Clientes|idDoc IN (1,723)



Ejecución de un proceso asociado al objeto (Menú contextual)


EJECUTAMENUOBJETO|herencia||Objeto|id


  • Herencia: Mismo formato del parámetro herencia de arriba: {“Coleccion”: “Clientes”, “IdDoc”: 100}
  • Objeto: Nombre del objeto (Clientes)
  • Id: Id del menú que se debe ejecutar.

-- Ver las opciones de menú de un Objeto
SELECT Distinct Cmn.Caption, Cmp.IdProceso, Cmp.Estado, Cmp.Orden,Cmn.IdTecla
FROM CEESI_Menus Cmn
INNER JOIN CEESI_Menu_Procesos Cmp ON Cmn.IdMenu = Cmp.IdMenu
INNER JOIN CEESI_Procesos Cpr ON Cmp.IdProceso = Cpr.IdProceso
INNER JOIN vCeesi_menu_Objeto cmo ON cmp.IdMenu=cmo.IdMenu AND cmp.Objeto=cmo.Objeto
WHERE Cmp.Objeto='nombredelObjeto'
ORDER BY Cmp.Orden, Cmp.IdProceso

EJECUTAMENUOBJETO|[{"Coleccion":"Facturas","IdDoc":1}]||Facturas|62
EJECUTAMENUOBJETO|[{"Coleccion":"Facturas","IdDoc":1}]||Facturas|63


Versión 4:

Ejecución de un Visual Basic Script

Importante

Válido para ejecutar cualquier bloque de código de VBScript. OJO NO INVOCAR AL

‘frmAux.Descargar’ PORQUE FALLARÁ LA EJECUCIÓN:


VBSCRIPT|CodigoScript|


VBSCRIPT|Sub Main() MsgBox "Test" End Sub|


Versión 5:

Ejecución de un Script de C#


 CSCRIPT|CodigoScript

CSCRIPT|using AhoraCore;
using AhoraOCX;
using AhoraSistema;
using static AhoraCore.VBA.Interaction;
using static AhoraCore.VbMsgBoxResult;
using static AhoraCore.VbMsgBoxStyle;
using System;

namespace AhoraScriptsVacia
{
    public class Script_Auto : AhoraOCX.AhoraBaseScript
    {
        public void Main()
        {
      MsgBox("PRUEBA LANZADA");
        }
    }
}

¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo