mirror of
https://github.com/bitwarden/server.git
synced 2025-02-15 01:41:40 +01:00
[PM-16682] Provider setup tax information is not saved (#5211)
This commit is contained in:
parent
066cd4655d
commit
ff846280e5
@ -32,7 +32,8 @@ public class ProviderBillingService(
|
|||||||
IProviderOrganizationRepository providerOrganizationRepository,
|
IProviderOrganizationRepository providerOrganizationRepository,
|
||||||
IProviderPlanRepository providerPlanRepository,
|
IProviderPlanRepository providerPlanRepository,
|
||||||
IStripeAdapter stripeAdapter,
|
IStripeAdapter stripeAdapter,
|
||||||
ISubscriberService subscriberService) : IProviderBillingService
|
ISubscriberService subscriberService,
|
||||||
|
ITaxService taxService) : IProviderBillingService
|
||||||
{
|
{
|
||||||
public async Task ChangePlan(ChangeProviderPlanCommand command)
|
public async Task ChangePlan(ChangeProviderPlanCommand command)
|
||||||
{
|
{
|
||||||
@ -335,14 +336,30 @@ public class ProviderBillingService(
|
|||||||
Metadata = new Dictionary<string, string>
|
Metadata = new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
{ "region", globalSettings.BaseServiceUri.CloudRegion }
|
{ "region", globalSettings.BaseServiceUri.CloudRegion }
|
||||||
},
|
}
|
||||||
TaxIdData = taxInfo.HasTaxId ?
|
|
||||||
[
|
|
||||||
new CustomerTaxIdDataOptions { Type = taxInfo.TaxIdType, Value = taxInfo.TaxIdNumber }
|
|
||||||
]
|
|
||||||
: null
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(taxInfo.TaxIdNumber))
|
||||||
|
{
|
||||||
|
var taxIdType = taxService.GetStripeTaxCode(taxInfo.BillingAddressCountry,
|
||||||
|
taxInfo.TaxIdNumber);
|
||||||
|
|
||||||
|
if (taxIdType == null)
|
||||||
|
{
|
||||||
|
logger.LogWarning("Could not infer tax ID type in country '{Country}' with tax ID '{TaxID}'.",
|
||||||
|
taxInfo.BillingAddressCountry,
|
||||||
|
taxInfo.TaxIdNumber);
|
||||||
|
throw new BadRequestException("billingTaxIdTypeInferenceError");
|
||||||
|
}
|
||||||
|
|
||||||
|
customerCreateOptions.TaxIdData = taxInfo.HasTaxId
|
||||||
|
?
|
||||||
|
[
|
||||||
|
new CustomerTaxIdDataOptions { Type = taxIdType, Value = taxInfo.TaxIdNumber }
|
||||||
|
]
|
||||||
|
: null;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return await stripeAdapter.CustomerCreateAsync(customerCreateOptions);
|
return await stripeAdapter.CustomerCreateAsync(customerCreateOptions);
|
||||||
|
@ -746,6 +746,12 @@ public class ProviderBillingServiceTests
|
|||||||
{
|
{
|
||||||
provider.Name = "MSP";
|
provider.Name = "MSP";
|
||||||
|
|
||||||
|
sutProvider.GetDependency<ITaxService>()
|
||||||
|
.GetStripeTaxCode(Arg.Is<string>(
|
||||||
|
p => p == taxInfo.BillingAddressCountry),
|
||||||
|
Arg.Is<string>(p => p == taxInfo.TaxIdNumber))
|
||||||
|
.Returns(taxInfo.TaxIdType);
|
||||||
|
|
||||||
taxInfo.BillingAddressCountry = "AD";
|
taxInfo.BillingAddressCountry = "AD";
|
||||||
|
|
||||||
var stripeAdapter = sutProvider.GetDependency<IStripeAdapter>();
|
var stripeAdapter = sutProvider.GetDependency<IStripeAdapter>();
|
||||||
@ -777,6 +783,29 @@ public class ProviderBillingServiceTests
|
|||||||
Assert.Equivalent(expected, actual);
|
Assert.Equivalent(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Theory, BitAutoData]
|
||||||
|
public async Task SetupCustomer_Throws_BadRequestException_WhenTaxIdIsInvalid(
|
||||||
|
SutProvider<ProviderBillingService> sutProvider,
|
||||||
|
Provider provider,
|
||||||
|
TaxInfo taxInfo)
|
||||||
|
{
|
||||||
|
provider.Name = "MSP";
|
||||||
|
|
||||||
|
taxInfo.BillingAddressCountry = "AD";
|
||||||
|
|
||||||
|
sutProvider.GetDependency<ITaxService>()
|
||||||
|
.GetStripeTaxCode(Arg.Is<string>(
|
||||||
|
p => p == taxInfo.BillingAddressCountry),
|
||||||
|
Arg.Is<string>(p => p == taxInfo.TaxIdNumber))
|
||||||
|
.Returns((string)null);
|
||||||
|
|
||||||
|
var actual = await Assert.ThrowsAsync<BadRequestException>(async () =>
|
||||||
|
await sutProvider.Sut.SetupCustomer(provider, taxInfo));
|
||||||
|
|
||||||
|
Assert.IsType<BadRequestException>(actual);
|
||||||
|
Assert.Equal("billingTaxIdTypeInferenceError", actual.Message);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region SetupSubscription
|
#region SetupSubscription
|
||||||
|
Loading…
Reference in New Issue
Block a user