use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Account {
#[serde(rename = "id")]
pub id: uuid::Uuid,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "type")]
pub r#type: models::AccountType,
#[serde(rename = "on_budget")]
pub on_budget: bool,
#[serde(rename = "closed")]
pub closed: bool,
#[serde(rename = "note", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub note: Option<Option<String>>,
#[serde(rename = "balance")]
pub balance: i64,
#[serde(rename = "cleared_balance")]
pub cleared_balance: i64,
#[serde(rename = "uncleared_balance")]
pub uncleared_balance: i64,
#[serde(rename = "transfer_payee_id", deserialize_with = "Option::deserialize")]
pub transfer_payee_id: Option<uuid::Uuid>,
#[serde(rename = "direct_import_linked", skip_serializing_if = "Option::is_none")]
pub direct_import_linked: Option<bool>,
#[serde(rename = "direct_import_in_error", skip_serializing_if = "Option::is_none")]
pub direct_import_in_error: Option<bool>,
#[serde(rename = "last_reconciled_at", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub last_reconciled_at: Option<Option<String>>,
#[serde(rename = "debt_original_balance", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub debt_original_balance: Option<Option<i64>>,
#[serde(rename = "debt_interest_rates", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub debt_interest_rates: Option<Option<std::collections::HashMap<String, i64>>>,
#[serde(rename = "debt_minimum_payments", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub debt_minimum_payments: Option<Option<std::collections::HashMap<String, i64>>>,
#[serde(rename = "debt_escrow_amounts", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub debt_escrow_amounts: Option<Option<std::collections::HashMap<String, i64>>>,
#[serde(rename = "deleted")]
pub deleted: bool,
}
impl Account {
pub fn new(id: uuid::Uuid, name: String, r#type: models::AccountType, on_budget: bool, closed: bool, balance: i64, cleared_balance: i64, uncleared_balance: i64, transfer_payee_id: Option<uuid::Uuid>, deleted: bool) -> Account {
Account {
id,
name,
r#type,
on_budget,
closed,
note: None,
balance,
cleared_balance,
uncleared_balance,
transfer_payee_id,
direct_import_linked: None,
direct_import_in_error: None,
last_reconciled_at: None,
debt_original_balance: None,
debt_interest_rates: None,
debt_minimum_payments: None,
debt_escrow_amounts: None,
deleted,
}
}
}