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.form + agreement + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+
+ + + +
+ +
+
+ + agreement.tree + agreement + + + + + + + + + + + + + + + agreement.search + 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