Save tax id in billing address even if no StripeCustomer
This commit is contained in:
		
					parent
					
						
							
								74d1bbb6d3
							
						
					
				
			
			
				commit
				
					
						9310f72cf9
					
				
			
		
					 2 changed files with 27 additions and 15 deletions
				
			
		| 
						 | 
					@ -167,7 +167,7 @@ def validate_vat_number(stripe_customer_id, billing_address_id):
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                tax_id_obj = create_tax_id(
 | 
					                tax_id_obj = create_tax_id(
 | 
				
			||||||
                    stripe_customer_id, billing_address.vat_number,
 | 
					                    stripe_customer_id, billing_address_id,
 | 
				
			||||||
                    "ch_vat" if billing_address.country.lower() == "ch" else "eu_vat")
 | 
					                    "ch_vat" if billing_address.country.lower() == "ch" else "eu_vat")
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
| 
						 | 
					@ -184,11 +184,19 @@ def validate_vat_number(stripe_customer_id, billing_address_id):
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def create_tax_id(stripe_customer_id, vat_number, type):
 | 
					def create_tax_id(stripe_customer_id, billing_address_id, type):
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        billing_address = BillingAddress.objects.get(id=billing_address_id)
 | 
				
			||||||
 | 
					    except BillingAddress.DoesNotExist as dne:
 | 
				
			||||||
 | 
					        billing_address = None
 | 
				
			||||||
 | 
					        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()
 | 
				
			||||||
    stripe_utils = StripeUtils()
 | 
					    stripe_utils = StripeUtils()
 | 
				
			||||||
    tax_id_response = stripe_utils.create_tax_id_for_user(
 | 
					    tax_id_response = stripe_utils.create_tax_id_for_user(
 | 
				
			||||||
        stripe_customer_id,
 | 
					        stripe_customer_id,
 | 
				
			||||||
        vat_number=vat_number,
 | 
					        vat_number=billing_address.vat_number,
 | 
				
			||||||
        type=type
 | 
					        type=type
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -197,16 +205,21 @@ def create_tax_id(stripe_customer_id, vat_number, type):
 | 
				
			||||||
    if not tax_id_obj:
 | 
					    if not tax_id_obj:
 | 
				
			||||||
        return tax_id_response
 | 
					        return tax_id_response
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
        stripe_customer = StripeCustomer.objects.get(stripe_id=stripe_customer_id)
 | 
					        stripe_customer = StripeCustomer.objects.get(stripe_id=stripe_customer_id)
 | 
				
			||||||
        billing_address_set = set()
 | 
					        billing_address_set = set()
 | 
				
			||||||
        for ho in stripe_customer.hostingorder_set.all():
 | 
					        for ho in stripe_customer.hostingorder_set.all():
 | 
				
			||||||
        if ho.billing_address.vat_number==vat_number:
 | 
					            if ho.billing_address.vat_number == billing_address.vat_number:
 | 
				
			||||||
                billing_address_set.add(ho.billing_address)
 | 
					                billing_address_set.add(ho.billing_address)
 | 
				
			||||||
        for b_address in billing_address_set:
 | 
					        for b_address in billing_address_set:
 | 
				
			||||||
            b_address.stripe_tax_id = tax_id_obj.id
 | 
					            b_address.stripe_tax_id = tax_id_obj.id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ub_addresses = stripe_customer.user.billing_addresses.filter(
 | 
					        ub_addresses = stripe_customer.user.billing_addresses.filter(
 | 
				
			||||||
        vat_number=vat_number)
 | 
					            vat_number=billing_address.vat_number)
 | 
				
			||||||
        for ub_address in ub_addresses:
 | 
					        for ub_address in ub_addresses:
 | 
				
			||||||
            ub_address.stripe_tax_id = tax_id_obj.id
 | 
					            ub_address.stripe_tax_id = tax_id_obj.id
 | 
				
			||||||
 | 
					    except StripeCustomer.DoesNotExist as dne:
 | 
				
			||||||
 | 
					        logger.debug("StripeCustomer %s does not exist" % stripe_customer_id)
 | 
				
			||||||
 | 
					        billing_address.stripe_tax_id = tax_id_obj.id
 | 
				
			||||||
 | 
					        billing_address.save()
 | 
				
			||||||
    return tax_id_obj
 | 
					    return tax_id_obj
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -524,7 +524,6 @@ class PaymentOrderView(FormView):
 | 
				
			||||||
                        email=user_email,
 | 
					                        email=user_email,
 | 
				
			||||||
                        token=token,
 | 
					                        token=token,
 | 
				
			||||||
                        customer_name=user_name)
 | 
					                        customer_name=user_name)
 | 
				
			||||||
                    customer.save()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            billing_address = address_form.save()
 | 
					            billing_address = address_form.save()
 | 
				
			||||||
            request.session["billing_address_id"] = billing_address.id
 | 
					            request.session["billing_address_id"] = billing_address.id
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue