konfig/buchung eingeben: ausgewählte kassenbücher

This commit is contained in:
Frederik Jaeckel 2022-09-18 12:52:31 +02:00
parent 2acdc55efb
commit 99abc069d8
6 changed files with 282 additions and 7 deletions

18
book.py
View file

@ -306,7 +306,10 @@ class Book(tree(separator='/'), Workflow, ModelSQL, ModelView):
def write(cls, *args): def write(cls, *args):
""" deny update if book is not 'open' """ deny update if book is not 'open'
""" """
ConfigUser = Pool().get('cashbook.configuration_user')
actions = iter(args) actions = iter(args)
to_write_config = []
for books, values in zip(actions, actions): for books, values in zip(actions, actions):
for book in books: for book in books:
# deny btype-->None if lines not empty # deny btype-->None if lines not empty
@ -326,8 +329,23 @@ class Book(tree(separator='/'), Workflow, ModelSQL, ModelView):
bookname = book.rec_name, bookname = book.rec_name,
state_txt = book.state_string, state_txt = book.state_string,
)) ))
# if owner changes, remove book from user-config
if 'owner' in values.keys():
if book.owner.id != values['owner']:
for x in ['defbook', 'book1', 'book2', 'book3',
'book4', 'book5']:
cfg1 = ConfigUser.search([
('iduser.id', '=', book.owner.id),
('%s.id' % x, '=', book.id),
])
if len(cfg1) > 0:
to_write_config.extend([ cfg1, {x: None} ])
super(Book, cls).write(*args) super(Book, cls).write(*args)
if len(to_write_config) > 0:
ConfigUser.write(*to_write_config)
@classmethod @classmethod
def delete(cls, books): def delete(cls, books):
""" deny delete if book has lines """ deny delete if book has lines

View file

@ -15,10 +15,6 @@ field_done = fields.Boolean(string='Done',
help='Show cashbook lines in Done-state.') help='Show cashbook lines in Done-state.')
field_catnamelong = fields.Boolean(string='Category: Show long name', field_catnamelong = fields.Boolean(string='Category: Show long name',
help='Shows the long name of the category in the Category field of a cash book line.') help='Shows the long name of the category in the Category field of a cash book line.')
field_defbook = fields.Many2One(string='Default Cashbook',
help='The default cashbook is selected when you open the booking wizard.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[('btype', '!=', None)])
class Configuration(ModelSingleton, ModelSQL, ModelView, UserMultiValueMixin): class Configuration(ModelSingleton, ModelSQL, ModelView, UserMultiValueMixin):
@ -40,7 +36,42 @@ class Configuration(ModelSingleton, ModelSQL, ModelView, UserMultiValueMixin):
checked = fields.MultiValue(field_checked) checked = fields.MultiValue(field_checked)
done = fields.MultiValue(field_done) done = fields.MultiValue(field_done)
catnamelong = fields.MultiValue(field_catnamelong) catnamelong = fields.MultiValue(field_catnamelong)
defbook = fields.MultiValue(field_defbook) defbook = fields.MultiValue(fields.Many2One(string='Default Cashbook',
help='The default cashbook is selected when you open the booking wizard.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[
('btype', '!=', None), ('state', '=', 'open'),
]))
book1 = fields.MultiValue(fields.Many2One(string='Cashbook 1',
help='Cash book available in selection dialog.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[
('btype', '!=', None), ('state', '=', 'open'),
]))
book2 = fields.MultiValue(fields.Many2One(string='Cashbook 2',
help='Cash book available in selection dialog.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[
('btype', '!=', None), ('state', '=', 'open'),
]))
book3 = fields.MultiValue(fields.Many2One(string='Cashbook 3',
help='Cash book available in selection dialog.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[
('btype', '!=', None), ('state', '=', 'open'),
]))
book4 = fields.MultiValue(fields.Many2One(string='Cashbook 4',
help='Cash book available in selection dialog.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[
('btype', '!=', None), ('state', '=', 'open'),
]))
book5 = fields.MultiValue(fields.Many2One(string='Cashbook 5',
help='Cash book available in selection dialog.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[
('btype', '!=', None), ('state', '=', 'open'),
]))
@classmethod @classmethod
def multivalue_model(cls, field): def multivalue_model(cls, field):
@ -49,7 +80,8 @@ class Configuration(ModelSingleton, ModelSQL, ModelView, UserMultiValueMixin):
pool = Pool() pool = Pool()
if field in ['date_from', 'date_to', 'checked', 'done', if field in ['date_from', 'date_to', 'checked', 'done',
'catnamelong', 'defbook']: 'catnamelong', 'defbook', 'book1', 'book2',
'book3', 'book4', 'book5']:
return pool.get('cashbook.configuration_user') return pool.get('cashbook.configuration_user')
return super(Configuration, cls).multivalue_model(field) return super(Configuration, cls).multivalue_model(field)
@ -87,7 +119,54 @@ class UserConfiguration(ModelSQL, UserValueMixin):
checked = field_checked checked = field_checked
done = field_done done = field_done
catnamelong = field_catnamelong catnamelong = field_catnamelong
defbook = field_defbook defbook = fields.Many2One(string='Default Cashbook',
help='The default cashbook is selected when you open the booking wizard.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[
('btype', '!=', None),
('state', '=', 'open'),
('owner.id', '=', Eval('iduser', -1))
], depends=['iduser'])
book1 = fields.Many2One(string='Cashbook 1',
help='Cash book available in selection dialog.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[
('btype', '!=', None),
('state', '=', 'open'),
('owner.id', '=', Eval('iduser', -1))
], depends=['iduser'])
book2 = fields.Many2One(string='Cashbook 2',
help='Cash book available in selection dialog.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[
('btype', '!=', None),
('state', '=', 'open'),
('owner.id', '=', Eval('iduser', -1))
], depends=['iduser'])
book3 = fields.Many2One(string='Cashbook 3',
help='Cash book available in selection dialog.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[
('btype', '!=', None),
('state', '=', 'open'),
('owner.id', '=', Eval('iduser', -1))
], depends=['iduser'])
book4 = fields.Many2One(string='Cashbook 4',
help='Cash book available in selection dialog.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[
('btype', '!=', None),
('state', '=', 'open'),
('owner.id', '=', Eval('iduser', -1))
], depends=['iduser'])
book5 = fields.Many2One(string='Cashbook 5',
help='Cash book available in selection dialog.',
model_name='cashbook.book', ondelete='SET NULL',
domain=[
('btype', '!=', None),
('state', '=', 'open'),
('owner.id', '=', Eval('iduser', -1))
], depends=['iduser'])
@classmethod @classmethod
def default_checked(cls): def default_checked(cls):

View file

@ -1090,6 +1090,46 @@ msgctxt "help:cashbook.configuration,defbook:"
msgid "The default cashbook is selected when you open the booking wizard." msgid "The default cashbook is selected when you open the booking wizard."
msgstr "Das Standardkassenbuch wird beim Öffnen des Buchungswizards ausgewählt." msgstr "Das Standardkassenbuch wird beim Öffnen des Buchungswizards ausgewählt."
msgctxt "field:cashbook.configuration,book1:"
msgid "Cashbook 1"
msgstr "Kassenbuch 1"
msgctxt "help:cashbook.configuration,book1:"
msgid "Cash book available in selection dialog."
msgstr "in Auswahldialog verfügbares Kassenbuch."
msgctxt "field:cashbook.configuration,book2:"
msgid "Cashbook 2"
msgstr "Kassenbuch 2"
msgctxt "help:cashbook.configuration,book2:"
msgid "Cash book available in selection dialog."
msgstr "in Auswahldialog verfügbares Kassenbuch."
msgctxt "field:cashbook.configuration,book3:"
msgid "Cashbook 3"
msgstr "Kassenbuch 3"
msgctxt "help:cashbook.configuration,book3:"
msgid "Cash book available in selection dialog."
msgstr "in Auswahldialog verfügbares Kassenbuch."
msgctxt "field:cashbook.configuration,book4:"
msgid "Cashbook 4"
msgstr "Kassenbuch 4"
msgctxt "help:cashbook.configuration,book4:"
msgid "Cash book available in selection dialog."
msgstr "in Auswahldialog verfügbares Kassenbuch."
msgctxt "field:cashbook.configuration,book5:"
msgid "Cashbook 5"
msgstr "Kassenbuch 5"
msgctxt "help:cashbook.configuration,book5:"
msgid "Cash book available in selection dialog."
msgstr "in Auswahldialog verfügbares Kassenbuch."
msgctxt "field:cashbook.configuration,date_from:" msgctxt "field:cashbook.configuration,date_from:"
msgid "Start Date" msgid "Start Date"
msgstr "Beginndatum" msgstr "Beginndatum"
@ -1170,6 +1210,46 @@ msgctxt "help:cashbook.configuration_user,defbook:"
msgid "The default cashbook is selected when you open the booking wizard." msgid "The default cashbook is selected when you open the booking wizard."
msgstr "Das Standardkassenbuch wird beim Öffnen des Buchungswizards ausgewählt." msgstr "Das Standardkassenbuch wird beim Öffnen des Buchungswizards ausgewählt."
msgctxt "field:cashbook.configuration_user,book1:"
msgid "Cashbook 1"
msgstr "Kassenbuch 1"
msgctxt "help:cashbook.configuration_user,book1:"
msgid "Cash book available in selection dialog."
msgstr "in Auswahldialog verfügbares Kassenbuch."
msgctxt "field:cashbook.configuration_user,book2:"
msgid "Cashbook 2"
msgstr "Kassenbuch 2"
msgctxt "help:cashbook.configuration_user,book2:"
msgid "Cash book available in selection dialog."
msgstr "in Auswahldialog verfügbares Kassenbuch."
msgctxt "field:cashbook.configuration_user,book3:"
msgid "Cashbook 3"
msgstr "Kassenbuch 3"
msgctxt "help:cashbook.configuration_user,book3:"
msgid "Cash book available in selection dialog."
msgstr "in Auswahldialog verfügbares Kassenbuch."
msgctxt "field:cashbook.configuration_user,book4:"
msgid "Cashbook 4"
msgstr "Kassenbuch 4"
msgctxt "help:cashbook.configuration_user,book4:"
msgid "Cash book available in selection dialog."
msgstr "in Auswahldialog verfügbares Kassenbuch."
msgctxt "field:cashbook.configuration_user,book5:"
msgid "Cashbook 5"
msgstr "Kassenbuch 5"
msgctxt "help:cashbook.configuration_user,book5:"
msgid "Cash book available in selection dialog."
msgstr "in Auswahldialog verfügbares Kassenbuch."
################## ##################
# cashbook.recon # # cashbook.recon #

View file

@ -1022,6 +1022,46 @@ msgctxt "help:cashbook.configuration,defbook:"
msgid "The default cashbook is selected when you open the booking wizard." msgid "The default cashbook is selected when you open the booking wizard."
msgstr "The default cashbook is selected when you open the booking wizard." msgstr "The default cashbook is selected when you open the booking wizard."
msgctxt "field:cashbook.configuration,book1:"
msgid "Cashbook 1"
msgstr "Cashbook 1"
msgctxt "help:cashbook.configuration,book1:"
msgid "Cash book available in selection dialog."
msgstr "Cash book available in selection dialog."
msgctxt "field:cashbook.configuration,book2:"
msgid "Cashbook 2"
msgstr "Cashbook 2"
msgctxt "help:cashbook.configuration,book2:"
msgid "Cash book available in selection dialog."
msgstr "Cash book available in selection dialog."
msgctxt "field:cashbook.configuration,book3:"
msgid "Cashbook 3"
msgstr "Cashbook 3"
msgctxt "help:cashbook.configuration,book3:"
msgid "Cash book available in selection dialog."
msgstr "Cash book available in selection dialog."
msgctxt "field:cashbook.configuration,book4:"
msgid "Cashbook 4"
msgstr "Cashbook 4"
msgctxt "help:cashbook.configuration,book4:"
msgid "Cash book available in selection dialog."
msgstr "Cash book available in selection dialog."
msgctxt "field:cashbook.configuration,book5:"
msgid "Cashbook 5"
msgstr "Cashbook 5"
msgctxt "help:cashbook.configuration,book5:"
msgid "Cash book available in selection dialog."
msgstr "Cash book available in selection dialog."
msgctxt "field:cashbook.configuration,date_from:" msgctxt "field:cashbook.configuration,date_from:"
msgid "Start Date" msgid "Start Date"
msgstr "Start Date" msgstr "Start Date"
@ -1098,6 +1138,46 @@ msgctxt "help:cashbook.configuration_user,defbook:"
msgid "The default cashbook is selected when you open the booking wizard." msgid "The default cashbook is selected when you open the booking wizard."
msgstr "The default cashbook is selected when you open the booking wizard." msgstr "The default cashbook is selected when you open the booking wizard."
msgctxt "field:cashbook.configuration_user,book1:"
msgid "Cashbook 1"
msgstr "Cashbook 1"
msgctxt "help:cashbook.configuration_user,book1:"
msgid "Cash book available in selection dialog."
msgstr "Cash book available in selection dialog."
msgctxt "field:cashbook.configuration_user,book2:"
msgid "Cashbook 2"
msgstr "Cashbook 2"
msgctxt "help:cashbook.configuration_user,book2:"
msgid "Cash book available in selection dialog."
msgstr "Cash book available in selection dialog."
msgctxt "field:cashbook.configuration_user,book3:"
msgid "Cashbook 3"
msgstr "Cashbook 3"
msgctxt "help:cashbook.configuration_user,book3:"
msgid "Cash book available in selection dialog."
msgstr "Cash book available in selection dialog."
msgctxt "field:cashbook.configuration_user,book4:"
msgid "Cashbook 4"
msgstr "Cashbook 4"
msgctxt "help:cashbook.configuration_user,book4:"
msgid "Cash book available in selection dialog."
msgstr "Cash book available in selection dialog."
msgctxt "field:cashbook.configuration_user,book5:"
msgid "Cashbook 5"
msgstr "Cashbook 5"
msgctxt "help:cashbook.configuration_user,book5:"
msgid "Cash book available in selection dialog."
msgstr "Cash book available in selection dialog."
msgctxt "model:cashbook.recon,name:" msgctxt "model:cashbook.recon,name:"
msgid "Cashbook Reconciliation" msgid "Cashbook Reconciliation"
msgstr "Cashbook Reconciliation" msgstr "Cashbook Reconciliation"

View file

@ -15,6 +15,18 @@ this repository contains the full copyright notices and license terms. -->
<separator id="sepenterbook" colspan="4" string="Enter Booking Wizard"/> <separator id="sepenterbook" colspan="4" string="Enter Booking Wizard"/>
<label name="defbook"/> <label name="defbook"/>
<field name="defbook"/> <field name="defbook"/>
<label name="book1"/>
<field name="book1"/>
<label name="book2"/>
<field name="book2"/>
<label name="book3"/>
<field name="book3"/>
<label name="book4"/>
<field name="book4"/>
<label name="book5"/>
<field name="book5"/>
<separator id="sepcb" colspan="4" string="Cashbook"/> <separator id="sepcb" colspan="4" string="Cashbook"/>
<label name="catnamelong"/> <label name="catnamelong"/>

View file

@ -134,11 +134,17 @@ class EnterBookingWizard(Wizard):
cfg1 = Configuration.get_singleton() cfg1 = Configuration.get_singleton()
book_ids = []
for x in ['defbook', 'book1', 'book2', 'book3', 'book4', 'book5']:
if getattr(cfg1, x, None) is not None:
book_ids.append(getattr(cfg1, x, None).id)
result = { result = {
'cashbooks': [x.id for x in Cashbook.search([ 'cashbooks': [x.id for x in Cashbook.search([
('state', '=', 'open'), ('state', '=', 'open'),
('btype', '!=', None), ('btype', '!=', None),
('owner.id', '=', Transaction().user), ('owner.id', '=', Transaction().user),
('id', 'in', book_ids),
])], ])],
'bookingtype': getattr(self.start, 'bookingtype', 'out'), 'bookingtype': getattr(self.start, 'bookingtype', 'out'),
'cashbook': getattr(getattr(cfg1, 'defbook', None), 'id', None), 'cashbook': getattr(getattr(cfg1, 'defbook', None), 'id', None),