nfse_sjc 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +2 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +130 -0
- data/Rakefile +6 -0
- data/bin/console +7 -0
- data/bin/setup +7 -0
- data/etc/codegen/_signature.xml.erb +22 -0
- data/etc/codegen/cabecalho_v3.xml.erb +6 -0
- data/etc/codegen/cancelar_nfse_v3.xml.erb +21 -0
- data/etc/codegen/consultar_lote_rps_v3.xml.erb +15 -0
- data/etc/codegen/consultar_nfse_rps_v3.xml.erb +18 -0
- data/etc/codegen/consultar_nfse_v3.xml.erb +58 -0
- data/etc/codegen/consultar_situacao_lote_rps_v3.xml.erb +15 -0
- data/etc/codegen/recepcionar_lote_rps_v3.xml.erb +188 -0
- data/etc/schemas/cabecalho_v03.xsd +16 -0
- data/etc/schemas/servico_cancelar_nfse_envio_v03.xsd +19 -0
- data/etc/schemas/servico_cancelar_nfse_resposta_v03.xsd +13 -0
- data/etc/schemas/servico_consultar_lote_rps_envio_v03.xsd +23 -0
- data/etc/schemas/servico_consultar_lote_rps_resposta_v03.xsd +18 -0
- data/etc/schemas/servico_consultar_nfse_envio_v03.xsd +26 -0
- data/etc/schemas/servico_consultar_nfse_resposta_v03.xsd +19 -0
- data/etc/schemas/servico_consultar_nfse_rps_envio_v03.xsd +23 -0
- data/etc/schemas/servico_consultar_nfse_rps_resposta_v03.xsd +13 -0
- data/etc/schemas/servico_consultar_situacao_lote_rps_envio_v03.xsd +17 -0
- data/etc/schemas/servico_consultar_situacao_lote_rps_resposta_v03.xsd +16 -0
- data/etc/schemas/servico_enviar_lote_rps_envio_v03.xsd +14 -0
- data/etc/schemas/servico_enviar_lote_rps_resposta_v03.xsd +25 -0
- data/etc/schemas/tipos_v03.xsd +545 -0
- data/etc/schemas/xmldsig-core-schema20020212_v03.xsd +316 -0
- data/lib/nfse_sjc.rb +22 -0
- data/lib/nfse_sjc/client.rb +49 -0
- data/lib/nfse_sjc/config.rb +31 -0
- data/lib/nfse_sjc/dirs.rb +23 -0
- data/lib/nfse_sjc/document.rb +67 -0
- data/lib/nfse_sjc/errors/validation_error.rb +6 -0
- data/lib/nfse_sjc/parser.rb +15 -0
- data/lib/nfse_sjc/response_hash.rb +24 -0
- data/lib/nfse_sjc/schemas.rb +17 -0
- data/lib/nfse_sjc/version.rb +3 -0
- data/nfse_sjc.gemspec +32 -0
- metadata +175 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f5ef35910f0961211cda900d1896e36c0fa3a554
|
4
|
+
data.tar.gz: 37ed1c8b85aaed78c2cc4449f3a70cdea972ff6e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ec02041fb78a3bda8e226bb6a6616590ee6b083bfb82b0fcc964fe6fa4824032f0505ab05754a60aaa8fe9f524cdfd8e2d319d8d4ea56f44854ea89fad483085
|
7
|
+
data.tar.gz: 83697923ee4a7b44c70ac7cb7f08a7c71072094a104161f7263162cfeb0e8b3adfe7866cff3658f40cfa609d333b61ce7c5a82f4562e262119d10f43b9ca4d4b
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.2.3
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2015 RedeAlumni
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
22
|
+
|
data/README.md
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
# nfse-sjc
|
2
|
+
|
3
|
+
Gem para comunicação via API com o sistema de NFS-e da prefeitura de São José dos Campos
|
4
|
+
|
5
|
+
## Instalação
|
6
|
+
|
7
|
+
Adicione essa linha no Gemfile de sua aplicação:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'nfse_sjc', '~> 0.1'
|
11
|
+
```
|
12
|
+
|
13
|
+
Em seguida, execute:
|
14
|
+
|
15
|
+
$ bundle install
|
16
|
+
|
17
|
+
Ou instale você mesmo utilizando o seguinte comando:
|
18
|
+
|
19
|
+
$ gem install nfse_sjc
|
20
|
+
|
21
|
+
Além disso, é necessário que o `xmlsec` esteja instalado em seu sistema e que seja compatível com a API da versão 1.2.18.
|
22
|
+
|
23
|
+
## Como usar a gem
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
# configuração
|
27
|
+
NfseSjc.config do |c|
|
28
|
+
c.wsdl = 'https://homologacao.ginfes.com.br/ServiceGinfesImpl?wsdl'
|
29
|
+
c.ssl_cert_file = 'CAMINHO_PARA_SEU_CERTIFICADO'
|
30
|
+
c.ssl_cert_key_file = 'CAMINHO_PARA_SUA_CHAVE_PRIVADA'
|
31
|
+
c.ssl_cert_key_password = 'SENHA_CHAVE_PRIVADA'
|
32
|
+
c.log = true
|
33
|
+
c.pretty_print_xml = true
|
34
|
+
c.xmlsec_binary_path = `which xmlsec1`.chomp
|
35
|
+
end
|
36
|
+
|
37
|
+
# chamada de api
|
38
|
+
ginfes = NfseSjc::Client.new
|
39
|
+
|
40
|
+
# enviar lote RPS
|
41
|
+
client.recepcionar_lote_rps_v3({
|
42
|
+
'LoteRps' => {
|
43
|
+
'Id' => '1234',
|
44
|
+
'NumeroLote' => '26',
|
45
|
+
'Cnpj' => 'CNPJ_VALIDO',
|
46
|
+
'InscricaoMunicipal' => 'IM_VALIDA',
|
47
|
+
'ListaRps' => [
|
48
|
+
{
|
49
|
+
'Id' => '1234',
|
50
|
+
'InfRps' => {
|
51
|
+
'IdentificacaoRps' => {
|
52
|
+
'Numero' => '2345',
|
53
|
+
'Serie' => '3456',
|
54
|
+
'Tipo' => '1'
|
55
|
+
},
|
56
|
+
'DataEmissao' => Time.now.strftime('%Y-%m-%dT%H:%M:%S'),
|
57
|
+
'NaturezaOperacao' => '1',
|
58
|
+
'OptanteSimplesNacional' => '2',
|
59
|
+
'IncentivadorCultural' => '2',
|
60
|
+
'Status' => '1', # normal
|
61
|
+
'Servico' => {
|
62
|
+
'Valores' => {
|
63
|
+
'ValorServicos' => '1',
|
64
|
+
'IssRetido' => '2'
|
65
|
+
},
|
66
|
+
'ItemListaServico' => '1.03',
|
67
|
+
'CodigoTributacaoMunicipio' => '20103001',
|
68
|
+
'Discriminacao' => 'Discriminação do serviço',
|
69
|
+
'CodigoMunicipio' => '3549904'
|
70
|
+
},
|
71
|
+
'Prestador' => {
|
72
|
+
'Cnpj' => 'CNPJ_VALIDO',
|
73
|
+
'InscricaoMunicipal' => 'IM_VALIDA'
|
74
|
+
},
|
75
|
+
'Tomador' => {
|
76
|
+
'CpfCnpj' => {
|
77
|
+
'Cpf' => 'CPF_VALIDO'
|
78
|
+
},
|
79
|
+
'RazaoSocial' => 'João da Silva'
|
80
|
+
}
|
81
|
+
}
|
82
|
+
}
|
83
|
+
]
|
84
|
+
}
|
85
|
+
})
|
86
|
+
|
87
|
+
# consultar situação do lote
|
88
|
+
ginfes.consultar_situacao_lote_rps_v3({
|
89
|
+
'Prestador' => {
|
90
|
+
'Cnpj' => 'CNPJ_VALIDO',
|
91
|
+
'InscricaoMunicipal' => 'IM_VALIDA'
|
92
|
+
},
|
93
|
+
'Protocolo' => '5901581'
|
94
|
+
})
|
95
|
+
|
96
|
+
# consultar lote
|
97
|
+
ginfes.consultar_lote_rps_v3({
|
98
|
+
'Prestador' => {
|
99
|
+
'Cnpj' => 'CNPJ_VALIDO',
|
100
|
+
'InscricaoMunicipal' => 'IM_VALIDA'
|
101
|
+
},
|
102
|
+
'Protocolo' => '5901581'
|
103
|
+
})
|
104
|
+
```
|
105
|
+
|
106
|
+
## Certificado e chave
|
107
|
+
|
108
|
+
### Extraindo certificado e chave privada .pem a partir do certificado .pfx
|
109
|
+
|
110
|
+
Para utilizar a gem, é necessário extrair a chave privada e o certificado (ambos em formato .pem) a partir do certificado .pfx, _caso você tenha acesso somente à senha e ao .pfx_.
|
111
|
+
|
112
|
+
Para extrair a chave privada:
|
113
|
+
|
114
|
+
```bash
|
115
|
+
openssl pkcs12 -in certificado.pfx -nocerts -out chave-privada.pem
|
116
|
+
```
|
117
|
+
|
118
|
+
Para extrair o certificado em formato .pem:
|
119
|
+
|
120
|
+
```bash
|
121
|
+
openssl pkcs12 -in certificado.pfx -clcerts -nokeys -out certificado.pem
|
122
|
+
```
|
123
|
+
|
124
|
+
## TODO
|
125
|
+
|
126
|
+
* Ao invés de referenciar o wsdl correto, referenciar se é ambiente de homologação ou produção
|
127
|
+
* Permitir configuração de CNPJ e Inscrição Municipal
|
128
|
+
* API mais high level (classes para resposta, etc)
|
129
|
+
* Tentar substituir o xmlsec por uma solução mais PORO possível
|
130
|
+
* Testes
|
data/Rakefile
ADDED
data/bin/console
ADDED
data/bin/setup
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
<ds:Signature>
|
2
|
+
<ds:SignedInfo>
|
3
|
+
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
|
4
|
+
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1">
|
5
|
+
</ds:SignatureMethod>
|
6
|
+
<ds:Reference URI="">
|
7
|
+
<ds:Transforms>
|
8
|
+
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></ds:Transform>
|
9
|
+
<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:Transform>
|
10
|
+
</ds:Transforms>
|
11
|
+
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
|
12
|
+
<ds:DigestValue></ds:DigestValue>
|
13
|
+
</ds:Reference>
|
14
|
+
</ds:SignedInfo>
|
15
|
+
<ds:SignatureValue></ds:SignatureValue>
|
16
|
+
<ds:KeyInfo>
|
17
|
+
<ds:X509Data>
|
18
|
+
<ds:X509Certificate>
|
19
|
+
</ds:X509Certificate>
|
20
|
+
</ds:X509Data>
|
21
|
+
</ds:KeyInfo>
|
22
|
+
</ds:Signature>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<p:CancelarNfseEnvio
|
3
|
+
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
|
4
|
+
xmlns:p="http://www.ginfes.com.br/servico_cancelar_nfse_envio_v03.xsd"
|
5
|
+
xmlns:p1="http://www.ginfes.com.br/tipos_v03.xsd"
|
6
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
7
|
+
<Pedido>
|
8
|
+
<p1:InfPedidoCancelamento <%= if_param('PedidoCancelamento', 'Id') { |val| "Id='#{ val }'" } %>>
|
9
|
+
<p1:IdentificacaoNfse>
|
10
|
+
<p1:Numero><%= param('PedidoCancelamento', 'IdentificacaoNfse', 'Numero')%></p1:Numero>
|
11
|
+
<p1:Cnpj><%= param('PedidoCancelamento', 'IdentificacaoNfse', 'Cnpj')%></p1:Cnpj>
|
12
|
+
<% if_param('PedidoCancelamento', 'IdentificacaoNfse', 'InscricaoMunicipal') do |val| %>
|
13
|
+
<p1:InscricaoMunicipal><%= val %></p1:InscricaoMunicipal>
|
14
|
+
<% end %>
|
15
|
+
<p1:CodigoMunicipio><%= param('PedidoCancelamento', 'IdentificacaoNfse', 'CodigoMunicipio') %></p1:CodigoMunicipio>
|
16
|
+
</p1:IdentificacaoNfse>
|
17
|
+
<p1:CodigoCancelamento><%= param('PedidoCancelamento', 'CodigoCancelamento') %></p1:CodigoCancelamento>
|
18
|
+
</p1:InfPedidoCancelamento>
|
19
|
+
</Pedido>
|
20
|
+
<%= render '_signature.xml.erb' %>
|
21
|
+
</p:CancelarNfseEnvio>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<p:ConsultarLoteRpsEnvio <%= if_param('Id') { |val| "Id=#{ val }" } %>
|
3
|
+
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
|
4
|
+
xmlns:p="http://www.ginfes.com.br/servico_consultar_lote_rps_envio_v03.xsd"
|
5
|
+
xmlns:p1="http://www.ginfes.com.br/tipos_v03.xsd"
|
6
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
7
|
+
<p:Prestador>
|
8
|
+
<p1:Cnpj><%= param('Prestador', 'Cnpj') %></p1:Cnpj>
|
9
|
+
<% if_param('Prestador', 'InscricaoMunicipal') do |val| %>
|
10
|
+
<p1:InscricaoMunicipal><%= val %></p1:InscricaoMunicipal>
|
11
|
+
<% end %>
|
12
|
+
</p:Prestador>
|
13
|
+
<p:Protocolo><%= param('Protocolo') %></p:Protocolo>
|
14
|
+
<%= render '_signature.xml.erb' %>
|
15
|
+
</p:ConsultarLoteRpsEnvio>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<p:ConsultarNfseRpsEnvio
|
3
|
+
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
|
4
|
+
xmlns:p="http://www.ginfes.com.br/servico_consultar_nfse_rps_envio_v03.xsd"
|
5
|
+
xmlns:p1="http://www.ginfes.com.br/tipos_v03.xsd"
|
6
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
7
|
+
<p:IdentificacaoRps>
|
8
|
+
<p1:Numero><%= params('IdentificacaoRps', 'Numero') %></p1:Numero>
|
9
|
+
<p1:Serie><%= params('IdentificacaoRps', 'Serie') %></p1:Serie>
|
10
|
+
<p1:Tipo><%= params('IdentificacaoRps', 'Tipo') %></p1:Tipo>
|
11
|
+
</p:IdentificacaoRps>
|
12
|
+
<p:Prestador>
|
13
|
+
<p1:Cnpj><%= param('Prestador', 'Cnpj') %></p1:Cnpj>
|
14
|
+
<% if_param('Prestador', 'InscricaoMunicipal') do |val| %>
|
15
|
+
<p1:InscricaoMunicipal><%= val %></p1:InscricaoMunicipal>
|
16
|
+
<% end %>
|
17
|
+
</p:Prestador>
|
18
|
+
</p:ConsultarNfseRpsEnvio>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<p:ConsultarNfseEnvio <%= if_param('Id') { |val| "Id=#{ val }" } %>
|
3
|
+
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
|
4
|
+
xmlns:p="http://www.ginfes.com.br/servico_consultar_nfse_envio_v03.xsd"
|
5
|
+
xmlns:p1="http://www.ginfes.com.br/tipos_v03.xsd"
|
6
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
7
|
+
<p:Prestador>
|
8
|
+
<p1:Cnpj><%= param('Prestador', 'Cnpj') %></p1:Cnpj>
|
9
|
+
<% if_param('Prestador', 'InscricaoMunicipal') do |val| %>
|
10
|
+
<p1:InscricaoMunicipal><%= val %></p1:InscricaoMunicipal>
|
11
|
+
<% end %>
|
12
|
+
</p:Prestador>
|
13
|
+
<% if_param('NumeroNfse') do |val| %>
|
14
|
+
<p:NumeroNfse><%= val %></p:NumeroNfse>
|
15
|
+
<% end %>
|
16
|
+
<% if_param('PeriodoEmissao') do |val| %>
|
17
|
+
<p:PeriodoEmissao>
|
18
|
+
<p:DataInicial><%= param('PeriodoEmissao', 'DataInicial') %></p:DataInicial>
|
19
|
+
<p:DataFinal><%= param('PeriodoEmissao', 'DataFinal') %></p:DataFinal>
|
20
|
+
</p:PeriodoEmissao>
|
21
|
+
<% end %>
|
22
|
+
<% if_param('Tomador') do |val| %>
|
23
|
+
<p:Tomador>
|
24
|
+
<% if_param('Tomador', 'CpfCnpj') do |val| %>
|
25
|
+
<p1:CpfCnpj>
|
26
|
+
<% if_param('Cnpj', with: val) do |cnpj| %>
|
27
|
+
<p1:Cnpj><%= cnpj %></p1:Cnpj>
|
28
|
+
<% end %>
|
29
|
+
<% if_param('Cpf', with: val) do |cpf| %>
|
30
|
+
<p1:Cpf><%= cpf %></p1:Cpf>
|
31
|
+
<% end %>
|
32
|
+
</p1:CpfCnpj>
|
33
|
+
<% end %>
|
34
|
+
<% if_param('Tomador', 'InscricaoMunicipal') do |val| %>
|
35
|
+
<p1:InscricaoMunicipal><%= val %></p1:InscricaoMunicipal>
|
36
|
+
<% end %>
|
37
|
+
</p:Tomador>
|
38
|
+
<% end %>
|
39
|
+
<% if_param('IntermediarioServico') do |val| %>
|
40
|
+
<p:IntermediarioServico>
|
41
|
+
<p1:RazaoSocial><%= param('IntermediarioServico', 'RazaoSocial') %></p1:RazaoSocial>
|
42
|
+
<% if_param('IntermediarioServico', 'CpfCnpj') do |val| %>
|
43
|
+
<p1:CpfCnpj>
|
44
|
+
<% if_param('Cnpj', with: val) do |cnpj| %>
|
45
|
+
<p1:Cnpj><%= cnpj %></p1:Cnpj>
|
46
|
+
<% end %>
|
47
|
+
<% if_param('Cpf', with: val) do |cpf| %>
|
48
|
+
<p1:Cpf><%= cpf %></p1:Cpf>
|
49
|
+
<% end %>
|
50
|
+
</p1:CpfCnpj>
|
51
|
+
<% end %>
|
52
|
+
<% if_param('IntermediarioServico', 'InscricaoMunicipal') do |val| %>
|
53
|
+
<p1:InscricaoMunicipal><%= val %></p1:InscricaoMunicipal>
|
54
|
+
<% end %>
|
55
|
+
</p:IntermediarioServico>
|
56
|
+
<% end %>
|
57
|
+
<%= render '_signature.xml.erb' %>
|
58
|
+
</p:ConsultarNfseEnvio>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<p:ConsultarSituacaoLoteRpsEnvio <%= if_param('Id') { |val| "Id=#{ val }" } %>
|
3
|
+
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
|
4
|
+
xmlns:p="http://www.ginfes.com.br/servico_consultar_situacao_lote_rps_envio_v03.xsd"
|
5
|
+
xmlns:p1="http://www.ginfes.com.br/tipos_v03.xsd"
|
6
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
7
|
+
<p:Prestador>
|
8
|
+
<p1:Cnpj><%= param('Prestador', 'Cnpj') %></p1:Cnpj>
|
9
|
+
<% if_param('Prestador', 'InscricaoMunicipal') do |val| %>
|
10
|
+
<p1:InscricaoMunicipal><%= val %></p1:InscricaoMunicipal>
|
11
|
+
<% end %>
|
12
|
+
</p:Prestador>
|
13
|
+
<p:Protocolo><%= param('Protocolo') %></p:Protocolo>
|
14
|
+
<%= render '_signature.xml.erb' %>
|
15
|
+
</p:ConsultarSituacaoLoteRpsEnvio>
|
@@ -0,0 +1,188 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<p:EnviarLoteRpsEnvio
|
3
|
+
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
|
4
|
+
xmlns:p="http://www.ginfes.com.br/servico_enviar_lote_rps_envio_v03.xsd"
|
5
|
+
xmlns:p1="http://www.ginfes.com.br/tipos_v03.xsd"
|
6
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
7
|
+
<p:LoteRps <%= if_param('LoteRps', 'Id') { |val| "Id='#{ val }'" } %>>
|
8
|
+
<p1:NumeroLote><%= param('LoteRps', 'NumeroLote') %></p1:NumeroLote>
|
9
|
+
<p1:Cnpj><%= param('LoteRps', 'Cnpj') %></p1:Cnpj>
|
10
|
+
<p1:InscricaoMunicipal><%= param('LoteRps', 'InscricaoMunicipal') %></p1:InscricaoMunicipal>
|
11
|
+
<p1:QuantidadeRps><%= param('LoteRps', 'ListaRps').size %></p1:QuantidadeRps>
|
12
|
+
<p1:ListaRps>
|
13
|
+
<% param('LoteRps', 'ListaRps').each do |rps| %>
|
14
|
+
<p1:Rps>
|
15
|
+
<p1:InfRps <%= if_param('Id', with: rps) { |val| "Id='#{ val }'" } %>>
|
16
|
+
<p1:IdentificacaoRps>
|
17
|
+
<p1:Numero><%= param('InfRps', 'IdentificacaoRps', 'Numero', with: rps) %></p1:Numero>
|
18
|
+
<p1:Serie><%= param('InfRps', 'IdentificacaoRps', 'Serie', with: rps) %></p1:Serie>
|
19
|
+
<p1:Tipo><%= param('InfRps', 'IdentificacaoRps', 'Tipo', with: rps) %></p1:Tipo>
|
20
|
+
</p1:IdentificacaoRps>
|
21
|
+
<p1:DataEmissao><%= param('InfRps', 'DataEmissao', with: rps) %></p1:DataEmissao>
|
22
|
+
<p1:NaturezaOperacao><%= param('InfRps', 'NaturezaOperacao', with: rps) %></p1:NaturezaOperacao>
|
23
|
+
<% if_param('InfRps', 'RegimeEspecialTributacao', with: rps) do |val| %>
|
24
|
+
<p1:RegimeEspecialTributacao><%= val %></p1:RegimeEspecialTributacao>
|
25
|
+
<% end %>
|
26
|
+
<p1:OptanteSimplesNacional><%= param('InfRps', 'OptanteSimplesNacional', with: rps) %></p1:OptanteSimplesNacional>
|
27
|
+
<p1:IncentivadorCultural><%= param('InfRps', 'IncentivadorCultural', with: rps) %></p1:IncentivadorCultural>
|
28
|
+
<p1:Status><%= param('InfRps', 'Status', with: rps) %></p1:Status>
|
29
|
+
<% if_param('InfRps', 'RpsSubstituido', with: rps) do |sub| %>
|
30
|
+
<p1:RpsSubstituido>
|
31
|
+
<p1:Numero><%= param('Numero', with: sub) %></p1:Numero>
|
32
|
+
<p1:Serie><%= param('Serie', with: sub) %></p1:Serie>
|
33
|
+
<p1:Tipo><%= param('Tipo', with: sub) %></p1:Tipo>
|
34
|
+
</p1:RpsSubstituido>
|
35
|
+
<% end %>
|
36
|
+
<p1:Servico>
|
37
|
+
<p1:Valores>
|
38
|
+
<% param('InfRps', 'Servico', 'Valores', with: rps).tap do |values| %>
|
39
|
+
<p1:ValorServicos><%= param('ValorServicos', with: values) %></p1:ValorServicos>
|
40
|
+
<p1:IssRetido><%= param('IssRetido', with: values) %></p1:IssRetido>
|
41
|
+
<% if_param('ValorDeducoes', with: values) do |val| %>
|
42
|
+
<p1:ValorDeducoes><%= val %></p1:ValorDeducoes>
|
43
|
+
<% end %>
|
44
|
+
<% if_param('ValorPis', with: values) do |val| %>
|
45
|
+
<p1:ValorPis><%= val %></p1:ValorPis>
|
46
|
+
<% end %>
|
47
|
+
<% if_param('ValorCofins', with: values) do |val| %>
|
48
|
+
<p1:ValorCofins><%= val %></p1:ValorCofins>
|
49
|
+
<% end %>
|
50
|
+
<% if_param('ValorInss', with: values) do |val| %>
|
51
|
+
<p1:ValorInss><%= val %></p1:ValorInss>
|
52
|
+
<% end %>
|
53
|
+
<% if_param('ValorIr', with: values) do |val| %>
|
54
|
+
<p1:ValorIr><%= val %></p1:ValorIr>
|
55
|
+
<% end %>
|
56
|
+
<% if_param('ValorCsll', with: values) do |val| %>
|
57
|
+
<p1:ValorCsll><%= val %></p1:ValorCsll>
|
58
|
+
<% end %>
|
59
|
+
<% if_param('ValorIss', with: values) do |val| %>
|
60
|
+
<p1:ValorIss><%= val %></p1:ValorIss>
|
61
|
+
<% end %>
|
62
|
+
<% if_param('ValorIssRetido', with: values) do |val| %>
|
63
|
+
<p1:ValorIssRetido><%= val %></p1:ValorIssRetido>
|
64
|
+
<% end %>
|
65
|
+
<% if_param('OutrasRetencoes', with: values) do |val| %>
|
66
|
+
<p1:OutrasRetencoes><%= val %></p1:OutrasRetencoes>
|
67
|
+
<% end %>
|
68
|
+
<% if_param('BaseCalculo', with: values) do |val| %>
|
69
|
+
<p1:BaseCalculo><%= val %></p1:BaseCalculo>
|
70
|
+
<% end %>
|
71
|
+
<% if_param('Aliquota', with: values) do |val| %>
|
72
|
+
<p1:Aliquota><%= val %></p1:Aliquota>
|
73
|
+
<% end %>
|
74
|
+
<% if_param('ValorLiquidoNfse', with: values) do |val| %>
|
75
|
+
<p1:ValorLiquidoNfse><%= val %></p1:ValorLiquidoNfse>
|
76
|
+
<% end %>
|
77
|
+
<% if_param('DescontoIncondicionado', with: values) do |val| %>
|
78
|
+
<p1:DescontoIncondicionado><%= val %></p1:DescontoIncondicionado>
|
79
|
+
<% end %>
|
80
|
+
<% if_param('DescontoCondicionado', with: values) do |val| %>
|
81
|
+
<p1:DescontoCondicionado><%= val %></p1:DescontoCondicionado>
|
82
|
+
<% end %>
|
83
|
+
<% end %>
|
84
|
+
</p1:Valores>
|
85
|
+
<p1:ItemListaServico><%= param('InfRps', 'Servico', 'ItemListaServico', with: rps) %></p1:ItemListaServico>
|
86
|
+
<% if_param('InfRps', 'Servico', 'CodigoCnae', with: rps) do |val| %>
|
87
|
+
<p1:CodigoCnae><%= val %></p1:CodigoCnae>
|
88
|
+
<% end %>
|
89
|
+
<% if_param('InfRps', 'Servico', 'CodigoTributacaoMunicipio', with: rps) do |val| %>
|
90
|
+
<p1:CodigoTributacaoMunicipio><%= val %></p1:CodigoTributacaoMunicipio>
|
91
|
+
<% end %>
|
92
|
+
<p1:Discriminacao><%= param('InfRps', 'Servico', 'Discriminacao', with: rps) %></p1:Discriminacao>
|
93
|
+
<p1:CodigoMunicipio><%= param('InfRps', 'Servico', 'CodigoMunicipio', with: rps) %></p1:CodigoMunicipio>
|
94
|
+
</p1:Servico>
|
95
|
+
<p1:Prestador>
|
96
|
+
<p1:Cnpj><%= param('InfRps', 'Prestador', 'Cnpj', with: rps) %></p1:Cnpj>
|
97
|
+
<% if_param('InfRps', 'Prestador', 'InscricaoMunicipal', with: rps) do |val| %>
|
98
|
+
<p1:InscricaoMunicipal><%= val %></p1:InscricaoMunicipal>
|
99
|
+
<% end %>
|
100
|
+
</p1:Prestador>
|
101
|
+
<p1:Tomador>
|
102
|
+
<p1:IdentificacaoTomador>
|
103
|
+
<% if_param('InfRps', 'Tomador', 'CpfCnpj', with: rps) do |val| %>
|
104
|
+
<p1:CpfCnpj>
|
105
|
+
<% if_param('Cnpj', with: val) do |cnpj| %>
|
106
|
+
<p1:Cnpj><%= cnpj %></p1:Cnpj>
|
107
|
+
<% end %>
|
108
|
+
<% if_param('Cpf', with: val) do |cpf| %>
|
109
|
+
<p1:Cpf><%= cpf %></p1:Cpf>
|
110
|
+
<% end %>
|
111
|
+
</p1:CpfCnpj>
|
112
|
+
<% end %>
|
113
|
+
<% if_param('InfRps', 'Tomador', 'InscricaoMunicipal', with: rps) do |val| %>
|
114
|
+
<p1:InscricaoMunicipal><%= val %></p1:InscricaoMunicipal>
|
115
|
+
<% end %>
|
116
|
+
</p1:IdentificacaoTomador>
|
117
|
+
<% if_param('InfRps', 'Tomador', 'RazaoSocial', with: rps) do |val| %>
|
118
|
+
<p1:RazaoSocial><%= val %></p1:RazaoSocial>
|
119
|
+
<% end %>
|
120
|
+
<% if_param('InfRps', 'Tomador', 'Endereco', with: rps) do |endr| %>
|
121
|
+
<p1:Endereco>
|
122
|
+
<% if_param('Endereco', with: endr) do |val| %>
|
123
|
+
<p1:Endereco><%= val %></p1:Endereco>
|
124
|
+
<% end %>
|
125
|
+
<% if_param('NumeroLote', with: endr) do |val| %>
|
126
|
+
<p1:NumeroLote><%= val %></p1:NumeroLote>
|
127
|
+
<% end %>
|
128
|
+
<% if_param('Complemento', with: endr) do |val| %>
|
129
|
+
<p1:Complemento><%= val %></p1:Complemento>
|
130
|
+
<% end %>
|
131
|
+
<% if_param('Bairro', with: endr) do |val| %>
|
132
|
+
<p1:Bairro><%= val %></p1:Bairro>
|
133
|
+
<% end %>
|
134
|
+
<% if_param('CodigoMunicipio', with: endr) do |val| %>
|
135
|
+
<p1:CodigoMunicipio><%= val %></p1:CodigoMunicipio>
|
136
|
+
<% end %>
|
137
|
+
<% if_param('Uf', with: endr) do |val| %>
|
138
|
+
<p1:Uf><%= val %></p1:Uf>
|
139
|
+
<% end %>
|
140
|
+
<% if_param('Cep', with: endr) do |val| %>
|
141
|
+
<p1:Cep><%= val %></p1:Cep>
|
142
|
+
<% end %>
|
143
|
+
</p1:Endereco>
|
144
|
+
<% end %>
|
145
|
+
<% if_param('InfRps', 'Tomador', 'Contato', with: rps) do |cnt| %>
|
146
|
+
<p1:Contato>
|
147
|
+
<% if_param('Telefone', with: cnt) do |val| %>
|
148
|
+
<p1:Telefone><%= val %></p1:Telefone>
|
149
|
+
<% end %>
|
150
|
+
<% if_param('Email', with: cnt) do |val| %>
|
151
|
+
<p1:Email><%= val %></p1:Email>
|
152
|
+
<% end %>
|
153
|
+
</p1:Contato>
|
154
|
+
<% end %>
|
155
|
+
</p1:Tomador>
|
156
|
+
<% if_param('InfRps', 'IntermediarioServico', with: rps) do |is| %>
|
157
|
+
<p1:IntermediarioServico>
|
158
|
+
<% if_param('CpfCnpj', with: is) do |val| %>
|
159
|
+
<p1:CpfCnpj>
|
160
|
+
<% if_param('Cnpj', with: val) do |cnpj| %>
|
161
|
+
<p1:Cnpj><%= cnpj %></p1:Cnpj>
|
162
|
+
<% end %>
|
163
|
+
<% if_param('Cpf', with: val) do |cpf| %>
|
164
|
+
<p1:Cpf><%= cpf %></p1:Cpf>
|
165
|
+
<% end %>
|
166
|
+
</p1:CpfCnpj>
|
167
|
+
<% end %>
|
168
|
+
<% if_param('InscricaoMunicipal', with: is) do |val| %>
|
169
|
+
<p1:InscricaoMunicipal><%= val %></p1:InscricaoMunicipal>
|
170
|
+
<% end %>
|
171
|
+
<% if_param('RazaoSocial', with: is) do |val| %>
|
172
|
+
<p1:RazaoSocial><%= val %></p1:RazaoSocial>
|
173
|
+
<% end %>
|
174
|
+
</p1:IntermediarioServico>
|
175
|
+
<% end %>
|
176
|
+
<% if_param('InfRps', 'ConstrucaoCivil', with: rps) do |cc| %>
|
177
|
+
<p1:ConstrucaoCivil>
|
178
|
+
<p1:CodigoObra><%= param('CodigoObra', with: cc) %></p1:CodigoObra>
|
179
|
+
<p1:Art><%= param('Art', with: cc) %></p1:Art>
|
180
|
+
</p1:ConstrucaoCivil>
|
181
|
+
<% end %>
|
182
|
+
</p1:InfRps>
|
183
|
+
</p1:Rps>
|
184
|
+
<% end %>
|
185
|
+
</p1:ListaRps>
|
186
|
+
</p:LoteRps>
|
187
|
+
<%= render '_signature.xml.erb' %>
|
188
|
+
</p:EnviarLoteRpsEnvio>
|