moss_generator 0.4.1 → 0.5.2

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 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: []