Version Axelor Version: 5.0.20
Je souhaite filtrer la liste des articles selon la société par défaut de l’utilisateur.
Pas de problème pour la liste des articles, le « domain » se filtre correctement :
<action-view id="actium.sc.root.sale.products" name="sc.root.sale.products" model="com.axelor.apps.base.db.Product" title="Products & services">
<view name="product-cards" type="cards"/>
<view name="product-grid" type="grid"/>
<view name="product-form" type="form"/>
<view-param name="search-filters" value="products-filters"/>
<domain>self.isModel = false AND self.sellable = true AND self.isShippingCostsProduct = false AND (self.isPrototype = false
AND ((:_myActiveCompany ='XXX' AND NOT self.code LIKE 'FI-%') OR (:_myActiveCompany ='YYY' AND self.code LIKE 'FI-%'))
OR not :_myActiveGroup='CIAL') </domain>
<context name="_myActiveCompany" expr="eval: __user__.activeCompany.code"/>
<context name="_myActiveGroup" expr="eval: __user__.group.code"/>
par contre, dans la liste des articles lors de la saisie d’un document, la variable user contient l’id et non pas l’objet user, je n’arrive pas à créer le bon « domain ». Code actuel, ne fonctionnant pas :
<action-attrs id="actium-action-sale-order-line-attrs-domain-product" name="action-sale-order-line-attrs-domain-product">
<attribute name="domain" expr="eval: " self.isModel = false and (self.endDate = null or self.endDate > :__date__)
and self.sellable = true
and (self.isPrototype = false or :__user__=1 or :__user__=9 or :__user__=66)
AND
(
(${__repo__(User).all().filter('User.id = :__user__').fetch.activeCompany.code} = 'XXX' AND NOT self.code LIKE 'FI-%')
OR
(${__repo__(User).all().filter('User.id = :__user__').fetch.activeCompany.code} = 'YYY' AND self.code LIKE 'FI-%')
)
"" for="product"/>
</action-attrs>
j’ai toujours l’ensemble des articles.
merci pour votre aide.
Bonne journée