use crate::params::{Object};
use crate::resources::{Address};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxSettings {
pub defaults: TaxProductResourceTaxSettingsDefaults,
pub head_office: Option<TaxProductResourceTaxSettingsHeadOffice>,
pub livemode: bool,
pub status: TaxSettingsStatus,
pub status_details: TaxProductResourceTaxSettingsStatusDetails,
}
impl Object for TaxSettings {
type Id = ();
fn id(&self) -> Self::Id {}
fn object(&self) -> &'static str {
"tax.settings"
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductResourceTaxSettingsDefaults {
pub tax_behavior: Option<TaxProductResourceTaxSettingsDefaultsTaxBehavior>,
pub tax_code: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductResourceTaxSettingsHeadOffice {
pub address: Address,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductResourceTaxSettingsStatusDetails {
#[serde(skip_serializing_if = "Option::is_none")]
pub active: Option<TaxProductResourceTaxSettingsStatusDetailsResourceActive>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pending: Option<TaxProductResourceTaxSettingsStatusDetailsResourcePending>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductResourceTaxSettingsStatusDetailsResourceActive {
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TaxProductResourceTaxSettingsStatusDetailsResourcePending {
pub missing_fields: Option<Vec<String>>,
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TaxProductResourceTaxSettingsDefaultsTaxBehavior {
Exclusive,
Inclusive,
InferredByCurrency,
}
impl TaxProductResourceTaxSettingsDefaultsTaxBehavior {
pub fn as_str(self) -> &'static str {
match self {
TaxProductResourceTaxSettingsDefaultsTaxBehavior::Exclusive => "exclusive",
TaxProductResourceTaxSettingsDefaultsTaxBehavior::Inclusive => "inclusive",
TaxProductResourceTaxSettingsDefaultsTaxBehavior::InferredByCurrency => "inferred_by_currency",
}
}
}
impl AsRef<str> for TaxProductResourceTaxSettingsDefaultsTaxBehavior {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TaxProductResourceTaxSettingsDefaultsTaxBehavior {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TaxProductResourceTaxSettingsDefaultsTaxBehavior {
fn default() -> Self {
Self::Exclusive
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TaxSettingsStatus {
Active,
Pending,
}
impl TaxSettingsStatus {
pub fn as_str(self) -> &'static str {
match self {
TaxSettingsStatus::Active => "active",
TaxSettingsStatus::Pending => "pending",
}
}
}
impl AsRef<str> for TaxSettingsStatus {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TaxSettingsStatus {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TaxSettingsStatus {
fn default() -> Self {
Self::Active
}
}