Add wizard for testing subscription recurrence rule

issue10707
review365941002
This commit is contained in:
David Blanco Bautista committed 2021-10-11 15:47:49 +02:00
1 parent 05d57678e4
commit 13b9df6455
6 files changed
+107

No files matched your search

+1
View File
@@ -1,3 +1,4 @@
* Add wizard for testing subscription recurrence rule
* Always fill invoice date
Version 6.0.0 - 2021-05-03
+3
View File
@@ -17,6 +17,8 @@ def register():
configuration.ConfigurationSequence,
recurrence.RecurrenceRuleSet,
recurrence.RecurrenceRule,
recurrence.TestRecurrenceRuleSetView,
recurrence.TestRecurrenceRuleSetViewResult,
service.Service,
subscription.Subscription,
subscription.Line,
@@ -29,6 +31,7 @@ def register():
Pool.register(
subscription.CreateLineConsumption,
subscription.CreateSubscriptionInvoice,
recurrence.TestRecurrenceRuleSet,
party.Replace,
party.Erase,
module='sale_subscription', type_='wizard')
+57
View File
@@ -1,5 +1,6 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import datetime as dt
from dateutil.rrule import MO, TU, WE, TH, FR, SA, SU
from dateutil.rrule import YEARLY, MONTHLY, WEEKLY, DAILY
from dateutil.rrule import rrule, rruleset
@@ -8,6 +9,7 @@ from trytond.i18n import gettext
from trytond.model import ModelSQL, ModelView, fields
from trytond.pool import Pool
from trytond.transaction import Transaction
from trytond.wizard import Wizard, StateView, Button
from .exceptions import RecurrenceRuleValidationError
@@ -229,3 +231,58 @@ class RecurrenceRule(ModelSQL, ModelView):
recurrence_rule=self.rec_name,
exception=exception,
**self.__names__(name))) from exception
class TestRecurrenceRuleSet(Wizard):
"Test Subscription Recurrence Rule Set"
__name__ = 'sale.subscription.recurrence.rule.set.test'
start_state = 'test'
test = StateView(
'sale.subscription.recurrence.rule.set.test',
'sale_subscription.recurrence_rule_set_test_view_form',
[Button("Close", 'end', 'tryton-close', default=True)])
def default_test(self, fields):
default = {}
if(self.model and self.model.__name__
== 'sale.subscription.recurrence.rule.set'):
if self.record:
default['recurrence'] = self.record.id
return default
class TestRecurrenceRuleSetView(ModelView):
"Test Subscription Recurrence Rule Set"
__name__ = 'sale.subscription.recurrence.rule.set.test'
recurrence = fields.Many2One(
'sale.subscription.recurrence.rule.set',
"Subscription Recurrence", required=True)
start_date = fields.Date("Start Date", required=True)
count = fields.Integer("Count", required=True,
help="Used to determine how many occurences to compute.")
result = fields.One2Many(
'sale.subscription.recurrence.rule.set.test.result',
None, "Result", readonly=True)
@classmethod
def default_start_date(cls):
return Pool().get('ir.date').today()
@fields.depends('recurrence', 'start_date', 'count', 'result')
def on_change_with_result(self):
pool = Pool()
Result = pool.get('sale.subscription.recurrence.rule.set.test.result')
result = []
if self.recurrence and self.start_date and self.count:
rruleset = self.recurrence.rruleset(self.start_date)
datetime = dt.datetime.combine(self.start_date, dt.time())
for date in rruleset.xafter(datetime, self.count, inc=True):
result.append(Result(date=date.date()))
self.result = result
return self._changed_values.get('result', [])
class TestRecurrenceRuleSetViewResult(ModelView):
"Test Subscription Recurrence Rule Set Result"
__name__ = 'sale.subscription.recurrence.rule.set.test.result'
date = fields.Date("Date", readonly=True)
+27
View File
@@ -64,5 +64,32 @@ this repository contains the full copyright notices and license terms. -->
<field name="type">tree</field>
<field name="name">recurrence_rule_list</field>
</record>
<record model="ir.action.wizard" id="wizard_recurrence_test">
<field name="name">Test Recurrence Rule</field>
<field name="wiz_name">sale.subscription.recurrence.rule.set.test</field>
</record>
<record model="ir.action.keyword"
id="wizard_recurrence_test_keyword1">
<field name="keyword">form_action</field>
<field name="model">sale.subscription.recurrence.rule.set,-1</field>
<field name="action" ref="wizard_recurrence_test"/>
</record>
<menuitem
parent="menu_configuration"
action="wizard_recurrence_test"
sequence="90"
id="menu_recurrence_test"/>
<record model="ir.ui.view" id="recurrence_rule_set_test_view_form">
<field name="model">sale.subscription.recurrence.rule.set.test</field>
<field name="type">form</field>
<field name="name">recurrence_rule_set_test_form</field>
</record>
<record model="ir.ui.view" id="recurrence_rule_set_test_result_view_list">
<field name="model">sale.subscription.recurrence.rule.set.test.result</field>
<field name="type">tree</field>
<field name="name">recurrence_rule_set_test_result_list</field>
</record>
</data>
</tryton>
+13
View File
@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form cursor="recurrence">
<label name="recurrence"/>
<field name="recurrence" colspan="3"/>
<label name="start_date"/>
<field name="start_date"/>
<label name="count"/>
<field name="count"/>
<field name="result" mode="tree" colspan="4"/>
</form>
@@ -0,0 +1,6 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree>
<field name="date" expand="1"/>
</tree>