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



Reply via email to