47 lines
2.4 KiB
Python
47 lines
2.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
|
from odoo.tests import tagged
|
|
from odoo import fields
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestAccountDebitNote(AccountTestInvoicingCommon):
|
|
|
|
def test_00_debit_note_out_invoice(self):
|
|
""" Debit Note of a regular Customer Invoice"""
|
|
invoice = self.init_invoice('out_invoice', products=self.product_a+self.product_b)
|
|
invoice.action_post()
|
|
move_debit_note_wiz = self.env['account.debit.note'].with_context(active_model="account.move",
|
|
active_ids=invoice.ids).create({
|
|
'date': fields.Date.from_string('2019-02-01'),
|
|
'reason': 'no reason',
|
|
'copy_lines': True,
|
|
})
|
|
move_debit_note_wiz.create_debit()
|
|
|
|
# Search for the original invoice
|
|
debit_note = self.env['account.move'].search([('debit_origin_id', '=', invoice.id)])
|
|
debit_note.ensure_one()
|
|
self.assertEqual(len(debit_note.invoice_line_ids), 2, "Should have copied the invoice lines")
|
|
self.assertEqual(debit_note.move_type, 'out_invoice', 'Type of debit note should be the same as the original invoice')
|
|
self.assertEqual(debit_note.state, 'draft', 'We should create debit notes in draft state')
|
|
|
|
def test_10_debit_note_in_refund(self):
|
|
""" Debit Note of a vendor refund (is a regular vendor bill) """
|
|
invoice = self.init_invoice('in_refund', products=self.product_a+self.product_b)
|
|
invoice.action_post()
|
|
move_debit_note_wiz = self.env['account.debit.note'].with_context(active_model="account.move",
|
|
active_ids=invoice.ids).create({
|
|
'date': fields.Date.from_string('2019-02-01'),
|
|
'reason': 'in order to cancel refund',
|
|
})
|
|
move_debit_note_wiz.create_debit()
|
|
|
|
# Search for the original invoice
|
|
debit_note = self.env['account.move'].search([('debit_origin_id', '=', invoice.id)])
|
|
debit_note.ensure_one()
|
|
|
|
self.assertFalse(debit_note.invoice_line_ids, 'We should not copy lines by default on debit notes')
|
|
self.assertEqual(debit_note.move_type, 'in_invoice', 'Type of debit note should not be refund anymore')
|
|
self.assertEqual(debit_note.state, 'draft', 'We should create debit notes in draft state')
|