Avalara integration for django-oscar
This package provides integration between Avalara and Oscar. Avalara is a service that provides accurate sales tax calculations in the US.
Useful documentation:
Status:
Installation
Install from PyPI:
$ pip install django-oscar-avalara
or Github:
$ pip install git+https://github.com/tangentlabs/django-oscar-avalara.git
then add 'avalara' to INSTALLED_APPS.
Specify the following settings:
AVALARA_ACCOUNT_NUMBER
AVALARA_LICENSE_KEY
AVALARA_COMPANY_CODE
You should have been provided with these details when you signed up with Avalara.
When not in production, set AVALARA_TEST_MODE = True to make requests to the Avalara development server.
This package uses a named logger 'avalara' so it is normally useful to define handlers to this logger.
Usage
To integrate Avalara into checkout, you need to override two methods from the checkout view class PaymentDetailsView.
First override build_submission to apply taxes to the basket and shipping method:
from oscar.apps.checkout import views
from django.contrib import messages
from django.template import loader
import avalara
class PaymentDetailsView(views.PaymentDetailsView):
...
def build_submission(self, **kwargs):
submission = super(PaymentDetailsView, self).build_submission(**kwargs)
# Fetch and apply taxes to submission dict
try:
avalara.apply_taxes_to_submission(submission)
except avalara.InvalidAddress, e:
msg = loader.render_to_string(
'avalara/messages/invalid_address.html',
{'error': e.message})
messages.error(self.request, msg, extra_tags="safe noicon")
return submission
Here we are passing the submission dict to apply_taxes_to_submission which will look up the appropriate taxes and apply them in place to the basket and shipping method instances.
We also watch out for InvalidAddress exceptions which will be raised if Avalara is unable to find a tax jurisdiction for the passed shipping address.
Finally, override handle_successful_order to submit the placed order to Avalara:
from oscar.apps.checkout import views
from django.contrib import messages
from django.template import loader
import avalara
class PaymentDetailsView(views.PaymentDetailsView):
...
def handle_successful_order(self, order):
response = super(PaymentDetailsView, self).handle_successful_order(
order)
# Submit tax information to Avalara
try:
avalara.submit(order)
except Exception:
# Tax can be re-submitted later so we swallow all possible
# exceptions and log them.
logger.error("Unable to submit tax information for order %s",
order.number, exc_info=True)
return response
Here we pass the order instance to submit which will submit the tax information to Avalara for reporting. We also catch and log any exception as we don’t want order placement to show an error screen. If there is a problem talking to Avalara, we can manually resubmit the order later on.
Contributing
Clone the repo, create a virtualenv and run:
make install
to install all dependencies. Run the tests with:
./runtests.py
There is a sandbox site that you can browse and use to test the Avalara integration. Create it using:
make sandbox
and browse it after:
cd sandbox ./manage.py runserver
Note that you will need to have test credentials for Avalara in a private integration.py module.
Changelog
0.2.1
Fix a few issues with submitting orders.
0.2
Support Oscar 1.0 and solve a cache key issue.
0.1.1
Patch release to limit support to django-oscar>=0.6,<1.0.
0.1
Initial version - supports django-oscar>=0.6.
Metadata
Release files for django-oscar-avalara 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| django-oscar-avalara-0.2.1.tar.gz | 8.5 kB | Without provenance | Details for django-oscar-avalara-0.2.1.tar.gz |
Release files / django-oscar-avalara-0.2.1.tar.gz
| Download URL | django-oscar-avalara-0.2.1.tar.gz |
|---|---|
| Size | 8.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
10d71081ce4c8ca4697a1eac6059f95747c8ae1da24db724ffa29f4e99f10a85
|
|
BLAKE2b-256 checksum How to use checksums |
92b545b3b7bd363e8d5b8df958a340d4f2c7c6df123804bc7bef409957bc4d6e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for django-oscar-avalara 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.