Crear un modelo de documento ODT

De Dolibarr Open Source ERP CRM Wiki

Volver a índice de
la documentación de usuario

File Doc user.png

Esta página describre como construir un modelo de documento ODT para usar en la generación de documentos ODT.

Para saber como generar un modelo de documento PDF, vea la página Crear un modelo de documento PDF. Crear un podelo PDF requiere conocimientos de programación en PHP, pero la creación de modelos ODT no.

Contents

Prerrequisitos

  • Dolibarr: 3.1+
  • OpenOffice: 3.2+, LibreOffice, ...

Crear su documento

  • Crear un documento OpenOffice o LibreOffice partiendo de cero o tomando algún ejemplo.

Se encuentran instalados en los subdirectorios del directorio documents/doctemplates

  • Editar el documento usando todas las funciones de su suite.

Incluya en sus documentos los tags de las informaciones que desee ver. Dolibarr reemplazará los tags automáticamente en el momento de la generación del documento. La lista de los tags disponibles se describe a continuación.

Warning.png Atención, los tags están encerrados con {} o con [] para las tablas (ver más abajo) y se deben escribir de una sola vez en la suite de Office (sin retrocesos o eliminaciones, ni copiar y pegar). De lo contrario, la suite de Office añadirá información invisible que impide la sustitución.

Tags

He aquí la lista de los tags que serán reemplazados por la información apropiada:

Información empresa/institución

{mycompany_logo} : Your company logo
{mycompany_name} : Your company name
{mycompany_address} : Your company address
{mycompany_zip} : Your company zip
{mycompany_town} : Your company town
{mycompany_country} : Your company country (label)
{mycompany_country_code} : Your company country (code: FR, US, IT...)
{mycompany_state} : Your company state (label)
{mycompany_state_code} : Your company state (code)
{mycompany_phone}
{mycompany_fax}
{mycompany_email}
{mycompany_web}
{mycompany_barcode}
{mycompany_capital}
{mycompany_juridicalstatus}
{mycompany_idprof1}
{mycompany_idprof2}
{mycompany_idprof3}
{mycompany_idprof4}
{mycompany_idprof5}
{mycompany_idprof6}
{mycompany_vatnumber} : Your company VAT number
{mycompany_note} : Your company note

Información clientes, clientes potenciales o proveedores

{company_name} : Customer or Supplier company name
{company_address}
{company_zip}
{company_town}
{company_country} : Customer or Supplier company country (label)
{company_country_code} : Customer or Supplier company country (code: FR, US, IT...)
{company_state}
{company_state_code}
{company_phone}
{company_fax}
{company_email}
{company_web}
{company_barcode}
{company_customercode} : Company customer code
{company_suppliercode} : Company supplier code
{company_customeraccountancycode} : Company customer accountancy code
{company_supplieraccountancycode} : Company supplier accountancy code
{company_capital}
{company_juridicalstatus}
{company_idprof1}
{company_idprof2}
{company_idprof3}
{company_idprof4}
{company_idprof5}
{company_idprof6}
{company_vatnumber} : Customer or Supplier company VAT number
{company_note_public} : Customer or Supplier company public note

Información usuario

{myuser_lastname}
{myuser_firstname}
{myuser_login}
{myuser_email}
{myuser_zip}
{myuser_town}
{myuser_country}
{myuser_country_code}
{myuser_state}
{myuser_state_code}
...

Información del objeto (factura, presupuesto, pedido, ...)

{object_id}
{object_ref}
{object_ref_customer}
{object_ref_supplier}
{object_date}
{object_date_creation}
{object_date_modification}
{object_date_validation}
{object_note_private}
{object_note_public}
or
{object_note}

Amounts (numeric data):
{object_total_ht}
{object_total_vat}
{object_total_localtax1} (Dolibarr >= 3.5.0)
{object_total_localtax2} (Dolibarr >= 3.5.0)
{object_total_ttc}
{object_total_discount_ht}
{object_total_vat_x} (Dolibarr >= 3.5.0, is vat total for rate x. x can be for example 20, 8.5, 5.99 ...}

Amounts (in output language format):
{object_total_ht_locale} (Dolibarr >= 3.5.0)
{object_total_vat_locale} (Dolibarr >= 3.5.0)
{object_total_localtax1_locale} (Dolibarr >= 3.5.0)
{object_total_localtax2_locale} (Dolibarr >= 3.5.0)
{object_total_ttc_locale} (Dolibarr >= 3.5.0)
{object_total_discount_ht_locale} (Dolibarr >= 3.5.0)
{object_total_vat_locale_x.x} (Dolibarr >= 3.6.0, is vat total for rate x. x can be for example 20.000, 8.500, 5.990 ...}

Specific to proposals:
{object_date_end} : End date of validity of proposal

Specific to order:
{object_date_delivery_planed}  (Dolibarr >= 3.4.0)

Specific to invoices:
{object_date_limit}
{object_payment_mode}
{object_payment_term}
{object_source_invoice_ref}
{object_already_payed} : Amount already payed (numeric)
{object_remain_to_pay} : Remaining to pay amount (numeric)
{object_already_payed_locale} : Amount already payed (output language format)
{object_remain_to_pay_locale} : Remaining to pay amount (output language format)

Extra fields:
{object_options_xxx} : Value of extra field (where xxx is code of extra field)

Líneas de los objetos

Le explicaremos como usar las tablas de líneas de los objetos (líneas de facturas, pedidos, etc...). Deberá crear una tabla en el documento y usar las balizas "begin" y "end" para definir la línea de la tabla. Esta línea se repitirá tantas veces como sea necesario en el momento de la generación.

[!-- BEGIN row.lines --]
...
[!-- END row.lines --]

A continuación, añada los tags de líneas entre las dos balizas:

{line_fulldesc}
{line_product_ref}
{line_product_label}
{line_desc}
{line_vatrate}
{line_up}
{line_up_locale}
{line_qty}
{line_discount_percent}
{line_price_ht}
{line_price_ht_locale}
{line_price_vat}
{line_price_vat_locale}
{line_price_ttc}
{line_price_ttc_locale}
{line_date_start}
{line_date_start_rfc}
{line_date_end}
{line_date_end_rfc}

Extra fields:
{line_options_xxx} : Value of extra field (where xxx is code of extra field)

Este es un ejemplo de como puede quedar en su procesador de textos: Line for document generation.png

Otros tags personalizados

Si quiere añadir un campo de sustitución no predefenido:

  • Añadir un archivo en htdocs/mimodulo/core/substitutions/functions_mymodule.lib.php
  • En este archivo, escribir una función como esta:
/** 		Function called to complete substitution array (before generating on ODT, or a personalized email)
 * 		functions xxx_completesubstitutionarray are called by make_substitutions() if file
 * 		is inside directory htdocs/core/substitutions
 * 
 *		@param	array		$substitutionarray	Array with substitution key=>val
 *		@param	Translate	$langs			Output langs
 *		@param	Object		$object			Object to use to get values
 * 		@return	void					The entry parameter $substitutionarray is modified
 */
function mymodule_completesubstitutionarray(&$substitutionarray,$langs,$object)
{
   global $conf,$db;
 
   $myvalue='Put here calculated value to insert';
   $substitutionarray['myowntag']=$myvalue;
}

La función será llamada antes de la generación del documento para completar la tabla de sustituciones que reemplazará el tag myowntag por el valor definido en $myvalue. Puede añadir tantos tags como necesite y meter el código que quiera pare definir los valores (sacados de la base de datos, calculados, a partir de variables recibidas o globales, etc.).

Atención: El primer parámetro de la declaración de la función debe empezar por & ya que es modificado por el código y debe devolverse modificado.

Creado un módulo (Ver la página Desarrollo de un módulo), puede emplazar el archivo de substititución en un directorio de su módulo llamado htdocs/mimodulo/core/substitutions. Sin embargo, la función sólo será llamada si el descriptor de módulo contiene una entrada

$this->module_parts = array('substitutions' => 1)

y que el módulo haya sido activado.

Guardar su documento

Para ver su modelo de documento en la lista de modelos disponibles, guarde lo en el subdirectorio adecuado que se encuentra en el directorio documents/doctemplates

Herramientas personales
  • Ask to contact@dolibarr.org to request an account to contribute to this documentation
  • Entrar
Otros idiomas
InglésFrancésAlemán
Na traduccion en Alemán.
Italiano
Na traduccion en Italiano.
Greek
Na traduccion en Greek.
<multilanguagemanager_cn>
Na traduccion en &lt;multilanguagemanager_cn&gt;.

Social networks
Follow us on Google+ Follow us on Facebook Follow us on LinkedIn Follow us on Twitter