koprogo_api/application/dto/
expense_dto.rs

1use crate::domain::entities::{ExpenseCategory, PaymentStatus};
2use serde::{Deserialize, Serialize};
3use validator::Validate;
4
5#[derive(Debug, Deserialize, Validate, Clone)]
6pub struct CreateExpenseDto {
7    pub organization_id: String,
8    pub building_id: String,
9    pub category: ExpenseCategory,
10
11    #[validate(length(min = 1))]
12    pub description: String,
13
14    #[validate(range(min = 0.01))]
15    pub amount: f64,
16
17    pub expense_date: String,
18    pub supplier: Option<String>,
19    pub invoice_number: Option<String>,
20}
21
22#[derive(Debug, Serialize)]
23pub struct ExpenseResponseDto {
24    pub id: String,
25    pub building_id: String,
26    pub category: ExpenseCategory,
27    pub description: String,
28    pub amount: f64,
29    pub expense_date: String,
30    pub payment_status: PaymentStatus,
31    pub supplier: Option<String>,
32    pub invoice_number: Option<String>,
33}