odoo16,15,14,13的owl,widget小部件大全,Chatgpt得出社区版和企业版共计178多个


odoo 16 从2022年10月16日发布至今,已经基本稳定。 从14开始,使用owl方式,新增不少widget。我们一直在熟悉新版的变化,并进行实施开发。如今odoo16完全可以在我们的项目中进行商用,也迁移升级了很多原有模块odoo16。

odoo16除了在业务流程逻辑上进行了不少优化(太不人道,开发的一堆要重写!!),在前端也基本完全重构。 前端的js经历了owl1到owl2,原来早期单文件拆成了 view = controller + render + model 的结构,更为规范(最不人道,不但要重写,还要难入门。。。。),owl用最新mvvm方式重构。性能的确大幅提升,界面更友好,操作更方便。

花了不少时间,基本把所有widget都试了下,光是odoo本身就已经有超过100个widget,少量是企业版的(自求多福),很多功能十分好,实现了很多想要的效果。 在此简单整理下,后续会更新些说明。


Widget清单由 Chatgpt编码取得,代码见最下。


至于 widget 怎么用,如果你能对widget感兴趣,应该具备一定能力了。 一句话,“odoo的源码就是大宝库”。这里放个 新widget, badge 和 label_selection 的截图,本来是要写一个类似的,结果找源码找到了,发现十分好用。常规的 listview 有decoration可以用不同色,但太不明显,用了这个,在不同状态可以有更明显的css样式,简单处理下也可以用在时间上。比如还有2天就到期,显示红色 danger,还有5天的就显示橙色 warning。 业务跟单是硬需求,十分好用!!

 

odoo16,15,14,13的owl,widget小部件大全,Chatgpt得出社区版和企业版共计178多个

 

以下是 odoo 社区版和企业版的全部 widget了(如果你还找到别的,欢迎补充),第三方的有很多,比如我们的ztree树状视图,odoo 市场这里找 

熟用 widget 会让你升级很快(当然第一是要熟悉odoo业务功能,路漫漫。。),毕竟官方的建议是能用 python就用python,没事儿不要写前端!!


odoo16 所有的widget, 共计 178 个

社区版 Widget,合计 140 个

企业版 Widget,合计 38 个


社区版Widget 社区版Widget 企业版使用的 Widget
CopyClipboardChar many2one account-tax-totals-field-for-withhold
CopyClipboardText many2one_avatar appraisal_skills_one2many
CopyClipboardURL many2one_avatar_employee bank_rec_html
account-tax-totals-field many2one_avatar_user bank_rec_widget_form_lines_widget
account_resequence_widget many2one_barcode bank_rec_widget_form_reco_models_widget
account_type_selection mass_mailing_html bank_rec_widget_view_switcher
ace mondialrelay_relay bankrec_many2one_multi_id
activity_exception monetary barcode_handler
analytic_distribution mrp_consumed boolean_toggle_confirm
applicant_char mrp_production_components_x2many call_queue_switch
attachment_image mrp_should_consume consolidation_dashboard_field
autosave_many2many_tags mrp_timer deprec_lines_reversed
background_image mrp_workorder_popover documents_many2many_tags
badge name_with_subtask_count field_many2one_iot_scale
binary one2many followup_trust_widget
boolean open_move_widget fsm_product_quantity
boolean_favorite page_url helpdesk_sla_many2many_tags
boolean_toggle payment hierarchy_kanban
char pdf_viewer iot_picture
char_emojis percentage kanban.many2many_avatar_employee
chatbot_steps_one2many percentpie many2many_tags_avatar
chatbot_triggering_answers_widget phone many2one_avatar_resource
color pol_product_many2one marketing_activity_graph
color_picker portal_wizard_user_one2many payslip_line_one2many
counted_quantity_widget priority plm_upd_qty
dashboard_graph profiling_qweb_view properties
date progressbar quality_domain_field
daterange project_private_task set_reserved_qty_button
datetime project_state_selection signature
domain question_page_one2many social_post_preview
email radio task_confirm_date_end_with_warning
embed_viewer reference timer_start_field
event_icon_selection remaining_days timesheet_uom_hour_toggle
filterable_selection replenishment_history_widget timesheet_uom_timer
float res_partner_many2one twitter_users_autocomplete
float_time resume_one2many worked_days_line_one2many
float_without_trailing_zeros sale_order_many2one youtube_upload
forecast_widget sales_team_progressbar  
gauge section_and_note_one2many  
grouped_view_widget section_and_note_text  
handle section_one2many  
hr_holidays_radio_image selection  
hr_org_chart selection_badge  
html skills_one2many  
iframe slide_category_one2many  
iframe_wrapper sms_widget  
image so_line_field  
image_radio sol_discount  
image_url sol_product_many2one  
integer stat_info  
kanban_activity state_selection  
kanban_vat_activity statinfo  
label_selection status_with_color  
lead_days_widget statusbar  
line_open_move_widget stock_move_one2many  
list_activity stock_rescheduling_popover  
loyalty_one2many survey_description_page  
mail_activity task_with_hours  
mail_followers text  
mail_thread text_emojis  
mailing_filter timesheet_uom  
many2many timesheet_uom_no_toggle  
many2many_alt_pos timezone_mismatch  
many2many_avatar_employee upgrade_boolean  
many2many_avatar_user url  
many2many_binary video_preview  
many2many_checkboxes website_publish_button  
many2many_tags website_redirect_button  
many2many_tags_email website_urls  
many2manyattendee work_permit_upload  



 


以上的Widget 清单,由 ChatGpt编码得出,简单微调,代码如下


# -*- coding: utf-8 -*-
import os
import xml.etree.ElementTree as ET


def find_widgets_in_xml(file_path):
widgets = set()
try:
tree = ET.parse(file_path)
root = tree.getroot()

for elem in root.iter():
widget_value = elem.attrib.get('widget')
if widget_value is not None:
widgets.add(widget_value)
except Exception as e:
print(f"Error parsing {file_path}: {e}")
return widgets

def main():
# 这里放odoo 目录
odoo_addons_dir = 'D:\\odoo16-x64\\source\odoo\\addons'
all_widgets = set()
for subdir, dirs, files in os.walk(odoo_addons_dir):
for file in files:
if file.endswith(".xml"):
file_path = os.path.join(subdir, file)
widgets_in_file = find_widgets_in_xml(file_path)
all_widgets.update(widgets_in_file)

print("All unique widgets found:")
for widget in sorted(all_widgets):
print(f"{widget}")


if __name__ == "__main__":
main()


常用Widget使用教程

1. progressbar

  • Modo de uso

<field name="progress" 
                widget="progressbar"/>

 

odoo16,15,14,13的owl,widget小部件大全,Chatgpt得出社区版和企业版共计178多个
 
  • Ubicación en Odoo:
    Departamentos (RRHH), Encabezado de la vista kanban de CRM.

2. gauge

  • Modo de uso

<field name="current" widget="gauge" options="{'max_field': 'target_goal', 'label_field': 'definition_suffix', 'style': 'width:160px; height: 120px;'}" />

  • Ubicación en Odoo:
    Vista Kanban Gamification

odoo16,15,14,13的owl,widget小部件大全,Chatgpt得出社区版和企业版共计178多个

3. priority

  • Modo de uso:
    <field name="priority"
    widget="priority"/>

  • Ubicación en Odoo:
    Oportunidades de CRM

Odoo • Texto e imagen

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

Odoo • Texto e imagen

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>

Odoo • Texto e imagen
  • 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.

Odoo • Texto e imagen

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

Odoo • Texto e imagen


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>

Odoo • Texto e imagen



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"/>

Odoo • Texto e imagen

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)

Odoo • Texto e imagen


  • 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:

<field name="work_email" widget="email"/>

.
Odoo • Texto e imagen
  • Ubicación en odoo: Formulario de Empleados, de Clientes, etc

12. phone

  • Modo de uso:

<field name="work_phone"
                        widget="phone"/>


Odoo • Texto e imagen
  • 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

Odoo • Texto e imagen

Permite mostrar un campo de tipo Text, en una sola línea.

14. url

  • Modo de uso:

<field name="google_drive_link"
                    widget="url"/>


Odoo • Texto e imagenPermite abrir el enlace directamente.
  • Ubicación en odoo:
    Formulario de Empleados

15. state_selection

  • Modo de uso:

    <field name="kanban_state"                     widget="state_selection"/>

  • Ubicación en Odoo:
    Tareas de proyectos

Odoo • Texto e imagen

16. statusbar

  • Modo de uso:

    <field name="state" widget="statusbar"                     statusbar_visible="recruit,open"/>

  • Ubicación en Odoo:
    CRM, Contratos, Tareas

Odoo • Texto e imagenPermite mostrar los estados del registro en forma de barra en la esquina superior derecha.

17. many2many_tags 

  • Modo de uso:

    <field name="tag_ids" widget="many2many_tags" string="Tags"/>

  • Ubicación en Odoo:
    Empleados, Clientes, Tareas.

   

Odoo • Texto e imagen


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

Odoo • Texto e imagen


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.

Odoo • Texto e imagen
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
odoo16,15,14,13的owl,widget小部件大全,Chatgpt得出社区版和企业版共计178多个

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

   

Odoo • Texto e imagenPermite mostrar  un componente para seleccionar una plantilla de correo y personalizarla

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


Odoo • Texto e imagen
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'}}"
/>


Odoo • Texto e imagen

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>

Odoo • Texto e imagen

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

Odoo • Texto e imagen

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>

odoo16,15,14,13的owl,widget小部件大全,Chatgpt得出社区版和企业版共计178多个

Permite establecer seguidores de un registro (mail_followers), enviar mensajes internos y por mail (mail_thread) y planificar actividades (mail_activity). Para utilizarlos debes adicionar a tu modelo:
  • 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

Odoo • Texto e imagen
odoo16,15,14,13的owl,widget小部件大全,Chatgpt得出社区版和企业版共计178多个
Permite visualizar un documento PDF dentro de Odoo

28.mrp_time_counter 

  • Modo de uso:

<field name="duration"         widget="mrp_time_counter"/>


Odoo • Texto e imagenPermite activar un contador en tiempo real que se detiene por una acción del usuario.
  • 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')]}"/>

Odoo • Texto e imagenPermite mostrar la disponibilidad de los productos materiales necesarios para la producción.
  • 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)

odoo16,15,14,13的owl,widget小部件大全,Chatgpt得出社区版和企业版共计178多个

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
    odoo16,15,14,13的owl,widget小部件大全,Chatgpt得出社区版和企业版共计178多个

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

Odoo • Texto e imagen
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

      
Odoo • Texto e imagenBúsqueda automática en la web, de empresas  con el nombre que vas digitando

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>

Odoo • Texto e imagen
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>

Odoo • Texto e imagen
Permite mostrar un botón que informa si el registro está publicado en la web de la empresa o no.
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 OdooFacturas y Órdenes de Venta
    Permite dividir el listado de líneas de facturas en secciones y adicionar notas a las líneas.
    odoo16,15,14,13的owl,widget小部件大全,Chatgpt得出社区版和企业版共计178多个

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.
odoo16,15,14,13的owl,widget小部件大全,Chatgpt得出社区版和企业版共计178多个

38. many2many_checkboxes  

  • Modo de uso:

    <field name="inbound_payment_method_ids" widget="many2many_checkboxes"/>

  • Ubicación en Odoo

        Formulario dle Diario (Journal)

Odoo • Texto e imagen
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

Odoo • Texto e imagen
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"}'/>

Odoo • Texto e imagen
  • 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 ...  ; ).

odoo14,15,16,17中OCR使用体验,可用于账单扫描与报销发票单据扫描