Skip to content

Commit e87d2a7

Browse files
committed
[MIG] website_sale_charge_payment_fee: Migration to 18.0
1 parent 994af8d commit e87d2a7

File tree

13 files changed

+292
-323
lines changed

13 files changed

+292
-323
lines changed

website_sale_charge_payment_fee/__manifest__.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
{
77
"name": "eCommerce: charge payment fee",
88
"summary": "Payment fee charged to customer",
9-
"version": "14.0.1.0.0",
9+
"version": "18.0.1.0.0",
1010
"category": "Website",
1111
"website": "https://github.com/OCA/e-commerce",
1212
"maintainers": ["miguel-S73"],
@@ -18,6 +18,14 @@
1818
"license": "LGPL-3",
1919
"application": False,
2020
"installable": True,
21-
"depends": ["website_sale"],
22-
"data": ["views/payment_acquirer_views.xml", "views/website_sale_templates.xml"],
21+
"depends": ["payment", "website_sale"],
22+
"data": ["views/payment_provider_views.xml", "views/website_sale_templates.xml"],
23+
"assets": {
24+
"web.assets_frontend": [
25+
"website_sale_charge_payment_fee/static/src/js/website_sale_fee.esm.js",
26+
],
27+
"web.assets_tests": [
28+
"website_sale_charge_payment_fee/static/tests/tours/website_sale_fee_tour.esm.js",
29+
],
30+
},
2331
}

website_sale_charge_payment_fee/controllers/main.py

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,29 @@
1010

1111

1212
class WebsiteSaleFee(WebsiteSale):
13-
@http.route(
14-
["/shop/payment"], type="http", auth="public", website=True, sitemap=False
15-
)
16-
def payment(self, **post):
17-
res = super().payment(**post)
18-
values = res.qcontext
13+
@http.route()
14+
def shop_payment(self, **post):
15+
res = super().shop_payment(**post)
1916
order = request.website.sale_get_order()
20-
payment_fee_id = post.get("payment_fee_id")
21-
checked_pm_id = post.get("pm_id")
22-
if checked_pm_id:
23-
values["checked_pm_id"] = int(checked_pm_id)
24-
if payment_fee_id or "acquirers" in values:
25-
# If 'acquirers' in values, default behaviour when acquirers are
26-
# present, we update the order with the first one
27-
# (see 'payment' template)
28-
# If payment_fee_id, it means user selected it
29-
# (see website_sale_fee.js)
30-
if payment_fee_id:
31-
selected_acquirer = request.env["payment.acquirer"].browse(
32-
int(payment_fee_id)
17+
provider_id = post.get("provider_id")
18+
payment_option_id = post.get("payment_option_id")
19+
payment_methods_sudo = res.qcontext.get("payment_methods_sudo")
20+
providers_sudo = res.qcontext.get("providers_sudo")
21+
if payment_option_id:
22+
res.qcontext["selected_payment_method"] = int(payment_option_id)
23+
if provider_id or providers_sudo:
24+
if provider_id:
25+
selected_provider = request.env["payment.provider"].browse(
26+
int(provider_id)
3327
)
3428
else:
35-
selected_acquirer = values["acquirers"][0]
36-
values["selected_acquirer"] = selected_acquirer
37-
order.sudo().update_fee_line(selected_acquirer.sudo())
38-
return request.render("website_sale.payment", values)
29+
_selected_provider = [
30+
provider_sudo
31+
for provider_sudo in payment_methods_sudo.provider_ids
32+
if provider_sudo in providers_sudo
33+
][:1]
34+
if len(_selected_provider) > 0:
35+
selected_provider = _selected_provider[0]
36+
res.qcontext["selected_provider"] = selected_provider
37+
order.sudo().update_fee_line(selected_provider.sudo())
3938
return res

website_sale_charge_payment_fee/i18n/es.po

Lines changed: 24 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,24 @@
44
#
55
msgid ""
66
msgstr ""
7-
"Project-Id-Version: Odoo Server 14.0\n"
7+
"Project-Id-Version: Odoo Server 18.0+e\n"
88
"Report-Msgid-Bugs-To: \n"
9-
"POT-Creation-Date: 2022-05-27 09:03+0000\n"
10-
"PO-Revision-Date: 2024-02-18 17:34+0000\n"
11-
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
9+
"POT-Creation-Date: 2025-04-17 16:07+0000\n"
10+
"PO-Revision-Date: 2025-04-17 16:07+0000\n"
11+
"Last-Translator: \n"
1212
"Language-Team: \n"
13-
"Language: es\n"
1413
"MIME-Version: 1.0\n"
1514
"Content-Type: text/plain; charset=UTF-8\n"
1615
"Content-Transfer-Encoding: \n"
17-
"Plural-Forms: nplurals=2; plural=n != 1;\n"
18-
"X-Generator: Weblate 4.17\n"
16+
"Plural-Forms: \n"
1917

2018
#. module: website_sale_charge_payment_fee
21-
#: model_terms:ir.ui.view,arch_db:website_sale_charge_payment_fee.payment_tokens_list_fee
19+
#: model_terms:ir.ui.view,arch_db:website_sale_charge_payment_fee.method_form_fee
2220
msgid "(Fee:"
2321
msgstr "(Tasa:"
2422

2523
#. module: website_sale_charge_payment_fee
26-
#: model:ir.model.fields,help:website_sale_charge_payment_fee.field_payment_acquirer__charge_fee
24+
#: model:ir.model.fields,help:website_sale_charge_payment_fee.field_payment_provider__charge_fee
2725
msgid ""
2826
"An extra fee line will be added to online order when using this payment "
2927
"method"
@@ -32,94 +30,73 @@ msgstr ""
3230
"utilice este método de pago"
3331

3432
#. module: website_sale_charge_payment_fee
35-
#: model_terms:ir.ui.view,arch_db:website_sale_charge_payment_fee.acquirer_form_fee_inherit
33+
#: model_terms:ir.ui.view,arch_db:website_sale_charge_payment_fee.provider_form_fee_inherit
3634
msgid "Charge payment fee"
3735
msgstr "Cargo por pago"
3836

3937
#. module: website_sale_charge_payment_fee
40-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_acquirer__charge_fee_type
38+
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_provider__charge_fee_type
4139
msgid "Computation type"
4240
msgstr "Tipo de computación"
4341

4442
#. module: website_sale_charge_payment_fee
45-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_acquirer__display_name
46-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_sale_order__display_name
47-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_sale_order_line__display_name
48-
msgid "Display Name"
49-
msgstr "Nombre mostrado"
50-
51-
#. module: website_sale_charge_payment_fee
52-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_acquirer__charge_fee_currency_id
43+
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_provider__charge_fee_currency_id
5344
msgid "Fee Currency"
5445
msgstr "Divisa de la Tasa"
5546

5647
#. module: website_sale_charge_payment_fee
57-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_acquirer__charge_fee_description
48+
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_provider__charge_fee_description
5849
msgid "Fee Description"
5950
msgstr "Descripción de Tasa"
6051

6152
#. module: website_sale_charge_payment_fee
62-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_acquirer__charge_fee_product_id
53+
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_provider__charge_fee_product_id
6354
msgid "Fee Product"
6455
msgstr "Producto de tarifa"
6556

6657
#. module: website_sale_charge_payment_fee
67-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_acquirer__charge_fee
58+
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_provider__charge_fee
6859
msgid "Fee charged to customer"
6960
msgstr "Tarifa cobrada al cliente"
7061

7162
#. module: website_sale_charge_payment_fee
72-
#: model:ir.model.fields.selection,name:website_sale_charge_payment_fee.selection__payment_acquirer__charge_fee_type__fixed
63+
#: model:ir.model.fields.selection,name:website_sale_charge_payment_fee.selection__payment_provider__charge_fee_type__fixed
7364
msgid "Fixed"
7465
msgstr "Fijo"
7566

7667
#. module: website_sale_charge_payment_fee
77-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_acquirer__charge_fee_fixed_price
68+
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_provider__charge_fee_fixed_price
7869
msgid "Fixed Price"
7970
msgstr "Precio Fijo"
8071

8172
#. module: website_sale_charge_payment_fee
82-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_acquirer__id
83-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_sale_order__id
84-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_sale_order_line__id
85-
msgid "ID"
86-
msgstr "ID"
87-
88-
#. module: website_sale_charge_payment_fee
89-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_acquirer____last_update
90-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_sale_order____last_update
91-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_sale_order_line____last_update
92-
msgid "Last Modified on"
93-
msgstr "Última modificación el"
94-
95-
#. module: website_sale_charge_payment_fee
96-
#: model:ir.model,name:website_sale_charge_payment_fee.model_payment_acquirer
97-
msgid "Payment Acquirer"
98-
msgstr "Método de Pago"
73+
#: model_terms:ir.ui.view,arch_db:website_sale_charge_payment_fee.payment_fee
74+
msgid "Payment Fee"
75+
msgstr "Cuota de pago:"
9976

10077
#. module: website_sale_charge_payment_fee
10178
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_sale_order__amount_payment_fee
10279
msgid "Payment Fee Amount"
10380
msgstr "Importe de la tarifa de pago"
10481

10582
#. module: website_sale_charge_payment_fee
106-
#: model_terms:ir.ui.view,arch_db:website_sale_charge_payment_fee.payment_fee
107-
msgid "Payment Fee:"
108-
msgstr "Cuota de pago:"
83+
#: model:ir.model,name:website_sale_charge_payment_fee.model_payment_provider
84+
msgid "Payment Provider"
85+
msgstr "Proveedor de pago"
10986

11087
#. module: website_sale_charge_payment_fee
11188
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_sale_order_line__payment_fee_line
11289
msgid "Payment fee line"
11390
msgstr "Línea de cuota pago"
11491

11592
#. module: website_sale_charge_payment_fee
116-
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_acquirer__charge_fee_percentage
117-
#: model:ir.model.fields.selection,name:website_sale_charge_payment_fee.selection__payment_acquirer__charge_fee_type__percentage
93+
#: model:ir.model.fields,field_description:website_sale_charge_payment_fee.field_payment_provider__charge_fee_percentage
94+
#: model:ir.model.fields.selection,name:website_sale_charge_payment_fee.selection__payment_provider__charge_fee_type__percentage
11895
msgid "Percentage"
11996
msgstr "Porcentaje"
12097

12198
#. module: website_sale_charge_payment_fee
122-
#: model:ir.model.fields,help:website_sale_charge_payment_fee.field_payment_acquirer__charge_fee_percentage
99+
#: model:ir.model.fields,help:website_sale_charge_payment_fee.field_payment_provider__charge_fee_percentage
123100
msgid "Percentage applied to order total"
124101
msgstr "Porcentaje aplicado al total del pedido"
125102

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from . import payment_acquirer
1+
from . import payment_provider
22
from . import sale_order
33
from . import sale_order_line

website_sale_charge_payment_fee/models/payment_acquirer.py renamed to website_sale_charge_payment_fee/models/payment_provider.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,17 @@
88
import odoo.addons.decimal_precision as dp
99

1010

11-
class PaymentAcquirer(models.Model):
12-
_inherit = "payment.acquirer"
11+
class PaymentProvider(models.Model):
12+
_inherit = "payment.provider"
1313

1414
charge_fee = fields.Boolean(
1515
"Fee charged to customer",
1616
help="An extra fee line will be added to online order when using this "
1717
"payment method",
1818
)
19-
charge_fee_description = fields.Text("Fee Description")
19+
charge_fee_description = fields.Text(
20+
"Fee Description", compute="_compute_charge_fee_description"
21+
)
2022
charge_fee_product_id = fields.Many2one("product.product", string="Fee Product")
2123
charge_fee_fixed_price = fields.Float(
2224
"Fixed Price", digits=dp.get_precision("Product Price")
@@ -31,7 +33,11 @@ class PaymentAcquirer(models.Model):
3133
default="fixed",
3234
)
3335

34-
@api.onchange("charge_fee_product_id")
35-
def onchange_charge_fee_product_id(self):
36-
if self.charge_fee_product_id:
37-
self.charge_fee_description = self.charge_fee_product_id.name
36+
@api.depends("charge_fee_product_id")
37+
def _compute_charge_fee_description(self):
38+
for provider in self:
39+
provider.charge_fee_description = (
40+
provider.charge_fee_product_id.name
41+
if provider.charge_fee_product_id
42+
else None
43+
)

website_sale_charge_payment_fee/models/sale_order.py

Lines changed: 42 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@ class SaleOrder(models.Model):
2020
)
2121

2222
def _compute_website_order_line(self):
23-
super()._compute_website_order_line()
24-
self.website_order_line = self.website_order_line.filtered(
25-
lambda l: not l.payment_fee_line
26-
)
23+
res = super()._compute_website_order_line()
24+
website_order_line = self.env["sale.order.line"]
25+
for order in self:
26+
for line in order.website_order_line:
27+
if not line.payment_fee_line:
28+
website_order_line |= line
29+
order.website_order_line = website_order_line
30+
return res
2731

2832
@api.depends(
2933
"order_line.price_unit",
@@ -33,46 +37,59 @@ def _compute_website_order_line(self):
3337
)
3438
def _compute_amount_payment_fee(self):
3539
for order in self:
36-
if self.env.user.has_group(
37-
"account.group_show_line_subtotals_tax_excluded"
40+
amount_payment_fee = 0.0
41+
if (
42+
self.env["website"]
43+
.get_current_website()
44+
.show_line_subtotals_tax_selection
45+
== "tax_excluded"
3846
):
39-
order.amount_payment_fee = sum(
40-
order.order_line.filtered("payment_fee_line").mapped(
41-
"price_subtotal"
42-
)
43-
)
47+
for line in order.order_line:
48+
if line.payment_fee_line:
49+
amount_payment_fee += line.price_subtotal
4450
else:
45-
order.amount_payment_fee = sum(
46-
order.order_line.filtered("payment_fee_line").mapped("price_total")
47-
)
51+
for line in order.order_line:
52+
if line.payment_fee_line:
53+
amount_payment_fee += line.price_total
54+
order.amount_payment_fee = amount_payment_fee
4855

49-
def update_fee_line(self, acquirer):
56+
def update_fee_line(self, provider):
5057
self.ensure_one()
5158
for line in self.order_line:
5259
if line.payment_fee_line:
5360
line.unlink()
54-
if acquirer.charge_fee:
55-
if acquirer.charge_fee_type == "fixed":
56-
price = acquirer.charge_fee_fixed_price
61+
if provider.charge_fee:
62+
if provider.charge_fee_type == "fixed":
63+
price = provider.charge_fee_fixed_price
5764
if (
58-
acquirer.charge_fee_currency_id.id
65+
provider.charge_fee_currency_id.id
5966
!= self.pricelist_id.currency_id.id
6067
):
61-
price = acquirer.charge_fee_currency_id._convert(
68+
price = provider.charge_fee_currency_id._convert(
6269
price,
6370
self.pricelist_id.currency_id,
6471
self.company_id,
6572
self.date_order,
6673
)
67-
elif acquirer.charge_fee_type == "percentage":
68-
price = (acquirer.charge_fee_percentage / 100.0) * self.amount_total
74+
elif provider.charge_fee_type == "percentage":
75+
if (
76+
self.env["website"]
77+
.get_current_website()
78+
.show_line_subtotals_tax_selection
79+
== "tax_excluded"
80+
):
81+
price = (
82+
provider.charge_fee_percentage / 100.0
83+
) * self.amount_untaxed
84+
else:
85+
price = (provider.charge_fee_percentage / 100.0) * self.amount_total
6986
self.env["sale.order.line"].create(
7087
{
7188
"order_id": self.id,
7289
"payment_fee_line": True,
73-
"product_id": acquirer.charge_fee_product_id.id,
74-
"product_uom": acquirer.charge_fee_product_id.uom_id.id,
75-
"name": acquirer.charge_fee_description,
90+
"product_id": provider.charge_fee_product_id.id,
91+
"product_uom": provider.charge_fee_product_id.uom_id.id,
92+
"name": provider.charge_fee_description,
7693
"price_unit": price,
7794
"product_uom_qty": 1,
7895
}

0 commit comments

Comments
 (0)