odoo-addon-base-tier-validation 15.0.1.4.0__py3-none-any.whl → 15.0.1.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- odoo/addons/base_tier_validation/README.rst +1 -1
- odoo/addons/base_tier_validation/__manifest__.py +2 -1
- odoo/addons/base_tier_validation/data/cron_data.xml +17 -0
- odoo/addons/base_tier_validation/data/mail_data.xml +18 -0
- odoo/addons/base_tier_validation/i18n/base_tier_validation.pot +36 -0
- odoo/addons/base_tier_validation/models/tier_definition.py +35 -0
- odoo/addons/base_tier_validation/models/tier_review.py +40 -0
- odoo/addons/base_tier_validation/static/description/index.html +8 -5
- odoo/addons/base_tier_validation/tests/__init__.py +1 -0
- odoo/addons/base_tier_validation/tests/common.py +1 -1
- odoo/addons/base_tier_validation/tests/test_tier_validation_reminder.py +46 -0
- odoo/addons/base_tier_validation/views/tier_definition_view.xml +1 -0
- {odoo_addon_base_tier_validation-15.0.1.4.0.dist-info → odoo_addon_base_tier_validation-15.0.1.5.0.dist-info}/METADATA +3 -6
- {odoo_addon_base_tier_validation-15.0.1.4.0.dist-info → odoo_addon_base_tier_validation-15.0.1.5.0.dist-info}/RECORD +16 -14
- {odoo_addon_base_tier_validation-15.0.1.4.0.dist-info → odoo_addon_base_tier_validation-15.0.1.5.0.dist-info}/WHEEL +1 -1
- {odoo_addon_base_tier_validation-15.0.1.4.0.dist-info → odoo_addon_base_tier_validation-15.0.1.5.0.dist-info}/top_level.txt +0 -0
@@ -7,7 +7,7 @@ Base Tier Validation
|
|
7
7
|
!! This file is generated by oca-gen-addon-readme !!
|
8
8
|
!! changes will be overwritten. !!
|
9
9
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
10
|
-
!! source digest: sha256:
|
10
|
+
!! source digest: sha256:6630e37cda41b78f1f3dfb44fb574c46992a747d7afb4c55e3ca7691027d177d
|
11
11
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
12
12
|
|
13
13
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
|
@@ -3,7 +3,7 @@
|
|
3
3
|
{
|
4
4
|
"name": "Base Tier Validation",
|
5
5
|
"summary": "Implement a validation process based on tiers.",
|
6
|
-
"version": "15.0.1.
|
6
|
+
"version": "15.0.1.5.0",
|
7
7
|
"development_status": "Mature",
|
8
8
|
"maintainers": ["LoisRForgeFlow"],
|
9
9
|
"category": "Tools",
|
@@ -14,6 +14,7 @@
|
|
14
14
|
"installable": True,
|
15
15
|
"depends": ["mail"],
|
16
16
|
"data": [
|
17
|
+
"data/cron_data.xml",
|
17
18
|
"data/mail_data.xml",
|
18
19
|
"security/ir.model.access.csv",
|
19
20
|
"security/tier_validation_security.xml",
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<odoo noupdate="1">
|
3
|
+
<record id="ir_cron_auto_tier_validation" model="ir.cron">
|
4
|
+
<field name="name">Send Tier Review Reminder</field>
|
5
|
+
<field name="interval_number">1</field>
|
6
|
+
<field name="interval_type">days</field>
|
7
|
+
<field name="numbercall">-1</field>
|
8
|
+
<field
|
9
|
+
name="nextcall"
|
10
|
+
eval="(datetime.now() + timedelta(minutes=5)).strftime('%Y-%m-%d %H:%M:%S')"
|
11
|
+
/>
|
12
|
+
<field name="doall" eval="False" />
|
13
|
+
<field name="model_id" ref="model_tier_definition" />
|
14
|
+
<field name="code">model._cron_send_review_reminder()</field>
|
15
|
+
<field name="state">code</field>
|
16
|
+
</record>
|
17
|
+
</odoo>
|
@@ -40,4 +40,22 @@
|
|
40
40
|
<field name="internal" eval="True" />
|
41
41
|
<field name="hidden" eval="True" />
|
42
42
|
</record>
|
43
|
+
<record
|
44
|
+
id="mt_tier_validation_reminder"
|
45
|
+
model="mail.message.subtype"
|
46
|
+
forcecreate="1"
|
47
|
+
>
|
48
|
+
<field name="name">Tier Validation Reminder</field>
|
49
|
+
<field name="default" eval="True" />
|
50
|
+
<field name="internal" eval="True" />
|
51
|
+
<field name="hidden" eval="True" />
|
52
|
+
</record>
|
53
|
+
<record
|
54
|
+
id="mail_act_tier_validation_reminder"
|
55
|
+
model="mail.activity.type"
|
56
|
+
forcecreate="1"
|
57
|
+
>
|
58
|
+
<field name="name">Tier Validation Reminder</field>
|
59
|
+
<field name="icon">fa-bell</field>
|
60
|
+
</record>
|
43
61
|
</odoo>
|
@@ -56,6 +56,12 @@ msgstr ""
|
|
56
56
|
msgid "<span>Bypassed, if previous tier was validated by same reviewer</span>"
|
57
57
|
msgstr ""
|
58
58
|
|
59
|
+
#. module: base_tier_validation
|
60
|
+
#: code:addons/base_tier_validation/models/tier_review.py:0
|
61
|
+
#, python-format
|
62
|
+
msgid "A review has been requested %s days ago."
|
63
|
+
msgstr ""
|
64
|
+
|
59
65
|
#. module: base_tier_validation
|
60
66
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
61
67
|
#, python-format
|
@@ -315,6 +321,11 @@ msgstr ""
|
|
315
321
|
msgid "Last Modified on"
|
316
322
|
msgstr ""
|
317
323
|
|
324
|
+
#. module: base_tier_validation
|
325
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__last_reminder_date
|
326
|
+
msgid "Last Reminder Date"
|
327
|
+
msgstr ""
|
328
|
+
|
318
329
|
#. module: base_tier_validation
|
319
330
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
320
331
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -379,6 +390,13 @@ msgstr ""
|
|
379
390
|
msgid "Notify Reviewers on Creation"
|
380
391
|
msgstr ""
|
381
392
|
|
393
|
+
#. module: base_tier_validation
|
394
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_reminder_delay
|
395
|
+
msgid ""
|
396
|
+
"Number of days after which a message must be posted to remind about pending "
|
397
|
+
"validation (0 = no reminder)"
|
398
|
+
msgstr ""
|
399
|
+
|
382
400
|
#. module: base_tier_validation
|
383
401
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
384
402
|
#, python-format
|
@@ -520,6 +538,18 @@ msgstr ""
|
|
520
538
|
msgid "Reviews"
|
521
539
|
msgstr ""
|
522
540
|
|
541
|
+
#. module: base_tier_validation
|
542
|
+
#: model:ir.actions.server,name:base_tier_validation.ir_cron_auto_tier_validation_ir_actions_server
|
543
|
+
#: model:ir.cron,cron_name:base_tier_validation.ir_cron_auto_tier_validation
|
544
|
+
#: model:ir.cron,name:base_tier_validation.ir_cron_auto_tier_validation
|
545
|
+
msgid "Send Tier Review Reminder"
|
546
|
+
msgstr ""
|
547
|
+
|
548
|
+
#. module: base_tier_validation
|
549
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_reminder_delay
|
550
|
+
msgid "Send reminder message on pending reviews"
|
551
|
+
msgstr ""
|
552
|
+
|
523
553
|
#. module: base_tier_validation
|
524
554
|
#. openerp-web
|
525
555
|
#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0
|
@@ -627,6 +657,12 @@ msgstr ""
|
|
627
657
|
msgid "Tier Validation Rejected Notification"
|
628
658
|
msgstr ""
|
629
659
|
|
660
|
+
#. module: base_tier_validation
|
661
|
+
#: model:mail.activity.type,name:base_tier_validation.mail_act_tier_validation_reminder
|
662
|
+
#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_reminder
|
663
|
+
msgid "Tier Validation Reminder"
|
664
|
+
msgstr ""
|
665
|
+
|
630
666
|
#. module: base_tier_validation
|
631
667
|
#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested
|
632
668
|
msgid "Tier Validation Requested"
|
@@ -68,6 +68,11 @@ class TierDefinition(models.Model):
|
|
68
68
|
"this definition is triggered.",
|
69
69
|
)
|
70
70
|
has_comment = fields.Boolean(string="Comment", default=False)
|
71
|
+
notify_reminder_delay = fields.Integer(
|
72
|
+
string="Send reminder message on pending reviews",
|
73
|
+
help="Number of days after which a message must be posted to remind about "
|
74
|
+
"pending validation (0 = no reminder)",
|
75
|
+
)
|
71
76
|
approve_sequence = fields.Boolean(
|
72
77
|
string="Approve by sequence",
|
73
78
|
default=False,
|
@@ -88,3 +93,33 @@ class TierDefinition(models.Model):
|
|
88
93
|
rec.valid_reviewer_field_ids = self.env["ir.model.fields"].search(
|
89
94
|
[("model", "=", rec.model), ("relation", "=", "res.users")]
|
90
95
|
)
|
96
|
+
|
97
|
+
def _get_review_needing_reminder(self):
|
98
|
+
"""Return all the reviews that have the reminder setup."""
|
99
|
+
self.ensure_one()
|
100
|
+
if not self.notify_reminder_delay:
|
101
|
+
return self.env["tier.review"]
|
102
|
+
review_date = fields.Datetime.subtract(
|
103
|
+
fields.Datetime.now(), days=self.notify_reminder_delay
|
104
|
+
)
|
105
|
+
return self.env["tier.review"].search(
|
106
|
+
[
|
107
|
+
("definition_id", "=", self.id),
|
108
|
+
("status", "=", "pending"),
|
109
|
+
"|",
|
110
|
+
"&",
|
111
|
+
("create_date", "<", review_date),
|
112
|
+
("last_reminder_date", "=", False),
|
113
|
+
("last_reminder_date", "<", review_date),
|
114
|
+
],
|
115
|
+
limit=1,
|
116
|
+
)
|
117
|
+
|
118
|
+
def _cron_send_review_reminder(self):
|
119
|
+
definition_with_reminder = self.env["tier.definition"].search(
|
120
|
+
[("notify_reminder_delay", ">", 0)]
|
121
|
+
)
|
122
|
+
for record in definition_with_reminder:
|
123
|
+
review_to_remind = record._get_review_needing_reminder()
|
124
|
+
if review_to_remind:
|
125
|
+
review_to_remind._send_review_reminder()
|
@@ -1,9 +1,13 @@
|
|
1
1
|
# Copyright 2017-19 ForgeFlow S.L. (https://www.forgeflow.com)
|
2
2
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
3
3
|
|
4
|
+
import logging
|
5
|
+
|
4
6
|
from odoo import _, api, fields, models
|
5
7
|
from odoo.exceptions import ValidationError
|
6
8
|
|
9
|
+
_logger = logging.getLogger(__name__)
|
10
|
+
|
7
11
|
|
8
12
|
class TierReview(models.Model):
|
9
13
|
_name = "tier.review"
|
@@ -58,6 +62,7 @@ class TierReview(models.Model):
|
|
58
62
|
approve_sequence_bypass = fields.Boolean(
|
59
63
|
related="definition_id.approve_sequence_bypass", readonly=True
|
60
64
|
)
|
65
|
+
last_reminder_date = fields.Datetime(readonly=True)
|
61
66
|
|
62
67
|
@api.depends("definition_id.approve_sequence")
|
63
68
|
def _compute_can_review(self):
|
@@ -110,3 +115,38 @@ class TierReview(models.Model):
|
|
110
115
|
if not reviewer_field or not reviewer_field._name == "res.users":
|
111
116
|
raise ValidationError(_("There are no res.users in the selected field"))
|
112
117
|
return reviewer_field
|
118
|
+
|
119
|
+
def _get_reminder_notification_subtype(self):
|
120
|
+
return "base_tier_validation.mt_tier_validation_reminder"
|
121
|
+
|
122
|
+
def _get_reminder_activity_type(self):
|
123
|
+
return "base_tier_validation.mail_act_tier_validation_reminder"
|
124
|
+
|
125
|
+
def _notify_review_reminder_body(self):
|
126
|
+
delay = (fields.Datetime.now() - self.create_date).days
|
127
|
+
return _("A review has been requested %s days ago.") % (delay)
|
128
|
+
|
129
|
+
def _send_review_reminder(self):
|
130
|
+
record = self.env[self.model].browse(self.res_id)
|
131
|
+
# Only schedule activity if reviewer is a single user and model has activities
|
132
|
+
if len(self.reviewer_ids) == 1 and hasattr(record, "activity_ids"):
|
133
|
+
self._schedule_review_reminder_activity(record)
|
134
|
+
elif hasattr(record, "message_post"):
|
135
|
+
self._notify_review_reminder(record)
|
136
|
+
else:
|
137
|
+
msg = "Could not send reminder for record %s" % record
|
138
|
+
_logger.exception(msg)
|
139
|
+
self.last_reminder_date = fields.Datetime.now()
|
140
|
+
|
141
|
+
def _notify_review_reminder(self, record):
|
142
|
+
record.message_post(
|
143
|
+
subtype_xmlid=self._get_reminder_notification_subtype(),
|
144
|
+
body=self._notify_review_reminder_body(),
|
145
|
+
)
|
146
|
+
|
147
|
+
def _schedule_review_reminder_activity(self, record):
|
148
|
+
record.activity_schedule(
|
149
|
+
act_type_xmlid=self._get_reminder_activity_type(),
|
150
|
+
note=self._notify_review_reminder_body(),
|
151
|
+
act_values={"user_id": self.reviewer_ids.id},
|
152
|
+
)
|
@@ -8,10 +8,11 @@
|
|
8
8
|
|
9
9
|
/*
|
10
10
|
:Author: David Goodger (goodger@python.org)
|
11
|
-
:Id: $Id: html4css1.css
|
11
|
+
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
|
12
12
|
:Copyright: This stylesheet has been placed in the public domain.
|
13
13
|
|
14
14
|
Default cascading style sheet for the HTML output of Docutils.
|
15
|
+
Despite the name, some widely supported CSS2 features are used.
|
15
16
|
|
16
17
|
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
17
18
|
customize this style sheet.
|
@@ -274,7 +275,7 @@ pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
|
274
275
|
margin-left: 2em ;
|
275
276
|
margin-right: 2em }
|
276
277
|
|
277
|
-
pre.code .ln { color:
|
278
|
+
pre.code .ln { color: gray; } /* line numbers */
|
278
279
|
pre.code, code { background-color: #eeeeee }
|
279
280
|
pre.code .comment, code .comment { color: #5C6576 }
|
280
281
|
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
@@ -300,7 +301,7 @@ span.option {
|
|
300
301
|
span.pre {
|
301
302
|
white-space: pre }
|
302
303
|
|
303
|
-
span.problematic {
|
304
|
+
span.problematic, pre.problematic {
|
304
305
|
color: red }
|
305
306
|
|
306
307
|
span.section-subtitle {
|
@@ -366,7 +367,7 @@ ul.auto-toc {
|
|
366
367
|
!! This file is generated by oca-gen-addon-readme !!
|
367
368
|
!! changes will be overwritten. !!
|
368
369
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
369
|
-
!! source digest: sha256:
|
370
|
+
!! source digest: sha256:6630e37cda41b78f1f3dfb44fb574c46992a747d7afb4c55e3ca7691027d177d
|
370
371
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
371
372
|
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Mature" src="https://img.shields.io/badge/maturity-Mature-brightgreen.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-ux/tree/15.0/base_tier_validation"><img alt="OCA/server-ux" src="https://img.shields.io/badge/github-OCA%2Fserver--ux-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/server-ux-15-0/server-ux-15-0-base_tier_validation"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/server-ux&target_branch=15.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
372
373
|
<p>Validating some operations is a common need across different areas in a company
|
@@ -567,7 +568,9 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
|
567
568
|
<div class="section" id="maintainers">
|
568
569
|
<h2><a class="toc-backref" href="#toc-entry-22">Maintainers</a></h2>
|
569
570
|
<p>This module is maintained by the OCA.</p>
|
570
|
-
<a class="reference external image-reference" href="https://odoo-community.org"
|
571
|
+
<a class="reference external image-reference" href="https://odoo-community.org">
|
572
|
+
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
|
573
|
+
</a>
|
571
574
|
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
|
572
575
|
mission is to support the collaborative development of Odoo features and
|
573
576
|
promote its widespread use.</p>
|
@@ -75,7 +75,7 @@ class CommonTierValidation(common.TransactionCase):
|
|
75
75
|
|
76
76
|
# Create tier definitions:
|
77
77
|
cls.tier_def_obj = cls.env["tier.definition"]
|
78
|
-
cls.tier_def_obj.create(
|
78
|
+
cls.tier_definition = cls.tier_def_obj.create(
|
79
79
|
{
|
80
80
|
"model_id": cls.tester_model.id,
|
81
81
|
"review_type": "individual",
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright 2018-19 ForgeFlow S.L. (https://www.forgeflow.com)
|
2
|
+
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
|
3
|
+
|
4
|
+
from freezegun import freeze_time
|
5
|
+
|
6
|
+
from odoo import fields
|
7
|
+
from odoo.tests.common import tagged
|
8
|
+
|
9
|
+
from .common import CommonTierValidation
|
10
|
+
|
11
|
+
|
12
|
+
@tagged("post_install", "-at_install")
|
13
|
+
class TierTierValidation(CommonTierValidation):
|
14
|
+
def test_validation_reminder(self):
|
15
|
+
"""Check the posting of reminder to reviews."""
|
16
|
+
tier_definition = self.tier_definition
|
17
|
+
tier_definition.notify_reminder_delay = 3
|
18
|
+
|
19
|
+
# Request a review today
|
20
|
+
self.test_record.with_user(self.test_user_2.id).request_validation()
|
21
|
+
review = self.env["tier.review"].search(
|
22
|
+
[("definition_id", "=", tier_definition.id)]
|
23
|
+
)
|
24
|
+
self.assertTrue(review)
|
25
|
+
self.assertEqual(review.last_reminder_date, False)
|
26
|
+
|
27
|
+
# 2 days later no reminder should be posted
|
28
|
+
in_2_days = fields.Datetime.add(fields.Datetime.now(), days=2)
|
29
|
+
with freeze_time(in_2_days):
|
30
|
+
tier_definition._cron_send_review_reminder()
|
31
|
+
self.assertEqual(review.last_reminder_date, False)
|
32
|
+
# 4 days later first reminder
|
33
|
+
in_4_days = fields.Datetime.add(fields.Datetime.now(), days=4)
|
34
|
+
with freeze_time(in_4_days):
|
35
|
+
self.tier_definition._cron_send_review_reminder()
|
36
|
+
self.assertEqual(review.last_reminder_date, in_4_days)
|
37
|
+
# 5 days later no new reminder
|
38
|
+
in_6_days = fields.Datetime.add(fields.Datetime.now(), days=6)
|
39
|
+
with freeze_time(in_6_days):
|
40
|
+
self.tier_definition._cron_send_review_reminder()
|
41
|
+
self.assertEqual(review.last_reminder_date, in_4_days)
|
42
|
+
# 9 days later second reminder
|
43
|
+
in_9_days = fields.Datetime.add(fields.Datetime.now(), days=9)
|
44
|
+
with freeze_time(in_9_days):
|
45
|
+
self.tier_definition._cron_send_review_reminder()
|
46
|
+
self.assertEqual(review.last_reminder_date, in_9_days)
|
@@ -1,12 +1,11 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
|
-
Name: odoo-addon-
|
3
|
-
Version: 15.0.1.
|
2
|
+
Name: odoo-addon-base_tier_validation
|
3
|
+
Version: 15.0.1.5.0
|
4
4
|
Summary: Implement a validation process based on tiers.
|
5
5
|
Home-page: https://github.com/OCA/server-ux
|
6
6
|
Author: ForgeFlow, Odoo Community Association (OCA)
|
7
7
|
Author-email: support@odoo-community.org
|
8
8
|
License: AGPL-3
|
9
|
-
Platform: UNKNOWN
|
10
9
|
Classifier: Programming Language :: Python
|
11
10
|
Classifier: Framework :: Odoo
|
12
11
|
Classifier: Framework :: Odoo :: 15.0
|
@@ -24,7 +23,7 @@ Base Tier Validation
|
|
24
23
|
!! This file is generated by oca-gen-addon-readme !!
|
25
24
|
!! changes will be overwritten. !!
|
26
25
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
27
|
-
!! source digest: sha256:
|
26
|
+
!! source digest: sha256:6630e37cda41b78f1f3dfb44fb574c46992a747d7afb4c55e3ca7691027d177d
|
28
27
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
29
28
|
|
30
29
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
|
@@ -251,5 +250,3 @@ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|
|
251
250
|
This module is part of the `OCA/server-ux <https://github.com/OCA/server-ux/tree/15.0/base_tier_validation>`_ project on GitHub.
|
252
251
|
|
253
252
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
254
|
-
|
255
|
-
|
@@ -1,8 +1,9 @@
|
|
1
|
-
odoo/addons/base_tier_validation/README.rst,sha256
|
1
|
+
odoo/addons/base_tier_validation/README.rst,sha256=-tQtO_2feniz_m3sYC0jST8go-IaPO5oQWJ6KuMz6nE,6836
|
2
2
|
odoo/addons/base_tier_validation/__init__.py,sha256=rKfzYX9RhkkCxgh2f0PJLYN45Kw8T8-fwxw1pbjLuug,108
|
3
|
-
odoo/addons/base_tier_validation/__manifest__.py,sha256=
|
4
|
-
odoo/addons/base_tier_validation/data/
|
5
|
-
odoo/addons/base_tier_validation/
|
3
|
+
odoo/addons/base_tier_validation/__manifest__.py,sha256=FdbI0vNhN-fBTQJa2SvZacCH3oVbrnI6QxTa9Xj3Zkw,1476
|
4
|
+
odoo/addons/base_tier_validation/data/cron_data.xml,sha256=HMA_SgAk3_vLu_QQLHd0UyzPASuDRj5cvpiK_17esQc,707
|
5
|
+
odoo/addons/base_tier_validation/data/mail_data.xml,sha256=hXhGTSyG2NAsDfZShmpyBKTXJi46L5PP1mFJAlKmlVE,1984
|
6
|
+
odoo/addons/base_tier_validation/i18n/base_tier_validation.pot,sha256=ds5mywlrl9Oxoeln6I6fYDM2pfFux8BYNsBcifYNPgQ,26602
|
6
7
|
odoo/addons/base_tier_validation/i18n/es.po,sha256=ka4D6vYE_ny5XWu9YGWVn0JWhmY-GMxk438_MLjkHmI,27194
|
7
8
|
odoo/addons/base_tier_validation/i18n/es_MX.po,sha256=GA2LcuOGTRZQToh1hlV81WF1uuTDOtOA7y9R3V1YTro,27080
|
8
9
|
odoo/addons/base_tier_validation/i18n/fr.po,sha256=WHA2OGAxwqEBfCmrINFgPs8y77mr3hfBNMbyxowPzeE,26008
|
@@ -13,8 +14,8 @@ odoo/addons/base_tier_validation/i18n/zh_CN.po,sha256=a2nxdXEhlrAM_ngpbBp0KHtrvk
|
|
13
14
|
odoo/addons/base_tier_validation/models/__init__.py,sha256=mLFF29I3WBYA2Qwlf9NU4pP2KwDKn5JpbZRzwe9-9pg,210
|
14
15
|
odoo/addons/base_tier_validation/models/res_config_settings.py,sha256=78JEni0DTer6yzyHG456MmhYjs1YJMVR-U3C1C-tlGM,563
|
15
16
|
odoo/addons/base_tier_validation/models/res_users.py,sha256=JH2QgQdACI-0GMHEI_JmIZf4G6huvQ4PqDza4M2Li48,2245
|
16
|
-
odoo/addons/base_tier_validation/models/tier_definition.py,sha256=
|
17
|
-
odoo/addons/base_tier_validation/models/tier_review.py,sha256=
|
17
|
+
odoo/addons/base_tier_validation/models/tier_definition.py,sha256=vpjLLP3XwMl35O8pCGh_5Db85iKrDV_G5OJTUtFszRI,4468
|
18
|
+
odoo/addons/base_tier_validation/models/tier_review.py,sha256=q0xve9c8bAxjBrj2e7h7wqeZ0w0Hnm-u5Rp8iFeFJD0,6082
|
18
19
|
odoo/addons/base_tier_validation/models/tier_validation.py,sha256=-NpGKEr22hbFxsq7s01P2Z4NxFV66YaxKaPf6DxDYsQ,22473
|
19
20
|
odoo/addons/base_tier_validation/readme/CONFIGURE.rst,sha256=-XvqIRVzdEx5Pl-w5qVHayTDYzGDI1FX92ChdijeNh0,503
|
20
21
|
odoo/addons/base_tier_validation/readme/CONTRIBUTORS.rst,sha256=ibMe_AqDBgemGXGJOMH6_NCDegHoav6Umt7Fy4cmC-E,282
|
@@ -24,7 +25,7 @@ odoo/addons/base_tier_validation/readme/ROADMAP.rst,sha256=UWhIpMUTM_ido6s3jZiF8
|
|
24
25
|
odoo/addons/base_tier_validation/security/ir.model.access.csv,sha256=ZlU5wKSjQ8gL6iCulpR_AF-AdULanaGK9J1gl-Fx__4,399
|
25
26
|
odoo/addons/base_tier_validation/security/tier_validation_security.xml,sha256=eWFwz-osHgYFmVoEVzOSboO9oqUMtQ8oygyaz0os50Y,806
|
26
27
|
odoo/addons/base_tier_validation/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
|
27
|
-
odoo/addons/base_tier_validation/static/description/index.html,sha256=
|
28
|
+
odoo/addons/base_tier_validation/static/description/index.html,sha256=Jwts_rAWLrVqJqvw22z2DDWTjcJmAg9cEQg2scNO-e8,20601
|
28
29
|
odoo/addons/base_tier_validation/static/src/js/systray.js,sha256=IbDLI1ML0B22wCPRlv-2T0PzTPW4k88JbzS1Dcogsuo,5725
|
29
30
|
odoo/addons/base_tier_validation/static/src/js/tier_review_widget.js,sha256=9iEhOzvbKND-JDGDa9lhGsQd3wu9hZuJm48xdEK4uj8,1991
|
30
31
|
odoo/addons/base_tier_validation/static/src/scss/review.scss,sha256=K0ZLNShHoj-piTp7EP92EglZgsFBsHyAazPr764rrHs,687
|
@@ -32,17 +33,18 @@ odoo/addons/base_tier_validation/static/src/scss/systray.scss,sha256=vco1l3nsJfX
|
|
32
33
|
odoo/addons/base_tier_validation/static/src/xml/systray.xml,sha256=XZ-agb4gbp7NC8Nol44KRUcD4IxzELs5h-1Z-sYEago,3507
|
33
34
|
odoo/addons/base_tier_validation/static/src/xml/tier_review_template.xml,sha256=s7OszZ996NilQ39CrRo6GXMZRFbV5qfoaiM6f6KsArg,3931
|
34
35
|
odoo/addons/base_tier_validation/templates/tier_validation_templates.xml,sha256=Obob5W0mkAkhWWnr1UuR-sAZeUnH-xlEPggIXfuxbSY,3507
|
35
|
-
odoo/addons/base_tier_validation/tests/__init__.py,sha256=
|
36
|
-
odoo/addons/base_tier_validation/tests/common.py,sha256=
|
36
|
+
odoo/addons/base_tier_validation/tests/__init__.py,sha256=7tj1DSbPnyA__lAKxvjX53Ll_ZTE8y8Z1bewtZJoURI,166
|
37
|
+
odoo/addons/base_tier_validation/tests/common.py,sha256=zGOs4cOK_38Ez0tPpkdXJ-yo7AgM4OyFkgizOz2La1U,3222
|
37
38
|
odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=5hHWj92q8NCCFvw1iHDU3JAXC56SJ_W4tWw2XuNktYw,22118
|
39
|
+
odoo/addons/base_tier_validation/tests/test_tier_validation_reminder.py,sha256=jsLU-7pJtbUvKPi7ddXU4jAwiJp32pKTrluarrtLKvU,1963
|
38
40
|
odoo/addons/base_tier_validation/tests/tier_validation_tester.py,sha256=AyHJIY1w2P1pH2BHCbXrlZTqlzWdXb5K43yy4KFbqu0,1645
|
39
41
|
odoo/addons/base_tier_validation/views/res_config_settings_views.xml,sha256=PFLz_GkO4s77YReykKjLDYaUfmkCaeFNTxkeUuEYarE,4156
|
40
|
-
odoo/addons/base_tier_validation/views/tier_definition_view.xml,sha256=
|
42
|
+
odoo/addons/base_tier_validation/views/tier_definition_view.xml,sha256=BM04uI_70SVdYUM3FZRGZW0RpfiIT_R86TjyNWMmmS4,6971
|
41
43
|
odoo/addons/base_tier_validation/views/tier_review_view.xml,sha256=tPzmpz-kbQwOOtJrAcsTJEP9bJLcfzWAITCpI86kZU4,966
|
42
44
|
odoo/addons/base_tier_validation/wizard/__init__.py,sha256=52q6-LAjYeJ1Vu5ahon_jnhds9VsoJvYaQCiZc82WKw,95
|
43
45
|
odoo/addons/base_tier_validation/wizard/comment_wizard.py,sha256=JzF5RBpqx3JB3IuXdSHbZ6saLwLlRnQzGHWQk2D82uA,855
|
44
46
|
odoo/addons/base_tier_validation/wizard/comment_wizard_view.xml,sha256=lUW9oncnS7MaayA5EIbeQ2XNlTc3SZ8wE8eKSnS5w1k,967
|
45
|
-
odoo_addon_base_tier_validation-15.0.1.
|
46
|
-
odoo_addon_base_tier_validation-15.0.1.
|
47
|
-
odoo_addon_base_tier_validation-15.0.1.
|
48
|
-
odoo_addon_base_tier_validation-15.0.1.
|
47
|
+
odoo_addon_base_tier_validation-15.0.1.5.0.dist-info/METADATA,sha256=3TGGuyk_ffBm5xPbltKsE0AsSuK5SNNNRWRbdDn_sHY,7418
|
48
|
+
odoo_addon_base_tier_validation-15.0.1.5.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
49
|
+
odoo_addon_base_tier_validation-15.0.1.5.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
|
50
|
+
odoo_addon_base_tier_validation-15.0.1.5.0.dist-info/RECORD,,
|