summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/hr/security/hr_security.xml1
-rw-r--r--addons/hr/views/hr_views.xml5
-rw-r--r--odoo/addons/base/models/res_partner.py3
-rw-r--r--odoo/addons/base/models/res_users.py4
-rw-r--r--odoo/addons/base/security/base_groups.xml3
-rw-r--r--odoo/addons/base/security/base_security.xml31
-rw-r--r--odoo/addons/base/views/res_partner_views.xml44
-rw-r--r--odoo/addons/base/views/res_users_views.xml4
8 files changed, 93 insertions, 2 deletions
diff --git a/addons/hr/security/hr_security.xml b/addons/hr/security/hr_security.xml
index 0d4f310aa72..5b332251eff 100644
--- a/addons/hr/security/hr_security.xml
+++ b/addons/hr/security/hr_security.xml
@@ -4,6 +4,7 @@
<record id="group_hr_user" model="res.groups">
<field name="name">Officer</field>
<field name="category_id" ref="base.module_category_human_resources"/>
+ <field name="implied_ids" eval="[(4, ref('base.group_private_addresses'))]"/>
<field name="comment">The user will be able to approve document created by employees.</field>
</record>
diff --git a/addons/hr/views/hr_views.xml b/addons/hr/views/hr_views.xml
index 04cc371ab02..6011c5b1edb 100644
--- a/addons/hr/views/hr_views.xml
+++ b/addons/hr/views/hr_views.xml
@@ -86,7 +86,10 @@
</group>
<group string="Contact Information">
<field name="address_home_id"
- context="{'show_address': 1}"
+ context="{
+ 'show_address': 1,
+ 'default_type': 'private',
+ 'form_view_ref': 'base.res_partner_view_form_private'}"
options='{"always_reload": True, "highlight_first_line": True}'/>
<field name="is_address_home_a_company" invisible="1"/>
<div class="text-warning" groups="hr.group_hr_user"
diff --git a/odoo/addons/base/models/res_partner.py b/odoo/addons/base/models/res_partner.py
index 38f49b255a0..3b27dc81c28 100644
--- a/odoo/addons/base/models/res_partner.py
+++ b/odoo/addons/base/models/res_partner.py
@@ -177,7 +177,8 @@ class Partner(models.Model):
[('contact', 'Contact'),
('invoice', 'Invoice address'),
('delivery', 'Shipping address'),
- ('other', 'Other address')], string='Address Type',
+ ('other', 'Other address'),
+ ("private", "Private Address")], string='Address Type',
default='contact',
help="Used to select automatically the right address according to the context in sales and purchases documents.")
street = fields.Char()
diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py
index 8664e70c556..a3c826eb532 100644
--- a/odoo/addons/base/models/res_users.py
+++ b/odoo/addons/base/models/res_users.py
@@ -231,6 +231,10 @@ class Users(models.Model):
'Contact Creation', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='base.group_partner_manager')
+ has_group_private_addresses = fields.Boolean(
+ 'Access to Private Addresses', compute='_compute_groups_id', inverse='_inverse_groups_id',
+ group_xml_id='base.group_private_addresses')
+
_sql_constraints = [
('login_key', 'UNIQUE (login)', 'You can not have two users with the same login !')
]
diff --git a/odoo/addons/base/security/base_groups.xml b/odoo/addons/base/security/base_groups.xml
index 863046f9c4e..a7e32bb1065 100644
--- a/odoo/addons/base/security/base_groups.xml
+++ b/odoo/addons/base/security/base_groups.xml
@@ -49,6 +49,9 @@
<field name="groups_id" eval="[(4,ref('base.group_partner_manager'))]"/>
</record>
+ <record id="group_private_addresses" model="res.groups">
+ <field name="name">Access to Private Addresses</field>
+ </record>
<!--
A group dedicated to the portal users, making groups
restrictions more convenient.
diff --git a/odoo/addons/base/security/base_security.xml b/odoo/addons/base/security/base_security.xml
index 8d03802aadf..4eeac276f83 100644
--- a/odoo/addons/base/security/base_security.xml
+++ b/odoo/addons/base/security/base_security.xml
@@ -30,6 +30,37 @@
<field name="perm_write" eval="False"/>
</record>
+ <!-- Security restriction for private addresses -->
+ <record id="res_partner_rule_private_employee" model="ir.rule">
+ <field name="name">res.partner.rule.private.employee</field>
+ <field name="model_id" ref="base.model_res_partner"/>
+ <field name="domain_force">
+ [('type', '!=', 'private')]
+ </field>
+ <field name="groups" eval="[
+ (4, ref('base.group_user')),
+ ]"/>
+ <field name="perm_read" eval="True"/>
+ <field name="perm_write" eval="False"/>
+ <field name="perm_create" eval="False"/>
+ <field name="perm_unlink" eval="False"/>
+ </record>
+ <!-- Relex previous rule for group_private_addresses -->
+ <record id="res_partner_rule_private_group" model="ir.rule">
+ <field name="name">res.partner.rule.private.group</field>
+ <field name="model_id" ref="base.model_res_partner"/>
+ <field name="domain_force">
+ [('type', '=', 'private')]
+ </field>
+ <field name="groups" eval="[
+ (4, ref('base.group_private_addresses'))
+ ]"/>
+ <field name="perm_read" eval="True"/>
+ <field name="perm_write" eval="False"/>
+ <field name="perm_create" eval="False"/>
+ <field name="perm_unlink" eval="False"/>
+ </record>
+
<record model="ir.rule" id="ir_default_user_rule">
<field name="name">Defaults: alter personal defaults</field>
<field name="model_id" ref="model_ir_default"/>
diff --git a/odoo/addons/base/views/res_partner_views.xml b/odoo/addons/base/views/res_partner_views.xml
index a878b8c2994..28ad85b892a 100644
--- a/odoo/addons/base/views/res_partner_views.xml
+++ b/odoo/addons/base/views/res_partner_views.xml
@@ -391,6 +391,50 @@
</field>
</record>
+ <!-- Special restricted view for private address, with limited "named" info that
+ can be traced back to the employee -->
+ <record id="res_partner_view_form_private" model="ir.ui.view">
+ <field name="name">res.partner.view.form.private</field>
+ <field name="model">res.partner</field>
+ <field name="priority" eval="300"/>
+ <field name="arch" type="xml">
+ <form string="Private Address Form">
+ <sheet>
+ <field name="type" invisible="1"/>
+ <label for="name" class="oe_editonly"/>
+ <field name="name" required="0"/>
+ <group>
+ <group>
+ <label for="street" string="Address"/>
+ <div>
+ <div class="o_address_format" name="div_address">
+ <field name="street" placeholder="Street..." class="o_address_street"/>
+ <field name="street2" placeholder="Street 2..." class="o_address_street"/>
+ <field name="city" placeholder="City" class="o_address_city"/>
+ <field name="state_id" class="o_address_state" placeholder="State" options='{"no_open": True}' context="{'country_id': country_id, 'zip': zip}"/>
+ <field name="zip" placeholder="ZIP" class="o_address_zip"/>
+ <field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'/>
+ </div>
+ </div>
+ </group>
+ <group>
+ <field name="phone" widget="phone"/>
+ <field name="mobile" widget="phone"/>
+ <field name="email"/>
+ </group>
+ </group>
+ <group string="Bank Accounts">
+ <field name="bank_ids">
+ <tree editable="bottom">
+ <field name="acc_number"/>
+ </tree>
+ </field>
+ </group>
+ </sheet>
+ </form>
+ </field>
+ </record>
+
<record id="view_res_partner_filter" model="ir.ui.view">
<field name="name">res.partner.select</field>
<field name="model">res.partner</field>
diff --git a/odoo/addons/base/views/res_users_views.xml b/odoo/addons/base/views/res_users_views.xml
index db9181ac2bf..4e7f9420839 100644
--- a/odoo/addons/base/views/res_users_views.xml
+++ b/odoo/addons/base/views/res_users_views.xml
@@ -205,6 +205,10 @@
<div>
<field name='has_group_partner_manager' colspan="1" class="oe_inline"/>
</div>
+ <label for="has_group_private_addresses" colspan="3"/>
+ <div>
+ <field name="has_group_private_addresses" colspan="1" class="oe_inline"/>
+ </div>
</group>
</page>
<page string="Preferences">