diff --git a/pos_analytic_by_config/migrations/16.0.1.0.0/post-migration.py b/pos_analytic_by_config/migrations/16.0.1.0.0/post-migration.py index ec0f7471b9..0952d1b55e 100644 --- a/pos_analytic_by_config/migrations/16.0.1.0.0/post-migration.py +++ b/pos_analytic_by_config/migrations/16.0.1.0.0/post-migration.py @@ -26,18 +26,6 @@ def migrate(env, version): pos_configs = env["pos.config"].browse([pc.id for pc in pos_configs_dict.keys()]) for company in pos_configs.company_id: company_configs = pos_configs.filtered(lambda x: x.company_id == company) - default_account_revenue = env["account.account"].search( - [ - ("company_id", "=", company.id), - ("account_type", "=", "income"), - ( - "id", - "!=", - company.account_journal_early_pay_discount_gain_account_id.id, - ), - ], - limit=1, - ) analytic_plan = env["account.analytic.plan"].create( { "name": "Stores", @@ -57,7 +45,7 @@ def migrate(env, version): analytic_account.plan_id = analytic_plan.id env["account.analytic.distribution.model"].create( { - "account_prefix": default_account_revenue.code[:3], + "account_prefix": "", "pos_config_id": config.id, "analytic_distribution": {analytic_account.id: 100}, "company_id": company.id, diff --git a/pos_analytic_by_config/models/__init__.py b/pos_analytic_by_config/models/__init__.py index 47284c73ce..d12dfe529a 100644 --- a/pos_analytic_by_config/models/__init__.py +++ b/pos_analytic_by_config/models/__init__.py @@ -1,3 +1,4 @@ from . import analytic_distribution_model from . import pos_order from . import pos_session +from . import account_move_line diff --git a/pos_analytic_by_config/models/account_move_line.py b/pos_analytic_by_config/models/account_move_line.py new file mode 100644 index 0000000000..272403fbc8 --- /dev/null +++ b/pos_analytic_by_config/models/account_move_line.py @@ -0,0 +1,18 @@ +# Copyright 2025 Tecnativa - David Vidal +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import api, models + + +class AccountMoveLine(models.Model): + _inherit = "account.move.line" + + @api.model_create_multi + def create(self, vals_list): + """We need to receive this key from the vals as the create call is encampsulated + inside the _get_sale_vals method of the pos.session model.""" + config_id = vals_list and vals_list[0].get("pos_config_id") + if config_id: + for vals in vals_list: + vals.pop("pos_config_id", None) + self = self.with_context(pos_config_id=config_id) + return super().create(vals_list) diff --git a/pos_analytic_by_config/models/pos_session.py b/pos_analytic_by_config/models/pos_session.py index 91a65252d6..3a42e3bbb3 100644 --- a/pos_analytic_by_config/models/pos_session.py +++ b/pos_analytic_by_config/models/pos_session.py @@ -6,16 +6,11 @@ class PosSession(models.Model): _inherit = "pos.session" - def _validate_session( - self, - balancing_account=False, - amount_to_balance=0, - bank_payment_method_diffs=None, - ): - return super( - PosSession, self.with_context(pos_config_id=self.config_id.id) - )._validate_session( - balancing_account=balancing_account, - amount_to_balance=amount_to_balance, - bank_payment_method_diffs=bank_payment_method_diffs, - ) + def _get_sale_vals(self, key, amount, amount_converted): + """We can't use the context as the creation of the sale move lines is + encapsulated inside the _create_non_reconciliable_move_lines method and that + one creates another kind of move lines as well. So we're passing the session + as a vals key and later we pop it from the dictionary.""" + vals = super()._get_sale_vals(key, amount, amount_converted) + vals["pos_config_id"] = self.config_id.id + return vals diff --git a/pos_analytic_by_config/tests/test_pos_analytic_by_config.py b/pos_analytic_by_config/tests/test_pos_analytic_by_config.py index 51f4cc739b..436d4431b3 100644 --- a/pos_analytic_by_config/tests/test_pos_analytic_by_config.py +++ b/pos_analytic_by_config/tests/test_pos_analytic_by_config.py @@ -32,7 +32,7 @@ def setUpClass(cls): ) cls.env["account.analytic.distribution.model"].create( { - "account_prefix": cls.sales_account.code, + "account_prefix": "", "pos_config_id": cls.basic_config.id, "analytic_distribution": {cls.analytic_account.id: 100}, }