steuer 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +50 -0
- data/lib/steuer/data/finanzaemter.yml +1711 -0
- data/lib/steuer/finanzamt_registry.rb +50 -0
- data/lib/steuer/steuernummer.rb +14 -0
- data/lib/steuer/version.rb +1 -1
- data/lib/steuer.rb +1 -0
- metadata +3 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'yaml'
|
|
4
|
+
|
|
5
|
+
module Steuer
|
|
6
|
+
# Lookup of Bundesfinanzamtsnummer (BUFA-Nr, the four-digit prefix of the
|
|
7
|
+
# federal-13 form) to the office's name, backed by the BZSt BUFA-Tabelle
|
|
8
|
+
# bundled in data/finanzaemter.yml.
|
|
9
|
+
#
|
|
10
|
+
# Unlike the structural data in StateMapping, these names go stale: offices
|
|
11
|
+
# merge and get renamed several times a year. Lookups therefore return nil
|
|
12
|
+
# rather than raising, so a number issued after the bundled table's revision
|
|
13
|
+
# still converts -- it just has no name yet.
|
|
14
|
+
module FinanzamtRegistry
|
|
15
|
+
DATA_PATH = File.expand_path('data/finanzaemter.yml', __dir__)
|
|
16
|
+
|
|
17
|
+
class << self
|
|
18
|
+
def name_for(code)
|
|
19
|
+
entries[code.to_s]&.fetch(:name, nil)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def state_for(code)
|
|
23
|
+
entries[code.to_s]&.fetch(:state, nil)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def known?(code)
|
|
27
|
+
entries.key?(code.to_s)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def revision
|
|
31
|
+
data[:revision]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def entries
|
|
35
|
+
@entries ||= data[:finanzaemter].to_h do |code, attrs|
|
|
36
|
+
[code.to_s, { name: attrs['name'], state: attrs['state'] }.freeze]
|
|
37
|
+
end.freeze
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
def data
|
|
43
|
+
@data ||= begin
|
|
44
|
+
loaded = YAML.safe_load_file(DATA_PATH)
|
|
45
|
+
{ revision: loaded['revision'], finanzaemter: loaded['finanzaemter'] || {} }
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
data/lib/steuer/steuernummer.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require_relative 'state_mapping'
|
|
4
|
+
require_relative 'finanzamt_registry'
|
|
4
5
|
|
|
5
6
|
module Steuer
|
|
6
7
|
class Steuernummer
|
|
@@ -76,6 +77,19 @@ module Steuer
|
|
|
76
77
|
StateMapping::STATES[@state_code][:name]
|
|
77
78
|
end
|
|
78
79
|
|
|
80
|
+
# The BUFA-Nr: the leading four digits of the federal-13 form, identifying
|
|
81
|
+
# the issuing Finanzamt (the Empfaenger in an ELSTER transmission).
|
|
82
|
+
def finanzamt_code
|
|
83
|
+
to_federal_13&.slice(0, 4)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def finanzamt_name
|
|
87
|
+
code = finanzamt_code
|
|
88
|
+
return unless code
|
|
89
|
+
|
|
90
|
+
FinanzamtRegistry.name_for(code)
|
|
91
|
+
end
|
|
92
|
+
|
|
79
93
|
def format_type
|
|
80
94
|
@format_type ||= if normalized_input.include?('/')
|
|
81
95
|
:standard
|
data/lib/steuer/version.rb
CHANGED
data/lib/steuer.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: steuer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Olumuyiwa Osiname
|
|
@@ -133,7 +133,9 @@ files:
|
|
|
133
133
|
- LICENSE
|
|
134
134
|
- README.md
|
|
135
135
|
- lib/steuer.rb
|
|
136
|
+
- lib/steuer/data/finanzaemter.yml
|
|
136
137
|
- lib/steuer/errors.rb
|
|
138
|
+
- lib/steuer/finanzamt_registry.rb
|
|
137
139
|
- lib/steuer/state_mapping.rb
|
|
138
140
|
- lib/steuer/steuernummer.rb
|
|
139
141
|
- lib/steuer/version.rb
|