diff --git a/agreement/__manifest__.py b/agreement/__manifest__.py
index de0e4bf74..4b562c04e 100644
--- a/agreement/__manifest__.py
+++ b/agreement/__manifest__.py
@@ -2,27 +2,24 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
- 'name': 'Agreement',
- 'summary': "Adds an agreement object",
- 'version': '12.0.1.2.0',
- 'category': 'Contract',
- 'author': 'Akretion, '
- 'Yves Goldberg (Ygol Internetwork), '
- 'Odoo Community Association (OCA)',
- 'website': 'https://github.com/oca/contract',
- 'license': 'AGPL-3',
- 'depends': ['mail'],
- 'data': [
- 'security/ir.model.access.csv',
- 'security/agreement_security.xml',
- 'views/agreement.xml',
- 'views/agreement_type.xml',
- ],
- 'demo': ['demo/demo.xml'],
- 'development_status': 'Beta',
- 'maintainers': [
- 'ygol',
- 'alexis-via',
+ "name": "Agreement",
+ "summary": "Adds an agreement object",
+ "version": "12.0.1.2.0",
+ "category": "Contract",
+ "author": "Akretion, "
+ "Yves Goldberg (Ygol Internetwork), "
+ "Odoo Community Association (OCA)",
+ "website": "https://github.com/oca/contract",
+ "license": "AGPL-3",
+ "depends": ["mail"],
+ "data": [
+ "security/ir.model.access.csv",
+ "security/agreement_security.xml",
+ "views/agreement.xml",
+ "views/agreement_type.xml",
],
- 'installable': True,
+ "demo": ["demo/demo.xml"],
+ "development_status": "Beta",
+ "maintainers": ["ygol", "alexis-via",],
+ "installable": True,
}
diff --git a/agreement/demo/demo.xml b/agreement/demo/demo.xml
index 5cc580779..25c2ed328 100644
--- a/agreement/demo/demo.xml
+++ b/agreement/demo/demo.xml
@@ -1,63 +1,53 @@
-
+
-
-
-
-
- C2C-IT0042
- Hardware IT
-
- 2017-09-10
- 2017-09-10
- 2018-09-10
-
-
-
- C2C-IT0043
- Fiber access office Lausanne
-
-
-
-
-
-
-
- AGR-VETO001
- Vétérinaire
-
- 2017-08-01
- 2017-08-01
- 2018-08-01
-
-
-
- AGR-TEL001
- Wazo IPBX deployment and maintenance
-
- 2017-05-05
- 2017-05-05
- 2018-09-10
-
-
-
- BUY-VOIP012
- SIP Phones supply
-
-
-
-
-
-
-
- BUY-VOIP013
- SIP-ISDN gateways
-
- 2017-09-02
-
-
-
+
+ C2C-IT0042
+ Hardware IT
+
+ 2017-09-10
+ 2017-09-10
+ 2018-09-10
+
+
+ C2C-IT0043
+ Fiber access office Lausanne
+
+
+
+
+
+
+ AGR-VETO001
+ Vétérinaire
+
+ 2017-08-01
+ 2017-08-01
+ 2018-08-01
+
+
+ AGR-TEL001
+ Wazo IPBX deployment and maintenance
+
+ 2017-05-05
+ 2017-05-05
+ 2018-09-10
+
+
+ BUY-VOIP012
+ SIP Phones supply
+
+
+
+
+
+
+ BUY-VOIP013
+ SIP-ISDN gateways
+
+ 2017-09-02
+
diff --git a/agreement/models/agreement.py b/agreement/models/agreement.py
index 0eae3eece..c4aa7e306 100644
--- a/agreement/models/agreement.py
+++ b/agreement/models/agreement.py
@@ -2,50 +2,57 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-from odoo import _, api, models, fields
+from odoo import _, api, fields, models
class Agreement(models.Model):
- _name = 'agreement'
- _description = 'Agreement'
+ _name = "agreement"
+ _description = "Agreement"
_inherit = ["mail.thread", "mail.activity.mixin"]
- code = fields.Char(required=True, track_visibility='onchange')
- name = fields.Char(required=True, track_visibility='onchange')
+ code = fields.Char(required=True, track_visibility="onchange")
+ name = fields.Char(required=True, track_visibility="onchange")
partner_id = fields.Many2one(
- 'res.partner', string='Partner', ondelete='restrict',
- domain=[('parent_id', '=', False)], track_visibility='onchange')
+ "res.partner",
+ string="Partner",
+ ondelete="restrict",
+ domain=[("parent_id", "=", False)],
+ track_visibility="onchange",
+ )
company_id = fields.Many2one(
- 'res.company', string='Company',
- default=lambda self: self.env['res.company']._company_default_get())
+ "res.company",
+ string="Company",
+ default=lambda self: self.env["res.company"]._company_default_get(),
+ )
is_template = fields.Boolean(
string="Is a Template?",
default=False,
copy=False,
help="Set if the agreement is a template. "
- "Template agreements don't require a partner."
+ "Template agreements don't require a partner.",
)
agreement_type_id = fields.Many2one(
- 'agreement.type',
- string="Agreement Type",
- help="Select the type of agreement",
+ "agreement.type", string="Agreement Type", help="Select the type of agreement",
)
domain = fields.Selection(
- '_domain_selection', string='Domain', default='sale',
- track_visibility='onchange')
+ "_domain_selection",
+ string="Domain",
+ default="sale",
+ track_visibility="onchange",
+ )
active = fields.Boolean(default=True)
- signature_date = fields.Date(track_visibility='onchange')
- start_date = fields.Date(track_visibility='onchange')
- end_date = fields.Date(track_visibility='onchange')
+ signature_date = fields.Date(track_visibility="onchange")
+ start_date = fields.Date(track_visibility="onchange")
+ end_date = fields.Date(track_visibility="onchange")
@api.model
def _domain_selection(self):
return [
- ('sale', _('Sale')),
- ('purchase', _('Purchase')),
- ]
+ ("sale", _("Sale")),
+ ("purchase", _("Purchase")),
+ ]
- @api.onchange('agreement_type_id')
+ @api.onchange("agreement_type_id")
def agreement_type_change(self):
if self.agreement_type_id and self.agreement_type_id.domain:
self.domain = self.agreement_type_id.domain
@@ -55,21 +62,23 @@ class Agreement(models.Model):
for agr in self:
name = agr.name
if agr.code:
- name = '[%s] %s' % (agr.code, agr.name)
+ name = "[{}] {}".format(agr.code, agr.name)
res.append((agr.id, name))
return res
- _sql_constraints = [(
- 'code_partner_company_unique',
- 'unique(code, partner_id, company_id)',
- 'This agreement code already exists for this partner!'
- )]
+ _sql_constraints = [
+ (
+ "code_partner_company_unique",
+ "unique(code, partner_id, company_id)",
+ "This agreement code already exists for this partner!",
+ )
+ ]
- @api.returns('self', lambda value: value.id)
+ @api.returns("self", lambda value: value.id)
def copy(self, default=None):
"""Always assign a value for code because is required"""
default = dict(default or {})
- if default.get('code', False):
+ if default.get("code", False):
return super().copy(default)
- default.setdefault('code', _("%s (copy)") % (self.code))
+ default.setdefault("code", _("%s (copy)") % (self.code))
return super().copy(default)
diff --git a/agreement/models/agreement_type.py b/agreement/models/agreement_type.py
index 8074b5262..2508ac8cf 100644
--- a/agreement/models/agreement_type.py
+++ b/agreement/models/agreement_type.py
@@ -10,9 +10,8 @@ class AgreementType(models.Model):
name = fields.Char(string="Name", required=True)
active = fields.Boolean(default=True)
- domain = fields.Selection(
- '_domain_selection', string='Domain', default='sale')
+ domain = fields.Selection("_domain_selection", string="Domain", default="sale")
@api.model
def _domain_selection(self):
- return self.env['agreement']._domain_selection()
+ return self.env["agreement"]._domain_selection()
diff --git a/agreement/security/agreement_security.xml b/agreement/security/agreement_security.xml
index 9784e6b7a..ed5a6df23 100644
--- a/agreement/security/agreement_security.xml
+++ b/agreement/security/agreement_security.xml
@@ -1,26 +1,22 @@
-
+
-
-
-
-
- Agreement multi-company
-
- ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]
-
-
-
- Use agreement type
-
-
-
-
- Use agreement template
-
-
-
+
+ Agreement multi-company
+
+ ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]
+
+
+ Use agreement type
+
+
+
+ Use agreement template
+
+
diff --git a/agreement/views/agreement.xml b/agreement/views/agreement.xml
index bb6b8925b..42595cabc 100644
--- a/agreement/views/agreement.xml
+++ b/agreement/views/agreement.xml
@@ -1,120 +1,159 @@
-
+
-
-
-
-
- agreement.form
- agreement
-
-
-
-
-
-
- agreement.tree
- agreement
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- agreement.search
- agreement
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Agreements
- agreement
- tree,form
-
-
-
-
-
-
-
-
+
+
+
+
+ Agreements
+ agreement
+ tree,form
+
+
+
+
diff --git a/agreement/views/agreement_type.xml b/agreement/views/agreement_type.xml
index b801260ee..8a5290d02 100644
--- a/agreement/views/agreement_type.xml
+++ b/agreement/views/agreement_type.xml
@@ -1,4 +1,4 @@
-
+
@@ -6,12 +6,11 @@
agreement.type
-
-
+
+
-
Agreement Type Form
@@ -19,43 +18,62 @@
-
+
-
agreement.type.search
agreement.type
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
Agreement Types