Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estudi Ar
Estudi Ar
INTRODUCCIN ............................................................................. 5
CREAR UN DESCRIPTOR DE MDULO (OBLIGATORIO) ................................. 5
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:
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:
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
ARBOL DE UN MDULO
ESTRUCTURA DE ARBOL DE UN MDULO
Crear un directorio 'mimodulo' que contendr los archivos del mdulo. Este directorio
debe de estar en el directorio htdocs y contendr los siguientes subdirectorios:
Regla a respetar:
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.
Para ello, vaya al archivo descriptor del mdulo creado anteriormente y modifique la
tabla $this->tabs:
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 ":"
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
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
$head
$head[$h]
afficher
14
$head[$h][2] // Code de l'onglet, utiliser pour choisir quel onglet sera 'actif' (voir
paragraphe suivant)
Ejemplo :
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
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.
include("../../main.inc.php)";
$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
// Valide
o $db->rollback() // Annule
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:
20
$form=new Form($db);
$form->select_date('','mykey',0,0,0,"myform");
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.
$r=0;
'fk_menu'=>0,
'type'=>'top',
// Put 0 if this is a
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++;
23
'user'=>2);
users,1=external users, 2=both
$r++;
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
$this->rights_class = 'mimodulo';
$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++;
25
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:
this->boxes[0][1]='mabox0.php'
this->boxes[1][1]='mabox1.php'
this->boxes[2][1]='mabox2.php'
...
this->boxes[n][1]='maboxn.php'
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.
28
require('../main.inc.php');
$morejs=array("/mimomulo/js/monmodule.js");
llxHeader('','Titulo','','','','',$morejs,'',0,0);
29
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).
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
Web service:
31
xxx es:
"other"
"thirdparty"
"productorservice"
"invoice"
"supplier_invoice"
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
32
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
Actualmente esta lista es muy corta, pero ser enriquezida en las versiones futuras
...
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
);
34
class ActionsYourModuleName
{
/** Overloading the doActions function : replacing the parent's function with the
one below
* @param
* @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
action
void
*/
function doActions($parameters, $object, $action)
{
print_r($parameters);
echo "action: ".$action;
print_r($object);
if (in_array('somecontext',explode(':',$parameters['context'])))
{
// do something only for the context 'somecontext'
}
}
}
donde
35
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
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.
2. Modificar el cdigo del mtodo info() para devolver una descripcin de su mdulo.
37
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.
CREACIN DE UN TEMA
CREACIN DE UN NUEVO TEMA
Para crear un tema nuevo, ir a la carpeta 'htdocs/theme/' y copiar, por ejemplo, toda
la carpeta 'dolibarr' hacia una nueva carpeta al que daremos por nombre el nombre
de nuestro tema.
38
En esta carpeta cambiar el nombre del fichero .css por el mismo que el de la carpeta.
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