mirror of
https://github.com/OCA/account-reconcile.git
synced 2025-01-20 12:27:39 +02:00
108 lines
3.3 KiB
Python
108 lines
3.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Author: Guewen Baconnier
|
|
# © 2014-2016 Camptocamp SA
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
|
|
from openerp.tests.common import TransactionCase
|
|
|
|
|
|
class AccountOperationTestCase(TransactionCase):
|
|
|
|
def setUp(self):
|
|
super(AccountOperationTestCase, self).setUp()
|
|
self.cash_journal = self.env['account.journal'].create({
|
|
'name': 'Unittest Cash journal',
|
|
'code': 'CASH',
|
|
'type': 'cash',
|
|
})
|
|
|
|
self.sale_journal = self.env['account.journal'].create({
|
|
'name': 'Unittest Customer Invoices',
|
|
'code': 'INV',
|
|
'type': 'sale',
|
|
})
|
|
|
|
receivable_type = self.env['account.account.type'].create({
|
|
'name': 'Receivable',
|
|
'type': 'receivable'
|
|
})
|
|
|
|
self.account_receivable = self.env['account.account'].create({
|
|
'name': 'Unittest Account Receivable',
|
|
'user_type_id': receivable_type.id,
|
|
'code': 'TEST101200',
|
|
'reconcile': True,
|
|
})
|
|
|
|
income_type = self.env['account.account.type'].create({
|
|
'name': 'Unittest Income',
|
|
'type': 'other'
|
|
})
|
|
|
|
self.account_sale = self.env['account.account'].create({
|
|
'name': 'Unittest Account Sale',
|
|
'user_type_id': income_type.id,
|
|
'code': 'TEST200000',
|
|
'reconcile': False,
|
|
})
|
|
|
|
def prepare_statement(self, difference,
|
|
statement_line_currency=None,
|
|
move_line_currency=None,
|
|
amount_currency_difference=0):
|
|
""" Prepare a bank statement line and a move line
|
|
|
|
The difference is applied on the bank statement line relatively to
|
|
the move line.
|
|
"""
|
|
|
|
amount = 100
|
|
amount_currency = 120
|
|
|
|
statement = self.env['account.bank.statement'].create({
|
|
'name': '/',
|
|
'journal_id': self.cash_journal.id
|
|
})
|
|
line_vals = {
|
|
'name': '001',
|
|
'amount': amount + difference,
|
|
'statement_id': statement.id,
|
|
}
|
|
if statement_line_currency:
|
|
line_vals.update({
|
|
'currency_id': statement_line_currency.id,
|
|
'amount_currency':
|
|
amount_currency + amount_currency_difference,
|
|
})
|
|
|
|
statement_line = self.env['account.bank.statement.line'].create(
|
|
line_vals
|
|
)
|
|
debit_line_vals = {
|
|
'name': '001',
|
|
'account_id': self.account_receivable.id,
|
|
'debit': amount,
|
|
}
|
|
if move_line_currency:
|
|
debit_line_vals.update({
|
|
'currency_id': move_line_currency.id,
|
|
'amount_currency': amount_currency,
|
|
})
|
|
|
|
credit_line_vals = {
|
|
'name': '001',
|
|
'account_id': self.account_sale.id,
|
|
'credit': amount,
|
|
}
|
|
if move_line_currency:
|
|
credit_line_vals['currency_id'] = move_line_currency.id
|
|
|
|
move = self.env['account.move'].create({
|
|
'journal_id': self.sale_journal.id,
|
|
'line_ids': [(0, 0, debit_line_vals), (0, 0, credit_line_vals)],
|
|
})
|
|
|
|
return statement_line, move.line_ids.filtered(
|
|
lambda l: l.debit != 0.0
|
|
)
|