Handle tax_id creation
This commit is contained in:
parent
8996254212
commit
1400d27afa
3 changed files with 101 additions and 6 deletions
|
|
@ -1,7 +1,9 @@
|
|||
import datetime
|
||||
import logging
|
||||
|
||||
import pyotp
|
||||
import requests
|
||||
import stripe
|
||||
from django.conf import settings
|
||||
from django.contrib.sites.models import Site
|
||||
|
||||
|
|
@ -9,12 +11,13 @@ from datacenterlight.tasks import create_vm_task
|
|||
from hosting.models import HostingOrder, HostingBill, OrderDetail
|
||||
from membership.models import StripeCustomer
|
||||
from utils.forms import UserBillingAddressForm
|
||||
from utils.models import BillingAddress
|
||||
from utils.models import BillingAddress, UserBillingAddress
|
||||
from .cms_models import CMSIntegration
|
||||
from .models import VMPricing, VMTemplate
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def get_cms_integration(name):
|
||||
current_site = Site.objects.get_current()
|
||||
try:
|
||||
|
|
@ -124,3 +127,67 @@ def check_otp(name, realm, token):
|
|||
data=data
|
||||
)
|
||||
return response.status_code
|
||||
|
||||
|
||||
def validate_vat_number(self, stripe_customer_id, vat_number):
|
||||
try:
|
||||
billing_address = BillingAddress.objects.get(vat_number=vat_number)
|
||||
except BillingAddress.DoesNotExist as dne:
|
||||
billing_address = None
|
||||
logger.debug("BillingAddress does not exist for %s" % vat_number)
|
||||
except BillingAddress.MultipleObjectsReturned as mor:
|
||||
logger.debug("Multiple BillingAddress exist for %s" % vat_number)
|
||||
billing_address = BillingAddress.objects.last(vat_number=vat_number)
|
||||
if billing_address is not None:
|
||||
if billing_address.vat_number_validated_on:
|
||||
return {
|
||||
"validated_on": billing_address.vat_number_validated_on,
|
||||
"status": "verified"
|
||||
}
|
||||
else:
|
||||
if billing_address.stripe_tax_id:
|
||||
tax_id_obj = stripe.Customer.retrieve_tax_id(
|
||||
stripe_customer_id,
|
||||
billing_address.stripe_tax_id,
|
||||
)
|
||||
if tax_id_obj.verification.status == "verified":
|
||||
return {
|
||||
"status": "verified",
|
||||
"validated_on": billing_address.vat_number_validated_on
|
||||
}
|
||||
else:
|
||||
return {
|
||||
"status": tax_id_obj.verification.status,
|
||||
"validated_on": ""
|
||||
}
|
||||
else:
|
||||
tax_id_obj = create_tax_id(stripe_customer_id, vat_number)
|
||||
else:
|
||||
tax_id_obj = create_tax_id(stripe_customer_id, vat_number)
|
||||
|
||||
return {
|
||||
"status": tax_id_obj.verification.status,
|
||||
"validated_on": datetime.datetime.now() if tax_id_obj.verification.status == "verified" else ""
|
||||
}
|
||||
|
||||
|
||||
def create_tax_id(stripe_customer_id, vat_number):
|
||||
tax_id_obj = stripe.Customer.create_tax_id(
|
||||
stripe_customer_id,
|
||||
type="eu_vat",
|
||||
value=vat_number,
|
||||
)
|
||||
b_addresses = BillingAddress.objects.filter(
|
||||
stripe_customer_id=stripe_customer_id,
|
||||
vat_number=vat_number
|
||||
)
|
||||
for b_address in b_addresses:
|
||||
b_address.stripe_tax_id = tax_id_obj.id
|
||||
|
||||
ub_addresses = UserBillingAddress.objects.filter(
|
||||
stripe_customer_id=stripe_customer_id,
|
||||
vat_number=vat_number
|
||||
)
|
||||
for ub_address in ub_addresses:
|
||||
ub_address.stripe_tax_id = tax_id_obj.id
|
||||
return tax_id_obj
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue