diff --git a/locale/de.po b/locale/de.po index 9d2a64b..87af133 100644 --- a/locale/de.po +++ b/locale/de.po @@ -3,18 +3,6 @@ msgid "" msgstr "Content-Type: text/plain; charset=utf-8\n" -############## -# ir.message # -############## -msgctxt "model:ir.message,text:msg_title_notify" -msgid "Cashbook Scheduled Booking" -msgstr "Kassenbuch geplante Buchung" - -msgctxt "model:ir.message,text:msg_text_notify" -msgid "The following transaction was generated: %(bname)s" -msgstr "Die folgende Buchung wurde erzeugt: %(bname)s" - - ########### # ir.cron # ########### @@ -47,18 +35,6 @@ msgid "Scheduled Bookings" msgstr "geplante Buchungen" -################### -# ir.model.button # -################### -msgctxt "model:ir.model.button,string:book_now_button" -msgid "Execute Booking Now" -msgstr "Buchung jetzt ausführen" - -msgctxt "model:ir.model.button,help:book_now_button" -msgid "The planned booking is brought forward and executed now. The next posting is then scheduled regularly for the following execution." -msgstr "Die geplante Buchung wird vorgezogen und jetzt ausgeführt. Die nächste Buchung wird dann regulär für die nachfolgende Ausführung geplant." - - ################# # ir.rule.group # ################# @@ -390,22 +366,6 @@ msgctxt "help:cashbook.planner,move_event:" msgid "If the date of execution falls on a weekend or holiday, it can be moved to a business day." msgstr "Wenn das Datum der Ausführung auf ein Wochenende oder Feiertag fällt, kann es auf einen Geschäftstag verschoben werden." -msgctxt "field:cashbook.planner,last_day_of_month:" -msgid "Last day of the month" -msgstr "letzer Tag des Monats" - -msgctxt "help:cashbook.planner,last_day_of_month:" -msgid "The booking is made on the last day of the month." -msgstr "Die Buchung wird am letzten Tag des Monats ausgeführt." - -msgctxt "field:cashbook.planner,notify_bycron:" -msgid "Notify" -msgstr "Benachrichtigen" - -msgctxt "help:cashbook.planner,notify_bycron:" -msgid "A notification will appear in the web browser when the booking has been created." -msgstr "Es wird eine Benachrichtigung im Webbrowser angezeigt wenn die Buchung erstellt wurde." - ############################ # cashbook.planner.nextrun # diff --git a/locale/en.po b/locale/en.po index 2a86165..cb63fac 100644 --- a/locale/en.po +++ b/locale/en.po @@ -2,14 +2,6 @@ msgid "" msgstr "Content-Type: text/plain; charset=utf-8\n" -msgctxt "model:ir.message,text:msg_title_notify" -msgid "Cashbook Scheduled Booking" -msgstr "Cashbook Scheduled Booking" - -msgctxt "model:ir.message,text:msg_text_notify" -msgid "The following transaction was generated: %(bname)s" -msgstr "The following transaction was generated: %(bname)s" - msgctxt "selection:ir.cron,method:" msgid "Execute scheduled bookings" msgstr "Execute scheduled bookings" @@ -26,14 +18,6 @@ msgctxt "model:ir.action,name:act_planner_view" msgid "Scheduled Bookings" msgstr "Scheduled Bookings" -msgctxt "model:ir.model.button,string:book_now_button" -msgid "Execute Booking Now" -msgstr "Execute Booking Now" - -msgctxt "model:ir.model.button,help:book_now_button" -msgid "The planned booking is brought forward and executed now. The next posting is then scheduled regularly for the following execution." -msgstr "The planned booking is brought forward and executed now. The next posting is then scheduled regularly for the following execution." - msgctxt "model:ir.rule.group,name:rg_planner_admin" msgid "Administrators: scheduled bookings read/write" msgstr "Administrators: scheduled bookings read/write" @@ -390,18 +374,3 @@ msgctxt "view:cashbook.line:" msgid "Scheduled Bookings" msgstr "Scheduled Bookings" -msgctxt "field:cashbook.planner,last_day_of_month:" -msgid "Last day of the month" -msgstr "Last day of the month" - -msgctxt "help:cashbook.planner,last_day_of_month:" -msgid "The booking is made on the last day of the month." -msgstr "The booking is made on the last day of the month." - -msgctxt "field:cashbook.planner,notify_bycron:" -msgid "Notify" -msgstr "Notify" - -msgctxt "help:cashbook.planner,notify_bycron:" -msgid "A notification will appear in the web browser when the booking has been created." -msgstr "A notification will appear in the web browser when the booking has been created." diff --git a/message.xml b/message.xml deleted file mode 100644 index 7686921..0000000 --- a/message.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - Cashbook Scheduled Booking - - - The following transaction was generated: %(bname)s - - - - diff --git a/planner.py b/planner.py index 2435007..547de8e 100644 --- a/planner.py +++ b/planner.py @@ -14,7 +14,6 @@ from trytond.pool import Pool from trytond.report import Report from trytond.i18n import gettext from trytond.pyson import Eval, Bool, If, And -from trytond.bus import notify from trytond.modules.currency.fields import Monetary from trytond.modules.cashbook.book import sel_state_book from trytond.modules.cashbook.line import sel_bookingtype as sel_bookingtype_cb @@ -92,14 +91,7 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): [('monthday', '>=', 1), ('monthday', '<=', 31)], ('monthday', '=', None))], depends=['weekday', 'frequ'], - states={ - 'required': And(COND_MONTHDAY, ~Eval('last_day_of_month', False)), - 'invisible': ~And( - COND_MONTHDAY, ~Eval('last_day_of_month', False))}) - last_day_of_month = fields.Boolean( - string='Last day of the month', depends=['weekday', 'frequ'], - help='The booking is made on the last day of the month.', - states={'invisible': ~COND_MONTHDAY}) + states={'required': COND_MONTHDAY, 'invisible': ~COND_MONTHDAY}) interval = fields.Integer( string='Interval', required=True, help='Select an interval to run the rule on every n-th date.', @@ -118,9 +110,6 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): string='If no business day', required=True, selection=SEL_MOVE_EVENT, help='If the date of execution falls on a weekend or holiday, ' + 'it can be moved to a business day.') - notify_bycron = fields.Boolean( - string='Notify', help='A notification will appear in the web ' + - 'browser when the booking has been created.') bookingtype = fields.Selection( string='Type', selection=sel_bookingtype, required=True, @@ -191,10 +180,8 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): Index( t, (t.end_date, Index.Range(order='ASC')), - where=t.end_date != DEF_NONE)}) - cls._buttons.update({ - 'booknow': {'readonly': ~Eval('active', False)}, - }) + where=t.end_date != DEF_NONE), + }) def get_rec_name(self, name=None): """ get formatted name of record @@ -276,8 +263,6 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): count = 5 count = 1 if count < 1 else 100 if count > 100 else count - last_day_of_month = params.get( - 'last_day_of_month', self.last_day_of_month) end_date = params.get('end_date', self.end_date) frequ = pfrequ[params.get('frequ', self.frequ)] @@ -298,18 +283,6 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): interval = 1 interval = 1 if interval < 1 else 10 if interval > 10 else interval - # last-day-of-month: set date short before end of month, - # then compute move result to end of month - updt_lastday = False - if last_day_of_month and (frequ == MONTHLY) and not pweekday: - monthday = 28 - updt_lastday = True - - lastday_valid = last_day_of_month and ( - frequ == MONTHLY) and (pweekday is None) - assert (lastday_valid or not last_day_of_month), \ - ('last-day-of-month can only be used with frequ=month ' + - 'and weekday=99.') assert (monthday is None) or (pweekday is None), \ "weekday and monthday cannot be used together" @@ -324,12 +297,7 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): for x in dtrule: if (query_date and (x.date() >= query_date)) or \ (query_date is None): - x_date = x.date() - if updt_lastday: - x_date = ( - (x_date + timedelta(days=5)).replace(day=1) - - timedelta(days=1)) - x_date = get_moved_date(x_date, move_event) + x_date = get_moved_date(x.date(), move_event) # if date was re-arranged backwards and we are before # query_date - skip it @@ -400,7 +368,7 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): @fields.depends( 'start_date', 'end_date', 'frequ', 'weekday', 'monthday', - 'interval', 'setpos', 'move_event', 'last_day_of_month') + 'interval', 'setpos', 'move_event') def on_change_with_nextdates(self, name=None): """ Calculates the next 5 appointments based on the configured rule, returns a formatted date list @@ -433,8 +401,7 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): 'weekday': self.weekday, 'monthday': self.monthday, 'interval': self.interval, - 'setpos': self.setpos, - 'last_day_of_month': self.last_day_of_month} + 'setpos': self.setpos} )]) @fields.depends('cashbook', '_parent_cashbook.owner') @@ -461,33 +428,26 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): elif self.bookingtype in ['mvin', 'mvout']: self.category = None - @fields.depends( - 'frequ', 'setpos', 'weekday', 'monthday', 'last_day_of_month') + @fields.depends('frequ', 'setpos', 'weekday', 'monthday') def on_change_frequ(self): """ update fields """ if self.frequ and self.frequ == 'month': if self.weekday: if self.weekday == '99': - if self.last_day_of_month: - self.monthday = None - else: - if self.monthday is None: - self.monthday = 1 + if self.monthday is None: + self.monthday = 1 self.setpos = None else: if self.setpos is None: self.setpos = 1 self.monthday = None - self.last_day_of_month = False else: self.setpos = None self.monthday = None self.weekday = '99' - self.last_day_of_month = False - @fields.depends( - 'frequ', 'setpos', 'weekday', 'monthday', 'last_day_of_month') + @fields.depends('frequ', 'setpos', 'weekday', 'monthday') def on_change_weekday(self): """ clear day-of-month if weekday is used """ @@ -586,15 +546,6 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): """ return 1 - @classmethod - def default_last_day_of_month(cls): - """ get default for last-day-of-month - - Returns: - boolean: False - """ - return False - @classmethod def default_frequ(cls): """ get default for frequency @@ -618,15 +569,6 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): IrDate = Pool().get('ir.date') return IrDate.today() - @classmethod - def default_notify_bycron(cls): - """ get False as default - - Returns: - boolean: False - """ - return False - @classmethod def fill_placeholder(cls, linedata): """ replace placeholder in description @@ -745,20 +687,6 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): if to_write: NextRun.write(*to_write) - @classmethod - @ModelView.button - def booknow(cls, records): - """ run planned booking now - """ - to_work = [x for x in records if x.active and x.nextrun_date] - cls.run_booking(to_work) - - for record in to_work: - if record.active: - cls.update_next_occurence( - [record], - query_date=record.nextrun_date + timedelta(days=1)) - @classmethod def create(cls, vlist): """ update nextrun-records on create of planner-records @@ -856,27 +784,11 @@ class ScheduledBooking(DeactivableMixin, ModelSQL, ModelView): else: to_create.append(line) - to_notify = [] if to_create_check: lines = Line.create(to_create_check) Line.wfcheck(lines) - to_notify.extend([ - x for x in lines - if x.planners[0].notify_bycron]) - if to_create: - lines = Line.create(to_create) - to_notify.extend([ - x for x in lines - if x.planners[0].notify_bycron]) - - for line in to_notify: - notify( - title=gettext('cashbook_planner.msg_title_notify'), - body=gettext( - 'cashbook_planner.msg_text_notify', - bname=line.rec_name), - user=line.cashbook.owner.id) + Line.create(to_create) @classmethod def cronjob(cls): diff --git a/planner.xml b/planner.xml index df428fc..5146fe1 100644 --- a/planner.xml +++ b/planner.xml @@ -157,17 +157,5 @@ full copyright notices and license terms. --> - - - booknow - Execute Booking Now - The planned booking is brought forward and executed now. The next posting is then scheduled regularly for the following execution. - - - - - - - diff --git a/tests/planner.py b/tests/planner.py index 29271f5..2bd39e0 100644 --- a/tests/planner.py +++ b/tests/planner.py @@ -245,17 +245,6 @@ class PlannerTestCase(object): [date(2022, 5, 11), date(2022, 6, 8), date(2022, 7, 13), date(2022, 8, 10), date(2022, 9, 14), date(2022, 10, 12)]) - # last day of month - self.assertEqual( - job._compute_dates_by_rrule( - query_date=date(2022, 5, 1), count=6, - params={ - 'weekday': '99', 'end_date': None, 'frequ': 'month', - 'interval': 1, 'setpos': None, 'monthday': None, - 'last_day_of_month': True}), - [date(2022, 5, 31), date(2022, 6, 30), date(2022, 7, 31), - date(2022, 8, 31), date(2022, 9, 30), date(2022, 10, 31)]) - # set up holidays cfg1 = Config( holidays='01-01;05-01;easter:+1;easter:-2;ascension;whitsun:+1') @@ -388,23 +377,6 @@ class PlannerTestCase(object): 'setpos': 5, 'monthday': None, 'weekday': '2', 'end_date': None}]) - @with_transaction() - def test_planner_run_booking_now(self): - """ create job, press button 'booknow' - """ - Planner = Pool().get('cashbook.planner') - - job = self.prep_create_job() - self.assertEqual( - job.rec_name, "Job 1|Book 1|Exp|Cat1|05/01/2022|usd0.00") - self.assertEqual( - job._compute_dates_by_rrule( - count=1, query_date=date(2022, 5, 1)), [ - date(2022, 5, 1)]) - Planner.booknow([job]) - self.assertEqual( - job.rec_name, "Job 1|Book 1|Exp|Cat1|06/01/2022|usd0.00") - @with_transaction() def test_planner_create_update_nextrun(self): """ create job, check nextrun-record diff --git a/tryton.cfg b/tryton.cfg index c51caaf..24da6fd 100644 --- a/tryton.cfg +++ b/tryton.cfg @@ -5,7 +5,6 @@ depends: extras_depend: cashbook_investment xml: - message.xml group.xml planner.xml nextrun.xml diff --git a/view/planner_form.xml b/view/planner_form.xml index d7b8fbb..86e826f 100644 --- a/view/planner_form.xml +++ b/view/planner_form.xml @@ -12,8 +12,7 @@ full copyright notices and license terms. -->