All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Nothing yet.
- #190 Add transaction sync batch show page
- #188 Show transaction sync batches in user interface
- #185 Backfill transactions in batches
- #139 Refund and create a new order transaction when an order is recalculated
- #175 Add request logging to TaxJar API requests
- #138 Add admin UI for configuring reporting
- #158 Update sandbox bin stub for
solidus@3
- #88 Fire
shipment_shipped
event when any shipment on an order ships. - #81 Add install generator
- #98 Add generator for TaxJar transaction IDs
- #103 Add
reporting_enabled
configuration option - #97 Add public API method to request the latest transaction associated with a solidus order.
- #100 Add public API method to post a taxjar refund transaction for a solidus order.
- #102 Add description to transaction line item params
- #108 Add new model associated with a
Spree::Order
to represent taxjar order creation transactions - #114 Add new model associated with a
SuperGood::SolidusTaxjar::OrderTransaction
to represent taxjar refund creation transactions - #116 Update the
OrderTransaction
model to record the transaction date. - #109 Save
OrderTransaction
after API call to TaxJar - #111 Create a new taxjar transaction when a shipment is shipped.
- #141 Handle unimplemented reporting features
- #129 Report transaction asynchronously when a shipment is shipped.
- #127 Add acceptance test for calculating taxes with the extension.
- #160 Add tax categories API endpoint wrapper
- #171 Display existing Nexus regions
- #170 Hide all reporting features behind API key
- #174 Provide a link to Taxjar state settings
- #177 Make nexus caching configurable
- #169 Add basic backfill transaction functionality
- #176 Create refund transaction database models when reporting refunds.
- #192 Handle failures that occur in the middle of refunding a transaction.
- #194 Move the transaction backfill button to it's own unique page
- #198 Don't create zero dollar transactions when an order is fully refunded.
- #195 Run transaction backfills asynchronously
- #200 Expand
solidus
gem into dependencies to support Solidus 3.2+ - #183 Add ability to fetch tax codes from TaxJar and assign to tax categories in admin
- #200 Render error message when backfilling transactions fails
- #203 Remove outdated backfill button
- #202 Add TaxJar transaction sync status to order show page
- #204 Add page to render an orders TaxJar transactions
- #201 Allow transaction backfills to be filtered by date range
- #244 Let admins manually retry syncing failed TaxJar transactions
- #255 Add a delay before reporting transactions
- #253 Fix various bugs with reporting refund transactions
- #95 Only require "state" for Canadian and US addresses
- #181 Take all non-tax adjustment types into account when calculating a line item's discount
- #182 Automatically create default Tax Rate
- #205 Use nexus regions for taxable address checks
- #218 Removed
order_recalculated
event backport - #216 Add
deface
as a dependency. - #217 Handle updates to orders that have not been reported
- #227 Fix reporting for orders with refunds
- #226 Refactor reporting subscriber logic
- #238 Drop support for loading of reporting subscriber for Solidus < 2.11
- #237 Sort order transactions by
created_at
- #236 Don't send cancelled or returned line items
- #225 Create sync logs for replace transaction jobs
- #231 Load Solidus factories using new conventions
- #246 Fix bugs with sync retries when reporting or replacing a transaction fails
- #137 Only run tests against Solidus 2.11. This also represents the drop of official support for Solidus 2.9 and 2.10.
- #193 Bump version requirement for
solidus_support
to ">= 0.9.0", and as a result drop support for Rails 5.2.
- #107 Fix rails-engine binstub to point to correct engine entry point
- #117 Fix migration install
- #119 Move the install generator into the correct path so that it will be installed in the dummy app.
- #250 Improve error handling for
ReportTransactionJob
- #254 Get tests and binstubs working against Solidus
main
These changes only affect the development of this extension.
- #120 Change default
SOLIDUS_BRANCH
andRAILS_VERSION
- #137 Run tests against the most up to date versions of Solidus
- #249 Don't depend on
webdrivers
gem
If you had previously configured a Spree::TaxRate
with the name "Sales Tax",
it can be deleted after upgrading, as a new Spree::TaxRate
with the name
"Solidus TaxJar Rate" will automatically be created. Alternatively, you can
rename your existing Spree::TaxRate
from "Sales Tax" to "Solidus TaxJar
Rate". #182
- #71 Unlock ExecJS version. This reverts the temporary fix introduced in #69
- #79 Relax Ruby required version to support Ruby 3.0+
- #51 Add nexus regions method to API
- #58 Take shipping promotions into account in default calculator
- #59 Add pry debugging tools
- #69 Lock ExecJS version
- #37 Added a basic Taxjar settings admin interface which displays placeholder text.
- #64 Provide Spree::Address.address2 to TaxJar address validation if it is present.
- #80 Support order_recalculated event in < 2.11
#52 fixes a critical bug in the API class that was released in v0.18.0
. Please upgrade.
- #47 Fixed bug in
validate_address_params
for addresses without a state - #52 Fixed critical bug in API class
v0.18.0
was removed due to a regression in the API class that was fixed in #52 and v0.18.1
- #21 Migrated project to
solidus_dev_support
- #22 Added support for TaxJar address validation API through
SuperGood::SolidusTaxJar::Addresses
class - #34 Include API version in request headers
- #38 Added a rails engine to support future solidus backend UI
- #43 Support zeitwerk loading
Breaking Changes:
- Module name
SolidusTaxJar
renamed toSolidusTaxjar
- Class name
API
renamed toApi
- Class name
APIParams
renamed toApiParams
If you're currently using version 0.17.X and want to upgrade to 0.18.X, follow these steps:
- Rename any instances of the module
SolidusTaxJar
toSolidusTaxjar
- Rename any instances of the class
API
toApi
- Rename any instances of the class
APIParams
toApiParams
- Fixed bug where shipping calculator was not used for order shipping param. (Thanks @spaghetticode!)
- Added
SuperGood::SolidusTaxJar.custom_order_params
to allow for custom overrides to the parameters sent to TaxJar when calculating order taxes. For example, if you needed to send a custom nexus address you could do:The callback receives theSuperGood::SolidusTaxJar.custom_order_params = ->(order) { { nexus_addresses: [ { id: 'Main Location', country: 'AU', zip: 'NSW 2000', city: 'Sydney', street: '483 George St', } ] } }
Spree::Order
that the params are for and the return value can override existing values like the order's ID.
-
Fix
#incomplete_address?
method to be friendly also to completely blank addresses. -
Added
SuperGood::SolidusTaxJar::TaxRateCalculator
for retrieving the tax rate for a givenSpree::Address
. The calculator followsTaxCalculator
conventions by relying on address validators and custom exception handling.
- Add order number to param logging.
- Add support for request/response logging.
- Made sure cache key is a string, instead of a giant nested hash/array structure that probably won't get interpreted by Rails well. Still not happy with the caching behaviour, but it's configurable.
- Added
SuperGood::SolidusTaxJar.taxable_order_check
option which can be set to a proc that receives the order and will prevent actual tax calculation from occurring if it returns false. If your app has introduced a method likeSpree::Order#complimentary?
, you could avoid trying to compute taxes on complimentary orders by doing the following in an initializer:SuperGood::SolidusTaxJar.taxable_order_check = ->(order) { order.complimentary? }
- Report order.user_id as customer_id when calculating taxes and creating transactions. This enables the use of per customer exemptions.
- Report no tax collected on order and line items when order total zeroed out.
- Avoid sending negative amounts for order totals.
- Avoid sending 0 quantity line items. TaxJar doesn't like them.
- Make shipping amounts configurable to make it easier to support order-level adjustments.
- Fixed unreliable default cache key implementation.
- Made response cache key and cache duration configurable.
- Increased response caching time to 3 hours.
- Switched to sending the full list of line items when creating/updating transactions in TaxJar.
-
Fixed issued where orders without tax address would cause errors because
Spree::Order#tax_address
will return aSpree::Tax::TaxLocation
when called on an order without a tax address.Spree::Tax::TaxLocation
isn't enough like a real address and this was causing exceptions.To fix this
SuperGood::SolidusTaxJar#incomplete_address?
was updated to treatSpree::Tax::TaxLocation
s as "incomplete". (Thanks to @JuanCrg90!)
Warning: v0.6.1 has a critical bug and should not be used.
- Stopped using the deprecated method
Spree::Address#empty?
in favour of simply checking that we have all of the fields on the address required for doing a TaxJar lookup.
- Added
SuperGood::SolidusTaxJar.shipping_tax_label_maker
for customizing the labels on the tax adjustments on shipments. - Added
SuperGood::SolidusTaxJar.line_item_tax_label_maker
for customizing the labels on the line iteme tax adjustments.
- Moved exception handler configuration to
SuperGood::SolidusTaxJar.exception_handler
fromSuperGood::SolidusTaxJar::TaxCalculator.exception_handler
. Now all the configuration options are in the same place. - Added
SuperGood::SolidusTaxJar.taxable_address_check
option which can be set to a block that receives the address and will prevent actual tax calculator from occurring if it returns false. If your app has introduced a method likeSpree::Address#us?
, you could avoid trying to compute taxes on non-US orders by doing the following in an initializer:SuperGood::SolidusTaxJar.taxable_address_check = ->(address) { address.us? }