Dinaup - Base de Conocimientos Help

MyDinaup

MyDinaup es un conjunto de librerías .NET generadas automáticamente para cada empresa que utiliza Dinaup como plataforma de gestión de datos. El objetivo principal es exponer, mediante código fuertemente tipado, la estructura particular de secciones, Documentos dinámicos e Informes disponible en cada licencia.

Estas librerías exponen las entidades de negocio (secciones, documentos dinámicos e informes) de forma fuertemente tipada. Esto evita que el desarrollador deba conocer los identificadores internos de campos y documentos, ya que MyDinaup genera clases con propiedades y métodos que representan las estructuras reales.

  • SectionsD (Secciones):
    Cada sección de Dinaup se modela como una clase en MyDinaup, con propiedades que corresponden a campos específicos. Asimismo, se incluyen métodos asíncronos para leer (GetRowsAsync), filtrar, paginar y manipular registros sin necesidad de usar identificadores ni campos internos manualmente.

  • DynamicDocumentsD (Documentos Dinámicos):
    Los documentos dinámicos son plantillas con variables que Dinaup utiliza para generar contenido (HTML, PDF, etc.). MyDinaup crea clases derivadas de DinaupDynamicDocumentBase para cada documento, exponiendo las variables que se deben suministrar. Al ejecutar el documento vía ExecuteAsync(), se obtiene el resultado sin preocuparse por los detalles de identificación del documento o la traducción de parámetros a IDs internos.

  • ReportsD (Informes):
    Los informes son vistas de datos preconfiguradas. MyDinaup genera clases que representan cada informe, incluyendo una clase DTO (por ejemplo, *_RowC) para cada fila de resultados. Esto permite leer resultados como objetos .NET tipados y filtrarlos u ordenarlos a través de métodos y propiedades, en lugar de manejar datos crudos o diccionarios.

Ejemplos Secciones

Obtención de Filas desde una Sección

Suponiendo que la empresa dispone de una sección "Productos", MyDinaup generará una clase ProductosD con una clase interna ProductosC (modelo de datos) y una clase ProductosES (estructura de campos). ```c# var parameters = new RowsRequestParameters ; var productos = await EmpresaXMyDinaup.SectionsD.ProductosD.GetRowsAsync(dinaupClient, parameters, dinaupClient.DefaultSession);

foreach (var producto in productos) { Console.WriteLine($"ID: {producto.ID} - Nombre: {producto.TextoPrincipal}"); } ```

Filtrado de Datos en una Sección

Para aplicar filtros, se utilizan las propiedades definidas en la clase ProductosES (estructura de campos). Por ejemplo, filtrar productos descontinuados:

var parametrosFiltrado = new RowsRequestParameters([EmpresaXMyDinaup.SectionsD.ProductosD.ProductosES.Descontinuado, "=", "1" ] ); var productosDescontinuados = await EmpresaXMyDinaup.SectionsD.ProductosD.GetRowsAsync(dinaupClient, parametrosFiltrado, dinaupClient.DefaultSession); Console.WriteLine($"Total de productos descontinuados: {productosDescontinuados.Count}");

Ejemplos Documento Dinámico

Ejecución de un Documento Dinámico

Si la empresa cuenta con un documento dinámico “DocumentoDeEnvio” que requiere una variable “PedidoID”, MyDinaup genera una clase que hereda de DinaupDynamicDocumentBase.

var docEnvio = new EmpresaXMyDinaup.DynamicDocuments.Envios.DocumentoDeEnvioAPI(PedidoID: 12345); docEnvio.ExecuteAsync(dinaupClient, dinaupClient.DefaultSession).Wait(); var contenido = docEnvio.Response.R_DocumentContent; Console.WriteLine(contenido);

No se necesitan diccionarios de parámetros ni conocer el GUID del documento. La clase DocumentoDeEnvioAPI ya contiene toda esa información y solicita solamente el valor del parámetro PedidoID.

Ejemplos Informes

Lectura de Datos desde un Informe

Si existe un informe preconfigurado, por ejemplo, “VentasMensuales”, MyDinaup crea una clase VentasMensualesC y una fila tipo VentasMensuales_RowC.

var reporte = new EmpresaXMyDinaup.Reports.VentasMensualesC(); reporte.ExecuteQueryAsync(dinaupClient, page: 1, limit: 50).Wait(); foreach (var fila in reporte.Rows) { Console.WriteLine($"VentaID: {fila.ID}, Importe: {fila.Importe}, Fecha: {fila.Fecha}"); }

De nuevo, no es necesario manejar arrays de objetos sin procesar. El informe se expone como una clase clara con propiedades tipadas.

Ejemplos operación de Escritura

En este ejemplo, se escribe un nuevo registro en la sección “SeccionDePruebasAPI” usando un campo que hace referencia a una unidad de medida relacionada:

var data = new Dictionary<string, string> { { MyDinaup.SectionsD.SeccionDePruebasAPID.SeccionDePruebasAPIES.TextoPrincipal, "Sample Text" }, // Add other fields }; var writeOperation = new WriteOperation(string.Empty, data); var sectionId = MyDinaup.SectionsD.SeccionDePruebasAPID._SectionIDGUID; var result = dinaupClient.RunWriteOperation(dinaupClient.DefaultSession, sectionId, writeOperation, false); if (result.Ok) { Console.WriteLine("Record added successfully. ID: " + writeOperation.WriteOperationResult.RowID); } else { Console.WriteLine("Failed to add record."); }

Convención estructura

Puedes consultar las secciones disponibles en Indice de secciones.

Homológamente a una base de datos, las secciones son tablas donde se almacena la información estructurada:
Ejemplo: Productos, Impuestos, Compras, Ventas...

MyDinaup tiene una nomenclatura para hacerla fácilmente accesible.

  1. Sections

    1. <Seccion>D

      • (Aquí D es un sufijo que significa " Definiciones ")

    2. <Seccion>D.<Seccion>ES.<Campo>

      • (ES indica " Estructura ")

  2. Reports

    1. <Informe>C

      • (Aquí C = " Construible " — indica que se puede instanciar con New)

    2. <Informe>C.<Informe>_RowC

      • RowC representa una fila del informe

    3. <Informe>C.<Informe>_RowC.<Propiedad>

      • (Tanto <Informe> como <Propiedad> son patrones personalizables)

Ejemplos

La entidad “Productos” se almacena en la sección Productos. Y su informe API Principal se llama API - Productos

  1. Sections

    • ProductosD

    • ProductosD.ProductosES.Nombre

  2. Reports

    • APIProductosC

    • APIProductosC.APIProductos_RowC

    • APIProductosC.APIProductos_RowC.Nombre

Ejemplo Código

// Ejemplo de uso con la clase APIProductosC en C# var reporte = new APIProductosC(); // Agregamos un filtro: campo, operador y valor // Sacamos el campo de su sectionsD reporte.AddFilter(ProductosD.ProductosES.Nombre, "=", "Lapicero"); // Ejecutamos la consulta await reporte.ExecuteQueryAsync( PlaySesion, page: 1, resultsPerPage: 100 ); // La propiedad .Rows devuelve una lista de tipo List<APIProductosC.APIProductos_RowC> List<APIProductosC.APIProductos_RowC> listaProductos = reporte.Rows; // Recorremos los resultados foreach (var producto in listaProductos) { Console.WriteLine($"ID: {producto.ID}, Nombre: {producto.Nombre}"); }
Last modified: 04 February 2025