- Added support for separate first & last name fields for order addresses #788
- Fixed issue where orders field was being added to every blueprint #785 #786
- Danish translation #776 by @rabol
- All strings in the Control Panel & front-end validation from Simple Commerce are now translatable #777
- Some of the form validation code has been refactored #780
- The order of parameters being passed into the
StockRunningLow
andStockRunOut
events has been changed. #782
- Fixed
{{ sc:gateways }}
tag when specifying a gateway #774 #775
- Redesigned documentation site!
- PHP 8.2 is now officially supported!
- An 'Orders' field will be added to Customer/User blueprints automatically, if not already present #772
- Made some tweaks to the
CheckoutController
- no new features #773
- Allow for translating order emails #768 #769
- Fixed filtering by country on
{{ sc:regions }}
tag #767 by @el-schneider
- A new
{{ sc:cart:tax_total_split }}
tag which returns a cart's tax total, split by tax rates #759 by @Sm1lEE
- You can now pass external URLs as the
redirect
parameter on Form Tags #756 #757
- Fixed offsite payments with the PayPal gateway #755 #758
- Fixed stock not being checked at all when adding products to the cart #752 by @marcvdm
Note: v4.2 now requires a minimum of Statamic v3.3.48.
- Added
raw_price
computed value for products #749
- Fixed 'Order Shipped' email #743 #744
- Fixed coupons not working when using Database Customer Driver #742 #745 by @jornwildenbeest
- Fixed a bug where marking an order as shipped could override order data #741 by @cesaramirez
- Fixed
{{ sc:customer:update }}
tag error #739 by @cesaramirez
- You can now filter orders by customer #737
- You can now filter orders by products #736
- Deleted products on orders are now handled better now #732 #734
- Renamed filenames of blueprint stubs to match the starter kit
- SC will now check if the 'Stock' field exists on the product's blueprint before trying to check if it's localisable #721 #733
- Information about your Simple Commerce configuration will now be outputted by
php please support:details
andphp artisan about
#729
- Product Variant not being displayed when viewing Line Items in the Control Panel #727 #728
- Fixed display issues when using SC's fieldtypes in listing tables #723 #724
- Fixed stock being decreased on localised product entries when Stock field isn't localised #721 #725
- When re-ordering variants, the prices will no longer be shuffled about #719 #720
- There's been a few coupon-related improvements:
- You can now disable coupons #713
- You can now set coupons to expire after a certain date #716
- The 'Customers' field on the Coupons publish form will now change, depending on the current customer driver (eg. entries, users, database). #714
- Under the hood, we're now taking advantage of PHP 8.1 enums #712
- Simple Commerce has dropped support for PHP 8.0 and Laravel 8. Leaving PHP 8.1 and Laravel 9 as the currently supported versions.
- Coupons have moved out of collections, into their own 'thing' in the Stache. #705
You can read more about what's changed in the upgrade guide, along with steps on how to upgrade.
- Fix overview widgets not loading (#707)
- Implement contracts for tax repositories
- Simple Commerce will now show a 'Customers' nav item if you're using the user customer driver. #702 #703
- When using the user customer driver in combination with database users, there was an issue where a 'super user' check would error out. #702 #703
- Removed usage of
parseLoop
method in Tags - it's not very performant and isn't really needed.
- Fixed an issue with the Money fieldtype when no value is set #459 #700
- The Money fieldtype no longer returns £0 when no value is set #699
Product
s are now hydrated with inherited data too (multi-site) #697 #698
- Fixed issues when users rename the 'Collections' nav item in the CP #692
- Fixed an issue caused when you rename sections in the CP Nav #691
- Fixed an issue in the upgrade script if you use users for your customers
- Added
{{ sc:cart:itemsTotalWithTax }}
tag to get 'items total + tax total' #687 #688
- Fixed
Undefined variable $site
error with email notifications (sometimes) #666 #683
- Updated default order blueprint for Eloquent database orders #678
- Fixed issue where after removing a line item, items array would end up with keys #676 #677
- Fixed an issue where a customer would see a 'checkout complete' message even if they cancelled checking out via Mollie. #674 #675
- Form Parameter Validation can now be disabled, if needed #670
- Adjusted copy of 'Price includes tax' toggle on tax rates
- Fixed issues where additional customer information would not be saved in some cases #658 #661
- Fixed an issue with off-site gateways, where you'd see an empty order after checking out #664 #671
- Added some code to ensure the tax rate on line items are saved as integers, rather than strings
- Fixed permission issues on Simple Commerce's CP Nav #657 #659
- Fixed rounding calculation issues when using coupons #651 #660
- Added support for underscore cart tag parameters #650
- Fixed some issues with coupon calculations when using float/decimal values #651 #655
- Database Orders: Fixed an issue where customers & coupon's weren't being saved on orders correctly #648
- Improved the layout of the default Orders blueprint
- Refactored the
{{ sc:customer:orders }}
tag to fix a couple of issues #645 #646 - Fixed an issue where Debugbar would create orders even if you don't need it to. #647
- Fixed an issue post-install when using a language other than English
- Fixed another cause of 'ghost orders'
- Actually add the upgrade script to the list of upgrade scripts..
- Actually add the upgrade script to the list of upgrade scripts..
Note: During the update process, the 'Value' field on your coupon blueprint will be renamed to coupon_value
.
- Added a
product
parameter to the{{ sc:cart:updateItem }}
and{{ sc:cart:removeItem }}
tags #644 - Added a
{{ sc:gateways:count }}
tag that returns a count of available gateways
- Renamed the 'Value' field on coupons to
coupon_value
(to avoid conflicts with Statamic) #642 - Squashed the bug that caused 'ghost orders' to be created 👻
- Fixed a bug with the
{{ sc:customer:orders }}
tag #641 - Fixed a bug where the data from the PayPal Gateway wasn't being saved properly #643
- Checking out via an off-site gateway will now redeem coupons & add the order to the customer's list of orders
- Support for custom database columns on Order/Customer tables #634 #637
- Fixed PSR-4 warnings #635 #636
- Removed gateway name from back-office order emails
- Fixed an issue where the order number would be regenerated after every save #632
- Fixed
sc:cart:cleanup
command when storing orders as entries #631
- Fixed a few issues when checking out with an existing customer #629 #630
- Database orders: Fixed an issue where you'd end up with multiple orders when creating a new one #627
- Session Cart Driver: If there's no current cart, create one.
- Fixed an issue where you could get a 'stale' version of the cart when using the
{{ sc:cart:addItem }}
tag with AJAX.
- Support for storing orders & customers in a database #599
- Brand new 'Overview' CP page for a top-level view of your store #620
- Brand new Gateway fieldtype #609
- Brand new Shipping Method fieldtype #611
- Statamic's new-ish 'title format' feature is now used to generate titles for order/customer entries #601
- You can now use Simple Commerce's cart tags on the Order Confirmation page #605
- Gateways may return their own validation messages #598
- Shipping Methods can now have their own config arrays #610
- Huge improvements to order emails #603
- Added some protection for 'hidden form parameters' #607
- You may now specify a 'whitelist' of additional fields you wish to provide when submitting front-end forms #608
- Order Numbers are stored in their own (hidden) field now #604
- Improved the handling of first/last name fields
- Line Items are no longer returned as arrays, they have their own DTO class now #612
- Updated
moneyphp/money
to v4.0
- £0 will be returned instead of
null
if Money value is empty
There's quite a lot of breaking changes between v2.4 and v3.0. It's highly recommended you read the upgrade guide before upgrading.
- Cleanup default config file
- Database Migrator now supports migrating from Users driver, not just from Customers collection
- Implemented 'Top Customers' overview query for Users customer driver
- Fixed an issue when augmenting a blueprint containing fieldset imports
- Fixed an issue saving coupons when using database orders
- Fixed incorrect imports for Runway fields in blueprint
- Make the Gateway fieldtype work with database orders
- Fixed an ordering issue for 'Recent Orders' query on overview, when using database orders
- When refunding an order via Stripe, get the Stripe Payment Intent ID from the right place..
- Brand new 'Overview' CP page for a top-level view of your store #620
- Removed Dashboard 'Sales Widget'
- Removed the title field from Order & Customer blueprints (title formats - no need for them)
- Gateway & Shipping Method fields are now marked as read-only when added via the upgrade script
- Fixed an issue where collections were never created when running
sc:install
command - Fixed an issue where the upgrade script would grab the blueprint for the wrong collection when filling customer field whitelist during upgrade
- Shipping Method fieldtype #611
- Eloquent Orders are marked as 'read-only' in the CP
- Line Items are no longer returned as arrays, they have their own DTO class now #612
- Gateway & Shipping Method fields are now automatically added to order blueprints during upgrade #613
- Title formats are now configured when installing Simple Commerce with
sc:install
command #614 - Customer data updated via the
{{ sc:customer:update }}
tag is now also whitelisted #615 - The Stripe webhook code now handles refunds (but technically we don't support webhooks yet 👀)
- Updated interfaces & facade hints #616
- Drop
addOrder
method fromCustomer
class #617 - And some small other tidy up bits...
- £0 will be returned instead of
null
if Money value is empty
- Brand new Gateway Fieldtype #609
- Shipping Methods can now have their own config arrays #610
- Improved the handling of first/last name fields
- Improved performance when generating order numbers (entry driver)
- Fixed an issue when using the
{{ total_including_tax }}
tag - Added a missing upgrade script to the list of upgrade scripts that should be run
- Fixed an issue where the Mollie webhook would fail if you're using the Eloquent driver
- Copied over the recent updates of the 'Order Status' filter in the CP
- Eloquent driver: Store customer name in the database
- Eloquent driver: Show list of customer's orders when viewing a customer in the CP
- Eloquent driver: Fixed an issue where
customer_id
would not be set - Eloquent driver: The cart cleanup command is now compatible with the Eloquent driver
The first of a few beta releases of Simple Commerce v3.0! There's quite a lot of breaking changes between v2.4 & v3.0, so I'd highly recommend you read the upgrade guide before upgrading.
PS: A proper list of what's new/improved is available in the draft v3.0 changelog.
- Stripe: Payment Intent ID is now saved properly (meaning refunds will now work) #624 #625 by @duncanmcclean
- Fixed an issue where checkout would fail OR a customer would get charged incorrectly when using a coupon with
maximum_uses
set #622
- Added a
{{ total_including_tax }}
tag to help you figure out the Line Item Total + Tax #602
- Made some performance improvements to the way order numbers are generated.
- Added
{{ sc:cart:free }}
tag to check if an order is free
- The Receipt PDF will contain the site name, rather than random admin information
- Back-office email has some bold text now
- Added 'Refunded' option to Order Status filter
- The 'Refund' action can now be used when overriding default
Order
class - Improved exception handling for refunds
- Fixed an issue around refunds not working as expected
- You can now filter by 'Shipped' orders via the Order Status filter in the CP #597 by @duncanmcclean
- Ability to customise the 'Payment Intent Data' sent to Stripe #592 by @duncanmcclean
- Added a 'Simple Commerce' tab to Laravel Debugbar #590 by @duncanmcclean
- You can now mark orders as 'Shipped' #588 by @steffenschmidt
- Removed an upgrade script which could potentially cause issues with sites with large amounts of orders.
- Actually support Laravel 9
After a long wait, Simple Commerce v2.4 is finally here!!
Please ensure you read the upgrade guide before upgrading. It notes how to update & any breaking changes you might want to know about.
- Brand new Tax Engine ✨ #438
- Regions - ties into tax, allowing you to specify an area of a country (eg. Scotland, UK)
- Ability to set a 'default shipping method' #555 #562
- Statamic 3.3 compatibility #580
- Gateway data has been combined, under a single key #498
- 'Temporary' gateway data will now be cleared after checking out
- Shipping Methods can now access the order when checking availability
- Multisites: each site will now have it's own cart (rather than sharing one between them) #519
- The
PreCheckout
andPostCheckout
events now includes the context of the request
- Tidied up the default Simple Commerce config
- All new sites will use the Cookie Cart driver 🍪
- An event will now be dispatched by gateways if a payment fails
- Implemented webhooks in the Stripe Gateway (you don't have to use them though - only when using Stripe Elements)
- Added proper validation rules to the Country & Region fieldtypes
- (v2.3) Fixed an issue when removing an item from a cart, where the items would end up with keys (which could break stuff) #585
- When viewing tax rates, it's now clearer which category that rate is assosiated with
- Country & regions are now alphabetically sorted when using their respective tags
- Updated built-in order blueprint (there were some duplicate fields in their before)
- The 'Line Items Tax' field is now properly hidden in the CP
- The default tax rate will be 0%, not
null
like before 🤦♂️ - If no tax zone is found to match the customer's address, it'll now (properly) fallback to the 'Everything' tax zone
- When editing a tax rate, the 'tax zone' dropdown will no longer autoselect the first in the list
- Fixed the 'included in price' config option not working on tax rates
- Reverted back to using the
default
error back, rather than our own. #582
- After creating a tax zone/tax rate/tax category, you'll now be redirected to the index page, not the edit page
- Fixed an issue when trying to save the 'Everywhere' tax zone
- Fixed an issue where it would assume the wrong ID for the default tax rate
- Simple Commerce errors now use their own error bag &
{{ sc:hasErrors }}
should ACTUALLY give you the expected answer now.
This is a re-tag of
v2.4.0-beta.4
which had some issues during the build pipeline. It was easier to simply issue a fresh build.
Everything from the latest in v2.3 and...
- Statamic 3.3 compatibility #580 by @duncanmcclean
- Added 'Line Items Tax' fieldtype to allow for augmentation of line item tax information #579 by @duncanmcclean
- Dropped support for Statamic 3.1
Everything from the latest in v2.3 and...
- Statamic 3.3 compatibility #580 by @duncanmcclean
- Added 'Line Items Tax' fieldtype to allow for augmentation of line item tax information #579 by @duncanmcclean
- Dropped support for Statamic 3.1
Everything from the latest in v2.3 and...
- Ability to set a 'default shipping method' #555 #562
Everything from the latest in v2.3 and...
- Ability to limit coupons to certain customers
- 'Temporary gateway data' will now be cleared from orders after checkout
Simple Commerce v2.4 is on it's way - this is the very first beta release! The plan is to have a few beta releases for folks to test, then I'll release during the New Year!
-
Set
minimum-stability
to"dev"
or"alpha"
-
Change
"doublethreedigital/simple-commerce"
to"2.4.*"
// composer.json
"minimum-stability": "alpha",
"require": {
"doublethreedigital/simple-commerce": "2.4.*",
// all the other stuff...
},
- Then run:
composer update doublethreedigital/simple-commerce --with-all-dependencies
After this, I'd recommend running through the upgrade guide which explains any changes you may need to make.
For more information on what's new/what's changed, review the CHANGELOG.md
.
- Fixed an issue when removing an item from a cart, where the items would end up with keys (which could break stuff) #585
- Validation errors use the
default
error bag, so SC shouldn't try and use its own when pulling out errors #581 #583 by @duncanmcclean
- Order Receipts are now attached to the back-office confirmation email #569 #577 by @duncanmcclean
- Fixed a compatibility issue with PHP 8.1 and the package we use for Currency formatting #575 #576 by @duncanmcclean
- Fixed 'Division by zero' issue when generating receipts #576 by @duncanmcclean
- Added validation to ensure email addresses with spaces don't work #564 #565 #567 by @duncanmcclean
- Squashed an error that would appear when a coupon was being augmented #558 #559
- Need an order's receipt URL in the front-end? Just grab for
{{ receipt_url }}
and be done with it! #550
- You may now configure if you'd like the metadata to be unique or not in line items #546
- Fixed an error when you have no 'option fields' configured on your Product Variants field #542
- Added a new
{{ sc:cart:alreadyExists }}
tag for checking if a product exists in the cart
- We're now telling Gateways which version of Simple Commerce is being used to send API requests
- Fixed compatibility issues with the 'Order Status' filter in the CP
- Fixed an issue with Off-site Gateways and the
PostCheckout
event #535 #536 - Added a check to fix an issue with Mollie Webhook, where if it fails, it fails continuously
- When setting up a multisite, developers will see a more helpful exception reminding them to add the site to their Simple Commerce config #524
- Currency formatting on the Sales Widget has been fixed for certain currencies #527 #529
- CP Listings will now show the right currency on Money fields (only an issue where there's multiple sites) #523 #526
- Country names are now translatable! #522
- Fixed issue when using
UserCustomer
and Eloquent users together
- Fixed issue where selected images would not be shown after save on Product Variants fieldtype #511
- The 'Stock' feature will now work when using an off-site gateway #506 #509
- Fixed issue with custom option fields not working before initial save #503 #510
- The
name
parameter will no longer be stripped when using form tags #505 - When updating line items, the quantity will always be saved as an integer, not a string.
- Removed
ray
call from Variants fieldtype which would cause errors #496 by @ryanmitchell
- Improved the display of the 'Product Variants' fieldtype #494
- Fixed an issue where the Assets & Toggle fieldtypes (and probably others) were not behaving properly #493
- Added a new
PreventCheckout
exception which will cancel a checkout attempt if thrown PreCheckout
&PostCheckout
events now both contain the Checkout request
- Fixed
{{ sc:errors }}
tag not returning what it should.
- The
make:gateway
command now allows you to choose between generating an on-site and an off-site gateway #490 - You can now register shipping methods on-demand (outwith the config file) with
SimpleCommerce::registerShippingMethod()
#489
- Made fixes for when using alongside the Eloquent driver #486
- Added
toPence
andtoDecimal
methods to theCurrency
facade
- Fixed issue with variant stock checks if you have 'dynamic variants' (eg. ones that don't actually exist on the product but are made up on the fly)
- Fixed an issue where shipping address would fail to exist if you were using
billing_address_line1
instead ofbilling_address
- Added Region fields to addresses #483
- Everything in the default Order blueprint is now read-only
- Product variant fieldtype now respects being
read_only
- Ability to dynamically change prices of products when they're added to the cart #479
- Fixed an issue when checking out a product with 1 item left in stock #477 #478
- Fixed an issue checking out with variants with stock
- Variants can now hold stock counts. Review docs #474
- Added
only
,exclude
andcommon
parameters to the{{ sc:countries }}
tag, see docs #473
- Fixed an issue where Simple Commerce tried to merge a collection and an array.
- Moved away from a deprecated Statamic Core method statamic/cms#4298
- An on-site mode for the PayPal gateway #472
- Fixed some PayPal webhook related bugs #471
- Money fieldtypes will no longer return £0 when augmented if no price is saved #459
- Improved docblocks for
Gateway
facade
- Fixed a dirty state issue with the Product variants fieldtype #461
- Only the Transaction ID is now stored as
paypal
data on the order entry
- Fixed a bug where
paypal
data wasn't being saved properly on the order entry (causing the callback to not work) #469
- Customer and address information will now be added to order when coming back from PayPal #469
- Fixed issue when you're being redirected back from an off-site gateway, where it would be unable to find the related order.
- Added
{{ sc:cart:quantityTotal }}
tag to get total quantity of all items in cart #468
- Customers are now marked as published by default, fixes #463
- Receipt data is now being augmented, meaning prices and product name's should display properly now #460
- The
prepare
method will no longer be called for off-site gateways when using the{{ sc:checkout }}
tag #462
- The Country fieldtype no longer gives array errors when
max_items
is set to1
- Fixed calculator so coupon total includes tax total #458
- When you clear the 'Money' fieldtype's value, we'll now save it as
null
, rather than 0 #459
- You can now pass in customer information when adding items to the cart
- You can now limit product purchases to only customers who have purchased a specific product #452
- Coupons total is now based on the line items total, not like grand total #453
- Fixed issue where field meta was not being passed into the 'Product Variants' fieldtype #454
- Support for Statamic 3.2
- Smarten'd up the
{{ sc:coupon }}
tag, so you can do things like{{ sc:coupon:minimum_cart_value }}
- If
maximum_uses
wasnull
on a coupon, you would be unable to redeem it gateway_config
went missing somewhere and it's documented, so we added it back
- Fixed an issue where notifications were not being sent properly #451
- Fixed an issue where if the order value was
0
theOrderPaid
event would not be dispatched (causing issues with notifications, etc)
- Fixed an issue where the
prepare
method on gateways would still be loaded even if the value of an order was0.00
- Fixed tax calculations when
price_includes_tax
isfalse
#449
- Added some better testing around the Stripe Gateway
- Added a new 'User Customer' driver so you can use your users as customers, not a seperate collection
- Added
environment
config for PayPal gateway (otherwise we'd always be in sandbox 🤦♂️) - Fixed issue where the Refund action would cause issues if the Order driver isn't the default
- Built-in PayPal Gateway (docs coming soon!)
I've been doing some 'dog-fooding' of Simple Commerce at work over the last couple of days and I've found quite a few bugs, so this release is a big pile of fixes.
- If a product is out of stock, we'll now give you a validation error and remove the item from the cart.
- Getting data from the cart tag, like so:
{{ sc:cart:something }}
will now go through augmentation - Stripe will now show API requests as coming from Simple Commerce (instead of directly through the Stripe SDK)
- Fixed coupon redeemed/maximum uses check
- The Coupon total will now calculate properly when using a non-entry driver
- Fixed
{{ sc:coupon:has }}
when using a non-entry driver - Tided up some code and added some null checks in places
- Fixed Stripe refunds not working properly
- Added a new
currency
modifier
- Receipts now work when using a custom order class #443
_request
will no longer be saved when checking out.
- When using a custom order class,
sc:cart:count
would not return the correct total. #442 - When using a custom order class, you wouldn't be able to add to the cart #441
- If you don't have notifications for a trigger, it won't error now
- Fixed small bug with notification improvements from the other day
- Updated the gateway stub so it's up-to-date
_request
will no longer be saved to the order entry when saving.
- New Country fieldtype
- When creating an entry, we'll now save any default fields from your blueprint. #433
- Both
StockRunningLow
andStockRunOut
events are now available triggers for notifications. #423
- When updating a line item, the metadata is no longer overwritten #431
- You can now use a custom request on the
{{ sc:cart:addItem }}
and{{ sc:cart:updateItem }}
tags #432
- You can now set line item metadata when adding a new line item.
- Fixed tax calculations if result is a rounded number, with no decimals #429
- 'United States' and 'Canada' aren't at the top of the countries list anymore
- Removed
sc:info
command - it's never been used
- You can now specify a Form Request on some form tags (for custom validation rules) #425
- Refactored usage of
findBySlug
, it's being deprecated soon and will likely be removed in Statamic 3.2 #424 - When using
Something::create
, you can now provideslug
orpublished
to manually set the slug/published status. - Checkout: Payment is now done at the very end of the checkout request, rather than just before the coupon. Orders will also be recalculated before payment in case of any last-minute changes.
- Checkout: You can now set the Customer's ID in the checkout request
- Checkout: You can now redeem coupons as part of the checkout request
- Checkout: Refactored some stuff around product stock
- Checkout: Added a job lot of automated tests to cover the checkout flow
- Fixed IDE completion on the
Coupon
facade (was suggesting Order methods, rather than Coupon methods) - Checkout: Free orders will now be marked as paid again after checkout
- Fixed issue where coupons limited to certain products could be valid/non-valid accidentally.
- You can now grab 'raw' data through the Cart Tag, rather than augmented data. (
{{ sc:cart:rawGrandTotal }}
)
While there's been quite a few breaking changes between v2.2 and v2.3, most of them have been addressed by Update Scripts, which will be run automatically when updating Simple Commerce.
Simple Commerce v2.3 requires your site to be running Statamic 3.1 and configured correctly for update scripts.
Please review the Upgrade Guide before updating.
- It's now easier to swap out the driver being used for products, orders, coupons or customers.
- You can now mark any unpaid orders as paid from inside the Control Panel.
- Events have been renamed and parameters have been switched about.
- Notifications have been refactored! (Again...)
- The
Address
DTO now contains some more helpful methods. - Product Variants now have their very own DTO
- You can now filter by Order Status in the CP
- Translations have been simplified. All translations live in the
messages.php
file. If you override the translations, please review. - Built-in gateways have been moved from
Gateways\GatewayName
toGateways\Builtin\GatewayName
- Gateway DTOs are now called
Response
,Purchase
andPrepare
(Gateway is no longer in the name) - Updates have been made to Data Contracts, please review if you are overriding any of them.
- If you're overriding any of the Data Classes, please register it inside the updated config file, rather than manually via the Service Container.
Cart
facade has been removed (it was deprecated in v2.2). Please replace with theOrder
facade.- Event parameters & event names have been changed. Please review if you are listening for any Simple Commerce events.
- Notifications have been refactored - they now use Laravel Notifications, rather than Mailables. If you were overriding the notifications previously, you will need to refactor into Notifications and update inside the Simple Commerce config.
- 500 error on Mollie Webhook with successful payment #422
Trailing data
error would sometimes appear when viewing paid orders in the CP
- Updated parameters of
CouponRedeemed
event. - Fixed issue where upgrade scripts would error if you're configuration is cached. #421
- The cart update request will respect any validation rules you have in your order blueprint #417
- Fixed an issue where update scripts wouldn't be run when upgrading to a beta release.
I've not got a solid date for v2.3 release yet but here's the first of a couple beta releases. Feel free to test it if you've got any spare time.
- Set
minimum-stability
to"dev"
or"alpha"
- Change
"doublethreedigital/simple-commerce"
to"2.3.*"
// composer.json
"minimum-stability": "alpha",
"require": {
"doublethreedigital/simple-commerce": "2.3.*",
// all the other stuff...
},
- Then run:
composer update doublethreedigital/simple-commerce --with-all-dependencies
FYI: You'll need to be running Statamic 3.1 to install the beta.
For more information on what's new and any breaking changes, review the CHANGELOG.md
.
- [fix] Don't fail if user's cart has been deleted. Create a new one instead. #416
- [fix] Fixed exception when running Refund action on Order entry.
- [fix] Tidied up the orders CP listing for new sites.
- [fix] Fix issues with coupon calculations #405
- [fix] Fixed issue where shipping & billing addresses would not be output on PDF Receipts #404
- [new] Statamic 3.1 support
- [new] Product Specific Coupons #390
- [new] Added docblocks to Facades #400
- [new] Added country validation when submitting addresses #398 #402
- [fix] Allow for calculator to be run with any
Order
class
- [fix] Fixed issue with
GatewayDoesNotExist
exception - [fix] Ensure we don't have two slashes in Gateway Webhook URL #387
- [fix] Order Confirmation emails will now be sent for off-site gateways #395
- [new] Ability to bind your own
Calculator
class - [fix] Fixed bug where
items_total
would be a string when using coupons. - Refactored the
Calculator
- [new] A new
ReceiveGatewayWebhook
event is dispatched when a gateway webhook is received. - [new] You can now specify a different redirect URL for errors. -
error_redirect
. - [fix] Improved handling of Mollie webhooks, we now detect if an order has been paid and redirect correctly. #384
- [fix] Fixed issue where cookie cart driver wasn't forgetting cart after checkout #383
- [fix] An exception will be thrown when a gateway errors, instead of a die dump.
- [fix] Fixed webhook and callback URLs sometimes not being formed correctly.
- [fix] Fixed an occasionaly exception with the Cookie Driver.
- Deprecated 'order item' methods, and replaced them with 'line item' methods.
- [new] Added Ignition Solutions to some exceptions to help with debugging.
- [fix] Fixed the ability to update an existing cart item with a negative quantity #375
- [fix] Fixed an incorrect method signature in the shipping method stub #380
- Tidied up the
README
(but it's not really code related)
- [new] Orders will now be added to Customer entries, so there's now a two-way relationship #369
- [new] You can also now use
{{ sc:customer:orders }}
with Orders on the Customer entries, using thefrom
parameter. - [fix] Fixed issue where email's would not be sent if email was set but no customer on order. #372
- [new] Added some helper methods to the
Address
object. - Added tests to the Order Calculator (not sure how we got this far without them)
- And some general cleanup 🧹
- [fix] Tax amounts should no longer be off. Was previously using the wrong formula.
- Cookie Driver is now the default for new installs.
- [fix] Fixed
Call to undefined method make()
when using cookie cart driver. #365
- [fix] Validate against the possibility of having negative line item quantities. #354
- [fix] Fixed bug with
{{ sc:cart:{key} }}
usage. - [fix] Fixed bug when Order calculator is called on paid order.
- [fix] Fixed issue when adding more than a single item to your cart #353
- [fix] When gateway's response isn't success, throw validation errors #352
- [new] Allow adding product to cart multiple times and up the quantity. #351
- [fix] Now throws
EntryNotFound
exception when no entry can be found, instead ofOrderNotFound
. #349
- [fix] Fixed accidental bug introduced with cart driver fix in v2.2.4.
- [fix] Don't throw an exception on
cart
endpoint if no cart exists - [fix] Don't attempt to augment variant fieldtype if value is
null
- [fix] When customer's active cart is deleted, a new one will be created, instead of throwing an exception. #348
- [new] Added a command to automatically remove old cart entries.
php please sc:cart-cleanup
- [fix] Coupon total should be calculated from items total, not the grand total.
- [fix] If grand total of cart is
0
, then don't do any gateway work - [fix] Strip out any decimals from product prices when added to cart
- [fix] On the variant fieldtype: if there is no value, display an error message instead of spinner.
- Fixed bug when removing an item from your cart #346
It didn't take me very long to find a bunch of bugs...
- Fixed exception within upgrade tool when
stillat/proteus
isn't installed - Upgrader will no longer continue if
stillat/proteus
isn't installed - Stripe Gateway should pull key & secret from gateway config, not hard coded
.env
values - When processing checkout, don't attempt to save data if we don't have any.
Before upgrading, please review the upgrade guide in case there's any changes you need to make.
- Cart Drivers
- Under the hood codebase improvements
- Various bugs
- [fix] Actually use the new format when adding items to the cart
- [fix] Fixed issue when clearing the cart
- [new] Updated the default order blueprint
- [new] Added a new 'Product Variant' fieldtype to select a single variant
- [fix] Fixed some naming inconsistencies with postal/zip codes #343
- [fix] Fix situations where the tax totals would be wrong with certain tax rates #340
- [fix]
Fix situations where the tax totals would be wrong with certain tax rates #340
- [new] Improved action responses (including propper support for AJAX usage)
- [fix] Fixed issue with customer entry being overwritten by new carts. #337
- [fix] Fixed situation where exception would be thrown if the 'Maximum Uses' field isn't set #338
- [new] Currency formatting now depends on current site locale, instead of always being
en_US
. - [fix] Fixed issue with tax calculations #331
- [fix] Fixed Mollie Gateway issues and off-site gateway issues #334
- [fix] Fixed
->get()
parameter issue when using Mollie webhook. #332
- [fix] Sometimes tags were being called twice. Now it should just be once!
- [fix] Fixed exception sometimes if attempting variant augmentation on a product with no variants.
- [fix] Fixed issue where Gateway Webhook URL's were returned as
null
.
- [fix] Fixed the way we handle fallback URLs for off-site gateways #329
- [fix] Fixed exception thrown by Off-site gateway callback. #327
- [fix] If a redirect is not provided for off-site gateway, user should be redirected to the homepage.
- [new] PHP 8 Support! #318
- [fix] Product entries with variants should not have a standard
price
field. - [fix] The
has
method on Repositories will now returnnull
, instead of throwing an exception about undefined indexes.
- [fix] Fix issues parsing
null
Money fields. Addresses issue from #323.
- [fix] Just get site with
Site::current()
inside Money Fieldtype, instead of getting the entries' locale.
- [fix] Fixed issue when passing
receipt_email
to Stripe
- [fix] Simplified the site detecting logic in the Money Fieldtype #319
- [fix] Fixed issue with locales in Money Fieldtype again.
- Re-tag of v2.1.16 (the release workflow broke)
- [fix] Fix issue where
locale()
is called on undefined, in Money Fieldtype.
- Remove Woodland
- [new] You can now enable automatic receipt emails from Stripe.
- [new] You can now use a single address for an order, instead of different shipping and billing ones.
- [new] You can now set display names for gateways. Useful for when you give the customer an option between them.
- [fix] Fixed a bug causing type exceptions.
- [fix] Ensure customer can't add more of a product than you actually have in stock.
- [new] Added some better error handling for form tags.
- [fix] Issue where it couldn't find an 'index' gateway using the
{{ sc:gateways }}
tag? Now sorted!
A whole lot of API related changes this release...
- [new] It's now easier to get fields from your cart. How's
{{ sc:cart:delivery_note }}
? - [new] The Order Calculator has been moved out of the
CartRepository
and into it's own class. However, therecalculateTotals
method on theCartRepository
will continue to work for the time being. - [new] Introduced a new
OrderRepository
which will eventually replace theCartRepository
(it's a breaking change so it won't happen until at least v2.2) - [new] Added
customer
method toCartRepository
- [fix] Default order blueprint no longer has a SKU field on it.
- [fix]
php please sc:install
command will now only publish blueprints and configuration file.
- [new] Add an
exempt_from_tax
field to products that you want to be exempt from tax. - [fix] Carts & Customers will be created in the correct site.
- [fix] When created, customers will now be published instead of a draft.
- [fix] Money Fieldtype will respect the site of the entry and display the correct currency.
- [fix] Fixed issue where you could add the same product/variant to the cart twice.
- [fix] Fixed bug with blueprint field checking
- [new] Ensure fields are included in product & order blueprints.
- [fix] Fix
vendor:publish
bug when runningphp please sc:install
(I should really double check this stuff before I release it)
- Re-tag of v2.1.6
- [update] Improved the install process - combine
vendor:publish
step andsetup-content
.
- [fix] A more descriptive message will now be shown if currency formatting fails due to the
php-intl
extension not being installed or enabled.' - [fix] Fixed issue where gateways weren't being booted at all...
- [fix] Fixed issue with Woodland when installing Simple Commerce for the first time. #313
- [fix] Fixed issue with product variants fieldtype on new product entries. #314
- [fix] Fixed issue when adding a new variation in product variants fieldtype
- [fix] Localize and use plural/signular stuff with index text for product variants fields.
- [fix] Fix issues with installing via Composer, from last release. Whoops.
- [new] Licensing statistics - so we can check how many sites are using Simple Commerce, what versions are in use and if they have valid licenses.
- [new] Simple Commerce fieldtypes will now display nicely in entry listings
- [fix] Fixed issue when using an off-site gateway without specifing a
redirect
- Added a bunch of tests behind the scenes
v2.1 contains various breaking changes, we recommend reviewing the update guide to ensure your site will work with the update.
- [new]product variants
- [new]built-in mollie gateway
- [new] Product Stock
- [new] Sales Widget - dashboard widget for reviewing sales over a week, 14 days and a month.
- [new] Support for Off-site gateways and a bunch of changes to the way gateways work overall.
- [new] Minimum Order Numbers
- [fix] Various bug fixes.
- [new] Licensing statistics - so we can check how many sites are using Simple Commerce, what versions are in use and if they have valid licenses. (also introduced in v2.1.2)
- [new] You can now update the format of the customer titles.
- [fix] When updating a customer, sometimes the title would be removed... #311
- [fix] If updating a customer's name using
{{ sc:cart:update }}
tag, it wouldn't work because of some copy and pasting - And added a bunch of customer related tests...
- [fix] Fixed a bug that would happen if you try and get a customer that doesn't have a title or slug set.
- [fix] Fixed issue where SC would presume a customer entry had a name on it, but if it didn't then stuff would break.
- [fix] Fixed issue with customer data when being passed into Stripe Gateway, from #307
- [fix] Fixed issues when creating/updating customers via the
{{ sc:cart:update }}
tag. #307
- [fix] Fixed issue with decimals causing incorrect totals, when using coupons on an order #304
- [new] Payment Method's are now saved for later, with Stripe Gateway #306
- [fix] The money fieldtype will now default to 0 when nothing is entered instead of throwing an exception.
- [fix] Fixed issue where you couldn't remove the last item from the cart
- [new] You can now register gateways on-demand with
SimpleCommerce::registerGateway(PayPalGateway::class, [])
- [fix] Fixed issue where deleting a single cart item would clear the cart instead (again) #293
- [fix] Fixed issue when trying to submit checkout form without any customer information.
- [fix] Fixes issue when adding to the cart when you've already deleted items from the cart. #293
- [fix] Generate a title and slug for customer if they don't already have one - fixes a type error #296
- [fix] Fixed issue when the
CheckoutController
tries to call thePreCheckout
event on case sensitive systems. #294
- [new] Brought back Order Statuses, you may want to run
php please simple-commerce:setup-command
to create the relevant taxonomies and terms. - [new] You can now send customer metadata when using
{{ sc:cart:update }}
and{{ sc:checkout }}
tags. #289 - [new] You can now toggle if Simple Commerce sends an
Order Confirmation
email to your customers after checkout. It's enabled by default. #288 - [new] Customer & Order information is now passed to Stripe when preparing payment intent #292
- [new] Brand new
php please simple-commerce:setup-command
command for setting up collections & taxonomies when installing Simple Commerce - [fix] Fixed issue where adding items to cart would overwrite what is already there. #290
- [fix] Fixed issue with ProductRepository not being bound properly because of a spelling mistake 🤦♂️ #287
- [new] You can now specify the version of the Stripe API you want to use.
- [fix] Fixed issue caused when using a gateway that doesn't return anything from the prepare method.
- [fix] Fixed
checkAvailability
failing for shipping methods - [fix] Fixed issue with completing cart without a customer being attached to the order.
- Changed version constraint of
statamic/cms
due to v3 release
- [fix] Simple Commerce releases should now include built assets.
- [fix] Issue when entering value inside Money fieldtype without separator and it converts it to cents/penies
- [fix] Percentage coupons #281
- [fix] Simple Commerce tags were broken after beta 44
- [fix] Config, blueprint etc should no longer be overwritten on composer update
- Simple Commerce only supports PHP 7.4
- [new] Refunds - somehow managed to ship without refunds but they're here now!
- [new] The output from prepare methods in gateways is now saved in the order so it can be used again in the gateway
- [break] Really small breaking change, inside the
{{ sc:gateways }}
loop, change{{ config:* }}
to{{ gateway-config:* }}
to grab gateway configuration values. - [fix] Fixed initial state for the money fieldtype, should no longer show .
- [fix] Exceptions should now be thrown for when gateways don't exist or none is required at checkout
- [fix]
_redirect
should no longer be passed into cart when updating cart - [fix] Fixed issue with coupon validation, where an error was being thrown as we were validation the wrong thing 🤦♂️ #276
- [fix] Blueprints being re-published after every Simple Commerce update
- [fix] Simple Commerce no longer relies on calebporzio/sushi for Currency and Country models
- [fix] Incorrect typehint causing issues when getting cart items *[fix] Typos
- [new] Introduced a
Product
facade, repository and related things... - [fix] Fixed bug where you'd run into an error if you visit the cart/checkout when you have no cart in the session. Fixes #275
- [break] The
$request
variable is now passed in as a second parameter of thepurchase
method to a gateway.
- [new] Introduced two new commands:
make:gateway
andmake:shipping-method
- [fix] Use FormRequests for validating action endpoints
- [fix] Officially only supports PHP 7.4
- [break] Removed
/shipping-options
endpoints. - [break] Removed need for SKUs, you can have them if you want them but they won't be saved in orders anymore.
- [new] Added
PreCheckout
andPostCheckout
events, triggered by the Checkout controller.
- Simple Commerce v2.0 has launched!