diff --git a/__manifest__.py b/__manifest__.py index 15d01adecfcfd74e678ab2d2162d5e63fba6b98b..d243f7d073a758568bd94a28676e17e2efe88056 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -15,6 +15,7 @@ "wizard/acc_sale_price_wizard_views.xml", "wizard/acc_sale_price_surplus_wizard_views.xml", "wizard/acc_price_conf_wizard_views.xml", + "wizard/acc_update_price_conf_wizard_views.xml", "wizard/acc_account_wizard_views.xml", "wizard/acc_account_surplus_wizard_views.xml", # views diff --git a/models/acc_price_conf.py b/models/acc_price_conf.py index 0e55429d8c5b2042dd2ff2df9c3ab0af7cdcbf6f..ffa74a6e3500f9b0c193eea3bc014b8cd6f1dbde 100644 --- a/models/acc_price_conf.py +++ b/models/acc_price_conf.py @@ -70,8 +70,9 @@ class AccPriceConf(models.Model): acc_buyer_id = False if "start_date" in vals: start_date = fields.Date.to_date(vals["start_date"]) - type = self.env.context.get("type") - vals["type"] = type + if "type" in vals: + type = vals["type"] + # If date start period doesn't exist if type == "buyer": price_ids = self.env["acc.price.conf"].search( @@ -173,3 +174,4 @@ class AccPriceConf(models.Model): vals_list += new_vals res = super(AccPriceConf, self).create(vals_list) return res + diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 4f95c3faf3f29caa39098db133a78b3151753b74..810f994377ad41234ebcab09205b232b97472be3 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -9,6 +9,8 @@ id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink "access_acc_sale_price_wizard_group_user","acc_sale_price_wizard group_user","model_acc_sale_price_wizard","base.group_user",1,0,0,0 "access_acc_price_conf_wizard_group_partner_manager","acc_price_conf_wizard group_partner_manager","model_acc_price_conf_wizard","base.group_partner_manager",1,1,1,1 "access_acc_price_conf_wizard_group_user","acc_price_conf_wizard group_user","model_acc_price_conf_wizard","base.group_user",1,0,0,0 +"access_acc_update_price_conf_wizard_group_partner_manager","acc_update_price_conf_wizard group_partner_manager","model_acc_update_price_conf_wizard","base.group_partner_manager",1,1,1,1 +"access_acc_update_price_conf_wizard_group_user","acc_update_price_conf_wizard group_user","model_acc_update_price_conf_wizard","base.group_user",1,0,0,0 "access_acc_sale_price_surplus_wizard_group_partner_manager","acc_sale_price_surplus_wizard group_partner_manager","model_acc_sale_price_surplus_wizard","base.group_partner_manager",1,1,1,1 "access_acc_sale_price_surplus_wizard_group_user","acc_sale_price_surplus_wizard group_user","model_acc_sale_price_surplus_wizard","base.group_user",1,0,0,0 "access_acc_account_group_partner_manager","acc_account group_partner_manager","model_acc_account","base.group_partner_manager",1,1,1,1 diff --git a/wizard/__init__.py b/wizard/__init__.py index f5bf661aef42eb8d58deec2bc325c670b0deb52e..9de1392510b7c514f21d5aebb313ad6bb4e62ffb 100644 --- a/wizard/__init__.py +++ b/wizard/__init__.py @@ -3,6 +3,7 @@ from . import acc_sale_price_wizard from . import acc_price_conf_wizard +from . import acc_update_price_conf_wizard from . import acc_sale_price_surplus_wizard from . import acc_account_wizard from . import acc_account_surplus_wizard diff --git a/wizard/acc_price_conf_wizard.py b/wizard/acc_price_conf_wizard.py index 3e1cf400d98e4446b1fc945fbb6b60c203c31c87..b78182784d63d1844f52b6ff2a7a25bb26b30e83 100644 --- a/wizard/acc_price_conf_wizard.py +++ b/wizard/acc_price_conf_wizard.py @@ -13,6 +13,7 @@ class AccPriceConfWizard(models.TransientModel): return self.env.context.get("type") def _default_price_conf_ids(self): + # If click button on operation view type = self.env.context.get("type") if type == "buyer": inj_ids = self.env["acc.counter"].search( @@ -31,15 +32,12 @@ class AccPriceConfWizard(models.TransientModel): "acc_buyer_id": inj.buyer_id.id, "acc_injection_id": inj.id, "acc_operation_id": self.env.context.get("active_id"), + "type": type }, ) - # # if there isn't a demo line record for the user, create a new one - # if not rec.acc_sale_price_ids.filtered(lambda x: x.acc_operation_id == op) else - # # otherwise, return the line - # (4, rec.acc_sale_price_ids.filtered(lambda x: x.acc_operation_id == usr)[0].id) for inj in inj_ids ] - else: + elif type == "sale" or type == "accise": inj_ids = self.env["acc.counter"].search( [ ("is_injection", "=", True), @@ -61,16 +59,32 @@ class AccPriceConfWizard(models.TransientModel): "acc_delivery_id": rec.id, "acc_injection_id": inj.id, "acc_operation_id": self.env.context.get("active_id"), + "type": type }, ) - # # if there isn't a demo line record for the user, create a new one - # if not rec.acc_sale_price_ids.filtered(lambda x: x.acc_operation_id == op) else - # # otherwise, return the line - # (4, rec.acc_sale_price_ids.filtered(lambda x: x.acc_operation_id == usr)[0].id) for rec in recs for inj in inj_ids ] - + else: + # Objects selected from list view + active_ids = self._context.get('active_ids') + if active_ids: + return [ + ( + 0, + 0, + { + "acc_delivery_id": self.env["acc.price.conf"].browse( + rec).acc_delivery_id.id, + "acc_injection_id": self.env["acc.price.conf"].browse( + rec).acc_injection_id.id, + "acc_operation_id": self.env["acc.price.conf"].browse( + rec).acc_operation_id.id, + "type": self.env["acc.price.conf"].browse(rec).type + }, + ) + for rec in active_ids + ] acc_price_conf_ids = fields.Many2many( "acc.price.conf", default=lambda self: self._default_price_conf_ids() diff --git a/wizard/acc_price_conf_wizard_views.xml b/wizard/acc_price_conf_wizard_views.xml index c284b60ffd709e24822116827ebc1f7d982bc89a..20005eac297006becba37f1746bd0d4d892c39a2 100644 --- a/wizard/acc_price_conf_wizard_views.xml +++ b/wizard/acc_price_conf_wizard_views.xml @@ -10,7 +10,7 @@ <group> <group> <field name="start_date" /> - <field name="type" invisible="1"/> + <field name="type" /> </group> </group> <field @@ -71,20 +71,28 @@ </record> <record id="act_x2many_2d_matrix_sale" model="ir.actions.act_window"> - <field name="name">Gestion prix de vente</field> + <field name="name">Générer des prix de vente</field> <field name="type">ir.actions.act_window</field> <field name="res_model">acc.price.conf.wizard</field> <field name="view_mode">form</field> <field name="view_id" ref="x2many_2d_matrix_sale" /> <field name="target">new</field> + <field name="domain">[('type', '=', 'sale')]</field> + <field name="context">{'default_type': 'sale'}</field> + <field name="binding_model_id" ref="acc_account.model_acc_price_conf" /> + <field name="binding_view_types">list</field> </record> <record id="act_x2many_2d_matrix_buyer" model="ir.actions.act_window"> - <field name="name">Gestion prix d'achat</field> + <field name="name">Générer des prix d'achat</field> <field name="type">ir.actions.act_window</field> <field name="res_model">acc.price.conf.wizard</field> <field name="view_mode">form</field> <field name="view_id" ref="x2many_2d_matrix_buyer" /> + <field name="binding_model_id" ref="acc_account.model_acc_price_conf" /> + <field name="domain">[('type', '=', 'buyer')]</field> + <field name="context">{'default_type': 'buyer'}</field> + <field name="binding_view_types">list</field> <field name="target">new</field> </record> diff --git a/wizard/acc_update_price_conf_wizard.py b/wizard/acc_update_price_conf_wizard.py new file mode 100644 index 0000000000000000000000000000000000000000..3570cec1e5a41e786636be9f9690a07c4def6e67 --- /dev/null +++ b/wizard/acc_update_price_conf_wizard.py @@ -0,0 +1,14 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class AccUpdatePriceConfWizard(models.TransientModel): + _name = "acc.update.price.conf.wizard" + _description = "Mise à jour des prix wizard" + + price = fields.Float("Tarif à mettre à jour", digits="Sale Price") + + def update_price(self): + acc_price_ids = self.env["acc.price.conf"].browse(self._context.get('active_ids')) + for price in acc_price_ids: + price.price = self.price diff --git a/wizard/acc_update_price_conf_wizard_views.xml b/wizard/acc_update_price_conf_wizard_views.xml new file mode 100644 index 0000000000000000000000000000000000000000..1e479ec5153dc95397885137e92f1f49bee562da --- /dev/null +++ b/wizard/acc_update_price_conf_wizard_views.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8" ?> +<odoo> + + <record id="view_acc_price_conf_update_price" model="ir.ui.view"> + <field name="name">acc.price.conf.update.price.wizard</field> + <field name="model">acc.update.price.conf.wizard</field> + <field name="arch" type="xml"> + <form string="Mise à jour du prix"> + <group> + <field name="price"/> + </group> + <footer> + <button string="Mettre à jour" name="update_price" type="object" class="btn-primary"/> + <button string="Annuler" class="btn-default" special="cancel"/> + </footer> + </form> + </field> + </record> + + <record id="acc_price_conf_update_price_action" model="ir.actions.act_window"> + <field name="name">Mise à jour du prix en masse</field> + <field name="res_model">acc.update.price.conf.wizard</field> + <field name="view_mode">form</field> + <field name="view_id" ref="view_acc_price_conf_update_price"/> + <field name="target">new</field> + <field name="binding_model_id" ref="acc_account.model_acc_price_conf" /> + <field name="binding_view_types">list</field> + </record> + + +</odoo>