Skip to main content

tackler_api/reports/
register_report.rs

1/*
2 * Tackler-NG 2025
3 * SPDX-License-Identifier: Apache-2.0
4 */
5use crate::metadata::Metadata;
6use crate::txn_header::TxnHeader;
7use serde::Serialize;
8
9/// Register posting API object
10#[derive(Serialize, Debug)]
11pub struct RegisterPosting {
12    /// Account for register posting
13    pub account: String,
14
15    /// Amount of posting
16    ///
17    /// Commodity Conversion: Original amount before conversion in `base_commodity`
18    pub amount: String,
19
20    /// Running total for that account
21    ///
22    /// Commodity Conversion: In target commodity
23    #[serde(rename = "runningTotal")]
24    pub running_total: String,
25
26    /// Posting commodity
27    ///
28    /// Commodity Conversion: Target commodity
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub commodity: Option<String>,
31
32    /// Commodity Conversion: Rate if valuation is based on Txn Time
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub rate: Option<String>,
35
36    /// Commodity Conversion: Original (source) commodity
37    #[serde(rename = "baseCommodity")]
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub base_commodity: Option<String>,
40
41    /// Posting comments, if any
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub comment: Option<String>,
44}
45
46/// Register transaction API object
47#[derive(Serialize, Debug)]
48pub struct RegisterTxn {
49    /// Txn timestamp in display format
50    /// This is controlled by conf key `report.register.timestamp-style`
51    #[serde(rename = "displayTime")]
52    pub display_time: String,
53    /// Transaction header
54    pub txn: TxnHeader,
55
56    /// Register Txn (entry) postings
57    pub postings: Vec<RegisterPosting>,
58}
59
60/// Register report API object
61#[derive(Serialize, Debug)]
62pub struct RegisterReport {
63    /// Optional metadata
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub metadata: Option<Metadata>,
66
67    /// Title of Balance Report
68    pub title: String,
69
70    /// Balance rows / items
71    pub transactions: Vec<RegisterTxn>,
72}