2022-09-07 09:36:37 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# This file is part of the cashbook-module from m-ds for Tryton.
|
|
|
|
# The COPYRIGHT file at the top level of this repository contains the
|
|
|
|
# full copyright notices and license terms.
|
|
|
|
|
2023-06-02 19:08:56 +00:00
|
|
|
from trytond.tests.test_tryton import with_transaction
|
2022-09-07 09:36:37 +00:00
|
|
|
from trytond.pool import Pool
|
|
|
|
from trytond.transaction import Transaction
|
|
|
|
from datetime import date
|
|
|
|
from decimal import Decimal
|
|
|
|
from unittest.mock import MagicMock
|
|
|
|
|
|
|
|
|
2023-06-02 19:08:56 +00:00
|
|
|
class BookingWizardTestCase(object):
|
|
|
|
""" test booking wizard
|
|
|
|
"""
|
2022-09-07 09:36:37 +00:00
|
|
|
@with_transaction()
|
|
|
|
def test_bookwiz_expense(self):
|
|
|
|
""" run booking-wizard to store expense
|
|
|
|
"""
|
|
|
|
pool = Pool()
|
|
|
|
BookingWiz = pool.get('cashbook.enterbooking', type='wizard')
|
|
|
|
Book = pool.get('cashbook.book')
|
|
|
|
Category = pool.get('cashbook.category')
|
|
|
|
Party = pool.get('party.party')
|
|
|
|
IrDate = pool.get('ir.date')
|
2024-06-01 09:13:47 +00:00
|
|
|
Config = pool.get('cashbook.configuration')
|
2022-09-07 09:36:37 +00:00
|
|
|
|
|
|
|
company = self.prep_company()
|
|
|
|
with Transaction().set_context({
|
2023-06-02 18:40:12 +00:00
|
|
|
'company': company.id}):
|
2022-09-07 09:36:37 +00:00
|
|
|
types = self.prep_type()
|
|
|
|
book, = Book.create([{
|
|
|
|
'name': 'Cash Book',
|
|
|
|
'btype': types.id,
|
|
|
|
'company': company.id,
|
|
|
|
'currency': company.currency.id,
|
|
|
|
'number_sequ': self.prep_sequence().id,
|
|
|
|
'start_date': date(2022, 1, 1),
|
|
|
|
}])
|
|
|
|
|
|
|
|
party, = Party.create([{
|
|
|
|
'name': 'Foodshop Zehlendorf',
|
2023-06-02 18:40:12 +00:00
|
|
|
'addresses': [('create', [{}])],
|
2022-09-07 09:36:37 +00:00
|
|
|
}])
|
|
|
|
|
|
|
|
categories = Category.create([{
|
2023-06-02 18:40:12 +00:00
|
|
|
'name': 'Income',
|
2022-09-07 09:36:37 +00:00
|
|
|
'cattype': 'in',
|
|
|
|
}, {
|
|
|
|
'name': 'Food',
|
|
|
|
'cattype': 'out',
|
|
|
|
}])
|
|
|
|
|
2024-06-01 09:13:47 +00:00
|
|
|
cfg1 = Config()
|
|
|
|
cfg1.fixate = True
|
|
|
|
cfg1.save()
|
|
|
|
|
2022-09-07 09:36:37 +00:00
|
|
|
(sess_id, start_state, end_state) = BookingWiz.create()
|
|
|
|
w_obj = BookingWiz(sess_id)
|
|
|
|
self.assertEqual(start_state, 'start')
|
|
|
|
self.assertEqual(end_state, 'end')
|
|
|
|
|
|
|
|
result = BookingWiz.execute(sess_id, {}, start_state)
|
|
|
|
self.assertEqual(list(result.keys()), ['view'])
|
|
|
|
self.assertEqual(result['view']['defaults']['bookingtype'], 'out')
|
|
|
|
self.assertEqual(result['view']['defaults']['cashbook'], None)
|
|
|
|
self.assertEqual(result['view']['defaults']['amount'], None)
|
|
|
|
self.assertEqual(result['view']['defaults']['party'], None)
|
|
|
|
self.assertEqual(result['view']['defaults']['booktransf'], None)
|
|
|
|
self.assertEqual(result['view']['defaults']['description'], None)
|
|
|
|
self.assertEqual(result['view']['defaults']['category'], None)
|
2024-06-01 09:13:47 +00:00
|
|
|
self.assertEqual(result['view']['defaults']['fixate'], True)
|
2022-09-07 09:36:37 +00:00
|
|
|
|
|
|
|
self.assertEqual(len(book.lines), 0)
|
|
|
|
|
|
|
|
r1 = {
|
|
|
|
'amount': Decimal('10.0'),
|
|
|
|
'cashbook': book.id,
|
|
|
|
'party': party.id,
|
|
|
|
'description': 'Test 1',
|
|
|
|
'category': categories[1].id,
|
|
|
|
'bookingtype': 'out',
|
2024-05-30 10:44:11 +00:00
|
|
|
'fixate': True}
|
2022-09-07 09:36:37 +00:00
|
|
|
for x in r1.keys():
|
|
|
|
setattr(w_obj.start, x, r1[x])
|
|
|
|
|
|
|
|
IrDate.today = MagicMock(return_value=date(2022, 5, 1))
|
|
|
|
result = BookingWiz.execute(sess_id, {'start': r1}, 'save_')
|
|
|
|
BookingWiz.delete(sess_id)
|
|
|
|
IrDate.today = MagicMock(return_value=date.today())
|
|
|
|
|
|
|
|
self.assertEqual(len(book.lines), 1)
|
2023-06-02 18:40:12 +00:00
|
|
|
self.assertEqual(
|
|
|
|
book.lines[0].rec_name,
|
|
|
|
'05/01/2022|Exp|-10.00 usd|Test 1 [Food]')
|
2024-05-30 10:44:11 +00:00
|
|
|
self.assertEqual(book.lines[0].state, 'check')
|
2022-09-07 09:36:37 +00:00
|
|
|
|
|
|
|
@with_transaction()
|
|
|
|
def test_bookwiz_transfer(self):
|
|
|
|
""" run booking-wizard to store expense
|
|
|
|
"""
|
|
|
|
pool = Pool()
|
|
|
|
BookingWiz = pool.get('cashbook.enterbooking', type='wizard')
|
|
|
|
Book = pool.get('cashbook.book')
|
|
|
|
Category = pool.get('cashbook.category')
|
|
|
|
Party = pool.get('party.party')
|
|
|
|
IrDate = pool.get('ir.date')
|
|
|
|
|
|
|
|
company = self.prep_company()
|
|
|
|
with Transaction().set_context({
|
2023-06-02 18:40:12 +00:00
|
|
|
'company': company.id}):
|
2022-09-07 09:36:37 +00:00
|
|
|
types = self.prep_type()
|
|
|
|
books = Book.create([{
|
|
|
|
'name': 'Cash Book',
|
|
|
|
'btype': types.id,
|
|
|
|
'company': company.id,
|
|
|
|
'currency': company.currency.id,
|
|
|
|
'number_sequ': self.prep_sequence().id,
|
|
|
|
'start_date': date(2022, 1, 1),
|
|
|
|
}, {
|
|
|
|
'name': 'Bank',
|
|
|
|
'btype': types.id,
|
|
|
|
'company': company.id,
|
|
|
|
'currency': company.currency.id,
|
|
|
|
'number_sequ': self.prep_sequence().id,
|
|
|
|
'start_date': date(2022, 1, 1),
|
|
|
|
}])
|
|
|
|
|
|
|
|
party, = Party.create([{
|
|
|
|
'name': 'Foodshop Zehlendorf',
|
2023-06-02 18:40:12 +00:00
|
|
|
'addresses': [('create', [{}])],
|
2022-09-07 09:36:37 +00:00
|
|
|
}])
|
|
|
|
|
2023-06-02 18:40:12 +00:00
|
|
|
Category.create([{
|
|
|
|
'name': 'Income',
|
2022-09-07 09:36:37 +00:00
|
|
|
'cattype': 'in',
|
|
|
|
}, {
|
|
|
|
'name': 'Food',
|
|
|
|
'cattype': 'out',
|
|
|
|
}])
|
|
|
|
|
|
|
|
(sess_id, start_state, end_state) = BookingWiz.create()
|
|
|
|
w_obj = BookingWiz(sess_id)
|
|
|
|
self.assertEqual(start_state, 'start')
|
|
|
|
self.assertEqual(end_state, 'end')
|
|
|
|
|
|
|
|
result = BookingWiz.execute(sess_id, {}, start_state)
|
|
|
|
self.assertEqual(list(result.keys()), ['view'])
|
|
|
|
self.assertEqual(result['view']['defaults']['bookingtype'], 'out')
|
|
|
|
self.assertEqual(result['view']['defaults']['cashbook'], None)
|
|
|
|
self.assertEqual(result['view']['defaults']['amount'], None)
|
|
|
|
self.assertEqual(result['view']['defaults']['party'], None)
|
|
|
|
self.assertEqual(result['view']['defaults']['booktransf'], None)
|
|
|
|
self.assertEqual(result['view']['defaults']['description'], None)
|
|
|
|
self.assertEqual(result['view']['defaults']['category'], None)
|
2024-05-30 10:44:11 +00:00
|
|
|
self.assertEqual(result['view']['defaults']['fixate'], False)
|
2022-09-07 09:36:37 +00:00
|
|
|
|
|
|
|
self.assertEqual(len(books[0].lines), 0)
|
|
|
|
self.assertEqual(len(books[1].lines), 0)
|
|
|
|
|
|
|
|
r1 = {
|
|
|
|
'amount': Decimal('10.0'),
|
|
|
|
'cashbook': books[0].id,
|
|
|
|
'description': 'Test 1',
|
|
|
|
'booktransf': books[1].id,
|
|
|
|
'bookingtype': 'mvout',
|
2024-05-30 10:44:11 +00:00
|
|
|
'fixate': False}
|
2022-09-07 09:36:37 +00:00
|
|
|
for x in r1.keys():
|
|
|
|
setattr(w_obj.start, x, r1[x])
|
|
|
|
|
|
|
|
IrDate.today = MagicMock(return_value=date(2022, 5, 1))
|
|
|
|
result = BookingWiz.execute(sess_id, {'start': r1}, 'save_')
|
|
|
|
BookingWiz.delete(sess_id)
|
|
|
|
IrDate.today = MagicMock(return_value=date.today())
|
|
|
|
|
|
|
|
self.assertEqual(len(books[0].lines), 1)
|
|
|
|
self.assertEqual(len(books[1].lines), 0)
|
2023-06-02 18:40:12 +00:00
|
|
|
self.assertEqual(
|
|
|
|
books[0].lines[0].rec_name,
|
2022-09-07 09:36:37 +00:00
|
|
|
'05/01/2022|to|-10.00 usd|Test 1 [Bank | 0.00 usd | Open]')
|
|
|
|
|
|
|
|
# end BookingWizardTestCase
|