为Django Oscar评估集成
django-oscar-avalara的Python项目详细描述
这个包提供了Avalara和Oscar之间的集成。阿瓦拉是 在美国提供准确的增值税计算的服务。
有用的文档:
状态:
安装
从pypi安装:
$ pip install django-oscar-avalara
或github:
$ pip install git+https://github.com/tangentlabs/django-oscar-avalara.git
然后将'avalara'添加到INSTALLED_APPS。
指定以下设置:
- AVALARA_ACCOUNT_NUMBER
- AVALARA_LICENSE_KEY
- AVALARA_COMPANY_CODE
当你和阿瓦拉签约时,你应该得到这些细节。
不在生产环境中时,设置AVALARA_TEST_MODE = True以发出请求 到Avalara开发服务器。
此包使用命名记录器'avalara',因此通常用于 为此记录器定义处理程序。
用法
要将avalara集成到签出中,需要重写 签出视图类PaymentDetailsView。
首先覆盖build_submission以对购物篮和配送征税 方法:
fromoscar.apps.checkoutimportviewsfromdjango.contribimportmessagesfromdjango.templateimportloaderimportavalaraclassPaymentDetailsView(views.PaymentDetailsView):...defbuild_submission(self,**kwargs):submission=super(PaymentDetailsView,self).build_submission(**kwargs)# Fetch and apply taxes to submission dicttry:avalara.apply_taxes_to_submission(submission)exceptavalara.InvalidAddress,e:msg=loader.render_to_string('avalara/messages/invalid_address.html',{'error':e.message})messages.error(self.request,msg,extra_tags="safe noicon")returnsubmission
在这里,我们将提交dict传递给apply_taxes_to_submission 会查到适当的税收,并将其应用到篮子和 传送方法实例。
我们还注意InvalidAddress异常,如果 Avalara找不到传递的送货地址的税务管辖区。
最后,重写handle_successful_order以将下订单提交给 阿瓦拉拉:
fromoscar.apps.checkoutimportviewsfromdjango.contribimportmessagesfromdjango.templateimportloaderimportavalaraclassPaymentDetailsView(views.PaymentDetailsView):...defhandle_successful_order(self,order):response=super(PaymentDetailsView,self).handle_successful_order(order)# Submit tax information to Avalaratry:avalara.submit(order)exceptException:# 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)returnresponse
在这里,我们将order实例传递给submit,后者将提交税 向Avalara报告的信息。我们还捕获并记录任何异常 我们不希望订单放置显示错误屏幕。如果有问题 与Avalara交谈后,我们可以手动重新提交订单。
贡献
克隆repo,创建一个virtualenv并运行:
make install
安装所有依赖项。使用以下命令运行测试:
./runtests.py
有一个沙盒站点,您可以浏览并使用它来测试avalara 整合。使用:
make sandbox
并在以下时间后浏览:
cd sandbox ./manage.py runserver
请注意,您需要在一个私有的 integration.py模块。
更改日志
0.2.1
解决一些提交订单的问题。
0.2
支持oscar 1.0并解决缓存密钥问题。
0.1.1
补丁版本将支持限制为django-oscar>=0.6,<1.0。
0.1
初始版本-支持django-oscar>=0.6。