Skip to content

[FIX] purchase_ux: always offer purchase order optional column - #364

Open
ica-adhoc wants to merge 1 commit into
ingadhoc:18.0from
adhoc-dev:18.0-h-125399-ica
Open

[FIX] purchase_ux: always offer purchase order optional column#364
ica-adhoc wants to merge 1 commit into
ingadhoc:18.0from
adhoc-dev:18.0-h-125399-ica

Conversation

@ica-adhoc

Copy link
Copy Markdown
Contributor

Qué

En la lista de invoice_line_ids del formulario de account.move, la columna purchase_order_id que agrega purchase viene con:

column_invisible="parent.move_type not in ('in_invoice', 'in_refund')"
optional="hide"

Este PR vacía ese column_invisible desde purchase_ux, dejando la columna siempre disponible como columna opcional.

Por qué

El renderer de list excluye del menú de columnas opcionales cualquier columna cuyo column_invisible evalúe truthy — no la destilda, la saca del menú:

// web/static/src/views/list/list_renderer.js
get optionalFieldGroups() {
    const optionalColumns = this.allColumns.filter(
        (col) => col.optional && !this.evalColumnInvisible(col.column_invisible)
    );

Con lo cual, cuando la condición no se cumple, el usuario no tiene forma de activar la columna ni de distinguir ese estado de "esta columna no existe". El caso reportado fue sobre notas de crédito de proveedor (in_refund), donde la condición se cumple y la opción igual no figuraba en el menú: con este modificador, cualquier falla transitoria en la evaluación de parent.move_type se convierte en un bug irrecuperable desde la interfaz.

Ajustar la condición no alcanza: cualquier column_invisible sobre una columna optional produce el mismo efecto. Es el mismo patrón que account_ux ya aplica sobre price_total en esta misma lista.

Costo

La opción aparece también en facturas de cliente, donde el campo viene vacío. Es una entrada más en el menú de columnas, no una columna visible: sigue con optional="hide".

Test plan

  • Usuario en purchase.group_purchase_user, sobre una factura y una nota de crédito de proveedor → solapa de líneas → menú de columnas: "Orden de compra" aparece destildada; al tildarla, la columna muestra la OC de cada línea.
  • Sobre una factura de cliente: la opción también aparece; al tildarla, la columna queda vacía.
  • Usuario sin purchase.group_purchase_user: la opción no aparece — el campo se sigue filtrando server-side por groups.

Ticket: https://www.adhoc.inc/odoo/helpdesk.ticket/125399

- Empty column_invisible on the purchase_order_id column of invoice_line_ids
- The list renderer excludes a column from the optional-columns dropdown when
  its column_invisible evaluates truthy, so the option was missing altogether
  instead of just being unticked, and the user had no way to enable it
- The column keeps optional="hide": still off by default, always selectable
  by users in purchase.group_purchase_user

Change note: En las líneas de una factura o nota de crédito de proveedor, la columna "Orden de compra" ahora aparece siempre en el menú de columnas a mostrar (el ícono a la derecha del encabezado de la tabla). Antes, en algunos casos la opción no figuraba en ese menú y no había manera de activar la columna. Sigue oculta por defecto: se activa una vez y queda recordada.
Copilot AI lite review requested due to automatic review settings August 24, 2026 14:35
@roboadhoc

Copy link
Copy Markdown
Contributor

Pull request status dashboard

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Este PR ajusta una herencia de vista en purchase_ux para que la columna opcional “Orden de compra” (purchase_order_id) en las líneas de factura (invoice_line_ids) de account.move esté siempre disponible en el menú de columnas opcionales, eliminando la condición dinámica que la hacía desaparecer del selector.

Changes:

  • Se elimina el atributo column_invisible del campo purchase_order_id dentro del <list> de invoice_line_ids mediante xpath en herencia de vista.
  • Se documenta en la vista el motivo funcional del cambio (limitación del menú de columnas opcionales cuando column_invisible evalúa truthy).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants