add test for non-asset usd/eur,

todo test for asset-usd
This commit is contained in:
Frederik Jaeckel 2024-03-04 22:36:50 +01:00
parent ce0b9ff946
commit 9c40e8990a
2 changed files with 168 additions and 3 deletions

View file

@ -513,17 +513,29 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView):
elif record.bookingtype in ['mvin', 'mvout']:
if record.booktransf:
line['booktransf'] = record.booktransf.id
if record.booktransf.feature == 'asset':
# add 2nd currency if currencies are different
line = Line.add_2nd_currency(
line, record.booktransf.currency)
print('-- line-1:', line)
if record.booktransf.current_rate:
line['quantity'] = (line.get(
'amount_2nd_currency', record.amount) /
record.booktransf.asset.rate)
print('-- line-2:', line)
if record.wfcheck:
to_create_check.append(line)
else:
to_create.append(line)
if to_create_check:
print('-- to_create_check:', to_create_check)
lines = Line.create(to_create_check)
Line.wfcheck(lines)
if to_create:
print('-- to_create:', to_create)
Line.create(to_create)
@classmethod

View file

@ -36,7 +36,9 @@ class PlannerTestCase(object):
'number_sequ': self.prep_sequence().id,
'start_date': date(2022, 5, 1),
}])
self.assertEqual(book.rec_name, 'Book 1 | 0.00 usd | Open')
self.assertEqual(
book.rec_name,
'Book 1 | 0.00 %s | Open' % company.currency.symbol)
category = self.prep_category()
party, = Party.create([{
@ -71,10 +73,12 @@ class PlannerTestCase(object):
pool = Pool()
Asset = pool.get('investment.asset')
Book = pool.get('cashbook.book')
BType = pool.get('cashbook.type')
company = self.prep_company()
with Transaction().set_context({'company': company.id}):
type_depot = self.prep_type('Depot', 'D')
BType.write(*[[type_depot], {'feature': 'asset'}])
asset = self.prep_asset_item(
company=company,
@ -107,7 +111,9 @@ class PlannerTestCase(object):
'quantity_uom': asset.uom.id,
}])
self.prep_valstore_run_worker()
self.assertEqual(book.rec_name, 'ww')
self.assertEqual(
book.rec_name,
'Depot | 0.00 usd | Open | 0.0000 u')
return book
@with_transaction()
@ -393,7 +399,7 @@ class PlannerTestCase(object):
IrDate.today = MagicMock(return_value=date.today())
@with_transaction()
def test_planner_cronjobs_booking_transfer_nonasset_eur(self):
def test_planner_cronjobs_booking_transfer_nonasset(self):
""" create job, configure transfer-booking to non-asset-cashbook,
run job
"""
@ -463,4 +469,151 @@ class PlannerTestCase(object):
IrDate.today = MagicMock(return_value=date.today())
@with_transaction()
def test_planner_cronjobs_booking_transfer_nonasset_usd_eur(self):
""" create job, configure transfer-booking to non-asset-cashbook,
from usd to eur, run job
"""
pool = Pool()
Planner = pool.get('cashbook.planner')
IrDate = pool.get('ir.date')
Category = pool.get('cashbook.category')
Cashbook = pool.get('cashbook.book')
company = self.prep_company()
with Transaction().set_context({'company': company.id}):
(usd, euro) = self.prep_2nd_currency(company)
self.assertEqual(len(usd.rates), 1)
self.assertEqual(usd.rates[0].rate, Decimal('1.05'))
self.assertEqual(usd.rates[0].date, date(2022, 5, 2))
self.assertEqual(euro.rates[0].rate, Decimal('1.0'))
self.assertEqual(euro.rates[0].date, date(2022, 5, 2))
self.assertEqual(company.currency.rec_name, 'Euro')
job = self.prep_create_job()
target_book, = Cashbook.create([{
'name': 'Book 2',
'btype': job.cashbook.btype.id,
'company': company.id,
'currency': usd.id,
'number_sequ': self.prep_sequence().id,
'start_date': date(2022, 5, 1)}])
self.assertEqual(target_book.rec_name, 'Book 2 | 0.00 usd | Open')
self.assertEqual(len(target_book.lines), 0)
IrDate.today = MagicMock(return_value=date(2022, 5, 24))
category, = Category.search([('name', '=', 'Cat1')])
Planner.write(*[
[job],
{
'name': 'Transfer to Book-2',
'amount': Decimal('10.0'),
'bookingtype': 'mvout',
'category': category.id,
'subject': 'booking 10 € --> 10.5 usd',
'booktransf': target_book.id,
'wfcheck': True}])
self.assertEqual(job.rec_name, 'Transfer to Book-2')
self.assertEqual(job.cashbook.rec_name, 'Book 1 | 0.00 € | Open')
self.assertEqual(job.booktransf.rec_name, 'Book 2 | 0.00 usd | Open')
self.assertEqual(len(job.cashbook.lines), 0)
job, = Planner.search([])
self.assertEqual(job.nextrun[0].date, date(2022, 6, 1))
IrDate.today = MagicMock(return_value=date(2022, 6, 1))
Planner.cronjob()
self.assertEqual(job.nextrun[0].date, date(2022, 7, 1))
# check both cashbooks
with Transaction().set_context({'date': date(2022, 6, 1)}):
cashbook, = Cashbook.browse([job.cashbook])
self.assertEqual(cashbook.rec_name, 'Book 1 | -10.00 € | Open')
self.assertEqual(len(cashbook.lines), 1)
self.assertEqual(
cashbook.lines[0].rec_name,
"06/01/2022|to|-10.00 €|booking 10 € --> 10.5 usd" +
" [Book 2 | 10.50 usd | Open]")
self.assertEqual(cashbook.lines[0].state, 'check')
target_book, = Cashbook.browse([job.booktransf])
self.assertEqual(target_book.rec_name, 'Book 2 | 10.50 usd | Open')
self.assertEqual(len(target_book.lines), 1)
self.assertEqual(
target_book.lines[0].rec_name,
"06/01/2022|from|10.50 usd|booking 10 € --> 10.5 usd" +
" [Book 1 | -10.00 € | Open]")
self.assertEqual(target_book.lines[0].state, 'check')
self.assertEqual(target_book.lines[0].state, 'check')
IrDate.today = MagicMock(return_value=date.today())
@with_transaction()
def test_planner_cronjobs_booking_transfer_asset(self):
""" create job, configure transfer-booking to asset-cashbook,
"""
pool = Pool()
Planner = pool.get('cashbook.planner')
IrDate = pool.get('ir.date')
Category = pool.get('cashbook.category')
Cashbook = pool.get('cashbook.book')
company = self.prep_company()
with Transaction().set_context({'company': company.id}):
job = self.prep_create_job()
asset_book = self.prep_planner_asset_book()
self.assertEqual(
asset_book.rec_name,
'Depot | 0.00 usd | Open | 0.0000 u')
self.assertEqual(len(asset_book.lines), 0)
IrDate.today = MagicMock(return_value=date(2022, 5, 24))
category, = Category.search([('name', '=', 'Cat1')])
Planner.write(*[
[job],
{
'name': 'Transfer to Book-2',
'amount': Decimal('10.0'),
'bookingtype': 'mvout',
'category': category.id,
'subject': 'booking 10 usd --> 10.5 usd',
'booktransf': asset_book.id,
'wfcheck': True}])
self.assertEqual(job.rec_name, 'Transfer to Book-2')
self.assertEqual(job.cashbook.rec_name, 'Book 1 | 0.00 usd | Open')
self.assertEqual(
job.booktransf.rec_name,
'Depot | 0.00 usd | Open | 0.0000 u')
self.assertEqual(len(job.cashbook.lines), 0)
# check both cashbooks
with Transaction().set_context({'date': date(2022, 6, 1)}):
job, = Planner.search([])
self.assertEqual(job.nextrun[0].date, date(2022, 6, 1))
IrDate.today = MagicMock(return_value=date(2022, 6, 1))
Planner.cronjob()
self.assertEqual(job.nextrun[0].date, date(2022, 7, 1))
cashbook, = Cashbook.browse([job.cashbook])
self.assertEqual(cashbook.rec_name, 'Book 1 | -10.00 usd | Open')
self.assertEqual(len(cashbook.lines), 1)
self.assertEqual(
cashbook.lines[0].rec_name,
"06/01/2022|to|-10.00 €|booking 10 usd --> 10.5 usd" +
" [Depot | 10.50 usd | Open]")
self.assertEqual(cashbook.lines[0].state, 'check')
asset_book, = Cashbook.browse([job.booktransf])
self.assertEqual(asset_book.rec_name, 'Depot | 10.50 usd | Open')
self.assertEqual(len(asset_book.lines), 1)
self.assertEqual(
asset_book.lines[0].rec_name,
"06/01/2022|from|10.50 usd|booking 10 € --> 10.5 usd" +
" [Book 1 | -10.00 € | Open]")
self.assertEqual(asset_book.lines[0].state, 'check')
self.assertEqual(asset_book.lines[0].state, 'check')
IrDate.today = MagicMock(return_value=date.today())
# end PlannerTestCase