What's Changed
- Import the Route facade in opayo and paypal route files by @glennjacobs in #2636
- Support variant rewards when automatically adding BuyXGetY rewards by @kha333n in #2631
- Store automatically added BuyXGetY reward lines using the morph map by @kha333n in #2632
- Scope the memoised discount set to the cart it was built for by @kha333n in #2623
- Reprice the cart when the session currency changes by @kha333n in #2625
- Scope state tax zone lookups to the address country by @kha333n in #2626
- Prevent shipping modifiers re-entering while options are resolving by @kha333n in #2630
- Annotate getDefault as nullable on HasDefaultRecord by @kha333n in #2634
- Honour discount conditions in BuyXGetY by @kha333n in #2624
- Keep a cart's own discount when its draft order is created again by @kha333n in #2637
- fix invalid countries and invalid states by @xlvis7 in #2612
- Fix hub product option mapping and new variant tax class (1.x) by @glennjacobs in #2640
- Convert Stripe amounts based on currency decimal places (#2516) by @wakqasahmed in #2601
- Stop dropping media custom properties on create/edit by @wakqasahmed in #2598
- fix(admin): trim whitespace from panel form input by @glennjacobs in #2642
- fix(attributes): expose and apply default_value in the admin panel by @bpotmalnik in #2505
- test(stripe): pin StoreChargesTest currency to stop a random flake by @glennjacobs in #2644
- fix(shipping): evaluate weight tiers in the method's configured weight_unit by @glennjacobs in #2645
- fix(core): support PostgreSQL with deterministic ordering by @alecgarcia in #2518
- fix(core): make order-line purchasable morph nullable and de-morph shipping lines by @glennjacobs in #2643
- Include non-shippable (digital) lines in order PDF invoice (#2409) by @wakqasahmed in #2599
- Add a multi-quantity BuyXGetY reward as one line by @kha333n in #2639
- SystemTaxDriver: use TaxZone::getDefault() to prevent duplicate queries by @ryanmitchell in #2511
- [1.x] Show collection breadcrumb in discount selection by @ryanmitchell in #2557
- Ensure automatic discounts can be fulfilled by @ryanmitchell in #2509
- Memoise the discounts a cart has already consumed by @kha333n in #2638
- Dispatch event on product/variant inventory update (#2226) by @wakqasahmed in #2606
- Add skill for laravel boost by @punyflash in #2491
- fix(pricing): correct formatterStyle parameter type from string to int by @sgregor in #2520
- Translate product-variants widget labels by @yazdanghalavand in #2555
- fix(core): accept DateTimeImmutable in scheduling and scope methods by @glennjacobs in #2648
- Enforce minimum unit quantity of 1 in product variant form by @Huncsuga in #2547
- Localize boolean meta values to Yes/No in order info by @Huncsuga in #2545
- Prevent multiple order addresses from same type by @mathis-gp in #2507
- Add Shipping permission localization to panel by @wychoong in #2484
New Contributors
- @kha333n made their first contribution in #2631
- @xlvis7 made their first contribution in #2612
- @alecgarcia made their first contribution in #2518
- @punyflash made their first contribution in #2491
- @sgregor made their first contribution in #2520
- @yazdanghalavand made their first contribution in #2555
Full Changelog: 1.5.0-beta.6...1.5.0