Armado de query para Explorer web y mobile

Para darle soporte a los diferentes formatos de vistas que soporta el componente UI.Explorer (listado, mapa, calendario y galería) las vistas destinadas al mismo deberán contar con las siguientes columnas básicas (Ejemplo: Co_MK_VW_Eventos):

  • _state
  • _state_code
  • _state_color
  • _state_text
  • _tags
  • _crm_account_id
  • _attachments (*)
  • _notes (*)
  • _geo_latitude
  • _geo_longitude
  • _calendar_id (no se muestra)
  • _calendar_date (a)
  • _calendar_title (b)
  • _calendar_body (c)
  • _gallery_id (no se muestra)
  • _gallery_picture (1)
  • _gallery_picture_placeholder (2)
  • _gallery_price_label (3)
  • _gallery_category (4)
  • _gallery_title (5)
  • _gallery_item_description (6)
  • _gallery_link_text (7)

(*) Éstas columnas, por cuestiones de performance, deberían salir de la tabla de propiedades de la entidad.

Las columnas que comienzan con el prefijo “_calendar_” se utilizarán en el formato “Calendario” de la siguiente manera:

vistacalendario

Las columnas que comienzan con el prefijo “_gallery_” se utilizarán en el formato “Galería” de la siguiente manera:

 


Integración de IGGLOBAL con MercadoLibre

Objetivos

El presente proyecto tiene como objetivo realizar una librería reutilizable que permita integrar los servicios de MercadoLibre a través de sus APIs públicas y privadas (con autenticación OAuth 2.0) al sistema de gestión IGGLOBAL.

Con dicha librería se podrán generar las siguientes funcionalidades dentro del módulo eCommerce y Ventas de IGGLOBAL Online:

  • Publicar artículos
  • Recibir alertas de nuevas preguntas y compras que realizaron las personas por el portal MercadoLibre.
  • Responder preguntas de manera masiva, con la posibilidad de utilizar plantillas de respuestas.
  • Recibir las ventas ocurridas en MercadoLibre e integrarlas al circuito funcional preexistente en IGGLOBAL.

Implementación

El proyecto está representado por una librería en C# dentro de la solución de IGGLOBAL Online (IGGlobal.Ecommerce.MercadoLibre).

A su vez, se implementaron las interfaces gráficas dentro del proyecto IGGLOBAL Online.

Se utilizó la librería oficial que publica MercadoLibre Developers para el consumo de los datos a través de endpoints JSON.

Estado: Completo


Rango con buscador por descripción o código (Tipo de rango: 9)

1. Crear Rango

El tipo de rango “Rango con buscador por descripción o código” (9) permite aplicar un filtro de tipo Desde/Hasta buscando los códigos a filtrar mediante la descripción de los mismos (lookup).

Para su utilización se deberá configurar en la tabla Codigos_Definicion_Rangos_Net:

  • ID de vista que se utilizará para la busqueda (VISTA): dicha vista debe soportar el parámetro @like de tipo varchar(100). Si ésta vista se utiliza en el sistema para grillas, agregar la clave de rango “LIKE” a la misma para que funcione correctamente (Ver ejemplo: MK-22 – Co_MK_SP_Cuentas).
  • Nombre de la columna que contendrá el código de la entidad a buscar (CODIGO).
  • Nombre de la columna que contendrá la descripción de la entidad a buscar (DESCRIPCION).

Un ejemplo funcionando es la vista MK-33 (Co_MK_SP_Eventos).


2.  Relación Vista/Rango

Codigos_Seg_Vistas_Rangos

where claveRango=’xxx'(clave en Codigos_DefinicionesRangos_net)

En cada registro modificar claveRango = xxx por LIKE_xxx


3. Relación DataTable/Rango

Codigos_Query_Rangos

where clave_rango=’xxx'(clave en CodigosDefinicionesRangos_net)

En cada registro modificar clave_rango = xxx por LIKE_xxx


Configuración – Alias para Listados/DataTables/Pivots

Tablas a considerar:

  • Codigos_Seg_Columnas_Sistema: almacena TODO EL UNIVERSO de columnas que pueden usarse dentro del sistema. NO PUEDEN REPETIRSE LOS REGISTROS. PK -> datafield. Si la columna del listado/DataTable/Pivot no existe, cargar en esta tabla.
  • Codigos_Query_Columnas: almacena todas las columnas que devuelve un SP utilizado para DataTable. La llenamos con el siguiente query (ejecutar CADA VEZ QUE SE CREA UN DATATABLE CON S.P.):

declare @query_id int

set @query_id = id del datatable

SELECT * INTO #temp1
FROM OPENROWSET(‘SQLNCLI’, ‘Server=bg-srv07;uid=sa;pwd=base321+’,
‘EXEC DATOS_DESA.[dbo].[nombre de SP]’);

/*
SELECT * FROM tempdb.sys.columns
WHERE object_id=object_id(‘tempdb..#temp1’)
GO
*/

insert into Codigos_Query_Columnas(Query_Id,Tabla_Id,Columna_Id,Alias,Orden,Agrupar,Sumar,Contar,OrdenAgrupar,dt_lastupdate,vc_updateuser)
SELECT @query_id, ‘nombre de sp‘, name, name, column_id*10, 0,0,0,0, getdate(), ‘system’ FROM tempdb.sys.columns
WHERE object_id=object_id(‘tempdb..#temp1’) and name not in (‘_state’,’_state_code’,’_state_color’,’_state_text’,’_tags’)

DROP TABLE #temp1

select * from Codigos_Query_Columnas where Query_Id = @query_id order by orden asc
–delete Codigos_Query_Columnas where Query_Id = @query_id

  • ATENCIÓN: SI EN EL LISTADO/DATATABLE O PIVOT LA COLUMNA SE MUESTRA VACÍA SIGNIFICA QUE NO EXISTE EN LA TABLA [CODIGOS_SEG_COLUMNAS_SISTEMA], sino preguntar a LPERDOMO.

Configuración – Carga y asignación de rangos para acciones de consultas (Views)

El sistema tiene un apartado de configuración definido para los rangos que soporta, dicha información está en la tabla: Codigos_DefinicionesRangos_Net. Posee las siguientes columnas:

  • CLAVE: identificación única del rango en cuestión. El valor se define según el nombre de la columna sobre la que se va a aplicar el rango. Ejemplo: si la columna se llama CoCatalogo la clave de rango será COCATALOGOS. Si el tipo de rango es “intervalo” el nombre será INTERVAL_COCATALOGO.
  • TITULO: texto que aparecerá en pantalla para describir el rango.
  • TITULOETIQUETADD: texto de la etiqueta del valor inicial del rango (desde).
  • TITULOETIQUETAHH: texto de la etiqueta del valor final del rango (hasta).
  • TIPO_DATO: indica el tipo de rango. Los posibles valores son:
    • 1 – Desde / Hasta valor de tipo numérico.
    • 2 – Si/No.
    • 3 – Desde / Hasta valor de tipo texto.
    • 4 – Único valor de tipo texto ó numérico.
    • 7 – Desde / Hasta fecha (formato dd/MM/YYYY) .
    • 8 – Intervalo de valores discretos (1,2,6,22,15).
  • VALORDD: el valor inicial por defecto del rango. Varía según el tipo de dato del rango.
    • Para tipo 1: 0 (cero)
    • Para tipo 2: true/false
    • Para tipo 3: ” (vacío, no NULL)
    • Para tipo 4: ” (vacío, no NULL)
    • Para tipo 7: existe una lista de pseudo-valores que son interpretados por el sistema en tiempo de ejecución (mas detalles en la función Codigos_DefinicionesRangosNet_fParseValue de la base INFORMAC):
      • today: día de hoy
      • first_week: primer día de la semana en curso.
      • first_month: primer día del mes en curso.
      • first_year: primer día del año en curso.
      • last_week: hace 7 días.
      • last_month: hace 30 días.
      • last_year: hace un año.
      • end_month: último día del mes.
      • end_year: último día del año.
      • from_big_bang: desde el inicio de los tiempos/Big Bang (01/01/1900).
    • Para tipo 8: valores separados con coma (,) dentro de corchetes. Ejemplo: [1,2,20,55]
  • VALORHH: el valor final por defecto del rango. Varía según el tipo de dato del rango.
    • Para tipo 1: 999999 (enteros), 9999 (enteros pequeños)
    • Para tipo 2: true/false
    • Para tipo 3: ‘ZZZZZZZZZZZZZZZZZZZZ’
    • Para tipo 4: ” (vacío, no NULL)
    • Para tipo 7: revisar lista de pseudo-valores detallada mas arriba.
    • Para tipo 8: NULL. No es necesario cargar un valor en esta columna.
  • TABLA: NULL (reservado para futuros usos).
  • VISTA: ID de la vista que se utilizará en la lista desplegable del rango. Sólo en tipos de rango 8 – Intervalos discretos.
  • CODIGO: nombre de la columna de la vista anteriormente definida que sirve como origen al valor seleccionado en la lista desplegable del rango (generalmente es la clave primaria). Sólo en tipos de rango 8 – Intervalos discretos.
  • DESCRIPCION: nombre de la columna de la vista anteriormente definida que sirve como origen de la descripción que se mostrará en la lista desplegable del rango. Sólo en tipos de rango 8 – Intervalos discretos.
  • DDFORMULACRYSTAL: nombre del parámetro de stored procedure que espera el valor inicial del rango. IMPORTANTE: ES MENESTER QUE EL VALOR COLOCADO EN ESTA COLUMNA SEA IGUAL AL NOMBRE DEL O LOS PARÁMETROS QUE ESTAN DEFINIDOS EN EL STORED PROCEDURE. Coordinar con I+D frente a cualquier duda.
  • HHFORMULACRYSTAL: nombre del parámetro de stored procedure que espera el valor final del rango. IMPORTANTE: ES MENESTER QUE EL VALOR COLOCADO EN ESTA COLUMNA SEA IGUAL AL NOMBRE DEL O LOS PARÁMETROS QUE ESTAN DEFINIDOS EN EL STORED PROCEDURE. Coordinar con I+D frente a cualquier duda.
  • MAXLEN: cantidad máxima de caracteres en el control de entrada (no habilitado aún)
  • SELECTDATA: NULL (reservado para futuros usos).

Configuración – Configuración de Quickies (acciones rápidas de grillas)

La definición de las Quickies (Ediciones rápidas de grillas) se hacen en la tabla del informac “Codigos_Usuarios_Campos_Editables”. 

Definición de la tabla “Codigos_Usuarios_Campos_Editables”

  • Usuario_ID (Usuario al que se le atribuye esta acción).
  • tabla (Tabla a actualizar Ej: “Dd_Maestro_Clientes”).
  • TipoEdicion (“1” sin asignación aun).
  • Campo (Campo de la tabla que se vera afectado por la acción).
  • TipoCampo (Tipo de campo según su tabla. Ver tipos de campos).
  • Orden (Orden en que aparecerán los campos).
  • VistaCbo (En caso que el campo sea un combo se completara con la vista que ejecuta ese combo – Ver con desarrollo).
  • Codigo (Códigos que usa la vista del combo).
  • Descripcion (Descripción que usa la vista del combo).

Tipos de Campos

  • text (Varchar, Nvarchar).
  • number (int, smallint, bigint).
  • date (datetime).
  • cbo (campo con referencia a otra tabla “Combo”).
  • textarea (Varchar, Nvarchar).

Ejemplo:

tabla Quick


Configuración – Formato de columnas en grillas (ViewDef)

Tanto los anchos como el orden, tipo de datos para filtrar y el texto de las columnas de todas las grillas se guarda en la tabla Codigos_Vistas_ViewDef. Las columnas son:

  • ViewId: identificador de vista formado por <modulo>-<id numérico>. Ejemplos: MK-33. Este valor se puede obtener desde la aplicación web analizando la página de una grilla con la consola de Chrome (F12), en la solapa “Network”, filtrar por el texto “executeget” y observar de la derecha la solapa “Headers” el valor “id” como muestra la imagen a continuación:

Captura ID vista desde consola chrome

  • datafield: nombre del campo TAL CUAL APARECE EN LA TABLA O RESULTADO DEL STORED PROCEDURE (alias) que hace referencia la vista.
  • text: Texto que tendrá la cabecera de la columna.
  • type: tipo de dato del valor en la columna. Posibles valores: number, string, date.
  • width: ancho de las columnas en píxeles. Ejemplo: 300px.
  • editable: indica si la columna se puede editar con dobleclick. Siempre en 0.
  • cellsalign: alineación horizontal de los textos. Valores posibles: right / left.
  • cellsformat: formato de la celda. Posibles valores aquí. Para fechas utilizar dd/MM/yyyy.
  • hidden: indica si la columna se oculta o se muestra en la grilla de la pantalla.
  • order: orden de las columnas en la grilla de la pantalla.

Type y Width

Para lograr un estandar en las grillas, configurar los registros de acuerdo a la siguiente tabla.

bool
20px
currency
80px
120px
date
80px
number
80px
120px
string
80px
100px
120px
150px
200px

 


Configuración – Valores por defecto en campos de formularios

El sistema de diccionarios de valores por defecto en formularios de IGGLOBAL Online está compuesto por la tabla: Info_Seg_Formularios_Sistema_Defaults. Posee las siguientes columnas:

  • Razon_Social: código de empresa.
  • UsuarioId: identificador de usuario.
  • FormUrl: url del formulario. Ejemplo: si el formulario tiene esta url http://localhost:59120/Crm/Evento el valor a registrar será /Crm/Evento.
  • Campo: campo del formulario.
  • Valor: valor por defecto del campo.
  • SoloLectura: indica si el campo puede ser modificado por el usuario.
  • Invisible: indica si el campo se oculta en pantalla.
  • Minimo: valor mínimo del campo.
  • Maximo: valor máximo del campo.

Una vez cargada una fila en dicha tabla el sistema automáticamente tomará la configuración y la reflejará en pantalla.

Se puede realizar una prueba de los valores por defecto cargados desde la base de datos utilizando el stored procedure: Info_Seg_Formularios_Sistema_Defaults_brwPorUsuarioUrlForm donde:

  • @UsuarioId: nombre de usuario.
  • @FormUrl: url del formulario a verificar.

Configuración – Diccionario de términos

El sistema de diccionarios de términos de IGGLOBAL Online está compuesto por las siguientes tablas:

  • Codigos_I18n_Diccionarios: contiene todos los diccionarios soportados por el sistema (por defecto se encuentra el 1 – Default IGGlobal (Es-Ar)).
  • Codigos_I18n_Diccionarios_Etiquetas: contiene todas las etiquetas de texto que se muestran en pantalla. Se incluyen: campos de formularios, cabeceras de grillas, texto de acciones comunes (S2). SE RECOMIENDA NO REPETIR LAS ETIQUETAS PARA UN MISMO DICCIONARIO. Posee las siguientes columnas:
    • DiccionarioId: referencia al diccionario que contiene los términos
    • Campo: nombre del campo (generalmente es igual a la columna de la tabla que se quiera traducir, en otros casos hace referencia a los alias en procedimientos almacenados).
    • Texto: texto de la traducción del campo, siendo éste el que termina mostrándose en pantalla.
  • Codigos_Seg_Formularios_Sistema: contiene todos los formularios que soportan traducción dentro de IGGLOBAL Online. Posee las siguientes columnas:
    • FormUrl: dirección web del formulario. Ejemplo: si el formulario tiene esta url http://localhost:59120/Crm/Evento el valor a registrar será /Crm/Evento.
    • Descripción: colocar el mismo valor que la columna FormUrl.
  • Codigos_Seg_Formularios_Sistema_Campos: contiene todos los campos de los formularios que soportan traducción dentro de IGGLOBAL Online. SE RECOMIENDA NO REPETIR LOS CAMPOS PARA UN MISMO FORMULARIO. Posee las siguientes columnas:
    • FormUrl: referencia al formulario que pertenece el campo.
    • Campo: nombre del campo (generalmente es igual a la columna de la tabla que se quiera traducir, en otros casos hace referencia a los alias en procedimientos almacenados). DEBE SER IGUAL AL VALOR CARGADO EN LA COLUMNA “CAMPO” DE LA TABLA CODIGOS_I18N_DICCIONARIOS_ETIQUETAS.
    • Descripción: descripción funcional del campo.

Cargando las tablas anteriormente mencionadas el sistema automáticamente mostrará en pantalla los textos correspondientes al diccionario activo (por defecto el 1).

Se puede realizar una prueba de los términos cargados desde la base de datos utilizando el stored procedure: Info_Seg_Formularios_Sistema_Defaults_brwPorUsuarioUrlForm (validar el valor de la columna “Etiqueta” de los resultados) donde:

  • @UsuarioId: nombre de usuario.
  • @FormUrl: url del formulario a verificar.