nfse_sjc 0.1.1

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.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +2 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +4 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +22 -0
  8. data/README.md +130 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +7 -0
  11. data/bin/setup +7 -0
  12. data/etc/codegen/_signature.xml.erb +22 -0
  13. data/etc/codegen/cabecalho_v3.xml.erb +6 -0
  14. data/etc/codegen/cancelar_nfse_v3.xml.erb +21 -0
  15. data/etc/codegen/consultar_lote_rps_v3.xml.erb +15 -0
  16. data/etc/codegen/consultar_nfse_rps_v3.xml.erb +18 -0
  17. data/etc/codegen/consultar_nfse_v3.xml.erb +58 -0
  18. data/etc/codegen/consultar_situacao_lote_rps_v3.xml.erb +15 -0
  19. data/etc/codegen/recepcionar_lote_rps_v3.xml.erb +188 -0
  20. data/etc/schemas/cabecalho_v03.xsd +16 -0
  21. data/etc/schemas/servico_cancelar_nfse_envio_v03.xsd +19 -0
  22. data/etc/schemas/servico_cancelar_nfse_resposta_v03.xsd +13 -0
  23. data/etc/schemas/servico_consultar_lote_rps_envio_v03.xsd +23 -0
  24. data/etc/schemas/servico_consultar_lote_rps_resposta_v03.xsd +18 -0
  25. data/etc/schemas/servico_consultar_nfse_envio_v03.xsd +26 -0
  26. data/etc/schemas/servico_consultar_nfse_resposta_v03.xsd +19 -0
  27. data/etc/schemas/servico_consultar_nfse_rps_envio_v03.xsd +23 -0
  28. data/etc/schemas/servico_consultar_nfse_rps_resposta_v03.xsd +13 -0
  29. data/etc/schemas/servico_consultar_situacao_lote_rps_envio_v03.xsd +17 -0
  30. data/etc/schemas/servico_consultar_situacao_lote_rps_resposta_v03.xsd +16 -0
  31. data/etc/schemas/servico_enviar_lote_rps_envio_v03.xsd +14 -0
  32. data/etc/schemas/servico_enviar_lote_rps_resposta_v03.xsd +25 -0
  33. data/etc/schemas/tipos_v03.xsd +545 -0
  34. data/etc/schemas/xmldsig-core-schema20020212_v03.xsd +316 -0
  35. data/lib/nfse_sjc.rb +22 -0
  36. data/lib/nfse_sjc/client.rb +49 -0
  37. data/lib/nfse_sjc/config.rb +31 -0
  38. data/lib/nfse_sjc/dirs.rb +23 -0
  39. data/lib/nfse_sjc/document.rb +67 -0
  40. data/lib/nfse_sjc/errors/validation_error.rb +6 -0
  41. data/lib/nfse_sjc/parser.rb +15 -0
  42. data/lib/nfse_sjc/response_hash.rb +24 -0
  43. data/lib/nfse_sjc/schemas.rb +17 -0
  44. data/lib/nfse_sjc/version.rb +3 -0
  45. data/nfse_sjc.gemspec +32 -0
  46. metadata +175 -0
@@ -0,0 +1,6 @@
1
+ module NfseSjc
2
+ module Errors
3
+ class ValidationError < RuntimeError
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,15 @@
1
+ module NfseSjc
2
+ class Parser
3
+ def initialize
4
+ @nori = Nori.new({
5
+ delete_namespace_attributes: true,
6
+ strip_namespaces: true,
7
+ convert_dashes_to_underscores: true
8
+ })
9
+ end
10
+
11
+ def parse(response)
12
+ ResponseHash.new(@nori.parse(response)).to_deep_symbolized_h
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,24 @@
1
+ module NfseSjc
2
+ class ResponseHash
3
+ def initialize(hash)
4
+ @hash = hash
5
+ end
6
+
7
+ def to_deep_symbolized_h
8
+ @hash.inject(Hash.new) do |h, (k, v)|
9
+ h.merge!({
10
+ k.snakecase.to_sym => (
11
+ case v
12
+ when Hash
13
+ ResponseHash.new(v).to_deep_symbolized_h
14
+ when Array
15
+ v.map{|item| ResponseHash.new(item).to_deep_symbolized_h}
16
+ else
17
+ v
18
+ end
19
+ )
20
+ })
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,17 @@
1
+ module NfseSjc
2
+ module Schemas
3
+ MAPPING = {
4
+ 'cabecalho_v3.xml.erb' => 'cabecalho_v03.xsd',
5
+ 'cancelar_nfse_v3.xml.erb' => 'servico_cancelar_nfse_envio_v03.xsd',
6
+ 'consultar_lote_rps_v3.xml.erb' => 'servico_consultar_lote_rps_envio_v03.xsd',
7
+ 'consultar_nfse_rps_v3.xml.erb' => 'servico_consultar_nfse_rps_envio_v03.xsd',
8
+ 'consultar_nfse_v3.xml.erb' => 'servico_consultar_nfse_envio_v03.xsd',
9
+ 'consultar_situacao_lote_rps_v3.xml.erb' => 'servico_consultar_situacao_lote_rps_envio_v03.xsd',
10
+ 'recepcionar_lote_rps_v3.xml.erb' => 'servico_enviar_lote_rps_envio_v03.xsd'
11
+ }
12
+
13
+ def self.get_schema(template)
14
+ MAPPING[template]
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,3 @@
1
+ module NfseSjc
2
+ VERSION = "0.1.1"
3
+ end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'nfse_sjc/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "nfse_sjc"
8
+ spec.version = NfseSjc::VERSION
9
+ spec.authors = ['Daniel Gracia', 'Thiago Brandão']
10
+ spec.email = ['daniel.santos@redealumni.com', 'thiago@redealumni.com']
11
+
12
+ spec.summary = %q{
13
+ Gerador de NFS-e via API para a prefeitura de São José dos Campos
14
+ }
15
+ spec.description = %q{
16
+ Gem para comunicação via API com o sistema de NFS-e da prefeitura de São José dos Campos
17
+ }
18
+ spec.homepage = "https://github.com/redealumni/nfse-sjc"
19
+
20
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ spec.bindir = "exe"
22
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.require_paths = ["lib"]
24
+
25
+ spec.add_dependency "erubis", "~> 2.7"
26
+ spec.add_dependency "savon", "~> 2.0"
27
+
28
+ spec.add_development_dependency "bundler", "~> 1.10"
29
+ spec.add_development_dependency "rake", "~> 10.0"
30
+ spec.add_development_dependency "rspec"
31
+ spec.add_development_dependency "pry"
32
+ end
metadata ADDED
@@ -0,0 +1,175 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nfse_sjc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Gracia
8
+ - Thiago Brandão
9
+ autorequire:
10
+ bindir: exe
11
+ cert_chain: []
12
+ date: 2018-04-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: erubis
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '2.7'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '2.7'
28
+ - !ruby/object:Gem::Dependency
29
+ name: savon
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '2.0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '2.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: bundler
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.10'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.10'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '10.0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '10.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: pry
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ description: "\n Gem para comunicação via API com o sistema de NFS-e da prefeitura
99
+ de São José dos Campos\n "
100
+ email:
101
+ - daniel.santos@redealumni.com
102
+ - thiago@redealumni.com
103
+ executables: []
104
+ extensions: []
105
+ extra_rdoc_files: []
106
+ files:
107
+ - ".gitignore"
108
+ - ".rspec"
109
+ - ".ruby-version"
110
+ - ".travis.yml"
111
+ - Gemfile
112
+ - LICENSE
113
+ - README.md
114
+ - Rakefile
115
+ - bin/console
116
+ - bin/setup
117
+ - cert/.keep
118
+ - etc/codegen/_signature.xml.erb
119
+ - etc/codegen/cabecalho_v3.xml.erb
120
+ - etc/codegen/cancelar_nfse_v3.xml.erb
121
+ - etc/codegen/consultar_lote_rps_v3.xml.erb
122
+ - etc/codegen/consultar_nfse_rps_v3.xml.erb
123
+ - etc/codegen/consultar_nfse_v3.xml.erb
124
+ - etc/codegen/consultar_situacao_lote_rps_v3.xml.erb
125
+ - etc/codegen/recepcionar_lote_rps_v3.xml.erb
126
+ - etc/schemas/cabecalho_v03.xsd
127
+ - etc/schemas/servico_cancelar_nfse_envio_v03.xsd
128
+ - etc/schemas/servico_cancelar_nfse_resposta_v03.xsd
129
+ - etc/schemas/servico_consultar_lote_rps_envio_v03.xsd
130
+ - etc/schemas/servico_consultar_lote_rps_resposta_v03.xsd
131
+ - etc/schemas/servico_consultar_nfse_envio_v03.xsd
132
+ - etc/schemas/servico_consultar_nfse_resposta_v03.xsd
133
+ - etc/schemas/servico_consultar_nfse_rps_envio_v03.xsd
134
+ - etc/schemas/servico_consultar_nfse_rps_resposta_v03.xsd
135
+ - etc/schemas/servico_consultar_situacao_lote_rps_envio_v03.xsd
136
+ - etc/schemas/servico_consultar_situacao_lote_rps_resposta_v03.xsd
137
+ - etc/schemas/servico_enviar_lote_rps_envio_v03.xsd
138
+ - etc/schemas/servico_enviar_lote_rps_resposta_v03.xsd
139
+ - etc/schemas/tipos_v03.xsd
140
+ - etc/schemas/xmldsig-core-schema20020212_v03.xsd
141
+ - lib/nfse_sjc.rb
142
+ - lib/nfse_sjc/client.rb
143
+ - lib/nfse_sjc/config.rb
144
+ - lib/nfse_sjc/dirs.rb
145
+ - lib/nfse_sjc/document.rb
146
+ - lib/nfse_sjc/errors/validation_error.rb
147
+ - lib/nfse_sjc/parser.rb
148
+ - lib/nfse_sjc/response_hash.rb
149
+ - lib/nfse_sjc/schemas.rb
150
+ - lib/nfse_sjc/version.rb
151
+ - nfse_sjc.gemspec
152
+ homepage: https://github.com/redealumni/nfse-sjc
153
+ licenses: []
154
+ metadata: {}
155
+ post_install_message:
156
+ rdoc_options: []
157
+ require_paths:
158
+ - lib
159
+ required_ruby_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ required_rubygems_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ requirements: []
170
+ rubyforge_project:
171
+ rubygems_version: 2.4.8
172
+ signing_key:
173
+ specification_version: 4
174
+ summary: Gerador de NFS-e via API para a prefeitura de São José dos Campos
175
+ test_files: []