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 | ||||
| 
 | ||||
| 
 | ||||
| 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: | ||||
|             billing_address = BillingAddress.objects.get(id=billing_address_id) | ||||
|         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) | ||||
|         except BillingAddress.MultipleObjectsReturned as mor: | ||||
|             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.vat_number_validated_on: | ||||
|             return { | ||||
|  |  | |||
|  | @ -26,6 +26,13 @@ | |||
|                         {% for field in form %} | ||||
|                             {% bootstrap_field field show_label=False type='fields' bound_css_class='' %} | ||||
|                         {% 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"> | ||||
|                             <button type="submit" class="btn btn-vm-contact btn-wide" name="billing-form">{% trans "UPDATE" %}</button> | ||||
|                         </div> | ||||
|  |  | |||
|  | @ -37,7 +37,9 @@ from stored_messages.settings import stored_messages_settings | |||
| 
 | ||||
| from datacenterlight.cms_models import DCLCalculatorPluginModel | ||||
| 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 membership.models import CustomUser, StripeCustomer | ||||
| from opennebula_api.models import OpenNebulaManager | ||||
|  | @ -626,7 +628,24 @@ class SettingsView(LoginRequiredMixin, FormView): | |||
|                 billing_address_user_form = UserBillingAddressForm( | ||||
|                     instance=self.request.user.billing_addresses.first(), | ||||
|                     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") | ||||
|                     messages.add_message(request, messages.SUCCESS, msg) | ||||
|             else: | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue