Академический Документы
Профессиональный Документы
Культура Документы
INTRODUCCIN ............................................................................. 5
CREAR UN DESCRIPTOR DE MDULO (OBLIGATORIO) ................................. 5
CREAR FICHEROS .SQL ................................................................... 8 PROBAR EL ARCHIVO .SQL ............................................................. 9 GENERAR LA CLASE PHP DE ACCESO (DAO) ................................. 10
VISUALIZACIN DE PESTAAS (OPCIONAL) .............................................. 10
AADIR O ELIMINAR PESTAAS EN LAS FICHAS ENTIDAD .......... 10 AADIR PESTAAS DE UNA FICHA ENTIDAD EN SU PROPIA PGINA ........................................................................................ 13
CREAR PGINA PANTALLA PHP (OPCIONAL) .............................................. 16
CREAR UNA PGINA PANTALLA PHP ............................................ 16 REEMPLAZAR PARTES DE TEMPLATES DE PANTALLA (VERSIN 3.3+)............................................................................................ 17 ACCESO A LA BASE DE DATOS ...................................................... 18 DEFINICIN DE ESTILOS ............................................................. 20 UTILIZAR EL SELECTOR DE FECHAS DE DOLIBARR ....................... 21
INTRODUCCIN INTRODUCCIN
Para crear un nuevo mdulo 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 aadir una o varias de las siguientes funcionalidades:
Aadir nuevas tablas a la base de datos. Aadir sus propias entradas en los mens. Aadir pantallas de edicin/consulta de nuevas tablas. Aadir o eliminar pestaas en las pginas de vista/edicin de objetos (factura, producto, pedido, evento, etc.) Aadir exportaciones predefinidas a la funcin Exportar. Aadir variables de substitucin Aadir nuevas cajas a la pgina de inicio. Definir nuevos permisos. Activar cdigo automtico sobre una accin particular de Dolibarr. Insertar nuestro cdigo mediante los hooks de Dolibarr Aadir un mdulo de numeracin Aadir un modelo de documento Aadir un nuevo tema
etc. Todas estas operaciones slo estn disponibles a partir de la versin 3.2 de Dolibarr.
Cundo: Obligatorio cada vez que se desarrolla una extensin, cualquiera que sea su finalidad.
CREAR SU DESCRIPTOR
La primera fase es la de crear un fichero descriptor del mdulo. Para ello:
Crear el directorio /htdocs/mimodulo/core/modules. Seguidamente ir al directorio dev/skeletons y copiar el archivo modMyModule.class.php en el directorio htdocs/monmodule/core/modules.
los "modMyModule" por un valor que corresponda a la finalidad de su mdulo. Este valor debe siempre comenzar por mod.
ATENCIN: El MiModulo debe estar compuesto por una serie de caracteres, siendo los nicos permitidos [A-Za-z_] con longuitud max de MyModule de 12 caracteres.
$this->numero = 10000 por un nmero de mdulo que est libre (Para saber qu nmeros ya estn siendo utilizados, vaya a la pgina "Inicio-> Info sistema-> Dolibarr-> Mdulos") Modificar eventualmente otras variables definidas por los desarrolladores (ver el comentario en el cdigo del esqueleto para ver su significado) Crear el directorio /htdocs/mimodulo/
PROBAR SU DESCRIPTOR
Ejecute Dolibarr y vaya a la pgina "Configuracin > Mdulo". Debera aparecer una nueva lnea con su nuevo mdulo y la posibilidad de activarlo o no (eche un vistazo a DESARROLLO DE UN MDULO PARA DOLIBARR +3.2 6
todas las pestaas de cada categora para encontrarlo). Es el valor $this->special el que determina en qu pestaa se encuentra su mdulo.
mimodulo/core/modules/ debe contener el archivo descriptor del mdulo : modMiModulo.class.php mimodulo/core/triggers contiene los triggers usados mimodulo/admin/ contiene las pginad de configuracin del mdulo mimodulo/class/ contiene las clases PHP necesarias para el mdulo mimodulo/css contiene los archivos CSS necesarios para el mdulo mimodulo/img contiene las imagenes suministradas con el mdulo mimodulo/langs/xx_XX contiene los archivos de traduccin para el idioma xx_XX (como mnimo en_US) mimodulo/lib contiene las bibliotecas necesarias para el mdulo mimodulo/sql contiene los archivos SQL usador para aadir las nuevas tablas o ndices necesarios para el mdulo mimodulo/themes/mitema si el mdulo tiene su propio tema/skin build/ puede contener todos los archivos usados para compilar o construir el paquete de distribucin docs/ contiene todo lo que se refiera a documentacin. Tambin puede contener los archivos de licencia scripts/ contiene los archivos de scripts (comandos en lnea). test/ contiene los archivos de testeo unitario (datos, scripts y clases de testeo) README.txt es un archivo que resume el mdulo. La documentacin ms detallada se emplazar en el directorio docs
Cree un subdirectorio sql en el directorio de su mdulo (por ejemplo, htdocs/mimodulo/sql), con el fin de colocar los scripts sql que va a crear.
Regla a respetar:
Agregue los archivos de orden de creacin de sus tablas siguiendo el principio de un fichero llx_mitabla.sql por tabla, eventualmente acompaado del archivo llx_mitabla.key.sql' (ver los archivos existentes en install/mysql/tables, para tomar ejemplo). En trminos de orden de gestin de datos, todos deben estar en un archivo llamado data.sql situado en la misma carpeta /mimodulo/sql/.
DELETE FROM llx_const WHERE name='MYMODULE_IT_WORKS' AND entity='__ENTITY__'; INSERT INTO llx_const (name, value, type, note, visible, entity) VALUES ('MYMODULE_IT_WORKS','1','chaine','A constant vor my module',1,'__ENTITY__');
Las rdenes SQL de los archivos deben de ser operacionales para la base de datos mysql. 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.
Esto genera un archivo out.nombretabla.class.php que contiene la clase de gestin de la tabla nombretabla. En esta clase se encuentran los mtodos CRUD (Create/Read/Update/Delete) ya operativos para hacer un insert, un fetch (select), un update, y un delete de una lnea de la tabla. Suprima justo el "out" del nombre del archivo y pgalo en un subdirectorio de htdocs propio en su mdulo (Por ejemplo en htdocs/mimodulo).
Un archivo out.nombretabla_script.php se genera igualmente y contiene un ejemplo de cdigo para utilizar la clase para cada uno de los cuatro mtodos CRUD.
Para ello, vaya al archivo descriptor del mdulo creado anteriormente y modifique la tabla $this->tabs:
// Array to add new pages in new tabs or remove existing one $this->tabs = array('objecttype:+tabname1:Title1:@mymodule:/mymodule/mynewtab1.php?id=_ _ID__', // To add a new tab identified by code tabname1
10
'objecttype:+tabname2:Title2:@mymodule:/mymodule/mynewtab2.php?id=__ID__' , // To add another new tab identified by code tabname2 'objecttype:-tabname'); remove an existing tab identified by code tabname // To
La tabla debe contener una lista de cadena, cada cadena representa una nueva pestaa. El formato de la cadena se compone de 4 partes separadas por ":"
Parte 1: El cdigo de la entidad (objecttype) en la que debe aparecer la pestaa siendo el valor de ella misma: 'thirdparty' para aadir una pestaa en la vista de tercero 'intervention' para aadir una pestaa en la vista de intervencin 'order_supplier' para aadir una pestaa en la vista de pedido a proveedor 'invoice_supplier' para aadir una pestaa en la vista de factura de proveedor 'invoice' para aadir una pestaa en la vista de factura a cliente 'order' para aadir una pestaa en la vista de pedido de cliente 'product' para aadir una pestaa en la vista de producto 'stock' para aadir una pestaa en la vista de stock 'propal' para aadir una pestaa en la vista de presupesto a cliente 'member' para aadir una pestaa en la vista de miembro 'contract' para aadir una pestaa en la vista de contrato 'user' para aadir una pestaa en la vista de usuario 'group' para aadir una pestaa en la vista de grupo 'contact' para aadir una pestaa en la vista de contacto
'categories_x' para aadir una pestaa en la vista de categora (reemplazar 'x' por el tpo de categora (0=producto, 1=proveedor, 2=cliente, 3=miembro)
11
Parte 2: El ttulo de la pestaa. Puede ser una etiqueta directa o mejor un cdigo de traduccin de un archivo lang. Parte 3: El nombre del archivo .lang (sin la extensin .lang) que contiene la correspondencia entre el cdigo de traduccin y la etiqueta a mostrar. Si el nombre empieza con @, Dolibarr buscar el archivo en el directorio lang del propio mdulo, es decir, htdocs/mimodulo/langs/code_CODE/mimodulo.lang, de lo contrario Dolibarr buscar el archivo de en /langs/code_CODE/mimodulo.lang
Parte 4: La url de la pgina a mostrar cuando se haga click en las pestaa. La cadena __ID__ ser reemplazada automticamente por el Id de la entidad concerniente.
Para alimentar el contenido de la pestaa con los datos de la base de datos, vea el captulo siguiente.
12
1. Incluir los archivos que definen las funciones tiles dentro de sus archivos
Para cada ficha entidad, hay que incluir dos archivos con la instruccin
require_once($url_fichier) ;
13
DOL_DOCUMENT_ROOT/lib/invoice.lib.php
Crear el objeto de la clase deseada, y recuperar los datos del objeto a partir de la base de datos. Para ello deber utilizar las funciones fetch() de la clase correspondiente, pasando el parmetro del indentificador del objeto que recupera desde la url (ej : /mononglet.php?id=1).
Ejemplo :
$id=$_GET["id"]; $product = new Product($db) ; $result = $product->fetch($id) ; //Tester $result pour vrifier que l'accs la base s'est bien pass
Usar la funcin XXX_prepare_head($obj), donde XXX es le nombre de la entidad, para crear una tabla que contiene las definiciones de las pestaas a mostrar. El parmetro a pasar es el objeto del que desea mostrar las pestaas.
// Tableau des onglets // lment dcrivant un onglet. Il y aura autant de $h que d'onglets
$head[$h][0] // Url de la page affiche quand on clique sur l'onglet $head[$h][1] // Titre de l'ongLet
14
$head[$h][2] // Code de l'onglet, utiliser pour choisir quel onglet sera 'actif' (voir paragraphe suivant)
Ejemplo :
$head = product_prepare_head($product, $user) ; //le paramtre $user n'est pas prsent sur certaines fonctions
Use la funcin dol_fiche_head() que muestra las pestaas contenidas en la tabla $head devuelta por XX_prepare_head().
dol_fiche_head($links, $active='0', $title='', $notab=0, $picto='') $links // Tableau des onglets, appel $head plus haut. $active // Onglet actif (mettre le nom de l'onglet dfini dans votre fichier de module, ou un nom contenu dans $head[$h][2]). Cet onglet sera mis en surbrillance $title // ? $notab // Mettre ce paramtre 1 permet de ne pas afficher de zone bleue en dessous des onglets. $picto // Nom de l'image utiliser au dbut de la barre des onglet. Les choix suivant sont possibles : // // // product service company
Esta funcin muestra las pestaas deseadas y abre un elemento < div class="" > que corresponde a la zona azul bajo las pestaas (si el parmetro $notab = 0). Para cerrar la zona azul, simplemente cierre el elemento < /div > en el cdigo PHP.
15
CREAR PGINA PANTALLA PHP (OPCIONAL) CREAR UNA PGINA PANTALLA PHP
Debe crear a continuacin 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 lnea de comandos, ver Desarrollo de scripts).
Para crear una nueva pgina de usuario, cree un subdirectorio de htdocs (si es que no existe ya) propio en su mdulo (En htdocs/mimodulo, por ejemplo), con el fin de ubicar en l las pginas que va a crear.
Copie all el archivo skeletons_page.php, que va a servir de punto de partida a su pgina. Modifique el archivo para que la ruta relativa de
include("../../main.inc.php)";
sea la correcta, en funcin de la profundidad del directorio en el que se encuentra el archivo (quitando o aadiendo "../"). Es en el "main" donde se carga el entorno tcnico y las habilitaciones. Los objetos variables se posicionan ahora:
$user El objeto que contiene las caractersticas del usuario y sus derechos. $conf El objeto que contiene la configuracin de Dolibarr. $db El objeto que contiene el gestor de conexin abierto a la base de datos. $langs El objeto que contiene el idioma del usuario.
16
17
Si de todos modos quiere acceder a las tablas sin objeto PHP dedicado, esto es posible (por ejemplo para recuperar una lista de registros). En ese caso, piense en seguir estos ejemplos.
$db->begin();
// Debut transaction
o $db->rollback() // Annule
$resql=$db->query("Ma requete select"); if ($resql) { $num = $db->num_rows($resql); $i = 0; if ($num) { while ($i < $num) { $obj = $db->fetch_object($resql); DESARROLLO DE UN MDULO PARA DOLIBARR +3.2 18
if ($obj) { // You can use here results print $obj->field1; print $obj->field2; } $i++; } } }
19
DEFINICIN DE ESTILOS
Para que el aspecto de la pgina guarde coherencia con el tema Dolibarr, es necesario utilizar los estilos CSS de Dolibarr.
Por ejemplo:
class="liste_titre"1 en las etiquetas tr y td para una lnea de ttulo de tabla. class=pair o class=impair en las etiquetas tr y td de las lneas de datos de la tabla. class=flat en todos los campos en los que se teclea (input, select, textarea...) class=button en los objetos de tipo input type=submit.
20
La cadena "mikey" identifica el campo fecha. Hace falta introducir un valor diferente en caso de que haya varios campos. La cadena "myform" es el nombre del campo "FORM" (en el formulario, name="myform" de la pgina html). La visualizacin de un selector de fecha debe por tanto estar integrada en un formulario html.
$this->config_page_url = array("monmodule_setupapage.php");
21
PROBAR LA PGINA
Vaya a la pgina Configuracin > mdulo. Debera aparecer un icono que permite acceder a la pgina de configuracin, y debera poder modificar estas opciones y verlas en la base de datos.
// Add here entries to declare new menus // Example to declare the Top Menu entry: $this->menu[$r]=array( top menu 'fk_menu'=>0, // Put 0 if this is a
'type'=>'top',
22
'langs'=>'mylangfile', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. 'position'=>100, 'enabled'=>'1', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. 'perms'=>'1', // Use 'perms'=>'$user->rights>mymodule->level1->level2' if you want your menu with a permission rules 'target'=>'', 'user'=>2); users, 1=external users, 2=both $r++; // 0=Menu for internal
// Example to declare a Left Menu entry: $this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=xxx', // Use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode 'type'=>'left', 'titre'=>'MyModule left menu 1', 'mainmenu'=>'xxx', 'leftmenu'=>'mymodule', 'url'=>'/mymodule/pagelevel1.php', 'langs'=>'mylangfile', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. 'position'=>100, 'enabled'=>'1', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. 'perms'=>'1', // Use 'perms'=>'$user->rights>mymodule->level1->level2' if you want your menu with a permission rules 'target'=>'', // This is a Left menu entry
23
Para condicionar el acceso al men segun los permisos, modificar la propiedad perms de la tabla. Ver el captulo sobre permisos, un poco ms abajo, para saber como realizar los permisos.
24
La definicin de permisos que gestionar su mdulo se hace en el archivo descriptor creado en la primera fase. Modifique la lnea $this->rights_class = 'facture' para que diga:
$this->rights_class = 'mimodulo';
A continuacin, rellene la tabla $this->rights con tantas entradas como permisos diferentes vaya a definir:
$this->rights[$r][0] = 10001; $this->rights[$r][1] = 'Texto por defecto de mi permiso'; $this->rights[$r][3] = 1; $this->rights[$r][4] = 'accion'; $this->rights[$r][5] = 'subaccion'; $r++;
En $this->rights[$r][0], introduzca un id de permiso que no haya sido ocupado ya (para saber qu id estn siendo ya utilizadas, ver el men Informacin del Sistema en una instalacin de Dolibarr que est funcionando. En $this->rights[$r][3], introduzca 1 si este permiso se atribuye por defecto a los usuarios segn son creados. En $this->rights[$r][1] introduzca un texto por defecto -que ser mostrado si no se encuentra traduccin para su permiso en el archivo admin.lang). En $thisDESARROLLO DE UN MDULO PARA DOLIBARR +3.2 25
>rights[$r][4] y $this->rights[$r][5], introduzca una cadena de accin y subaccin sin espacios. Despus puede probar si un usuario tiene los permisos bien, introduciendo la siguiente secuencia en el cdigo PHP:
if ($user->rights->mimodulo->accion->subaccion) ...
Para ello, modifique las tablas $this->boxes del archivo descriptor de mdulo. Es suficiente con aadir una lnea por cada archivo de panel que se encuentre en el directorio htdocs/includes/boxes.
Ejemplo:
A continuacin cree los archivos mabox0.php, mabox1.php... tomando como ejemplo los paneles existentes (en el directorio htdocs/include/boxes)
26
27
PROBAR LA EXPORTACIN
Vaya al men "Herramientas > Exportar" de Dolibarr. Su exportacin debera aparecer en la lista de exportaciones predefinidas disponibles (si su mdulo ha sido activado correctamente). Deberan 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 exportacin.
Una vez su hoja de estilos est disponible, declrela en su archivo descriptor de mdulo modificando la propiedad $this->module_parts. El valor a indicar debe ser la ruta URL relativa de su archivo css. Por ejemplo
28
Si en sus pantallas en PHP utiliza funciones javascript, es necesario asegurarse de que las funciones declaradas en un archivo javascript htdocs/mimodulo/js/monmodule.js sea cargado en la cabecera del head html.
Para pedir a Dolibarr que gestione en la generacin de la seccin header la inclusin de uno de sus archivos javascript, es necesario proporcionar como parmetro a la funcin llxHeader(), al inicio de su pgina, la URL hacia el js a incluir.
EJECUTAR CDIGO SOBRE UN EVENTO DOLIBARR (OPCIONAL) EJECUTAR CDIGO SOBRE UN EVENTO DOLIBARR
29
Cundo: Si quiere que se ejecuten acciones particulares al activar ciertas acciones estandar de Dolibarr (por ejemplo, si deseramos actualizar una tabla de mi mdulo cada vez que se crea una factura en Dolibarr), har falta crear un archivo disparador (triggers).
Dolibarr proporciona dos mecanismos sencillos para poder actuar en una aplicacin externa en un evento interno de Dolibarr:
Los triggers - un mecanismo para activar su cdigo cuando Dolibarr ejecute una accin (creacin de factura, edicin de un usuario, eliminacin de un pedido, etc.) El sistema Hooks - un interfaz para integrar su cdigo en un punto de entrada de Dolibarr.
Existen 3 mtodos para permitir que una aplicacin exterior inserte datos en Dolibarr (Para obtener informacin acerca del caso contrario y permitir a Dolibarr insertar datos en el exterior, consulte la pgina Interfaces Dolibarr hacia el exterior).
Las tres tcnicas posibles son las siguientes: Insercin de datos directa en la base de datos
Esta solucin requiere el conocimiento del modelo fsico y los valores autorizados de los campos. Es arriesgado y debe ser reescrito en caso de modificiacin del formato de la base de datos Dolibarr.
30
Inconveniente: Esta tcnica es muy desaconsejada. Al primer aumento de versin Dolibarr, este mtodo puede dejar de funcionar, siendo necesario reescribirlo. Adems, utilizando este mtodo, se pasan por alto las reglas de negociado de validacin, creando un riesgo de corrupcin de datos. Este mtodo tambin necesita conocer la base de datos Dolibarr. Uso de clases PHP
Es posible utilizar objetos de negociado de Dolibarr (Los ficheros xxx.class.php). Cada uno de estos ficheros ofrece una clase equipada con mtodos para:
la recuperacin de una entidad (el mtodo fetch) La insercin de una entidad (el mtodo create o insert) la actualizacin de una entidad (el mtodo update) la eliminacin de una entidad (el mtodo delete) si es aplicable al objeto Otros mtodos diversos propios de la entidad manipulada.
Ventajas: Ofrece la ventaja de pasar a travs de capas de negociado de validacin de datos. La interfaz del cdigo no debera ser sobreescrita en caso de aumento de versin de Dolibarr.
Inconvenientes: Slo se utiliza en PHP. Su cdigo debe de estar situado en el mismo servidor que los archivos Dolibarr.
Web service:
El servidor utiliza la librera PHP Nusoap (sin necesidad de mdulo PHP suplementario) que ha sido modificada para trabajar tanto en PHP4 como en PHP5. DESARROLLO DE UN MDULO PARA DOLIBARR +3.2 31
xxx es:
Slo unos pocos servicios estn disponibles. Puede obtener una lista completa de los servicios prestados llamando a la URL sin parmetros POST.
Por ejemplo, para ver todos los webservices suministrados con la versin de demo, llame simplemente a la URL siguiente sin parmetros:
http://demo.dolibarr.org/webservices/server_other.php
Para obtener el fichero WSDL que describe los contratos webservices, puede llamar a:
http://demo.dolibarr.org/webservices/server_other.php?wsdl
Tenga en cuenta que se encuentra disponible un ejemplo de cdigo PHP client que realiza la llamada de web services solicitando la URL /webservices/server.php Por ejemplo, en la demo en lnea, llamar a
http://demo.dolibarr.org/webservices/demo_wsclient_other.php
La lista de servicios disponibles se puede consultar en la pgina /webservices/. Por ejemplo, en el servidor Dolibarr de demostracin, esta es la URL: http://demo.dolibarr.org/webservices/
Actualmente esta lista es muy corta, pero ser enriquezida en las versiones futuras ...
EJECUTAR CDIGO USANDO HOOKS EN DOLIBARR EJECUTAR CDIGO USANDO HOOKS EN DOLIBARR
Cundo: Cuando desee cambiar o aadir otro tipo de cdigo en un evento de negociado (vase lel captulo anterior para esto).
El sistema Hooks
Hooks es una funcionalidad de desarrollo (con Dolibarr 3.2) que permite a los desarrolladores agregar cdigo personalizado en el cdigo del ncleo de Dolibarr sin necesidad de parchear Dolibarr. Al contrario que los triggers (otra funcionalidad para interactuar con el cdigo de Dolibarr) que estn vinculados a una accin de negociado, los hooks pueden producirse en cualquier lugar y en cualquier momento, son un punto de entrada en el programa.
33
Hooks trabaja por contexto (es decir por mdulo, ej: "productcard" para productos, "invoicecard" para facturas, etc.). Es fcil de encontrar, solo hay que burcar por "initHooks(" Hooks son funciones que pueden ser sobrecargadas por las suyas propias. Usted es el que decide si su cdigo se aade al cdigo estandar de Dolibarr o si reemplaza al cdigo de Dolibarr. Puede encontrar funciones sobrecargables buscando por "executeHooks("
Implementacin
Para usar un hook (sobrecarga de una funcin), debe de haber definido un mdulo antes (vea la wiki para ello), y entonces tiene que hacer 2 cosas:
1- Aadir su mdulo a los hooks del contexto que desee. Esto significa que cuando este contexto (mdulo) va a suceder, el mdulo ser llamado. Para ello edite su /htdocs/sumodulo/includes/modSuModulo.class.php y edite la variable $this>module_parts con algo como esto:
$this->module_parts = array( 'hooks' => array('hookcontext1','hookcontext2') // Set here all hooks context managed by module );
IMPORTANTE: Tenga cuidado: No olvide DESACTIVAR y luego ACTIVAR el mdulo en el panel de administracin para aceptar los nuevos valores de las constantes, ya que estas constantes solo se aaden a la base de datos cuando se activa el mdulo.
34
class ActionsYourModuleName {
/** Overloading the doActions function : replacing the parent's function with the one below * @param parameters meta datas of the hook (context, etc...)
* @param object the object you want to process (an invoice if you are in invoice module, a propale in propale's module, etc...) * @param null * @return */ function doActions($parameters, $object, $action) { print_r($parameters); echo "action: ".$action; print_r($object); action current action (if set). Generally create or edit or
void
donde
35
$parameters es un array de meta-datos acerca de los datos contenidos en el hook (ej: el contexto, siempre accesible mediante $parameters['context']). $object es el objeto con el que va a trabajar. Ej: el producto si se encuentra en el contexto productcard. $action es la accin si se ha enviado alguna (generalmente "create", "edit" o "view").
Cmo encontrar hooks disponibles? Realice una bsqueda de "executeHooks(" y le ser fcil encontrar las llamadas a los mtodos Hook.
afterLogin afterPDFCreation createFrom doActions printLeftBlock printSearchForm printTopRightMenu printObjectLine formAddObject: Add a product into an element formObjectOptions: called everytime fields associated to the main object are printed or inputted (eg: creation form, datasheet, edit form, etc..). formConfirm createDictionaryFieldlist editDictionaryFieldlist viewDictionaryFieldlist
...
36
Para cada entidad creada en la aplicacin, Dolibarr le asigna una referencia. Con el fin de adaptar la referencia a cualquier uso, Dolibarr utiliza mdulos para definir la regla de generacin de esta referencia. Los mdulos se suministran como estndar, por lo tanto, algunos son genricos y se utilizan para definir la mscara de numeracin (x nmero de caracteres, con o sin prefijo, incluyendo la fecha o no, etc), pudiendo satisfacer la mayora de las necesidades. Sin embargo, an hay casos en los que el mdulo estndar incluido no responde a la necesidad. En este caso es necesario para desarrollar su propio mdulo de numeracin. . Crear un nuevo mdulo de numeracin
Por ejemplo, partiremos del principio que crearemos un nuevo mdulo de numeracin de facturas al que llamaremos 'terrebis' y que se basa en el mdulo incluido como estndar 'terre':
copiar-pegar htdocs/includes/modules/facture/terre/terre.modules.php en htdocs/includes/modules/facture/terrebis/terrebis.modules.php. Puede utilizar el nombre que desee en lugar de terrebis, siempre que no est ya en uso y que contenga solamente caracteres alfabticos.
1. Renombrar el nombre de la clase para reemplazar el nombre de clase por el nombre escogido (conservar las mismas convenciones).
2. Modificar el cdigo del mtodo info() para devolver una descripcin de su mdulo.
3. Modificar el cdigo del mtodo getExemple() para devolver un ejemplo de referencia devuelto por el mdulo. DESARROLLO DE UN MDULO PARA DOLIBARR +3.2 37
4. Modificar el cdigo del mtodo canBeActivated() para realizar solo un "return true;"
5. Modificar el cdigo del mtodo getNextValue() para devolver el siguiente nmero de referencia.
En el cdigo de esta funcin, puede utilizar los parmetros $objsoc $facture que contienen la informacin de los terceros implicados en la generacin y el objeto que participa en la generacin (Los nombres de estas variables pueden ser diferentes en funcin de la naturaleza de la entbjetidad gestionada por el mdulo). Puede utilizar adems los objetos $langs, $conf y $db, a condicin de declarrarlos mediante la lnea
Estos objetos contienen: $langs: la informacin del idioma del usuario $conf: la configuracin de Dolibarr $db: el objeto de conexin a la base de datos que permite realizar las consultas SQL.
6. Guardar: el modelo 'terrebis' est disponible en la lista de modelos de facturas de Dolibarr Testear el mdulo
Testee este mdulo activndolo desde la pgina de configuracin del mdulo. Compruebe que las columnas de descripcin, ejemplos y valor siguiente, se obtienen informaciones coherentes (devueltas respectivamente por las funciones info(), getExample() y getNextValue() ).
38
En esta carpeta cambiar el nombre del fichero .css por el mismo que el de la carpeta.
Modificar el CSS, as como las imgenes contenidas en la carpeta img para personalizar su tema.
El nombre del tema aparecer automticamente en la lista de temas utilizables en la pgina Configuracin - Interface donde podremos activarlo por defecto, o en Usuarios y grupos - Pestaa Interface usuario para activarlo para un usuario en concreto. Workcomputer.png
Difusin de su tema
Cuando haya creado un tema nuevo, puede realizar un package para su distribucin mediante el script build/makepack-dolibarrtheme.pl
Obtendr un fichero .tgz que podr enviar al rea de descargas de Dolibarr (Seccin contrib).
39