use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct UsageBasedPrice {
#[serde(rename = "currency")]
pub currency: models::Currency,
#[serde(rename = "discount")]
pub discount: i64,
#[serde(rename = "fixed_price")]
pub fixed_price: i32,
#[serde(rename = "meters", skip_serializing_if = "Option::is_none")]
pub meters: Option<Vec<models::AddMeterToPrice>>,
#[serde(rename = "payment_frequency_count")]
pub payment_frequency_count: i32,
#[serde(rename = "payment_frequency_interval")]
pub payment_frequency_interval: models::TimeInterval,
#[serde(rename = "purchasing_power_parity")]
pub purchasing_power_parity: bool,
#[serde(rename = "subscription_period_count")]
pub subscription_period_count: i32,
#[serde(rename = "subscription_period_interval")]
pub subscription_period_interval: models::TimeInterval,
#[serde(rename = "tax_inclusive", skip_serializing_if = "Option::is_none")]
pub tax_inclusive: Option<bool>,
#[serde(rename = "type")]
pub r#type: Type,
}
impl UsageBasedPrice {
pub fn new(currency: models::Currency, discount: i64, fixed_price: i32, payment_frequency_count: i32, payment_frequency_interval: models::TimeInterval, purchasing_power_parity: bool, subscription_period_count: i32, subscription_period_interval: models::TimeInterval, r#type: Type) -> UsageBasedPrice {
UsageBasedPrice {
currency,
discount,
fixed_price,
meters: None,
payment_frequency_count,
payment_frequency_interval,
purchasing_power_parity,
subscription_period_count,
subscription_period_interval,
tax_inclusive: None,
r#type,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
#[serde(rename = "usage_based_price")]
UsageBasedPrice,
}
impl Default for Type {
fn default() -> Type {
Self::UsageBasedPrice
}
}