use crate::model::{shared, types};
use serde::{Deserialize, Serialize};
#[derive(PartialEq, Deserialize, Serialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct ExpenseItems {
pub results: Vec<ExpenseItem>,
pub has_more: bool,
}
#[derive(PartialEq, Deserialize, Serialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct ExpenseItem {
pub id: types::UUID,
pub status_id: Status,
pub vendor: String,
pub notes: String,
pub date: types::Date,
pub currency: String,
pub amount: f64,
pub unit_count: Option<i64>,
pub unit_amount: Option<f64>,
pub is_reimbursable: bool,
pub is_billable: bool,
pub invoiced: bool,
pub created_at: types::Timestamp,
pub expense_report: ExpenseReport,
pub expense_category: ExpenseCategory,
pub member: shared::Entity,
pub project: shared::Project,
}
#[derive(PartialEq, Deserialize, Serialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct ExpenseReport {
pub id: types::UUID,
pub title: String,
}
#[derive(PartialEq, Deserialize, Serialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct ExpenseCategory {
pub id: types::UUID,
pub name: String,
pub unit_name: String,
}
#[derive(PartialEq, Deserialize, Serialize, Debug)]
#[serde(rename_all = "snake_case")]
pub enum Status {
NotSubmitted,
PendingApproval,
Approved,
Rejected,
}
#[cfg(test)]
mod tests;