Browse Source

[IMP] base_global_discount: add specific security group

This way, it will be easier to decide who can set discount or not. The
current group scope is too broad.

[UPD] Update base_global_discount.pot
14.0
david 4 years ago
committed by Omar (Comunitea)
parent
commit
f4400be75d
  1. 4
      base_global_discount/README.rst
  2. 2
      base_global_discount/__manifest__.py
  3. 19
      base_global_discount/i18n/base_global_discount.pot
  4. 14
      base_global_discount/models/res_partner.py
  5. 1
      base_global_discount/readme/CONFIGURE.rst
  6. 3
      base_global_discount/readme/USAGE.rst
  7. 2
      base_global_discount/security/ir.model.access.csv
  8. 4
      base_global_discount/security/security.xml
  9. 1
      base_global_discount/views/global_discount_views.xml
  10. 17
      base_global_discount/views/res_partner_views.xml

4
base_global_discount/README.rst

@ -39,6 +39,7 @@ Configuration
To use this module, you need to: To use this module, you need to:
#. Go to *Settings > Users*, choose yours and set *Manage Global Discounts*.
#. Go to *Settings > Parameters > Global Discounts* #. Go to *Settings > Parameters > Global Discounts*
#. Choose the discount scope (sales or purchases). #. Choose the discount scope (sales or purchases).
#. You can also restrict it to a certain company if needed. #. You can also restrict it to a certain company if needed.
@ -46,7 +47,8 @@ To use this module, you need to:
Usage Usage
===== =====
You can assign global discounts to partners as well:
You can assign global discounts to partners as well. You'll need the proper
permission (*Manage Global Discounts*):
#. Go to a partner that is a company. #. Go to a partner that is a company.
#. Go to the *Sales & Purchases* tab. #. Go to the *Sales & Purchases* tab.

2
base_global_discount/__manifest__.py

@ -10,8 +10,8 @@
"license": "AGPL-3", "license": "AGPL-3",
"depends": ["product"], "depends": ["product"],
"data": [ "data": [
"security/ir.model.access.csv",
"security/security.xml", "security/security.xml",
"security/ir.model.access.csv",
"views/global_discount_views.xml", "views/global_discount_views.xml",
"views/res_partner_views.xml", "views/res_partner_views.xml",
], ],

19
base_global_discount/i18n/base_global_discount.pot

@ -91,12 +91,24 @@ msgstr ""
msgid "Last Updated on" msgid "Last Updated on"
msgstr "" msgstr ""
#. module: base_global_discount
#: model:res.groups,name:base_global_discount.group_global_discount
msgid "Manage Global Discounts"
msgstr ""
#. module: base_global_discount #. module: base_global_discount
#: model:ir.model.fields,field_description:base_global_discount.field_res_partner__supplier_global_discount_ids #: model:ir.model.fields,field_description:base_global_discount.field_res_partner__supplier_global_discount_ids
#: model:ir.model.fields,field_description:base_global_discount.field_res_users__supplier_global_discount_ids #: model:ir.model.fields,field_description:base_global_discount.field_res_users__supplier_global_discount_ids
#: model_terms:ir.ui.view,arch_db:base_global_discount.res_partner_form_view
msgid "Purchase Global Discounts" msgid "Purchase Global Discounts"
msgstr "" msgstr ""
#. module: base_global_discount
#: model:ir.model.fields,field_description:base_global_discount.field_res_partner__supplier_global_discount_ids_readonly
#: model:ir.model.fields,field_description:base_global_discount.field_res_users__supplier_global_discount_ids_readonly
msgid "Purchase Global Discounts (readonly)"
msgstr ""
#. module: base_global_discount #. module: base_global_discount
#: model:ir.model.fields.selection,name:base_global_discount.selection__global_discount__discount_scope__purchase #: model:ir.model.fields.selection,name:base_global_discount.selection__global_discount__discount_scope__purchase
msgid "Purchases" msgid "Purchases"
@ -105,9 +117,16 @@ msgstr ""
#. module: base_global_discount #. module: base_global_discount
#: model:ir.model.fields,field_description:base_global_discount.field_res_partner__customer_global_discount_ids #: model:ir.model.fields,field_description:base_global_discount.field_res_partner__customer_global_discount_ids
#: model:ir.model.fields,field_description:base_global_discount.field_res_users__customer_global_discount_ids #: model:ir.model.fields,field_description:base_global_discount.field_res_users__customer_global_discount_ids
#: model_terms:ir.ui.view,arch_db:base_global_discount.res_partner_form_view
msgid "Sale Global Discounts" msgid "Sale Global Discounts"
msgstr "" msgstr ""
#. module: base_global_discount
#: model:ir.model.fields,field_description:base_global_discount.field_res_partner__customer_global_discount_ids_readonly
#: model:ir.model.fields,field_description:base_global_discount.field_res_users__customer_global_discount_ids_readonly
msgid "Sale Global Discounts (readonly)"
msgstr ""
#. module: base_global_discount #. module: base_global_discount
#: model:ir.model.fields.selection,name:base_global_discount.selection__global_discount__discount_scope__sale #: model:ir.model.fields.selection,name:base_global_discount.selection__global_discount__discount_scope__sale
msgid "Sales" msgid "Sales"

14
base_global_discount/models/res_partner.py

@ -22,3 +22,17 @@ class ResPartner(models.Model):
string="Purchase Global Discounts", string="Purchase Global Discounts",
domain=[("discount_scope", "=", "purchase")], domain=[("discount_scope", "=", "purchase")],
) )
# HACK: Looks like UI doesn't behave well with Many2many fields and
# negative groups when the same field is shown. In this case, we want to
# show the readonly version to any not in the global discount group.
# TODO: Check in v14 if it's fixed
customer_global_discount_ids_readonly = fields.Many2many(
string="Sale Global Discounts (readonly)",
related="customer_global_discount_ids",
readonly=True,
)
supplier_global_discount_ids_readonly = fields.Many2many(
string="Purchase Global Discounts (readonly)",
related="supplier_global_discount_ids",
readonly=True,
)

1
base_global_discount/readme/CONFIGURE.rst

@ -1,5 +1,6 @@
To use this module, you need to: To use this module, you need to:
#. Go to *Settings > Users*, choose yours and set *Manage Global Discounts*.
#. Go to *Settings > Parameters > Global Discounts* #. Go to *Settings > Parameters > Global Discounts*
#. Choose the discount scope (sales or purchases). #. Choose the discount scope (sales or purchases).
#. You can also restrict it to a certain company if needed. #. You can also restrict it to a certain company if needed.

3
base_global_discount/readme/USAGE.rst

@ -1,4 +1,5 @@
You can assign global discounts to partners as well:
You can assign global discounts to partners as well. You'll need the proper
permission (*Manage Global Discounts*):
#. Go to a partner that is a company. #. Go to a partner that is a company.
#. Go to the *Sales & Purchases* tab. #. Go to the *Sales & Purchases* tab.

2
base_global_discount/security/ir.model.access.csv

@ -1,3 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_global_discount_user,Global Discount Users,model_global_discount,base.group_user,1,0,0,0 access_global_discount_user,Global Discount Users,model_global_discount,base.group_user,1,0,0,0
access_global_discount_partner_manager,Global Discount Partner Manager,model_global_discount,base.group_partner_manager,1,1,1,1
access_global_discount_manager,Global Discount Manager,model_global_discount,base_global_discount.group_global_discount,1,1,1,1

4
base_global_discount/security/security.xml

@ -13,4 +13,8 @@
<field name="perm_write" eval="1" /> <field name="perm_write" eval="1" />
<field name="perm_unlink" eval="1" /> <field name="perm_unlink" eval="1" />
</record> </record>
<record id="group_global_discount" model="res.groups">
<field name="name">Manage Global Discounts</field>
<field name="category_id" ref="base.module_category_hidden" />
</record>
</odoo> </odoo>

1
base_global_discount/views/global_discount_views.xml

@ -42,5 +42,6 @@
name="Global Discounts" name="Global Discounts"
sequence="1" sequence="1"
parent="base.menu_ir_property" parent="base.menu_ir_property"
groups="base_global_discount.group_global_discount"
/> />
</odoo> </odoo>

17
base_global_discount/views/res_partner_views.xml

@ -10,6 +10,14 @@
<field <field
name="customer_global_discount_ids" name="customer_global_discount_ids"
widget="many2many_tags" widget="many2many_tags"
groups="base_global_discount.group_global_discount"
attrs="{'invisible': [('is_company', '=', False), ('parent_id', '!=', False)]}"
/>
<field
name="customer_global_discount_ids_readonly"
string="Sale Global Discounts"
widget="many2many_tags"
groups="!base_global_discount.group_global_discount"
attrs="{'invisible': [('is_company', '=', False), ('parent_id', '!=', False)]}" attrs="{'invisible': [('is_company', '=', False), ('parent_id', '!=', False)]}"
/> />
</group> </group>
@ -17,6 +25,15 @@
<field <field
name="supplier_global_discount_ids" name="supplier_global_discount_ids"
widget="many2many_tags" widget="many2many_tags"
groups="base_global_discount.group_global_discount"
attrs="{'invisible': [('is_company', '=', False), ('parent_id', '!=', False)]}"
/>
<field
name="supplier_global_discount_ids_readonly"
string="Purchase Global Discounts"
readonly="1"
widget="many2many_tags"
groups="!base_global_discount.group_global_discount"
attrs="{'invisible': [('is_company', '=', False), ('parent_id', '!=', False)]}" attrs="{'invisible': [('is_company', '=', False), ('parent_id', '!=', False)]}"
/> />
</group> </group>

Loading…
Cancel
Save