Desarrollo de un módulo: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
No edit summary
Line 18: Line 18:
etc. Todas estas operaciones sólo están disponibles a partir de la versión 2.4 de Dolibarr.
etc. Todas estas operaciones sólo están disponibles a partir de la versión 2.4 de Dolibarr.


Los capítulos siguientes describen cómo hacer todo esto manualmente de manera sencilla. Para los desarrolladores experimentados, se está desarrollando un método de generación de MDA.Véase el último capítulo para consultar.
= [[File:Art.png]] Cear un módulo =
Los capítulos siguientes describen las acciones a realizar para crear un módulo Dolibarr. Los primeros capítulos son obligatorios cualquiera que sea la vocación de los módulos, los siguientes dependerán de lo que deba hacer el módulo


 
== [[File:Art.png]] Crear un descriptor de Módulo (obligatorio) ==
= [[File:Art.png]] Crear un descriptor de Módulo (obligatorio) =
'''Cuándo''': Obligatorio cada vez que se desarrolla una extensión, cualquiera que sea su finalidad.
'''Cuándo''': Obligatorio cada vez que se desarrolla una extensión, cualquiera que sea su finalidad.


== Crear su descriptor ==
=== Crear su descriptor ===
La primera fase es la de crear un fichero descriptor del módulo. Para ello, vaya al directorio '''dev/skeletons''' y copie el archivo "modMyModule.class.php" en el directorio '''htdocs/includes/modules'''. A continuación, modifique el contenido de este archivo con el fin de reemplazar:
La primera fase es la de crear un fichero descriptor del módulo. Para ello, vaya al directorio '''dev/skeletons''' y copie el archivo "modMyModule.class.php" en el directorio '''htdocs/includes/modules'''. A continuación, modifique el contenido de este archivo con el fin de reemplazar:
* los "modMyModule" por un valor que corresponda a la finalidad de su módulo. Este valor debe siempre comenzar por mod.  
* los "modMyModule" por un valor que corresponda a la finalidad de su módulo. Este valor debe siempre comenzar por mod.  
Line 33: Line 33:
Ahora su fichero descriptor está configurado.
Ahora su fichero descriptor está configurado.


== Probar su descriptor ==
=== Probar su descriptor ===
Ejecute Dolibarr y vaya a la página "Configuración > Módulo". Debería aparecer una nueva línea con su nuevo módulo y la posibilidad de activarlo o no (eche un vistazo a todas las pestañas de cada categoría para encontrarlo). Es el valor $this->special el que determina en qué pestaña se encuentra su módulo.
Ejecute Dolibarr y vaya a la página "Configuración > Módulo". Debería aparecer una nueva línea con su nuevo módulo y la posibilidad de activarlo o no (eche un vistazo a todas las pestañas de cada categoría para encontrarlo). Es el valor $this->special el que determina en qué pestaña se encuentra su módulo.




= [[File:Art.png]] Árbol de un nuevo módulo =
== [[File:Art.png]] Árbol de un nuevo módulo ==
Crear un directorio 'mimodulo' que contendrá los archivos del módulo. Este directorio debe de estar en el directorio '''htdocs''' y contendrá los siguientes subdirectorios:
Crear un directorio 'mimodulo' que contendrá los archivos del módulo. Este directorio debe de estar en el directorio '''htdocs''' y contendrá los siguientes subdirectorios:


Line 51: Line 51:
* htdocs/mymodule/themes/mythme if module provide its own skin
* htdocs/mymodule/themes/mythme if module provide its own skin


= [[File:Art.png]] Crear sus tablas SQL y la clase PHP con los métodos de acceso (opcional) =
== [[File:Art.png]] Crear sus tablas SQL y la clase PHP con los métodos de acceso (opcional) ==
'''Cuándo:''' Si su módulo necesita gestionar sus propios datos.
'''Cuándo:''' Si su módulo necesita gestionar sus propios datos.


==Crear sus ficheros .sql==
===Crear sus ficheros .sql===
Si su módulo de verdad requiere administrar datos que no existen en la base de datos en la versión estándar de Dolibarr, será necesario definir ciertas tablas SQL para registrar esos datos.
Si su módulo de verdad requiere administrar datos que no existen en la base de datos en la versión estándar de Dolibarr, será necesario definir ciertas tablas SQL para registrar esos datos.


Line 72: Line 72:
Nota: Los archivos de otras bases de datos no se mantienen. Se leen y se convierten al vuelo por el driver de la base de datos.
Nota: Los archivos de otras bases de datos no se mantienen. Se leen y se convierten al vuelo por el driver de la base de datos.


== Probar su archivo .sql ==
=== Probar su archivo .sql ===
Una vez que los archivos estén listos, puede volver a Dolibarr para desactivar el módulo, eliminar las tablas de la base de datos y reactivar el módulo. Las tablas deben ser recreadas por la activación del módulo. Si no es así, verifique sus scripts o consulte los logs Dolibarr.
Una vez que los archivos estén listos, puede volver a Dolibarr para desactivar el módulo, eliminar las tablas de la base de datos y reactivar el módulo. Las tablas deben ser recreadas por la activación del módulo. Si no es así, verifique sus scripts o consulte los logs Dolibarr.


== Generar la clase PHP de acceso (DAO) ==
=== Generar la clase PHP de acceso (DAO) ===
Una vez que su/s tabla/s estén creadas en la base de datos, vaya al directorio '''dev/skeletons''', copie el archivo '''build_class_from_table.php''' en la el directorio sql/ de su módulo module, y ejecute el script
Una vez que su/s tabla/s estén creadas en la base de datos, vaya al directorio '''dev/skeletons''', copie el archivo '''build_class_from_table.php''' en la el directorio sql/ de su módulo module, y ejecute el script
<source lang="bash">
<source lang="bash">
Line 86: Line 86:
Un archivo '''out.nombretabla_script.php''' se genera igualmente y contiene un ejemplo de código para utilizar la clase para cada uno de los cuatro métodos CRUD.
Un archivo '''out.nombretabla_script.php''' se genera igualmente y contiene un ejemplo de código para utilizar la clase para cada uno de los cuatro métodos CRUD.


= [[File:Art.png]] Añadir pestañas (opcional) =
== Visualización de pestañas pestañas (opcional) ==


==Añadir sus pestañas en las fichas entidad==
=== Añadir o eliminar pestañas en las fichas entidad ===
'''Cuándo''' : Para añadir su propia pestaña en las pestañas estandard de una ficha entidad (factura, pedido, presupuesto, miembro...)
'''Cuándo''' : Para añadir su propia pestaña en las pestañas estandard de una ficha entidad (factura, pedido, presupuesto, miembro...)


Line 124: Line 124:
Para alimentar el contenido de la pestaña con los datos de la base de datos, vea el capítulo siguiente.
Para alimentar el contenido de la pestaña con los datos de la base de datos, vea el capítulo siguiente.


== Añadir pestañas de una ficha entidad en su propia página ==
=== Añadir pestañas de una ficha entidad en su propia página ===
'''Cuándo''' : Para mostrar las pestañas estandard de ficha entidad (producto, tercero, etc.) en su propia pestaña de una entidad.
'''Cuándo''' : Para mostrar las pestañas estandard de ficha entidad (producto, tercero, etc.) en su propia pestaña de una entidad.


Line 195: Line 195:
Para más detalles, consulte la [http://www.dolibarr.fr/doxygen/ documentación Doxygen] o directamente el código de Dolibarr.
Para más detalles, consulte la [http://www.dolibarr.fr/doxygen/ documentación Doxygen] o directamente el código de Dolibarr.


= [[File:Art.png]] Crear sus páginas pantalla PHP (opcional)=
== Crear sus páginas pantalla PHP (opcional) ==
'''Cuándo:''' Si su módulo consiste en añadir funcionalidades que necesitan nuevas pantallas.
'''Cuándo:''' Si su módulo consiste en añadir funcionalidades que necesitan nuevas pantallas.


==Crear una página pantalla PHP==
=== Crear una página pantalla PHP ===
Debe crear a continuación pantallas PHP que se basen en los datos de sus tablas utilizando los esqueletos como ejemplo del directorio '''dev/skeletons'''. (Para el desarrollo de un script en línea de comandos, ver [[Desarrollo de scripts]]).
Debe crear a continuación pantallas PHP que se basen en los datos de sus tablas utilizando los esqueletos como ejemplo del directorio '''dev/skeletons'''. (Para el desarrollo de un script en línea de comandos, ver [[Desarrollo de scripts]]).


Line 216: Line 216:
A continuación, teclee su código para archivar la página.
A continuación, teclee su código para archivar la página.


== Crear una página pantalla PHP mediante template Smarty ==
=== Crear una página pantalla PHP mediante template Smarty ===
=== Completar su descriptor de módulo ===
==== Completar su descriptor de módulo ====
En su descriptor de módulo, complete la declaración de this->const para añadir la constante MAIN_MODULE_mimodulo_NEEDSMARTY.
En su descriptor de módulo, complete la declaración de this->const para añadir la constante MAIN_MODULE_mimodulo_NEEDSMARTY.
<source lang="php">
<source lang="php">
Line 225: Line 225:
Esto dará como resultado, durante la inicialización del objeto $conf, el llenado de $conf->need_smarty de los módulos que necesita de smarty y si un módulo es necesrio, el código de main.inc.php cargará sistemáticamente las librerías de Smarty.
Esto dará como resultado, durante la inicialización del objeto $conf, el llenado de $conf->need_smarty de los módulos que necesita de smarty y si un módulo es necesrio, el código de main.inc.php cargará sistemáticamente las librerías de Smarty.


=== Crear sus templates ===
==== Crear sus templates ====
Construya sus páginas de templates (archivos '''mispages.tpl''') en el directorio '''htdocs/mimodulo/templates'''.
Construya sus páginas de templates (archivos '''mispages.tpl''') en el directorio '''htdocs/mimodulo/templates'''.


=== Haga sus páginas PHP ===
==== Haga sus páginas PHP ====
Haga sus páginas de pantalla PHP Dolibarr siguiendo el modelo descrito en esta documentación.
Haga sus páginas de pantalla PHP Dolibarr siguiendo el modelo descrito en esta documentación.
La diferencia es que en el final, para ver el diseño HTML, deberá agregar la siguiente secuencia:
La diferencia es que en el final, para ver el diseño HTML, deberá agregar la siguiente secuencia:
Line 238: Line 238:
El objeto $smarty no se inicializa, por lo general ya se ha definido (en la base de Smarty integrada en Dolibarr) si su descriptor del módulo ha informado la necesidad de usar smarty y el módulo se ha activado correctamente.
El objeto $smarty no se inicializa, por lo general ya se ha definido (en la base de Smarty integrada en Dolibarr) si su descriptor del módulo ha informado la necesidad de usar smarty y el módulo se ha activado correctamente.


== Acceso a la base de datos ==
=== Acceso a la base de datos ===
Si necesita realizar modificaciones en su tabla de la base de datos, utilice la clase generada más arriba.
Si necesita realizar modificaciones en su tabla de la base de datos, utilice la clase generada más arriba.


Line 275: Line 275:
</source>
</source>


== Definición de estilos ==
=== Definición de estilos ===
Para que el aspecto de la página guarde coherencia con el tema Dolibarr, es necesario utilizar los estilos CSS de Dolibarr.
Para que el aspecto de la página guarde coherencia con el tema Dolibarr, es necesario utilizar los estilos CSS de Dolibarr.


Line 286: Line 286:




== Utilizar el selector de fechas de Dolibarr ==
=== Utilizar el selector de fechas de Dolibarr ===
Si quiere, puede beneficiarse del selector de fechas en las pantallas Dolibarr. Para ello, utilice la siguiente línea:
Si quiere, puede beneficiarse del selector de fechas en las pantallas Dolibarr. Para ello, utilice la siguiente línea:
<source lang="php">
<source lang="php">
Line 301: Line 301:
</source>
</source>


= [[File:Art.png]] Definir su página de configuración (opcional) =
== Definir su página de configuración (opcional) ==
'''Cuándo:''' Si su módulo ofrece varias opciones parametrizables.
'''Cuándo:''' Si su módulo ofrece varias opciones parametrizables.


==Crear su página de edición de configuración==
=== Crear su página de edición de configuración ===
Si su módulo ofrece varias opciones parametrizacles, es necesario crear una página PHP para editar las opciones (que serán guardadas en la [[Table llx_const|tabla '''llx_const''']]). Cree una página PHP llamada '''mimodulo_setuppage.php''', que registre las opciones posibles y las ponga al día. Es necesario tomar como ejemplo una página de '''/admin''' que le muestre el método para leer o guardar en la base de datos su opción. Coloque esta página de configuración también en el directorio '''/admin'''. A continuación, en el descriptor del módulo, modifique la variable para indicar el nombre de esta página PHP (no es necesario modificar la ruta, ya que la página estará forzosamente en el directorio '''/admin''').
Si su módulo ofrece varias opciones parametrizacles, es necesario crear una página PHP para editar las opciones (que serán guardadas en la [[Table llx_const|tabla '''llx_const''']]). Cree una página PHP llamada '''mimodulo_setuppage.php''', que registre las opciones posibles y las ponga al día. Es necesario tomar como ejemplo una página de '''/admin''' que le muestre el método para leer o guardar en la base de datos su opción. Coloque esta página de configuración también en el directorio '''/admin'''. A continuación, en el descriptor del módulo, modifique la variable para indicar el nombre de esta página PHP (no es necesario modificar la ruta, ya que la página estará forzosamente en el directorio '''/admin''').
<source lang="php">
<source lang="php">
Line 310: Line 310:
</source>
</source>


== Probar su página ==
=== Probar su página ===
Vaya a la página '''Configuración > módulo'''. Debería aparecer un icono que permite acceder a la página de configuración, y debería poder modificar estas opciones y verlas en la base de datos.
Vaya a la página '''Configuración > módulo'''. Debería aparecer un icono que permite acceder a la página de configuración, y debería poder modificar estas opciones y verlas en la base de datos.




= [[File:Art.png]] Definir sus entradas de menú (opcional) =
== Definir sus entradas de menú (opcional) ==
'''Cuándo:''' Si ha creado páginas PHP, es necesario que estas pantallas sean accesibles desde el menú Dolibarr.
'''Cuándo:''' Si ha creado páginas PHP, es necesario que estas pantallas sean accesibles desde el menú Dolibarr.


== Definir sus entradas de menú==
=== Definir sus entradas de menú ===
Para ello, hace falta definir en el archivo descriptor de menú de tabla this->menu, que declara los menús.
Para ello, hace falta definir en el archivo descriptor de menú de tabla this->menu, que declara los menús.
Esta tabla contiene todas las entradas que aparecerán en los menús una vez que el módulo sea activado. Los archivos de descriptor de módulo contienen un ejemplo de cómo se declara el menú superior, así como las entradas correspondientes en el menú de la derecha
Esta tabla contiene todas las entradas que aparecerán en los menús una vez que el módulo sea activado. Los archivos de descriptor de módulo contienen un ejemplo de cómo se declara el menú superior, así como las entradas correspondientes en el menú de la derecha
Line 360: Line 360:
Para condicionar el acceso al menú segun los permisos, modificar la propiedad '''perms''' de la tabla. Ver el capítulo sobre permisos, un poco más abajo, para saber como realizar los permisos.
Para condicionar el acceso al menú segun los permisos, modificar la propiedad '''perms''' de la tabla. Ver el capítulo sobre permisos, un poco más abajo, para saber como realizar los permisos.


== Probar sus entradas de menú ==
=== Probar sus entradas de menú ===
Desactive y reactive su módulo bajo Dolibarr. Las entradas del menú deberían aparecer después de hacerlo (si la condición 'enabled' está activada).
Desactive y reactive su módulo bajo Dolibarr. Las entradas del menú deberían aparecer después de hacerlo (si la condición 'enabled' está activada).


= [[File:Art.png]] Definir sus propios permisos (opcional) =
== Definir sus propios permisos (opcional) ==
'''Cuándo:''' Si quiere añadir nuevos permisos.
'''Cuándo:''' Si quiere añadir nuevos permisos.


Line 386: Line 386:
</source>
</source>


= [[File:Art.png]] Definir sus propios paneles (opcional) =
== Definir sus propios paneles (opcional) ==
'''Cuándo:''' Si su módulo tiene uno o varios paneles.
'''Cuándo:''' Si su módulo tiene uno o varios paneles.


== Defina sus paneles ==
=== Defina sus paneles ===
Para ello, modifique las tablas $this->boxes del archivo descriptor de módulo. Es suficiente con añadir una línea por cada archivo de panel que se encuentre en el directorio '''htdocs/includes/boxes'''.
Para ello, modifique las tablas $this->boxes del archivo descriptor de módulo. Es suficiente con añadir una línea por cada archivo de panel que se encuentre en el directorio '''htdocs/includes/boxes'''.


Line 403: Line 403:
A continuación cree los archivos mabox0.php, mabox1.php...  tomando como ejemplo los paneles existentes (en el directorio htdocs/include/boxes)
A continuación cree los archivos mabox0.php, mabox1.php...  tomando como ejemplo los paneles existentes (en el directorio htdocs/include/boxes)


== Pruebe sus paneles en Dolibarr ==
=== Pruebe sus paneles en Dolibarr ===
Vaya al menú '''Inico – Configuración – Paneles'''. Sus paneles deben aparecer en la lista de paneles activables. Actívelos, vaya a la página de bienvenida y verifique que se muestran correctamente.
Vaya al menú '''Inico – Configuración – Paneles'''. Sus paneles deben aparecer en la lista de paneles activables. Actívelos, vaya a la página de bienvenida y verifique que se muestran correctamente.


= [[File:Art.png]] Definir sus propias exportaciones (opcional) =
== Definir sus propias exportaciones (opcional) ==
'''Cuándo:''' Si su módulo incorpora exportaciones predefinidas de datos (tanto para sus propias tablas o para otras tablas existentes de otros módulos de Dolibarr)
'''Cuándo:''' Si su módulo incorpora exportaciones predefinidas de datos (tanto para sus propias tablas o para otras tablas existentes de otros módulos de Dolibarr)




== Definir la exportación ==
=== Definir la exportación ===
Para ello, descomente y modifique las tablas $this->export_xxx  de su archivo descriptor de módulo.
Para ello, descomente y modifique las tablas $this->export_xxx  de su archivo descriptor de módulo.


== Probar la exportación ==
=== Probar la exportación ===
Vaya al menú "Herramientas > Exportar" de Dolibarr. Su exportación debería aparecer en la lista de exportaciones predefinidas disponibles (si su módulo ha sido activado correctamente). Deberían aparecer, para que pudiera elegirlos, los campos que definió en la fase anterior en las tablas correspondientes. Seleccione algunos campos y pruebe a generar un archivo de exportación.
Vaya al menú "Herramientas > Exportar" de Dolibarr. Su exportación debería aparecer en la lista de exportaciones predefinidas disponibles (si su módulo ha sido activado correctamente). Deberían aparecer, para que pudiera elegirlos, los campos que definió en la fase anterior en las tablas correspondientes. Seleccione algunos campos y pruebe a generar un archivo de exportación.




= [[File:Art.png]] Definir sus estilos CSS (opcional) =
== Definir sus estilos CSS (opcional) ==
'''Cuándo:''' Si en sus pantallas PHP utiliza clases de estilos distintas a las de los temas de Dolibarr.
'''Cuándo:''' Si en sus pantallas PHP utiliza clases de estilos distintas a las de los temas de Dolibarr (no recomendado).
 
Esta funcionalidad todavía no es operativa en la versión 2.4., a pesar de estar ya descrita.
Esta funcionalidad todavía no es operativa en la versión 2.4., a pesar de estar ya descrita.


=== Crear y declarar su hoja de estilos ===
Crear un archivo de estilos llamada '''mimodulo.css''' y guardarla en el directorio '''''mimodulo''''' dentro de '''htdocs'''. Solo puede haber un archivo css propio a cada módulo.
Recordamos que es mejor usar los estilos ya existentes en Dolibarr (el archivo css usado por Dolibarr es el archivo '''themes/nomtheme/''nombretema''.php.css'''.
Una vez su hoja de estilos esté disponible, declárela en su archivo descriptor de módulo modificando la propiedad '''$this->style_sheet'''.
El valor a indicar debe ser la ruta URL relativa de su archivo css.
Por ejemplo '/mimodulo/miarchivo.css'.
=== Probar su hoja de estilos ===
Desactivar y reactivar su módulo.


= [[File:Art.png]] Definir sus funciones Javascript (opcional) =
Ir la página de inicio de Dolibarr. Ver el código de la página HTML.
 
Debería ver en el encabezado HTML, una línea de declaración de su hoja de estilos.
 
== Definir sus funciones Javascript (opcional) ==
'''Cuando''': Si en sus pantallas en PHP utiliza funciones de Javascript no disponibles en estandard (archivo lib_head.js)
'''Cuando''': Si en sus pantallas en PHP utiliza funciones de Javascript no disponibles en estandard (archivo lib_head.js)


Line 436: Line 450:
</source>
</source>


= [[File:Art.png]] Ejecutar código sobre un evento Dolibarr (opcional)=
== Ejecutar código sobre un evento Dolibarr (opcional) ==
'''Cuándo:''' Si quiere que se ejecuten acciones particulares al activar ciertas acciones estandar de Dolibarr (por ejemplo, si deseáramos actualizar una tabla de mi módulo cada vez que se crea una factura en Dolibarr), hará falta crear un archivo '''disparador (triggers)'''.
'''Cuándo:''' Si quiere que se ejecuten acciones particulares al activar ciertas acciones estandar de Dolibarr (por ejemplo, si deseáramos actualizar una tabla de mi módulo cada vez que se crea una factura en Dolibarr), hará falta crear un archivo '''disparador (triggers)'''.
Véase también [[Interfaces Dolibarr hacia el exterior]] e [[Interfaces del Exterior hacia Dolibarr]]
Véase también [[Interfaces Dolibarr hacia el exterior]] e [[Interfaces del Exterior hacia Dolibarr]]
== Insertar su código usando los hooks de Dolibarr (opcional) ==
'''Cuándo''': Cuando desee cambiar o añadir otro tipo de código en un evento de negociado (véase lel capítulo anterior para esto).
Véase la página [[El sistema Hooks]].
== Añadir un módulo de numeración (opcional) ==
'''Cuándo''': Si quiere añadir una regla de numeración no cubierta por los módulos por defecto.
Véase la página [[Crear un módulo de numeración]].
== Añadir un nuevo módulo de documento (opcional) ==
'''Cuándo''': Si quiere añadir un nuevo modelo de documento.
La documentación relativa a la generación de documentos desde los modelos se encuentra disponible en la página [[Crear un modelo de documento PDF]] o [[Crear un modelo de documento ODT]].
== Añadir un tema (opcional) ==
'''Cuándo''': Si quiere un interface con colores personalizados.
Véase la página [[Temas]].


= [[File:Art.png]] Algunas reglas de código =
= [[File:Art.png]] Algunas reglas de código =

Navigation menu