A Diumenge, 4 de març de 2012 03:49:24, [email protected] va escriure:
> Reviewers: ,
>
>
>
> Please review this at http://codereview.tryton.org/266002/
>
> Affected files:
> M trytond/model/modelsql.py
> M trytond/model/modelstorage.py
> M trytond/tests/test_tryton.py
I have a couple of questions that I'd like to ask before adding the changes to
this patch:
- In the sale module, the code for creating an invoice uses the ActiveRecord
pattern and ends up with a list of SaleLine instances. Current code uses a
loop over those objects and calls .save() on each of them. This is can be
improved with the new create() but I thought that the following would work and
it didn't:
invoice = self._get_invoice_sale(invoice_type)
+ invoice.lines = invoice_lines
invoice.save()
I thought this would be similar to the non-ActiveRecord pattern and would be
equivalent to [('create', invoice_line_values)] but it is not. So what I did
is the following (using ._save_values property):
+ to_create = []
for line in self.lines:
if line.id not in invoice_lines:
continue
for invoice_line in invoice_lines[line.id]:
invoice_line.invoice = invoice.id
- invoice_line.save()
- SaleLine.write([line], {
- 'invoice_lines': [('add', [invoice_line.id])],
- })
+ to_create.append(invoice_line._save_values)
+ if to_create:
+ InvoiceLine.create(to_create)
Is that Ok?
--
Albert Cervera i Areny
http://www.NaN-tic.com
Tel: +34 93 553 18 03
http://twitter.com/albertnan
http://www.nan-tic.com/blog
--
--
[email protected] mailing list