diff --git a/__manifest__.py b/__manifest__.py index 8c2fa43f5f335e5ec3035d5bf5e86f1b33279c92..13dbee2e63b3bc5b634f1d0bc6f49a3c8c7e8a7d 100755 --- a/__manifest__.py +++ b/__manifest__.py @@ -14,6 +14,7 @@ 'data/data.xml', # wizard 'wizard/acc_sale_price_wizard_views.xml', + 'wizard/acc_sale_price_surplus_wizard_views.xml', 'wizard/acc_account_wizard_views.xml', 'wizard/acc_account_surplus_wizard_views.xml', # views diff --git a/models/acc_account.py b/models/acc_account.py index 1512e8a6cd5e47d6ea439f3f132c67480d1b90bb..a62d04725e20cfdb8919803ac7ffe2c7246cca6b 100644 --- a/models/acc_account.py +++ b/models/acc_account.py @@ -98,6 +98,11 @@ class AccAccount(models.Model): store=True, readonly=True, compute='_compute_amount') + amount_tax_tcfe = fields.Monetary( + string="Taxes CPSE/TCF", + store=True, + readonly=True, + compute='_compute_amount') amount_total = fields.Monetary( string="Total", store=True, @@ -110,7 +115,8 @@ class AccAccount(models.Model): url = fields.Char("URL", compute="_compute_url", store=True) tax_tcfe = fields.Float( "Taxes CPSE/TCF (en €/kWh)", - digits="Sale Price") + digits="Sale Price", + default=0.105) @api.model_create_multi def create(self, vals_list): @@ -133,25 +139,29 @@ class AccAccount(models.Model): 'line_ids.price_total', 'line_ids.price_unit', 'line_ids.quantity', + 'tax_tcfe' ) def _compute_amount(self): for move in self: total_tax = 0.0 total = 0.0 - tax_tcfe = 0.0 + amount_tax_tcfe = 0.0 + tot_qty = 0.0 for line in move.line_ids: total += line.price_total + tot_qty += line.quantity if move.is_tva and move.tax_id: total_tax = ((total * move.tax_id.amount) / 100) if move.tax_tcfe > 0: - tax_tcfe = ((total * move.tax_tcfe) / 100) + amount_tax_tcfe = (tot_qty * move.tax_tcfe) / 100 move.amount_untaxed = total move.amount_tax = total_tax - move.amount_total = total + total_tax + tax_tcfe + move.amount_tax_tcfe = amount_tax_tcfe + move.amount_total = total + total_tax + amount_tax_tcfe def _compute_url(self): for account in self: diff --git a/models/acc_operation.py b/models/acc_operation.py index a26bf50a53a0a69970383d87a53b642e7e7ead94..58e44df74c93c05d157fa3c86d88c8584a98b8e2 100644 --- a/models/acc_operation.py +++ b/models/acc_operation.py @@ -16,6 +16,8 @@ class AccOperation(models.Model): is_account_active = fields.Boolean("Facturation activée") acc_sale_price_ids = fields.One2many( "acc.sale.price", "acc_operation_id") + acc_sale_price_surplus_ids = fields.One2many( + "acc.sale.price.buyer", "acc_operation_id") acc_account_ids = fields.One2many( "acc.account", "acc_operation_id", domain=[("is_account_buyer", "=", False)], @@ -31,7 +33,8 @@ class AccOperation(models.Model): ) acc_account_count = fields.Integer( string="Nombre de factures", compute="_compute_acc_account_count") - tax_tcfe = fields.Float("Taxes CPSE/TCF (en €/kWh)", digits="Sale Price") + tax_tcfe = fields.Float( + "Taxes CPSE/TCF (en €/kWh)", digits="Sale Price", default=0.105) # ------------------------------------------------------ # SQL Constraints @@ -245,9 +248,49 @@ class AccOperation(models.Model): def open_x2m_matrix(self): return self._open_x2m_matrix("x2many_2d_matrix_demo") + # ------------------------------------------------------ - # Business methods + # Financial method APP # ------------------------------------------------------ + def get_financial_monitoring(self, type, prm_id=None): + account_list = [] + date_first = fields.Date.today() - relativedelta(months=1) + date_end = date_utils.end_of(date_first, 'month') - # def calc_periode(self, date): + if prm_id: + acc_counter_ids = self.env['acc.counter'].browse(prm_id) + else: + if type == 'cons': + acc_counter_ids = self.acc_delivery_ids + else: + acc_counter_ids = self.acc_injection_ids + # Consommation + power_tab_by_cons = self.env['acc.enedis.cdc'].read_group( + [('acc_operation_id', '=', self.id), + ('date_slot', '<=', date_end), + ('comp_data_type', '=', 'cons'), + ('acc_counter_id', 'in', acc_counter_ids.ids)], + ['power', 'acc_counter_id', 'date_slot'], + ['date_slot:month', 'acc_counter_id'], orderby='acc_counter_id', lazy=False) + + return power_tab_by_cons + # prod_tot = power_tab_by_prod[0]['power'] - power_tab_by_prod[1]['power'] + + # for acc_injection_id in self.acc_injection_ids: + # if acc_injection_id.is_account_auto_activate: + # power_tab_by_prod = self.get_power_by_prod(acc_injection_id, date_start, date_end) + # + # power_autoprod_percent = ((power_tab_by_prod[0]['power'] - power_tab_by_prod[1]['power']) * 100) / prod_tot + # power_tab_by_cons = self.get_power_by_cons(date_start, date_end) + # for power_cons in power_tab_by_cons: + # + # power_month = (power_cons['power'] / 1000 / 2) * (power_autoprod_percent / 100) + # + # price_kwh = self.env['acc.sale.price'].search([ + # ('acc_operation_id', '=', self.id), + # ('acc_injection_id', '=', acc_injection_id.id), + # ('acc_delivery_id', '=', power_cons['acc_counter_id'][0]), + # ('start_date', '<=', date_month), + # ('end_date', '>=', date_month) + # ]).price \ No newline at end of file diff --git a/models/acc_sale_price.py b/models/acc_sale_price.py index 9a25d28b5bb256b7063f3ed6ad2325663d33e7c3..7be4f42ce64be4013fe5b75700f71047791e4b82 100644 --- a/models/acc_sale_price.py +++ b/models/acc_sale_price.py @@ -2,6 +2,9 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import fields, models, api +from dateutil.relativedelta import relativedelta + +from odoo.exceptions import ValidationError class AccSalePrice(models.Model): @@ -36,6 +39,65 @@ class AccSalePrice(models.Model): 'res.currency', 'Devise', default=_get_default_currency_id) price = fields.Float("Tarif", digits='Sale Price') + @api.model_create_multi + def create(self, vals_list): + new_vals = [] + for vals in vals_list: + if "acc_operation_id" in vals: + acc_operation_id = vals["acc_operation_id"] + acc_operation = self.env["acc.operation"].browse(acc_operation_id) + if "acc_injection_id" in vals: + acc_injection_id = vals["acc_injection_id"] + if "acc_delivery_id" in vals: + acc_delivery_id = vals["acc_delivery_id"] + if "start_date" in vals: + start_date = fields.Date.to_date(vals["start_date"]) + + # If date start period doesn't exist + price_ids = self.env["acc.sale.price"].search([ + ("acc_operation_id", "=", acc_operation_id), + ("acc_delivery_id", "=", acc_delivery_id), + ("acc_injection_id", "=", acc_injection_id)]) + + if acc_operation.date_start_contract > start_date: + raise ValidationError( + "L'opération n'est pas active à cette période là") + + # Creation d'une nouvelle période date anniversaire à date renseignée - 1 jour + if not price_ids and acc_operation.date_start_contract < start_date: + val_new = { + "acc_operation_id": acc_operation_id, + "acc_injection_id": acc_injection_id, + "acc_delivery_id": acc_delivery_id, + "price": vals["price"], + "start_date": acc_operation.date_start_contract, + "end_date": start_date - relativedelta(days=1) + } + new_vals.append(val_new) + + # Si une période existe après la date renseignée + price_ids = self.env["acc.sale.price"].search([ + ("acc_operation_id", "=", acc_operation_id), + ("acc_delivery_id", "=", acc_delivery_id), + ("acc_injection_id", "=", acc_injection_id), + ("start_date", "<=", start_date), + ("end_date", ">", start_date), + ]) + if price_ids: + raise ValidationError( + "Un prix de vente existe déjà pour cette date là") + + price_id = self.env["acc.sale.price"].search([ + ("acc_operation_id", "=", acc_operation_id), + ("acc_delivery_id", "=", acc_delivery_id), + ("acc_injection_id", "=", acc_injection_id), + ], limit=1, order="create_date desc") + if price_id: + price_id.end_date = start_date - relativedelta(days=1) + vals_list += new_vals + res = super(AccSalePrice, self).create(vals_list) + return res + class AccSalePriceBuyer(models.Model): _name = 'acc.sale.price.buyer' @@ -47,6 +109,10 @@ class AccSalePriceBuyer(models.Model): # ------------------------------------------------------ # Fields declaration # ------------------------------------------------------ + acc_operation_id = fields.Many2one( + "acc.operation", + "Opération", + ondelete="cascade") acc_injection_id = fields.Many2one( 'acc.counter', domain=[('is_injection', '=', True)], @@ -64,3 +130,62 @@ class AccSalePriceBuyer(models.Model): currency_id = fields.Many2one( 'res.currency', 'Devise', default=_get_default_currency_id) price = fields.Float("Tarif", digits='Sale Price') + + @api.model_create_multi + def create(self, vals_list): + new_vals = [] + for vals in vals_list: + if "acc_operation_id" in vals: + acc_operation_id = vals["acc_operation_id"] + acc_operation = self.env["acc.operation"].browse(acc_operation_id) + if "acc_injection_id" in vals: + acc_injection_id = vals["acc_injection_id"] + if "acc_buyer_id" in vals: + acc_buyer_id = vals["acc_buyer_id"] + if "start_date" in vals: + start_date = fields.Date.to_date(vals["start_date"]) + + # If date start period doesn't exist + price_ids = self.env["acc.sale.price.buyer"].search([ + ("acc_operation_id", "=", acc_operation_id), + ("acc_injection_id", "=", acc_injection_id), + ("acc_buyer_id", "=", acc_buyer_id)]) + + if acc_operation.date_start_contract > start_date: + raise ValidationError( + "L'opération n'est pas active à cette période là") + + # Creation d'une nouvelle période date anniversaire à date renseignée - 1 jour + if not price_ids and acc_operation.date_start_contract < start_date: + val_new = { + "acc_operation_id": acc_operation_id, + "acc_injection_id": acc_injection_id, + "acc_buyer_id": acc_buyer_id, + "price": vals["price"], + "start_date": acc_operation.date_start_contract, + "end_date": start_date - relativedelta(days=1) + } + new_vals.append(val_new) + + # Si une période existe après la date renseignée + price_ids = self.env["acc.sale.price.buyer"].search([ + ("acc_operation_id", "=", acc_operation_id), + ("acc_buyer_id", "=", acc_buyer_id), + ("acc_injection_id", "=", acc_injection_id), + ("start_date", "<=", start_date), + ("end_date", ">", start_date), + ]) + if price_ids: + raise ValidationError( + "Un prix de vente existe déjà pour cette date là") + + price_id = self.env["acc.sale.price.buyer"].search([ + ("acc_operation_id", "=", acc_operation_id), + ("acc_buyer_id", "=", acc_buyer_id), + ("acc_injection_id", "=", acc_injection_id), + ], limit=1, order="create_date desc") + if price_id: + price_id.end_date = start_date - relativedelta(days=1) + vals_list += new_vals + res = super(AccSalePriceBuyer, self).create(vals_list) + return res diff --git a/report/account_template.xml b/report/account_template.xml index 333e547dd36bb73ba077d7d11a2ea80c7ed74669..e16caebee0198a9ef6dc566bb583743634cad152 100644 --- a/report/account_template.xml +++ b/report/account_template.xml @@ -98,6 +98,12 @@ <span t-field="o.power_cons"/> <span>kWh</span> </td> </tr> + <tr> + <td>Taxes CPSE/TCF</td> + <td class="text-right"> + <span t-field="o.tax_tcfe"/> <span>en €/kWh</span> + </td> + </tr> <t t-set="lines" t-value="o.line_ids"/> <t t-set="current_subtotal" t-value="0"/> @@ -129,11 +135,21 @@ <span t-field="o.amount_untaxed"/> </td> </tr> + <t t-if="o.is_tva"> + <tr style=""> + <t> + <td><span class="text-nowrap"/>TVA</td> + <td class="text-right o_price_total"> + <span class="text-nowrap" t-field="o.amount_tax"/> + </td> + </t> + </tr> + </t> <tr style=""> <t> - <td><span class="text-nowrap"/>TVA</td> + <td><span class="text-nowrap"/>Taxes CPSE/TCF</td> <td class="text-right o_price_total"> - <span class="text-nowrap" t-field="o.amount_tax"/> + <span class="text-nowrap" t-field="o.amount_tax_tcfe"/> </td> </t> </tr> diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 32c2bc6f234f07aac32211ad1c7b9cf93123a093..5a4dea61265f1f5d2577759cda343235abac6850 100755 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -5,6 +5,8 @@ id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink "access_acc_sale_price_buyer_group_user","acc_sale_price_buyer group_user","model_acc_sale_price_buyer","base.group_user",1,0,0,0 "access_acc_sale_price_wizard_group_partner_manager","acc_sale_price_wizard group_partner_manager","model_acc_sale_price_wizard","base.group_partner_manager",1,1,1,1 "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_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 "access_acc_account_group_user","acc_account group_user","model_acc_account","base.group_user",1,0,0,0 "access_acc_account_line_group_partner_manager","acc_account_line group_partner_manager","model_acc_account_line","base.group_partner_manager",1,1,1,1 diff --git a/views/acc_account_views.xml b/views/acc_account_views.xml index be4bc51dd76fde71bfc4bed10623626431ac9128..afa3c482cac259173518ac3eeb6613ce55f20196 100644 --- a/views/acc_account_views.xml +++ b/views/acc_account_views.xml @@ -218,7 +218,7 @@ <field name="is_tva" invisible="1"/> <field name="tax_id" options="{'no_create': True}" - optional="show"/> + attrs="{'invisible': [('is_tva', '=', False)]}"/> <field name="price_total" string="Total"/> <field name="acc_operation_id" invisible="1"/> @@ -227,9 +227,10 @@ </tree> </field> <group class="oe_subtotal_footer oe_right"> - <field name="amount_untaxed" attrs="{'invisible': [('is_tva', '=', False)]}"/> + <field name="amount_untaxed" /> <field name="amount_tax" attrs="{'invisible': [('is_tva', '=', False)]}"/> - <field name="amount_total" /> + <field name="amount_tax_tcfe" readonly="1"/> + <field name="amount_total" class="oe_subtotal_footer_separator" /> </group> </page> </notebook> diff --git a/views/acc_operation_views.xml b/views/acc_operation_views.xml index 42cd9455d9a10a9acba8cbe8bea3258620f471a4..d024ee2f770e638e32eb4cf9a796f0bdad1c1e42 100644 --- a/views/acc_operation_views.xml +++ b/views/acc_operation_views.xml @@ -9,18 +9,13 @@ <field name="priority" eval="8"/> <field name="arch" type="xml"> <header position="inside"> - <button string="Prix de vente" - type="action" - name="%(acc_account.act_x2many_2d_matrix_demo)d" - class="btn-primary" - attrs="{'invisible': [('is_account_active', '=', False)]}"/> - <button string="Générer une facture" + <button string="Générer les factures" type="action" name="%(acc_account.acc_account_wizard_action)d" class="btn-primary" attrs="{'invisible': [('is_account_active', '=', False)]}" /> - <button string="Générer une facture Acheteur" + <button string="Générer les factures Acheteur" type="action" name="%(acc_account.acc_account_surplus_wizard_action)d" class="btn-primary" @@ -53,6 +48,13 @@ <notebook position="inside"> <page string="Prix de vente" name="account_price" attrs="{'invisible': [('is_account_active', '=', False)]}"> + <header> + <button string="Générer des Prix de vente" + type="action" + name="%(acc_account.act_x2many_2d_matrix_demo)d" + class="btn-primary" + attrs="{'invisible': [('is_account_active', '=', False)]}"/> + </header> <field name="acc_sale_price_ids" widget="one2many"> <tree editable="bottom"> <field name="acc_delivery_id" /> @@ -64,6 +66,26 @@ </tree> </field> </page> + <page string="Prix de vente Surplus" name="account_price_surplus" + attrs="{'invisible': [('is_account_active', '=', False)]}"> + <header> + <button string="Générer des Prix de vente Surplus" + type="action" + name="%(acc_account.act_x2many_2d_matrix_demo_surplus)d" + class="btn-primary" + attrs="{'invisible': [('is_account_active', '=', False)]}"/> + </header> + <field name="acc_sale_price_surplus_ids" widget="one2many"> + <tree editable="bottom"> + <field name="acc_injection_id" /> + <field name="acc_buyer_id" /> + <field name="start_date" /> + <field name="end_date" /> + <field name="currency_id" invisible="1"/> + <field name="price" widget="monetary" /> + </tree> + </field> + </page> <page string="Facturation" name="account" attrs="{'invisible': [('is_account_active', '=', False)]}"> <group> diff --git a/wizard/__init__.py b/wizard/__init__.py index dbc434fe419f7dbae664e0923a226845204bd57c..0f3a3cf624661d8490442d61aba36419c3472789 100644 --- a/wizard/__init__.py +++ b/wizard/__init__.py @@ -2,5 +2,6 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import acc_sale_price_wizard +from . import acc_sale_price_surplus_wizard from . import acc_account_wizard from . import acc_account_surplus_wizard diff --git a/wizard/acc_sale_price_surplus_wizard.py b/wizard/acc_sale_price_surplus_wizard.py new file mode 100644 index 0000000000000000000000000000000000000000..53fee58a3f054c3b933501e1d630c19a933feece --- /dev/null +++ b/wizard/acc_sale_price_surplus_wizard.py @@ -0,0 +1,48 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models, api + +from dateutil.relativedelta import relativedelta + + +class AccSalePriceWizardSurplus(models.TransientModel): + _name = "acc.sale.price.surplus.wizard" + _description = "Prix de vente Surplus wizard" + + def _default_operation_id(self): + return self.env.context.get('active_id') + + acc_sale_price_ids = fields.Many2many( + "acc.sale.price.buyer", default=lambda self: self._default_sale_price_ids() + ) + start_date = fields.Date("Début de période", default=fields.Date.context_today) + acc_operation_id = fields.Many2one('acc.operation', default=_default_operation_id) + + @api.onchange('start_date') + def _onchange_start_date(self): + if self.start_date: + for price in self.acc_sale_price_ids: + price.start_date = self.start_date + + def _default_sale_price_ids(self): + inj_ids = self.env["acc.counter"].search([ + ('is_injection', '=', True), + ('acc_operation_id', '=', self.env.context.get('active_id')), + ('buyer_id', '!=', False) + ]) + + return [ + ( + 0, + 0, + { + "acc_buyer_id": inj.buyer_id.id, + "acc_injection_id": inj.id, + "acc_operation_id": self.env.context.get('active_id'), + }, + ) + # # 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 + ] diff --git a/wizard/acc_sale_price_surplus_wizard_views.xml b/wizard/acc_sale_price_surplus_wizard_views.xml new file mode 100644 index 0000000000000000000000000000000000000000..9ceb43007d4099b21f7335678b5c5fdfc0a92384 --- /dev/null +++ b/wizard/acc_sale_price_surplus_wizard_views.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8" ?> +<odoo> + <record id="x2many_2d_matrix_demo_surplus" model="ir.ui.view"> + <field name="name">acc.sale.price.surplus.wizard.wiz</field> + <field name="model">acc.sale.price.surplus.wizard</field> + <field name="type">form</field> + <field name="arch" type="xml"> + <form> + <field name="acc_operation_id" invisible="1"/> + <group> + <group> + <field name="start_date"/> + </group> + </group> + <field + name="acc_sale_price_ids" + widget="x2many_2d_matrix" + field_x_axis="acc_injection_id" + field_y_axis="acc_buyer_id" + field_value="price" + show_row_totals="0" + show_column_totals="0" + > + <tree> + <field name="acc_injection_id" /> + <field name="acc_buyer_id" /> + <field name="price" /> + <field name="acc_operation_id" /> + <field name="start_date" /> + </tree> + </field> + </form> + </field> + </record> + + <record id="act_x2many_2d_matrix_demo_surplus" model="ir.actions.act_window"> + <field name="name">Prix de vente Surplus</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">acc.sale.price.surplus.wizard</field> + <field name="view_mode">form</field> + <field name="view_id" ref="x2many_2d_matrix_demo_surplus"/> + <field name="target">new</field> + </record> + +</odoo> diff --git a/wizard/acc_sale_price_wizard.py b/wizard/acc_sale_price_wizard.py index e80e2810b78985b7478fad82f089a12ee7521668..42b7c5fe6abb28ed940df7d7a0c5230d351edf87 100644 --- a/wizard/acc_sale_price_wizard.py +++ b/wizard/acc_sale_price_wizard.py @@ -11,24 +11,28 @@ class AccSalePriceWizard(models.TransientModel): def _default_operation_id(self): return self.env.context.get('active_id') - # def _default_start_date(self): - # return self.env.context.get('active_id') - acc_sale_price_ids = fields.Many2many( "acc.sale.price", default=lambda self: self._default_sale_price_ids() ) start_date = fields.Date("Début de période", default=fields.Date.context_today) acc_operation_id = fields.Many2one('acc.operation', default=_default_operation_id) + @api.onchange('start_date') + def _onchange_start_date(self): + if self.start_date: + for price in self.acc_sale_price_ids: + price.start_date = self.start_date + def _default_sale_price_ids(self): inj_ids = self.env["acc.counter"].search([ ('is_injection', '=', True), ('acc_operation_id', '=', self.env.context.get('active_id')) ]) - recs = self.env["acc.counter"].search([ - ('is_delivery', '=', True), + recs = self.env["res.partner"].search([ + ('is_b', '=', True), ('acc_operation_id', '=', self.env.context.get('active_id')) ]) + return [ ( 0, @@ -37,7 +41,6 @@ class AccSalePriceWizard(models.TransientModel): "acc_delivery_id": rec.id, "acc_injection_id": inj.id, "acc_operation_id": self.env.context.get('active_id'), - "start_date": fields.Date.today(), }, ) # # if there isn't a demo line record for the user, create a new one @@ -47,27 +50,3 @@ class AccSalePriceWizard(models.TransientModel): for rec in recs for inj in inj_ids ] - - def save_price(self): - for price in self: - return - # partner_values = {} - # - # values = { - # 'name': partner.name, - # 'user_id': partner.user_id.id, - # 'contract_type': partner.contract_type, - # 'status': partner.status, - # 'sport': partner.sport.id, - # 'street': partner.street, - # 'zip': partner.zip, - # 'city': partner.city, - # 'region': partner.region.id, - # 'mobile': partner.mobile, - # 'email': partner.email, - # 'client_status': 'ask_validation', - # } - # - # partner_values.update(values) - # partner_current = self.env['res.partner'].browse(partner.partner_id) - # partner_current.write(partner_values) diff --git a/wizard/acc_sale_price_wizard_views.xml b/wizard/acc_sale_price_wizard_views.xml index 391e5282faca4c8caf32c3b2b03c3227afa55e5c..910c317ca98f86cba9abc889654145c442581f18 100644 --- a/wizard/acc_sale_price_wizard_views.xml +++ b/wizard/acc_sale_price_wizard_views.xml @@ -18,6 +18,8 @@ field_x_axis="acc_injection_id" field_y_axis="acc_delivery_id" field_value="price" + show_row_totals="0" + show_column_totals="0" > <tree> <field name="acc_injection_id" /> @@ -28,7 +30,8 @@ </tree> </field> <!-- <footer>--> -<!-- <button class="btn btn-sm btn-primary" name="save_price" string="Sauvegarder" type="object" confirm="Sauvegarder"/>--> +<!-- <button class="btn btn-sm btn-primary" name="save_price" string="Créer" type="object" />--> +<!--<!– <button class="btn btn-sm btn-primary" name="save_price" string="TEST" type="object" confirm="TEST"/>–>--> <!-- <button class="btn btn-sm btn-default" special="cancel" string="Annuler"/>--> <!-- </footer>--> </form>