Class: Avmtrf1::Tools::Runner::Forponto::Saldo

Inherits:
EacRubyUtils::Console::DocoptRunner
  • Object
show all
Includes:
EacRubyUtils::Console::Speaker, EacRubyUtils::SimpleCache
Defined in:
lib/avmtrf1/tools/runner/forponto/saldo.rb

Constant Summary collapse

DOC =
<<~DOCOPT
  Calcula saldo de horas atual.

  Usage:
    __PROGRAM__ [options]
    __PROGRAM__ -h | --help

  Options:
    -h --help           Show this screen.
    -d --details        Show details.
DOCOPT

Instance Method Summary collapse

Instance Method Details

#balance_uncachedObject



91
92
93
# File 'lib/avmtrf1/tools/runner/forponto/saldo.rb', line 91

def balance_uncached
  ::Avmtrf1::Forponto::User::Balance.new(context(:user))
end

#end_bannerObject



30
31
32
33
34
# File 'lib/avmtrf1/tools/runner/forponto/saldo.rb', line 30

def end_banner
  infov 'Crédito final', minutes_to_s(balance.credito_left)
  infov 'Débito final', minutes_to_s(balance.debito_left)
  infov 'Saldo final', minutes_to_s(balance.saldo_left)
end

#left_status(mba) ⇒ Object



73
74
75
76
77
78
79
# File 'lib/avmtrf1/tools/runner/forponto/saldo.rb', line 73

def left_status(mba)
  if mba.left.positive? && mba.owner_month.lost
    '[LOST]'.red
  else
    '[OK]'
  end
end

#minutes_to_s(minutes) ⇒ Object



81
82
83
84
85
86
87
88
89
# File 'lib/avmtrf1/tools/runner/forponto/saldo.rb', line 81

def minutes_to_s(minutes)
  signal = ''
  if minutes.negative?
    signal = '-'
    minutes = -minutes
  end
  time = [minutes / 60, minutes % 60].map { |x| x.to_s.rjust(2, '0') }.join(':')
  "#{signal}#{time} / #{signal}#{minutes} minutes"
end

#runObject



23
24
25
26
27
28
# File 'lib/avmtrf1/tools/runner/forponto/saldo.rb', line 23

def run
  balance.months_balances.each do |mb|
    show_balance_month(mb)
  end
  end_banner
end

#show_balance_month(balance_month) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/avmtrf1/tools/runner/forponto/saldo.rb', line 36

def show_balance_month(balance_month)
  infov 'Month', balance_month.month
  show_month_attr_balance(balance_month.credito, 'Crédito')
  show_month_attr_balance(balance_month.debito, 'Débito')
  infov '  * After trigger', minutes_to_s(balance_month.after_trigger)
  infov '  * After trigger acum.', minutes_to_s(balance_month.after_trigger_acum)
end

#show_month_attr_balance(mba, label) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/avmtrf1/tools/runner/forponto/saldo.rb', line 44

def show_month_attr_balance(mba, label)
  infov "  * #{label}", minutes_to_s(mba.initial_value)
  return unless options.fetch('--details')

  show_month_withdrawals(mba)
  show_month_requests(mba)
  show_month_end_resume(mba)
end

#show_month_end_resume(mba) ⇒ Object



67
68
69
70
71
# File 'lib/avmtrf1/tools/runner/forponto/saldo.rb', line 67

def show_month_end_resume(mba)
  infov '     * Left', minutes_to_s(mba.left) + ' ' + left_status(mba)
  infov '     * After trigger', minutes_to_s(mba.after_trigger)
  infov '     * After trigger acum.', minutes_to_s(mba.after_trigger_acum)
end

#show_month_requests(mba) ⇒ Object



60
61
62
63
64
65
# File 'lib/avmtrf1/tools/runner/forponto/saldo.rb', line 60

def show_month_requests(mba)
  infov '     * Requests', mba.requests.count
  mba.requests.each do |r|
    infov "       * #{r.month.month}", minutes_to_s(r.value)
  end
end

#show_month_withdrawals(mba) ⇒ Object



53
54
55
56
57
58
# File 'lib/avmtrf1/tools/runner/forponto/saldo.rb', line 53

def show_month_withdrawals(mba)
  infov '     * Withdrawals', mba.withdrawals.count
  mba.withdrawals.each do |w|
    infov "       * #{w.month.month}", minutes_to_s(w.value)
  end
end