use crate::ids::{TaxRegistrationId};
use crate::params::{Object, Timestamp};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxRegistration {
pub id: TaxRegistrationId,
pub active_from: Timestamp,
pub country: String,
pub country_options: TaxProductRegistrationsResourceCountryOptions,
pub created: Timestamp,
pub expires_at: Option<Timestamp>,
pub livemode: bool,
pub status: TaxRegistrationStatus,
}
impl Object for TaxRegistration {
type Id = TaxRegistrationId;
fn id(&self) -> Self::Id {
self.id.clone()
}
fn object(&self) -> &'static str {
"tax.registration"
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductRegistrationsResourceCountryOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub ae: Option<TaxProductRegistrationsResourceCountryOptionsDefault>,
#[serde(skip_serializing_if = "Option::is_none")]
pub at: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub au: Option<TaxProductRegistrationsResourceCountryOptionsDefault>,
#[serde(skip_serializing_if = "Option::is_none")]
pub be: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bg: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ca: Option<TaxProductRegistrationsResourceCountryOptionsCanada>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ch: Option<TaxProductRegistrationsResourceCountryOptionsDefault>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cl: Option<TaxProductRegistrationsResourceCountryOptionsSimplified>,
#[serde(skip_serializing_if = "Option::is_none")]
pub co: Option<TaxProductRegistrationsResourceCountryOptionsSimplified>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cy: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cz: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub de: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dk: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ee: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub es: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fi: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fr: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gb: Option<TaxProductRegistrationsResourceCountryOptionsDefault>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gr: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hr: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hu: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<TaxProductRegistrationsResourceCountryOptionsSimplified>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ie: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is: Option<TaxProductRegistrationsResourceCountryOptionsDefault>,
#[serde(skip_serializing_if = "Option::is_none")]
pub it: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub jp: Option<TaxProductRegistrationsResourceCountryOptionsDefault>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kr: Option<TaxProductRegistrationsResourceCountryOptionsSimplified>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lt: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lu: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lv: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mt: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mx: Option<TaxProductRegistrationsResourceCountryOptionsSimplified>,
#[serde(skip_serializing_if = "Option::is_none")]
pub my: Option<TaxProductRegistrationsResourceCountryOptionsSimplified>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nl: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub no: Option<TaxProductRegistrationsResourceCountryOptionsDefault>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nz: Option<TaxProductRegistrationsResourceCountryOptionsDefault>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pl: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pt: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ro: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sa: Option<TaxProductRegistrationsResourceCountryOptionsSimplified>,
#[serde(skip_serializing_if = "Option::is_none")]
pub se: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sg: Option<TaxProductRegistrationsResourceCountryOptionsDefault>,
#[serde(skip_serializing_if = "Option::is_none")]
pub si: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sk: Option<TaxProductRegistrationsResourceCountryOptionsEurope>,
#[serde(skip_serializing_if = "Option::is_none")]
pub th: Option<TaxProductRegistrationsResourceCountryOptionsSimplified>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tr: Option<TaxProductRegistrationsResourceCountryOptionsSimplified>,
#[serde(skip_serializing_if = "Option::is_none")]
pub us: Option<TaxProductRegistrationsResourceCountryOptionsUnitedStates>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vn: Option<TaxProductRegistrationsResourceCountryOptionsSimplified>,
#[serde(skip_serializing_if = "Option::is_none")]
pub za: Option<TaxProductRegistrationsResourceCountryOptionsDefault>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductRegistrationsResourceCountryOptionsCanada {
#[serde(skip_serializing_if = "Option::is_none")]
pub province_standard: Option<TaxProductRegistrationsResourceCountryOptionsCaProvinceStandard>,
#[serde(rename = "type")]
pub type_: TaxProductRegistrationsResourceCountryOptionsCanadaType,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductRegistrationsResourceCountryOptionsCaProvinceStandard {
pub province: String,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductRegistrationsResourceCountryOptionsDefault {
#[serde(rename = "type")]
pub type_: TaxProductRegistrationsResourceCountryOptionsDefaultType,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductRegistrationsResourceCountryOptionsEurope {
#[serde(skip_serializing_if = "Option::is_none")]
pub standard: Option<TaxProductRegistrationsResourceCountryOptionsEuStandard>,
#[serde(rename = "type")]
pub type_: TaxProductRegistrationsResourceCountryOptionsEuropeType,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductRegistrationsResourceCountryOptionsEuStandard {
pub place_of_supply_scheme: TaxProductRegistrationsResourceCountryOptionsEuStandardPlaceOfSupplyScheme,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductRegistrationsResourceCountryOptionsSimplified {
#[serde(rename = "type")]
pub type_: TaxProductRegistrationsResourceCountryOptionsSimplifiedType,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductRegistrationsResourceCountryOptionsUnitedStates {
#[serde(skip_serializing_if = "Option::is_none")]
pub local_amusement_tax: Option<TaxProductRegistrationsResourceCountryOptionsUsLocalAmusementTax>,
#[serde(skip_serializing_if = "Option::is_none")]
pub local_lease_tax: Option<TaxProductRegistrationsResourceCountryOptionsUsLocalLeaseTax>,
pub state: String,
#[serde(rename = "type")]
pub type_: TaxProductRegistrationsResourceCountryOptionsUnitedStatesType,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductRegistrationsResourceCountryOptionsUsLocalAmusementTax {
pub jurisdiction: String,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductRegistrationsResourceCountryOptionsUsLocalLeaseTax {
pub jurisdiction: String,
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TaxProductRegistrationsResourceCountryOptionsCanadaType {
ProvinceStandard,
Simplified,
Standard,
}
impl TaxProductRegistrationsResourceCountryOptionsCanadaType {
pub fn as_str(self) -> &'static str {
match self {
TaxProductRegistrationsResourceCountryOptionsCanadaType::ProvinceStandard => "province_standard",
TaxProductRegistrationsResourceCountryOptionsCanadaType::Simplified => "simplified",
TaxProductRegistrationsResourceCountryOptionsCanadaType::Standard => "standard",
}
}
}
impl AsRef<str> for TaxProductRegistrationsResourceCountryOptionsCanadaType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TaxProductRegistrationsResourceCountryOptionsCanadaType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TaxProductRegistrationsResourceCountryOptionsCanadaType {
fn default() -> Self {
Self::ProvinceStandard
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TaxProductRegistrationsResourceCountryOptionsDefaultType {
Standard,
}
impl TaxProductRegistrationsResourceCountryOptionsDefaultType {
pub fn as_str(self) -> &'static str {
match self {
TaxProductRegistrationsResourceCountryOptionsDefaultType::Standard => "standard",
}
}
}
impl AsRef<str> for TaxProductRegistrationsResourceCountryOptionsDefaultType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TaxProductRegistrationsResourceCountryOptionsDefaultType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TaxProductRegistrationsResourceCountryOptionsDefaultType {
fn default() -> Self {
Self::Standard
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TaxProductRegistrationsResourceCountryOptionsEuStandardPlaceOfSupplyScheme {
SmallSeller,
Standard,
}
impl TaxProductRegistrationsResourceCountryOptionsEuStandardPlaceOfSupplyScheme {
pub fn as_str(self) -> &'static str {
match self {
TaxProductRegistrationsResourceCountryOptionsEuStandardPlaceOfSupplyScheme::SmallSeller => "small_seller",
TaxProductRegistrationsResourceCountryOptionsEuStandardPlaceOfSupplyScheme::Standard => "standard",
}
}
}
impl AsRef<str> for TaxProductRegistrationsResourceCountryOptionsEuStandardPlaceOfSupplyScheme {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TaxProductRegistrationsResourceCountryOptionsEuStandardPlaceOfSupplyScheme {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TaxProductRegistrationsResourceCountryOptionsEuStandardPlaceOfSupplyScheme {
fn default() -> Self {
Self::SmallSeller
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TaxProductRegistrationsResourceCountryOptionsEuropeType {
Ioss,
OssNonUnion,
OssUnion,
Standard,
}
impl TaxProductRegistrationsResourceCountryOptionsEuropeType {
pub fn as_str(self) -> &'static str {
match self {
TaxProductRegistrationsResourceCountryOptionsEuropeType::Ioss => "ioss",
TaxProductRegistrationsResourceCountryOptionsEuropeType::OssNonUnion => "oss_non_union",
TaxProductRegistrationsResourceCountryOptionsEuropeType::OssUnion => "oss_union",
TaxProductRegistrationsResourceCountryOptionsEuropeType::Standard => "standard",
}
}
}
impl AsRef<str> for TaxProductRegistrationsResourceCountryOptionsEuropeType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TaxProductRegistrationsResourceCountryOptionsEuropeType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TaxProductRegistrationsResourceCountryOptionsEuropeType {
fn default() -> Self {
Self::Ioss
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TaxProductRegistrationsResourceCountryOptionsSimplifiedType {
Simplified,
}
impl TaxProductRegistrationsResourceCountryOptionsSimplifiedType {
pub fn as_str(self) -> &'static str {
match self {
TaxProductRegistrationsResourceCountryOptionsSimplifiedType::Simplified => "simplified",
}
}
}
impl AsRef<str> for TaxProductRegistrationsResourceCountryOptionsSimplifiedType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TaxProductRegistrationsResourceCountryOptionsSimplifiedType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TaxProductRegistrationsResourceCountryOptionsSimplifiedType {
fn default() -> Self {
Self::Simplified
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TaxProductRegistrationsResourceCountryOptionsUnitedStatesType {
LocalAmusementTax,
LocalLeaseTax,
StateCommunicationsTax,
StateSalesTax,
}
impl TaxProductRegistrationsResourceCountryOptionsUnitedStatesType {
pub fn as_str(self) -> &'static str {
match self {
TaxProductRegistrationsResourceCountryOptionsUnitedStatesType::LocalAmusementTax => "local_amusement_tax",
TaxProductRegistrationsResourceCountryOptionsUnitedStatesType::LocalLeaseTax => "local_lease_tax",
TaxProductRegistrationsResourceCountryOptionsUnitedStatesType::StateCommunicationsTax => "state_communications_tax",
TaxProductRegistrationsResourceCountryOptionsUnitedStatesType::StateSalesTax => "state_sales_tax",
}
}
}
impl AsRef<str> for TaxProductRegistrationsResourceCountryOptionsUnitedStatesType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TaxProductRegistrationsResourceCountryOptionsUnitedStatesType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TaxProductRegistrationsResourceCountryOptionsUnitedStatesType {
fn default() -> Self {
Self::LocalAmusementTax
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TaxRegistrationStatus {
Active,
Expired,
Scheduled,
}
impl TaxRegistrationStatus {
pub fn as_str(self) -> &'static str {
match self {
TaxRegistrationStatus::Active => "active",
TaxRegistrationStatus::Expired => "expired",
TaxRegistrationStatus::Scheduled => "scheduled",
}
}
}
impl AsRef<str> for TaxRegistrationStatus {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TaxRegistrationStatus {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TaxRegistrationStatus {
fn default() -> Self {
Self::Active
}
}