<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dolibarr.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Athomix</id>
	<title>Dolibarr ERP CRM Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dolibarr.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Athomix"/>
	<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php/Special:Contributions/Athomix"/>
	<updated>2026-10-25T15:02:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Desarrollo_de_un_m%C3%B3dulo&amp;diff=9721</id>
		<title>Desarrollo de un módulo</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Desarrollo_de_un_m%C3%B3dulo&amp;diff=9721"/>
		<updated>2009-03-21T12:04:23Z</updated>

		<summary type="html">&lt;p&gt;Athomix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para crear un nuevo módulo hay distintas fases a seguir. Este tutorial tiene como meta describir cada una de estas fases con el fin de ayudar a comprender las posibilidades de Dolibarr, como por ejemplo añadir una o varias de las siguientes funcionalidades:&lt;br /&gt;
* Agregar nuevas tablas a la base de datos.&lt;br /&gt;
* Agregar tus propias entradas en los menús.&lt;br /&gt;
* Agregar pantallas de embargo/consulta de nuevas tablas.&lt;br /&gt;
* Añadir exportaciones predefinidas a la función “Exportar”.&lt;br /&gt;
* Agregar nuevas cajas a la página de inicio.&lt;br /&gt;
* Definir nuevos permisos.&lt;br /&gt;
* Activar código automático sobre una acción particular de Dolibarr.&lt;br /&gt;
&lt;br /&gt;
etc. Todas estas operaciones sólo están disponibles a partir de la versión 2.4 de Dolibarr.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Crear un descriptor de Módulo (obligatorio) ==&lt;br /&gt;
&#039;&#039;&#039;Cuándo&#039;&#039;&#039;: Obligatorio cada vez que se desarrolla una extensión, cualquiera que sea su finalidad.&lt;br /&gt;
&lt;br /&gt;
=== Crear tu descriptor ===&lt;br /&gt;
La primera fase es la de crear un fichero descriptor del módulo. Para ello, ve al directorio &#039;&#039;&#039;dev/skeletons&#039;&#039;&#039; y copia el fichero &amp;quot;modMyModule.class.php&amp;quot; en el directorio &#039;&#039;&#039;htdocs/includes/modules&#039;&#039;&#039;. A continuación, modifica el contenido de este fichero con el fin de reemplazar:&lt;br /&gt;
* los &amp;quot;modMyModule&amp;quot; por un valor que corresponda a la finalidad de tu módulo. Este valor debe siempre comenzar por mod. &lt;br /&gt;
* $this-&amp;gt;numero = 10000 por un número de módulo que esté libre (Para saber qué números ya están siendo utilizados, vaya a la página &amp;quot;Inicio-&amp;gt; Info sistema-&amp;gt; Dolibarr-&amp;gt; Módulos&amp;quot;)&lt;br /&gt;
* $this-&amp;gt;const_name = &#039;MAIN_MODULE_MYMODULE&#039; por $this-&amp;gt;const_name = &#039;MAIN_MODULE_XXX&#039;, donde XXX se corresponde con el valor elegido para reemplazar MYMODULE. El valor elegido debe ir en mayúsculas.&lt;br /&gt;
* $dir = DOL_DOCUMENT_ROOT.&#039;/mysql/tables/mymodule/&#039;; por $dir = DOL_DOCUMENT_ROOT.&#039;/mysql/tables/xxxxxxxx/&#039;; donde  xxxxxxxx representa el nombre de tu módulo (sin espacios).&lt;br /&gt;
* Modificar eventualmente otras variables definidas por los desarrolladores (ver el comentario en el código del esqueleto para ver su significado)&lt;br /&gt;
&lt;br /&gt;
Ahora tu fichero descriptor está configurado.&lt;br /&gt;
&lt;br /&gt;
=== Probar tu descriptor ===&lt;br /&gt;
Ejecuta Dolibarr y ve a la página &amp;quot;Configuration &amp;gt; Module&amp;quot;. Debería aparecer una nueva línea con tu nuevo módulo y la posibilidad de activarlo o no (echa un vistazo a todas las pestañas de cada categoría para encontrarlo). Es el valor $this-&amp;gt;special  el que determina en qué pestaña se encuentra tu módulo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Crear tus tablas SQL y la clase PHP de los métodos de acceso1 (opcional) ==&lt;br /&gt;
&#039;&#039;&#039;Cuándo:&#039;&#039;&#039; Si tu módulo necesita gestionar sus propios datos.&lt;br /&gt;
&lt;br /&gt;
===Crear tus ficheros .sql===&lt;br /&gt;
Si tu 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.&lt;br /&gt;
&lt;br /&gt;
Los ficheros propios de tu módulo deben estar ubicados en un directorio localizable.&lt;br /&gt;
&lt;br /&gt;
Crea un subdirectorio sql en el directorio de tu módulo (por ejemplo, htdocs/mimodulo/sql), con el fin de color los scripts sql que vas a crear. A continuación, en la función load_tables de tu fichero descriptor, modifica la línea&lt;br /&gt;
&lt;br /&gt;
 $dir = DOL_DOCUMENT_ROOT.&#039;/mymodule/sql/&#039;;&lt;br /&gt;
por&lt;br /&gt;
 $dir = DOL_DOCUMENT_ROOT.&#039;/mimodulo/sql/&#039;;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Regla a respetar:&#039;&#039; Agrega los ficheros de orden de creación de tus tablas al principio de un fichero por tabla (ver los ficheros existentes en &#039;&#039;mysql/tables&#039;&#039;, por ejemplo). Los ficheros deben ser operativos para la base de datos mysql. Nota: No hace falta mantener los ficheros de las otras bases de datos. Son leídos y convertidos en tiempo real por el driver de la base de datos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Probar tu fichero .sql ===&lt;br /&gt;
Una vez que los ficheros estén listos, puedes 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í, verifica tus scripts o consulta los logs Dolibarr.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Generar la clase PHP de acceso ===&lt;br /&gt;
Una vez que tu/s tabla/s estén creadas en la base de datos, ve al directorio &#039;&#039;&#039;dev/skeletons&#039;&#039;&#039; y ejecuta el script&lt;br /&gt;
 php build_class_from_table.php nombretabla&lt;br /&gt;
Nota: Si el comando no funciona, intenta con php-cli en lugar de php.&lt;br /&gt;
&lt;br /&gt;
Esto genera un fichero &#039;&#039;&#039;out.nombretabla.class.php&#039;&#039;&#039; que contiene la clase de gestión de la tabla “nombretabla”. En esta clase se encuentran los métodos CRUD (Create/Read/Update/Delete) ya operativos para hacer un &#039;&#039;insert&#039;&#039;, un &#039;&#039;fetch&#039;&#039; (&#039;&#039;select&#039;&#039;), un &#039;&#039;update&#039;&#039;, y un &#039;&#039;delete&#039;&#039; de una línea de la tabla. Suprime justo el &amp;quot;out&amp;quot; del nombre del fichero y ponlo en un subdirectorio de &#039;&#039;&#039;htdocs&#039;&#039;&#039; propio en tu módulo (Por ejemplo en &#039;&#039;&#039;htdocs/mimodulo&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Un fichero &#039;&#039;&#039;out.nombretabla_script.php&#039;&#039;&#039; se genera igualmente y contiene un ejemplo de código para utilizar la clase para cada uno de los cuatro métodos CRUD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Crear tus páginas pantalla PHP (opcional)==&lt;br /&gt;
&#039;&#039;&#039;Cuándo:&#039;&#039;&#039; Si tu módulo consiste en añadir funcionalidades que necesitan nuevas pantallas.&lt;br /&gt;
&lt;br /&gt;
===Crear una página pantalla PHP===&lt;br /&gt;
Debes crear a continuación pantallas PHP que se basen en los datos de tus tablas utilizando los esqueletos como ejemplo del directorio &#039;&#039;&#039;dev/skeletons&#039;&#039;&#039;. (Para el desarrollo de un script en línea de comandos, ver [[Desarrollar script]]).&lt;br /&gt;
&lt;br /&gt;
Para crear una nueva página de usuario, crea un subdirectorio de &#039;&#039;&#039;htdocs&#039;&#039;&#039; (si es que no existe ya) propio en tu módulo (En &#039;&#039;&#039;htdocs/mimodulo&#039;&#039;&#039;, por ejemplo), con el fin de ubicar en él las páginas que vas a crear.&lt;br /&gt;
&lt;br /&gt;
Copia allí el fichero &#039;&#039;&#039;skeletons_page.php&#039;&#039;&#039;, que va a servir de punto de partida a tu pagina, y copia también el fichero &#039;&#039;&#039;pre.inc.php&#039;&#039;&#039;. Modifica el fichero &#039;&#039;&#039;pre.inc.php&#039;&#039;&#039; para que la ruta relativa de&lt;br /&gt;
 include(&amp;quot;../../main.inc.php)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
sea la correcta, en función de la profundidad del directorio en el que se encuentra el fichero pre.inc.php (quitando o añadiendo &amp;quot;../&amp;quot;). Es en el &amp;quot;main&amp;quot; donde se carga el entorno técnico y las habilitaciones. Los objetos variables se posicionan ahora:&lt;br /&gt;
* $user – El objeto que contiene las características del usuario y sus derechos.&lt;br /&gt;
* $conf – El objeto que contiene la configuración de Dolibarr.&lt;br /&gt;
* $db – El objeto que contiene el gestor de conexión abierto a la base de datos.&lt;br /&gt;
* $langs – El objeto que contiene el idioma del usuario.&lt;br /&gt;
&lt;br /&gt;
A continuación, teclea tu código para archivar la página.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Acceso a la base de datos ===&lt;br /&gt;
Si necesitas realizar modificaciones en tu tabla de la base de datos, utiliza la clase generada más arriba.&lt;br /&gt;
&lt;br /&gt;
Si de todos modos quieres acceder a las tablas sin objeto PHP dedicado, esto es posible (por ejemplo para recuperar una lista de registros). En ese caso, piensa en seguir estos ejemplos.&lt;br /&gt;
&lt;br /&gt;
Para un &#039;&#039;insert&#039;&#039;, &#039;&#039;update&#039;&#039; o &#039;&#039;delete&#039;&#039;:&lt;br /&gt;
 $db-&amp;gt;begin();   // Debut transaction&lt;br /&gt;
 $db-&amp;gt;query(&amp;quot;Ma requete insert, update ou delete&amp;quot;);&lt;br /&gt;
 $db-&amp;gt;commit();       // Valide&lt;br /&gt;
 o $db-&amp;gt;rollback()  // Annule&lt;br /&gt;
&lt;br /&gt;
Para una lectura:&lt;br /&gt;
 $resql=$db-&amp;gt;query(&amp;quot;Ma requete select&amp;quot;);&lt;br /&gt;
 if ($resql)&lt;br /&gt;
 {&lt;br /&gt;
         $num = $db-&amp;gt;num_rows($resql);&lt;br /&gt;
         $i = 0;&lt;br /&gt;
         if ($num)&lt;br /&gt;
         {&lt;br /&gt;
                 while ($i &amp;lt; $num)&lt;br /&gt;
                 {&lt;br /&gt;
                         $obj = $db-&amp;gt;fetch_object($resql);&lt;br /&gt;
                         if ($obj)&lt;br /&gt;
                         {&lt;br /&gt;
                                 // You can use here results&lt;br /&gt;
                                 print $obj-&amp;gt;field1;&lt;br /&gt;
                                 print $obj-&amp;gt;field2;&lt;br /&gt;
                         }&lt;br /&gt;
                         $i++;&lt;br /&gt;
                 }&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Definición de estilos ===&lt;br /&gt;
Para que el aspecto de la página guarde coherencia con el tema Dolibarr, es necesario utilizar los estilos CSS de Dolibarr.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
* class=&amp;quot;liste_titre&amp;quot;1 en las etiquetas tr y td para una línea de título de tabla. &lt;br /&gt;
* class=”pair” o class=”impair” en las etiquetas tr y td de las líneas de datos de la tabla.&lt;br /&gt;
* class=”flat” en todos los campos en los que se teclea (input, select, textarea...)&lt;br /&gt;
* class=”button” en los objetos de tipo input type=”submit”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilizar el selector de datos de Dolibarr ===&lt;br /&gt;
Si quieres, puedes beneficiarte del selector de datos en las pantallas Dolibarr. Para ello, utiliza la siguiente línea:&lt;br /&gt;
 $form=new Form($db);&lt;br /&gt;
 print $form-&amp;gt;select_date(&#039;&#039;,&#039;mykey&#039;,0,0,0,&amp;quot;myform&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
La cadena &amp;quot;mikey&amp;quot; identifica el campo fecha. Hace falta introducir un valor diferente en caso de que haya varios campos. La cadena &amp;quot;myform&amp;quot; es el nombre del campo &amp;quot;FORM&amp;quot; (en el formulario, name=&amp;quot;myform&amp;quot; de la página html). La visualización de un selector de fecha debe por tanto estar integrada en un formulario html.&lt;br /&gt;
&lt;br /&gt;
Para recuperar el valor, a la herencia de POST, el comando es:&lt;br /&gt;
 $datefacture = dolibarr_mktime(12, 0 , 0, $_POST[&#039;mykeymonth&#039;], $_POST[&#039;mykeyday&#039;], $_POST[&#039;mykeyyear&#039;]);&lt;br /&gt;
 print strftime(&#039;%A %d %B %Y&#039;, $datefacture);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definir tu página de configuración (opcional) ==&lt;br /&gt;
&#039;&#039;&#039;Cuándo:&#039;&#039;&#039; Si tu módulo ofrece varias opciones parametrizables.&lt;br /&gt;
&lt;br /&gt;
===Crear tu página de edición de configuración===&lt;br /&gt;
Si tu módulo ofrece varias opciones parametrizacles, es necesario crear una página PHP para editar las opciones (que serán guardadas en la tabla &#039;&#039;&#039;llx_const&#039;&#039;&#039;). Crea una página PHP llamada &#039;&#039;&#039;mimodulo_setuppage.php&#039;&#039;&#039;, que registre las opciones posibles y las ponga al día. Es necesario tomar como ejemplo una página de &#039;&#039;&#039;/admin&#039;&#039;&#039; que te muestre el método para leer o guardar en la base de datos tu opción. Coloca esta página de configuración también en el directorio &#039;&#039;&#039;/admin&#039;&#039;&#039;. A continuación, en el descriptor del módulo, modifica 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 &#039;&#039;&#039;/admin&#039;&#039;&#039;).&lt;br /&gt;
 $this-&amp;gt;config_page_url = array(&amp;quot;monmodule_setupapage.php&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Probar tu página ===&lt;br /&gt;
Ve a la página &#039;&#039;&#039;Configuración &amp;gt; módulo&#039;&#039;&#039;. Debería aparecer un icono que permite acceder a la página de configuración, y deberías poder modificar estas opciones y verlas en la base de datos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definir tus entradas de menú (opcional) ==&lt;br /&gt;
&#039;&#039;&#039;Cuándo:&#039;&#039;&#039; Si has creado páginas PHP, es necesario que estas pantallas sean accesibles desde el menú Dolibarr.&lt;br /&gt;
&lt;br /&gt;
=== Definir tus entradas ===&lt;br /&gt;
Para ello, hace falta definir en el fichero descriptor de menú de tabla&lt;br /&gt;
 $this-&amp;gt;menu&lt;br /&gt;
&lt;br /&gt;
Esta tabla contiene todas las entradas que aparecerán en los menús una vez que el módulo sea activado. Los ficheros 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Probar tus entradas de menú ===&lt;br /&gt;
Desactiva y reactiva tu módulo bajo Dolibarr. Las entradas del menú deberían aparecer después de hacerlo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definir tus propios permisos (opcional) ==&lt;br /&gt;
&#039;&#039;&#039;Cuándo:&#039;&#039;&#039; Si quieres añadir nuevos permisos.&lt;br /&gt;
&lt;br /&gt;
La definición de permisos que gestionará tu módulo se hace en el fichero descriptor creado en la primera fase. Modifica la línea $this-&amp;gt;rights_class = &#039;facture&#039; para que diga:&lt;br /&gt;
 $this-&amp;gt;rights_class = &#039;mimodulo&#039;&lt;br /&gt;
&lt;br /&gt;
A continuación, rellena la tabla $this-&amp;gt;rights con tantas entradas como permisos diferentes vayas a definir:&lt;br /&gt;
 $this-&amp;gt;rights[$r][0] = 10001;&lt;br /&gt;
 $this-&amp;gt;rights[$r][1] = &#039;Texto por defecto de mi permiso&#039;;&lt;br /&gt;
 $this-&amp;gt;rights[$r][3] = 1;&lt;br /&gt;
 $this-&amp;gt;rights[$r][4] = &#039;accion&#039;;&lt;br /&gt;
 $this-&amp;gt;rights[$r][5] = &#039;subaccion&#039;;&lt;br /&gt;
 $r++;&lt;br /&gt;
&lt;br /&gt;
En $this-&amp;gt;rights[$r][0], introduce un id de permiso que no haya sido ocupado ya (para saber qué id están siendo ya utilizadas, ver el menú &#039;&#039;&#039;Información del Sistema&#039;&#039;&#039; en una instalación de Dolibarr que esté funcionando. En $this-&amp;gt;rights[$r][3], introduce 1 si este permiso se atribuye por defecto a los usuarios según son creados. En $this-&amp;gt;rights[$r][1] introduce un texto por defecto -que será mostrado si no se encuentra traducción para tu permiso en el fichero &#039;&#039;&#039;admin.lang&#039;&#039;&#039;). En $this-&amp;gt;rights[$r][4] y $this-&amp;gt;rights[$r][5], introduce una cadena de acción y subacción sin espacios. Después puedes probar si un usuario tiene los permisos bien, introduciendo la siguiente secuencia en el código PHP:&lt;br /&gt;
 if ($user-&amp;gt;rights-&amp;gt;mimodulo-&amp;gt;accion-&amp;gt;subaccion) ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definir tus propias cajas (opcional) ==&lt;br /&gt;
&#039;&#039;&#039;Cuándo:&#039;&#039;&#039; Si tu módulo tiene una o varias cajas.&lt;br /&gt;
&lt;br /&gt;
=== Define tus cajas ===&lt;br /&gt;
Para ello, modifica las tablas $this-&amp;gt;boxes del fichero descriptor de módulo. Es suficiente con añadir una línea por cada fichero de caja que se encuentre en el directorio &#039;&#039;&#039;htdocs/includes/boxes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
 this-&amp;gt;boxes[0][1]=&#039;mabox0.php&#039;&lt;br /&gt;
 this-&amp;gt;boxes[1][1]=&#039;mabox1.php&#039;&lt;br /&gt;
 this-&amp;gt;boxes[2][1]=&#039;mabox2.php&#039;&lt;br /&gt;
 ...&lt;br /&gt;
 this-&amp;gt;boxes[n][1]=&#039;maboxn.php&#039;&lt;br /&gt;
&lt;br /&gt;
A continuación crea los ficheros mabox0.php, mabox1.php...  tomando como ejemplo las cajas existentes (en el directorio htdocs/include/boxes)&lt;br /&gt;
&lt;br /&gt;
=== Prueba tus cajas en Dolibarr ===&lt;br /&gt;
Ve al menú &#039;&#039;&#039;Bienvenida – Configuración – Caja&#039;&#039;&#039;. Tus cajas deben aparecer en la lista de cajas activables. Actívalas, ve a la página de bienvenida y verifica que se muestran correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definir tus propias exportaciones (opcional) ==&lt;br /&gt;
&#039;&#039;&#039;Cuándo:&#039;&#039;&#039; Si tu módulo incorpora exportaciones predefinidas de datos (tanto para sus propias tablas o para otras tablas existentes de otros módulos de Dolibarr)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Definir la exportación ===&lt;br /&gt;
Para ello, descomenta y modifica las tablas $this-&amp;gt;export_xxx  de tu fichero descriptor de módulo.&lt;br /&gt;
&lt;br /&gt;
=== Probar la exportación ===&lt;br /&gt;
Ve al menú &amp;quot;Herramientas &amp;gt; Exportar&amp;quot; de Dolibarr. Tu exportación debería aparecer en la lista de exportaciones predefinidas disponibles (si tu módulo ha sido activado correctamente). Deberían aparecer, para que pudieras elegirlos, los campos que definiste en la fase anterior en las tablas correspondientes. Elige algunos campos y prueba a generar un fichero de exportación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definir tus estilos CSS (opcional) ==&lt;br /&gt;
&#039;&#039;&#039;Cuándo:&#039;&#039;&#039; Si en tus pantallas PHP utilizas clases de estilos distintas a las de los temas de Dolibarr.&lt;br /&gt;
Esta funcionalidad todavía no es operativa en la versión 2.4., a pesar de estar ya descrita.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definir tus funciones Javascript (opcional) ==&lt;br /&gt;
Esta funcionalidad ya no existe.&lt;br /&gt;
&lt;br /&gt;
== Ejecutar código sobre un evento Dolibarr (opcional)==&lt;br /&gt;
&#039;&#039;&#039;Cuándo:&#039;&#039;&#039; Si quieres 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 fichero &#039;&#039;&#039;disparador (triggers)&#039;&#039;&#039;.&lt;br /&gt;
Véase también [[Interfaces Dolibarr hacia el exterior]] e [[Interfaces Dolibarr hacia Dolibarr]]&lt;br /&gt;
&lt;br /&gt;
== Crear un paquete para liberar e instalar tu módulo ==&lt;br /&gt;
&lt;br /&gt;
* Ve al directorio &#039;&#039;&#039;/build&#039;&#039;&#039; y copia el fichero &#039;&#039;&#039;makepack-dolibarrmodules.conf&#039;&#039;&#039; como &#039;&#039;&#039;makepack-mimodulo.conf&#039;&#039;&#039;. Cuidado: este directorio puede no ser suministrado en los paquetes de versión estables. Si es el caso, puedes bajarte la última snapshot CVS  en la sección de Downloads del sitio de Dolibarr con el nombre “Development Version”1 (toma en este caso todos los directorios que sean autónomos e independientes de la versión).&lt;br /&gt;
&lt;br /&gt;
Teclea en este archivo la lista de nombres de los nuevos ficheros que has creado para tu módulo (descriptor de módulo, nuevos ficherossql de tablas, páginas php, imágenes, etc...)&lt;br /&gt;
* Lanza el script vía Perl (necesitas la versión 5.0. o superiores de Perl)&lt;br /&gt;
 perl makepack-dolibarrmodule.pl&lt;br /&gt;
&lt;br /&gt;
El script te pide el nombre de tu módulo, su versión más reciente y la más antigua. Se va a crear un fichero &#039;&#039;&#039;mimodulo.tgz&#039;&#039;&#039;, que incluirá tu módulo listo para ser desplegado.&lt;br /&gt;
* La persona que reciba tu módulo deberá ubicar el fichero en el directorio raíz de Dolibarr y ejecutar el comando:&lt;br /&gt;
 tar -xvf monmodule.tgz&lt;br /&gt;
&lt;br /&gt;
== Algunas reglas de código ==&lt;br /&gt;
Las reglas de código a seguir se definen en la [[Documentación Desarrolladores| Documentación para desarrolladores]], concretamente en la sección &amp;quot;Lenguaje&amp;quot; del capítulo de &amp;quot;Información General&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Athomix</name></author>
	</entry>
</feed>