2022-08-09 13:08:41 +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.
2022-08-08 12:31:42 +00:00
from trytond . tests . test_tryton import ModuleTestCase , with_transaction
from trytond . pool import Pool
from trytond . transaction import Transaction
from trytond . exceptions import UserError
from datetime import date
2022-08-09 15:37:37 +00:00
from unittest . mock import MagicMock
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
from decimal import Decimal
2022-08-08 12:31:42 +00:00
class LineTestCase ( ModuleTestCase ) :
' Test cashbook line module '
module = ' cashbook '
@with_transaction ( )
def test_line_create_check_names_search ( self ) :
""" create cashbook + line
"""
pool = Pool ( )
Book = pool . get ( ' cashbook.book ' )
Lines = pool . get ( ' cashbook.line ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
types = self . prep_type ( )
2022-08-11 09:06:28 +00:00
category = self . prep_category ( cattype = ' in ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
company = self . prep_company ( )
2022-08-08 12:31:42 +00:00
book , = Book . create ( [ {
' name ' : ' Book 1 ' ,
' btype ' : types . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' company ' : company . id ,
' currency ' : company . currency . id ,
2022-08-08 12:31:42 +00:00
' lines ' : [ ( ' create ' , [ {
' date ' : date ( 2022 , 5 , 1 ) ,
' description ' : ' Text 1 ' ,
2022-08-09 15:37:37 +00:00
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-08 12:31:42 +00:00
} , {
' date ' : date ( 2022 , 5 , 2 ) ,
' description ' : ' Text 2 ' ,
2022-08-09 15:37:37 +00:00
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-08 12:31:42 +00:00
} ] ) ] ,
} ] )
self . assertEqual ( book . name , ' Book 1 ' )
self . assertEqual ( book . btype . rec_name , ' CAS - Cash ' )
self . assertEqual ( book . state , ' open ' )
self . assertEqual ( len ( book . lines ) , 2 )
self . assertEqual ( book . lines [ 0 ] . date , date ( 2022 , 5 , 1 ) )
2022-08-12 14:43:49 +00:00
self . assertEqual ( book . lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Text 1 [Cat1] ' )
2022-08-08 12:31:42 +00:00
self . assertEqual ( book . lines [ 0 ] . state_cashbook , ' open ' )
self . assertEqual ( book . lines [ 1 ] . date , date ( 2022 , 5 , 2 ) )
2022-08-12 14:43:49 +00:00
self . assertEqual ( book . lines [ 1 ] . rec_name , ' 05/02/2022|1.00 usd|Text 2 [Cat1] ' )
2022-08-08 12:31:42 +00:00
self . assertEqual ( Lines . search_count ( [ ( ' rec_name ' , ' = ' , ' Text 1 ' ) ] ) , 1 )
self . assertEqual ( Lines . search_count ( [ ( ' rec_name ' , ' = ' , ' Text 1a ' ) ] ) , 0 )
self . assertEqual ( Lines . search_count ( [ ( ' rec_name ' , ' ilike ' , ' text % ' ) ] ) , 2 )
self . assertEqual ( Lines . search_count ( [ ( ' state_cashbook ' , ' = ' , ' open ' ) ] ) , 2 )
self . assertEqual ( Lines . search_count ( [ ( ' state_cashbook ' , ' = ' , ' closed ' ) ] ) , 0 )
self . assertEqual ( Lines . search_count ( [ ( ' cashbook.state ' , ' = ' , ' open ' ) ] ) , 2 )
self . assertEqual ( Lines . search_count ( [ ( ' cashbook.state ' , ' = ' , ' closed ' ) ] ) , 0 )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
# sorting: date -> state -> id
self . assertEqual ( len ( book . lines ) , 2 )
2022-08-12 14:43:49 +00:00
self . assertEqual ( book . lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Text 1 [Cat1] ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
self . assertEqual ( book . lines [ 0 ] . state , ' edit ' )
2022-08-12 14:43:49 +00:00
self . assertEqual ( book . lines [ 1 ] . rec_name , ' 05/02/2022|1.00 usd|Text 2 [Cat1] ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
self . assertEqual ( book . lines [ 1 ] . state , ' edit ' )
# set to same date
Lines . write ( * [
list ( book . lines ) ,
{
' date ' : date ( 2022 , 5 , 1 ) ,
} ] )
# check again
book , = Book . search ( [ ] )
2022-08-12 14:43:49 +00:00
self . assertEqual ( book . lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Text 1 [Cat1] ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
self . assertEqual ( book . lines [ 0 ] . state , ' edit ' )
2022-08-12 14:43:49 +00:00
self . assertEqual ( book . lines [ 1 ] . rec_name , ' 05/01/2022|1.00 usd|Text 2 [Cat1] ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
self . assertEqual ( book . lines [ 1 ] . state , ' edit ' )
# set to 'check', will sort first
Lines . wfcheck ( [ book . lines [ 1 ] ] )
book , = Book . search ( [ ] )
2022-08-12 14:43:49 +00:00
self . assertEqual ( book . lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Text 2 [Cat1] ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
self . assertEqual ( book . lines [ 0 ] . state , ' check ' )
2022-08-12 14:43:49 +00:00
self . assertEqual ( book . lines [ 1 ] . rec_name , ' 05/01/2022|1.00 usd|Text 1 [Cat1] ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
self . assertEqual ( book . lines [ 1 ] . state , ' edit ' )
2022-08-09 15:37:37 +00:00
@with_transaction ( )
def test_line_create_check_deny_write ( self ) :
""" create cashbook + line, ' close ' book, write to line
"""
pool = Pool ( )
Book = pool . get ( ' cashbook.book ' )
Line = pool . get ( ' cashbook.line ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
types = self . prep_type ( )
2022-08-11 09:06:28 +00:00
category = self . prep_category ( cattype = ' in ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
company = self . prep_company ( )
2022-08-09 15:37:37 +00:00
book , = Book . create ( [ {
' name ' : ' Book 1 ' ,
' btype ' : types . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' company ' : company . id ,
' currency ' : company . currency . id ,
2022-08-09 15:37:37 +00:00
' lines ' : [ ( ' create ' , [ {
' date ' : date ( 2022 , 5 , 1 ) ,
' description ' : ' Text 1 ' ,
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-09 15:37:37 +00:00
} , {
' date ' : date ( 2022 , 6 , 1 ) ,
' description ' : ' Text 2 ' ,
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-09 15:37:37 +00:00
} ] ) ] ,
} ] )
self . assertEqual ( book . name , ' Book 1 ' )
self . assertEqual ( book . state , ' open ' )
self . assertEqual ( len ( book . lines ) , 2 )
2022-08-12 14:43:49 +00:00
Line . write ( * [
[ book . lines [ 0 ] ] ,
{
' description ' : ' works ' ,
} ] )
Line . wfcheck ( [ book . lines [ 0 ] ] )
self . assertEqual ( book . lines [ 0 ] . state , ' check ' )
self . assertRaisesRegex ( UserError ,
" The cashbook line ' 05/01/2022|1.00 usd|works [Cat1] ' is ' Checked ' and cannot be changed. " ,
Line . write ,
* [
[ book . lines [ 0 ] ] ,
{
' description ' : ' denied by line.state ' ,
} ,
] )
2022-08-09 15:37:37 +00:00
Book . wfclosed ( [ book ] )
self . assertEqual ( book . state , ' closed ' )
self . assertRaisesRegex ( UserError ,
2022-08-11 11:01:53 +00:00
" The cash book ' Book | 2.00 usd | Closed ' is ' Closed ' and cannot be changed. " ,
2022-08-09 15:37:37 +00:00
Line . write ,
* [
[ book . lines [ 0 ] ] ,
{
' description ' : ' should be denied ' ,
} ,
] )
@with_transaction ( )
def test_line_create_check_month ( self ) :
""" create cashbook + line, check ' month ' + search
"""
pool = Pool ( )
Book = pool . get ( ' cashbook.book ' )
Line = pool . get ( ' cashbook.line ' )
IrDate = pool . get ( ' ir.date ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
types = self . prep_type ( )
2022-08-11 09:06:28 +00:00
category = self . prep_category ( cattype = ' in ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
company = self . prep_company ( )
2022-08-09 15:37:37 +00:00
IrDate . today = MagicMock ( return_value = date ( 2022 , 6 , 1 ) )
book , = Book . create ( [ {
' name ' : ' Book 1 ' ,
' btype ' : types . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' company ' : company . id ,
' currency ' : company . currency . id ,
2022-08-09 15:37:37 +00:00
' lines ' : [ ( ' create ' , [ {
' date ' : date ( 2022 , 5 , 1 ) ,
' description ' : ' Text 1 ' ,
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-09 15:37:37 +00:00
} , {
' date ' : date ( 2022 , 6 , 1 ) ,
' description ' : ' Text 2 ' ,
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-09 15:37:37 +00:00
} ] ) ] ,
} ] )
self . assertEqual ( book . name , ' Book 1 ' )
self . assertEqual ( book . state , ' open ' )
self . assertEqual ( len ( book . lines ) , 2 )
self . assertEqual ( book . lines [ 0 ] . date , date ( 2022 , 5 , 1 ) )
self . assertEqual ( book . lines [ 0 ] . month , 1 )
self . assertEqual ( book . lines [ 1 ] . date , date ( 2022 , 6 , 1 ) )
self . assertEqual ( book . lines [ 1 ] . month , 0 )
l1 , = Line . search ( [ ( ' month ' , ' = ' , 0 ) ] )
self . assertEqual ( l1 . date , date ( 2022 , 6 , 1 ) )
l1 , = Line . search ( [ ( ' month ' , ' = ' , 1 ) ] )
self . assertEqual ( l1 . date , date ( 2022 , 5 , 1 ) )
IrDate . today = MagicMock ( return_value = date ( 2022 , 6 , 30 ) )
l1 , = Line . search ( [ ( ' month ' , ' = ' , 0 ) ] )
self . assertEqual ( l1 . date , date ( 2022 , 6 , 1 ) )
l1 , = Line . search ( [ ( ' month ' , ' = ' , 1 ) ] )
self . assertEqual ( l1 . date , date ( 2022 , 5 , 1 ) )
self . assertEqual ( Line . search_count ( [ ( ' month ' , ' = ' , 2 ) ] ) , 0 )
IrDate . today = MagicMock ( return_value = date ( 2022 , 7 , 1 ) )
self . assertEqual ( Line . search_count ( [ ( ' month ' , ' = ' , 0 ) ] ) , 0 )
l1 , = Line . search ( [ ( ' month ' , ' = ' , 1 ) ] )
self . assertEqual ( l1 . date , date ( 2022 , 6 , 1 ) )
IrDate . today = MagicMock ( return_value = date . today ( ) )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
@with_transaction ( )
def test_line_create_check_debit_credit ( self ) :
""" create cashbook + line, check calculation of debit/credit
"""
pool = Pool ( )
Book = pool . get ( ' cashbook.book ' )
Line = pool . get ( ' cashbook.line ' )
Configuration = pool . get ( ' cashbook.configuration ' )
Category = pool . get ( ' cashbook.category ' )
types = self . prep_type ( )
2022-08-11 09:06:28 +00:00
category_in = self . prep_category ( cattype = ' in ' )
category_out = self . prep_category ( name = ' Out Category ' , cattype = ' out ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
company = self . prep_company ( )
book , = Book . create ( [ {
' name ' : ' Book 1 ' ,
' btype ' : types . id ,
' company ' : company . id ,
' currency ' : company . currency . id ,
' lines ' : [ ( ' create ' , [ {
' date ' : date ( 2022 , 5 , 1 ) ,
' description ' : ' Revenue ' ,
2022-08-11 09:06:28 +00:00
' category ' : category_in . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
} , {
' date ' : date ( 2022 , 6 , 1 ) ,
' description ' : ' Expense ' ,
2022-08-11 09:06:28 +00:00
' category ' : category_out . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' out ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
} , {
' date ' : date ( 2022 , 6 , 1 ) ,
' description ' : ' Transfer from ' ,
2022-08-11 09:06:28 +00:00
' category ' : category_in . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' mvin ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
} , {
' date ' : date ( 2022 , 6 , 1 ) ,
' description ' : ' Transfer to ' ,
2022-08-11 09:06:28 +00:00
' category ' : category_out . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' mvout ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
} ] ) ] ,
} ] )
self . assertEqual ( book . name , ' Book 1 ' )
self . assertEqual ( book . state , ' open ' )
self . assertEqual ( len ( book . lines ) , 4 )
self . assertEqual ( book . lines [ 0 ] . amount , Decimal ( ' 1.0 ' ) )
self . assertEqual ( book . lines [ 0 ] . bookingtype , ' in ' )
self . assertEqual ( book . lines [ 0 ] . credit , Decimal ( ' 1.0 ' ) )
self . assertEqual ( book . lines [ 0 ] . debit , Decimal ( ' 0.0 ' ) )
self . assertEqual ( book . lines [ 1 ] . amount , Decimal ( ' 1.0 ' ) )
self . assertEqual ( book . lines [ 1 ] . bookingtype , ' out ' )
self . assertEqual ( book . lines [ 1 ] . credit , Decimal ( ' 0.0 ' ) )
self . assertEqual ( book . lines [ 1 ] . debit , Decimal ( ' 1.0 ' ) )
self . assertEqual ( book . lines [ 2 ] . amount , Decimal ( ' 1.0 ' ) )
self . assertEqual ( book . lines [ 2 ] . bookingtype , ' mvin ' )
self . assertEqual ( book . lines [ 2 ] . credit , Decimal ( ' 1.0 ' ) )
self . assertEqual ( book . lines [ 2 ] . debit , Decimal ( ' 0.0 ' ) )
self . assertEqual ( book . lines [ 3 ] . amount , Decimal ( ' 1.0 ' ) )
self . assertEqual ( book . lines [ 3 ] . bookingtype , ' mvout ' )
self . assertEqual ( book . lines [ 3 ] . credit , Decimal ( ' 0.0 ' ) )
self . assertEqual ( book . lines [ 3 ] . debit , Decimal ( ' 1.0 ' ) )
Line . write ( * [
[ book . lines [ 0 ] ] ,
{
' amount ' : Decimal ( ' 2.0 ' ) ,
} ] )
self . assertEqual ( book . lines [ 0 ] . amount , Decimal ( ' 2.0 ' ) )
self . assertEqual ( book . lines [ 0 ] . bookingtype , ' in ' )
self . assertEqual ( book . lines [ 0 ] . credit , Decimal ( ' 2.0 ' ) )
self . assertEqual ( book . lines [ 0 ] . debit , Decimal ( ' 0.0 ' ) )
Line . write ( * [
[ book . lines [ 0 ] ] ,
{
' bookingtype ' : ' out ' ,
2022-08-11 09:06:28 +00:00
' category ' : category_out . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
} ] )
self . assertEqual ( book . lines [ 0 ] . amount , Decimal ( ' 2.0 ' ) )
self . assertEqual ( book . lines [ 0 ] . bookingtype , ' out ' )
self . assertEqual ( book . lines [ 0 ] . credit , Decimal ( ' 0.0 ' ) )
self . assertEqual ( book . lines [ 0 ] . debit , Decimal ( ' 2.0 ' ) )
Line . write ( * [
[ book . lines [ 0 ] ] ,
{
2022-08-11 09:06:28 +00:00
' category ' : category_in . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' mvin ' ,
' amount ' : Decimal ( ' 3.0 ' ) ,
} ] )
self . assertEqual ( book . lines [ 0 ] . amount , Decimal ( ' 3.0 ' ) )
self . assertEqual ( book . lines [ 0 ] . bookingtype , ' mvin ' )
self . assertEqual ( book . lines [ 0 ] . credit , Decimal ( ' 3.0 ' ) )
self . assertEqual ( book . lines [ 0 ] . debit , Decimal ( ' 0.0 ' ) )
2022-08-10 09:57:35 +00:00
@with_transaction ( )
def test_line_create_check_category_view ( self ) :
""" create cashbook + line, check ' category_view '
"""
pool = Pool ( )
Book = pool . get ( ' cashbook.book ' )
Line = pool . get ( ' cashbook.line ' )
Configuration = pool . get ( ' cashbook.configuration ' )
Category = pool . get ( ' cashbook.category ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
types = self . prep_type ( )
2022-08-11 09:06:28 +00:00
category = self . prep_category ( cattype = ' in ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
company = self . prep_company ( )
2022-08-10 09:57:35 +00:00
with Transaction ( ) . set_context ( {
' company ' : company . id ,
} ) :
category2 , = Category . create ( [ {
' company ' : company . id ,
' name ' : ' Level1 ' ,
2022-08-11 09:06:28 +00:00
' cattype ' : ' in ' ,
2022-08-10 09:57:35 +00:00
' childs ' : [ ( ' create ' , [ {
' company ' : company . id ,
' name ' : ' Level2 ' ,
2022-08-11 09:06:28 +00:00
' cattype ' : ' in ' ,
2022-08-10 09:57:35 +00:00
} ] ) ] ,
} ] )
2022-08-15 10:35:31 +00:00
self . assertEqual ( category2 . rec_name , ' Level1 ' )
2022-08-10 09:57:35 +00:00
self . assertEqual ( len ( category2 . childs ) , 1 )
2022-08-15 10:35:31 +00:00
self . assertEqual ( category2 . childs [ 0 ] . rec_name , ' Level1/Level2 ' )
2022-08-10 09:57:35 +00:00
cfg1 = Configuration ( )
cfg1 . save ( )
book , = Book . create ( [ {
' name ' : ' Book 1 ' ,
' btype ' : types . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' company ' : company . id ,
' currency ' : company . currency . id ,
2022-08-10 09:57:35 +00:00
' lines ' : [ ( ' create ' , [ {
' date ' : date ( 2022 , 5 , 1 ) ,
' description ' : ' Text 1 ' ,
' category ' : category2 . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-10 09:57:35 +00:00
} , {
' date ' : date ( 2022 , 6 , 1 ) ,
' description ' : ' Text 2 ' ,
' category ' : category2 . childs [ 0 ] . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-10 09:57:35 +00:00
} ] ) ] ,
} ] )
self . assertEqual ( book . name , ' Book 1 ' )
self . assertEqual ( book . state , ' open ' )
self . assertEqual ( len ( book . lines ) , 2 )
self . assertEqual ( cfg1 . catnamelong , True )
self . assertEqual ( book . lines [ 0 ] . category . rec_name , ' Level1 ' )
self . assertEqual ( book . lines [ 1 ] . category . rec_name , ' Level1/Level2 ' )
self . assertEqual ( book . lines [ 0 ] . category_view , ' Level1 ' )
self . assertEqual ( book . lines [ 1 ] . category_view , ' Level1/Level2 ' )
cfg1 . catnamelong = False
cfg1 . save ( )
self . assertEqual ( book . lines [ 0 ] . category . rec_name , ' Level1 ' )
self . assertEqual ( book . lines [ 1 ] . category . rec_name , ' Level1/Level2 ' )
self . assertEqual ( book . lines [ 0 ] . category_view , ' Level1 ' )
self . assertEqual ( book . lines [ 1 ] . category_view , ' Level2 ' )
2022-08-08 12:31:42 +00:00
@with_transaction ( )
def test_line_delete_with_book_in_open_state ( self ) :
""" create cashbook + line, book in state=open, delete a line
"""
pool = Pool ( )
Book = pool . get ( ' cashbook.book ' )
Lines = pool . get ( ' cashbook.line ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
types = self . prep_type ( )
2022-08-11 09:06:28 +00:00
category = self . prep_category ( cattype = ' in ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
company = self . prep_company ( )
2022-08-08 12:31:42 +00:00
book , = Book . create ( [ {
' name ' : ' Book 1 ' ,
' btype ' : types . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' company ' : company . id ,
' currency ' : company . currency . id ,
2022-08-08 12:31:42 +00:00
' lines ' : [ ( ' create ' , [ {
' date ' : date ( 2022 , 5 , 1 ) ,
' description ' : ' Text 1 ' ,
2022-08-09 15:37:37 +00:00
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-08 12:31:42 +00:00
} , {
' date ' : date ( 2022 , 5 , 2 ) ,
' description ' : ' Text 2 ' ,
2022-08-09 15:37:37 +00:00
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-08 12:31:42 +00:00
} ] ) ] ,
} ] )
self . assertEqual ( book . name , ' Book 1 ' )
self . assertEqual ( len ( book . lines ) , 2 )
self . assertEqual ( book . state , ' open ' )
Lines . delete ( [ book . lines [ 0 ] ] )
@with_transaction ( )
def test_line_delete_with_book_in_closed_state ( self ) :
""" create cashbook + line, book in state=closed, delete a line
"""
pool = Pool ( )
Book = pool . get ( ' cashbook.book ' )
Lines = pool . get ( ' cashbook.line ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
types = self . prep_type ( )
2022-08-11 09:06:28 +00:00
category = self . prep_category ( cattype = ' in ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
company = self . prep_company ( )
2022-08-08 12:31:42 +00:00
book , = Book . create ( [ {
' name ' : ' Book 1 ' ,
' btype ' : types . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' company ' : company . id ,
' currency ' : company . currency . id ,
2022-08-08 12:31:42 +00:00
' lines ' : [ ( ' create ' , [ {
' date ' : date ( 2022 , 5 , 1 ) ,
' description ' : ' Text 1 ' ,
2022-08-09 15:37:37 +00:00
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-08 12:31:42 +00:00
} , {
' date ' : date ( 2022 , 5 , 2 ) ,
' description ' : ' Text 2 ' ,
2022-08-09 15:37:37 +00:00
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-08 12:31:42 +00:00
} ] ) ] ,
} ] )
self . assertEqual ( book . name , ' Book 1 ' )
self . assertEqual ( len ( book . lines ) , 2 )
self . assertEqual ( book . state , ' open ' )
Book . wfclosed ( [ book ] )
self . assertEqual ( book . state , ' closed ' )
self . assertRaisesRegex ( UserError ,
2022-08-11 11:01:53 +00:00
" The cashbook line ' 05/01/2022 Text 1 ' cannot be deleted because the Cashbook ' Book | 2.00 usd | Closed ' is in state ' Closed ' . " ,
2022-08-08 12:31:42 +00:00
Lines . delete ,
[ book . lines [ 0 ] ] )
@with_transaction ( )
def test_line_delete_with_line_in_check_state ( self ) :
""" create cashbook + line, line in state=check, delete a line
"""
pool = Pool ( )
Book = pool . get ( ' cashbook.book ' )
Lines = pool . get ( ' cashbook.line ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
types = self . prep_type ( )
2022-08-11 09:06:28 +00:00
category = self . prep_category ( cattype = ' in ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
company = self . prep_company ( )
2022-08-08 12:31:42 +00:00
book , = Book . create ( [ {
' name ' : ' Book 1 ' ,
' btype ' : types . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' company ' : company . id ,
' currency ' : company . currency . id ,
2022-08-08 12:31:42 +00:00
' lines ' : [ ( ' create ' , [ {
' date ' : date ( 2022 , 5 , 1 ) ,
' description ' : ' Text 1 ' ,
2022-08-09 15:37:37 +00:00
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-08 12:31:42 +00:00
} , {
' date ' : date ( 2022 , 5 , 2 ) ,
' description ' : ' Text 2 ' ,
2022-08-09 15:37:37 +00:00
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-08 12:31:42 +00:00
} ] ) ] ,
} ] )
self . assertEqual ( book . name , ' Book 1 ' )
self . assertEqual ( len ( book . lines ) , 2 )
self . assertEqual ( book . state , ' open ' )
self . assertEqual ( book . lines [ 0 ] . state , ' edit ' )
Lines . wfcheck ( [ book . lines [ 0 ] ] )
self . assertEqual ( book . lines [ 0 ] . state , ' check ' )
self . assertRaisesRegex ( UserError ,
2022-08-12 14:43:49 +00:00
" The cashbook line ' 05/01/2022|1.00 usd|Test 1 [Cat1] ' cannot be deleted, its in state ' Checked ' . " ,
2022-08-08 12:31:42 +00:00
Lines . delete ,
[ book . lines [ 0 ] ] )
2022-08-08 15:31:16 +00:00
@with_transaction ( )
def test_line_permission_owner ( self ) :
""" create book+line + 2x users, add users to group, check access
"""
pool = Pool ( )
ResUser = pool . get ( ' res.user ' )
ResGroup = pool . get ( ' res.group ' )
Book = pool . get ( ' cashbook.book ' )
Line = pool . get ( ' cashbook.line ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
types = self . prep_type ( )
2022-08-11 09:06:28 +00:00
category = self . prep_category ( cattype = ' in ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
company = self . prep_company ( )
2022-08-08 15:31:16 +00:00
grp_cashbook , = ResGroup . search ( [ ( ' name ' , ' = ' , ' Cashbook ' ) ] )
usr_lst = ResUser . create ( [ {
' login ' : ' frida ' ,
' name ' : ' Frida ' ,
' groups ' : [ ( ' add ' , [ grp_cashbook . id ] ) ] ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' companies ' : [ ( ' add ' , [ company . id ] ) ] ,
' company ' : company . id ,
2022-08-08 15:31:16 +00:00
} , {
' login ' : ' diego ' ,
' name ' : ' Diego ' ,
' groups ' : [ ( ' add ' , [ grp_cashbook . id ] ) ] ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' companies ' : [ ( ' add ' , [ company . id ] ) ] ,
' company ' : company . id ,
2022-08-08 15:31:16 +00:00
} ] )
self . assertEqual ( len ( usr_lst ) , 2 )
self . assertEqual ( usr_lst [ 0 ] . name , ' Frida ' )
self . assertEqual ( usr_lst [ 1 ] . name , ' Diego ' )
book , = Book . create ( [ {
' name ' : ' Fridas book ' ,
' owner ' : usr_lst [ 0 ] . id ,
' btype ' : types . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' company ' : company . id ,
' currency ' : company . currency . id ,
2022-08-08 15:31:16 +00:00
' lines ' : [ ( ' create ' , [ {
' date ' : date ( 2022 , 5 , 1 ) ,
' description ' : ' Test 1 ' ,
2022-08-09 15:37:37 +00:00
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-08 15:31:16 +00:00
} ] ) ] ,
} ] )
2022-08-11 11:01:53 +00:00
self . assertEqual ( book . rec_name , ' Fridas book | 1.00 usd | Open ' ) ,
2022-08-08 15:31:16 +00:00
self . assertEqual ( book . owner . rec_name , ' Frida ' ) ,
with Transaction ( ) . set_context ( {
' _check_access ' : True ,
} ) :
# change to user 'diego' , try access
with Transaction ( ) . set_user ( usr_lst [ 1 ] . id ) :
lines = Line . search ( [ ] )
self . assertEqual ( len ( lines ) , 0 )
# change to user 'frida' read/write book
with Transaction ( ) . set_user ( usr_lst [ 0 ] . id ) :
lines = Line . search ( [ ] )
self . assertEqual ( len ( lines ) , 1 )
2022-08-11 11:01:53 +00:00
self . assertEqual ( lines [ 0 ] . cashbook . rec_name , ' Fridas book | 1.00 usd | Open ' )
2022-08-12 14:43:49 +00:00
self . assertEqual ( lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Test 1 [Cat1] ' )
2022-08-08 15:31:16 +00:00
Line . write ( * [
lines ,
{
' description ' : ' Test 2 ' ,
} ] )
2022-08-12 14:43:49 +00:00
self . assertEqual ( lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Test 2 [Cat1] ' )
2022-08-08 15:31:16 +00:00
@with_transaction ( )
def test_line_permission_reviewer ( self ) :
""" create book+line + 2x users + 1x reviewer-group, add users to group, check access
"""
pool = Pool ( )
ResUser = pool . get ( ' res.user ' )
ResGroup = pool . get ( ' res.group ' )
Book = pool . get ( ' cashbook.book ' )
Line = pool . get ( ' cashbook.line ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
types = self . prep_type ( )
2022-08-11 09:06:28 +00:00
category = self . prep_category ( cattype = ' in ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
company = self . prep_company ( )
2022-08-08 15:31:16 +00:00
grp_cashbook , = ResGroup . search ( [ ( ' name ' , ' = ' , ' Cashbook ' ) ] )
grp_reviewer , = ResGroup . create ( [ {
' name ' : ' Cashbook Reviewer ' ,
} ] )
usr_lst = ResUser . create ( [ {
' login ' : ' frida ' ,
' name ' : ' Frida ' ,
' groups ' : [ ( ' add ' , [ grp_cashbook . id ] ) ] ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' companies ' : [ ( ' add ' , [ company . id ] ) ] ,
' company ' : company . id ,
2022-08-08 15:31:16 +00:00
} , {
' login ' : ' diego ' ,
' name ' : ' Diego ' ,
' groups ' : [ ( ' add ' , [ grp_cashbook . id , grp_reviewer . id ] ) ] ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' companies ' : [ ( ' add ' , [ company . id ] ) ] ,
' company ' : company . id ,
2022-08-08 15:31:16 +00:00
} ] )
self . assertEqual ( len ( usr_lst ) , 2 )
self . assertEqual ( usr_lst [ 0 ] . name , ' Frida ' )
self . assertEqual ( usr_lst [ 1 ] . name , ' Diego ' )
# create cashbook
# add reviewer-group to allow write for users in group
book , = Book . create ( [ {
' name ' : ' Fridas book ' ,
' owner ' : usr_lst [ 0 ] . id ,
' reviewer ' : grp_reviewer . id ,
' btype ' : types . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' company ' : company . id ,
' currency ' : company . currency . id ,
2022-08-08 15:31:16 +00:00
' lines ' : [ ( ' create ' , [ {
' date ' : date ( 2022 , 5 , 1 ) ,
' description ' : ' Test 1 ' ,
2022-08-09 15:37:37 +00:00
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-08 15:31:16 +00:00
} ] ) ] ,
} ] )
2022-08-11 11:01:53 +00:00
self . assertEqual ( book . rec_name , ' Fridas book | 1.00 usd | Open ' ) ,
2022-08-08 15:31:16 +00:00
self . assertEqual ( book . owner . rec_name , ' Frida ' ) ,
with Transaction ( ) . set_context ( {
' _check_access ' : True ,
} ) :
# change to user 'diego' , try access
with Transaction ( ) . set_user ( usr_lst [ 1 ] . id ) :
lines = Line . search ( [ ] )
self . assertEqual ( len ( lines ) , 1 )
self . assertEqual ( len ( lines [ 0 ] . cashbook . reviewer . users ) , 1 )
self . assertEqual ( lines [ 0 ] . cashbook . reviewer . users [ 0 ] . rec_name , ' Diego ' )
2022-08-12 14:43:49 +00:00
self . assertEqual ( lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Test 1 [Cat1] ' )
2022-08-08 15:31:16 +00:00
Line . write ( * [
lines ,
{
' description ' : ' Test 2 ' ,
} ] )
2022-08-12 14:43:49 +00:00
self . assertEqual ( lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Test 2 [Cat1] ' )
2022-08-08 15:31:16 +00:00
# change to user 'frida' read/write line
with Transaction ( ) . set_user ( usr_lst [ 0 ] . id ) :
lines = Line . search ( [ ] )
self . assertEqual ( len ( lines ) , 1 )
2022-08-12 14:43:49 +00:00
self . assertEqual ( lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Test 2 [Cat1] ' )
2022-08-08 15:31:16 +00:00
Line . write ( * [
lines ,
{
' description ' : ' Test 3 ' ,
} ] )
2022-08-12 14:43:49 +00:00
self . assertEqual ( lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Test 3 [Cat1] ' )
2022-08-08 15:31:16 +00:00
@with_transaction ( )
def test_line_permission_observer ( self ) :
""" create book+line + 2x users + 1x observer-group, add users to group, check access
"""
pool = Pool ( )
ResUser = pool . get ( ' res.user ' )
ResGroup = pool . get ( ' res.group ' )
Book = pool . get ( ' cashbook.book ' )
Line = pool . get ( ' cashbook.line ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
types = self . prep_type ( )
2022-08-11 09:06:28 +00:00
category = self . prep_category ( cattype = ' in ' )
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
company = self . prep_company ( )
2022-08-08 15:31:16 +00:00
grp_cashbook , = ResGroup . search ( [ ( ' name ' , ' = ' , ' Cashbook ' ) ] )
grp_observer , = ResGroup . create ( [ {
' name ' : ' Cashbook Observer ' ,
} ] )
usr_lst = ResUser . create ( [ {
' login ' : ' frida ' ,
' name ' : ' Frida ' ,
' groups ' : [ ( ' add ' , [ grp_cashbook . id ] ) ] ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' companies ' : [ ( ' add ' , [ company . id ] ) ] ,
' company ' : company . id ,
2022-08-08 15:31:16 +00:00
} , {
' login ' : ' diego ' ,
' name ' : ' Diego ' ,
' groups ' : [ ( ' add ' , [ grp_cashbook . id , grp_observer . id ] ) ] ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' companies ' : [ ( ' add ' , [ company . id ] ) ] ,
' company ' : company . id ,
2022-08-08 15:31:16 +00:00
} ] )
self . assertEqual ( len ( usr_lst ) , 2 )
self . assertEqual ( usr_lst [ 0 ] . name , ' Frida ' )
self . assertEqual ( usr_lst [ 1 ] . name , ' Diego ' )
# create cashbook
# add reviewer-group to allow write for users in group
book , = Book . create ( [ {
' name ' : ' Fridas book ' ,
' owner ' : usr_lst [ 0 ] . id ,
' observer ' : grp_observer . id ,
' btype ' : types . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' company ' : company . id ,
' currency ' : company . currency . id ,
2022-08-08 15:31:16 +00:00
' lines ' : [ ( ' create ' , [ {
' date ' : date ( 2022 , 5 , 1 ) ,
' description ' : ' Test 1 ' ,
2022-08-09 15:37:37 +00:00
' category ' : category . id ,
book, line, category, types: berechtigung für company-user + test,
book: währung neu,
line: buchungstyp, betrag, credit, debit, währung, sortierung
2022-08-10 14:30:08 +00:00
' bookingtype ' : ' in ' ,
' amount ' : Decimal ( ' 1.0 ' ) ,
2022-08-08 15:31:16 +00:00
} ] ) ] ,
} ] )
2022-08-11 11:01:53 +00:00
self . assertEqual ( book . rec_name , ' Fridas book | 1.00 usd | Open ' ) ,
2022-08-08 15:31:16 +00:00
self . assertEqual ( book . owner . rec_name , ' Frida ' ) ,
with Transaction ( ) . set_context ( {
' _check_access ' : True ,
} ) :
# change to user 'diego' , try access
with Transaction ( ) . set_user ( usr_lst [ 1 ] . id ) :
lines = Line . search ( [ ] )
self . assertEqual ( len ( lines ) , 1 )
self . assertEqual ( len ( lines [ 0 ] . cashbook . observer . users ) , 1 )
self . assertEqual ( lines [ 0 ] . cashbook . observer . users [ 0 ] . rec_name , ' Diego ' )
2022-08-12 14:43:49 +00:00
self . assertEqual ( lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Test 1 [Cat1] ' )
2022-08-08 15:31:16 +00:00
self . assertRaisesRegex ( UserError ,
' You are not allowed to write to records " [0-9] { 1,} " of " Cashbook Line " because of at least one of these rules: \n Owners and reviewers: Cashbook line write - ' ,
Line . write ,
* [
lines ,
{
' description ' : ' Test 2 ' ,
} ,
] )
# change to user 'frida' read/write line
with Transaction ( ) . set_user ( usr_lst [ 0 ] . id ) :
lines = Line . search ( [ ] )
self . assertEqual ( len ( lines ) , 1 )
2022-08-12 14:43:49 +00:00
self . assertEqual ( lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Test 1 [Cat1] ' )
2022-08-08 15:31:16 +00:00
Line . write ( * [
lines ,
{
' description ' : ' Test 2 ' ,
} ] )
2022-08-12 14:43:49 +00:00
self . assertEqual ( lines [ 0 ] . rec_name , ' 05/01/2022|1.00 usd|Test 2 [Cat1] ' )
2022-08-08 15:31:16 +00:00
# end LineTestCase