Estructura interna de las Aplicaciones de QuartupERP
Cada aplicación de Quartup es un directorio p_* ó q_*, con un máximo de 10 dígitos en total (incluyendo el p_ ó el q_)
En este documento, usamos la aplicación "p_pes" como ejemplo, por ser una de las que usan la nomenclatura más moderna y más completa
Por tanto, para cualquier aplicación nueva, nos basaremos en "p_pes" para asegurar la homegeidad de las mismas
El contenido del directorio de cada aplicación tienen la siguiente estructura:
"quartup.ini.php": Configuración general de la Aplicación
El archivo ./p_pes/quartup.ini.php contiene los parámetros básicos de la aplicación.
Contenido típico de este fichero:
// ******************************************************************************************************************************
// VARIABLES OBLIGATORIAS !, MUY IMPORTANTE: HAY QUE EVITAR COLISIONES EN EL PREFIJO DE TABLAS CON OTRAS APLICACIONES !!!
$quartupApp['name'] = 'Conector PS 2'; // nombre escueto de la aplicación
$quartupApp['preTabName'] = 'pes'; // prefijos de los nombres de las tablas de la aplicación
// ******************************************************************************************************************************
$quup['FileFolder']['p_pes'] = '../p_pes/qtables/';
$quup['menu']['p_pes'] = '|../p_pes/QU_Mods.php';
// ItieIUD(s) entre aplicaciones
$quup['ItieIUD']['maesarti'] ['Qmaesarti2pesproxxx'] = true;
$quup['ItieIUD']['maesarti'] ['Qmaesarti2pescomxxx'] = true;
-
Prefijo de tablas: La variable
$quartupApp['preTabName']define el prefijo de las tablas que usará la aplicación.- Este prefijo debe ser único entre todas las aplicaciones de Quartup, para evitar colisiones entre ellas, ya que las tablas compartirán la base de datos, y necesitamos espacios de nombres separados
- Se admiten varios prefijos, separándolos por el signo "+", por ejemplo: "pes+pe2", pero no se recomienda
- Los casos que usan más de un prefijo hacen referencias a sub-aplicaciones, y en estos casos lo recomendable es crear aplicaciones separadas
-
Directorio de tablas: La variable
$quup['FileFolder']['p_pes']indica el directorio donde se ubican las clases de las tablas de la aplicación.- Usamos como índice de la variable el propio código de la aplicación "p_pes" para evitar colisiones, ya que todos los "quartup.ini" se cargan en un array conjunta
- Pueden haber más de un directorio de tablas, sin más que alargar el índice "p_pes", por ejemplo "p_pes_1", "p_pes_2", ...
-
Módulos/submódulos: La variable
$quup['menu']['p_pes']indica el fichero donde se definen los módulos y submódulos de la aplicación, y siempre usamos el nombreQU_Mods.php
"QU_Mods.php": Módulos y Submódulos de la Aplicación
El archivo ./p_pes/QU_Mods.php contiene la definición de los módulos y submódulos de la aplicación
Contenido típico:
// nombres de módulos y submódulos
$aaModule['pes'][''] = [
'nom'=>'Conector Prestashop 2',
'img'=>'../b_imgs/modules/prestashop.svg',
'siz'=>'2x2',
'thm'=>'lightpurple',
'nor'=>'Conector Prestashop 2',
];
$aaModule['pes']['des'] = [
'nom'=>'Descargas de ficheros de Prestashop',
'img'=>'../b_imgs/munich_arrow_down.png,../b_imgs/munich_folder.png',
];
$aaModule['pes']['mae'] = [
'nom'=>'Maestros de categorías y productos/combinaciones del conector',
'img'=>'../b_imgs/munich_archives.png',
'sep'=> [
'11000' => 'Tiendas',
'21000' => 'Categorías y Productos',
],
];
- El primer índice de
$aaModulees el código de módulo, y el segundo índice es el submódulo. - El elemento de
$aaModulecon el submódulo vacío nos define los parámetros de los módulos. - El elemento de
$aaModulecon el submódulo informado nos define los parámetros de los submódulos.
Tablas de la aplicación
En el directorio ./p_pes/qtables se definen las tablas de la aplicación
- Cada tabla de Quartup tiene una clase única, subclase de la "QU_Table", con el mismo nombre que la tabla.
- El nombre de cada tabla se forma en bloques de 3 dígitos, empezando por el prefijo de 3 dígitos de la aplicación
- Ejemplos:
p_pes/qtables/pescon.phpTabla "pescon" para la configuración del conectorp_pes/qtables/pespro.phpTabla "pespro" para los productosp_pes/qtables/pesprosho.phpTabla "pesprosho" para los productos por tiendasp_pes/qtables/pesprosholan.phpTabla "pesprosholan" para los productos/languages por tiendas
Clases de la aplicación
Los ficheros de tipo `p_pes/Q* son las Clases de la aplicación
- En estas clases se implementan todas las posibles relaciones "desde" y "hacia" entre las tablas de Quartup de "p_pes" y los recursos disponibles de la API de Prestashop
- Para conseguir esta implementación, se han generado las siguientes tipologías de clases:
p_pes/Q{tabla-quartup-maes}2{tabla-quartup-pes}.phpClases de tipo "ItieIUD" conectores de una tabla de la aplicación "p_maes" con una o varias tablas de "p_pes"- Ejemplos:
p_pes/Qmaesarti2pesproxxx.phpClase de tipo "ItieIUD" conector de la tabla "maesarti" con las tablas "pespro/pesprosho/pesprosholan"p_pes/Qmaesarti2pescomxxx.phpClase de tipo "ItieIUD" conector de la tabla "maesarti" con las tablas "pescom/pescomsho"- Como estamos conectando tablas de otra aplicación de Quartup, la activación del ItieIUD debe definirse en el "quartup.ini.php" visto antes
- Definir la activación de los ItieIUD en el "quartup.ini.php" del "p_pes" nos permite no tener que alterar el código de la aplicación "p_maes" (en eso se basan los "Hooks")
- (ver capítulo de ItieIUD para entender el funcionamiento de las clases anteriores)
p_pes/Q{tabla-quartup-pes}2{tabla-quartup-pes}.phpClases de tipo "ItieIUD" conectores de una tabla de una tabla "pes" con una o varias tablas de "pes"- Ejemplos:
p_pes/Qpesati2pesatilan.phpClase de tipo "ItieIUD" conector de la tabla "pesati" con la tabla "pesatilan"p_pes/Qpesati2pesatisho.phpClase de tipo "ItieIUD" conector de la tabla "pesati" con la tabla "pesatisho"- Como estamos conectando tablas de la propia aplicación de Quartup, la activación del ItieIUD debe definirse en la propia tabla orígen
- (ver capítulo de ItieIUD para entender el funcionamiento de las clases anteriores)
p_pes/Q{tabla-quartup-pes}2prestashop.phpClases de tipo "ItieTransaction" para los envíos desde unaa tabla de "pes" hacia Prestashop- Ejemplos:
p_pes/Qpesati2prestashop.phpClase de tipo "ItieTransaction" para los envíos desde la tabla "pesati" hacia Prestashopp_pes/Qpesatilan2prestashop.phpClase de tipo "ItieTransaction" para los envíos desde la tabla "pesatilan" hacia Prestashop- (ver capítulo de ItieTransaction para entender el funcionamiento de las clases anteriores)
p_pes/Qprestashop_x_down.phpClase abstracta para definir los métodos de las descargas de "prestashop" hacia las tablas "pes"p_pes/Qprestashop_{endpoint-prestashop}_down.phpClases derivadas de la anterior, que implementan los métodos de las descargas de "prestashop" hacia las tablas "pes"- Ejemplos:
p_pes/Qprestashop_product_down.phpClase para la descarga del endpoint de prestashop "products" hacia las tablas "pes" que toquenp_pes/Qprestashop_combination_down.phpClase para la descarga del endpoint de prestashop "combinations" hacia las tablas "pes" que toquen
p_pes/Qprestashop_x_up.phpClase abstracta para definir los métodos de las subidas desde las tablas "pes" hacia "prestashop" (esta clase además implementa el interface "ItieTransactionExecution" ya que las llamadas al mismo endpoint deben agruparse durante las transacciones y ejecutarse solo al final de las mismas)p_pes/Qprestashop_{endpoint-prestashop}_up.phpClases derivadas de la anterior, que implementan los métodos de las subidas hacia "prestashop" desde las tablas "pes"- Ejemplos:
p_pes/Qprestashop_product_up.phpClase para la subida hacia el endpoint de prestashop "products" desde las tablas "pes" que toquenp_pes/Qprestashop_combination_up.phpClase para la subida hacia el endpoint de prestashop "combinations" desde las tablas "pes" que toquen