Plusieurs modèles dans une vue liste

Bonjour,
Est-il possible de créer une vue liste reprenant les champs de deux modèles différents ?

Merci d’avance

Bonjour @csch,

Oui, il est possible de créer une vue liste qui reprend des champs de deux modèles différents, à condition que ces modèles soient liés par une relation <many-to-one>.
Pour ce faire, vous pouvez référencer les champs des modèles en utilisant la notation pointée.
Par exemple, dans le modèle com.axelor.apps.sale.db.SaleOrderLineTax, il existe une référence au modèle SaleOrder :

<many-to-one name="saleOrder" ref="SaleOrder" title="Sale order"/>

À son tour, le modèle SaleOrder contient une référence au modèle Currency :

<many-to-one name="currency" ref="com.axelor.apps.base.db.Currency" title="Currency"/>

Ainsi, à partir de la vue grid sale-order-line-tax-grid, vous pouvez accéder aux champs du modèle Currency de la manière suivante :

<field name="saleOrder.currency.numberOfDecimals" hidden="true"/>

Voici la grille complète :

<grid name="sale-order-line-tax-grid" title="SO Tax lines" model="com.axelor.apps.sale.db.SaleOrderLineTax">
<field name="taxLine" width="400%" form-view="tax-line-form" grid-view="tax-line-grid"/>
<field name="saleOrder" hidden="true"/>
<field name="saleOrder.currency" hidden="true"/>
<field name="saleOrder.currency.numberOfDecimals" hidden="true"/>
<field name="exTaxBase" x-scale="saleOrder.currency.numberOfDecimals"/>
<field name="taxTotal" aggregate="sum" x-scale="saleOrder.currency.numberOfDecimals"/>
</grid>

En utilisant ce type de référence, vous pouvez afficher et utiliser des champs provenant de différents modèles dans une même vue liste.

Cordialement,

2 « J'aime »