Module: Luca::Jp::Util

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

Class Method Summary collapse

Class Method Details

.alphadigit_ja(str) ⇒ Object



24
25
26
# File 'lib/luca/jp/util.rb', line 24

def alphadigit_ja(str)
  str.tr('A-Z0-9\- ', 'A-Z0-9ー ')
end

.beppyo2_config(key) ⇒ Object



83
84
85
# File 'lib/luca/jp/util.rb', line 83

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

.configObject



75
76
77
# File 'lib/luca/jp/util.rb', line 75

def config
  LucaSupport::CONST.config
end

.eltax_config(key) ⇒ Object



98
99
100
# File 'lib/luca/jp/util.rb', line 98

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

.etax_date(date) ⇒ Object



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

def etax_date(date)
  return nil if date.nil?

  "<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



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

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

.gaikyo_config(key) ⇒ Object



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

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



79
80
81
# File 'lib/luca/jp/util.rb', line 79

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

.prepaid_tax(code, customer = nil) ⇒ Object

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



30
31
32
33
34
35
36
# File 'lib/luca/jp/util.rb', line 30

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



38
39
40
41
# File 'lib/luca/jp/util.rb', line 38

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



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

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

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

.tokyo23?Boolean

Returns:

  • (Boolean)


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

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

.uchiwake_account_config(key) ⇒ Object



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

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



51
52
53
54
55
56
57
# File 'lib/luca/jp/util.rb', line 51

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

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



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

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

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



43
44
45
46
47
48
49
# File 'lib/luca/jp/util.rb', line 43

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

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



112
113
114
115
116
117
# File 'lib/luca/jp/util.rb', line 112

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