- SV-505 — Added a "Request Return" button to the order detail page, using the same conditions
as the order list action (return feature enabled, and the order still inside the configured return
window). Return availability moved into the new Block/Order/ReturnRequest.php trait, shared by
Block/Order/Lister.php and Block/Order/Details.php; Block/Base/Details.php gained a
canRequestReturn() default of false so the shared base/details/header-buttons.phtml template
stays safe on the invoice, delivery and quotation detail pages. Order detail blocks now select
DocDate, which the window check needs.
- SV-501 — Return quantities are normalised in Helper/RmaCreateData.php before use. Anything
non-numeric counts as nothing to return: PHP 8 compares a non-numeric string to 0 as a string,
so 'NaN' > 0 was true and the value reached the total calculations, where it threw a
TypeError that surfaced as the generic error message.
- Return quantities are additionally capped at the Quantity the order line actually contains. The
form's max attribute was previously the only limit, so a crafted post could return more than was
ordered. The cap does not account for quantities returned on earlier requests for the same order.
Added unit tests under Test/Unit/ — the first in this module.