Files
suite/account_us_ca_salestax/models/ca_tax_request.py

30 lines
1009 B
Python

import os
import logging
from suds.client import Client
_logger = logging.getLogger(__name__)
class CATaxRequest:
def __init__(self):
wsdl_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), './ca_rates.wsdl')
self.client = Client('file:///%s' % wsdl_path.lstrip('/'))
def get_rate(self, partner):
request = self.client.factory.create('CARateRequest')
request.StreetAddress = partner.street
request.State = partner.state_id.code
request.City = partner.city
zip_ = partner.zip
if zip_ and len(zip_) > 5:
zip_ = zip_[:5]
request.ZipCode = zip_
_logger.debug('CA Request: ' + str(request))
response = self.client.service.GetRate(request)
_logger.debug('CA Response: ' + str(response))
return {
'rate': response.CARateResponses[0][0].Responses[0][0].Rate * 100.0,
'county': response.CARateResponses[0][0].Responses[0][0].Details.County,
}