Handle invalid VAT number case
This commit is contained in:
parent
8cc766b62f
commit
785f99311d
3 changed files with 31 additions and 2 deletions
|
@ -12,6 +12,7 @@ from hosting.models import HostingOrder, HostingBill, OrderDetail
|
||||||
from membership.models import StripeCustomer
|
from membership.models import StripeCustomer
|
||||||
from utils.forms import UserBillingAddressForm
|
from utils.forms import UserBillingAddressForm
|
||||||
from utils.models import BillingAddress, UserBillingAddress
|
from utils.models import BillingAddress, UserBillingAddress
|
||||||
|
from utils.stripe_utils import StripeUtils
|
||||||
from .cms_models import CMSIntegration
|
from .cms_models import CMSIntegration
|
||||||
from .models import VMPricing, VMTemplate
|
from .models import VMPricing, VMTemplate
|
||||||
|
|
||||||
|
@ -165,6 +166,9 @@ def validate_vat_number(stripe_customer_id, vat_number):
|
||||||
else:
|
else:
|
||||||
tax_id_obj = create_tax_id(stripe_customer_id, vat_number)
|
tax_id_obj = create_tax_id(stripe_customer_id, vat_number)
|
||||||
|
|
||||||
|
if 'response_object' in tax_id_obj:
|
||||||
|
return tax_id_obj
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"status": tax_id_obj.verification.status,
|
"status": tax_id_obj.verification.status,
|
||||||
"validated_on": datetime.datetime.now() if tax_id_obj.verification.status == "verified" else ""
|
"validated_on": datetime.datetime.now() if tax_id_obj.verification.status == "verified" else ""
|
||||||
|
@ -172,11 +176,17 @@ def validate_vat_number(stripe_customer_id, vat_number):
|
||||||
|
|
||||||
|
|
||||||
def create_tax_id(stripe_customer_id, vat_number):
|
def create_tax_id(stripe_customer_id, vat_number):
|
||||||
tax_id_obj = stripe.Customer.create_tax_id(
|
stripe_utils = StripeUtils()
|
||||||
|
tax_id_response = stripe_utils.create_tax_id_for_user(
|
||||||
stripe_customer_id,
|
stripe_customer_id,
|
||||||
type="eu_vat",
|
|
||||||
value=vat_number,
|
value=vat_number,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
tax_id_obj = tax_id_response.get('response_object')
|
||||||
|
|
||||||
|
if not tax_id_obj:
|
||||||
|
return tax_id_response
|
||||||
|
|
||||||
b_addresses = BillingAddress.objects.filter(
|
b_addresses = BillingAddress.objects.filter(
|
||||||
stripe_customer_id=stripe_customer_id,
|
stripe_customer_id=stripe_customer_id,
|
||||||
vat_number=vat_number
|
vat_number=vat_number
|
||||||
|
|
|
@ -547,6 +547,16 @@ class PaymentOrderView(FormView):
|
||||||
vat_number=address_form.cleaned_data.get('vat_number')
|
vat_number=address_form.cleaned_data.get('vat_number')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if 'response_object' in validate_result:
|
||||||
|
address_form.add_error(
|
||||||
|
"__all__", validate_result["error"]
|
||||||
|
)
|
||||||
|
return self.render_to_response(
|
||||||
|
self.get_context_data(
|
||||||
|
billing_address_form=address_form
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
request.session["vat_validation_status"] = validate_result["status"]
|
request.session["vat_validation_status"] = validate_result["status"]
|
||||||
request.session["vat_validated_on"] = validate_result["validated_on"]
|
request.session["vat_validated_on"] = validate_result["validated_on"]
|
||||||
|
|
||||||
|
|
|
@ -434,3 +434,12 @@ class StripeUtils(object):
|
||||||
subscription = stripe.Subscription.retrieve(subscription_id)
|
subscription = stripe.Subscription.retrieve(subscription_id)
|
||||||
subscription.metadata = meta_data
|
subscription.metadata = meta_data
|
||||||
subscription.save()
|
subscription.save()
|
||||||
|
|
||||||
|
@handleStripeError
|
||||||
|
def create_tax_id_for_user(self, stripe_customer_id, vat_number):
|
||||||
|
tax_id_obj = stripe.Customer.create_tax_id(
|
||||||
|
stripe_customer_id,
|
||||||
|
type="eu_vat",
|
||||||
|
value=vat_number,
|
||||||
|
)
|
||||||
|
return tax_id_obj
|
||||||
|
|
Loading…
Reference in a new issue