VAT number validation in settings
This commit is contained in:
		
					parent
					
						
							
								7d9ab322c9
							
						
					
				
			
			
				commit
				
					
						99e70d95c4
					
				
			
		
					 3 changed files with 54 additions and 13 deletions
				
			
		|  | @ -131,7 +131,22 @@ def check_otp(name, realm, token): | ||||||
|     return response.status_code |     return response.status_code | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def validate_vat_number(stripe_customer_id, billing_address_id): | def validate_vat_number(stripe_customer_id, billing_address_id, | ||||||
|  |                         is_user_ba=False): | ||||||
|  |     if is_user_ba: | ||||||
|  |         try: | ||||||
|  |             billing_address = UserBillingAddress.objects.get( | ||||||
|  |                 id=billing_address_id) | ||||||
|  |         except UserBillingAddress.DoesNotExist as dne: | ||||||
|  |             billing_address = None | ||||||
|  |             logger.debug( | ||||||
|  |                 "UserBillingAddress does not exist for %s" % billing_address_id) | ||||||
|  |         except UserBillingAddress.MultipleObjectsReturned as mor: | ||||||
|  |             logger.debug( | ||||||
|  |                 "Multiple UserBillingAddress exist for %s" % billing_address_id) | ||||||
|  |             billing_address = UserBillingAddress.objects.filter( | ||||||
|  |                 id=billing_address_id).order_by('-id').first() | ||||||
|  |     else: | ||||||
|         try: |         try: | ||||||
|             billing_address = BillingAddress.objects.get(id=billing_address_id) |             billing_address = BillingAddress.objects.get(id=billing_address_id) | ||||||
|         except BillingAddress.DoesNotExist as dne: |         except BillingAddress.DoesNotExist as dne: | ||||||
|  | @ -139,7 +154,7 @@ def validate_vat_number(stripe_customer_id, billing_address_id): | ||||||
|             logger.debug("BillingAddress does not exist for %s" % billing_address_id) |             logger.debug("BillingAddress does not exist for %s" % billing_address_id) | ||||||
|         except BillingAddress.MultipleObjectsReturned as mor: |         except BillingAddress.MultipleObjectsReturned as mor: | ||||||
|             logger.debug("Multiple BillingAddress exist for %s" % billing_address_id) |             logger.debug("Multiple BillingAddress exist for %s" % billing_address_id) | ||||||
|         billing_address = BillingAddress.objects.filter(billing_address_id).order_by('-id').first() |             billing_address = BillingAddress.objects.filter(id=billing_address_id).order_by('-id').first() | ||||||
|     if billing_address is not None: |     if billing_address is not None: | ||||||
|         if billing_address.vat_number_validated_on: |         if billing_address.vat_number_validated_on: | ||||||
|             return { |             return { | ||||||
|  |  | ||||||
|  | @ -26,6 +26,13 @@ | ||||||
|                         {% for field in form %} |                         {% for field in form %} | ||||||
|                             {% bootstrap_field field show_label=False type='fields' bound_css_class='' %} |                             {% bootstrap_field field show_label=False type='fields' bound_css_class='' %} | ||||||
|                         {% endfor %} |                         {% endfor %} | ||||||
|  |                         {% if form.instance.vat_number %} | ||||||
|  |                             {% if form.instance.vat_validation_status == "verified" %} | ||||||
|  |                                         <span class="fa fa-fw fa-check-circle" aria-hidden="true" title='{% trans "Your VAT number has been verified" %}'></span> | ||||||
|  |                             {% else %} | ||||||
|  |                                         <span class="fa fa-fw fa-info-circle" aria-hidden="true" title='{% trans "Your VAT number is under validation. VAT will be adjusted, once the validation is complete." %}'></span> | ||||||
|  |                             {% endif %} | ||||||
|  |                         {% endif %} | ||||||
|                         <div class="form-group text-right"> |                         <div class="form-group text-right"> | ||||||
|                             <button type="submit" class="btn btn-vm-contact btn-wide" name="billing-form">{% trans "UPDATE" %}</button> |                             <button type="submit" class="btn btn-vm-contact btn-wide" name="billing-form">{% trans "UPDATE" %}</button> | ||||||
|                         </div> |                         </div> | ||||||
|  |  | ||||||
|  | @ -37,7 +37,9 @@ from stored_messages.settings import stored_messages_settings | ||||||
| 
 | 
 | ||||||
| from datacenterlight.cms_models import DCLCalculatorPluginModel | from datacenterlight.cms_models import DCLCalculatorPluginModel | ||||||
| from datacenterlight.models import VMTemplate, VMPricing | from datacenterlight.models import VMTemplate, VMPricing | ||||||
| from datacenterlight.utils import create_vm, get_cms_integration, check_otp | from datacenterlight.utils import ( | ||||||
|  |     create_vm, get_cms_integration, check_otp, validate_vat_number | ||||||
|  | ) | ||||||
| from hosting.models import UserCardDetail | from hosting.models import UserCardDetail | ||||||
| from membership.models import CustomUser, StripeCustomer | from membership.models import CustomUser, StripeCustomer | ||||||
| from opennebula_api.models import OpenNebulaManager | from opennebula_api.models import OpenNebulaManager | ||||||
|  | @ -626,7 +628,24 @@ class SettingsView(LoginRequiredMixin, FormView): | ||||||
|                 billing_address_user_form = UserBillingAddressForm( |                 billing_address_user_form = UserBillingAddressForm( | ||||||
|                     instance=self.request.user.billing_addresses.first(), |                     instance=self.request.user.billing_addresses.first(), | ||||||
|                     data=billing_address_data) |                     data=billing_address_data) | ||||||
|                 billing_address_user_form.save() |                 billing_address = billing_address_user_form.save() | ||||||
|  |                 vat_number = billing_address_user_form.cleaned_data.get( | ||||||
|  |                     'vat_number').strip() | ||||||
|  |                 if vat_number: | ||||||
|  |                     validate_result = validate_vat_number( | ||||||
|  |                         stripe_customer_id=request.user.stripecustomer.stripe_id, | ||||||
|  |                         billing_address_id=billing_address.id, | ||||||
|  |                         is_user_ba=True | ||||||
|  |                     ) | ||||||
|  |                     if 'error' in validate_result and validate_result['error']: | ||||||
|  |                         messages.add_message( | ||||||
|  |                             request, messages.ERROR, validate_result["error"], | ||||||
|  |                             extra_tags='vat_error' | ||||||
|  |                         ) | ||||||
|  |                     else: | ||||||
|  |                         msg = _("Billing address updated successfully") | ||||||
|  |                         messages.add_message(request, messages.SUCCESS, msg) | ||||||
|  |                 else: | ||||||
|                     msg = _("Billing address updated successfully") |                     msg = _("Billing address updated successfully") | ||||||
|                     messages.add_message(request, messages.SUCCESS, msg) |                     messages.add_message(request, messages.SUCCESS, msg) | ||||||
|             else: |             else: | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue