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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 80696ac8940bce0f2a47e9bb39a4961cff396b4e
4
- data.tar.gz: d42098edc7c7d84d6f2c6ea4a093816bbfd70b07
3
+ metadata.gz: ecb37b783880ee4dca0729df8c6ef2202691ed9a
4
+ data.tar.gz: 3300b9040e1c731b77493a9858bdd510126ae9cf
5
5
  SHA512:
6
- metadata.gz: 2c9e451fcfa2ab498018eba404fd9659d9e03aa4a581249392906180725ecbe0a3c5cc3184fff5f3d11518481f1c6b889e7cc83b8231397306b723b8a4f3eb5c
7
- data.tar.gz: f638d8c8e123db5f5bbc84ac5e2230730eaa89628e47bf7045bd2669f704e6aac9396944a45e7b7e273cb890c66492a5474040802d3c1821a839bb4f9626e5e3
6
+ metadata.gz: 45cf266202c458e4676336b0ea6ab8c501b2ed3493e54cc63b5318281f90910d6189997fe071ce46b31c5a68d6668819406481578051ac05c3169300c9c4732b
7
+ data.tar.gz: 38ed413b426bb5291596874060a7bb0e51805924b0579e4bb5eb330689f3e02b79ae405ec384e26f1f4a5f2f7f4ba664a5279bedc2fa85dc8addcb4669d51853
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- br_nfe (2.2.0)
4
+ br_nfe (2.3.1)
5
5
  activemodel (~> 4.2)
6
6
  activesupport (~> 4.2)
7
7
  nokogiri (~> 1.6)
@@ -203,4 +203,4 @@ DEPENDENCIES
203
203
  webmock
204
204
 
205
205
  BUNDLED WITH
206
- 1.11.2
206
+ 1.15.1
@@ -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
- = render_xml('signature_sh1', data_xml: infNFe, uri: "NFe#{nfe.chave_de_acesso}").html_safe
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
- attr_accessor :municipio_incidencia
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
 
@@ -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
- attr_accessor :municipio_incidencia
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.codigo_municipio)
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.codigo_municipio)
14
+ *{tag: "#{namespace_for_tags}CodigoMunicipio"} = ts_codigo_municipio_ibge(rps.municipio_incidencia)
@@ -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 = 0 #corrige bugs ou traz melhorias em implementações já existentes
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'
@@ -45,7 +45,6 @@ FactoryGirl.define do
45
45
  iss_retido true
46
46
  total_iss_retido 5.55
47
47
  valor_liquido 349.00
48
- municipio_incidencia '111'
49
48
  end
50
49
  end
51
50
  end
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.0
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-07-22 00:00:00.000000000 Z
11
+ date: 2017-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake