moss_generator 0.1.5 → 0.2.0

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: ad1ddceb7b906a75ee7db040f6f02daa81743a0740ee9f3c060d6ec91b4fdf29
4
- data.tar.gz: 94c9ba93ab8d08a7db9829cadd1c9e2cc5770777d09015e6bbbfa085aa207cd5
3
+ metadata.gz: 94864f353514bae1dc92e750adda259be65c3834431a20e3cc20a1316585dec9
4
+ data.tar.gz: 2d829fd20c5fa6e1c3a62041f279d04b60a8c4815b090fcf35ab9c3cf0a5904f
5
5
  SHA512:
6
- metadata.gz: 2c550595f24be6127e4555c58320e6e48c331cd17a8e74000ea57fbf7939d53c73c31bb390b3d7f71d84f7b0768f7c823e519a93b2b90bc226f30b6945bbb8af
7
- data.tar.gz: d803e9ec37eceb859a5d726d0a5376659a979039add06b84a2d8ce47dc2cb19a55adbc2be9f7cad0f4f88a7ed00095b430a3dbe641811996f7fbe87fded1f378
6
+ metadata.gz: ca4ffc090bfd23e9f33498f030f0094dcaa02dbf8f4790c62ad6a320b608dd8166a7c65d866877f4c923cbe16f44abdac10ac198e0b81b153e806adefa40fe87
7
+ data.tar.gz: 7a7702bd3cbe463060d88c9e7973ce015a1079dc288467500a9b17fb26d970142791d491f3d6a02f5b0235e2df1ad8fcce0d9b9c091bdb6976dfe241b265b83d
@@ -13,3 +13,6 @@ Layout/LineLength:
13
13
  Metrics/BlockLength:
14
14
  Exclude:
15
15
  - 'spec/**/*'
16
+
17
+ RSpec/NestedGroups:
18
+ Max: 4
@@ -1,16 +1,40 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- moss_generator (0.1.5)
4
+ moss_generator (0.2.0)
5
+ money (~> 6.14)
6
+ valvat (~> 1.1)
5
7
 
6
8
  GEM
7
9
  remote: https://rubygems.org/
8
10
  specs:
11
+ addressable (2.7.0)
12
+ public_suffix (>= 2.0.2, < 5.0)
13
+ akami (1.3.1)
14
+ gyoku (>= 0.4.0)
15
+ nokogiri
9
16
  ast (2.4.1)
17
+ builder (3.2.4)
18
+ concurrent-ruby (1.1.7)
10
19
  diff-lcs (1.4.4)
20
+ gyoku (1.3.1)
21
+ builder (>= 2.1.2)
22
+ httpi (2.4.5)
23
+ rack
24
+ socksify
25
+ i18n (1.8.7)
26
+ concurrent-ruby (~> 1.0)
27
+ money (6.14.0)
28
+ i18n (>= 0.6.4, <= 2)
29
+ nokogiri (1.11.1-x86_64-darwin)
30
+ racc (~> 1.4)
31
+ nori (2.6.0)
11
32
  parallel (1.20.1)
12
33
  parser (3.0.0.0)
13
34
  ast (~> 2.4.1)
35
+ public_suffix (4.0.6)
36
+ racc (1.5.2)
37
+ rack (2.2.3)
14
38
  rainbow (3.0.0)
15
39
  rake (13.0.3)
16
40
  regexp_parser (2.0.3)
@@ -48,7 +72,22 @@ GEM
48
72
  rubocop (~> 1.0)
49
73
  rubocop-ast (>= 1.1.0)
50
74
  ruby-progressbar (1.10.1)
75
+ savon (2.12.1)
76
+ akami (~> 1.2)
77
+ builder (>= 2.1.2)
78
+ gyoku (~> 1.2)
79
+ httpi (~> 2.3)
80
+ nokogiri (>= 1.8.1)
81
+ nori (~> 2.4)
82
+ wasabi (~> 3.4)
83
+ socksify (1.7.1)
51
84
  unicode-display_width (1.7.0)
85
+ valvat (1.1.0)
86
+ savon (>= 2.3.0)
87
+ wasabi (3.6.1)
88
+ addressable
89
+ httpi (~> 2.0)
90
+ nokogiri (>= 1.4.2)
52
91
 
53
92
  PLATFORMS
54
93
  x86_64-darwin-19
@@ -6,4 +6,6 @@ require_relative 'moss_generator/stripe'
6
6
 
7
7
  # Generate CSV-formatted string for MOSS report
8
8
  module MossGenerator
9
+ Money.default_currency = Money::Currency.new('SEK')
10
+ Money.rounding_mode = BigDecimal::ROUND_HALF_UP
9
11
  end
@@ -66,7 +66,7 @@ module MossGenerator
66
66
  [turnover_country,
67
67
  country,
68
68
  format_to_two_decimals(charges.first.vat_rate),
69
- format_to_two_decimals(charges.sum(&:amount)),
69
+ format_to_two_decimals(charges.sum(&:amount_without_vat)),
70
70
  format_to_two_decimals(charges.sum(&:vat_amount))]
71
71
  end
72
72
 
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'moss_generator/vat_rate'
4
+ require 'money'
5
+ require 'valvat/local'
4
6
 
5
7
  module MossGenerator
6
8
  # Parse charge data from single Stripe charge
@@ -9,6 +11,8 @@ module MossGenerator
9
11
 
10
12
  class NoVatRateForCountryError < StandardError; end
11
13
 
14
+ class NotInSwedishKronorError < StandardError; end
15
+
12
16
  attr_reader :charge
13
17
 
14
18
  def initialize(charge)
@@ -21,8 +25,12 @@ module MossGenerator
21
25
  raise NoConsumptionCountryError, "charge: #{charge}"
22
26
  end
23
27
 
24
- def amount
25
- amount_without_vat
28
+ def amount_without_vat
29
+ Money.new(amount_with_vat * percent_without_vat, 'SEK').dollars.to_f
30
+ end
31
+
32
+ def amount_without_vat_cents
33
+ Money.new(amount_with_vat * percent_without_vat, 'SEK').cents
26
34
  end
27
35
 
28
36
  def vat_rate
@@ -30,7 +38,9 @@ module MossGenerator
30
38
  end
31
39
 
32
40
  def vat_amount
33
- amount * vat_rate_calculatable_percent
41
+ Money.new(amount_without_vat_cents * vat_rate_calculatable_percent, 'SEK')
42
+ .dollars
43
+ .to_f
34
44
  end
35
45
 
36
46
  def skippable?
@@ -40,7 +50,9 @@ module MossGenerator
40
50
  private
41
51
 
42
52
  def company?
43
- charge.dig('metadata', 'vat_number').nil? ? false : true
53
+ return false if charge.dig('metadata', 'vat_number').nil?
54
+
55
+ Valvat::Syntax.validate(charge.dig('metadata', 'vat_number'))
44
56
  end
45
57
 
46
58
  def not_completed?
@@ -51,12 +63,13 @@ module MossGenerator
51
63
  charge['refunded']
52
64
  end
53
65
 
54
- def amount_without_vat
55
- amount_with_vat * percent_without_vat
56
- end
57
-
58
66
  def amount_with_vat
59
- charge.dig('balance_transaction', 'amount')
67
+ balance_transaction = charge['balance_transaction']
68
+ currency = balance_transaction['currency']
69
+ return balance_transaction['amount'] if currency == 'sek'
70
+
71
+ raise NotInSwedishKronorError,
72
+ "balance_transaction: #{balance_transaction}"
60
73
  end
61
74
 
62
75
  def percent_without_vat
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MossGenerator
4
- VERSION = '0.1.5'
4
+ VERSION = '0.2.0'
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 Mini One Stop Shop (MOSS) generator.'
12
12
  spec.description = spec.summary
13
13
  spec.homepage = 'https://github.com/standout/moss_generator'
14
14
  spec.license = 'MIT'
@@ -30,8 +30,9 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ['lib']
32
32
 
33
- # Uncomment to register a new dependency of your gem
34
- # spec.add_dependency "example-gem", "~> 1.0"
33
+ # spec.add_dependency to register a new dependency of your gem
34
+ spec.add_dependency 'money', '~> 6.14'
35
+ spec.add_dependency 'valvat', '~> 1.1'
35
36
 
36
37
  # For more information and examples about making a new gem, checkout our
37
38
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,16 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moss_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - frdrkolsson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-15 00:00:00.000000000 Z
12
- dependencies: []
13
- description: Skatteverket Mini One Stop Shop(MOSS) generator.
11
+ date: 2021-01-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: money
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.14'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: valvat
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.1'
41
+ description: Skatteverket Mini One Stop Shop (MOSS) generator.
14
42
  email:
15
43
  - fredrik.olsson@standout.se
16
44
  executables: []
@@ -61,5 +89,5 @@ requirements: []
61
89
  rubygems_version: 3.2.3
62
90
  signing_key:
63
91
  specification_version: 4
64
- summary: Skatteverket Mini One Stop Shop(MOSS) generator.
92
+ summary: Skatteverket Mini One Stop Shop (MOSS) generator.
65
93
  test_files: []