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 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