31,014
edits
mNo edit summary |
|||
| Line 3: | Line 3: | ||
He aquí algunas normas sobre el lenguaje, la sintaxis y las norma de desarrollo en vigor para el proyecto Dolibarr: | He aquí algunas normas sobre el lenguaje, la sintaxis y las norma de desarrollo en vigor para el proyecto Dolibarr: | ||
= Versiones = | |||
* Dolibarr debe funcionar con: | * Dolibarr debe funcionar con: | ||
| Line 10: | Line 10: | ||
# Mysql 3.1 ó + | # Mysql 3.1 ó + | ||
= Normas PHP = | |||
* Dolibarr está escrito en PHP y soporta todas las versiones de PHP superiores a la 4.1. Todos los archivos deben de contener la extensión .php | * Dolibarr está escrito en PHP y soporta todas las versiones de PHP superiores a la 4.1. Todos los archivos deben de contener la extensión .php | ||
| Line 61: | Line 61: | ||
A día de hoy, muy pocas funciones cumplen este standard, pero es necesario. | A día de hoy, muy pocas funciones cumplen este standard, pero es necesario. | ||
= Normas SQL = | |||
* ¡Los SELECT * están prohibidos! Cada Select deberá especificar la lista completa de los campos para recuperar. Esto permitirá evitar confusiones. Ejemplo: | * ¡Los SELECT * están prohibidos! Cada Select deberá especificar la lista completa de los campos para recuperar. Esto permitirá evitar confusiones. Ejemplo: | ||
| Line 83: | Line 83: | ||
* las funciones NOW ó SYSDATE están prohibidas en las órdenes de SQL. Si se necesita indicar la fecha del momento en un campo, el valor debe provenir de PHP y no del motor de la base de datos. Esto además de ofrecer una mejor portabilidad del código, también permite una gestión correcta de la zona horaria. | * las funciones NOW ó SYSDATE están prohibidas en las órdenes de SQL. Si se necesita indicar la fecha del momento en un campo, el valor debe provenir de PHP y no del motor de la base de datos. Esto además de ofrecer una mejor portabilidad del código, también permite una gestión correcta de la zona horaria. | ||
= Normas HTML = | |||
* Todos los atributos de las etiquetas HTML deben de estar *en minúscula* y entrecomillados con *doble comilla* (Norma xhtml) | * Todos los atributos de las etiquetas HTML deben de estar *en minúscula* y entrecomillados con *doble comilla* (Norma xhtml) | ||
| Line 105: | Line 105: | ||
* Los scripts externos son escritos en Perl si no pueden serlo en php, la utilización de otro lenguaje no está prohibido, pero debe de ser discutido priero en la lista de correo de desarrollo. El lenguaje debe de ser dominado al menos por 2 desarrolladores para asegurar el mantenimiento | * Los scripts externos son escritos en Perl si no pueden serlo en php, la utilización de otro lenguaje no está prohibido, pero debe de ser discutido priero en la lista de correo de desarrollo. El lenguaje debe de ser dominado al menos por 2 desarrolladores para asegurar el mantenimiento | ||
= Normas Dolibarr y plantillas de código = | |||
== Plantillas de código == | |||
Para estandarizar el código y acelerar el desarrollo de nuevos componentes en Dolibarr, en la carpeta '''dev/skeletons''' encontraremos 4 plantillas de código preparadas. | Para estandarizar el código y acelerar el desarrollo de nuevos componentes en Dolibarr, en la carpeta '''dev/skeletons''' encontraremos 4 plantillas de código preparadas. | ||
| Line 118: | Line 118: | ||
Tenga en cuenta que estas plantillas también son utilizadas por el generador de código PHP que se describe en el capítulo de Desarrollo de módulos Dolibarr módulo para acelerar su desarrollo. | Tenga en cuenta que estas plantillas también son utilizadas por el generador de código PHP que se describe en el capítulo de Desarrollo de módulos Dolibarr módulo para acelerar su desarrollo. | ||
== Las fechas y la Zona Horaria == | |||
Dolibarr es una aplicación multi-usuario y multi-ubicación. Por lo tanto, es necesario almacenar las fechas en el formato correcto. Para evitar problemas de conversión, deben aplicarse las siguientes reglas: | Dolibarr es una aplicación multi-usuario y multi-ubicación. Por lo tanto, es necesario almacenar las fechas en el formato correcto. Para evitar problemas de conversión, deben aplicarse las siguientes reglas: | ||
* Una fecha en memoria debe de estar en formato Timestamp GMT. | * Una fecha en memoria debe de estar en formato Timestamp GMT. | ||
| Line 128: | Line 128: | ||
* Las actualizaciones automáticas de la base de datos (campo '''tms''' en la base) contienen el Timestamp GMT del momento en que se ha realizado la modificación. Los métodos select recuperan directamente este dato en memoria en formato Timestamp GMT. | * Las actualizaciones automáticas de la base de datos (campo '''tms''' en la base) contienen el Timestamp GMT del momento en que se ha realizado la modificación. Los métodos select recuperan directamente este dato en memoria en formato Timestamp GMT. | ||
== Codificación UTF8/ISO == | |||
Dolibarr guarda la información de la manera siguiente: | Dolibarr guarda la información de la manera siguiente: | ||
| Line 135: | Line 135: | ||
* las páginas web mostradas en pantalla se encuentran en formato UTF8 (con versiones < 2.5.1, es el antiguo parámetro $character_set del fichero conf.php quien define el formato de salida). | * las páginas web mostradas en pantalla se encuentran en formato UTF8 (con versiones < 2.5.1, es el antiguo parámetro $character_set del fichero conf.php quien define el formato de salida). | ||
== Los números reales, las cantidades y los cálculos == | |||
Tanto en PHP como en otros lenguajes (Java, por ejemplo), los datos no enteros (float, real, double) no son fialbes. | Tanto en PHP como en otros lenguajes (Java, por ejemplo), los datos no enteros (float, real, double) no son fialbes. | ||
Pruebe a realizar por ejemplo | Pruebe a realizar por ejemplo | ||
| Line 148: | Line 148: | ||
Si no es un precio que se ajuste a los parámetros de MU, MT, MS debe utilizar la función '''round()'''. | Si no es un precio que se ajuste a los parámetros de MU, MT, MS debe utilizar la función '''round()'''. | ||
== Creación de tablas == | |||
No crear una tabla a utilizar, es decir, al '''primer uso''' del módulo. | No crear una tabla a utilizar, es decir, al '''primer uso''' del módulo. | ||
Si crea un módulo que usa tablas que no se incluyen como estándar en el código de Dolibarr, asegúrese de seguir el tutorial Creación de un módulo que explica cómo incluir las tablas que se crean en la activación del módulo y no en su uso (ver más arriba). | Si crea un módulo que usa tablas que no se incluyen como estándar en el código de Dolibarr, asegúrese de seguir el tutorial Creación de un módulo que explica cómo incluir las tablas que se crean en la activación del módulo y no en su uso (ver más arriba). | ||
== Logs == | |||
Añada traces dentro de su código mediante la función dolibarr_syslog($yourmessage, LOG_INFO|LOG_DEBUG|LOG_WARNING|LOG_ERR); | Añada traces dentro de su código mediante la función dolibarr_syslog($yourmessage, LOG_INFO|LOG_DEBUG|LOG_WARNING|LOG_ERR); | ||
== Carpetas de trabajo == | |||
Si tiene que crear una carpeta de trabajo, en el código, haga referencia a esta carpeta de la siguiente forma | Si tiene que crear una carpeta de trabajo, en el código, haga referencia a esta carpeta de la siguiente forma | ||
DOL_DATA_ROOT.'/mimodulo'. | DOL_DATA_ROOT.'/mimodulo'. | ||
| Line 166: | Line 166: | ||
Si necesita una carpeta de datos temporales, esta carpeta deberá ser DOL_DATA_ROOT.'/minmodulo/temp' | Si necesita una carpeta de datos temporales, esta carpeta deberá ser DOL_DATA_ROOT.'/minmodulo/temp' | ||
= Objeto de la programación = | |||
== Motivos de organización del código == | |||
[[wikipedia:Martin Fowler|Martin Fowler]] ha identificado 3 métodos de organización de código llamados '''principios''': | [[wikipedia:Martin Fowler|Martin Fowler]] ha identificado 3 métodos de organización de código llamados '''principios''': | ||
| Line 182: | Line 182: | ||
Como se muestra en el código de la plantilla (ver sección anterior) Dolibarr se basa en el principio de '''Table Module'''. | Como se muestra en el código de la plantilla (ver sección anterior) Dolibarr se basa en el principio de '''Table Module'''. | ||
== Comunicación lógica de negociado - datos (ORM) == | |||
Existen 3 tipos de conexiones: | Existen 3 tipos de conexiones: | ||