Implement GCTransaction and GCTransactionBuffer

AfoHT
Aug 27, 2024, 8:03 PM
5OTWTEPS275OHI3S5XVDEPP4EVBDWWPAAIK2ZDZEUL2CG6KMZFCQC

Dependencies

Change contents

  • edit in src/ica_csv.rs at line 40
    [3.1934]
    [3.1934]
    }
    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
    [3.2711][3.2711:3150]()
    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",
    ])?;
    [3.2711]
    [3.3150]
    wtr.write_record(GCTransaction::headers())?;
  • replacement in src/ica_csv.rs at line 156
    [3.3197][3.3197:3271]()
    let mut transaction_buffer: VecDeque<[String; 18]> = VecDeque::new();
    [3.3197]
    [3.3271]
    let mut transaction_buffer = GCTransactionBuffer::new();
  • replacement in src/ica_csv.rs at line 219
    [3.5752][3.5752:5791]()
    transaction_buffer.push_back([
    [3.5752]
    [3.5791]
    transaction_buffer.push_back(GCTransaction {
  • replacement in src/ica_csv.rs at line 221
    [3.5811][3.5811:5837]()
    record.datum,
    [3.5811]
    [3.5837]
    date: record.datum,
  • replacement in src/ica_csv.rs at line 223
    [3.5889][3.5889:5912]()
    "".into(),
    [3.5889]
    [3.5912]
    transaction_id: "".into(),
  • replacement in src/ica_csv.rs at line 226
    [3.6007][3.6007:6034]()
    1.to_string(),
    [3.6007]
    [3.6034]
    number: 1.to_string(),
  • replacement in src/ica_csv.rs at line 228
    [3.6061][3.6061:6086]()
    record.text,
    [3.6061]
    [3.6086]
    description: Some(record.text.to_owned()),
  • replacement in src/ica_csv.rs at line 231
    [3.6166][3.6166:6319]()
    match amount_balance {
    Some(value) => value.to_string().replace('.', ","),
    None => "".into(),
    },
    [3.6166]
    [3.6319]
    notes: amount_balance.map(|value| value.to_string().replace('.', ",")),
  • replacement in src/ica_csv.rs at line 233
    [3.6343][3.6343:6379]()
    "CURRENCY::SEK".into(),
    [3.6343]
    [3.6379]
    commodity_currency: Some("CURRENCY::SEK".into()),
  • replacement in src/ica_csv.rs at line 235
    [3.6406][3.6406:6429]()
    "".into(),
    [3.6406]
    [3.6429]
    void_reason: None,
  • replacement in src/ica_csv.rs at line 237
    [3.6451][3.6451:6475]()
    record.typ,
    [3.6451]
    [3.6475]
    action: Some(record.typ),
  • replacement in src/ica_csv.rs at line 239
    [3.6495][3.6495:6518]()
    "".into(),
    [3.6495]
    [3.6518]
    memo: None,
  • replacement in src/ica_csv.rs at line 241
    [3.6552][3.6552:6585]()
    account_name.into(),
    [3.6552]
    [3.6585]
    full_account_name: Some(account_name.to_owned()),
  • replacement in src/ica_csv.rs at line 243
    [3.6614][3.6614:6637]()
    "".into(),
    [3.6614]
    [3.6637]
    account_name: None,
  • replacement in src/ica_csv.rs at line 245
    [3.6670][3.6670:6693]()
    "".into(),
    [3.6670]
    [3.6693]
    amount_with_sym: None,
  • replacement in src/ica_csv.rs at line 247
    [3.6720][2.32:55]()
    "".into(),
    [3.6720]
    [3.6774]
    amount_num: None,
  • replacement in src/ica_csv.rs at line 249
    [3.6806][3.6806:6829]()
    "".into(),
    [3.6806]
    [3.6829]
    value_with_sym: None,
  • replacement in src/ica_csv.rs at line 251
    [3.6855][2.56:109]()
    value_num.to_string().replace('.', ","),
    [3.6855]
    [3.6909]
    value_num: Some(value_num),
  • replacement in src/ica_csv.rs at line 253
    [3.6935][3.6935:6959]()
    "n".into(),
    [3.6935]
    [3.6959]
    reconcile: Some("n".to_owned()),
  • replacement in src/ica_csv.rs at line 255
    [3.6990][3.6990:7013]()
    "".into(),
    [3.6990]
    [3.7013]
    reconcile_date: None,
  • replacement in src/ica_csv.rs at line 257
    [3.7040][3.7040:7076]()
    "1".into(),
    ]);
    [3.7040]
    [3.7076]
    rate_price: Some("1".to_string()),
    });
  • replacement in src/ica_csv.rs at line 269
    [3.7275][3.7275:7313]()
    buf: &mut VecDeque<[String; 18]>,
    [3.7275]
    [3.7313]
    buf: &mut GCTransactionBuffer,
  • replacement in src/ica_csv.rs at line 273
    [3.7477][3.7477:7572]()
    let transaction_number = counter + 1;
    row[2] = transaction_number.to_string();
    [3.7477]
    [3.7572]
    row.number = (counter + 1).to_string();
  • replacement in src/ica_csv.rs at line 277
    [3.7676][3.7676:7708]()
    wtr.write_record(row)?;
    [3.7676]
    [3.7708]
    wtr.write_record(row.output())?;