use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct SepaPaymentInfo {
#[serde(rename = "rail")]
pub rail: Rail,
#[serde(rename = "addressingSystem")]
pub addressing_system: AddressingSystem,
#[serde(rename = "accountHolderGivenName")]
pub account_holder_given_name: String,
#[serde(rename = "accountHolderSurname")]
pub account_holder_surname: String,
#[serde(
rename = "accountHolderCountry",
skip_serializing_if = "Option::is_none"
)]
pub account_holder_country: Option<String>,
#[serde(
rename = "accountHolderAddress",
skip_serializing_if = "Option::is_none"
)]
pub account_holder_address: Option<String>,
#[serde(rename = "iban")]
pub iban: String,
#[serde(rename = "country")]
pub country: String,
#[serde(rename = "bic", skip_serializing_if = "Option::is_none")]
pub bic: Option<String>,
#[serde(rename = "bankName", skip_serializing_if = "Option::is_none")]
pub bank_name: Option<String>,
#[serde(rename = "bankBranch", skip_serializing_if = "Option::is_none")]
pub bank_branch: Option<String>,
#[serde(rename = "bankAddress", skip_serializing_if = "Option::is_none")]
pub bank_address: Option<String>,
#[serde(rename = "purposeCode", skip_serializing_if = "Option::is_none")]
pub purpose_code: Option<String>,
#[serde(rename = "taxId", skip_serializing_if = "Option::is_none")]
pub tax_id: Option<String>,
}
impl SepaPaymentInfo {
pub fn new(
rail: Rail,
addressing_system: AddressingSystem,
account_holder_given_name: String,
account_holder_surname: String,
iban: String,
country: String,
) -> SepaPaymentInfo {
SepaPaymentInfo {
rail,
addressing_system,
account_holder_given_name,
account_holder_surname,
account_holder_country: None,
account_holder_address: None,
iban,
country,
bic: None,
bank_name: None,
bank_branch: None,
bank_address: None,
purpose_code: None,
tax_id: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Rail {
#[serde(rename = "SEPA")]
Sepa,
}
impl Default for Rail {
fn default() -> Rail {
Self::Sepa
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum AddressingSystem {
#[serde(rename = "IBAN")]
Iban,
}
impl Default for AddressingSystem {
fn default() -> AddressingSystem {
Self::Iban
}
}