-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add discount indication to payment method #3
Comments
I made some modifications in catalog/model/extension/total/payment_discount.php I can't seem to be able to fix the duplication issue on mobile devices. class ModelExtensionTotalPaymentDiscount extends Controller
{
public function getTotal($total)
{
if ($this->config->get('total_payment_discount_status') && $this->cart->getSubTotal()) {
$discount_payment_method = $this->config->get('total_payment_discount_payment_type');
$discount = $this->config->get('total_payment_discount_percentage');
$desc_text = sprintf($this->config->get('total_payment_discount_description'), $discount.'%');
$sort_order = $this->config->get('total_payment_discount_sort_order');
// Loop through available payment methods
foreach ($this->session->data['payment_methods'] as &$payment_method) {
// Check if the current payment method matches
if ($discount_payment_method == $payment_method['code']) {
// Update payment method title with discount percentage
$payment_method['title'] .= ' (-' . $discount . '%)';
// If payment method is selected, add the discount to totals
if ($this->session->data['payment_method']['code'] == $discount_payment_method) {
$total['totals'][] = array(
'code' => 'payment_discount',
'title' => $desc_text,
'value' => '-' . (($discount / 100) * $total['total']),
'sort_order' => $sort_order,
);
$total['total'] -= (($discount / 100) * $total['total']);
}
}
}
}
}
} |
Nice work @katalin2k. At a glance, I can guess that the issue is coming from the loop: the discount is appended to the payment method title more than once here: I'll see how I can fix the issue and push an update as soon as I can. Thank you. |
Which version of opencart are you currently using? |
3.0.3.8
…On Sun, 15 Oct 2023 at 19:44, Samuel Asor ***@***.***> wrote:
Which version of opencart are you currently using?
—
Reply to this email directly, view it on GitHub
<#3 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A6EQSLDPAKMAUDAOHQZRSATX7QHH3ANCNFSM6AAAAAA4BKOK3Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Dont forget about the description in backend. Add a tooltip or placeholder
on how text should be added with %s.
On Sun, 15 Oct 2023 at 19:49, Catalin Florica ***@***.***>
wrote:
… 3.0.3.8
On Sun, 15 Oct 2023 at 19:44, Samuel Asor ***@***.***>
wrote:
> Which version of opencart are you currently using?
>
> —
> Reply to this email directly, view it on GitHub
> <#3 (comment)>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/A6EQSLDPAKMAUDAOHQZRSATX7QHH3ANCNFSM6AAAAAA4BKOK3Q>
> .
> You are receiving this because you were mentioned.Message ID:
> ***@***.***>
>
|
Please try this code instead: class ModelExtensionTotalPaymentDiscount extends Controller
{
public function getTotal($total)
{
if ($this->config->get('total_payment_discount_status') && $this->cart->getSubTotal()) {
$discount_payment_method = $this->config->get('total_payment_discount_payment_type');
$discount = $this->config->get('total_payment_discount_percentage');
$desc_text = sprintf($this->config->get('total_payment_discount_description'), $discount.'%');
$sort_order = $this->config->get('total_payment_discount_sort_order');
// Update the title of the discounted payment method
$this->session->data['payment_methods'][$discounted_payment_method]['title'] = $this->session->data['payment_methods'][$discounted_payment_method]['title'] . ' (-' . $discount . '%)';
// If payment method is selected, add the discount to totals
if ($this->session->data['payment_method']['code'] == $discount_payment_method) {
$total['totals'][] = array(
'code' => 'payment_discount',
'title' => $desc_text,
'value' => '-' . (($discount / 100) * $total['total']),
'sort_order' => $sort_order,
);
$total['total'] -= (($discount / 100) * $total['total']);
}
}
}
} |
It creates another payment method, please check screenshot:
…On Sun, 15 Oct 2023 at 20:25, Samuel Asor ***@***.***> wrote:
Please try this code instead:
class ModelExtensionTotalPaymentDiscount extends Controller
{
public function getTotal($total)
{
if ($this->config->get('total_payment_discount_status') && $this->cart->getSubTotal()) {
$discount_payment_method = $this->config->get('total_payment_discount_payment_type');
$discount = $this->config->get('total_payment_discount_percentage');
$desc_text = sprintf($this->config->get('total_payment_discount_description'), $discount.'%');
$sort_order = $this->config->get('total_payment_discount_sort_order');
// Update the title of the discounted payment method
$this->session->data['payment_methods'][$discounted_payment_method]['title'] = $this->session->data['payment_methods'][$discounted_payment_method]['title'] . ' (-' . $discount . '%)';
// If payment method is selected, add the discount to totals
if ($this->session->data['payment_method']['code'] == $discount_payment_method) {
$total['totals'][] = array(
'code' => 'payment_discount',
'title' => $desc_text,
'value' => '-' . (($discount / 100) * $total['total']),
'sort_order' => $sort_order,
);
$total['total'] -= (($discount / 100) * $total['total']);
}
}
}
}
—
Reply to this email directly, view it on GitHub
<#3 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A6EQSLGPPOGY2JFKA4TRHCLX7QMCBANCNFSM6AAAAAA4BKOK3Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Can't find the screenshot you are talking about. But update the code as follows: // Update the title of the discounted payment method
if (isset($this->session->data['payment_methods'])) {
$this->session->data['payment_methods'][$discounted_payment_method]['title'] = $this->session->data['payment_methods'][$discounted_payment_method]['title'] . ' (-' . $discount . '%)';
} |
Now it just creates a new payment method but it just shows the discount.
Its not duplicated.
…On Sun, 15 Oct 2023 at 21:41, Samuel Asor ***@***.***> wrote:
Can't find the screenshot you are talking about. But update the code as
follows:
// Update the title of the discounted payment methodif (isset($this->session->data['payment_methods'])) {
$this->session->data['payment_methods'][$discounted_payment_method]['title'] = $this->session->data['payment_methods'][$discounted_payment_method]['title'] . ' (-' . $discount . '%)';
}
—
Reply to this email directly, view it on GitHub
<#3 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A6EQSLGJQKJD77XAV2OTWRLX7QU5ZANCNFSM6AAAAAA4BKOK3Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Screenshot? |
I’m on mobile right now but here it is
…On Sun, 15 Oct 2023 at 21:54, Samuel Asor ***@***.***> wrote:
Screenshot?
—
Reply to this email directly, view it on GitHub
<#3 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A6EQSLDZZCGALNJZDPBD2B3X7QWPLANCNFSM6AAAAAA4BKOK3Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Your screenshots do not display when you send via email. Try replying directly on github. |
I uploaded it on github but please contact me directly by email, its easier
this way
…On Sun, 15 Oct 2023 at 22:04, Samuel Asor ***@***.***> wrote:
Your screenshots do not display when you send via email.
Try replying directly on github.
—
Reply to this email directly, view it on GitHub
<#3 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A6EQSLAGBQG3WQINPAJJJLLX7QXVHANCNFSM6AAAAAA4BKOK3Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
I think I fixed it. Please check the code:
[image: File]
payment_discount.php
<https://drive.google.com/file/d/1j9XDPKkKUzhtKXjcK2x4kws6cBPAR7tt/view?usp=drivesdk>
On Sun, 15 Oct 2023 at 22:08, Catalin Florica ***@***.***>
wrote:
… I uploaded it on github but please contact me directly by email, its
easier this way
On Sun, 15 Oct 2023 at 22:04, Samuel Asor ***@***.***>
wrote:
> Your screenshots do not display when you send via email.
>
> Try replying directly on github.
>
> —
> Reply to this email directly, view it on GitHub
> <#3 (comment)>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/A6EQSLAGBQG3WQINPAJJJLLX7QXVHANCNFSM6AAAAAA4BKOK3Q>
> .
> You are receiving this because you were mentioned.Message ID:
> ***@***.***>
>
|
I don't think this is a full fix. This will not work for a new user. You can try by clearing your browser session and cookies, then try to checkout. |
Why not if it checks if the discount is already added after payment method
title?
…On Sun, 15 Oct 2023 at 23:19, Samuel Asor ***@***.***> wrote:
I don't think this is a full fix.
This will not work for a new user. You can try by clearing your browser
session and cookies, then try to checkout.
—
Reply to this email directly, view it on GitHub
<#3 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A6EQSLAITV2OU2A7SGNFPODX7RAOPANCNFSM6AAAAAA4BKOK3Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Check now. Seems to be working fine now.
[image: File]
payment_discount.php
<https://drive.google.com/file/d/1Gqy4F1bDgAzhdanApKojb9XkVPJ3Wxnl>
On Sun, 15 Oct 2023 at 23:23, Catalin Florica ***@***.***>
wrote:
… Why not if it checks if the discount is already added after payment method
title?
On Sun, 15 Oct 2023 at 23:19, Samuel Asor ***@***.***>
wrote:
> I don't think this is a full fix.
>
> This will not work for a new user. You can try by clearing your browser
> session and cookies, then try to checkout.
>
> —
> Reply to this email directly, view it on GitHub
> <#3 (comment)>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/A6EQSLAITV2OU2A7SGNFPODX7RAOPANCNFSM6AAAAAA4BKOK3Q>
> .
> You are receiving this because you were mentioned.Message ID:
> ***@***.***>
>
|
I modified the condition a little and seems to be working fine now. I will
test further
…On Sun, 15 Oct 2023 at 23:30, Samuel Asor ***@***.***> wrote:
On initial visit, a user will be presented with the error:
[image: image]
<https://user-images.githubusercontent.com/8720569/275353039-5d34fe98-2abe-405f-8c05-6dd4a808d8a8.png>
—
Reply to this email directly, view it on GitHub
<#3 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A6EQSLHX35DENGNFODNA3TLX7RBW5ANCNFSM6AAAAAA4BKOK3Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
For me works perfectly fine. Probably because I use Journal3 theme and it
auto selects first available payment method. You should investigate more if
you think it’s not a full fix.
…On Sun, 15 Oct 2023 at 23:30, Samuel Asor ***@***.***> wrote:
On initial visit, a user will be presented with the error:
[image: image]
<https://user-images.githubusercontent.com/8720569/275353039-5d34fe98-2abe-405f-8c05-6dd4a808d8a8.png>
—
Reply to this email directly, view it on GitHub
<#3 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A6EQSLHX35DENGNFODNA3TLX7RBW5ANCNFSM6AAAAAA4BKOK3Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Yes, this fix is not applicable to all themes. It doesn't work on the default theme either. |
This is the most I can do. I gave you the start, now you should fine a fix
for default theme.
Note that this works for Journal3 theme with auto select first available
payment method.
…On Sun, 15 Oct 2023 at 23:42, Samuel Asor ***@***.***> wrote:
Yes, this fix is not applicable to all themes. It doesn't work on the
default theme either.
—
Reply to this email directly, view it on GitHub
<#3 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A6EQSLGAQAJ7FY3UJRPQMQTX7RDDNANCNFSM6AAAAAA4BKOK3Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
The text was updated successfully, but these errors were encountered: