use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductResourceCustomerDetails {
pub address: Option<TaxProductResourcePostalAddress>,
pub address_source: Option<TaxProductResourceCustomerDetailsAddressSource>,
pub ip_address: Option<String>,
pub tax_ids: Vec<TaxProductResourceCustomerDetailsResourceTaxId>,
pub taxability_override: TaxProductResourceCustomerDetailsTaxabilityOverride,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductResourceCustomerDetailsResourceTaxId {
#[serde(rename = "type")]
pub type_: TaxProductResourceCustomerDetailsResourceTaxIdType,
pub value: String,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductResourcePostalAddress {
pub city: Option<String>,
pub country: String,
pub line1: Option<String>,
pub line2: Option<String>,
pub postal_code: Option<String>,
pub state: Option<String>,
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TaxProductResourceCustomerDetailsAddressSource {
Billing,
Shipping,
}
impl TaxProductResourceCustomerDetailsAddressSource {
pub fn as_str(self) -> &'static str {
match self {
TaxProductResourceCustomerDetailsAddressSource::Billing => "billing",
TaxProductResourceCustomerDetailsAddressSource::Shipping => "shipping",
}
}
}
impl AsRef<str> for TaxProductResourceCustomerDetailsAddressSource {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TaxProductResourceCustomerDetailsAddressSource {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TaxProductResourceCustomerDetailsAddressSource {
fn default() -> Self {
Self::Billing
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TaxProductResourceCustomerDetailsResourceTaxIdType {
AdNrt,
AeTrn,
ArCuit,
AuAbn,
AuArn,
BgUic,
BoTin,
BrCnpj,
BrCpf,
CaBn,
CaGstHst,
CaPstBc,
CaPstMb,
CaPstSk,
CaQst,
ChVat,
ClTin,
CnTin,
CoNit,
CrTin,
DoRcn,
EcRuc,
EgTin,
EsCif,
EuOssVat,
EuVat,
GbVat,
GeVat,
HkBr,
HuTin,
IdNpwp,
IlVat,
InGst,
IsVat,
JpCn,
JpRn,
JpTrn,
KePin,
KrBrn,
LiUid,
MxRfc,
MyFrp,
MyItn,
MySst,
NoVat,
NzGst,
PeRuc,
PhTin,
RoTin,
RsPib,
RuInn,
RuKpp,
SaVat,
SgGst,
SgUen,
SiTin,
SvNit,
ThVat,
TrTin,
TwVat,
UaVat,
Unknown,
UsEin,
UyRuc,
VeRif,
VnTin,
ZaVat,
}
impl TaxProductResourceCustomerDetailsResourceTaxIdType {
pub fn as_str(self) -> &'static str {
match self {
TaxProductResourceCustomerDetailsResourceTaxIdType::AdNrt => "ad_nrt",
TaxProductResourceCustomerDetailsResourceTaxIdType::AeTrn => "ae_trn",
TaxProductResourceCustomerDetailsResourceTaxIdType::ArCuit => "ar_cuit",
TaxProductResourceCustomerDetailsResourceTaxIdType::AuAbn => "au_abn",
TaxProductResourceCustomerDetailsResourceTaxIdType::AuArn => "au_arn",
TaxProductResourceCustomerDetailsResourceTaxIdType::BgUic => "bg_uic",
TaxProductResourceCustomerDetailsResourceTaxIdType::BoTin => "bo_tin",
TaxProductResourceCustomerDetailsResourceTaxIdType::BrCnpj => "br_cnpj",
TaxProductResourceCustomerDetailsResourceTaxIdType::BrCpf => "br_cpf",
TaxProductResourceCustomerDetailsResourceTaxIdType::CaBn => "ca_bn",
TaxProductResourceCustomerDetailsResourceTaxIdType::CaGstHst => "ca_gst_hst",
TaxProductResourceCustomerDetailsResourceTaxIdType::CaPstBc => "ca_pst_bc",
TaxProductResourceCustomerDetailsResourceTaxIdType::CaPstMb => "ca_pst_mb",
TaxProductResourceCustomerDetailsResourceTaxIdType::CaPstSk => "ca_pst_sk",
TaxProductResourceCustomerDetailsResourceTaxIdType::CaQst => "ca_qst",
TaxProductResourceCustomerDetailsResourceTaxIdType::ChVat => "ch_vat",
TaxProductResourceCustomerDetailsResourceTaxIdType::ClTin => "cl_tin",
TaxProductResourceCustomerDetailsResourceTaxIdType::CnTin => "cn_tin",
TaxProductResourceCustomerDetailsResourceTaxIdType::CoNit => "co_nit",
TaxProductResourceCustomerDetailsResourceTaxIdType::CrTin => "cr_tin",
TaxProductResourceCustomerDetailsResourceTaxIdType::DoRcn => "do_rcn",
TaxProductResourceCustomerDetailsResourceTaxIdType::EcRuc => "ec_ruc",
TaxProductResourceCustomerDetailsResourceTaxIdType::EgTin => "eg_tin",
TaxProductResourceCustomerDetailsResourceTaxIdType::EsCif => "es_cif",
TaxProductResourceCustomerDetailsResourceTaxIdType::EuOssVat => "eu_oss_vat",
TaxProductResourceCustomerDetailsResourceTaxIdType::EuVat => "eu_vat",
TaxProductResourceCustomerDetailsResourceTaxIdType::GbVat => "gb_vat",
TaxProductResourceCustomerDetailsResourceTaxIdType::GeVat => "ge_vat",
TaxProductResourceCustomerDetailsResourceTaxIdType::HkBr => "hk_br",
TaxProductResourceCustomerDetailsResourceTaxIdType::HuTin => "hu_tin",
TaxProductResourceCustomerDetailsResourceTaxIdType::IdNpwp => "id_npwp",
TaxProductResourceCustomerDetailsResourceTaxIdType::IlVat => "il_vat",
TaxProductResourceCustomerDetailsResourceTaxIdType::InGst => "in_gst",
TaxProductResourceCustomerDetailsResourceTaxIdType::IsVat => "is_vat",
TaxProductResourceCustomerDetailsResourceTaxIdType::JpCn => "jp_cn",
TaxProductResourceCustomerDetailsResourceTaxIdType::JpRn => "jp_rn",
TaxProductResourceCustomerDetailsResourceTaxIdType::JpTrn => "jp_trn",
TaxProductResourceCustomerDetailsResourceTaxIdType::KePin => "ke_pin",
TaxProductResourceCustomerDetailsResourceTaxIdType::KrBrn => "kr_brn",
TaxProductResourceCustomerDetailsResourceTaxIdType::LiUid => "li_uid",
TaxProductResourceCustomerDetailsResourceTaxIdType::MxRfc => "mx_rfc",
TaxProductResourceCustomerDetailsResourceTaxIdType::MyFrp => "my_frp",
TaxProductResourceCustomerDetailsResourceTaxIdType::MyItn => "my_itn",
TaxProductResourceCustomerDetailsResourceTaxIdType::MySst => "my_sst",
TaxProductResourceCustomerDetailsResourceTaxIdType::NoVat => "no_vat",
TaxProductResourceCustomerDetailsResourceTaxIdType::NzGst => "nz_gst",
TaxProductResourceCustomerDetailsResourceTaxIdType::PeRuc => "pe_ruc",
TaxProductResourceCustomerDetailsResourceTaxIdType::PhTin => "ph_tin",
TaxProductResourceCustomerDetailsResourceTaxIdType::RoTin => "ro_tin",
TaxProductResourceCustomerDetailsResourceTaxIdType::RsPib => "rs_pib",
TaxProductResourceCustomerDetailsResourceTaxIdType::RuInn => "ru_inn",
TaxProductResourceCustomerDetailsResourceTaxIdType::RuKpp => "ru_kpp",
TaxProductResourceCustomerDetailsResourceTaxIdType::SaVat => "sa_vat",
TaxProductResourceCustomerDetailsResourceTaxIdType::SgGst => "sg_gst",
TaxProductResourceCustomerDetailsResourceTaxIdType::SgUen => "sg_uen",
TaxProductResourceCustomerDetailsResourceTaxIdType::SiTin => "si_tin",
TaxProductResourceCustomerDetailsResourceTaxIdType::SvNit => "sv_nit",
TaxProductResourceCustomerDetailsResourceTaxIdType::ThVat => "th_vat",
TaxProductResourceCustomerDetailsResourceTaxIdType::TrTin => "tr_tin",
TaxProductResourceCustomerDetailsResourceTaxIdType::TwVat => "tw_vat",
TaxProductResourceCustomerDetailsResourceTaxIdType::UaVat => "ua_vat",
TaxProductResourceCustomerDetailsResourceTaxIdType::Unknown => "unknown",
TaxProductResourceCustomerDetailsResourceTaxIdType::UsEin => "us_ein",
TaxProductResourceCustomerDetailsResourceTaxIdType::UyRuc => "uy_ruc",
TaxProductResourceCustomerDetailsResourceTaxIdType::VeRif => "ve_rif",
TaxProductResourceCustomerDetailsResourceTaxIdType::VnTin => "vn_tin",
TaxProductResourceCustomerDetailsResourceTaxIdType::ZaVat => "za_vat",
}
}
}
impl AsRef<str> for TaxProductResourceCustomerDetailsResourceTaxIdType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TaxProductResourceCustomerDetailsResourceTaxIdType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TaxProductResourceCustomerDetailsResourceTaxIdType {
fn default() -> Self {
Self::AdNrt
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TaxProductResourceCustomerDetailsTaxabilityOverride {
CustomerExempt,
None,
ReverseCharge,
}
impl TaxProductResourceCustomerDetailsTaxabilityOverride {
pub fn as_str(self) -> &'static str {
match self {
TaxProductResourceCustomerDetailsTaxabilityOverride::CustomerExempt => {
"customer_exempt"
}
TaxProductResourceCustomerDetailsTaxabilityOverride::None => "none",
TaxProductResourceCustomerDetailsTaxabilityOverride::ReverseCharge => "reverse_charge",
}
}
}
impl AsRef<str> for TaxProductResourceCustomerDetailsTaxabilityOverride {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TaxProductResourceCustomerDetailsTaxabilityOverride {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TaxProductResourceCustomerDetailsTaxabilityOverride {
fn default() -> Self {
Self::CustomerExempt
}
}