mirror of
https://github.com/bitwarden/server.git
synced 2024-11-21 12:05:42 +01:00
WIP
This commit is contained in:
parent
eee7494c91
commit
e2a5b93bed
@ -1,4 +1,6 @@
|
||||
using Bit.Core.Services;
|
||||
using Bit.Api.Billing.Models.Responses;
|
||||
using Bit.Core.Services;
|
||||
using Bit.Core.Utilities;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http.HttpResults;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
@ -46,4 +48,13 @@ public class StripeController(
|
||||
|
||||
return TypedResults.Ok(setupIntent.ClientSecret);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
[Route("~/tax/id-types")]
|
||||
public IResult GetTaxIdTypes()
|
||||
{
|
||||
var response = TaxIdTypesResponse.From(StaticStore.SupportedTaxIdTypes);
|
||||
return TypedResults.Ok(response);
|
||||
}
|
||||
}
|
||||
|
28
src/Api/Billing/Models/Responses/TaxIdTypeResponse.cs
Normal file
28
src/Api/Billing/Models/Responses/TaxIdTypeResponse.cs
Normal file
@ -0,0 +1,28 @@
|
||||
using Bit.Core.Billing.Models;
|
||||
|
||||
namespace Bit.Api.Billing.Models.Responses;
|
||||
|
||||
public record TaxIdTypesResponse(List<TaxIdTypeResponse> TaxIdTypes)
|
||||
{
|
||||
public static TaxIdTypesResponse From(IEnumerable<TaxIdType> taxIdTypes) => new(
|
||||
taxIdTypes.Select(TaxIdTypeResponse.From).ToList());
|
||||
}
|
||||
|
||||
|
||||
/// <param name="Code">Stripe short code for the tax ID type</param>
|
||||
/// <param name="Country">ISO-3166-2 country code</param>
|
||||
/// <param name="Description">Description of the tax ID type</param>
|
||||
/// <param name="Example">Example of the tax ID type</param>
|
||||
public record TaxIdTypeResponse(
|
||||
string Code,
|
||||
string Country,
|
||||
string Description,
|
||||
string Example)
|
||||
{
|
||||
public static TaxIdTypeResponse From(TaxIdType taxIdType)
|
||||
=> new(
|
||||
taxIdType.Code,
|
||||
taxIdType.Country,
|
||||
taxIdType.Description,
|
||||
taxIdType.Example);
|
||||
}
|
18
src/Core/Billing/Models/TaxIdType.cs
Normal file
18
src/Core/Billing/Models/TaxIdType.cs
Normal file
@ -0,0 +1,18 @@
|
||||
namespace Bit.Core.Billing.Models;
|
||||
|
||||
public class TaxIdType
|
||||
{
|
||||
/// <summary>
|
||||
/// ISO-3166-2 code for the country.
|
||||
/// </summary>
|
||||
public string Country { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The identifier in Stripe for the tax ID type.
|
||||
/// </summary>
|
||||
public string Code { get; set; }
|
||||
|
||||
public string Description { get; set; }
|
||||
|
||||
public string Example { get; set; }
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
using System.Collections.Immutable;
|
||||
using Bit.Core.Billing.Enums;
|
||||
using Bit.Core.Billing.Models;
|
||||
using Bit.Core.Billing.Models.StaticStore.Plans;
|
||||
using Bit.Core.Enums;
|
||||
using Bit.Core.Models.Data.Organizations.OrganizationUsers;
|
||||
@ -171,4 +172,294 @@ public static class StaticStore
|
||||
p.PasswordManager.StripeStoragePlanId == stripePlanId ||
|
||||
(p.SecretsManager?.StripeServiceAccountPlanId == stripePlanId));
|
||||
}
|
||||
|
||||
public static readonly IEnumerable<TaxIdType> SupportedTaxIdTypes =
|
||||
[
|
||||
new() { Country = "AD", Code = "ad_nrt", Description = "Andorran NRT number", Example = "A-123456-Z" },
|
||||
new()
|
||||
{
|
||||
Country = "AR",
|
||||
Code = "ar_cuit",
|
||||
Description = "Argentinian tax ID number",
|
||||
Example = "12-3456789-01"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Country = "AU",
|
||||
Code = "au_abn",
|
||||
Description = "Australian Business Number (AU ABN)",
|
||||
Example = "12345678912"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Country = "AU",
|
||||
Code = "au_arn",
|
||||
Description = "Australian Taxation Office Reference Number",
|
||||
Example = "123456789123"
|
||||
},
|
||||
new() { Country = "AT", Code = "eu_vat", Description = "European VAT number", Example = "ATU12345678" },
|
||||
new() { Country = "BH", Code = "bh_vat", Description = "Bahraini VAT Number", Example = "123456789012345" },
|
||||
new() { Country = "BY", Code = "by_tin", Description = "Belarus TIN Number", Example = "123456789" },
|
||||
new() { Country = "BE", Code = "eu_vat", Description = "European VAT number", Example = "BE0123456789" },
|
||||
new() { Country = "BO", Code = "bo_tin", Description = "Bolivian tax ID", Example = "123456789" },
|
||||
new()
|
||||
{
|
||||
Country = "BR",
|
||||
Code = "br_cnpj",
|
||||
Description = "Brazilian CNPJ number",
|
||||
Example = "01.234.456/5432-10"
|
||||
},
|
||||
new() { Country = "BR", Code = "br_cpf", Description = "Brazilian CPF number", Example = "123.456.789-87" },
|
||||
new()
|
||||
{
|
||||
Country = "BG",
|
||||
Code = "bg_uic",
|
||||
Description = "Bulgaria Unified Identification Code",
|
||||
Example = "123456789"
|
||||
},
|
||||
new() { Country = "BG", Code = "eu_vat", Description = "European VAT number", Example = "BG0123456789" },
|
||||
new() { Country = "CA", Code = "ca_bn", Description = "Canadian BN", Example = "123456789" },
|
||||
new()
|
||||
{
|
||||
Country = "CA",
|
||||
Code = "ca_gst_hst",
|
||||
Description = "Canadian GST/HST number",
|
||||
Example = "123456789RT0002"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Country = "CA",
|
||||
Code = "ca_pst_bc",
|
||||
Description = "Canadian PST number (British Columbia)",
|
||||
Example = "PST-1234-5678"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Country = "CA",
|
||||
Code = "ca_pst_mb",
|
||||
Description = "Canadian PST number (Manitoba)",
|
||||
Example = "123456-7"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Country = "CA",
|
||||
Code = "ca_pst_sk",
|
||||
Description = "Canadian PST number (Saskatchewan)",
|
||||
Example = "1234567"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Country = "CA",
|
||||
Code = "ca_qst",
|
||||
Description = "Canadian QST number (Québec)",
|
||||
Example = "1234567890TQ1234"
|
||||
},
|
||||
new() { Country = "CL", Code = "cl_tin", Description = "Chilean TIN", Example = "12.345.678-K" },
|
||||
new() { Country = "CN", Code = "cn_tin", Description = "Chinese tax ID", Example = "123456789012345678" },
|
||||
new() { Country = "CO", Code = "co_nit", Description = "Colombian NIT number", Example = "123.456.789-0" },
|
||||
new() { Country = "CR", Code = "cr_tin", Description = "Costa Rican tax ID", Example = "1-234-567890" },
|
||||
new() { Country = "HR", Code = "eu_vat", Description = "European VAT number", Example = "HR12345678912" },
|
||||
new()
|
||||
{
|
||||
Country = "HR",
|
||||
Code = "hr_oib",
|
||||
Description = "Croatian Personal Identification Number",
|
||||
Example = "12345678901"
|
||||
},
|
||||
new() { Country = "CY", Code = "eu_vat", Description = "European VAT number", Example = "CY12345678Z" },
|
||||
new() { Country = "CZ", Code = "eu_vat", Description = "European VAT number", Example = "CZ1234567890" },
|
||||
new() { Country = "DK", Code = "eu_vat", Description = "European VAT number", Example = "DK12345678" },
|
||||
new() { Country = "DO", Code = "do_rcn", Description = "Dominican RCN number", Example = "123-4567890-1" },
|
||||
new() { Country = "EC", Code = "ec_ruc", Description = "Ecuadorian RUC number", Example = "1234567890001" },
|
||||
new()
|
||||
{
|
||||
Country = "EG",
|
||||
Code = "eg_tin",
|
||||
Description = "Egyptian Tax Identification Number",
|
||||
Example = "123456789"
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Country = "SV",
|
||||
Code = "sv_nit",
|
||||
Description = "El Salvadorian NIT number",
|
||||
Example = "1234-567890-123-4"
|
||||
},
|
||||
|
||||
new() { Country = "EE", Code = "eu_vat", Description = "European VAT number", Example = "EE123456789" },
|
||||
|
||||
new()
|
||||
{
|
||||
Country = "EU",
|
||||
Code = "eu_oss_vat",
|
||||
Description = "European One Stop Shop VAT number for non-Union scheme",
|
||||
Example = "EU123456789"
|
||||
},
|
||||
new() { Country = "FI", Code = "eu_vat", Description = "European VAT number", Example = "FI12345678" },
|
||||
new() { Country = "FR", Code = "eu_vat", Description = "European VAT number", Example = "FRAB123456789" },
|
||||
new() { Country = "GE", Code = "ge_vat", Description = "Georgian VAT", Example = "123456789" },
|
||||
new()
|
||||
{
|
||||
Country = "DE",
|
||||
Code = "de_stn",
|
||||
Description = "German Tax Number (Steuernummer)",
|
||||
Example = "1234567890"
|
||||
},
|
||||
new() { Country = "DE", Code = "eu_vat", Description = "European VAT number", Example = "DE123456789" },
|
||||
new() { Country = "GR", Code = "eu_vat", Description = "European VAT number", Example = "EL123456789" },
|
||||
new() { Country = "HK", Code = "hk_br", Description = "Hong Kong BR number", Example = "12345678" },
|
||||
new() { Country = "HU", Code = "eu_vat", Description = "European VAT number", Example = "HU12345678" },
|
||||
new()
|
||||
{
|
||||
Country = "HU",
|
||||
Code = "hu_tin",
|
||||
Description = "Hungary tax number (adószám)",
|
||||
Example = "12345678-1-23"
|
||||
},
|
||||
new() { Country = "IS", Code = "is_vat", Description = "Icelandic VAT", Example = "123456" },
|
||||
new() { Country = "IN", Code = "in_gst", Description = "Indian GST number", Example = "12ABCDE3456FGZH" },
|
||||
new()
|
||||
{
|
||||
Country = "ID",
|
||||
Code = "id_npwp",
|
||||
Description = "Indonesian NPWP number",
|
||||
Example = "012.345.678.9-012.345"
|
||||
},
|
||||
new() { Country = "IE", Code = "eu_vat", Description = "European VAT number", Example = "IE1234567AB" },
|
||||
new() { Country = "IL", Code = "il_vat", Description = "Israel VAT", Example = "000012345" },
|
||||
new() { Country = "IT", Code = "eu_vat", Description = "European VAT number", Example = "IT12345678912" },
|
||||
new()
|
||||
{
|
||||
Country = "JP",
|
||||
Code = "jp_cn",
|
||||
Description = "Japanese Corporate Number (*Hōjin Bangō*)",
|
||||
Example = "1234567891234"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Country = "JP",
|
||||
Code = "jp_rn",
|
||||
Description =
|
||||
"Japanese Registered Foreign Businesses' Registration Number (*Tōroku Kokugai Jigyōsha no Tōroku Bangō*)",
|
||||
Example = "12345"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Country = "JP",
|
||||
Code = "jp_trn",
|
||||
Description = "Japanese Tax Registration Number (*Tōroku Bangō*)",
|
||||
Example = "T1234567891234"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Country = "KZ",
|
||||
Code = "kz_bin",
|
||||
Description = "Kazakhstani Business Identification Number",
|
||||
Example = "123456789012"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Country = "KE",
|
||||
Code = "ke_pin",
|
||||
Description = "Kenya Revenue Authority Personal Identification Number",
|
||||
Example = "P000111111A"
|
||||
},
|
||||
new() { Country = "LV", Code = "eu_vat", Description = "European VAT number", Example = "LV12345678912" },
|
||||
new()
|
||||
{
|
||||
Country = "LI",
|
||||
Code = "li_uid",
|
||||
Description = "Liechtensteinian UID number",
|
||||
Example = "CHE123456789"
|
||||
},
|
||||
new() { Country = "LI", Code = "li_vat", Description = "Liechtensteinian VAT number", Example = "12345" },
|
||||
new() { Country = "LT", Code = "eu_vat", Description = "European VAT number", Example = "LT123456789123" },
|
||||
new() { Country = "LU", Code = "eu_vat", Description = "European VAT number", Example = "LU12345678" },
|
||||
new() { Country = "MY", Code = "my_frp", Description = "Malaysian FRP number", Example = "12345678" },
|
||||
new() { Country = "MY", Code = "my_itn", Description = "Malaysian ITN", Example = "C 1234567890" },
|
||||
new() { Country = "MY", Code = "my_sst", Description = "Malaysian SST number", Example = "A12-3456-78912345" },
|
||||
new() { Country = "MT", Code = "eu_vat", Description = "European VAT number", Example = "MT12345678" },
|
||||
new() { Country = "MX", Code = "mx_rfc", Description = "Mexican RFC number", Example = "ABC010203AB9" },
|
||||
new() { Country = "MD", Code = "md_vat", Description = "Moldova VAT Number", Example = "1234567" },
|
||||
new() { Country = "MA", Code = "ma_vat", Description = "Morocco VAT Number", Example = "12345678" },
|
||||
new() { Country = "NL", Code = "eu_vat", Description = "European VAT number", Example = "NL123456789B12" },
|
||||
new() { Country = "NZ", Code = "nz_gst", Description = "New Zealand GST number", Example = "123456789" },
|
||||
new() { Country = "NG", Code = "ng_tin", Description = "Nigerian TIN Number", Example = "12345678-0001" },
|
||||
new() { Country = "NO", Code = "no_vat", Description = "Norwegian VAT number", Example = "123456789MVA" },
|
||||
new()
|
||||
{
|
||||
Country = "NO",
|
||||
Code = "no_voec",
|
||||
Description = "Norwegian VAT on e-commerce number",
|
||||
Example = "1234567"
|
||||
},
|
||||
new() { Country = "OM", Code = "om_vat", Description = "Omani VAT Number", Example = "OM1234567890" },
|
||||
new() { Country = "PE", Code = "pe_ruc", Description = "Peruvian RUC number", Example = "12345678901" },
|
||||
new()
|
||||
{
|
||||
Country = "PH",
|
||||
Code = "ph_tin",
|
||||
Description = "Philippines Tax Identification Number",
|
||||
Example = "123456789012"
|
||||
},
|
||||
new() { Country = "PL", Code = "eu_vat", Description = "European VAT number", Example = "PL1234567890" },
|
||||
new() { Country = "PT", Code = "eu_vat", Description = "European VAT number", Example = "PT123456789" },
|
||||
new() { Country = "RO", Code = "eu_vat", Description = "European VAT number", Example = "RO1234567891" },
|
||||
new() { Country = "RO", Code = "ro_tin", Description = "Romanian tax ID number", Example = "1234567890123" },
|
||||
new() { Country = "RU", Code = "ru_inn", Description = "Russian INN", Example = "1234567891" },
|
||||
new() { Country = "RU", Code = "ru_kpp", Description = "Russian KPP", Example = "123456789" },
|
||||
new() { Country = "SA", Code = "sa_vat", Description = "Saudi Arabia VAT", Example = "123456789012345" },
|
||||
new() { Country = "RS", Code = "rs_pib", Description = "Serbian PIB number", Example = "123456789" },
|
||||
new() { Country = "SG", Code = "sg_gst", Description = "Singaporean GST", Example = "M12345678X" },
|
||||
new() { Country = "SG", Code = "sg_uen", Description = "Singaporean UEN", Example = "123456789F" },
|
||||
new() { Country = "SK", Code = "eu_vat", Description = "European VAT number", Example = "SK1234567891" },
|
||||
new() { Country = "SI", Code = "eu_vat", Description = "European VAT number", Example = "SI12345678" },
|
||||
new()
|
||||
{
|
||||
Country = "SI",
|
||||
Code = "si_tin",
|
||||
Description = "Slovenia tax number (davčna številka)",
|
||||
Example = "12345678"
|
||||
},
|
||||
new() { Country = "ZA", Code = "za_vat", Description = "South African VAT number", Example = "4123456789" },
|
||||
new() { Country = "KR", Code = "kr_brn", Description = "Korean BRN", Example = "123-45-67890" },
|
||||
new() { Country = "ES", Code = "es_cif", Description = "Spanish NIF/CIF number", Example = "A12345678" },
|
||||
new() { Country = "ES", Code = "eu_vat", Description = "European VAT number", Example = "ESA1234567Z" },
|
||||
new() { Country = "SE", Code = "eu_vat", Description = "European VAT number", Example = "SE123456789123" },
|
||||
new()
|
||||
{
|
||||
Country = "CH",
|
||||
Code = "ch_uid",
|
||||
Description = "Switzerland UID number",
|
||||
Example = "CHE-123.456.789 HR"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Country = "CH",
|
||||
Code = "ch_vat",
|
||||
Description = "Switzerland VAT number",
|
||||
Example = "CHE-123.456.789 MWST"
|
||||
},
|
||||
new() { Country = "TW", Code = "tw_vat", Description = "Taiwanese VAT", Example = "12345678" },
|
||||
new() { Country = "TZ", Code = "tz_vat", Description = "Tanzania VAT Number", Example = "12345678A" },
|
||||
new() { Country = "TH", Code = "th_vat", Description = "Thai VAT", Example = "1234567891234" },
|
||||
new() { Country = "TR", Code = "tr_tin", Description = "Turkish TIN Number", Example = "0123456789" },
|
||||
new() { Country = "UA", Code = "ua_vat", Description = "Ukrainian VAT", Example = "123456789" },
|
||||
new()
|
||||
{
|
||||
Country = "AE",
|
||||
Code = "ae_trn",
|
||||
Description = "United Arab Emirates TRN",
|
||||
Example = "123456789012345"
|
||||
},
|
||||
new() { Country = "GB", Code = "eu_vat", Description = "Northern Ireland VAT number", Example = "XI123456789" },
|
||||
new() { Country = "GB", Code = "gb_vat", Description = "United Kingdom VAT number", Example = "GB123456789" },
|
||||
new() { Country = "US", Code = "us_ein", Description = "United States EIN", Example = "12-3456789" },
|
||||
new() { Country = "UY", Code = "uy_ruc", Description = "Uruguayan RUC number", Example = "123456789012" },
|
||||
new() { Country = "UZ", Code = "uz_tin", Description = "Uzbekistan TIN Number", Example = "123456789" },
|
||||
new() { Country = "UZ", Code = "uz_vat", Description = "Uzbekistan VAT Number", Example = "123456789012" },
|
||||
new() { Country = "VE", Code = "ve_rif", Description = "Venezuelan RIF number", Example = "A-12345678-9" },
|
||||
new() { Country = "VN", Code = "vn_tin", Description = "Vietnamese tax ID number", Example = "1234567890" }
|
||||
];
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user