diff --git a/__manifest__.py b/__manifest__.py index 2f41aa19dacf63e782e99ed2eacc5f8ccc0c141d..c4d6410b2970461f267b248a4e242bd32e78f083 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -10,9 +10,11 @@ 'hr_expense', 'l10n_fr', 'hr_timesheet', - 'cgscop_timesheet', + 'cgscop_timesheet' ], "data": [ + "security/ir.model.access.csv", + "security/security_rules.xml", "views/hr_expense.xml", "views/hr_timesheet.xml", "views/product.xml", diff --git a/models/__init__.py b/models/__init__.py index 680d3de5c9a505ec30e2a86ee94bf5dc803e959e..79646f6cc94e4c0773e9b5e6446c4fddc59bfd7b 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -1,7 +1,6 @@ # © 2019 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from . import hr_employee from . import hr_expense from . import hr_timesheet from . import product diff --git a/models/hr_employee.py b/models/hr_employee.py deleted file mode 100644 index 519b877a1cbf1eef68f67283e16899f4243191d8..0000000000000000000000000000000000000000 --- a/models/hr_employee.py +++ /dev/null @@ -1,11 +0,0 @@ -# © 2019 Le Filament (<http://www.le-filament.com>) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from odoo import models, fields - - -class CGScopEmployee(models.Model): - _inherit = 'hr.employee' - - address_id = fields.Many2one( - default=lambda self: self.user.company_id) diff --git a/models/product.py b/models/product.py index 2b0115096189c58477a26b2b403ab7ec9beec667..22c4c09be70a26bb485619bb4697b8c27cdda72b 100644 --- a/models/product.py +++ b/models/product.py @@ -8,11 +8,14 @@ from odoo.exceptions import ValidationError class CGScopProductTemplate(models.Model): _inherit = 'product.template' + def _default_ur(self): + return self.env['res.company']._ur_default_get() + expense_gap = fields.Float("Plafond de dépense") - expense_formula = fields.Selection([ - ('free', 'Libre'), - ('fixed_rate', 'Forfait'), - ('fixed_price', 'Prix fixe')], + expense_formula = fields.Selection( + [('free', 'Libre'), + ('fixed_rate', 'Forfait'), + ('fixed_price', 'Prix fixe')], string="Type de calcul", default="free", help=""" @@ -23,6 +26,12 @@ class CGScopProductTemplate(models.Model): - Prix fixe : le prix est fixe, mais l'utilisateur peut modifier la quantité (pour les km par exemple) """) + ur_id = fields.Many2one( + 'union.regionale', + string='Union Régionale', + index=True, + on_delete='restrict', + default=_default_ur) class CGScopProductProduct(models.Model): diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv new file mode 100644 index 0000000000000000000000000000000000000000..b77aa2a98c9bd291081ed15412057f587d250b06 --- /dev/null +++ b/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_ur_product_product,access_ur_product_product,product.model_product_product,cgscop_partner.group_ur_list_modif,1,1,1,1 +access_cg_product_product,access_cg_product_product,product.model_product_product,cgscop_partner.group_cg_administrator,1,1,1,1 +access_ur_product_template,access_ur_product_template,product.model_product_template,cgscop_partner.group_ur_list_modif,1,1,1,1 +access_cg_product_template,access_cg_product_template,product.model_product_template,cgscop_partner.group_cg_administrator,1,1,1,1 diff --git a/security/security_rules.xml b/security/security_rules.xml new file mode 100644 index 0000000000000000000000000000000000000000..781c8791bc4888978ba853cd9e37c673244365e0 --- /dev/null +++ b/security/security_rules.xml @@ -0,0 +1,69 @@ +<?xml version="1.0"?> +<!-- Copyright 2019 Le Filament + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> + +<odoo> + <data noupdate="0"> + <record id="product_product_rule_all" model="ir.rule"> + <field name="name">product rule for all</field> + <field name="model_id" ref="product.model_product_product"/> + <field name="domain_force">['|',('ur_id','=',False),('ur_id','=',user.company_id.ur_id.id)]</field> + <field name="groups" eval="[(6, 0, [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> + <record id="product_product_rule_ur" model="ir.rule"> + <field name="name">product rule per ur</field> + <field name="model_id" ref="product.model_product_product"/> + <field name="domain_force">['|',('ur_id','=',False),('ur_id','=',user.company_id.ur_id.id)]</field> + <field name="groups" eval="[(6, 0, [ref('cgscop_partner.group_ur_list_modif')])]"/> + <field name="perm_read" eval="True"/> + <field name="perm_write" eval="True"/> + <field name="perm_create" eval="True"/> + <field name="perm_unlink" eval="True"/> + </record> + <record id="product_product_rule_admin" model="ir.rule"> + <field name="name">product rule administrator</field> + <field name="model_id" ref="product.model_product_product"/> + <field name="domain_force">[(1,'=',1)]</field> + <field name="groups" eval="[(6, 0, [ref('cgscop_partner.group_cg_administrator')])]"/> + <field name="perm_read" eval="True"/> + <field name="perm_write" eval="True"/> + <field name="perm_create" eval="True"/> + <field name="perm_unlink" eval="True"/> + </record> + + <record id="product_template_rule_all" model="ir.rule"> + <field name="name">product template rule for all</field> + <field name="model_id" ref="product.model_product_template"/> + <field name="domain_force">['|',('ur_id','=',False),('ur_id','=',user.company_id.ur_id.id)]</field> + <field name="groups" eval="[(6, 0, [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> + <record id="product_template_rule_ur" model="ir.rule"> + <field name="name">product template rule per ur</field> + <field name="model_id" ref="product.model_product_template"/> + <field name="domain_force">['|',('ur_id','=',False),('ur_id','=',user.company_id.ur_id.id)]</field> + <field name="groups" eval="[(6, 0, [ref('cgscop_partner.group_ur_list_modif')])]"/> + <field name="perm_read" eval="True"/> + <field name="perm_write" eval="True"/> + <field name="perm_create" eval="True"/> + <field name="perm_unlink" eval="True"/> + </record> + <record id="product_template_rule_admin" model="ir.rule"> + <field name="name">product template rule administrator</field> + <field name="model_id" ref="product.model_product_template"/> + <field name="domain_force">[(1,'=',1)]</field> + <field name="groups" eval="[(6, 0, [ref('cgscop_partner.group_cg_administrator')])]"/> + <field name="perm_read" eval="True"/> + <field name="perm_write" eval="True"/> + <field name="perm_create" eval="True"/> + <field name="perm_unlink" eval="True"/> + </record> + </data> +</odoo> diff --git a/views/product.xml b/views/product.xml index 2d318ba6678e506abd223fae11765bba00e90045..7dd59d10971d5b2148132646e98e3428f32314a0 100644 --- a/views/product.xml +++ b/views/product.xml @@ -50,6 +50,7 @@ </field> <field name="uom_po_id" position="after"> <field name="expense_gap" /> + <field name="ur_id" options="{'no_open': True, 'no_create': True}"/> </field> </field> </record> @@ -63,11 +64,16 @@ <field name="arch" type="xml"> <field name="company_id" position="before"> <field name="expense_gap" attrs="{'invisible':[('can_be_expensed','=','True')]}"/> + <field name="ur_id" options="{'no_open': True, 'no_create': True}"/> </field> </field> </record> + <!-- ajout des droits sur le menu Articles de Frais --> + <record model="ir.ui.menu" id="hr_expense.menu_hr_product"> + <field name="groups_id" eval="[(6,0, [ref('hr_expense.group_hr_expense_manager'), ref('cgscop_partner.group_cg_administrator'), ref('cgscop_partner.group_ur_list_modif')])]"/> + </record> </data> </odoo>