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…
	
	Add table
		Add a link
		
	
		Reference in a new issue