Module: MercuryBanking::CLI::Reconciliation::ReconciliationStatusCommand

Defined in:
lib/mercury_banking/cli/reconciliation.rb

Overview

Module for reconciliation_status command

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# File 'lib/mercury_banking/cli/reconciliation.rb', line 203

def self.included(base)
  base.class_eval do
    desc 'reconciliation_status ACCOUNT_ID_OR_NUMBER', 'Show reconciliation status for an account'
    method_option :start, type: :string, default: '2020-01-01', desc: 'Start date for transactions (YYYY-MM-DD)'
    method_option :end, type: :string, desc: 'End date for transactions (YYYY-MM-DD)'
    method_option :format, type: :string, default: 'table', enum: %w[table json],
                           desc: 'Output format (table or json)'
    def reconciliation_status()
      with_api_client do |client|
        # Resolve account identifier to account ID
         = (client, )
         = client.()

        # Get transactions for the account
        start_date = options[:start]
        end_date = options[:end]

        transactions = client.get_transactions(, start_date)

        # Filter transactions by date
        transactions = filter_transactions_by_date(transactions, start_date, end_date)

        # Get reconciliation status
        reconciliation = MercuryBanking::Reconciliation.new
        status = reconciliation.get_reconciliation_status(, transactions)
        summary = reconciliation.get_reconciliation_summary(, transactions)

        if options[:json] || options[:format] == 'json'
          puts JSON.pretty_generate({
                                      'account_id' => ,
                                      'account_name' => ['name'],
                                      'summary' => summary,
                                      'transactions' => status
                                    })
        else
          display_reconciliation_table(, status, summary, start_date, end_date)
        end
      end
    end
  end
end