The Ubercart Connector for AvaTax Calc™ is a Drupal module that seamlessly links Ubercart with AvaTax Calc™ to calculate the correct sales tax amount, eliminate the headache of sales tax compliance and reduce the risk of business audits.
http://drupal.org/sandbox/adTumbler/1772752
http://drupalcode.org/sandbox/adTumbler/1772752.git
For most smaller e-Commerce sites, with a limited product catalog and Nexus in only one state - the core sales tax modules of Ubercart and Drupal Commerce - extended with rules - are able to apply correct sales tax rates to the checkout process.
For states like California and New York, where sales tax rates are based on delivery addresses, the product being supplied, and three levels of taxation (state, county and district) although it is technically possible to use rules to compute the amount of sales tax - sales tax compliance, reporting requirements and audit for the accounting department make AvaTax (the market leader in cloud sales tax services) an appealing commercial solution. It is usually the VP of finance who specifies the use of AvaTax for a larger organization. Often to be compatible with the use of AvaTax for their existing ERP system from vendors like SAP, Netsuite etc.
The module requires a commercial account with AvaTax - and installation of a proprietary PHP SOAP library from Avalara. This is supplied and licensed for use with their service. The library ensures backwards compatibility with their cloud service, and a secure connection for the sales tax transaction. Note: the information being sent over the Internet includes the customers address and products being purchased.
http://drupalsalestax.com/ubercart_sales_tax_module
Link to the demonstration site showing California sales tax calculations.
I have not uploaded the version of the module for Drupal 7.x - Ubercart 3.x - or Drupal 7.x - Drupal Commerce 1.x - Both of these modules follow the same design, implement the same features, adapted for the e-Commerce platforms as appropriate.
We delayed completing the initial CVS application made in 2011 while we worked with Avalara, Inc. on the availability of their library and providing development accounts on their cloud service.
There are plus 30 customers of the AvaTax service, demonstration links, and a support forum hosted at - http://drupalsalestax.com
| Comment | File | Size | Author |
|---|---|---|---|
| #11 | uc_tax_avatax-fix_test_fails-1683092-11.patch | 2.54 KB | greg boggs |
Comments
Comment #1
eleonelGit repository please
Comment #2
adTumbler commentedSorry - this is the correct url
http://git.drupal.org/sandbox/adTumbler/1772752.git
Comment #3
adTumbler commentedAlternative offer to Code review bonus
Thanks to others I have been able to produce a solid module, and I hope one that is compliant with Drupal's standards. But my accounting skills are significantly superior to my engineering skills. Particularly in US sales tax legislation, sales tax compliance and making sure a financial department is equipped for a sales tax audit.
Once code goes beyond my limited in depth knowledge - data in an order object - and passing it to the AvaTax library - where their cloud service does all the heavy lifting - I have limited value to offer.
I would like to offer my business functional and writing skills to the Drupal Commerce and Ubercart e-Commerce communities. Both platforms have solid technology through the core sales tax modules - but they need additional capabilities , particularly when external services are used for getting sales tax rates, or to meet larger corporations sales tax compliance & legislation needs.
Drupal Commerce.
===========
The core sales tax module assumes that all line items of an order will be taxed at the same rate. A sales tax type is associated with a sales tax rate - if the rules for applying the tax type are met in the checkout process - the rate associated with the type (taken from the linked sales tax rate, or from hook_commerce_tax_rate_info) is:
a) applied to all product line items in the order
b) NOT applied to a shipping line item, or a coupon line item
This is acceptable for most small business sites - with Nexus in one State and a limited product catalog.
This does not meet the requirements of sites like - http://www.homeright.com/ - who have Nexus in many states, and supply products that carry different sales tax rates. There are use cases where a user wants to buy products that are subject to tax, and others that are not subject to tax (multiple line items) - all in a single order - where the shipping line item be subject to yet another rate of tax.
States use sales tax (sales tax holidays) to stimulate their local economies - http://www.blueline.com/ - recently went live - This site has Nexus in many states - and will depend on Avalara to implement the rules to not charge tax, on selected products, in selected States - when the 'back to school sales tax exemptions' are offered in these states.
It would be wrong to impose the sales tax complexity of these larger US companies on smaller e-Commerce sites - but it is equally wrong for the architecture of the core sales tax module to limit the legislated requirements for sales tax collection.
Sales Tax is a core module - I believe it would be architecturally incorrect to encourage any parallel development effort to overcome the challenges of corporate US sales tax compliance needs.
I believe the sales tax module needs to adopt the approach being taken by the shipping and coupon module - creating a framework, with different plug ins to meet the different levels of complexity. I offer to contribute the needs of the 30 customers who have selected AvaTax (NY clothing companies, CA digital goods companies, etc) - to include their advanced requirements to the next round of functional discussion.
Thoughts on plug ins:
a) A core plug in that works like the current tax types and tax rates - supporting rules for delivery conditions.
b) A plug in allowing the sales tax to be externally determined - and passed back to the order as it's own line item - similar to the way flat rate coupon works - what Ubercart currently supports through its sales tax module.
c) A general plug in for fetching an external rate - like hook_commerce_tax_rate_info - which would allow the WA sales tax module, and use of other State - XML or REST rate services be configured.
This could be adapted for the many external rate services emerging - Zip2Tax - DOTS FastTax - TaxCloud etc etc.
d) Advanced plug ins to support rate integration with a shipping line item, coupon line items, and any custom developed line item.
This page has a good list/directory of the commercial sales tax services I believe need to be supported:
http://open4tax.com/directory-of-sales-tax-software
I hope hope this comment is helpful
Alexander Bischoff
Comment #4
rtdean93 commentedWe have been using AvaTax this entire year and the module works flawlessly and enhances Commerce immediately. This module should be approved for these three reasons...
1) This adds important functionality to Drupal Commerce / UberCart. My client needed to calculate taxes for various jurisdictions. They have Nexus in 5 states. Instead of creating rules for each of the states - the AvaTax connector allows every line item to be passed to the tax service to calculate every required tax: State, Local, and District taxes. And the AvaTax service handles tax reporting. Any company / site needing to properly handle getting up-to-date tax rates will benefit from knowing Drupal Commerce has this functionality.
2) The developer is committed to an excellent module and is responsive to the needs/feedback of module users. Whenever I have a question, Alex responds immediately and is patient answering my questions. He has explored numerous use-cases in regards to taxes and his module and related service provide a valuable subject matter expert to the Drupal community.
3) The module works out-of-the-box and has a very simple install. We we up and running in less than two hours. The module works. A working version of the module is at www.blueline.com.
This module will benefit users of Drupal Commerce and Ubercart and it should be approved as a contributed module.
Respectfully,
Bobby Dean
GlobeRunnerSEO.com
Comment #5
tr commentedYour repository is structured wrong. For example, uc_tax_avatax.module is located at 6.x-2.x/uc_tax_avatax.module - the 6.x-2.x directory shouldn't be there, all the uc_tax_avatax files should be in the top-level directory. And why is the branch 6.x-2.x instead of 6.x-1.x? This is the first version of the module, correct? You also have a bunch of nbproject folders from netbeans in there - they should be removed.
An automated code review of your project shows a lot of errors that should be addressed: http://ventral.org/pareview/httpgitdrupalorgsandboxadtumbler1678576-6x-2x
I've send e-mail asking for a development account so I can test the functioning of the module, which I'll do after the above problems are corrected.
Comment #5.0
tr commentedIncluded a link to git repository
Comment #5.1
adTumbler commentedCreate new sandbox for project to get rid of errors
Comment #6
adTumbler commentedI created a new sandbox and new repository to get the repository build correct - no longer using netbeans to push to git.
Deleted Master as instructed - Branch 6.x-2.x is correct - will be confusing to existing customers to revert to version 1.x - after releasing version 2.x this year.
http://drupal.org/sandbox/adTumbler/1772752
http://git.drupal.org/sandbox/adTumbler/1772752.git
Have corrected all errors in the review - except for the two stated below which are specific to AvaTax
http://ventral.org/pareview/httpgitdrupalorgsandboxadtumbler1772752git
1) The function naming errors showing are related to the file ava_tax.php which is required by the AvaTax library.
2) The missing files are the AvaTax classes provided in the library
Look forward to scheduling the short training of the AvaTax Calc cloud service - sending you their PHP library, a dev account, and having you test the module
Comment #7
adTumbler commentedSee comment # 6 - work requested completed
Comment #8
gboggs commentedWe also use this fantastic module for an enterprise E-commerce site. Getting a project for this module is extremely important to us.
Comment #8.0
gboggs commenteddelete old sandbox - create new sandbox
Comment #9
ron williams commentedI have deployed Avalara for Drupal Commerce clients as well and it works great for states with complex sales tax calculations. Let's get this an official project page.
Comment #10
tr commentedThe issues I mentioned in #5 have been addressed. But there are still some minor coding standards issues, see http://ventral.org/pareview/httpgitdrupalorgsandboxadtumbler1772752. You may safely ignore the warnings about uc_tax_avatax.info, because those are side-effects of downloading the proprietary API separately.
Unfortunately, I will not be able to spend the time necessary to complete the "mandatory training" required for anyone who wants to try out the proprietary API. Therefore, I can't present my experience about whether this works properly with Ubercart or not.
Comment #11
greg boggsI've attached a patch to fix #10.
I've also completed the mandatory training and can confirm the module functions as expected.
Comment #12
adTumbler commentedGreg
Many thanks for doing this - see as follows
i) We may not change the file ava_tax.php - it is a part of the library - my error to be including it with the module - I have taken it out - and also the file credentials.php - same applies - I will add these to the classes supplied with the library.
ii) I have added the missing line and taken away the white space to the .erp file
Have uploaded all the changes to git
Comment #13
adTumbler commentedTR
Thanks for following up - I do hope you will reconsider a 20 minute run through of the AvaTax service - it is not the library we need to cover - it is using their cloud service. I can issue you a dev account, let me know. It tends to be faster if I take you through setting up nexus and their functionality.
http://ventral.org/pareview/httpgitdrupalorgsandboxadtumbler1772752
Oops - sorry about doing that - Needs review!
Comment #14
klausiThis issue is not fixed? See http://drupal.org/node/532400
Comment #15
jasonabc commentedHi - we have implemented this module on a number of high-profile Ubercart stores (www.lakersstore.com, www.aidolstore.com and www.teamlastore.com to name a few) for, and on behalf of our clients. By connecting to the AvaTax service, the module brings any Ubercart store into full sales and use tax compliance, and as such serves a critical need for any business owner, as audit failures are expensive and time-consuming.
The module is easy to install and configure. Hats off to adTumbler for working on this and bringing it to the Ubercart and Drupal community.
I wholeheartedly recommend this module for project status.
Comment #16
mark_at_kaazing commentedHello folks,
We've been a community member for nearly two years. kaazing.com has been using the AvaTax module for our Drupal 6.x e-commerce web site with Ubercart 2.x for over a year and a half now without a single hitch: it calculates sales tax for the subset of the United States that we needed and it works well.
The process: requires you to get an Avalara Developer account through the module's creator, which will allow you to create a development/testing/staging instance and establishes the relationship between you, AdTumbler, and Avalara. Avalara helped walk us through the initial AvaTax developer account and service configuration steps and AdTumbler provided the Avalara library. In order to deploy for production, you will need to execute a contract for the AvaTax service with Avalara, then configure and use your production account. You can send test transactions through your production account.
The module: has a PHP SOAP and a Drupal Autoload module dependency. Ubercart 2.x core module updates will disable the module, but it is trivial to recopy the module from a Drush backup and enable it again. We keep the module in our private revision control repository as well.
The developer: we encountered a gap in logic for downloadable delivery, because we sold a non-shipping digital item subscription. Alex delivered a patch within a business day, which is great support!
In summary: we have had a great experience with the AvaTax service through this module, the developer is very diligent and responsive, and I highly recommend this for project status. We're thankful for the service AdTumbler and Avalara provide for e-commerce in Drupal.
Comment #17
nycnikato commentedAvatax is a great service. Don't let the price discourage you. Talk to them an see if the have something less expensive for shoestring budgets with only a few transaction.
Comment #17.0
nycnikato commentedInclude link to module demonstration!
Comment #18
adTumbler commentedWith all respect to nycnikato - TaxCloud is a competitive service to AvaTax from Avalara - the comment does not belong here.
I am aware of the Ubercart connector from TaxCloud - I have tested it, and was able to get it to work. If anyone is interested in the difference between what they offer as a free service, and what AvaTax offers as a paid service - I would be happy to explain.
With regard to Drupal Commerce - adTumbler has a module for Drupal Commerce - it is installed with +30 large corporations - see above - and more recently at http://toughmuddergear.com
I do know how difficult it is to extend the hooks provided by the core sales tax module that comes with Drupal Commerce - see above for architectural discussion - the AvaTax module has moved away from this approach - in particular creating it's own line item - and addressing some of the more complex US specific requirements.
The module is not in the issue queue at the request of Drupal who ask that only one project goes through the project approval process
Comment #19
jthorson commentedA few comments:
Normally, the second would likely be a blocker for the review process ... but I'm feeling generous tonight. :)
Thanks for your contribution, adTumbler!
I updated your account to let you promote this to a full project and also create new projects as either a sandbox or a "full" project.
Here are some recommended readings to help with excellent maintainership:
You can find lots more contributors chatting on IRC in #drupal-contribute. So, come hang out and get involved!
Thanks, also, for your patience with the review process. Anyone is welcome to participate in the review process. Please consider reviewing other projects that are pending review. I encourage you to learn more about that process and join the group of reviewers.
Thanks to the dedicated reviewer(s) as well.
Comment #20
jthorson commentedOne last comment ... the 'require_once' that you are using to add the uc_tax_avatax files is in the global context, and as such, will be executed on every single page request. These includes should be placed within a function ... or perhaps inside hook_init() with some selective logic to only include them on avatax related pages where they are actually needed.
Comment #22
klausiComment #23
adTumbler commentedI really do not know how the title of this document was changed to TaxCloud - a competing module - most strange!
Comment #24
suresh7787 commentedI need to calculate the Sales tax thro Avatax using the Zip or postal code only. Is that possible?. Pls help me.
Comment #25
tr commentedRestoring original title - the change in #23 was wrong, this has always been an Ubercart module.
@suresh7787: This project was promoted, and now resides at https://www.drupal.org/project/uc_avatax. You can use the issue queue there to ask your support questions/make bug reports/etc. But I can tell you right now that ZIP code is NOT enough to determine sales taxes in the USA. You will need the full address in order to properly and legally determine how much tax to charge.