br_nfe 2.3.0 → 2.3.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|