mirror of
https://github.com/OCA/contract.git
synced 2025-02-13 17:57:24 +02:00
[IMP] agreement_legal: Define warning days cron and filter
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
"version": "14.0.2.4.1",
|
||||
"depends": ["contacts", "agreement", "product"],
|
||||
"data": [
|
||||
"data/cron.xml",
|
||||
"data/ir_sequence.xml",
|
||||
"data/agreement_stage.xml",
|
||||
"data/agreement_type.xml",
|
||||
|
||||
25
agreement_legal/data/cron.xml
Normal file
25
agreement_legal/data/cron.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo noupdate="1">
|
||||
<!-- Add warning days -->
|
||||
<record id="mail_activity_review_agreement" model="mail.activity.type">
|
||||
<field name="name">Agreement needs a review</field>
|
||||
<field name="summary">note</field>
|
||||
<field name="category">default</field>
|
||||
<field name="res_model_id" ref="model_agreement" />
|
||||
<field name="icon">fa-tasks</field>
|
||||
<field name="delay_count">0</field>
|
||||
</record>
|
||||
<!--Test warning days -->
|
||||
<record model="ir.cron" forcecreate="True" id="ir_cron_test_acc_move_except">
|
||||
<field name="name">Agreement: Check to Review Days</field>
|
||||
<field name="model_id" ref="agreement_legal.model_agreement" />
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._alert_to_review_date()</field>
|
||||
<field name="user_id" ref="base.user_root" />
|
||||
<field name="interval_number">20</field>
|
||||
<field name="interval_type">minutes</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="doall" eval="False" />
|
||||
<field name="active" eval="True" />
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
import ast
|
||||
import json as simplejson
|
||||
from datetime import timedelta
|
||||
|
||||
from lxml import etree
|
||||
|
||||
@@ -293,6 +294,44 @@ class Agreement(models.Model):
|
||||
readonly = fields.Boolean(
|
||||
related="stage_id.readonly",
|
||||
)
|
||||
readonly = fields.Boolean(
|
||||
related="stage_id.readonly",
|
||||
)
|
||||
to_review_date = fields.Date(
|
||||
compute="_compute_to_review_date",
|
||||
store=True,
|
||||
readonly=False,
|
||||
help="Date used to warn us some days before agreement expires",
|
||||
)
|
||||
|
||||
@api.depends("agreement_type_id", "end_date")
|
||||
def _compute_to_review_date(self):
|
||||
for record in self:
|
||||
if record.end_date:
|
||||
record.to_review_date = record.end_date + timedelta(
|
||||
days=-record.agreement_type_id.review_days
|
||||
)
|
||||
|
||||
@api.model
|
||||
def _alert_to_review_date(self):
|
||||
activities = self.search(
|
||||
[
|
||||
("to_review_date", "=", fields.datetime.today()),
|
||||
("agreement_type_id.review_user_id", "!=", False),
|
||||
]
|
||||
)
|
||||
for activity in activities:
|
||||
if (
|
||||
self.env["mail.activity"].search_count(
|
||||
[("res_id", "=", activity.id), ("res_model", "=", "agreement")]
|
||||
)
|
||||
== 0
|
||||
):
|
||||
activity.activity_schedule(
|
||||
"agreement_legal.mail_activity_review_agreement",
|
||||
user_id=activity.type_id.review_user_id.id,
|
||||
note=_("Your activity is going to end soon"),
|
||||
)
|
||||
|
||||
# compute the dynamic content for jinja expression
|
||||
def _compute_dynamic_description(self):
|
||||
|
||||
@@ -11,3 +11,7 @@ class AgreementType(models.Model):
|
||||
agreement_subtypes_ids = fields.One2many(
|
||||
"agreement.subtype", "agreement_type_id", string="Sub-Types"
|
||||
)
|
||||
review_user_id = fields.Many2one(
|
||||
"res.users", help="User assigned automatically the activity on review date"
|
||||
)
|
||||
review_days = fields.Integer()
|
||||
|
||||
@@ -226,6 +226,10 @@
|
||||
name="end_date"
|
||||
attrs="{'required': [('is_template', '=', False)], 'invisible': [('is_template', '=', True)]}"
|
||||
/>
|
||||
<field
|
||||
name="to_review_date"
|
||||
attrs="{'required': [('is_template', '=', False), ('end_date', '!=', False)], 'invisible': [('is_template', '=', True)]}"
|
||||
/>
|
||||
<field name="expiration_notice" />
|
||||
<field name="change_notice" />
|
||||
<field
|
||||
@@ -523,6 +527,11 @@
|
||||
string="Templates"
|
||||
domain="[('active','=',True),('is_template', '=', True)]"
|
||||
/>
|
||||
<filter
|
||||
name="filter_to_review"
|
||||
string="Agreements to review"
|
||||
domain="[('to_review_date', '<=', context_today().strftime('%Y-%m-%d')), ('end_date', '>=', context_today().strftime('%Y-%m-%d'))]"
|
||||
/>
|
||||
<filter
|
||||
name="group_partner_id"
|
||||
string="Partners"
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
<field name="model">agreement.type</field>
|
||||
<field name="inherit_id" ref="agreement.agreement_type_form_view" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group[@name='main']" position="inside">
|
||||
<field name="review_user_id" />
|
||||
</xpath>
|
||||
<xpath expr="//sheet" position="inside">
|
||||
<field name="agreement_subtypes_ids" nolabel="1">
|
||||
<tree editable="bottom">
|
||||
|
||||
Reference in New Issue
Block a user