line: suche in splitline (kategorie+beschreibung)

This commit is contained in:
Frederik Jaeckel 2022-09-09 22:50:12 +02:00
parent 2a44c67ccf
commit 86922aecef
2 changed files with 47 additions and 6 deletions

View file

@ -357,6 +357,8 @@ class Line(Workflow, ModelSQL, ModelView):
return cls.search_payee(name, clause) + [
('description',) + tuple(clause[1:]),
('category.rec_name',) + tuple(clause[1:]),
('splitlines.description',) + tuple(clause[1:]),
('splitlines.category.rec_name',) + tuple(clause[1:]),
]
def get_rec_name(self, name):

View file

@ -460,10 +460,18 @@ class LineTestCase(ModuleTestCase):
pool = Pool()
Book = pool.get('cashbook.book')
Lines = pool.get('cashbook.line')
Category = pool.get('cashbook.category')
types = self.prep_type()
category = self.prep_category(cattype='in')
company = self.prep_company()
category = self.prep_category(cattype='in')
category2, = Category.create([{
'name': 'sp-cat1',
'cattype': 'in',
'company': company.id,
}])
self.assertEqual(category2.rec_name, 'sp-cat1')
party = self.prep_party()
book, = Book.create([{
'name': 'Book 1',
@ -486,33 +494,60 @@ class LineTestCase(ModuleTestCase):
'bookingtype': 'in',
'amount': Decimal('1.0'),
'party': party.id,
}, {
'date': date(2022, 5, 3),
'description': 'Text 3',
'bookingtype': 'spin',
'amount': Decimal('1.0'),
'party': party.id,
'splitlines': [('create', [{
'amount': Decimal('1.0'),
'description': 'text3-spline1',
'category': category2.id,
}])],
}])],
}])
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(len(book.lines), 3)
self.assertEqual(book.lines[0].date, date(2022, 5, 1))
self.assertEqual(book.lines[0].rec_name, '05/01/2022|Rev|1.00 usd|Text 1 [Cat1]')
self.assertEqual(book.lines[0].state_cashbook, 'open')
self.assertEqual(book.lines[1].date, date(2022, 5, 2))
self.assertEqual(book.lines[1].rec_name, '05/02/2022|Rev|1.00 usd|Text 2 [Cat1]')
self.assertEqual(book.lines[2].date, date(2022, 5, 3))
self.assertEqual(book.lines[2].rec_name, '05/03/2022|Rev/Sp|1.00 usd|Text 3 [-]')
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([('rec_name', 'ilike', 'text%')]), 3)
# search in category of split-line
self.assertEqual(Lines.search_count([('rec_name', '=', 'sp-cat1')]), 1)
# search in description of split-line
self.assertEqual(Lines.search_count([('rec_name', '=', 'text3-spline1')]), 1)
# ilike fails in fields.Text to find subtext...
self.assertEqual(Lines.search_count([('rec_name', 'ilike', '%spline%')]), 0)
# ...but it uses separator-chars
self.assertEqual(Lines.search_count([('rec_name', 'ilike', 'text3%')]), 1)
self.assertEqual(Lines.search_count([('rec_name', 'ilike', 'spline1')]), 1)
self.assertEqual(Lines.search_count([('rec_name', 'ilike', '%spline1')]), 1)
self.assertEqual(Lines.search_count([('rec_name', 'ilike', 'spline1%')]), 0)
self.assertEqual(Lines.search_count([('rec_name', 'ilike', 'text3')]), 1)
self.assertEqual(Lines.search_count([('state_cashbook', '=', 'open')]), 2)
self.assertEqual(Lines.search_count([('state_cashbook', '=', 'open')]), 3)
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', '=', 'open')]), 3)
self.assertEqual(Lines.search_count([('cashbook.state', '=', 'closed')]), 0)
# sorting: date -> state -> id
self.assertEqual(len(book.lines), 2)
self.assertEqual(len(book.lines), 3)
self.assertEqual(book.lines[0].rec_name, '05/01/2022|Rev|1.00 usd|Text 1 [Cat1]')
self.assertEqual(book.lines[0].state, 'edit')
self.assertEqual(book.lines[1].rec_name, '05/02/2022|Rev|1.00 usd|Text 2 [Cat1]')
self.assertEqual(book.lines[1].state, 'edit')
self.assertEqual(book.lines[2].rec_name, '05/03/2022|Rev/Sp|1.00 usd|Text 3 [-]')
self.assertEqual(book.lines[2].state, 'edit')
# set to same date
Lines.write(*[
@ -526,6 +561,8 @@ class LineTestCase(ModuleTestCase):
self.assertEqual(book.lines[0].state, 'edit')
self.assertEqual(book.lines[1].rec_name, '05/01/2022|Rev|1.00 usd|Text 2 [Cat1]')
self.assertEqual(book.lines[1].state, 'edit')
self.assertEqual(book.lines[2].rec_name, '05/01/2022|Rev/Sp|1.00 usd|Text 3 [-]')
self.assertEqual(book.lines[2].state, 'edit')
# set to 'check', will sort first
Lines.wfcheck([book.lines[1]])
@ -534,6 +571,8 @@ class LineTestCase(ModuleTestCase):
self.assertEqual(book.lines[0].state, 'check')
self.assertEqual(book.lines[1].rec_name, '05/01/2022|Rev|1.00 usd|Text 1 [Cat1]')
self.assertEqual(book.lines[1].state, 'edit')
self.assertEqual(book.lines[2].rec_name, '05/01/2022|Rev/Sp|1.00 usd|Text 3 [-]')
self.assertEqual(book.lines[2].state, 'edit')
@with_transaction()
def test_line_create_check_deny_write(self):