Implement GCTransaction and GCTransactionBuffer
Dependencies
- [2]
GFBOF5P6Tune amount/value - [3]
LX2NJJ2BFix typo: exorts -> exports - [4]
CBUAVZ6Xclippy: fix cfg - [5]
5USC3DZ3Split out CSV into a module
Change contents
- edit in src/ica_csv.rs at line 40
}impl GCTransaction {fn headers() -> [String; 18] {["Date".to_owned(),"Transaction ID".to_owned(),"Number".to_owned(),"Description".to_owned(),"Notes".to_owned(),"Commodity/Currency".to_owned(),"Void Reason".to_owned(),"Action".to_owned(),"Memo".to_owned(),"Full Account Name".to_owned(),"Account Name".to_owned(),"Amount With Sym.".to_owned(),"Amount Num".to_owned(),"Value With Sym.".to_owned(),"Value Num".to_owned(),"Reconcile".to_owned(),"Reconcile Date".to_owned(),"Rate/Price".to_owned(),]}fn output(&self) -> [String; 18] {[self.date.clone(),self.transaction_id.clone(),self.number.clone(),self.description.clone().unwrap_or_default(),self.notes.clone().unwrap_or_default(),self.commodity_currency.clone().unwrap_or_default(),self.void_reason.clone().unwrap_or_default(),self.action.clone().unwrap_or_default(),self.memo.clone().unwrap_or_default(),self.full_account_name.clone().unwrap_or_default(),self.account_name.clone().unwrap_or_default(),self.amount_with_sym.clone().unwrap_or_default(),match self.amount_num {Some(amount_num) => amount_num.to_string().replace('.', ","),None => "".to_owned(),},self.value_with_sym.clone().unwrap_or_default(),match &self.value_num {Some(value_num) => value_num.to_string().replace('.', ","),None => "".to_owned(),},self.reconcile.clone().unwrap_or_default(),self.reconcile_date.clone().unwrap_or_default(),self.rate_price.clone().unwrap_or_default(),]}}struct GCTransactionBuffer {transactions: VecDeque<GCTransaction>,}impl GCTransactionBuffer {fn new() -> Self {Self {transactions: VecDeque::new(),}}fn push_back(&mut self, gctransaction: GCTransaction) {self.transactions.push_back(gctransaction);}fn push_front(&mut self, gctransaction: GCTransaction) {self.transactions.push_front(gctransaction);}fn pop_back(&mut self) -> Option<GCTransaction> {self.transactions.pop_back()}fn pop_front(&mut self) -> Option<GCTransaction> {self.transactions.pop_front()}fn iter_mut(&mut self) -> std::collections::vec_deque::IterMut<GCTransaction> {self.transactions.iter_mut()}fn iter(&self) -> std::collections::vec_deque::Iter<GCTransaction> {self.transactions.iter()} - replacement in src/ica_csv.rs at line 152
wtr.write_record(["Date","Transaction ID","Number","Description","Notes","Commodity/Currency","Void Reason","Action","Memo","Full Account Name","Account Name","Amount With Sym.","Amount Num","Value With Sym.","Value Num","Reconcile","Reconcile Date","Rate/Price",])?;wtr.write_record(GCTransaction::headers())?; - replacement in src/ica_csv.rs at line 156
let mut transaction_buffer: VecDeque<[String; 18]> = VecDeque::new();let mut transaction_buffer = GCTransactionBuffer::new(); - replacement in src/ica_csv.rs at line 219
transaction_buffer.push_back([transaction_buffer.push_back(GCTransaction { - replacement in src/ica_csv.rs at line 221
record.datum,date: record.datum, - replacement in src/ica_csv.rs at line 223
"".into(),transaction_id: "".into(), - replacement in src/ica_csv.rs at line 226
1.to_string(),number: 1.to_string(), - replacement in src/ica_csv.rs at line 228
record.text,description: Some(record.text.to_owned()), - replacement in src/ica_csv.rs at line 231
match amount_balance {Some(value) => value.to_string().replace('.', ","),None => "".into(),},notes: amount_balance.map(|value| value.to_string().replace('.', ",")), - replacement in src/ica_csv.rs at line 233
"CURRENCY::SEK".into(),commodity_currency: Some("CURRENCY::SEK".into()), - replacement in src/ica_csv.rs at line 235
"".into(),void_reason: None, - replacement in src/ica_csv.rs at line 237
record.typ,action: Some(record.typ), - replacement in src/ica_csv.rs at line 239
"".into(),memo: None, - replacement in src/ica_csv.rs at line 241
account_name.into(),full_account_name: Some(account_name.to_owned()), - replacement in src/ica_csv.rs at line 243
"".into(),account_name: None, - replacement in src/ica_csv.rs at line 245
"".into(),amount_with_sym: None, - replacement in src/ica_csv.rs at line 247
"".into(),amount_num: None, - replacement in src/ica_csv.rs at line 249
"".into(),value_with_sym: None, - replacement in src/ica_csv.rs at line 251
value_num.to_string().replace('.', ","),value_num: Some(value_num), - replacement in src/ica_csv.rs at line 253
"n".into(),reconcile: Some("n".to_owned()), - replacement in src/ica_csv.rs at line 255
"".into(),reconcile_date: None, - replacement in src/ica_csv.rs at line 257
"1".into(),]);rate_price: Some("1".to_string()),}); - replacement in src/ica_csv.rs at line 269
buf: &mut VecDeque<[String; 18]>,buf: &mut GCTransactionBuffer, - replacement in src/ica_csv.rs at line 273
let transaction_number = counter + 1;row[2] = transaction_number.to_string();row.number = (counter + 1).to_string(); - replacement in src/ica_csv.rs at line 277
wtr.write_record(row)?;wtr.write_record(row.output())?;