spreadsheet_ods_formula/
fin.rs

1//!
2//! Financial functions.
3//!
4
5use crate::Any;
6use std::fmt::Write;
7
8pub use crate::generated::fin::*;
9
10#[doc(inline)]
11pub use crate::date::YearFracMethod;
12
13/// Parameter for many fin functions.
14#[derive(Debug)]
15pub enum Frequency {
16    Annual,
17    Semiannual,
18    Quarterly,
19    Monthly,
20}
21
22impl Any for Frequency {
23    fn formula(&self, buf: &mut String) {
24        let _ = write!(
25            buf,
26            "{}",
27            match self {
28                Frequency::Annual => 1,
29                Frequency::Semiannual => 2,
30                Frequency::Quarterly => 4,
31                Frequency::Monthly => 12,
32            }
33        );
34    }
35}
36
37/// Parameter for CUMIPMT()
38#[derive(Debug)]
39pub enum MaturityDate {
40    ///
41    DueAtEnd,
42    ///
43    DueAtBeginning,
44}
45
46impl Any for MaturityDate {
47    fn formula(&self, buf: &mut String) {
48        buf.push_str(match self {
49            MaturityDate::DueAtEnd => "0",
50            MaturityDate::DueAtBeginning => "1",
51        });
52    }
53}
54
55/// Parameter for CUMIPMT()
56#[derive(Debug)]
57pub enum PayType {
58    ///
59    DueAtEnd,
60    ///
61    DueAtBeginning,
62}
63
64impl Any for PayType {
65    fn formula(&self, buf: &mut String) {
66        buf.push_str(match self {
67            PayType::DueAtEnd => "0",
68            PayType::DueAtBeginning => "1",
69        });
70    }
71}