br_nfe 2.3.0 → 2.3.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/lib/br_nfe/product/nota_fiscal.rb +36 -27
- data/lib/br_nfe/product/xml/v2_00/infNFe/NFe.xml.slim +4 -2
- data/lib/br_nfe/service/response/build/invoice_build.rb +6 -9
- data/lib/br_nfe/service/response/nota_fiscal.rb +5 -5
- data/lib/br_nfe/service/rps.rb +19 -24
- data/lib/br_nfe/service/simpliss/v1/xml/_tc_dados_servico.xml.slim +1 -1
- data/lib/br_nfe/service/xml/v1/_tc_dados_servico.xml.slim +1 -1
- data/lib/br_nfe/version.rb +1 -1
- data/lib/config/settings/nfe/v3_10/soap_client.yml +3 -0
- data/test/br_nfe/product/operation/nfe_autorizacao_test.rb +16 -10
- data/test/br_nfe/product/operation/nfe_recepcao_evento_test.rb +10 -8
- data/test/br_nfe/service/betha/v1/consulta_lote_rps_test.rb +7 -7
- data/test/br_nfe/service/betha/v1/consulta_nfs_por_rps_test.rb +8 -8
- data/test/br_nfe/service/betha/v1/consulta_nfse_test.rb +7 -7
- data/test/br_nfe/service/simpliss/v1/consulta_lote_rps_test.rb +7 -7
- data/test/br_nfe/service/simpliss/v1/consulta_nfs_por_rps_test.rb +8 -8
- data/test/br_nfe/service/simpliss/v1/consulta_nfse_test.rb +5 -5
- data/test/br_nfe/service/thema/v1/consulta_nfse_test.rb +8 -8
- data/test/factories/service/rps.rb +0 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ecb37b783880ee4dca0729df8c6ef2202691ed9a
|
4
|
+
data.tar.gz: 3300b9040e1c731b77493a9858bdd510126ae9cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 45cf266202c458e4676336b0ea6ab8c501b2ed3493e54cc63b5318281f90910d6189997fe071ce46b31c5a68d6668819406481578051ac05c3169300c9c4732b
|
7
|
+
data.tar.gz: 38ed413b426bb5291596874060a7bb0e51805924b0579e4bb5eb330689f3e02b79ae405ec384e26f1f4a5f2f7f4ba664a5279bedc2fa85dc8addcb4669d51853
|
data/Gemfile.lock
CHANGED
@@ -4,7 +4,11 @@ module BrNfe
|
|
4
4
|
# include BrNfe::Association::HaveCondicaoPagamento
|
5
5
|
|
6
6
|
# Identificação do emitente da NF-e
|
7
|
-
#
|
7
|
+
# Versão do XML
|
8
|
+
attr_accessor :versao
|
9
|
+
|
10
|
+
# Identificação do emitente da NF-e
|
11
|
+
#
|
8
12
|
# <b>Type: </b> _BrNfe.emitente_product_class
|
9
13
|
# <b>Required: </b> _Yes_
|
10
14
|
# <b>tag: </b> emit
|
@@ -14,22 +18,22 @@ module BrNfe
|
|
14
18
|
|
15
19
|
# Identificação do Destinatário da NF-e
|
16
20
|
# Grupo obrigatório para a NF-e (modelo 55)
|
17
|
-
#
|
21
|
+
#
|
18
22
|
# <b>Type: </b> _BrNfe.destinatario_product_class_
|
19
23
|
# <b>Required: </b> _Yes_ (No if modelo_nf == 65)
|
20
24
|
# <b>tag: </b> dest
|
21
25
|
#
|
22
26
|
has_one :destinatario, 'BrNfe.destinatario_product_class', null: false
|
23
27
|
alias_attribute :dest, :destinatario
|
24
|
-
|
28
|
+
|
25
29
|
# Código do Tipo de Emissão da NF-e
|
26
30
|
# ✓ 1=Emissão normal (não em contingência);
|
27
31
|
# ✓ 6=Contingência SVC-AN (SEFAZ Virtual de Contingência do AN);
|
28
32
|
# ✓ 7=Contingência SVC-RS (SEFAZ Virtual de Contingência do RS);
|
29
|
-
# ✓ 9=Contingência off-line da NFC-e (as demais opções de contingência são válidas
|
33
|
+
# ✓ 9=Contingência off-line da NFC-e (as demais opções de contingência são válidas
|
30
34
|
# também para a NFC-e).
|
31
35
|
# Para a NFC-e somente estão disponíveis e são válidas as opções de contingência 5 e 9.
|
32
|
-
#
|
36
|
+
#
|
33
37
|
# <b>Type: </b> _Number_
|
34
38
|
# <b>Required: </b> _Yes_
|
35
39
|
# <b>Default: </b> _1_
|
@@ -53,11 +57,11 @@ module BrNfe
|
|
53
57
|
end
|
54
58
|
|
55
59
|
|
56
|
-
# Código numérico que compõe a Chave de Acesso. Número aleatório gerado pelo
|
60
|
+
# Código numérico que compõe a Chave de Acesso. Número aleatório gerado pelo
|
57
61
|
# emitente para cada NF-e para evitar acessos indevidos da NF-e.
|
58
62
|
# Resumo: É um código controlado pelo sistema. Pode por exemplo ser
|
59
63
|
# utilizado o ID da tabela da nota fiscal.
|
60
|
-
#
|
64
|
+
#
|
61
65
|
# <b>Type: </b> _Number_
|
62
66
|
# <b>Required: </b> _Yes_
|
63
67
|
# <b>Default: </b> _nil_
|
@@ -67,9 +71,9 @@ module BrNfe
|
|
67
71
|
attr_accessor :codigo_nf
|
68
72
|
alias_attribute :cNF, :codigo_nf
|
69
73
|
|
70
|
-
|
74
|
+
|
71
75
|
# Série do Documento Fiscal, preencher com zeros na hipótese
|
72
|
-
# de a NF-e não possuir série. (v2.0)
|
76
|
+
# de a NF-e não possuir série. (v2.0)
|
73
77
|
# Série 890-899: uso exclusivo para emissão de NF-e avulsa, pelo
|
74
78
|
# contribuinte com seu certificado digital, através do site do Fisco
|
75
79
|
# (procEmi=2). (v2.0)
|
@@ -185,7 +189,7 @@ module BrNfe
|
|
185
189
|
# 3=DANFE Simplificado;
|
186
190
|
# 4=DANFE NFC-e;
|
187
191
|
# 5=DANFE NFC-e em mensagem eletrônica (o envio de mensagem eletrônica pode
|
188
|
-
# ser feita de forma simultânea com a impressão do DANFE; usar o tpImp=5
|
192
|
+
# ser feita de forma simultânea com a impressão do DANFE; usar o tpImp=5
|
189
193
|
# quando esta for a única forma de disponibilização do DANFE).
|
190
194
|
#
|
191
195
|
# <b>Required: </b> _Yes_
|
@@ -226,7 +230,7 @@ module BrNfe
|
|
226
230
|
end
|
227
231
|
alias_attribute :indFinal, :consumidor_final
|
228
232
|
|
229
|
-
# Indicador de presença do comprador no estabelecimento comercial no
|
233
|
+
# Indicador de presença do comprador no estabelecimento comercial no
|
230
234
|
# momento da operação:
|
231
235
|
# 0=Não se aplica (por exemplo, Nota Fiscal complementar ou de ajuste);
|
232
236
|
# 1=Operação presencial;
|
@@ -274,7 +278,7 @@ module BrNfe
|
|
274
278
|
#
|
275
279
|
has_one :endereco_retirada, 'BrNfe.endereco_class'
|
276
280
|
alias_attribute :retirada, :endereco_retirada
|
277
|
-
|
281
|
+
|
278
282
|
# CPF ou CNPJ do local de retirada da mercadoria.
|
279
283
|
# Só é obrigatório se o endereco_retirada for preenchido
|
280
284
|
#
|
@@ -300,7 +304,7 @@ module BrNfe
|
|
300
304
|
#
|
301
305
|
has_one :endereco_entrega, 'BrNfe.endereco_class'
|
302
306
|
alias_attribute :entrega, :endereco_entrega
|
303
|
-
|
307
|
+
|
304
308
|
# CPF ou CNPJ do local de entrega da mercadoria.
|
305
309
|
# Só é obrigatório se o endereco_entrega for preenchido
|
306
310
|
#
|
@@ -348,7 +352,7 @@ module BrNfe
|
|
348
352
|
# No caso desta GEM, a fatura contém o Array de duplicatas.
|
349
353
|
# Ex:
|
350
354
|
# self.fatura.duplicatas
|
351
|
-
# => [#<::Cobranca::Duplicata:0x00000006302b80 ...>, #<::Cobranca::Duplicata:0x00000046465bw4 ...>]
|
355
|
+
# => [#<::Cobranca::Duplicata:0x00000006302b80 ...>, #<::Cobranca::Duplicata:0x00000046465bw4 ...>]
|
352
356
|
#
|
353
357
|
# <b>Type: </b> _BrNfe.fatura_product_class_
|
354
358
|
# <b>Required: </b> _No_
|
@@ -359,11 +363,11 @@ module BrNfe
|
|
359
363
|
has_one :fatura, 'BrNfe.fatura_product_class'
|
360
364
|
alias_attribute :cobranca, :fatura
|
361
365
|
alias_attribute :cobr, :fatura
|
362
|
-
|
366
|
+
|
363
367
|
# Array com as informações dos pagamentos
|
364
368
|
# IMPORTANTE: Utilizado apenas para NFC-e
|
365
369
|
#
|
366
|
-
# Pode ser adicionado os dados dos pagamentos em forma de `Hash`
|
370
|
+
# Pode ser adicionado os dados dos pagamentos em forma de `Hash`
|
367
371
|
# ou o próprio objeto da classe BrNfe.pagamento_product_class.
|
368
372
|
#
|
369
373
|
# Exemplo com Hash:
|
@@ -698,7 +702,7 @@ module BrNfe
|
|
698
702
|
validates :total_servicos_cofins, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
|
699
703
|
|
700
704
|
# DATA DA PRESTAÇÃO DO SERVIÇO
|
701
|
-
#
|
705
|
+
#
|
702
706
|
#
|
703
707
|
# <b>Type: </b> _Date_
|
704
708
|
# <b>Required: </b> _Yes_ apenas se tiver algum serviço nos itens
|
@@ -775,9 +779,9 @@ module BrNfe
|
|
775
779
|
validates :total_servicos_iss_retido, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
|
776
780
|
|
777
781
|
# CÓDIGO DO REGIME ESPECIAL DE TRIBUTAÇÃO
|
778
|
-
# 1 = Microempresa Municipal;
|
782
|
+
# 1 = Microempresa Municipal;
|
779
783
|
# 2 = Estimativa;
|
780
|
-
# 3 = Sociedade de Profissionais;
|
784
|
+
# 3 = Sociedade de Profissionais;
|
781
785
|
# 4 = Cooperativa;
|
782
786
|
# 5 = Microempresário Individual (MEI);
|
783
787
|
# 6 = Microempresário e Empresa de Pequeno Porte (ME/EPP)
|
@@ -957,6 +961,11 @@ module BrNfe
|
|
957
961
|
# Utilizado para setar o XML da nfe na resposta
|
958
962
|
attr_accessor :xml
|
959
963
|
|
964
|
+
# Utilizado para setar o XML da tag <infNFe>
|
965
|
+
# Serve apenas se deseja pegar apenas a informação da NF-e sem a assinatura.
|
966
|
+
#
|
967
|
+
attr_accessor :xml_inf_nfe
|
968
|
+
|
960
969
|
# PROTOCOLO / NÚMERO DO RECIBO
|
961
970
|
# Número do Recibo gerado pelo Portal da
|
962
971
|
# Secretaria de Fazenda Estadual
|
@@ -973,7 +982,7 @@ module BrNfe
|
|
973
982
|
alias_attribute :digVal, :digest_value
|
974
983
|
|
975
984
|
# DATA E HORA DO PROCESSAMENTO DA REQUISIÇÃO
|
976
|
-
#
|
985
|
+
#
|
977
986
|
attr_accessor :processed_at
|
978
987
|
def processed_at
|
979
988
|
convert_to_time(@processed_at)
|
@@ -1012,7 +1021,7 @@ module BrNfe
|
|
1012
1021
|
# - :canceled - Quando a nota fiscal foi cancelada.
|
1013
1022
|
# - :denied - Quando a nota fiscal foi denegada e o XML deve ser guardado.
|
1014
1023
|
# - :rejected - Quando a nota fiscal foi rejeitada e pode ser enviada novamente com as correções.
|
1015
|
-
#
|
1024
|
+
#
|
1016
1025
|
attr_accessor :situation
|
1017
1026
|
def situation
|
1018
1027
|
@situation ||= get_situation_by_status_code
|
@@ -1040,7 +1049,7 @@ module BrNfe
|
|
1040
1049
|
|
1041
1050
|
def default_values
|
1042
1051
|
{
|
1043
|
-
versao_aplicativo: 0,
|
1052
|
+
versao_aplicativo: 0,
|
1044
1053
|
natureza_operacao: 'Venda',
|
1045
1054
|
forma_pagamento: 0, # 0=À vista
|
1046
1055
|
modelo_nf: 55, #NF-e
|
@@ -1059,7 +1068,7 @@ module BrNfe
|
|
1059
1068
|
|
1060
1069
|
validates :codigo_tipo_emissao, presence: true
|
1061
1070
|
validates :codigo_tipo_emissao, inclusion: [1, 6, 7, 9, '1', '6', '7', '9']
|
1062
|
-
|
1071
|
+
|
1063
1072
|
validates :codigo_nf, presence: true
|
1064
1073
|
validates :codigo_nf, numericality: { only_integer: true }
|
1065
1074
|
validates :codigo_nf, length: { maximum: 8 }
|
@@ -1072,7 +1081,7 @@ module BrNfe
|
|
1072
1081
|
validates :numero_nf, presence: true
|
1073
1082
|
validates :numero_nf, numericality: { only_integer: true }
|
1074
1083
|
validates :numero_nf, length: { maximum: 9 }
|
1075
|
-
|
1084
|
+
|
1076
1085
|
validates :natureza_operacao, presence: true
|
1077
1086
|
|
1078
1087
|
validates :forma_pagamento, presence: true
|
@@ -1100,7 +1109,7 @@ module BrNfe
|
|
1100
1109
|
|
1101
1110
|
validate_has_many :itens, message: :invalid_item
|
1102
1111
|
validates :itens, length: {minimum: 1, maximum: 990}
|
1103
|
-
|
1112
|
+
|
1104
1113
|
validate_has_many :processos_referenciados, message: :invalid_processo
|
1105
1114
|
|
1106
1115
|
with_options if: :nfce? do |record|
|
@@ -1112,7 +1121,7 @@ module BrNfe
|
|
1112
1121
|
validate_has_one :fatura
|
1113
1122
|
validate_has_one :destinatario
|
1114
1123
|
validate_has_one :emitente
|
1115
|
-
|
1124
|
+
|
1116
1125
|
validate_has_one :endereco_retirada
|
1117
1126
|
with_options if: :endereco_retirada do |record|
|
1118
1127
|
record.validates :endereco_retirada_cpf_cnpj, presence: true
|
@@ -1142,7 +1151,7 @@ module BrNfe
|
|
1142
1151
|
end
|
1143
1152
|
|
1144
1153
|
# MÉTODO PARA SABER SE EXISTE ALGUM VALOR NO TOTALIZADOR DE RETENÇÃO DE IMPOSTOS.
|
1145
|
-
# Utilizado para saber se deve ou não colocar a tag de totalizador de retenções
|
1154
|
+
# Utilizado para saber se deve ou não colocar a tag de totalizador de retenções
|
1146
1155
|
# no XML.
|
1147
1156
|
#
|
1148
1157
|
# <b>Tipo: </b> _Boolean_
|
@@ -1,4 +1,6 @@
|
|
1
1
|
NFe xmlns="http://www.portalfiscal.inf.br/nfe"
|
2
2
|
- infNFe = render_xml 'infNFe', nfe: nfe
|
3
|
-
= infNFe.gsub('<infNFe xmlns="http://www.portalfiscal.inf.br/nfe"','<infNFe ').html_safe
|
4
|
-
=
|
3
|
+
- nfe.xml_inf_nfe = infNFe.gsub('<infNFe xmlns="http://www.portalfiscal.inf.br/nfe"','<infNFe ').html_safe
|
4
|
+
= nfe.xml_inf_nfe.html_safe
|
5
|
+
- if certificate
|
6
|
+
= render_xml('signature_sh1', data_xml: infNFe, uri: "NFe#{nfe.chave_de_acesso}").html_safe
|
@@ -55,7 +55,6 @@ module BrNfe
|
|
55
55
|
attr_accessor :invoice_desconto_incondicionado_path # Valor do desconto incondicionado
|
56
56
|
attr_accessor :invoice_responsavel_retencao_path # Responsável pela retenção
|
57
57
|
attr_accessor :invoice_numero_processo_path # Número do processo da NF
|
58
|
-
attr_accessor :invoice_municipio_incidencia_path # Código do municipio em que o serviço foi prestado
|
59
58
|
attr_accessor :invoice_orgao_gerador_municipio_path # Órgão gerador municipal da NFS
|
60
59
|
attr_accessor :invoice_orgao_gerador_uf_path # Órgão gerador estadual da NFS
|
61
60
|
attr_accessor :invoice_cancelamento_codigo_path # Código do cancelamento da NFS
|
@@ -95,10 +94,10 @@ module BrNfe
|
|
95
94
|
attr_accessor :invoice_destinatario_endereco_codigo_municipio_path # Codigo_municipio do destinatário da NFS
|
96
95
|
attr_accessor :invoice_destinatario_endereco_uf_path # Uf do destinatário da NFS
|
97
96
|
attr_accessor :invoice_destinatario_endereco_cep_path # Cep do destinatário da NFS
|
98
|
-
|
97
|
+
|
99
98
|
####################### FIM DA DEFINIÇÃO DOS CAMINHOS ############################
|
100
99
|
######################################################################################
|
101
|
-
|
100
|
+
|
102
101
|
######################################################################################
|
103
102
|
############### DEFINIÇÃO DOS VALORES PADRÕES PARA O CAMINHO DA NFSE ###############
|
104
103
|
def default_values
|
@@ -143,7 +142,6 @@ module BrNfe
|
|
143
142
|
invoice_desconto_incondicionado_path: response_invoice_desconto_incondicionado_path,
|
144
143
|
# invoice_responsavel_retencao_path: response_invoice_responsavel_retencao_path,
|
145
144
|
# invoice_numero_processo_path: response_invoice_numero_processo_path,
|
146
|
-
# invoice_municipio_incidencia_path: response_invoice_municipio_incidencia_path,
|
147
145
|
invoice_orgao_gerador_municipio_path: response_invoice_orgao_gerador_municipio_path,
|
148
146
|
invoice_orgao_gerador_uf_path: response_invoice_orgao_gerador_uf_path,
|
149
147
|
invoice_cancelamento_codigo_path: response_invoice_cancelamento_codigo_path,
|
@@ -187,13 +185,13 @@ module BrNfe
|
|
187
185
|
end
|
188
186
|
############## FIM DEFINIÇÃO DOS VALORES PADRÕES PARA O CAMINHO DA NFSE #############
|
189
187
|
######################################################################################
|
190
|
-
|
188
|
+
|
191
189
|
# Método que retorna as notas fiscais emitidas.
|
192
190
|
# Como pode ser que retorne mais de uma NF, a busca pela NF
|
193
191
|
# pode retornar um Array ou um Hash.
|
194
192
|
# Se retornar um array é porque existe mais de uma NFE, então é necessario
|
195
193
|
# percorer com um loop e instanciar cada nota com seus valores.
|
196
|
-
# Se retornar um Hash é porque tem apenas uma NFe, e nesse caso
|
194
|
+
# Se retornar um Hash é porque tem apenas uma NFe, e nesse caso
|
197
195
|
# irá instanciar apenas a nfe encontrada.
|
198
196
|
#
|
199
197
|
# <b>Tipo de retorno: </b> _Array_
|
@@ -225,7 +223,7 @@ module BrNfe
|
|
225
223
|
savon_response.xml
|
226
224
|
end
|
227
225
|
|
228
|
-
# Método responsável por instanciar a nota fiscal de acordo com o hash
|
226
|
+
# Método responsável por instanciar a nota fiscal de acordo com o hash
|
229
227
|
# passado por parêmetro
|
230
228
|
# O parâmetro recebido deve ser o Hash representado pelo tipo de dados tcCompNfse(do manual NFS-e v1)
|
231
229
|
#
|
@@ -248,7 +246,6 @@ module BrNfe
|
|
248
246
|
codigo_municipio: find_value_for_keys(invoice_hash, invoice_codigo_municipio_path ),
|
249
247
|
responsavel_retencao: find_value_for_keys(invoice_hash, invoice_responsavel_retencao_path ),
|
250
248
|
numero_processo: find_value_for_keys(invoice_hash, invoice_numero_processo_path ),
|
251
|
-
municipio_incidencia: find_value_for_keys(invoice_hash, invoice_municipio_incidencia_path ),
|
252
249
|
orgao_gerador_municipio: find_value_for_keys(invoice_hash, invoice_orgao_gerador_municipio_path ),
|
253
250
|
orgao_gerador_uf: find_value_for_keys(invoice_hash, invoice_orgao_gerador_uf_path ),
|
254
251
|
codigo_obra: find_value_for_keys(invoice_hash, invoice_codigo_obra_path ),
|
@@ -262,7 +259,7 @@ module BrNfe
|
|
262
259
|
build_destinatario_nfe(nfe, invoice_hash)
|
263
260
|
nfe
|
264
261
|
end
|
265
|
-
|
262
|
+
|
266
263
|
def build_rps_fields_nfe(nfe, invoice_hash)
|
267
264
|
nfe.assign_attributes({
|
268
265
|
rps_numero: find_value_for_keys(invoice_hash, invoice_rps_numero_path ),
|
@@ -12,7 +12,7 @@ module BrNfe
|
|
12
12
|
attr_accessor :data_emissao
|
13
13
|
attr_accessor :url_nf
|
14
14
|
attr_accessor :xml_nf
|
15
|
-
|
15
|
+
|
16
16
|
#identificacao do rps
|
17
17
|
attr_accessor :rps_numero
|
18
18
|
attr_accessor :rps_serie
|
@@ -30,12 +30,13 @@ module BrNfe
|
|
30
30
|
attr_accessor :regime_especial_tributacao
|
31
31
|
attr_accessor :optante_simples_nacional
|
32
32
|
attr_accessor :incentivador_cultural
|
33
|
-
|
33
|
+
|
34
34
|
# dados dos serviços
|
35
35
|
attr_accessor :item_lista_servico
|
36
36
|
attr_accessor :cnae_code
|
37
37
|
attr_accessor :description
|
38
38
|
attr_accessor :codigo_municipio
|
39
|
+
alias_attribute :municipio_incidencia, :codigo_municipio
|
39
40
|
|
40
41
|
#Valores dos serviços
|
41
42
|
attr_accessor :valor_total_servicos
|
@@ -56,8 +57,7 @@ module BrNfe
|
|
56
57
|
|
57
58
|
attr_accessor :responsavel_retencao
|
58
59
|
attr_accessor :numero_processo
|
59
|
-
|
60
|
-
|
60
|
+
|
61
61
|
# Orgão gerador
|
62
62
|
attr_accessor :orgao_gerador_municipio
|
63
63
|
attr_accessor :orgao_gerador_uf
|
@@ -67,7 +67,7 @@ module BrNfe
|
|
67
67
|
attr_accessor :cancelamento_numero_nf
|
68
68
|
attr_accessor :cancelamento_cnpj
|
69
69
|
attr_accessor :cancelamento_inscricao_municipal
|
70
|
-
attr_accessor :cancelamento_municipio
|
70
|
+
attr_accessor :cancelamento_municipio
|
71
71
|
attr_accessor :cancelamento_sucesso
|
72
72
|
attr_accessor :cancelamento_data_hora
|
73
73
|
|
data/lib/br_nfe/service/rps.rb
CHANGED
@@ -21,12 +21,11 @@ module BrNfe
|
|
21
21
|
with_options if: :validar_recepcao_rps do |record|
|
22
22
|
record.validates :data_emissao, :item_lista_servico, :description, :codigo_municipio, :base_calculo, presence: true
|
23
23
|
record.validates :total_iss, :iss_aliquota, presence: true, unless: :iss_retido?
|
24
|
-
record.validates :municipio_incidencia, presence: true, if: :municipio_incidencia_obrigatorio?
|
25
24
|
|
26
25
|
record.validates :valor_total_servicos, :base_calculo, numericality: {greater_than: 0}
|
27
|
-
|
28
|
-
record.validates :deducoes, :valor_pis, :valor_cofins, :valor_inss, :valor_ir,
|
29
|
-
:valor_csll, :outras_retencoes, :total_iss, :iss_aliquota, :base_calculo,
|
26
|
+
|
27
|
+
record.validates :deducoes, :valor_pis, :valor_cofins, :valor_inss, :valor_ir,
|
28
|
+
:valor_csll, :outras_retencoes, :total_iss, :iss_aliquota, :base_calculo,
|
30
29
|
:desconto_incondicionado, :desconto_condicionado, numericality: true, allow_blank: true
|
31
30
|
|
32
31
|
record.validate :validar_intermediario
|
@@ -38,13 +37,13 @@ module BrNfe
|
|
38
37
|
self.items = [] # Para poder utilizar o << para adicionar itens
|
39
38
|
super
|
40
39
|
end
|
41
|
-
|
40
|
+
|
42
41
|
# Itens do RPS
|
43
42
|
# Contém um vetor com todos os serviços prestados
|
44
43
|
# Para a maioria das cidades os itens são informados junto à discriminação
|
45
44
|
# porém para outras poucas cidades é possível inserir vários itens de serviços
|
46
45
|
# na NF.
|
47
|
-
#
|
46
|
+
#
|
48
47
|
# Mesmo para as cidades que não permitem enviar os itens de serviço
|
49
48
|
# será necessário informar pelo menos 1 item.
|
50
49
|
#
|
@@ -66,7 +65,7 @@ module BrNfe
|
|
66
65
|
#
|
67
66
|
# <b>Tipo: </b> _Float_
|
68
67
|
attr_accessor :total_issqn_st
|
69
|
-
|
68
|
+
|
70
69
|
attr_accessor :validar_recepcao_rps
|
71
70
|
|
72
71
|
attr_accessor :numero
|
@@ -80,7 +79,7 @@ module BrNfe
|
|
80
79
|
attr_accessor :numero_substituicao
|
81
80
|
attr_accessor :serie_substituicao
|
82
81
|
attr_accessor :tipo_substituicao
|
83
|
-
|
82
|
+
|
84
83
|
#Para construção civil
|
85
84
|
attr_accessor :codigo_obra
|
86
85
|
attr_accessor :codigo_art
|
@@ -105,18 +104,18 @@ module BrNfe
|
|
105
104
|
@base_calculo || (valor_total_servicos.to_f - deducoes.to_f).round(2)
|
106
105
|
end
|
107
106
|
|
108
|
-
# Valor das deduções de impostos
|
109
|
-
#
|
107
|
+
# Valor das deduções de impostos
|
108
|
+
#
|
110
109
|
# <b>Tipo: </b> _Float_
|
111
110
|
attr_accessor :deducoes
|
112
111
|
|
113
112
|
# Iss retido?
|
114
|
-
# Identifica se o ISS foi retido
|
113
|
+
# Identifica se o ISS foi retido
|
115
114
|
#
|
116
115
|
# <b>Tipo: </b> _Integer_
|
117
116
|
attr_accessor :iss_retido
|
118
117
|
|
119
|
-
# Valor do Iss retido
|
118
|
+
# Valor do Iss retido
|
120
119
|
# Total de iss retido da nota
|
121
120
|
#
|
122
121
|
# <b>Tipo: </b> _float_
|
@@ -128,7 +127,7 @@ module BrNfe
|
|
128
127
|
#
|
129
128
|
# <b>Tipo: </b> _Float_
|
130
129
|
attr_accessor :total_iss
|
131
|
-
|
130
|
+
|
132
131
|
# % de Aliquota do ISS
|
133
132
|
# Utilizado para as cidades que não possuem multiplos itens de serviço na nota.
|
134
133
|
# Caso não seja definido então irá pegar a aliquota do 1º item que encontrar
|
@@ -145,15 +144,15 @@ module BrNfe
|
|
145
144
|
end
|
146
145
|
|
147
146
|
# Valor líquido da NF (R$)
|
148
|
-
# Caso não seja setado um valor manualmente irá calcular o valor
|
147
|
+
# Caso não seja setado um valor manualmente irá calcular o valor
|
149
148
|
#
|
150
149
|
# <b>Tipo: </b> _Float_
|
151
150
|
#
|
152
151
|
attr_accessor :valor_liquido
|
153
152
|
def valor_liquido
|
154
153
|
@valor_liquido ||= valor_total_servicos.to_f - (
|
155
|
-
valor_pis.to_f + valor_cofins.to_f + valor_inss.to_f +
|
156
|
-
valor_ir.to_f + valor_csll.to_f + outras_retencoes.to_f +
|
154
|
+
valor_pis.to_f + valor_cofins.to_f + valor_inss.to_f +
|
155
|
+
valor_ir.to_f + valor_csll.to_f + outras_retencoes.to_f +
|
157
156
|
total_iss_retido.to_f + desconto_incondicionado.to_f + desconto_condicionado.to_f
|
158
157
|
)
|
159
158
|
end
|
@@ -166,17 +165,17 @@ module BrNfe
|
|
166
165
|
attr_accessor :outras_retencoes
|
167
166
|
attr_accessor :desconto_incondicionado
|
168
167
|
attr_accessor :desconto_condicionado
|
169
|
-
|
168
|
+
|
170
169
|
attr_accessor :responsavel_retencao
|
171
170
|
attr_accessor :item_lista_servico
|
172
171
|
attr_accessor :codigo_tributacao_municipio
|
173
172
|
attr_accessor :exigibilidade_iss
|
174
173
|
attr_accessor :codigo_municipio
|
175
|
-
|
174
|
+
alias_attribute :municipio_incidencia, :codigo_municipio
|
176
175
|
attr_accessor :codigo_pais
|
177
176
|
attr_accessor :numero_processo
|
178
177
|
attr_accessor :outras_informacoes
|
179
|
-
|
178
|
+
|
180
179
|
# Código CNAE (Classificação Nacional de Atividades Econômicas)
|
181
180
|
# Pode ser encontrado em http://www.cnae.ibge.gov.br/
|
182
181
|
# Tamanho de 8 caracteres
|
@@ -184,7 +183,7 @@ module BrNfe
|
|
184
183
|
# um código CNAE será pega o código do 1° item de serviço (se houver algum)
|
185
184
|
#
|
186
185
|
# <b>Tipo: </b> _String_
|
187
|
-
attr_accessor :cnae_code
|
186
|
+
attr_accessor :cnae_code
|
188
187
|
def cnae_code
|
189
188
|
@cnae_code || items.first.try(:cnae_code)
|
190
189
|
end
|
@@ -231,10 +230,6 @@ module BrNfe
|
|
231
230
|
destinatario.errors.full_messages.map{|msg| errors.add(:base, "Destinatário: #{msg}") }
|
232
231
|
end
|
233
232
|
end
|
234
|
-
|
235
|
-
def municipio_incidencia_obrigatorio?
|
236
|
-
"#{exigibilidade_iss}".in?(['1','01','6','06','7','07'])
|
237
|
-
end
|
238
233
|
def destinatario_class
|
239
234
|
BrNfe.destinatario_service_class
|
240
235
|
end
|
@@ -11,7 +11,7 @@
|
|
11
11
|
*{tag: "#{namespace_for_tags}CodigoTributacaoMunicipio"} = ts_codigo_tributacao(rps.codigo_tributacao_municipio)
|
12
12
|
|
13
13
|
*{tag: "#{namespace_for_tags}Discriminacao"} = ts_discriminacao(rps.description)
|
14
|
-
*{tag: "#{namespace_for_tags}CodigoMunicipio"} = ts_codigo_municipio_ibge(rps.
|
14
|
+
*{tag: "#{namespace_for_tags}CodigoMunicipio"} = ts_codigo_municipio_ibge(rps.municipio_incidencia)
|
15
15
|
|
16
16
|
- rps.items.each do |item|
|
17
17
|
*{tag: "#{namespace_for_tags}ItensServico"}
|
@@ -11,4 +11,4 @@
|
|
11
11
|
*{tag: "#{namespace_for_tags}CodigoTributacaoMunicipio"} = ts_codigo_tributacao(rps.codigo_tributacao_municipio)
|
12
12
|
|
13
13
|
*{tag: "#{namespace_for_tags}Discriminacao"} = ts_discriminacao(rps.description)
|
14
|
-
*{tag: "#{namespace_for_tags}CodigoMunicipio"} = ts_codigo_municipio_ibge(rps.
|
14
|
+
*{tag: "#{namespace_for_tags}CodigoMunicipio"} = ts_codigo_municipio_ibge(rps.municipio_incidencia)
|
data/lib/br_nfe/version.rb
CHANGED
@@ -2,7 +2,7 @@ module BrNfe
|
|
2
2
|
module Version
|
3
3
|
MAJOR = 2 #inclui alterações de API e pode quebrar compatibilidade com versões anteriores
|
4
4
|
MINOR = 3 #inclui novas funcionalidades, sem quebrar APIs existentes
|
5
|
-
PATCH =
|
5
|
+
PATCH = 1 #corrige bugs ou traz melhorias em implementações já existentes
|
6
6
|
CURRENT = "#{MAJOR}.#{MINOR}.#{PATCH}"
|
7
7
|
end
|
8
8
|
end
|
@@ -174,6 +174,7 @@ nfe:
|
|
174
174
|
wsdl: 'https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeAutorizacao?wsdl'
|
175
175
|
ssl_version: :SSLv3
|
176
176
|
follow_redirects: true
|
177
|
+
soap_version: 2
|
177
178
|
headers:
|
178
179
|
Content-Type: 'application/soap+xml; charset=utf-8'
|
179
180
|
test:
|
@@ -187,6 +188,7 @@ nfe:
|
|
187
188
|
wsdl: 'https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeRetAutorizacao?wsdl'
|
188
189
|
ssl_version: :SSLv3
|
189
190
|
follow_redirects: true
|
191
|
+
soap_version: 2
|
190
192
|
headers:
|
191
193
|
Content-Type: 'application/soap+xml; charset=utf-8'
|
192
194
|
test:
|
@@ -200,6 +202,7 @@ nfe:
|
|
200
202
|
wsdl: 'https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeConsulta2?wsdl'
|
201
203
|
ssl_version: :SSLv3
|
202
204
|
follow_redirects: true
|
205
|
+
soap_version: 2
|
203
206
|
headers:
|
204
207
|
Content-Type: 'application/soap+xml; charset=utf-8'
|
205
208
|
test:
|
@@ -2,7 +2,7 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
describe BrNfe::Product::Operation::NfeAutorizacao do
|
4
4
|
subject { FactoryGirl.build(:product_operation_nfe_autorizacao) }
|
5
|
-
let(:nota_fiscal) { FactoryGirl.build(:product_nota_fiscal) }
|
5
|
+
let(:nota_fiscal) { FactoryGirl.build(:product_nota_fiscal) }
|
6
6
|
|
7
7
|
describe '#aliases' do
|
8
8
|
it { must_have_alias_attribute :idLote, :numero_lote }
|
@@ -29,7 +29,7 @@ describe BrNfe::Product::Operation::NfeAutorizacao do
|
|
29
29
|
describe '#xml_builder' do
|
30
30
|
it "Deve renderizar o XML e setar o valor na variavel @xml_builder" do
|
31
31
|
subject.expects(:render_xml).returns('<xml>OK</xml>')
|
32
|
-
|
32
|
+
|
33
33
|
subject.xml_builder.must_equal '<xml>OK</xml>'
|
34
34
|
subject.instance_variable_get(:@xml_builder).must_equal '<xml>OK</xml>'
|
35
35
|
end
|
@@ -40,7 +40,7 @@ describe BrNfe::Product::Operation::NfeAutorizacao do
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
context "Ao gerar o XML do lote deve setar o XML de cada nota no atributo xml da nf" do
|
43
|
+
context "Ao gerar o XML do lote deve setar o XML de cada nota no atributo xml e xml_inf_nfe da nf" do
|
44
44
|
let(:subject) { FactoryGirl.build(:product_operation_nfe_autorizacao, :for_signature_test) }
|
45
45
|
let(:nf1) { subject.notas_fiscais[0] }
|
46
46
|
let(:nf2) { subject.notas_fiscais[1] }
|
@@ -52,10 +52,16 @@ describe BrNfe::Product::Operation::NfeAutorizacao do
|
|
52
52
|
subject.xml_builder
|
53
53
|
|
54
54
|
nf1.xml[0..108].must_equal '<NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe Id="NFe42161266622465000192550010000000021201601015"'
|
55
|
+
nf1.xml_inf_nfe[0..60].must_equal '<infNFe Id="NFe42161266622465000192550010000000021201601015"'
|
56
|
+
|
55
57
|
nf2.xml[0..108].must_equal '<NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe Id="NFe42161266622465000192550010000000501201601012"'
|
58
|
+
nf2.xml_inf_nfe[0..60].must_equal '<infNFe Id="NFe42161266622465000192550010000000501201601012"'
|
56
59
|
|
57
60
|
nf1.xml[-57..-1].must_equal '</X509Certificate></X509Data></KeyInfo></Signature></NFe>'
|
61
|
+
nf1.xml_inf_nfe[-9..-1].must_equal '</infNFe>'
|
62
|
+
|
58
63
|
nf2.xml[-57..-1].must_equal '</X509Certificate></X509Data></KeyInfo></Signature></NFe>'
|
64
|
+
nf2.xml_inf_nfe[-9..-1].must_equal '</infNFe>'
|
59
65
|
end
|
60
66
|
it "Para a versão 2.00 da NF" do
|
61
67
|
subject.stubs(:gateway_xml_version).returns(:v2_00)
|
@@ -108,7 +114,7 @@ describe BrNfe::Product::Operation::NfeAutorizacao do
|
|
108
114
|
end
|
109
115
|
end
|
110
116
|
describe 'REQUEST MUST BE SET RESPONSE CORRECTLY' do
|
111
|
-
let(:original_xml) { read_fixture('product/response/v3.10/nfe_autorizacao/original_xml.xml') }
|
117
|
+
let(:original_xml) { read_fixture('product/response/v3.10/nfe_autorizacao/original_xml.xml') }
|
112
118
|
let(:response_async_fail) { read_fixture('product/response/v3.10/nfe_autorizacao/async_fail.xml') }
|
113
119
|
let(:response_async_success) { read_fixture('product/response/v3.10/nfe_autorizacao/async_success.xml') }
|
114
120
|
let(:response_sync_fail) { read_fixture('product/response/v3.10/nfe_autorizacao/sync_fail.xml') }
|
@@ -136,7 +142,7 @@ describe BrNfe::Product::Operation::NfeAutorizacao do
|
|
136
142
|
response = subject.response
|
137
143
|
|
138
144
|
response.must_be_kind_of BrNfe::Product::Response::NfeAutorizacao
|
139
|
-
|
145
|
+
|
140
146
|
response.request_status.must_equal :success
|
141
147
|
response.processing_status.must_equal :success
|
142
148
|
response.environment.must_equal :test
|
@@ -166,7 +172,7 @@ describe BrNfe::Product::Operation::NfeAutorizacao do
|
|
166
172
|
response = subject.response
|
167
173
|
|
168
174
|
response.must_be_kind_of BrNfe::Product::Response::NfeAutorizacao
|
169
|
-
|
175
|
+
|
170
176
|
response.request_status.must_equal :success
|
171
177
|
response.processing_status.must_equal :success
|
172
178
|
response.environment.must_equal :test
|
@@ -202,7 +208,7 @@ describe BrNfe::Product::Operation::NfeAutorizacao do
|
|
202
208
|
response = subject.response
|
203
209
|
|
204
210
|
response.must_be_kind_of BrNfe::Product::Response::NfeAutorizacao
|
205
|
-
|
211
|
+
|
206
212
|
response.request_status.must_equal :success
|
207
213
|
response.processing_status.must_equal :error
|
208
214
|
response.environment.must_equal :test
|
@@ -239,13 +245,13 @@ describe BrNfe::Product::Operation::NfeAutorizacao do
|
|
239
245
|
nota_fiscal.xml[0..63].must_equal '<NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe Id="NFe'
|
240
246
|
nota_fiscal.xml[-6..-1].must_equal '</NFe>'
|
241
247
|
|
242
|
-
# Agora vou setar um XML fixo na NF para que seja
|
248
|
+
# Agora vou setar um XML fixo na NF para que seja
|
243
249
|
# modificado conforme o esperado. Não vou usar o xml original
|
244
250
|
# pois o mesmo pode ser modificado conforme novas regras vão surgindo.
|
245
251
|
# e não é o objetivo desse teste validar as regras de campos do xml, e sim
|
246
252
|
# se está ajustando o valor corretamente.
|
247
253
|
nota_fiscal.xml = xml_nfe_without_proc
|
248
|
-
|
254
|
+
|
249
255
|
# Ao chamar o response irá setar a tag <nfeProc> no XML da NF-e
|
250
256
|
# e também irá adicionar o protocolo de autorização
|
251
257
|
response = subject.response
|
@@ -350,7 +356,7 @@ describe BrNfe::Product::Operation::NfeAutorizacao do
|
|
350
356
|
end
|
351
357
|
end
|
352
358
|
describe 'Configurações por UF dos parametros para instanciar o client Soap' do
|
353
|
-
let(:client_wsdl) { subject.client_wsdl }
|
359
|
+
let(:client_wsdl) { subject.client_wsdl }
|
354
360
|
describe 'UF 12 - Acre' do
|
355
361
|
before { subject.ibge_code_of_issuer_uf = '12' }
|
356
362
|
it "Deve utilizar o servidor SVRS para emissão normal" do
|
@@ -2,7 +2,7 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
describe BrNfe::Product::Operation::NfeRecepcaoEvento do
|
4
4
|
subject { FactoryGirl.build(:product_operation_nfe_recepcao_evento) }
|
5
|
-
let(:evento_cancelamento) { FactoryGirl.build(:product_evento_cancelamento) }
|
5
|
+
let(:evento_cancelamento) { FactoryGirl.build(:product_evento_cancelamento) }
|
6
6
|
|
7
7
|
describe '#aliases' do
|
8
8
|
it { must_have_alias_attribute :idLote, :numero_lote }
|
@@ -23,7 +23,7 @@ describe BrNfe::Product::Operation::NfeRecepcaoEvento do
|
|
23
23
|
describe '#xml_builder' do
|
24
24
|
it "Deve renderizar o XML e setar o valor na variavel @xml_builder" do
|
25
25
|
subject.expects(:render_xml).returns('<xml>OK</xml>')
|
26
|
-
|
26
|
+
|
27
27
|
subject.xml_builder.must_equal '<xml>OK</xml>'
|
28
28
|
subject.instance_variable_get(:@xml_builder).must_equal '<xml>OK</xml>'
|
29
29
|
end
|
@@ -33,7 +33,7 @@ describe BrNfe::Product::Operation::NfeRecepcaoEvento do
|
|
33
33
|
subject.xml_builder.must_equal '<xml>OK</xml>'
|
34
34
|
end
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
context "CANCELAMENTO - Validações para versão do XML 1.00 e NF-e 3.10" do
|
38
38
|
before do
|
39
39
|
subject.cancelamento = evento_cancelamento
|
@@ -52,11 +52,11 @@ describe BrNfe::Product::Operation::NfeRecepcaoEvento do
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
describe 'REQUEST MUST BE SET RESPONSE CORRECTLY' do
|
55
|
-
let(:xml_success) { read_fixture('product/response/v3.10/nfe_recepcao_evento/cancelamento/success.xml') }
|
56
|
-
let(:xml_fail) { read_fixture('product/response/v3.10/nfe_recepcao_evento/cancelamento/fail.xml') }
|
57
|
-
let(:expect_xml_success_result) { read_fixture('product/response/v3.10/nfe_recepcao_evento/cancelamento/xml_result_success_formatted.xml') }
|
58
|
-
let(:expect_xml_fail_result) { read_fixture('product/response/v3.10/nfe_recepcao_evento/cancelamento/xml_result_fail_formatted.xml') }
|
59
|
-
before do
|
55
|
+
let(:xml_success) { read_fixture('product/response/v3.10/nfe_recepcao_evento/cancelamento/success.xml') }
|
56
|
+
let(:xml_fail) { read_fixture('product/response/v3.10/nfe_recepcao_evento/cancelamento/fail.xml') }
|
57
|
+
let(:expect_xml_success_result) { read_fixture('product/response/v3.10/nfe_recepcao_evento/cancelamento/xml_result_success_formatted.xml') }
|
58
|
+
let(:expect_xml_fail_result) { read_fixture('product/response/v3.10/nfe_recepcao_evento/cancelamento/xml_result_fail_formatted.xml') }
|
59
|
+
before do
|
60
60
|
evento_cancelamento.data_hora = Time.parse('2017-06-02T11:25:58-03:00')
|
61
61
|
evento_cancelamento.chave = 'ID1101113513040726711800012055000000000123193923347101'
|
62
62
|
savon.mock!
|
@@ -83,6 +83,7 @@ describe BrNfe::Product::Operation::NfeRecepcaoEvento do
|
|
83
83
|
response.events.size.must_equal 1
|
84
84
|
event = response.events[0]
|
85
85
|
|
86
|
+
event.status.must_equal :success
|
86
87
|
event.codigo_orgao.must_equal '42'
|
87
88
|
event.status_code.must_equal '135'
|
88
89
|
event.status_motive.must_equal 'Evento registrado e vinculado a NF-e'
|
@@ -114,6 +115,7 @@ describe BrNfe::Product::Operation::NfeRecepcaoEvento do
|
|
114
115
|
response.events.size.must_equal 1
|
115
116
|
event = response.events[0]
|
116
117
|
|
118
|
+
event.status.must_equal :error
|
117
119
|
event.codigo_orgao.must_equal '42'
|
118
120
|
event.status_code.must_equal '501'
|
119
121
|
event.status_motive.must_equal 'Rejeicao: Prazo de Cancelamento Superior ao Previsto na Legislacao'
|
@@ -17,7 +17,7 @@ describe BrNfe::Service::Betha::V1::ConsultaLoteRps do
|
|
17
17
|
it { subject.url_wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/consultarLoteRps?wsdl' }
|
18
18
|
end
|
19
19
|
context "for env test" do
|
20
|
-
before do
|
20
|
+
before do
|
21
21
|
subject.env = :test
|
22
22
|
end
|
23
23
|
it { subject.url_wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarLoteRps?wsdl' }
|
@@ -33,7 +33,7 @@ describe BrNfe::Service::Betha::V1::ConsultaLoteRps do
|
|
33
33
|
subject.emitente.cpf_cnpj = '12345678901234'
|
34
34
|
content_xml = Nori.new.parse(subject.content_xml).deep_transform_keys!{|k| k.to_s.underscore.to_sym}
|
35
35
|
prestador = content_xml[:'ns1:consultar_lote_rps_envio'][:prestador]
|
36
|
-
|
36
|
+
|
37
37
|
prestador[:cnpj].must_equal '12345678901234'
|
38
38
|
prestador[:inscricao_municipal].must_be_nil
|
39
39
|
end
|
@@ -44,7 +44,7 @@ describe BrNfe::Service::Betha::V1::ConsultaLoteRps do
|
|
44
44
|
|
45
45
|
describe "Validação do XML através do XSD" do
|
46
46
|
let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/betha/v1/xsd' }
|
47
|
-
|
47
|
+
|
48
48
|
describe "Validações a partir do arquivo XSD" do
|
49
49
|
it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
|
50
50
|
Dir.chdir(schemas_dir) do
|
@@ -58,7 +58,7 @@ describe BrNfe::Service::Betha::V1::ConsultaLoteRps do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
describe "#request and set response" do
|
61
|
-
before do
|
61
|
+
before do
|
62
62
|
savon.mock!
|
63
63
|
stub_request(:get, subject.url_wsdl).to_return(status: 200, body: read_fixture('service/wsdl/betha/v1/consultar_lote_rps.xml') )
|
64
64
|
end
|
@@ -66,7 +66,7 @@ describe BrNfe::Service::Betha::V1::ConsultaLoteRps do
|
|
66
66
|
|
67
67
|
it "Quando a requisição voltar com erro deve setar os erros corretamente" do
|
68
68
|
fixture = read_fixture('service/response/betha/v1/consulta_lote_rps/fault.xml')
|
69
|
-
|
69
|
+
|
70
70
|
savon.expects(:consultar_lote_rps_envio).returns(fixture)
|
71
71
|
subject.request
|
72
72
|
response = subject.response
|
@@ -115,6 +115,7 @@ describe BrNfe::Service::Betha::V1::ConsultaLoteRps do
|
|
115
115
|
nf.cnae_code.must_equal '6202300'
|
116
116
|
nf.description.must_equal '1 TESTE WEBSERVICE: R$ 5,00'
|
117
117
|
nf.codigo_municipio.must_equal '4204202'
|
118
|
+
nf.municipio_incidencia.must_equal '4204202'
|
118
119
|
nf.valor_total_servicos.must_equal '349'
|
119
120
|
nf.iss_retido.must_equal '2'
|
120
121
|
nf.total_iss.must_equal '0'
|
@@ -132,7 +133,6 @@ describe BrNfe::Service::Betha::V1::ConsultaLoteRps do
|
|
132
133
|
nf.desconto_incondicionado.must_equal '0'
|
133
134
|
nf.responsavel_retencao.must_be_nil
|
134
135
|
nf.numero_processo.must_be_nil
|
135
|
-
nf.municipio_incidencia.must_be_nil
|
136
136
|
nf.orgao_gerador_municipio.must_equal '4204202'
|
137
137
|
nf.orgao_gerador_uf.must_equal 'SC'
|
138
138
|
nf.cancelamento_codigo.must_be_nil
|
@@ -146,7 +146,7 @@ describe BrNfe::Service::Betha::V1::ConsultaLoteRps do
|
|
146
146
|
nf.codigo_obra.must_be_nil
|
147
147
|
nf.codigo_art.must_be_nil
|
148
148
|
|
149
|
-
nf.destinatario.cpf_cnpj.must_equal '12345678901234'
|
149
|
+
nf.destinatario.cpf_cnpj.must_equal '12345678901234'
|
150
150
|
end
|
151
151
|
end
|
152
152
|
end
|
@@ -3,7 +3,7 @@ require 'test_helper'
|
|
3
3
|
describe BrNfe::Service::Betha::V1::ConsultaNfsPorRps do
|
4
4
|
subject { FactoryGirl.build(:servico_betha_consulta_nfs_por_rps, emitente: emitente) }
|
5
5
|
let(:emitente) { FactoryGirl.build(:service_emitente) }
|
6
|
-
let(:rps) { subject.rps }
|
6
|
+
let(:rps) { subject.rps }
|
7
7
|
|
8
8
|
describe "superclass" do
|
9
9
|
it { subject.class.superclass.must_equal BrNfe::Service::Betha::V1::Gateway }
|
@@ -18,7 +18,7 @@ describe BrNfe::Service::Betha::V1::ConsultaNfsPorRps do
|
|
18
18
|
it { subject.url_wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/consultarNfsePorRps?wsdl' }
|
19
19
|
end
|
20
20
|
context "for env test" do
|
21
|
-
before do
|
21
|
+
before do
|
22
22
|
subject.env = :test
|
23
23
|
end
|
24
24
|
it { subject.url_wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarNfsePorRps?wsdl' }
|
@@ -31,7 +31,7 @@ describe BrNfe::Service::Betha::V1::ConsultaNfsPorRps do
|
|
31
31
|
|
32
32
|
describe "Validação do XML através do XSD" do
|
33
33
|
let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/betha/v1/xsd' }
|
34
|
-
|
34
|
+
|
35
35
|
describe "Validações a partir do arquivo XSD" do
|
36
36
|
it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
|
37
37
|
Dir.chdir(schemas_dir) do
|
@@ -53,13 +53,13 @@ describe BrNfe::Service::Betha::V1::ConsultaNfsPorRps do
|
|
53
53
|
subject.emitente.cpf_cnpj = '12345678901234'
|
54
54
|
content_xml = Nori.new.parse(subject.content_xml).deep_transform_keys!{|k| k.to_s.underscore.to_sym}
|
55
55
|
prestador = content_xml[:'ns1:consultar_nfse_rps_envio'][:prestador]
|
56
|
-
|
56
|
+
|
57
57
|
prestador[:cnpj].must_equal '12345678901234'
|
58
58
|
prestador[:inscricao_municipal].must_be_nil
|
59
59
|
end
|
60
60
|
|
61
61
|
describe "#request and set response" do
|
62
|
-
before do
|
62
|
+
before do
|
63
63
|
savon.mock!
|
64
64
|
stub_request(:get, subject.url_wsdl).to_return(status: 200, body: read_fixture('service/wsdl/betha/v1/consultar_nfse_por_rps.xml') )
|
65
65
|
end
|
@@ -67,7 +67,7 @@ describe BrNfe::Service::Betha::V1::ConsultaNfsPorRps do
|
|
67
67
|
|
68
68
|
it "Quando a requisição voltar com erro deve setar os erros corretamente" do
|
69
69
|
fixture = read_fixture('service/response/betha/v1/consulta_nfse_por_rps/fault.xml')
|
70
|
-
|
70
|
+
|
71
71
|
savon.expects(:consultar_nfse_por_rps_envio).returns(fixture)
|
72
72
|
subject.request
|
73
73
|
response = subject.response
|
@@ -114,6 +114,7 @@ describe BrNfe::Service::Betha::V1::ConsultaNfsPorRps do
|
|
114
114
|
nf.cnae_code.must_equal '6202300'
|
115
115
|
nf.description.must_equal 'Descrição: 1 MENSALIDADE WEBSITE: R$ 49,00'
|
116
116
|
nf.codigo_municipio.must_equal '4204202'
|
117
|
+
nf.municipio_incidencia.must_equal '4204202'
|
117
118
|
nf.valor_total_servicos.must_equal '49'
|
118
119
|
nf.iss_retido.must_equal '2'
|
119
120
|
nf.total_iss.must_equal '0'
|
@@ -131,7 +132,6 @@ describe BrNfe::Service::Betha::V1::ConsultaNfsPorRps do
|
|
131
132
|
nf.desconto_incondicionado.must_equal '0'
|
132
133
|
nf.responsavel_retencao.must_be_nil
|
133
134
|
nf.numero_processo.must_be_nil
|
134
|
-
nf.municipio_incidencia.must_be_nil
|
135
135
|
nf.orgao_gerador_municipio.must_equal '4204202'
|
136
136
|
nf.orgao_gerador_uf.must_equal 'SC'
|
137
137
|
nf.cancelamento_codigo.must_be_nil
|
@@ -145,7 +145,7 @@ describe BrNfe::Service::Betha::V1::ConsultaNfsPorRps do
|
|
145
145
|
nf.codigo_obra.must_be_nil
|
146
146
|
nf.codigo_art.must_be_nil
|
147
147
|
|
148
|
-
nf.destinatario.cpf_cnpj.must_equal '11111111111111'
|
148
|
+
nf.destinatario.cpf_cnpj.must_equal '11111111111111'
|
149
149
|
end
|
150
150
|
end
|
151
151
|
|
@@ -17,7 +17,7 @@ describe BrNfe::Service::Betha::V1::ConsultaNfse do
|
|
17
17
|
it { subject.url_wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/consultarNfse?wsdl' }
|
18
18
|
end
|
19
19
|
context "for env test" do
|
20
|
-
before do
|
20
|
+
before do
|
21
21
|
subject.env = :test
|
22
22
|
end
|
23
23
|
it { subject.url_wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarNfse?wsdl' }
|
@@ -30,7 +30,7 @@ describe BrNfe::Service::Betha::V1::ConsultaNfse do
|
|
30
30
|
|
31
31
|
describe "Validação do XML através do XSD" do
|
32
32
|
let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/betha/v1/xsd' }
|
33
|
-
|
33
|
+
|
34
34
|
describe "Validações a partir do arquivo XSD" do
|
35
35
|
it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
|
36
36
|
Dir.chdir(schemas_dir) do
|
@@ -52,13 +52,13 @@ describe BrNfe::Service::Betha::V1::ConsultaNfse do
|
|
52
52
|
subject.emitente.cpf_cnpj = '12345678901234'
|
53
53
|
content_xml = Nori.new.parse(subject.content_xml).deep_transform_keys!{|k| k.to_s.underscore.to_sym}
|
54
54
|
prestador = content_xml[:'ns1:consultar_nfse_envio'][:prestador]
|
55
|
-
|
55
|
+
|
56
56
|
prestador[:cnpj].must_equal '12345678901234'
|
57
57
|
prestador[:inscricao_municipal].must_be_nil
|
58
58
|
end
|
59
59
|
|
60
60
|
describe "#request and set response" do
|
61
|
-
before do
|
61
|
+
before do
|
62
62
|
savon.mock!
|
63
63
|
stub_request(:get, subject.url_wsdl).to_return(status: 200, body: read_fixture('service/wsdl/betha/v1/consultar_nfse.xml') )
|
64
64
|
end
|
@@ -77,7 +77,7 @@ describe BrNfe::Service::Betha::V1::ConsultaNfse do
|
|
77
77
|
|
78
78
|
it "Quando a requisição voltar com erro deve setar os erros corretamente" do
|
79
79
|
fixture = read_fixture('service/response/betha/v1/consulta_nfse/fault.xml')
|
80
|
-
|
80
|
+
|
81
81
|
savon.expects(:consultar_nfse_envio).returns(fixture)
|
82
82
|
subject.request
|
83
83
|
response = subject.response
|
@@ -124,6 +124,7 @@ describe BrNfe::Service::Betha::V1::ConsultaNfse do
|
|
124
124
|
nf.cnae_code.must_equal '6202300'
|
125
125
|
nf.description.must_equal 'Descrição: 1 Video Institucional. 1.600,00'
|
126
126
|
nf.codigo_municipio.must_equal '4204202'
|
127
|
+
nf.municipio_incidencia.must_equal '4204202'
|
127
128
|
nf.valor_total_servicos.must_equal '1600'
|
128
129
|
nf.iss_retido.must_equal '2'
|
129
130
|
nf.total_iss.must_equal '0'
|
@@ -141,7 +142,6 @@ describe BrNfe::Service::Betha::V1::ConsultaNfse do
|
|
141
142
|
nf.desconto_incondicionado.must_equal '0'
|
142
143
|
nf.responsavel_retencao.must_be_nil
|
143
144
|
nf.numero_processo.must_be_nil
|
144
|
-
nf.municipio_incidencia.must_be_nil
|
145
145
|
nf.orgao_gerador_municipio.must_equal '4204202'
|
146
146
|
nf.orgao_gerador_uf.must_equal 'SC'
|
147
147
|
nf.cancelamento_codigo.must_be_nil
|
@@ -155,7 +155,7 @@ describe BrNfe::Service::Betha::V1::ConsultaNfse do
|
|
155
155
|
nf.codigo_obra.must_be_nil
|
156
156
|
nf.codigo_art.must_be_nil
|
157
157
|
|
158
|
-
nf.destinatario.cpf_cnpj.must_equal '22222222222222'
|
158
|
+
nf.destinatario.cpf_cnpj.must_equal '22222222222222'
|
159
159
|
end
|
160
160
|
end
|
161
161
|
end
|
@@ -21,10 +21,10 @@ describe BrNfe::Service::Simpliss::V1::ConsultaLoteRps do
|
|
21
21
|
it "#soap_body_root_tag" do
|
22
22
|
subject.soap_body_root_tag.must_equal 'ConsultarLoteRps'
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
describe "Validação do XML através do XSD" do
|
26
26
|
let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/simpliss/v1/xsd' }
|
27
|
-
|
27
|
+
|
28
28
|
describe "Validações a partir do arquivo XSD" do
|
29
29
|
it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
|
30
30
|
# Só assim para passar na validação XSD.
|
@@ -34,7 +34,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaLoteRps do
|
|
34
34
|
subject.stubs(:namespace_identifier).returns(nil)
|
35
35
|
subject.stubs(:namespace_for_tags).returns(nil)
|
36
36
|
subject.stubs(:namespace_for_signature).returns(nil)
|
37
|
-
|
37
|
+
|
38
38
|
Dir.chdir(schemas_dir) do
|
39
39
|
schema = Nokogiri::XML::Schema(IO.read('nfse_3.xsd'))
|
40
40
|
document = Nokogiri::XML(subject.xml_builder)
|
@@ -46,7 +46,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaLoteRps do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
describe "#request and set response" do
|
49
|
-
before do
|
49
|
+
before do
|
50
50
|
savon.mock!
|
51
51
|
stub_request(:get, subject.url_wsdl).to_return(status: 200, body: read_fixture('service/wsdl/simpliss/v1/nfseservice.xml') )
|
52
52
|
end
|
@@ -54,7 +54,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaLoteRps do
|
|
54
54
|
|
55
55
|
it "Quando a requisição voltar com erro deve setar os erros corretamente" do
|
56
56
|
fixture = read_fixture('service/response/simpliss/v1/consulta_lote_rps/fault.xml')
|
57
|
-
|
57
|
+
|
58
58
|
savon.expects(:consultar_lote_rps).returns(fixture)
|
59
59
|
subject.request
|
60
60
|
response = subject.response
|
@@ -104,6 +104,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaLoteRps do
|
|
104
104
|
nf.cnae_code.must_equal '6202300'
|
105
105
|
nf.description.must_equal '1 TESTE WEBSERVICE: R$ 5,00'
|
106
106
|
nf.codigo_municipio.must_equal '4204202'
|
107
|
+
nf.municipio_incidencia.must_equal '4204202'
|
107
108
|
nf.valor_total_servicos.must_equal '10'
|
108
109
|
nf.iss_retido.must_equal '2'
|
109
110
|
nf.total_iss.must_equal '0.2'
|
@@ -121,7 +122,6 @@ describe BrNfe::Service::Simpliss::V1::ConsultaLoteRps do
|
|
121
122
|
nf.desconto_incondicionado.must_be_nil
|
122
123
|
nf.responsavel_retencao.must_be_nil
|
123
124
|
nf.numero_processo.must_be_nil
|
124
|
-
nf.municipio_incidencia.must_be_nil
|
125
125
|
nf.orgao_gerador_municipio.must_equal '4204202'
|
126
126
|
nf.orgao_gerador_uf.must_equal 'SC'
|
127
127
|
nf.cancelamento_codigo.must_be_nil
|
@@ -135,7 +135,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaLoteRps do
|
|
135
135
|
nf.codigo_obra.must_be_nil
|
136
136
|
nf.codigo_art.must_be_nil
|
137
137
|
|
138
|
-
nf.destinatario.cpf_cnpj.must_equal '12345678901234'
|
138
|
+
nf.destinatario.cpf_cnpj.must_equal '12345678901234'
|
139
139
|
end
|
140
140
|
|
141
141
|
it "Quando encontrar uma nota fiscal com as informações completas" do
|
@@ -3,7 +3,7 @@ require 'test_helper'
|
|
3
3
|
describe BrNfe::Service::Simpliss::V1::ConsultaNfsPorRps do
|
4
4
|
subject { FactoryGirl.build(:service_simpliss_v1_consulta_nfs_por_rps, emitente: emitente) }
|
5
5
|
let(:emitente) { FactoryGirl.build(:service_emitente) }
|
6
|
-
let(:rps) { subject.rps }
|
6
|
+
let(:rps) { subject.rps }
|
7
7
|
|
8
8
|
describe "superclass" do
|
9
9
|
it { subject.class.superclass.must_equal BrNfe::Service::Simpliss::V1::Base }
|
@@ -23,7 +23,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaNfsPorRps do
|
|
23
23
|
|
24
24
|
describe "Validação do XML através do XSD" do
|
25
25
|
let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/simpliss/v1/xsd' }
|
26
|
-
|
26
|
+
|
27
27
|
describe "Validações a partir do arquivo XSD" do
|
28
28
|
# Só assim para passar na validação XSD.
|
29
29
|
it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
|
@@ -33,8 +33,8 @@ describe BrNfe::Service::Simpliss::V1::ConsultaNfsPorRps do
|
|
33
33
|
subject.stubs(:namespace_identifier).returns(nil)
|
34
34
|
subject.stubs(:namespace_for_tags).returns(nil)
|
35
35
|
subject.stubs(:namespace_for_signature).returns(nil)
|
36
|
-
|
37
|
-
|
36
|
+
|
37
|
+
|
38
38
|
Dir.chdir(schemas_dir) do
|
39
39
|
schema = Nokogiri::XML::Schema(IO.read('nfse_3.xsd'))
|
40
40
|
document = Nokogiri::XML(subject.xml_builder)
|
@@ -46,7 +46,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaNfsPorRps do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
describe "#request and set response" do
|
49
|
-
before do
|
49
|
+
before do
|
50
50
|
savon.mock!
|
51
51
|
stub_request(:get, subject.url_wsdl).to_return(status: 200, body: read_fixture('service/wsdl/simpliss/v1/nfseservice.xml') )
|
52
52
|
end
|
@@ -54,7 +54,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaNfsPorRps do
|
|
54
54
|
|
55
55
|
it "Quando a requisição voltar com erro deve setar os erros corretamente" do
|
56
56
|
fixture = read_fixture('service/response/simpliss/v1/consulta_nfse_por_rps/fault.xml')
|
57
|
-
|
57
|
+
|
58
58
|
savon.expects(:consultar_nfse_por_rps).returns(fixture)
|
59
59
|
subject.request
|
60
60
|
response = subject.response
|
@@ -101,6 +101,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaNfsPorRps do
|
|
101
101
|
nf.cnae_code.must_equal '6202300'
|
102
102
|
nf.description.must_equal '1 TESTE WEBSERVICE: R$ 5,00'
|
103
103
|
nf.codigo_municipio.must_equal '4204202'
|
104
|
+
nf.municipio_incidencia.must_equal '4204202'
|
104
105
|
nf.valor_total_servicos.must_equal '10'
|
105
106
|
nf.iss_retido.must_equal '2'
|
106
107
|
nf.total_iss.must_equal '0.2'
|
@@ -118,7 +119,6 @@ describe BrNfe::Service::Simpliss::V1::ConsultaNfsPorRps do
|
|
118
119
|
nf.desconto_incondicionado.must_be_nil
|
119
120
|
nf.responsavel_retencao.must_be_nil
|
120
121
|
nf.numero_processo.must_be_nil
|
121
|
-
nf.municipio_incidencia.must_be_nil
|
122
122
|
nf.orgao_gerador_municipio.must_equal '4204202'
|
123
123
|
nf.orgao_gerador_uf.must_equal 'SC'
|
124
124
|
nf.cancelamento_codigo.must_be_nil
|
@@ -132,7 +132,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaNfsPorRps do
|
|
132
132
|
nf.codigo_obra.must_be_nil
|
133
133
|
nf.codigo_art.must_be_nil
|
134
134
|
|
135
|
-
nf.destinatario.cpf_cnpj.must_equal '12345678901234'
|
135
|
+
nf.destinatario.cpf_cnpj.must_equal '12345678901234'
|
136
136
|
end
|
137
137
|
|
138
138
|
it "Quando encontrar uma nota fiscal com as informações completas" do
|
@@ -3,7 +3,7 @@ require 'test_helper'
|
|
3
3
|
describe BrNfe::Service::Simpliss::V1::ConsultaNfse do
|
4
4
|
subject { FactoryGirl.build(:service_simpliss_v1_consulta_nfse, emitente: emitente) }
|
5
5
|
let(:emitente) { FactoryGirl.build(:service_emitente) }
|
6
|
-
let(:rps) { subject.rps }
|
6
|
+
let(:rps) { subject.rps }
|
7
7
|
|
8
8
|
describe "superclass" do
|
9
9
|
it { subject.class.superclass.must_equal BrNfe::Service::Simpliss::V1::Base }
|
@@ -22,7 +22,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaNfse do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
describe "#request and set response" do
|
25
|
-
before do
|
25
|
+
before do
|
26
26
|
savon.mock!
|
27
27
|
stub_request(:get, subject.url_wsdl).to_return(status: 200, body: read_fixture('service/wsdl/simpliss/v1/nfseservice.xml') )
|
28
28
|
end
|
@@ -41,7 +41,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaNfse do
|
|
41
41
|
|
42
42
|
it "Quando a requisição voltar com erro deve setar os erros corretamente" do
|
43
43
|
fixture = read_fixture('service/response/simpliss/v1/consulta_nfse/fault.xml')
|
44
|
-
|
44
|
+
|
45
45
|
savon.expects(:consultar_nfse).returns(fixture)
|
46
46
|
subject.request
|
47
47
|
response = subject.response
|
@@ -88,6 +88,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaNfse do
|
|
88
88
|
nf.cnae_code.must_equal '6202300'
|
89
89
|
nf.description.must_equal '1 TESTE WEBSERVICE: R$ 5,00'
|
90
90
|
nf.codigo_municipio.must_equal '4204202'
|
91
|
+
nf.municipio_incidencia.must_equal '4204202'
|
91
92
|
nf.valor_total_servicos.must_equal '10'
|
92
93
|
nf.iss_retido.must_equal '2'
|
93
94
|
nf.total_iss.must_equal '0.2'
|
@@ -105,7 +106,6 @@ describe BrNfe::Service::Simpliss::V1::ConsultaNfse do
|
|
105
106
|
nf.desconto_incondicionado.must_be_nil
|
106
107
|
nf.responsavel_retencao.must_be_nil
|
107
108
|
nf.numero_processo.must_be_nil
|
108
|
-
nf.municipio_incidencia.must_be_nil
|
109
109
|
nf.orgao_gerador_municipio.must_equal '4204202'
|
110
110
|
nf.orgao_gerador_uf.must_equal 'SC'
|
111
111
|
nf.cancelamento_codigo.must_be_nil
|
@@ -119,7 +119,7 @@ describe BrNfe::Service::Simpliss::V1::ConsultaNfse do
|
|
119
119
|
nf.codigo_obra.must_be_nil
|
120
120
|
nf.codigo_art.must_be_nil
|
121
121
|
|
122
|
-
nf.destinatario.cpf_cnpj.must_equal '12345678901234'
|
122
|
+
nf.destinatario.cpf_cnpj.must_equal '12345678901234'
|
123
123
|
end
|
124
124
|
|
125
125
|
it "Quando encontrar uma nota fiscal com as informações completas" do
|
@@ -3,7 +3,7 @@ require 'test_helper'
|
|
3
3
|
describe BrNfe::Service::Thema::V1::ConsultaNfse do
|
4
4
|
subject { FactoryGirl.build(:service_thema_v1_consulta_nfse, emitente: emitente) }
|
5
5
|
let(:emitente) { FactoryGirl.build(:service_emitente) }
|
6
|
-
let(:rps) { subject.rps }
|
6
|
+
let(:rps) { subject.rps }
|
7
7
|
|
8
8
|
describe "superclass" do
|
9
9
|
it { subject.class.superclass.must_equal BrNfe::Service::Thema::V1::Base }
|
@@ -38,13 +38,13 @@ describe BrNfe::Service::Thema::V1::ConsultaNfse do
|
|
38
38
|
it "ambiente de testes" do
|
39
39
|
subject.env = :test
|
40
40
|
subject.url_wsdl.must_equal 'http://nfsehml.gaspar.sc.gov.br/nfse/services/NFSEconsulta?wsdl'
|
41
|
-
end
|
42
|
-
end
|
41
|
+
end
|
42
|
+
end
|
43
43
|
end
|
44
44
|
|
45
45
|
describe "Validação do XML através do XSD" do
|
46
46
|
let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/thema/v1/xsd' }
|
47
|
-
|
47
|
+
|
48
48
|
describe "Validações a partir do arquivo XSD" do
|
49
49
|
it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
|
50
50
|
Dir.chdir(schemas_dir) do
|
@@ -58,7 +58,7 @@ describe BrNfe::Service::Thema::V1::ConsultaNfse do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
describe "#request and set response" do
|
61
|
-
before do
|
61
|
+
before do
|
62
62
|
savon.mock!
|
63
63
|
stub_request(:get, subject.url_wsdl).to_return(status: 200, body: read_fixture('service/wsdl/thema/v1/nfse_consulta.xml') )
|
64
64
|
end
|
@@ -77,7 +77,7 @@ describe BrNfe::Service::Thema::V1::ConsultaNfse do
|
|
77
77
|
|
78
78
|
it "Quando a requisição voltar com erro deve setar os erros corretamente" do
|
79
79
|
fixture = read_fixture('service/response/thema/v1/consulta_nfse/fault.xml')
|
80
|
-
|
80
|
+
|
81
81
|
savon.expects(:consultar_nfse).returns(fixture)
|
82
82
|
subject.request
|
83
83
|
response = subject.response
|
@@ -124,6 +124,7 @@ describe BrNfe::Service::Thema::V1::ConsultaNfse do
|
|
124
124
|
nf.cnae_code.must_equal '6202300'
|
125
125
|
nf.description.must_equal 'SERVICO DE COMINICACAO WEB DIGITAL 1.700,00'
|
126
126
|
nf.codigo_municipio.must_equal '4204202'
|
127
|
+
nf.municipio_incidencia.must_equal '4204202'
|
127
128
|
nf.valor_total_servicos.must_equal '10'
|
128
129
|
nf.iss_retido.must_equal '2'
|
129
130
|
nf.total_iss.must_equal '0.2'
|
@@ -141,7 +142,6 @@ describe BrNfe::Service::Thema::V1::ConsultaNfse do
|
|
141
142
|
nf.desconto_incondicionado.must_equal '0'
|
142
143
|
nf.responsavel_retencao.must_be_nil
|
143
144
|
nf.numero_processo.must_be_nil
|
144
|
-
nf.municipio_incidencia.must_be_nil
|
145
145
|
nf.orgao_gerador_municipio.must_equal '4205902'
|
146
146
|
nf.orgao_gerador_uf.must_equal 'SC'
|
147
147
|
nf.cancelamento_codigo.must_be_nil
|
@@ -219,7 +219,7 @@ describe BrNfe::Service::Thema::V1::ConsultaNfse do
|
|
219
219
|
nf.cancelamento_data_hora.must_be_nil
|
220
220
|
nf.cancelamento_sucesso.must_equal false
|
221
221
|
nf.nfe_substituidora.must_be_nil
|
222
|
-
|
222
|
+
|
223
223
|
nf.emitente.cnpj.must_equal '65978078000120'
|
224
224
|
nf.emitente.inscricao_municipal.must_equal '11849'
|
225
225
|
nf.emitente.razao_social.must_equal 'EMPRESA EMITENTE LTDA'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: br_nfe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bruno M. Mergen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|