use crate::*;
#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Serialize)]
pub enum Amount {
Cents(SourceAmount),
Uds(f64),
}
impl Default for Amount {
fn default() -> Self {
Self::Cents(SourceAmount::ZERO)
}
}
impl Amount {
pub fn to_cents(self, ud_amount: SourceAmount) -> SourceAmount {
match self {
Amount::Cents(sa) => sa,
Amount::Uds(f64_) => {
if !f64_.is_finite() || f64_ <= 0f64 {
SourceAmount::ZERO
} else {
SourceAmount::new(
f64::round(ud_amount.amount() as f64 * f64_) as i64,
ud_amount.base(),
)
}
}
}
}
}