Module: Luca::Jp::Util

Included in:
Aoiro, Chihouzei, Syouhizei
Defined in:
lib/luca/jp/util.rb

Class Method Summary collapse

Class Method Details

.beppyo2_config(key) ⇒ Object



77
78
79
# File 'lib/luca/jp/util.rb', line 77

def beppyo2_config(key)
  config.dig('jp', 'beppyo2', key)
end

.configObject



69
70
71
# File 'lib/luca/jp/util.rb', line 69

def config
  LucaSupport::CONST.config
end

.eltax_config(key) ⇒ Object



92
93
94
# File 'lib/luca/jp/util.rb', line 92

def eltax_config(key)
  config.dig('jp', 'eltax', key)
end

.etax_date(date) ⇒ Object



65
66
67
# File 'lib/luca/jp/util.rb', line 65

def etax_date(date)
  "<gen:era>#{gengou(date)}</gen:era><gen:yy>#{wareki(date)}</gen:yy><gen:mm>#{date.month}</gen:mm><gen:dd>#{date.day}</gen:dd>"
end

.form_rdf(code) ⇒ Object



55
56
57
# File 'lib/luca/jp/util.rb', line 55

def form_rdf(code)
  "<rdf:li><rdf:description about=\"##{code}\"/></rdf:li>"
end

.gaikyo_config(key) ⇒ Object



81
82
83
# File 'lib/luca/jp/util.rb', line 81

def gaikyo_config(key)
  config.dig('jp', 'gaikyo', key)
end

.gengou(date) ⇒ Object



8
9
10
11
12
13
14
# File 'lib/luca/jp/util.rb', line 8

def gengou(date)
  if date >= Date.new(2019, 5, 1)
    5
  else
    4
  end
end

.it_part_config(key) ⇒ Object



73
74
75
# File 'lib/luca/jp/util.rb', line 73

def it_part_config(key)
  config.dig('jp', 'it_part', key)
end

.prepaid_tax(code, customer = nil) ⇒ Object

TODO: customerオプションを適切に扱うには 納付時にx-customerを付加していないケースの考慮が必要



26
27
28
29
30
31
32
# File 'lib/luca/jp/util.rb', line 26

def prepaid_tax(code, customer = nil)
  search_end = @end_date.prev_day # exclude year end adjustment
  # header = { customer: customer } unless customer.nil?
  header = nil
  amount, _ = self.class.net(@start_date.year, @start_date.month, date_range: @start_date..search_end, code: code, header: header)
  LucaSupport::Code.readable(amount[code] || 0)
end

.refund_tax(code) ⇒ Object



34
35
36
37
# File 'lib/luca/jp/util.rb', line 34

def refund_tax(code)
  credit = credit_amount(code, @start_date.year, @start_date.month, @end_date.year, @end_date.month)
  LucaSupport::Code.readable(credit)
end

.render_attr(code, val) ⇒ Object



59
60
61
62
63
# File 'lib/luca/jp/util.rb', line 59

def render_attr(code, val)
  return '' if val.nil? || val.to_s.length == 0

  "<#{code}>#{val}</#{code}>"
end

.tokyo23?Boolean

Returns:

  • (Boolean)


96
97
98
# File 'lib/luca/jp/util.rb', line 96

def tokyo23?
  @report_category == '23ku'
end

.uchiwake_account_config(key) ⇒ Object



85
86
87
88
89
90
# File 'lib/luca/jp/util.rb', line 85

def (key)
   = config.dig('jp', 'accounts')
  return [] if .nil?

  Array().filter { || /^#{key}/.match(['code'].to_s) }
end

.wareki(date) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/luca/jp/util.rb', line 16

def wareki(date)
  if date >= Date.new(2019, 5, 1)
    date.year - 2018
  else
    date.year - 1988
  end
end

.中間還付税額(税額, 中間納付額) ⇒ Object



47
48
49
50
51
52
53
# File 'lib/luca/jp/util.rb', line 47

def 中間還付税額(税額, 中間納付額)
  if 税額 < 中間納付額
    中間納付額 - 税額
  else
    0
  end
end

.期首期末残高(code) ⇒ Object



100
101
102
103
104
# File 'lib/luca/jp/util.rb', line 100

def 期首期末残高(code)
  pre = readable(@start_balance.dig(code)) || 0
  post = readable(@bs_data.dig(code)) || 0
  [readable(pre), readable(post)]
end

.納付税額(税額, 中間納付額) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/luca/jp/util.rb', line 39

def 納付税額(税額, 中間納付額)
  if 税額 > 中間納付額
    税額 - 中間納付額
  else
    0
  end
end

.純資産期中増減(code) ⇒ Object



106
107
108
109
110
111
# File 'lib/luca/jp/util.rb', line 106

def 純資産期中増減(code)
  inc = credit_amount(code, @start_date.year, @start_date.month, @end_date.year, @end_date.month)
  dec = debit_amount(code, @start_date.year, @start_date.month, @end_date.year, @end_date.month)

  [readable(dec), readable(inc)]
end