En más de una ocasión he escuchado a usuarios de Odoo halagar las funcionalidades que ofrece la plataforma, pero con la acotación de que algunas vistas o formularios son un poco 'planas', desde el punto de vista del diseño. Sin embargo los desarrolladores que realizan las correspondientes personalizaciones o nuevos módulos sobre la plataforma, tienen en sus manos la posibilidad de volver la interfaz más interesante, pues la misma ofrece herramientas para que, sin tener que 'reinventar la rueda', se creen recursos visuales elegantes y así los usuarios perciban un sistema atractivo además de práctico o funcional.
Si eres desarrollador(a) de aplicaciones Odoo, y eres de l@s que presta atención a los elementos que puedan garantizar una mejor experiencia de usuario al usar tus aplicaciones, hoy te propongo un pequeño tour por los widgets de Odoo 12 (CE).
Encontrarás muy útil la sección Modo de uso, donde te muestro un pequeño ejemplo de cómo usar cada widget en el código. También chequea la sección Ubicación en Odoo, de esta forma sabrás dónde buscarlo en la vista correspondiente de la versión CE de Odoo .
1. progressbar
Modo de uso
<field name="progress"
widget="progressbar"/>
Ubicación en Odoo:
Departamentos (RRHH), Encabezado de la vista kanban de CRM.
2. gauge
Modo de uso
Ubicación en Odoo:
Vista Kanban Gamification
3. priority
Modo de uso:
<field name="priority"
widget="priority"/>
Ubicación en Odoo:
Oportunidades de CRM
Permite mostrar las opciones del campo prioridad (Alto, Medio, Bajo) en forma de estrellas.
4. boolean_favorite
Modo de uso:
<field name="show_on_dashboard" widget="boolean_favorite" />
Ubicación en Odoo
Vista Kanban de Proyectos
Permite marcar un registro como favorito
.
5. kanban_activity
Modo de uso:
<div class="o_kanban_inline_block">
<field name="activity_ids widget="kanban_activity"/>
</div>
Ubicación en Odoo:
Oportunidades de CRM
6. monetary
Modo de uso:
<field name="pos_order_amount_total" widget="monetary"/>
Ubicación en Odoo:
Facturas, POS order y cualquier formulario que muestre un monto en alguna moneda.
Permite mostrar la moneda establecida en la ficha de la compañía, al lado del monto correspondiente.
7. handle
Modo de uso:
<tree string="Stages">
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="probability"/>
<field name="team_id"/>
</tree>
Ubicación en Odoo:
Vista listado de Etapas o estados de las oportunidades del CRM
Permite cambiar el orden de los registros solo arrastrándolos a la posición deseada.
8. statinfo
Modo de uso:
<button class="oe_stat_button"
type="object"
name="schedule_meeting"
icon="fa-calendar"
groups="sales_team.group_sale_salesman"
context="{'partner_id': active_id, 'partner_name': name}">
<field string="Meetings" name="meeting_count" widget="statinfo"/>
</button>
Permite mostrar el valor del campo correspondiente como parte del nombre del botón que lo contiene (estilo flat).
Ubicación en Odoo:
Botones inteligentes en vistas Formulario como Facturas, Productos, Empleados, etc
9. radio
Modo de uso:
<field name="privacy_visibility"
widget="radio"/>
Permite mostrar un campo de tipo Selection en forma de varios radiobuttons.
Ubicación en Odoo
Formulario de Proyecto
10. boolean_button
Modo de uso:
<button name="toggle_active" type="object" class="oe_stat_button" icon="fa-archive"><field name="active" widget="boolean_button" options='{"terminology": "archive"}'/>
</button>Ubicación en Odoo:
Empleados, Productos, Proyectos y muchos otros formularios en ODOO
Permite Archivar y Desarchivar cualquier registro (o una acción equivalente)
Opciones para las Terminologías:
1. options='{"terminology": {"string_true": "Published","hover_false": "Publish"}}'
2. options='{"terminology": "archive"}'
3. options='{"terminology": "active"}'
4. options='{"terminology": {
"string_true": "Production Environment",
"hover_true": "Switch to test environment",
"string_false": "Test Environment",
"hover_false": "Switch to production environment"}}'
11. email
Modo de uso:
Ubicación en odoo: Formulario de Empleados, de Clientes, etc
12. phone
Modo de uso:
<field name="work_phone"
widget="phone"/>
Ubicación en odoo:
Formulario de Empleados, de Clientes, etc.
13. char
Modo de uso:
<field name="report_header" widget="char" placeholder="e.g. Global Business Solutions" />Ubicación en Odoo
Al configurar los reportes, donde se especifica el Lema de la compañía
Permite mostrar un campo de tipo Text, en una sola línea.
14. url
Modo de uso:
<field name="google_drive_link"
widget="url"/>
Ubicación en odoo:
Formulario de Empleados
15. state_selection
Modo de uso:
Ubicación en Odoo:
Tareas de proyectos
16. statusbar
Modo de uso:
<field name="state" widget="statusbar" statusbar_visible="recruit,open"/>
Ubicación en Odoo:
CRM, Contratos, Tareas
17. many2many_tags
Modo de uso:
<field name="tag_ids" widget="many2many_tags" string="Tags"/>
Ubicación en Odoo:
Empleados, Clientes, Tareas.
Permite mostrar los registros de un listado asociado, en forma de etiquetas y no de listado. Se muestra el campo name de los registros relacionados.
18. float_time
Modo de uso:
<field name="duration" widget="float_time"/>
Ubicación en odoo: Tareas, Orden de Trabajo
Permite representar valores float de un intervalo de tiempo. Soporta tipo de dato Float.
19. date
Modo de uso:
<field name="create_date" widget="date"/>
Ubicación en Odoo: En múltiples vistas formulario.
Permite mostrar el componente para seleccionar la fecha sin hora.
20. domain
- Modo de uso:
<field name="mailing_domain" widget="domain" attrs="{'invisible': [('mailing_model_name', '=', 'mail.mass_mailing.list')]}"
options="{'model': 'mailing_model_real'}">
</field>
- Ubicación en odoo:
Campañas de correo masivo
Permite mostrar un componente para configurar un dominio.
21. html_frame
Modo de uso:
<field name="body_html" class="o_mail_body" widget="html_frame" options="{'editor_url': '/mass_mailing/field/email_template'}"/>Ubicación en Odoo
Campañas de correo masivo
22. attachment_image
Modo de uso:
<div t-if="record.displayed_image_id.value">
<field name="displayed_image_id" widget="attachment_image"/>
</div>
Ubicación en odoo
Vista kanban de Tareas de proyecto
Permite visualizar un adjunto (imagen) del registro, como una imagen en una posición determinada.
23. kanban_label_selection
Modo de uso:
<field name="state" widget="kanban_label_selection" options="{'classes': {'draft': 'default', 'done': 'success'}}"
/>
Permite mostrar un campo selection en forma de etiquetas en la vista kanban, dependiendo del valor del campo.
Ubicación en Odoo
Vista de kanban de Recepciones y Entregas de Inventario
24. label_selection
Modo de uso:
<div class="oe_kanban_bottom_right">
<span class="float-right text-right">
<field name="state" widget="label_selection" options=" {'classes': {'draft': 'default',
'cancel': 'default',
'none': 'danger',
'open': 'warning',
'paid': 'success'}}"/>
</span>
</div>
Permite mostrar una etiqueta en dependencia del valor correspondiente de un campo selection, generalmente estados. Se debe asignar un color (bootstrap) por cada posible valor.
Ubicación en Odoo: Vista Kanban de Cuentas, Órdenes de producción, etc.
25. upgrade_button
Modo de uso:
<field name="module_account_3way_match" string="3-way matching" widget="upgrade_boolean"/>
Ubicación en Odoo
Aplicaciones, Ajustes de varios módulos
Permite mostrar una etiqueta indicando al usuario que para usar cierta funcionalidad debe ‘Upgrade’ o cambiar a versión Enterprise.
26. mail_followers, mail_thread, mail_activity
Modo de uso:
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"
groups="base.group_user"/>
<field name="activity_ids" widget="mail_activity"/>
<field name="message_ids" widget="mail_thread"/>
</div>
inherit = ['mail.thread', 'mail.activity.mixin']
27. pdf_viewer
Modo de uso:
<page string="Work Sheet">
<field name="worksheet" widget="pdf_viewer"/>
</page>
Ubicación en Odoo
Operaciones asociadas a las rutas de producción en MRP
Permite visualizar un documento PDF dentro de Odoo
28.mrp_time_counter
Modo de uso:
<field name="duration" widget="mrp_time_counter"/>
Ubicación en Odoo:
Formulario de la Orden de Producción
29. bullet_state
Modo de uso:
<field name="production_availability" nolabel="1" widget="bullet_state" options="{'classes': {'assigned': 'success', 'waiting': 'danger'}}" attrs="{'invisible': [('state', '=', 'done')]}"/>
Ubicación en Odoo:
Orden de trabajo, MRP
30.pad
Modo de uso:
<field name="note_pad_url" widget="pad" class="oe_memo"/>Ubicación en Odoo
Modulo Notas + Pad (note_pad)
Permite a un equipo de usuarios acceder al mismo tiempo a una nota o pad, visualizando las actualizaciones de cada usuario en tiempo real. Para ello debe integrarse tu BD con Etherpad.
31. sms_widget
Modo de uso:
<field name="message" widget="sms_widget"/>Ubicación en Odoo:
Formulario de Clientes/Proveedores
Permite abrir un formulario para escribir un mensaje sms a los destinatarios. El ícono en la parte inferior muestra el detalle de las tarifas a cada país.
32. report_layout
Modo de uso:
<field name="external_report_layout_id" colspan="2" nolabel="1" class="report_layout_container"
widget="report_layout" options="{
'field_image': 'preview_image',
'field_binary': 'preview_pdf'
}"/>
Ubicación en Odoo:
Al configurar los reportes para la empresa
Permite seleccionar el diseño de los reportes a utilizar.
33. res_partner_many2one
Modo de uso:
<field name="partner_id" string="Customer" widget="res_partner_many2one"/>
Ubicación en Odoo:
En la ficha de la Oportunidad CRM
34. dashboard_graph
Modo de uso:
<t t-name="SalesTeamDashboardGraph">
<div t-if="record.dashboard_graph_data.raw_value" class="o_sales_team_kanban_graph_section">
<field name="dashboard_graph_data" widget="dashboard_graph"
t-att-graph_type=
"record.dashboard_graph_type.raw_value"/> </div></t>
Utilizado para representar datos gráficamente
Ubicación en Odoo:
Tablero de equipos de venta y Diarios contables.
35.website_publish_button
Modo de uso
<button class="oe_stat_button" name="website_publish_button"
type="object" icon="fa-globe" attrs=" {'invisible': [('sale_ok','=',False)]}">
<field name="website_published" widget="website_button"/>
</button>
Ubicación en Odoo:
Productos, Métodos de pago
36.section_and_note_one2many, section_and_note_text
Modo de uso:
<field name="invoice_line_ids"
nolabel="1"
widget="section_and_note_one2many"
mode="tree,kanban"
context="{'type': type, 'journal_id': journal_id, 'default_invoice_id': id}">
<tree string="Invoice Lines" editable="bottom">
<control>
<create string="Add a line"/>
<create string="Add a section" context="{'default_display_type': 'line_section'}"/>
<create string="Add a note" context="{'default_display_type': 'line_note'}"/>
</control>
...
</tree>
</field>
Ubicación en Odoo: Facturas y Órdenes de Venta
Permite dividir el listado de líneas de facturas en secciones y adicionar notas a las líneas.
37. payment
Modo de uso:<field name="payments_widget" colspan="2" nolabel="1" widget="payment"/>
Ubicación en Odoo:
Pie de factura
Este widget muestra información detallada de los pagos que se han efectuado asociados a una factura.
38. many2many_checkboxes
Modo de uso:
<field name="inbound_payment_method_ids" widget="many2many_checkboxes"/>
Ubicación en Odoo
Formulario dle Diario (Journal)
Muestra las opciones en forma de listado de checkboxes
39. selection
Modo de uso:
<field name="team_id" widget="selection" domain="[('use_leads','=',True)]"/>
Ubicación en Odoo:
Oportunidades de CRM
Permite mostrar los registros disponibles en un campo many2one como un seleccionable, de manera que no puedas crear nuevos registros o editar los que ya se muestran.
40. image
Modo de uso:
<field name="image" widget='image' class="oe_avatar" options='{"preview_image": "image_medium"}'/>
Ubicación en Odoo
Usuarios, Clientes/Proveedores, Empleados, Productos, Compañía
Y esto es todo por hoy. Si conoces alguno que no esté incluido acá, déjamelo en los comentarios, y si te gustó ... recuerda compartir ... ; ).