moss_generator 0.4.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ad3786bac36f09eb868b05288e7cf8303f296f717d0c6e0cfdc4679d5340f687
4
- data.tar.gz: e39c8296c61fec69eb1bf102743767e4171ce36a8f3dac140cbb95b58121f2f0
3
+ metadata.gz: 7f95b7ed0d7074f3ca87040394af09e0ba85bdd2f68eb70dcec3166027c2b204
4
+ data.tar.gz: 8f333d25b73c6c3b03941bd15e7dd0ee8b96d35f0ad7469c99e8ca2512bfa142
5
5
  SHA512:
6
- metadata.gz: 976a67a9a004a2e6c2c3613826cd5ba8670b08064985426f6aa47b00838e1037e0088890e9a0a626cdf6a91ddbbc8318eb35c4454cce362f49bd6c777b084ccb
7
- data.tar.gz: e4d6e7b8976351ad93433c843d41176358ca43f60950b546e89600a992d75e00c091ed9d602c3490fecd3057a403bd0cdc3dc077f0da7fdf91fcae6bf7f7a7ec
6
+ metadata.gz: a2d2cdc21fa1fc84da5561cf73b506d79f25c034d3f12d68eea7b4e9bca20fb46a2c7a2709c6d7ad9dce49b717308dabfaf251f7fdb8f6e476750b026ac67eda
7
+ data.tar.gz: ba490e2a77965cbf52957977482e85ba6011f2374fa9c223abb8f528311d56a4f677f6b6f6841fa1b2d83978698739d7c787ca072b619af00a324343c0ca3936
data/.rubocop.yml CHANGED
@@ -10,9 +10,12 @@ AllCops:
10
10
  Layout/LineLength:
11
11
  Max: 80
12
12
 
13
+ Metrics/ParameterLists:
14
+ Max: 6
15
+
13
16
  Metrics/BlockLength:
14
17
  Exclude:
15
18
  - 'spec/**/*'
16
19
 
17
20
  RSpec/NestedGroups:
18
- Max: 4
21
+ Max: 5
data/Gemfile.lock CHANGED
@@ -1,15 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- moss_generator (0.4.1)
5
- countries (~> 3.1)
4
+ moss_generator (0.5.2)
5
+ countries (~> 4.0)
6
6
  money (~> 6.14)
7
7
  valvat (~> 1.1)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- addressable (2.7.0)
12
+ addressable (2.8.0)
13
13
  public_suffix (>= 2.0.2, < 5.0)
14
14
  akami (1.3.1)
15
15
  gyoku (>= 0.4.0)
@@ -18,24 +18,27 @@ GEM
18
18
  builder (3.2.4)
19
19
  byebug (11.1.3)
20
20
  coderay (1.1.3)
21
- concurrent-ruby (1.1.8)
22
- countries (3.1.0)
23
- i18n_data (~> 0.11.0)
21
+ concurrent-ruby (1.1.9)
22
+ countries (4.0.1)
23
+ i18n_data (~> 0.13.0)
24
24
  sixarm_ruby_unaccent (~> 1.1)
25
- unicode_utils (~> 1.4)
26
25
  diff-lcs (1.4.4)
27
26
  gyoku (1.3.1)
28
27
  builder (>= 2.1.2)
29
- httpi (2.4.5)
28
+ httpi (2.5.0)
30
29
  rack
31
30
  socksify
32
- i18n (1.8.10)
31
+ i18n (1.8.11)
33
32
  concurrent-ruby (~> 1.0)
34
- i18n_data (0.11.0)
33
+ i18n_data (0.13.0)
35
34
  method_source (1.0.0)
36
- money (6.14.1)
35
+ mini_portile2 (2.6.1)
36
+ money (6.16.0)
37
37
  i18n (>= 0.6.4, <= 2)
38
- nokogiri (1.11.3-x86_64-darwin)
38
+ nokogiri (1.12.5)
39
+ mini_portile2 (~> 2.6.1)
40
+ racc (~> 1.4)
41
+ nokogiri (1.12.5-x86_64-darwin)
39
42
  racc (~> 1.4)
40
43
  nori (2.6.0)
41
44
  parallel (1.20.1)
@@ -48,7 +51,7 @@ GEM
48
51
  byebug (~> 11.0)
49
52
  pry (~> 0.13.0)
50
53
  public_suffix (4.0.6)
51
- racc (1.5.2)
54
+ racc (1.6.0)
52
55
  rack (2.2.3)
53
56
  rainbow (3.0.0)
54
57
  rake (13.0.3)
@@ -98,8 +101,7 @@ GEM
98
101
  sixarm_ruby_unaccent (1.2.0)
99
102
  socksify (1.7.1)
100
103
  unicode-display_width (1.7.0)
101
- unicode_utils (1.4.0)
102
- valvat (1.1.0)
104
+ valvat (1.1.2)
103
105
  savon (>= 2.3.0)
104
106
  wasabi (3.6.1)
105
107
  addressable
@@ -107,6 +109,7 @@ GEM
107
109
  nokogiri (>= 1.4.2)
108
110
 
109
111
  PLATFORMS
112
+ ruby
110
113
  x86_64-darwin-19
111
114
 
112
115
  DEPENDENCIES
@@ -8,18 +8,19 @@ module MossGenerator
8
8
  class Stripe
9
9
  class NoTurnoverCountryError < StandardError; end
10
10
 
11
- attr_reader :charges, :vat_number, :period, :year, :rates
11
+ attr_reader :charges, :vat_number, :period, :year, :rates, :sale_type
12
12
 
13
- def initialize(charges, vat_number, period, year, rates)
13
+ def initialize(charges, vat_number, period, year, rates, sale_type)
14
14
  @charges = charges
15
15
  @vat_number = vat_number
16
16
  @period = period
17
17
  @year = year
18
18
  @rates = rates
19
+ @sale_type = sale_type
19
20
  end
20
21
 
21
- def self.call(charges, vat_number, period, year, rates)
22
- new(charges, vat_number, period, year, rates).call
22
+ def self.call(charges, vat_number, period, year, rates, sale_type)
23
+ new(charges, vat_number, period, year, rates, sale_type).call
23
24
  end
24
25
 
25
26
  def call
@@ -33,7 +34,7 @@ module MossGenerator
33
34
  private
34
35
 
35
36
  def first_row
36
- ['MOSS_001']
37
+ ['OSS_001']
37
38
  end
38
39
 
39
40
  def second_row
@@ -51,24 +52,27 @@ module MossGenerator
51
52
 
52
53
  charge_row
53
54
  end.compact
54
- charges_rows.group_by(&:country_code)
55
+ charges_rows.group_by do |row|
56
+ [row.country_code, row.vat_rate]
57
+ end
55
58
  end
56
59
 
57
60
  def build_charges_rows
58
- group_charges_rows.map do |country, charges|
61
+ group_charges_rows.map do |(country, vat), charges|
59
62
  next if country == 'SE' && turnover_country == 'SE'
60
- next if charges.first.vat_rate.nil?
63
+ next if vat.nil?
61
64
 
62
- country_row(country, charges)
65
+ country_row(country, charges, vat)
63
66
  end.compact
64
67
  end
65
68
 
66
- def country_row(country, charges)
69
+ def country_row(country, charges, vat)
67
70
  [turnover_country,
68
- country,
69
- format_to_two_decimals(charges.first.vat_rate),
71
+ country_code(country),
72
+ format_to_two_decimals(vat),
70
73
  format_to_two_decimals(charges.sum(&:amount_without_vat)),
71
- format_to_two_decimals(charges.sum(&:vat_amount))]
74
+ format_to_two_decimals(charges.sum(&:vat_amount)),
75
+ sale_type]
72
76
  end
73
77
 
74
78
  def csv_options
@@ -83,6 +87,12 @@ module MossGenerator
83
87
  ';'
84
88
  end
85
89
 
90
+ def country_code(country)
91
+ return 'EL' if country == 'GR'
92
+
93
+ country
94
+ end
95
+
86
96
  def format_to_two_decimals(number)
87
97
  format('%.2f', number).sub('.', ',')
88
98
  end
@@ -36,7 +36,7 @@ module MossGenerator
36
36
  end
37
37
 
38
38
  def vat_rate
39
- @vat_rate = MossGenerator::VatRate.for(country_code)
39
+ @vat_rate = special_vat_rate_for_2021_quarter_one
40
40
  end
41
41
 
42
42
  def vat_amount
@@ -56,6 +56,17 @@ module MossGenerator
56
56
 
57
57
  private
58
58
 
59
+ def special_vat_rate_for_2021_quarter_one
60
+ if fetch_country_code.casecmp?('IE')
61
+ changeover_day = Date.parse('2021-03-01').to_time
62
+ return 23 if Time.at(charge['created']) >= changeover_day
63
+
64
+ 21
65
+ else
66
+ MossGenerator::VatRate.for(country_code)
67
+ end
68
+ end
69
+
59
70
  def company?
60
71
  return false if charge.dig('metadata', 'vat_number').nil?
61
72
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MossGenerator
4
- VERSION = '0.4.1'
4
+ VERSION = '0.5.2'
5
5
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ['frdrkolsson']
9
9
  spec.email = ['fredrik.olsson@standout.se']
10
10
 
11
- spec.summary = 'Skatteverket Mini One Stop Shop (MOSS) generator.'
11
+ spec.summary = 'Skatteverket One Stop Shop (OSS) generator.'
12
12
  spec.description = spec.summary
13
13
  spec.homepage = 'https://github.com/standout/moss_generator'
14
14
  spec.license = 'MIT'
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.require_paths = ['lib']
32
32
 
33
33
  # spec.add_dependency to register a new dependency of your gem
34
- spec.add_dependency 'countries', '~> 3.1'
34
+ spec.add_dependency 'countries', '~> 4.0'
35
35
  spec.add_dependency 'money', '~> 6.14'
36
36
  spec.add_dependency 'valvat', '~> 1.1'
37
37
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moss_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - frdrkolsson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-14 00:00:00.000000000 Z
11
+ date: 2022-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: countries
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.1'
19
+ version: '4.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.1'
26
+ version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: money
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- description: Skatteverket Mini One Stop Shop (MOSS) generator.
69
+ description: Skatteverket One Stop Shop (OSS) generator.
70
70
  email:
71
71
  - fredrik.olsson@standout.se
72
72
  executables: []
@@ -115,8 +115,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  requirements: []
118
- rubygems_version: 3.2.3
118
+ rubygems_version: 3.2.32
119
119
  signing_key:
120
120
  specification_version: 4
121
- summary: Skatteverket Mini One Stop Shop (MOSS) generator.
121
+ summary: Skatteverket One Stop Shop (OSS) generator.
122
122
  test_files: []