mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
121 lines
5.7 KiB
Python
121 lines
5.7 KiB
Python
from odoo import fields
|
|
from odoo.exceptions import UserError
|
|
from odoo.tests import tagged, Form
|
|
from odoo.addons.account.tests.account_test_users import AccountTestUsers
|
|
|
|
|
|
class InvoiceChangeCommon(AccountTestUsers):
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.account_invoice_obj = self.env['account.move']
|
|
self.payment_term = self.env.ref('account.account_payment_term_advance')
|
|
self.journalrec = self.env['account.journal'].search([('type', '=', 'sale')])[0]
|
|
self.partner3 = self.env.ref('base.res_partner_3')
|
|
self.invoice_basic = self.account_invoice_obj.with_user(self.account_user).create({
|
|
'type': 'out_invoice',
|
|
'name': "Test Customer Invoice",
|
|
'invoice_payment_term_id': self.payment_term.id,
|
|
'journal_id': self.journalrec.id,
|
|
'partner_id': self.partner3.id,
|
|
# account_id=self.account_rec1_id.id,
|
|
'invoice_line_ids': [(0, 0, {
|
|
'product_id': self.env.ref('product.product_product_5').id,
|
|
'quantity': 10.0,
|
|
'account_id': self.env['account.account'].search(
|
|
[('user_type_id', '=', self.env.ref('account.data_account_type_revenue').id)], limit=1).id,
|
|
'name': 'product test 5',
|
|
'price_unit': 100.00,
|
|
})],
|
|
})
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestInvoiceChange(InvoiceChangeCommon):
|
|
def test_invoice_change_basic(self):
|
|
self.assertEqual(self.invoice_basic.state, 'draft')
|
|
self.invoice_basic.action_post()
|
|
self.assertEqual(self.invoice_basic.state, 'posted')
|
|
self.assertEqual(self.invoice_basic.date, fields.Date.today())
|
|
self.assertEqual(self.invoice_basic.invoice_date, fields.Date.today())
|
|
self.assertEqual(self.invoice_basic.invoice_user_id, self.account_user)
|
|
self.assertEqual(self.invoice_basic.line_ids[0].date, fields.Date.today())
|
|
|
|
ctx = {'active_model': 'account.move', 'active_ids': [self.invoice_basic.id]}
|
|
change = self.env['account.invoice.change'].with_context(ctx).create({})
|
|
self.assertEqual(change.date, self.invoice_basic.date)
|
|
self.assertEqual(change.invoice_date, self.invoice_basic.invoice_date)
|
|
self.assertEqual(change.invoice_user_id, self.invoice_basic.invoice_user_id)
|
|
|
|
change_date = '2018-01-01'
|
|
change_invoice_date = '2019-01-01'
|
|
change_user = self.env.user
|
|
change.write({'invoice_user_id': change_user.id, 'date': change_date, 'invoice_date': change_invoice_date})
|
|
|
|
change.affect_change()
|
|
self.assertEqual(str(self.invoice_basic.date), change_date)
|
|
self.assertEqual(str(self.invoice_basic.invoice_date), change_invoice_date)
|
|
self.assertEqual(self.invoice_basic.invoice_user_id, change_user)
|
|
self.assertEqual(str(self.invoice_basic.line_ids[0].date), change_date)
|
|
|
|
def _create_journal_entry(self):
|
|
revenue_account = self.env['account.account'].search([
|
|
('company_id', '=', self.main_company.id),
|
|
('user_type_id', '=', self.env.ref('account.data_account_type_revenue').id)
|
|
], limit=1)
|
|
expense_account = self.env['account.account'].search([
|
|
('company_id', '=', self.main_company.id),
|
|
('user_type_id', '=', self.env.ref('account.data_account_type_expenses').id)
|
|
], limit=1)
|
|
return self.env['account.move'].create({
|
|
'type': 'entry',
|
|
'date': '2019-01-01',
|
|
'line_ids': [
|
|
(0, 0, {
|
|
'name': 'line_debit',
|
|
'account_id': revenue_account.id,
|
|
}),
|
|
(0, 0, {
|
|
'name': 'line_credit',
|
|
'account_id': expense_account.id,
|
|
}),
|
|
],
|
|
})
|
|
|
|
def test_invoice_change_multiple(self):
|
|
journal_entry = self._create_journal_entry()
|
|
ctx = {'active_model': 'account.move', 'active_ids': [self.invoice_basic.id, journal_entry.id]}
|
|
with self.assertRaises(UserError):
|
|
change = Form(self.env['account.invoice.change'].with_context(ctx))
|
|
|
|
other_invoice = self.invoice_basic.copy()
|
|
ctx = {'active_model': 'account.move', 'active_ids': [self.invoice_basic.id, other_invoice.id]}
|
|
with self.assertRaises(UserError):
|
|
change = Form(self.env['account.invoice.change'].with_context(ctx))
|
|
|
|
self.invoice_basic.action_post()
|
|
other_invoice.action_post()
|
|
change = Form(self.env['account.invoice.change'].with_context(ctx))
|
|
self.assertFalse(change.date)
|
|
self.assertFalse(change.invoice_date)
|
|
self.assertFalse(change.invoice_user_id)
|
|
|
|
change_date = '2018-01-01'
|
|
change_invoice_date = '2019-01-01'
|
|
change_user = self.env.user
|
|
change.set_invoice_user_id = True
|
|
change.set_date = True
|
|
change.set_invoice_date = True
|
|
change.invoice_user_id = change_user
|
|
change.date = change_date
|
|
change.invoice_date = change_invoice_date
|
|
|
|
change.save().affect_change()
|
|
self.assertEqual(str(self.invoice_basic.date), change_date)
|
|
self.assertEqual(str(self.invoice_basic.invoice_date), change_invoice_date)
|
|
self.assertEqual(self.invoice_basic.invoice_user_id, change_user)
|
|
self.assertEqual(str(self.invoice_basic.line_ids[0].date), change_date)
|
|
self.assertEqual(str(other_invoice.date), change_date)
|
|
self.assertEqual(str(other_invoice.invoice_date), change_invoice_date)
|
|
self.assertEqual(other_invoice.invoice_user_id, change_user)
|
|
self.assertEqual(str(other_invoice.line_ids[0].date), change_date)
|