On 10 Apr 12:49, Jesús Martín Jiménez wrote:
> 2014-04-10 12:40 GMT+02:00 Jesús Martín Jiménez <[email protected]>:
> 
> >
> >
> >
> > 2014-04-10 12:36 GMT+02:00 Cédric Krier <[email protected]>:
> >
> > On 10 Apr 12:25, Jesús Martín Jiménez wrote:
> >> > 2014-04-10 11:58 GMT+02:00 Cédric Krier <[email protected]>:
> >> >
> >> > > On 09 Apr 05:29, jmartin wrote:
> >> > > > Hi,
> >> > > >
> >> > > > I'm trying to add a domain in the product field os sale.line that is
> >> > > filled
> >> > > > from the sale.sale form view, in order to avoid make sales of some
> >> > > products
> >> > > > grouped by their categories to some parties. This is the code:
> >> > > >
> >> > > > class SaleLine:
> >> > > >     __name__ = 'sale.line'
> >> > > >     product_domain = fields.Function(fields.One2Many(
> >> > > >             'product.product', None, 'Product Category Domain',
> >> > > >             on_change_with=['_parent_sale.party', 'product'],
> >> > >                    # Fixed
> >> > > >
> >> > > depends=['_parent_sale.party']),
> >> > > # Fixed
> >> > > >         'on_change_with_product_domain')
> >> > > >
> >> > > >     @classmethod
> >> > > >     def __setup__(cls):
> >> > > >         super(SaleLine, cls).__setup__()
> >> > > >         product_domain = ('id', 'not in', Eval('product_domain',
> >> []))
> >> > > >         if product_domain not in cls.product.domain:
> >> > > >             cls.product.domain.append(product_domain)
> >> > > >
> >> > > >     def on_change_with_product_domain(self, name=None):
> >> > > >         pool = Pool()
> >> > > >         ProductCategory = pool.get('party.party-product.category')
> >> > > >         Template = pool.get('product.template')
> >> > > >         party = self.sale.party
> >> > > >         product_categories = ProductCategory.search([('party', '=',
> >> > > party)])
> >> > > >         products = []
> >> > > >         for product_category in product_categories:
> >> > > >             templates = Template.search([
> >> > > >                     ('category', '=', product_category.category)])
> >> > > >             for template in templates:
> >> > > >                 for product in template.products:
> >> > > >                     products.append(product.id)
> >> > > >         return products
> >> > > >
> >> > > > * In other file there is defined the m2m record that relates party
> >> with
> >> > > > product.category
> >> > > >
> >> > > > The module avoids that a product will be sold to the customer if the
> >> > > > product belongs to any of the categories listed for this customer.
> >> But it
> >> > > > does this in a strange way. I can select all products of the list
> >> in the
> >> > > > sale.line record, and when I'm going to save the sale.sale record,
> >> tryton
> >> > > > says me that the field product of sale.line is not correct
> >> accordingly
> >> > > with
> >> > > > its domain. I would like that products which I can not sell to the
> >> > > > customer, will be excluded from those I can select, but how can I do
> >> > > that?
> >> > >
> >> > > So I guess the product_domain is not correctly filled by the
> >> on_change.
> >> > > You should check the value of this field in the UI.
> >>
> >
> The field is empty until I save the record with a correct product, in which
> case, it puts the correct value.

So it seems the on_change_with is not correctly defined because it is
not called.

-- 
Cédric Krier - B2CK SPRL
Email/Jabber: [email protected]
Tel: +32 472 54 46 59
Website: http://www.b2ck.com/

Attachment: pgpFJjY1iKkUy.pgp
Description: PGP signature

Reply via email to