PrestaShop / PrestaShop

PrestaShop is the universal open-source software platform to build your e-commerce solution.
https://www.prestashop-project.org/
Other
8.14k stars 4.8k forks source link

Allow a cart rule not to be compatible with all other cart rules (old and new) #19935

Open superskyman100 opened 4 years ago

superskyman100 commented 4 years ago

The problem is that when someone creates a new cart rule, by default, without ticking the compatibility check box, all the cart rules you have previously created are compatible with this new cart rule you are setting up. So every time you create a new cart rule you have to manually check the compatibility box, and then remove all the previous cart rules.

This is extremely frustrating and time wasting for shops that have the need to create new discount codes on a weekly or daily basis. It’s a lot of work.

The default behaviour, in my view, should be that if you create a cart rule and you don’t check the compatibility box, it is not compatible with all the others you have previously created. And if you check it, then you should be obliged to manually add the ones you want to be compatible.

prestashop-issue-bot[bot] commented 4 years ago

Thanks for opening this issue! We will help you to keep its state consistent

florine2623 commented 4 years ago

Hi @superskyman100 , You need to delete the content of ps_cart_rule_combination and none of the cart rule will be compatible with each other. i just did the test and it works correctly. Please check and let me know.

superskyman100 commented 4 years ago

Have you tested what happened in case a new cart rule is created ?

We are not speaking about static situation, but dynamic one. We need newly created discounts (we will have hundreds per days due to reminder cart modules) to be incompatible by default.

BUT we also need some existing cart rule to stay compatible with others....

Deleting all ps_cart_rule combinaison won't solve the (dynamic) issue.... Right ?

On Thu, 25 Jun 2020 at 20:57, florine2623 notifications@github.com wrote:

Hi @superskyman100 https://github.com/superskyman100 , You need to delete the content of ps_cart_rule_combination and none of the cart rule will be compatible with each other. i just did the test and it works correctly. Please check and let me know.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/PrestaShop/PrestaShop/issues/19935#issuecomment-649523840, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOKM5WWDCHBQDJV2A7UO3PTRYNCULANCNFSM4OIH5NFA .

florine2623 commented 4 years ago

Then you must add the restriction directly manually from the BO If you have specific cases in your shop, you will need to contact an agency to develop a special tool for you. Or ou need to contact the developer of the tool you are using directly from your Addons account to request a new feature. The GitHub space is for PrestaShop core software, not external modules.

Deleting all ps_cart_rule combinaison won't solve the (dynamic) issue....

No it won't.

superskyman100 commented 4 years ago

Well we are speaking about BUG of the core software : if we uncheck all cart rules compatibility (as shown up in several screenshots), they are still compatible >> there is obviously something wrong.

This BUG creates problem when we use Prestashop, with or without modules. Modules that create discounts are not the problem. The problem is that we cannot use the core prestahop functionalities as they supposed to work, cause it's not working.

Just look the forums, there is plenty of reports about this problem.....

On Fri, 26 Jun 2020 at 15:13, florine2623 notifications@github.com wrote:

Then you must add the restriction directly manually from the BO If you have specific cases in your shop, you will need to contact an agency to develop a special tool for you. Or ou need to contact the developer of the tool you are using directly from your Addons account to request a new feature. The GitHub space is for PrestaShop core software, not external modules.

Deleting all ps_cart_rule combinaison won't solve the (dynamic) issue....

No it won't.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/PrestaShop/PrestaShop/issues/19935#issuecomment-650018255, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOKM5WV6ACI3YPZLIDBHADTRYRDALANCNFSM4OIH5NFA .

florine2623 commented 4 years ago

I can't reproduce your issue. When the cart rules are uncombinable this is the issue I have in the FO : Capture d’écran 2020-06-26 à 17 29 31

Capture d’écran 2020-06-26 à 17 28 08

If you are not using theme classic, check if the error comes from your theme.

superskyman100 commented 4 years ago

You have to uncheck the 'Compatibility with other cart rules' checkboxes. If you do so for all discounts, you will see that they are compatible while (unchecking the boxes means) it shouldn't be .

On Fri, 26 Jun 2020 at 23:30, florine2623 notifications@github.com wrote:

I can't reproduce your issue. When the cart rules are uncombinable this is the issue I have in the FO : [image: Capture d’écran 2020-06-26 à 17 29 31] https://user-images.githubusercontent.com/16019289/85874242-9e980700-b7d2-11ea-8348-53a860650f09.png

[image: Capture d’écran 2020-06-26 à 17 28 08] https://user-images.githubusercontent.com/16019289/85874110-6bee0e80-b7d2-11ea-931b-c79c392078c9.png

If you are not using theme classic, check if the error comes from your theme.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/PrestaShop/PrestaShop/issues/19935#issuecomment-650242599, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOKM5WXEHRIZDOLLLZMCMOTRYS5JLANCNFSM4OIH5NFA .

florine2623 commented 4 years ago

That's the point of this option. If you check "Compatibility with other cart rules" it opens a board where you can choose the cart rules that can be combined or not.

superskyman100 commented 4 years ago

The point should be to make rules compatible if you choose to make them compatible (click on compatibility), not to make them compatible if you don't click. That's just stupid. Anyway, waste enough time with Prestashop bugs, always end having buying module to solve such stupid issues.

On Thu, 2 Jul 2020 at 17:33, florine2623 notifications@github.com wrote:

That's the point of this option. If you check "Compatibility with other cart rules" it opens a board where you can choose the cart rules that can be combined or not.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/PrestaShop/PrestaShop/issues/19935#issuecomment-652900005, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOKM5WRYYWMBYTXTYNHK7H3RZRH5JANCNFSM4OIH5NFA .

florine2623 commented 4 years ago

You can choose to make them compatible or not. You are free of your actions regarding the discounts.

Pitt1823 commented 4 years ago

I think superskyman100 hasn’t made his point very clearly. I too find this to be a bug of PrestShop.

The problem is that when someone creates a new cart rule, by default, without ticking the compatibility check box, all the cart rules you have previously created are compatible with this new cart rule you are setting up. So every time you create a new cart rule you have to manually check the compatibility box, and then remove all the previous cart rules.

This is extremely frustrating and time wasting for shops that have the need to create new discount codes on a weekly or daily basis. It’s a lot of work. And by reading the forums I’m not the only one experiencing this issue.

The default behaviour, in my view, should be that if you create a cart rule and you don’t check the compatibility box, it is not compatible with all the others you have Previously created. And if you check it, then you should be obliged to manually add the ones you want to be compatible.

matks commented 4 years ago

The tone of the comments on this issue is quite heated, please remember we have a Code of Conduct https://github.com/PrestaShop/PrestaShop/blob/develop/CODE_OF_CONDUCT.md that says

This being said, the suggestion seems relevant so I ping @PrestaShop/prestashop-product-team to have a look

jolelievre commented 4 years ago

I'm not sure we should change the behaviour that much, because although in your case you consider that the default behaviour is for Cart rules to be incompatible, some other merchants might think the opposite..

As from the technical point of view I guess if no restriction is set on a cart rule then it's considered to be appliable with others, which kind of makes sense.

However I do understand your issue when you need to create self-incompatible cart rules and it's a pain, so instead of changing the existing behaviour I would suggest adding one that allows to easily create a independent cart rule. This could be done by improving the form creation. Maybe we could have a select box where you would choose:

Pitt1823 commented 4 years ago

Thanks for pointing that out clearly @jolelievre

Since I follow the stores of 7 merchants in different industries, with different needs about discounts and coupon codes, I found the scenarios in which we need to create cart rules that are compatible with each other are extremely rare if not non-existent. Hence the reason why I naively thought about this as a ‘bug’. I couldn't picture a logical reason why one would make different discounts cumulative. With that said I understand my experience is not statistically significant and I take that some merchants can find the current default behaviour useful.

I see how this can become complicated to overcome to make everyone happy.

Your suggestion to improve the form is most probably the only way forward. In an ideal scenario one would be able to chose what is the default behaviour for each of the restrictions while still being able to act in each new scenario.

I see a visual solution similar to the one used for categorisations on the product page . On the left of the three options you suggested, you have a square tick box, on the right a circle tick box. The circle dot is the default behaviour the merchants wants to see from the next new cart rule creation, while the left square tick box is there for adjustments foe each specific scenario.

superskyman100 commented 4 years ago

In my humble opinion the issue is quite simple. And this is nor a technical or statistical issue, but a functional one... Of course we can find logic behind the actual Prestashop discounts behavior, but this logic is NOT functional in real life.

Why ? Basically, because there is no choice in between default behaviors.

Unchecking compatibility box should make discounts rules incompatibles by default. Checking compatibility box should make them compatible by default (with possibility to refine rules one by one if needed). That's a basic YES/NO behavior that should allow to choose the default behavior of cart rules with other ones.

Actually, we cannot choose this default behavior : it's ALWAYS compatible by default (YES/YES) with existing AND newly created cart rules, box checked or unchecked...

That said, the fact is that Prestashop needs its satellites modules to be one complete e-commerce solution, and what i say here is not anecdotal. The Prestashop ecosystem is what it is, and as a matter of fact, most payed marketing/discounts modules create codes "à la volée" and we cannot manage compatibility/incompatibility of these created codes, one by one, by hand, with basic Prestashop cart rules behavior (YES/YES). Of course we can argue and say that modules devs should think about that, but that's just not the case, most modules rely on core Prestashop behavior to do their job (or not ;).

In a nutshell, it should be useful to have one logical 'contrarian - YES/NO' behavior of the Prestashop core cart rules functionality, to give any core cart rule the opportunity to be either compatible OR incompatible by default with other existing OR newly created new rules.

Hope I made myself clear this time ;),

Cheers guys

ballashop commented 4 years ago

@marionf @jolelievre @florine2623 @Pitt1823 @superskyman100 very interesting discussion, as sellers we have the same position as superskyman100. Usually the seller applies or adds discount rules, so removing the already assigned rules seems less intuitive. But with some small changes in layout and functionality, all could be solved, I took a screenshot with some graphic changes. layout-rule

an important change is the one shown in the screenshot, an opportunity that allows us not to apply discounts on already discounted products. Do discounts also mean the rules?

discount 02

Thanks a lot for your support. Balla.

mrabsinthe commented 3 years ago

@Pitt1823 @superskyman100 @ballashop very well done and explained, I could not agree more! Why would we generally want make any newly issued discount being compatible with all previously issued ones??? And I cannot disagree more with @jolelievre , seems like you don't want to listen merchants! Perhaps you can explain how to make every new abandoned cart discount NOT compatible with hundreds of previously issued coupons? I would love to know, because that is our issue...

MatShir commented 3 years ago

Hi, We are delighted to see so many feedbacks on the subject. @mrabsinthe, we do listen to the merchants and your point of view as well. It is that we take a lot of precautions. Any changes could arm the merchants' businesses until the next version to fix those changes. We want the solution to be as wide as possible. Many merchants from different industries and countries use our solution.

Said so, I think with @jolelievre, @superskyman100, and @ballashop ideas, we could have a nice improvement. The only problem that I see on @ballashop's design is that the excluded discounts is a static list, so if you create a new cart rule, you will have to edit the previous one to no be compatible with the new one.

But I trust @prestascott's design talent to find what could be the best fit? Do you think it could find a place on your new design for the migration of the page? The page will be migrated, so any improvement will have to wait for the migration. It could be planned for 1.7.8 depending on our resources, it is not guaranteed. Also, check what could be the best option a default or having a mandatory option to select a type of compatibility.

The big problem of the modules need to be handle as well as said @superskyman100 @jolelievre, Do you think it will bring a lot of BC changes to impose module in the cart creation to choose a type of compatibility? An idea could be to set by default as incompatible since is the option that will have less impact on the merchant turnover.

ballashop commented 3 years ago

@MatShir > The only problem that I see on @ballashop's design is that the excluded discounts is a static list, so if you create a new cart rule, you will have to edit the previous one to no be compatible with the new one.

Excellent observation, is exactly what superskyman100 is asking for. Mine was not a definitive solution but simply graphics to improve the usability of the rules. Sellers like us who have so many rules on their site know what I'm talking about. We hope this aspect will be improved soon. Thanks for your support.

TheKombinat commented 3 years ago

Hi! It's Aug 2021 already so a feedback from a comp-sci Msc. folk who is also a shop owner.

tl;dr: make the compatibility option "opt-in" not opt-out.

It's a simple change technically. Backward compatibility of this change is hard to call problematic, since combined coupons is very rare case and can be fixed quickly in the BO. It was already mentioned above and I can send you opinion/evidence from a marketing advisor if needed.

Please note that the current state is a serious issue that cost us money if unnoticed, and costs money, penalties, and lost customers due to disputes. With close to none fault on the side of shop owner...

Realistic scenario from my own store:

Simpler scenario: A very small shop who has just "free shipping" and -10% code is also overkill: customers can enter both and the shop is left with no profit or loss, e.g. assuming that shipping a large parcel from Germany to the US costs a lot.

That logic can be assumed a bad default in the Prestashop software. Currently to avoid it, for N discounts, the BO user has to iterate over O(N^2) discount combinations and remove them. Yes, that is so bad and probably not known by most users.

Regards, Jared

alisamie97 commented 1 year ago

We are running a huge shop with ~800 cart rules, and relatively ~1.5 million rows of combinations which is insane. Actually it should be ~640k but because we removed some cart rules the combinations are still there. Yet again ~640k rows is not good for 800 cart rules. image image

We thought about your ideas and we come up with another idea which we are testing now.

Currently the ps_cart_rule_combination is considered as an ALLOW LIST. We want to flip the meaning and make it a BLOCK LIST and store only the incompatible cart rules in database.

We believe that this is a business specific case. Some merchants want to create vouchers which are compatible with others by default and some other merchants want the reverse logic.

So in order to do so, I tried to override two parts in CartRule

Still not sure if it is a correct approach. I would like to hear from others and what they think about it

https://github.com/PrestaShop/PrestaShop/blob/9fd649614c1a66644006e56bef56a96958fe3bfe/classes/CartRule.php#L683 https://github.com/PrestaShop/PrestaShop/blob/9fd649614c1a66644006e56bef56a96958fe3bfe/classes/CartRule.php#L1575

alisamie97 commented 1 year ago

We are running a huge shop with ~800 cart rules, and relatively ~1.5 million rows of combinations which is insane. Actually it should be ~640k but because we removed some cart rules the combinations are still there. Yet again ~640k rows is not good for 800 cart rules. image image

We thought about your ideas and we come up with another idea which we are testing now.

Currently the ps_cart_rule_combination is considered as an ALLOW LIST. We want to flip the meaning and make it a BLOCK LIST and store only the incompatible cart rules in database.

We believe that this is a business specific case. Some merchants want to create vouchers which are compatible with others by default and some other merchants want the reverse logic.

So in order to do so, I tried to override two parts in CartRule

Still not sure if it is a correct approach. I would like to hear from others and what they think about it

https://github.com/PrestaShop/PrestaShop/blob/9fd649614c1a66644006e56bef56a96958fe3bfe/classes/CartRule.php#L683

https://github.com/PrestaShop/PrestaShop/blob/9fd649614c1a66644006e56bef56a96958fe3bfe/classes/CartRule.php#L1575

I think this idea will be positive in most businesses. You might have cart rule generators and would like them to be all in an allow list, so this way with the core functionality you will end up with a huge table of combinations. With our idea you do not need to specify the combinable cart rules. You only need to fill the block list for specific cart rules.

Another benefit of this idea is that when you add new cart rule which is compatible with all cart rules, you do not need to update old cart rules, and no need to add new rows to combination table.