lago_types/models/
credit_note.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4use strum_macros::{Display, EnumString};
5use uuid::Uuid;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct CreditNote {
13 pub lago_id: Uuid,
15 pub sequential_id: i32,
17 pub number: String,
19 pub lago_invoice_id: Uuid,
21 pub invoice_number: String,
23 pub issuing_date: String,
25 pub credit_status: Option<CreditNoteCreditStatus>,
27 pub refund_status: Option<CreditNoteRefundStatus>,
29 pub reason: CreditNoteReason,
31 pub description: Option<String>,
33 pub currency: String,
35 pub total_amount_cents: i64,
37 pub taxes_amount_cents: i64,
39 pub taxes_rate: f64,
41 pub sub_total_excluding_taxes_amount_cents: i64,
43 pub balance_amount_cents: i64,
45 pub credit_amount_cents: i64,
47 pub refund_amount_cents: i64,
49 pub coupons_adjustment_amount_cents: i64,
51 pub file_url: Option<String>,
53 pub self_billed: Option<bool>,
55 pub created_at: DateTime<Utc>,
57 pub updated_at: DateTime<Utc>,
59 pub items: Option<Vec<CreditNoteItem>>,
61 pub applied_taxes: Option<Vec<CreditNoteAppliedTax>>,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize, Display, EnumString, PartialEq, Eq)]
67#[serde(rename_all = "snake_case")]
68#[strum(serialize_all = "snake_case")]
69pub enum CreditNoteCreditStatus {
70 Available,
71 Consumed,
72 Voided,
73}
74
75#[derive(Debug, Clone, Serialize, Deserialize, Display, EnumString, PartialEq, Eq)]
77#[serde(rename_all = "snake_case")]
78#[strum(serialize_all = "snake_case")]
79pub enum CreditNoteRefundStatus {
80 Pending,
81 Succeeded,
82 Failed,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize, Display, EnumString, PartialEq, Eq)]
87#[serde(rename_all = "snake_case")]
88#[strum(serialize_all = "snake_case")]
89pub enum CreditNoteReason {
90 DuplicatedCharge,
91 ProductUnsatisfactory,
92 OrderChange,
93 OrderCancellation,
94 FraudulentCharge,
95 Other,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct CreditNoteItem {
101 pub lago_id: Uuid,
103 pub amount_cents: i64,
105 pub amount_currency: String,
107 pub fee: Option<Value>,
109}
110
111#[derive(Debug, Clone, Serialize, Deserialize)]
113pub struct CreditNoteAppliedTax {
114 pub lago_id: Option<Uuid>,
116 pub lago_tax_id: Option<Uuid>,
118 pub lago_credit_note_id: Option<Uuid>,
120 pub tax_name: Option<String>,
122 pub tax_code: Option<String>,
124 pub tax_rate: Option<f64>,
126 pub tax_description: Option<String>,
128 pub amount_cents: Option<i64>,
130 pub amount_currency: Option<String>,
132 pub base_amount_cents: Option<i64>,
134 pub created_at: Option<DateTime<Utc>>,
136}