swift_mt_message/fields/common/
balance_field.rs

1use chrono::NaiveDate;
2use serde::{Deserialize, Serialize};
3use swift_mt_message_macros::SwiftField;
4
5/// Generic Balance Field
6///
7/// Used for balance fields with debit/credit indicator, date, currency, and amount.
8#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, SwiftField)]
9pub struct GenericBalanceField {
10    /// Debit/Credit indicator (D, C, RD, RC)
11    #[component("1!a", validate = ["debit_credit_indicator"])]
12    pub indicator: String,
13    /// Date (YYMMDD format)
14    #[component("6!n", validate = ["date_format", "valid_date_range"])]
15    pub date: NaiveDate,
16    /// Currency code (ISO 4217)
17    #[component("3!a", validate = ["currency_code"])]
18    pub currency: String,
19    /// Amount value
20    #[component("15d", validate = ["amount_format"])]
21    pub amount: f64,
22}