From 374a3c0aae8b8c7e058f457246cedbe870660490 Mon Sep 17 00:00:00 2001 From: scampbell Date: Thu, 2 May 2019 11:37:18 -0700 Subject: [PATCH] [IMP] #115 Worker Agreement Smart Button --- fieldservice_agreement/__manifest__.py | 2 ++ fieldservice_agreement/models/__init__.py | 1 + fieldservice_agreement/models/fsm_person.py | 31 +++++++++++++++++++++ fieldservice_agreement/views/fsm_person.xml | 22 +++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 fieldservice_agreement/models/fsm_person.py create mode 100644 fieldservice_agreement/views/fsm_person.xml diff --git a/fieldservice_agreement/__manifest__.py b/fieldservice_agreement/__manifest__.py index ab8687d569..71ec3aa804 100644 --- a/fieldservice_agreement/__manifest__.py +++ b/fieldservice_agreement/__manifest__.py @@ -18,6 +18,7 @@ 'views/fsm_order_view.xml', 'views/fsm_equipment_view.xml', 'views/agreement_view.xml', + 'views/fsm_person.xml' ], 'installable': True, 'development_status': 'Beta', @@ -25,5 +26,6 @@ 'max3903', 'bodedra', 'smangukiya', + 'osi-scampbell' ], } diff --git a/fieldservice_agreement/models/__init__.py b/fieldservice_agreement/models/__init__.py index 07d228d784..fe35aa88a5 100644 --- a/fieldservice_agreement/models/__init__.py +++ b/fieldservice_agreement/models/__init__.py @@ -4,4 +4,5 @@ agreement, fsm_equipment, fsm_order, + fsm_person ) diff --git a/fieldservice_agreement/models/fsm_person.py b/fieldservice_agreement/models/fsm_person.py new file mode 100644 index 0000000000..c0687587d1 --- /dev/null +++ b/fieldservice_agreement/models/fsm_person.py @@ -0,0 +1,31 @@ +# Copyright (C) 2019 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class FSMPerson(models.Model): + _inherit = 'fsm.person' + + agreement_count = fields.Integer(string='Agreements', + compute='_compute_agreements') + + def _compute_agreements(self): + self.agreement_count = self.env['agreement'].search_count([ + ('partner_id', '=', self.name)]) + + @api.multi + def action_view_agreements(self): + for person in self: + action = self.env.ref('agreement_legal.\ + agreement_operations_agreement').read()[0] + agreements = self.env['agreement'].search( + [('partner_id', '=', person.partner_id.id)]) + if len(agreements) == 1: + action['views'] = [ + (self.env.ref('agreement_legal.\ + partner_agreement_form_view').id, 'form')] + action['res_id'] = agreements.id + else: + action['domain'] = [('id', 'in', agreements.ids)] + return action diff --git a/fieldservice_agreement/views/fsm_person.xml b/fieldservice_agreement/views/fsm_person.xml new file mode 100644 index 0000000000..8e44da2a6b --- /dev/null +++ b/fieldservice_agreement/views/fsm_person.xml @@ -0,0 +1,22 @@ + + + + + fsm.person.form + fsm.person + + +
+ +
+
+
+ +