Made function params more concise.
This commit is contained in:
parent
9891d14820
commit
8e7a903669
|
@ -53,7 +53,8 @@ pub fn import_and_process_final(
|
|||
|
||||
csv_import_accts_txns::import_from_csv(
|
||||
input_file_path,
|
||||
settings,
|
||||
settings.input_file_uses_iso_date_style,
|
||||
&settings.input_file_date_separator,
|
||||
&mut raw_account_map,
|
||||
&mut account_map,
|
||||
&mut action_records_map,
|
||||
|
@ -75,7 +76,7 @@ pub fn import_and_process_final(
|
|||
println!(" Created lots and movements.");
|
||||
|
||||
import_cost_proceeds_etc::add_cost_basis_to_movements(
|
||||
&settings,
|
||||
&settings.home_currency,
|
||||
&raw_account_map,
|
||||
&account_map,
|
||||
&action_records_map,
|
||||
|
@ -98,7 +99,8 @@ pub fn import_and_process_final(
|
|||
println!(" Applying like-kind treatment through cut-off date: {}.", settings.lk_cutoff_date);
|
||||
|
||||
import_cost_proceeds_etc::apply_like_kind_treatment(
|
||||
&settings,
|
||||
&settings.home_currency,
|
||||
settings.lk_cutoff_date,
|
||||
&raw_account_map,
|
||||
&account_map,
|
||||
&action_records_map,
|
||||
|
|
|
@ -11,7 +11,6 @@ use std::path::PathBuf;
|
|||
use chrono::NaiveDate;
|
||||
use decimal::d128;
|
||||
|
||||
use crate::core_functions::{ImportProcessParameters};
|
||||
use crate::transaction::{Transaction, ActionRecord};
|
||||
use crate::account::{Account, RawAccount};
|
||||
use crate::decimal_utils::{round_d128_1e8};
|
||||
|
@ -19,7 +18,8 @@ use crate::decimal_utils::{round_d128_1e8};
|
|||
|
||||
pub fn import_from_csv(
|
||||
import_file_path: PathBuf,
|
||||
settings: &ImportProcessParameters,
|
||||
iso_date_style: bool,
|
||||
separator: &String,
|
||||
raw_acct_map: &mut HashMap<u16, RawAccount>,
|
||||
acct_map: &mut HashMap<u16, Account>,
|
||||
action_records: &mut HashMap<u32, ActionRecord>,
|
||||
|
@ -46,7 +46,8 @@ pub fn import_from_csv(
|
|||
|
||||
import_transactions(
|
||||
&mut rdr,
|
||||
settings,
|
||||
iso_date_style,
|
||||
&separator,
|
||||
action_records,
|
||||
transactions_map,
|
||||
)?;
|
||||
|
@ -141,7 +142,8 @@ The next column's value should be 2, then 3, etc, until the final account).";
|
|||
|
||||
fn import_transactions(
|
||||
rdr: &mut csv::Reader<File>,
|
||||
settings: &ImportProcessParameters,
|
||||
iso_date_style: bool,
|
||||
separator: &String,
|
||||
action_records: &mut HashMap<u32, ActionRecord>,
|
||||
txns_map: &mut HashMap<u32, Transaction>,
|
||||
) -> Result<(), Box<dyn Error>> {
|
||||
|
@ -230,9 +232,6 @@ fn import_transactions(
|
|||
let format_yy: String;
|
||||
let format_yyyy: String;
|
||||
|
||||
let iso_date_style = settings.input_file_uses_iso_date_style;
|
||||
let separator = &settings.input_file_date_separator;
|
||||
|
||||
if iso_date_style {
|
||||
format_yyyy = "%Y".to_owned() + separator + "%m" + separator + "%d";
|
||||
format_yy = "%y".to_owned() + separator + "%m" + separator + "%d";
|
||||
|
@ -244,8 +243,9 @@ fn import_transactions(
|
|||
let tx_date = NaiveDate::parse_from_str(this_tx_date, &format_yy)
|
||||
.unwrap_or_else(|_| NaiveDate::parse_from_str(this_tx_date, &format_yyyy)
|
||||
.expect("
|
||||
Failed to parse date in input file. Check date the separator character, which is expected to be a hyphen \
|
||||
unless otherwise set via environment variable or .env file. See `.env.example.`\n")
|
||||
Failed to parse date in input file. Confirm your choice of the separator character, which is expected to be a hyphen \
|
||||
unless otherwise set via command line flag, environment variable or .env file. Also confirm your choice of dating format \
|
||||
whether it be American (%m-%d-%y) or ISO (%y-%m-%d). Run with `--help` or see `.env.example.`\n")
|
||||
);
|
||||
|
||||
let transaction = Transaction {
|
||||
|
@ -261,7 +261,7 @@ Failed to parse date in input file. Check date the separator character, which is
|
|||
};
|
||||
|
||||
if changed_action_records > 0 {
|
||||
println!(" Changed actionrecord amounts: {}. Changed txn numbers: {:?}.", changed_action_records, changed_txn_num);
|
||||
println!(" Changed actionrecord amounts due to rounding precision: {}. Changed txn numbers: {:?}.", changed_action_records, changed_txn_num);
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
|
|
@ -4,15 +4,15 @@
|
|||
use std::collections::{HashMap};
|
||||
use std::error::Error;
|
||||
|
||||
use chrono::NaiveDate;
|
||||
use decimal::d128;
|
||||
|
||||
use crate::transaction::{Transaction, TxType, ActionRecord, Polarity};
|
||||
use crate::account::{Account, RawAccount};
|
||||
use crate::decimal_utils::{round_d128_1e2};
|
||||
use crate::core_functions::{ImportProcessParameters};
|
||||
|
||||
pub(crate) fn add_cost_basis_to_movements(
|
||||
settings: &ImportProcessParameters,
|
||||
home_currency: &String,
|
||||
raw_acct_map: &HashMap<u16, RawAccount>,
|
||||
acct_map: &HashMap<u16, Account>,
|
||||
ars: &HashMap<u32, ActionRecord>,
|
||||
|
@ -37,7 +37,7 @@ pub(crate) fn add_cost_basis_to_movements(
|
|||
|
||||
let polarity = ar.direction();
|
||||
let tx_type = txn.transaction_type(ars, raw_acct_map, acct_map)?;
|
||||
let is_home_curr = raw_acct.is_home_currency(&settings.home_currency);
|
||||
let is_home_curr = raw_acct.is_home_currency(home_currency);
|
||||
let mvmt_copy = mvmt.clone();
|
||||
let borrowed_mvmt = mvmt_copy.clone();
|
||||
// println!("Txn: {} on {} of type: {:?}",
|
||||
|
@ -90,7 +90,7 @@ pub(crate) fn add_cost_basis_to_movements(
|
|||
let other_acct = acct_map.get(&other_ar.account_key).unwrap();
|
||||
let raw_other_acct = raw_acct_map.get(&other_acct.raw_key).unwrap();
|
||||
assert_eq!(other_ar.direction(), Polarity::Outgoing);
|
||||
let other_ar_is_home_curr = raw_other_acct.is_home_currency(&settings.home_currency);
|
||||
let other_ar_is_home_curr = raw_other_acct.is_home_currency(home_currency);
|
||||
|
||||
if other_ar_is_home_curr {
|
||||
mvmt.cost_basis.set(-(other_ar.amount));
|
||||
|
@ -265,7 +265,8 @@ pub(crate) fn add_proceeds_to_movements(
|
|||
}
|
||||
|
||||
pub(crate) fn apply_like_kind_treatment(
|
||||
settings: &ImportProcessParameters,
|
||||
home_currency: &String,
|
||||
cutoff_date: NaiveDate,
|
||||
raw_acct_map: &HashMap<u16, RawAccount>,
|
||||
acct_map: &HashMap<u16, Account>,
|
||||
ars: &HashMap<u32, ActionRecord>,
|
||||
|
@ -273,16 +274,16 @@ pub(crate) fn apply_like_kind_treatment(
|
|||
) -> Result<(), Box<dyn Error>> {
|
||||
|
||||
let length = txns_map.len();
|
||||
let cutoff_date = settings.lk_cutoff_date;
|
||||
|
||||
for txn_num in 1..=length {
|
||||
|
||||
let txn_num = txn_num as u32;
|
||||
let txn = txns_map.get(&(txn_num)).unwrap();
|
||||
|
||||
update_current_txn_for_prior_likekind_treatment(txn_num, &settings, &raw_acct_map, &acct_map, &ars, &txns_map)?;
|
||||
update_current_txn_for_prior_likekind_treatment(txn_num, home_currency, &raw_acct_map, &acct_map, &ars, &txns_map)?;
|
||||
|
||||
if txn.date <= cutoff_date {
|
||||
perform_likekind_treatment_on_txn(txn_num, &settings, &raw_acct_map, &acct_map, &ars, &txns_map)?;
|
||||
perform_likekind_treatment_on_txn(txn_num, home_currency, &raw_acct_map, &acct_map, &ars, &txns_map)?;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -291,7 +292,7 @@ pub(crate) fn apply_like_kind_treatment(
|
|||
|
||||
fn update_current_txn_for_prior_likekind_treatment(
|
||||
txn_num: u32,
|
||||
settings: &ImportProcessParameters,
|
||||
home_currency: &String,
|
||||
raw_acct_map: &HashMap<u16, RawAccount>,
|
||||
acct_map: &HashMap<u16, Account>,
|
||||
ars: &HashMap<u32, ActionRecord>,
|
||||
|
@ -312,7 +313,7 @@ fn update_current_txn_for_prior_likekind_treatment(
|
|||
|
||||
let polarity = ar.direction();
|
||||
let tx_type = txn.transaction_type(ars, raw_acct_map, acct_map)?;
|
||||
let is_home_curr = raw_acct.is_home_currency(&settings.home_currency);
|
||||
let is_home_curr = raw_acct.is_home_currency(home_currency);
|
||||
|
||||
let mvmt_copy = mvmt.clone();
|
||||
let borrowed_mvmt = mvmt_copy.clone();
|
||||
|
@ -381,7 +382,7 @@ fn update_current_txn_for_prior_likekind_treatment(
|
|||
|
||||
fn perform_likekind_treatment_on_txn(
|
||||
txn_num: u32,
|
||||
settings: &ImportProcessParameters,
|
||||
home_currency: &String,
|
||||
raw_acct_map: &HashMap<u16, RawAccount>,
|
||||
acct_map: &HashMap<u16, Account>,
|
||||
ars: &HashMap<u32, ActionRecord>,
|
||||
|
@ -390,7 +391,6 @@ fn perform_likekind_treatment_on_txn(
|
|||
|
||||
let txn = txns_map.get(&txn_num).unwrap();
|
||||
let tx_type = txn.transaction_type(ars, raw_acct_map, acct_map)?;
|
||||
let home_currency = &settings.home_currency;
|
||||
|
||||
match tx_type {
|
||||
|
||||
|
|
Loading…
Reference in New Issue