Reviewers: ,


Please review this at http://codereview.tryton.org/867002/

Affected files:
  M trytond/modules/account/move.py
  M trytond/modules/account_invoice/invoice.py
  M trytond/modules/account_invoice/tests/scenario_invoice.rst


Index: trytond/modules/account/move.py
===================================================================

--- a/trytond/modules/account/move.py
+++ b/trytond/modules/account/move.py
@@ -391,6 +391,7 @@
         pool = Pool()
         Sequence = pool.get('ir.sequence')
         Date = pool.get('ir.date')
+        Line = pool.get('account.move.line')

         for move in moves:
             amount = Decimal('0.0')
@@ -413,6 +414,11 @@
                     move.period.post_move_sequence_used.id)
             cls.write([move], values)

+            if len(move.lines) == 1:
+                line, = move.lines
+                if line.debit == line.credit == Decimal('0'):
+                    Line.reconcile([line])
+
     @classmethod
     @ModelView.button
     def draft(cls, moves):

Index: trytond/modules/account_invoice/invoice.py
===================================================================

--- a/trytond/modules/account_invoice/invoice.py
+++ b/trytond/modules/account_invoice/invoice.py
@@ -1287,10 +1287,10 @@
         for invoice in invoices:
             invoice.set_number()
             moves.append(invoice.create_move())
-        Move.post(moves)
         cls.write(invoices, {
                 'state': 'posted',
                 })
+        Move.post(moves)
         for invoice in invoices:
             if invoice.type in ('out_invoice', 'out_credit_note'):
                 invoice.print_invoice()

Index: trytond/modules/account_invoice/tests/scenario_invoice.rst
===================================================================

--- a/trytond/modules/account_invoice/tests/scenario_invoice.rst
+++ b/trytond/modules/account_invoice/tests/scenario_invoice.rst
@@ -266,3 +266,14 @@
     >>> credit_note_tax_code.reload()
     >>> credit_note_tax_code.sum == Decimal(20)
     True
+
+Create empty invoice::
+
+    >>> invoice = Invoice()
+    >>> invoice.party = party
+    >>> invoice.payment_term = payment_term
+    >>> invoice.save()
+    >>> Invoice.post([invoice.id], config.context)
+    >>> invoice.reload()
+    >>> invoice.state
+    u'paid'



Reply via email to