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'