koprogo_api/application/dto/
owner_contribution_dto.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5use crate::domain::entities::{
6 ContributionPaymentMethod, ContributionPaymentStatus, ContributionType, OwnerContribution,
7};
8
9#[derive(Debug, Deserialize, utoipa::ToSchema)]
11#[serde(deny_unknown_fields)]
12pub struct CreateOwnerContributionRequest {
13 pub owner_id: Uuid,
14 pub unit_id: Uuid,
19 pub description: String,
20 pub amount: rust_decimal::Decimal,
21 pub contribution_type: ContributionType,
22 pub contribution_date: DateTime<Utc>,
23 pub account_code: Option<String>,
24}
25
26#[derive(Debug, Deserialize, utoipa::ToSchema)]
28#[serde(deny_unknown_fields)]
29pub struct RecordPaymentRequest {
30 pub payment_date: DateTime<Utc>,
31 pub payment_method: ContributionPaymentMethod,
32 pub payment_reference: Option<String>,
33}
34
35#[derive(Debug, Serialize, utoipa::ToSchema)]
37pub struct OwnerContributionResponse {
38 pub id: Uuid,
39 pub acp_id: Uuid,
41 pub organization_id: Uuid,
42 pub owner_id: Uuid,
43 pub unit_id: Option<Uuid>,
44 pub description: String,
45 pub amount: rust_decimal::Decimal,
46 pub account_code: Option<String>,
47 pub contribution_type: ContributionType,
48 pub contribution_date: DateTime<Utc>,
49 pub payment_date: Option<DateTime<Utc>>,
50 pub payment_method: Option<ContributionPaymentMethod>,
51 pub payment_reference: Option<String>,
52 pub payment_status: ContributionPaymentStatus,
53 pub notes: Option<String>,
54 pub created_at: DateTime<Utc>,
55 pub updated_at: DateTime<Utc>,
56}
57
58impl From<OwnerContribution> for OwnerContributionResponse {
59 fn from(contribution: OwnerContribution) -> Self {
60 Self {
61 id: contribution.id,
62 acp_id: contribution.acp_id,
63 organization_id: contribution.organization_id,
64 owner_id: contribution.owner_id,
65 unit_id: contribution.unit_id,
66 description: contribution.description,
67 amount: contribution.amount,
68 account_code: contribution.account_code,
69 contribution_type: contribution.contribution_type,
70 contribution_date: contribution.contribution_date,
71 payment_date: contribution.payment_date,
72 payment_method: contribution.payment_method,
73 payment_reference: contribution.payment_reference,
74 payment_status: contribution.payment_status,
75 notes: contribution.notes,
76 created_at: contribution.created_at,
77 updated_at: contribution.updated_at,
78 }
79 }
80}