Add wizard for testing subscription recurrence rule
issue10707 review365941002
This commit is contained in:
1 parent
05d57678e4
commit
13b9df6455
6 files changed
+107
No files matched your search
@@ -1,3 +1,4 @@
|
||||
* Add wizard for testing subscription recurrence rule
|
||||
* Always fill invoice date
|
||||
|
||||
Version 6.0.0 - 2021-05-03
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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)
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
Reference in new issue
Block a user