View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0007957 | module PayPal Checkout | module PayPal checkout - sub | public | 2026-05-29 10:49 | 2026-06-11 11:10 |
| Reporter | SleTp | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Product Version | 2.8.4 / 3.7.4 | ||||
| Target Version | 2.9.1 / 3.8.1 | Fixed in Version | 2.9.1 / 3.8.1 | ||
| Summary | 0007957: Payment method oscpaypal - inheritance chain for markVouchers is skipped and vouchers are not properly marked as used | ||||
| Description | In the file Model/Order.php the markVouchers method is overwritten: protected function markVouchers($oBasket, $oUser) // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore { $sessionPaymentId = (string) $this->getPaymentService()->getSessionPaymentId(); // Skip markVoucher if finalizeOrder is called in the proxyController. if (PayPalDefinitions::isProxyControllerPayment($sessionPaymentId)) { return null; } return parent::markVouchers($oBasket, $oUser); } For payment methods like "oscpaypal" this means that that vouchers are never marked as used, only ever as reserved. And any module logic that depends on the inheritance chain of that method gets skipped. We implemented a temp fix in EventSubscriber/PayPalOrderCompletedSubscriber.php, where we call a copy-pasted version of the markVouchers method. | ||||
| Steps To Reproduce | - Put a product in the basket - Put a voucher in the basket - Go though the full checkout - The entry in the oxvouchers table is now only reserved, not used - Whatever logic is attached by modules to the markVouchers method is *not* executed | ||||
| Additional Information | QA - ES - | ||||
| Tags | PayPal, Voucher | ||||
| related to | 0007944 | resolved | mario_lorenz | Vouchers in PayPal |