Promotion flaw: Customer can bypass the discount prerequisite

CS-Cart v4.15.1.SP2

You can create promotions with bonuses specific to payment methods. If the user selects that payment method on the payment page, they are awarded this cart bonus. But if somehow the order was unsuccessful or the payment method is offline; the customer then can go to their order details and pay by any method they desire, having the bonus applied, although the condition for the promotion hasn’t met.

To reproduce: Create a cart promotion, let’s call it “discount for payment by bank”. On the conditions tab, select “payment method” as a condition and select anything. (In my case, I select bank transfer.) Then go to Bonuses tab to add a order discount bonus. Select “by percentage of the original price” and write any value to the percentage input (I input 5). Now as a customer, place an order selecting bank transfer as the payment method, which will award you 5% discount, due to this promotion. Click on “pay” button which will display successful order result since this method is offline. Then go to your order detail; now you can pay by other methods, like credit card; which actually must not be eligible for the promotion of “discount for payment by bank”.

If an order was already placed, promotions are no longer being calculated. You should untick the Pay order again option from the Open order status in order for your customer to be unable to pay via something else as soon as they place an order.
https://docs.cs-cart.com/latest/user_guide/orders/order_statuses/set_status.html

I think this doesn’t make sense. Because if the system lets you to define a “payment method” condition and you place an order with that method; you shouldn’t be able to pay with another method and be eligible to that promotion at the same time.

I think this flaw wasn’t considered before so the system is not designed to let promotion calculation after the order is placed. I see that it is now hard to fix it but it should still be fixed. The system shouldn’t force you to sacrifice another system-wide feature just to use another feature which is actually not related. It is very wrong to disable an unrelated system-wide feature for a single promotion.

As I said, this seems to be not a specific bug but a design flaw which must be fixed.

I’m sorry, but I don’t see this as a bug, but rather as a misuse of the default functionality, leading to the consequences described.

I don’t think you understand the situation here.

Being able to let customers pay for the order later and making cart promotions are very distinct, unrelated features. If you are forced to sacrifice (i.e. disable) one of them in order to use the other one, there is definitely a design flaw here. It is like saying “if you want to accept payments by paypal, then you need to disable credit card payment method”.

This is just not right. If you can make a “cart promotion” based on a payment type, then it must be a cart promotion based on a payment type. Plain and simple; other features should not prevent this. That’s why I don’t call it a plain bug but a design flaw.

If im reading it right …if you untick the “pay order again”
This means they cant pay for that order number, but can choose the “reorder this order” button where they can ppace again and choose the bank payment method again and get the promotion doesnt it.?

That’s right. But that’s as I said, effectively disabling an irrelevant feature. Being able to re-place an order back is something completely different from paying an already placed order. Because the conditions are very much prone to change for the customer to re-place the order. (Stocks could be out, promotion could have ended, a voucher might have expired etc etc…) It will be completely a different order; so that wouldn’t remedy the problem here.