br_nfe 2.0.0 → 2.1.0

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.
Files changed (199) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/lib/br_nfe/active_model_base.rb +0 -5
  4. data/lib/br_nfe/base.rb +116 -7
  5. data/lib/br_nfe/helper/values_ts/service_v1.rb +15 -11
  6. data/lib/br_nfe/response/service/build_response.rb +230 -53
  7. data/lib/br_nfe/response/service/nota_fiscal.rb +9 -0
  8. data/lib/br_nfe/response/service/paths/base.rb +93 -59
  9. data/lib/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta.rb +2 -2
  10. data/lib/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta.rb +2 -2
  11. data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta.rb +2 -2
  12. data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta.rb +2 -2
  13. data/lib/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta.rb +4 -4
  14. data/lib/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta.rb +8 -8
  15. data/lib/br_nfe/response/service/paths/v1/tc_nfse.rb +201 -57
  16. data/lib/br_nfe/service/base.rb +104 -5
  17. data/lib/br_nfe/service/betha/base.rb +5 -0
  18. data/lib/br_nfe/service/betha/v1/cancelamento_nfs.rb +1 -4
  19. data/lib/br_nfe/service/betha/v1/consulta_lote_rps.rb +1 -4
  20. data/lib/br_nfe/service/betha/v1/consulta_nfs_por_rps.rb +1 -4
  21. data/lib/br_nfe/service/betha/v1/consulta_nfse.rb +1 -4
  22. data/lib/br_nfe/service/betha/v1/consulta_situacao_lote_rps.rb +1 -3
  23. data/lib/br_nfe/service/betha/v1/gateway.rb +1 -1
  24. data/lib/br_nfe/service/betha/v1/recepcao_lote_rps.rb +1 -3
  25. data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta.rb +5 -1
  26. data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta.rb +5 -1
  27. data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +5 -1
  28. data/lib/br_nfe/service/concerns/rules/cancelamento_nfs.rb +5 -0
  29. data/lib/br_nfe/service/rps.rb +13 -4
  30. data/lib/br_nfe/service/simpliss/v1/base.rb +79 -0
  31. data/lib/br_nfe/service/simpliss/v1/cancela_nfse.rb +30 -0
  32. data/lib/br_nfe/service/simpliss/v1/consulta_lote_rps.rb +38 -0
  33. data/lib/br_nfe/service/simpliss/v1/consulta_nfs_por_rps.rb +31 -0
  34. data/lib/br_nfe/service/simpliss/v1/consulta_nfse.rb +30 -0
  35. data/lib/br_nfe/service/simpliss/v1/consulta_situacao_lote_rps.rb +29 -0
  36. data/lib/br_nfe/service/simpliss/v1/recepcao_lote_rps.rb +35 -0
  37. data/lib/br_nfe/service/simpliss/v1/response_paths/servico_cancelar_nfse_resposta.rb +22 -0
  38. data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_lote_rps_resposta.rb +25 -0
  39. data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_nfse_resposta.rb +25 -0
  40. data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +25 -0
  41. data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_situacao_lote_rps_resposta.rb +31 -0
  42. data/lib/br_nfe/service/simpliss/v1/response_paths/servico_enviar_lote_rps_resposta.rb +36 -0
  43. data/lib/br_nfe/service/simpliss/v1/xml/_login.xml.slim +3 -0
  44. data/lib/br_nfe/service/simpliss/v1/xml/_tc_dados_servico.xml.slim +18 -0
  45. data/lib/br_nfe/service/simpliss/v1/xml/_tc_item_servico.xml.slim +3 -0
  46. data/lib/br_nfe/service/simpliss/v1/xml/servico_cancelar_nfse_envio.xml.slim +11 -0
  47. data/lib/br_nfe/service/simpliss/v1/xml/servico_consultar_lote_rps_envio.xml.slim +7 -0
  48. data/lib/br_nfe/service/simpliss/v1/xml/servico_consultar_nfse_envio.xml.slim +22 -0
  49. data/lib/br_nfe/service/simpliss/v1/xml/servico_consultar_nfse_rps_envio.xml.slim +8 -0
  50. data/lib/br_nfe/service/simpliss/v1/xml/servico_consultar_situacao_lote_rps_envio.xml.slim +7 -0
  51. data/lib/br_nfe/service/simpliss/v1/xml/servico_enviar_lote_rps_envio.xml.slim +11 -0
  52. data/lib/br_nfe/service/thema/v1/base.rb +48 -2
  53. data/lib/br_nfe/service/thema/v1/cancela_nfse.rb +14 -5
  54. data/lib/br_nfe/service/thema/v1/consulta_lote_rps.rb +5 -4
  55. data/lib/br_nfe/service/thema/v1/consulta_nfs_por_rps.rb +5 -4
  56. data/lib/br_nfe/service/thema/v1/consulta_nfse.rb +5 -4
  57. data/lib/br_nfe/service/thema/v1/consulta_situacao_lote_rps.rb +1 -4
  58. data/lib/br_nfe/service/thema/v1/recepcao_lote_rps.rb +19 -5
  59. data/lib/br_nfe/service/thema/v1/recepcao_lote_rps_limitado.rb +1 -1
  60. data/lib/br_nfe/service/thema/v1/response_paths/servico_cancelar_nfse_resposta.rb +17 -0
  61. data/lib/br_nfe/service/thema/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +19 -0
  62. data/lib/br_nfe/service/xml/v1/_tc_contato.xml.slim +2 -2
  63. data/lib/br_nfe/service/xml/v1/_tc_cpf_cnpj.xml.slim +2 -2
  64. data/lib/br_nfe/service/xml/v1/_tc_dados_construcao_civil.xml.slim +2 -2
  65. data/lib/br_nfe/service/xml/v1/_tc_dados_prestador.xml.slim +5 -5
  66. data/lib/br_nfe/service/xml/v1/_tc_dados_servico.xml.slim +6 -6
  67. data/lib/br_nfe/service/xml/v1/_tc_dados_tomador.xml.slim +4 -4
  68. data/lib/br_nfe/service/xml/v1/_tc_endereco.xml.slim +7 -7
  69. data/lib/br_nfe/service/xml/v1/_tc_identificacao_intermediario_servico.xml.slim +3 -3
  70. data/lib/br_nfe/service/xml/v1/_tc_identificacao_nfse.xml.slim +4 -4
  71. data/lib/br_nfe/service/xml/v1/_tc_identificacao_orgao_gerador.xml.slim +2 -2
  72. data/lib/br_nfe/service/xml/v1/_tc_identificacao_prestador.xml.slim +2 -2
  73. data/lib/br_nfe/service/xml/v1/_tc_identificacao_rps.xml.slim +3 -3
  74. data/lib/br_nfe/service/xml/v1/_tc_identificacao_tomador.xml.slim +2 -2
  75. data/lib/br_nfe/service/xml/v1/_tc_inf_pedido_cancelamento.xml.slim +2 -2
  76. data/lib/br_nfe/service/xml/v1/_tc_inf_rps.xml.slim +13 -13
  77. data/lib/br_nfe/service/xml/v1/_tc_lote_rps.xml.slim +6 -6
  78. data/lib/br_nfe/service/xml/v1/_tc_pedido_cancelamento.xml.slim +1 -1
  79. data/lib/br_nfe/service/xml/v1/_tc_rps.xml.slim +2 -2
  80. data/lib/br_nfe/service/xml/v1/_tc_valores.xml.slim +16 -17
  81. data/lib/br_nfe/service/xml/v1/servico_cancelar_nfse_envio.xml.slim +3 -4
  82. data/lib/br_nfe/service/xml/v1/servico_consultar_lote_rps_envio.xml.slim +3 -3
  83. data/lib/br_nfe/service/xml/v1/servico_consultar_nfse_envio.xml.slim +8 -8
  84. data/lib/br_nfe/service/xml/v1/servico_consultar_nfse_rps_envio.xml.slim +3 -3
  85. data/lib/br_nfe/service/xml/v1/servico_consultar_situacao_lote_rps_envio.xml.slim +3 -3
  86. data/lib/br_nfe/service/xml/v1/servico_enviar_lote_rps_envio.xml.slim +3 -3
  87. data/lib/br_nfe/version.rb +1 -1
  88. data/lib/br_nfe/xml/_signed_info_sh1.xml.slim +9 -9
  89. data/lib/br_nfe/xml/signature_sh1.xml.slim +5 -5
  90. data/lib/br_nfe.rb +26 -10
  91. data/test/br_nfe/base_test.rb +5 -5
  92. data/test/br_nfe/helper/values_ts/service_v1_test.rb +376 -0
  93. data/test/br_nfe/response/service/build_response_test.rb +1 -173
  94. data/test/br_nfe/response/service/paths/base_test.rb +61 -64
  95. data/test/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta_test.rb +2 -2
  96. data/test/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta_test.rb +2 -2
  97. data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta_test.rb +2 -2
  98. data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta_test.rb +2 -2
  99. data/test/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta_test.rb +3 -3
  100. data/test/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta_test.rb +4 -4
  101. data/test/br_nfe/response/service/paths/v1/tc_nfse_test.rb +27 -31
  102. data/test/br_nfe/service/base_test.rb +206 -11
  103. data/test/br_nfe/service/betha/base_test.rb +9 -0
  104. data/test/br_nfe/service/betha/v1/cancelamento_nfs_test.rb +0 -6
  105. data/test/br_nfe/service/betha/v1/consulta_lote_rps_test.rb +0 -6
  106. data/test/br_nfe/service/betha/v1/consulta_nfs_por_rps_test.rb +0 -4
  107. data/test/br_nfe/service/betha/v1/consulta_nfse_test.rb +0 -4
  108. data/test/br_nfe/service/betha/v1/consulta_situacao_lote_rps_test.rb +1 -5
  109. data/test/br_nfe/service/betha/v1/gateway_test.rb +4 -2
  110. data/test/br_nfe/service/betha/v1/recepcao_lote_rps_test.rb +0 -4
  111. data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta_test.rb +1 -1
  112. data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta_test.rb +1 -1
  113. data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta_test.rb +1 -1
  114. data/test/br_nfe/service/rps_test.rb +39 -6
  115. data/test/br_nfe/service/simpliss/v1/base_test.rb +102 -0
  116. data/test/br_nfe/service/simpliss/v1/cancela_nfse_test.rb +97 -0
  117. data/test/br_nfe/service/simpliss/v1/consulta_lote_rps_test.rb +241 -0
  118. data/test/br_nfe/service/simpliss/v1/consulta_nfs_por_rps_test.rb +239 -0
  119. data/test/br_nfe/service/simpliss/v1/consulta_nfse_test.rb +226 -0
  120. data/test/br_nfe/service/simpliss/v1/consulta_situacao_lote_rps_test.rb +122 -0
  121. data/test/br_nfe/service/simpliss/v1/recepcao_lote_rps_test.rb +105 -0
  122. data/test/br_nfe/service/simpliss/v1/xsd/nfse_3.xsd +735 -0
  123. data/test/br_nfe/service/simpliss/v1/xsd/xmldsig-core-schema20020212.xsd +318 -0
  124. data/test/br_nfe/service/thema/v1/base_test.rb +23 -2
  125. data/test/br_nfe/service/thema/v1/cancela_nfse_test.rb +69 -3
  126. data/test/br_nfe/service/thema/v1/consulta_lote_rps_test.rb +134 -4
  127. data/test/br_nfe/service/thema/v1/consulta_nfs_por_rps_test.rb +131 -4
  128. data/test/br_nfe/service/thema/v1/consulta_nfse_test.rb +214 -4
  129. data/test/br_nfe/service/thema/v1/consulta_situacao_lote_rps_test.rb +97 -4
  130. data/test/br_nfe/service/thema/v1/recepcao_lote_rps_limitado_test.rb +109 -0
  131. data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test.rb +72 -4
  132. data/test/factories/service/rps.rb +17 -16
  133. data/test/factories/service/{sc/gaspar/recepcao_lote_rps_limitado.rb → simpliss/v1/base.rb} +1 -3
  134. data/test/factories/service/{sc/gaspar → simpliss/v1}/cancela_nfse.rb +2 -2
  135. data/test/factories/service/simpliss/v1/consulta_lote_rps.rb +7 -0
  136. data/test/factories/service/{sc/gaspar → simpliss/v1}/consulta_nfs_por_rps.rb +1 -1
  137. data/test/factories/service/{sc/gaspar → simpliss/v1}/consulta_nfse.rb +1 -1
  138. data/test/factories/service/simpliss/v1/consulta_situacao_lote_rps.rb +6 -0
  139. data/test/factories/service/{sc/gaspar → simpliss/v1}/recepcao_lote_rps.rb +1 -1
  140. data/test/fixtures/service/response/simpliss/v1/cancela_nfse/fault.xml +21 -0
  141. data/test/fixtures/service/response/simpliss/v1/cancela_nfse/success.xml +26 -0
  142. data/test/fixtures/service/response/simpliss/v1/consulta_lote_rps/fault.xml +21 -0
  143. data/test/fixtures/service/response/simpliss/v1/consulta_lote_rps/nfse_complete.xml +134 -0
  144. data/test/fixtures/service/response/simpliss/v1/consulta_lote_rps/nfse_simple.xml +100 -0
  145. data/test/fixtures/service/response/simpliss/v1/consulta_nfse/fault.xml +16 -0
  146. data/test/fixtures/service/response/simpliss/v1/consulta_nfse/nfs_empty.xml +10 -0
  147. data/test/fixtures/service/response/simpliss/v1/consulta_nfse/nfse_complete.xml +134 -0
  148. data/test/fixtures/service/response/simpliss/v1/consulta_nfse/nfse_simple.xml +100 -0
  149. data/test/fixtures/service/response/simpliss/v1/consulta_nfse_por_rps/fault.xml +16 -0
  150. data/test/fixtures/service/response/simpliss/v1/consulta_nfse_por_rps/nfse_complete.xml +132 -0
  151. data/test/fixtures/service/response/simpliss/v1/consulta_nfse_por_rps/nfse_simple.xml +98 -0
  152. data/test/fixtures/service/response/simpliss/v1/consulta_situacao_lote_rps/error.xml +11 -0
  153. data/test/fixtures/service/response/simpliss/v1/consulta_situacao_lote_rps/fault.xml +16 -0
  154. data/test/fixtures/service/response/simpliss/v1/consulta_situacao_lote_rps/success.xml +11 -0
  155. data/test/fixtures/service/response/simpliss/v1/consulta_situacao_lote_rps/unprocessed.xml +11 -0
  156. data/test/fixtures/service/response/simpliss/v1/consulta_situacao_lote_rps/unreceived.xml +11 -0
  157. data/test/fixtures/service/response/simpliss/v1/recepcao_lote_rps/error.xml +16 -0
  158. data/test/fixtures/service/response/simpliss/v1/recepcao_lote_rps/success.xml +12 -0
  159. data/test/fixtures/service/response/thema/v1/cancela_nfse/fault.xml +33 -0
  160. data/test/fixtures/service/response/thema/v1/cancela_nfse/success.xml +30 -0
  161. data/test/fixtures/service/response/thema/v1/consulta_lote_rps/fault.xml +19 -0
  162. data/test/fixtures/service/response/thema/v1/consulta_lote_rps/nfse_complete.xml +109 -0
  163. data/test/fixtures/service/response/thema/v1/consulta_nfse/fault.xml +20 -0
  164. data/test/fixtures/service/response/thema/v1/consulta_nfse/nfs_empty.xml +14 -0
  165. data/test/fixtures/service/response/thema/v1/consulta_nfse/nfse_complete.xml +111 -0
  166. data/test/fixtures/service/response/thema/v1/consulta_nfse/nfse_simple.xml +111 -0
  167. data/test/fixtures/service/response/thema/v1/consulta_nfse_por_rps/fault.xml +23 -0
  168. data/test/fixtures/service/response/thema/v1/consulta_nfse_por_rps/nfse_complete.xml +110 -0
  169. data/test/fixtures/service/response/thema/v1/consulta_situacao_lote_rps/error.xml +14 -0
  170. data/test/fixtures/service/response/thema/v1/consulta_situacao_lote_rps/fault.xml +15 -0
  171. data/test/fixtures/service/response/thema/v1/consulta_situacao_lote_rps/success.xml +14 -0
  172. data/test/fixtures/service/response/thema/v1/consulta_situacao_lote_rps/unprocessed.xml +14 -0
  173. data/test/fixtures/service/response/thema/v1/consulta_situacao_lote_rps/unreceived.xml +19 -0
  174. data/test/fixtures/service/response/thema/v1/recepcao_lote_rps/error.xml +17 -0
  175. data/test/fixtures/service/response/thema/v1/recepcao_lote_rps/success.xml +15 -0
  176. data/test/fixtures/service/response/thema/v1/recepcao_lote_rps_limitado/error.xml +19 -0
  177. data/test/fixtures/service/response/thema/v1/recepcao_lote_rps_limitado/success.xml +15 -0
  178. data/test/fixtures/service/thema/v1/cancelar_nfse_envio.xml +1 -0
  179. data/test/fixtures/service/thema/v1/cancelar_nfse_envio_signed.xml +2 -0
  180. data/test/fixtures/service/thema/v1/enviar_lote_rps.xml +1 -0
  181. data/test/fixtures/service/thema/v1/enviar_lote_rps_signed.xml +2 -0
  182. data/test/test_helper.rb +5 -0
  183. metadata +146 -37
  184. data/lib/br_nfe/service/sc/gaspar/cancela_nfse.rb +0 -13
  185. data/lib/br_nfe/service/sc/gaspar/consulta_lote_rps.rb +0 -13
  186. data/lib/br_nfe/service/sc/gaspar/consulta_nfs_por_rps.rb +0 -13
  187. data/lib/br_nfe/service/sc/gaspar/consulta_nfse.rb +0 -17
  188. data/lib/br_nfe/service/sc/gaspar/consulta_situacao_lote_rps.rb +0 -13
  189. data/lib/br_nfe/service/sc/gaspar/recepcao_lote_rps.rb +0 -13
  190. data/lib/br_nfe/service/sc/gaspar/recepcao_lote_rps_limitado.rb +0 -13
  191. data/test/br_nfe/service/sc/gaspar/cancela_nfse_test.rb +0 -21
  192. data/test/br_nfe/service/sc/gaspar/consulta_nfs_por_rps_test.rb +0 -21
  193. data/test/br_nfe/service/sc/gaspar/consulta_nfse_test.rb +0 -21
  194. data/test/br_nfe/service/sc/gaspar/consulta_situacao_lote_rps_test.rb +0 -21
  195. data/test/br_nfe/service/sc/gaspar/recepcao_lote_rps_limitado_test.rb +0 -22
  196. data/test/br_nfe/service/sc/gaspar/recepcao_lote_rps_test.rb +0 -22
  197. data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test_limitado.rb +0 -50
  198. data/test/factories/service/sc/gaspar/consulta_lote_rps.rb +0 -7
  199. data/test/factories/service/sc/gaspar/consulta_situacao_lote_rps.rb +0 -6
@@ -0,0 +1,97 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Simpliss::V1::CancelaNfse do
4
+ subject { FactoryGirl.build(:service_simpliss_v1_cancela_nfse, emitente: emitente) }
5
+ let(:emitente) { FactoryGirl.build(:emitente) }
6
+
7
+ describe "superclass" do
8
+ it { subject.class.superclass.must_equal BrNfe::Service::Simpliss::V1::Base }
9
+ end
10
+
11
+ it "deve conter as regras de BrNfe::Service::Concerns::Rules::CancelamentoNfs inclusas" do
12
+ subject.class.included_modules.must_include BrNfe::Service::Concerns::Rules::CancelamentoNfs
13
+ end
14
+
15
+ describe "#method_wsdl" do
16
+ it { subject.method_wsdl.must_equal :cancelar_nfse }
17
+ end
18
+
19
+ it "#response_root_path" do
20
+ subject.response_root_path.must_equal [:cancelar_nfse_response]
21
+ end
22
+
23
+ it "#body_xml_path" do
24
+ subject.body_xml_path.must_equal []
25
+ end
26
+
27
+ it "#soap_body_root_tag" do
28
+ subject.soap_body_root_tag.must_equal 'CancelarNfse'
29
+ end
30
+
31
+ describe "Validação do XML através do XSD" do
32
+ let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/simpliss/v1/xsd' }
33
+
34
+ describe "Validações a partir do arquivo XSD" do
35
+ it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
36
+ # Só assim para passar na validação XSD.
37
+ # o XSD não consegue validar os namespaces pois estão declarados na
38
+ # tag envelope.
39
+ subject.stubs(:message_namespaces).returns({'xmlns' => "http://www.sistema.com.br/Nfse/arquivos/nfse_3.xsd"})
40
+ subject.stubs(:namespace_identifier).returns(nil)
41
+ subject.stubs(:namespace_for_tags).returns(nil)
42
+ subject.stubs(:namespace_for_signature).returns(nil)
43
+
44
+ Dir.chdir(schemas_dir) do
45
+ schema = Nokogiri::XML::Schema(IO.read('nfse_3.xsd'))
46
+ document = Nokogiri::XML(subject.xml_builder)
47
+ errors = schema.validate(document)
48
+ errors.must_be_empty
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ describe "#request and set response" do
55
+ before { savon.mock! }
56
+ after { savon.unmock! }
57
+
58
+ it "Quando cancelou a NF com sucesso" do
59
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/cancela_nfse/success.xml')
60
+
61
+ savon.expects(:cancelar_nfse).returns(fixture)
62
+ subject.request
63
+ response = subject.response
64
+
65
+ response.cancelation_date_time.must_equal Time.parse('2016-07-29T09:38:24.4803985-03:00')
66
+ response.status.must_equal :success
67
+ response.successful_request?.must_equal true
68
+ end
69
+
70
+ it "Quando a requisição voltar com erro deve setar os erros corretamente" do
71
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/cancela_nfse/fault.xml')
72
+
73
+ savon.expects(:cancelar_nfse).returns(fixture)
74
+ subject.request
75
+ response = subject.response
76
+
77
+ response.protocolo.must_be_nil
78
+ response.data_recebimento.must_be_nil
79
+ response.numero_lote.must_be_nil
80
+ response.cancelation_date_time.must_be_nil
81
+
82
+ response.status.must_equal :falied
83
+
84
+ response.error_messages.size.must_equal 2
85
+ response.error_messages[0][:code].must_equal 'E6'
86
+ response.error_messages[0][:message].must_equal 'Essa Nfs-e não pode ser cancelada através desse serviço, pois há crédito informado.'
87
+ response.error_messages[0][:solution].must_equal 'O cancelamento de uma Nfs-e com crédito deve ser feito através de processo administrativo aberto em uma repartição fazendária.'
88
+
89
+ response.error_messages[1][:code].must_equal 'E79'
90
+ response.error_messages[1][:message].must_equal 'Essa Nfs-e já está cancelada.'
91
+ response.error_messages[1][:solution].must_equal 'Confira e informe novamente os dados da Nfs-e que deseja cancelar.'
92
+
93
+ response.successful_request?.must_equal true
94
+ end
95
+ end
96
+
97
+ end
@@ -0,0 +1,241 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Simpliss::V1::ConsultaLoteRps do
4
+ subject { FactoryGirl.build(:service_simpliss_v1_consulta_lote_rps, emitente: emitente) }
5
+ let(:emitente) { FactoryGirl.build(:emitente) }
6
+
7
+ it { must validate_presence_of(:protocolo) }
8
+
9
+ describe "superclass" do
10
+ it { subject.class.superclass.must_equal BrNfe::Service::Simpliss::V1::Base }
11
+ end
12
+
13
+ describe "#method_wsdl" do
14
+ it { subject.method_wsdl.must_equal :consultar_lote_rps }
15
+ end
16
+
17
+ it "#response_root_path" do
18
+ subject.response_root_path.must_equal [:consultar_lote_rps_response]
19
+ end
20
+
21
+ it "#body_xml_path" do
22
+ subject.body_xml_path.must_equal []
23
+ end
24
+
25
+ it "#soap_body_root_tag" do
26
+ subject.soap_body_root_tag.must_equal 'ConsultarLoteRps'
27
+ end
28
+
29
+ describe "Validação do XML através do XSD" do
30
+ let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/simpliss/v1/xsd' }
31
+
32
+ describe "Validações a partir do arquivo XSD" do
33
+ it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
34
+ # Só assim para passar na validação XSD.
35
+ # o XSD não consegue validar os namespaces pois estão declarados na
36
+ # tag envelope.
37
+ subject.stubs(:message_namespaces).returns({'xmlns' => "http://www.sistema.com.br/Nfse/arquivos/nfse_3.xsd"})
38
+ subject.stubs(:namespace_identifier).returns(nil)
39
+ subject.stubs(:namespace_for_tags).returns(nil)
40
+ subject.stubs(:namespace_for_signature).returns(nil)
41
+
42
+ Dir.chdir(schemas_dir) do
43
+ schema = Nokogiri::XML::Schema(IO.read('nfse_3.xsd'))
44
+ document = Nokogiri::XML(subject.xml_builder)
45
+ errors = schema.validate(document)
46
+ errors.must_be_empty
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ describe "#request and set response" do
53
+ before { savon.mock! }
54
+ after { savon.unmock! }
55
+
56
+ it "Quando a requisição voltar com erro deve setar os erros corretamente" do
57
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_lote_rps/fault.xml')
58
+
59
+ savon.expects(:consultar_lote_rps).returns(fixture)
60
+ subject.request
61
+ response = subject.response
62
+
63
+ response.protocolo.must_be_nil
64
+ response.data_recebimento.must_be_nil
65
+ response.numero_lote.must_be_nil
66
+ response.status.must_equal :falied
67
+ response.error_messages.size.must_equal 2
68
+ response.error_messages[0][:code].must_equal 'E138'
69
+ response.error_messages[0][:message].must_equal 'CNPJ não autorizado a realizar o serviço.'
70
+ response.error_messages[0][:solution].must_equal 'Informe o CNPJ autorizado a executar o serviço.'
71
+ response.error_messages[1][:code].must_equal 'E157'
72
+ response.error_messages[1][:message].must_equal 'Usuário não está autorizado a utilizar esse serviço para esse contribuinte.'
73
+ response.error_messages[1][:solution].must_equal 'Solicite ao contribuinte autorização para utilizar o serviço em seu nome.'
74
+ response.successful_request?.must_equal true
75
+ end
76
+
77
+ it "Quando encontrar uma nota fiscal com as informações básicas preenchidas" do
78
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_lote_rps/nfse_simple.xml')
79
+ savon.expects(:consultar_lote_rps).returns(fixture)
80
+ subject.request
81
+ response = subject.response
82
+
83
+ response.notas_fiscais.size.must_equal 1
84
+ response.status.must_equal :success
85
+ response.successful_request?.must_equal true
86
+
87
+ nf = response.notas_fiscais[0]
88
+ nf.numero_nf.must_equal '4'
89
+ nf.codigo_verificacao.must_equal 'E6E7686366'
90
+ nf.data_emissao.must_equal DateTime.parse('2016-07-28T16:17:25.398921')
91
+ nf.url_nf.must_be_nil
92
+ nf.xml_nf[0..89].must_equal '<Nfse><InfNfse><Numero>4</Numero><CodigoVerificacao>E6E7686366</CodigoVerificacao><DataEmi'
93
+ nf.rps_numero.must_equal '10'
94
+ nf.rps_serie.must_equal 'SN'
95
+ nf.rps_tipo.must_equal '1'
96
+ nf.rps_situacao.must_be_nil
97
+ nf.rps_substituido_numero.must_be_nil
98
+ nf.rps_substituido_serie.must_be_nil
99
+ nf.rps_substituido_tipo.must_be_nil
100
+ nf.data_emissao_rps.must_equal Date.parse('2016-07-28')
101
+ nf.competencia.must_equal DateTime.parse('2016-07-28T00:00:00')
102
+ nf.natureza_operacao.must_equal '1'
103
+ nf.regime_especial_tributacao.must_equal '1'
104
+ nf.optante_simples_nacional.must_equal '1'
105
+ nf.incentivador_cultural.must_equal '2'
106
+ nf.outras_informacoes.must_equal 'Info'
107
+ nf.item_lista_servico.must_equal '1.07'
108
+ nf.cnae_code.must_equal '6202300'
109
+ nf.description.must_equal '1 TESTE WEBSERVICE: R$ 5,00'
110
+ nf.codigo_municipio.must_equal '4204202'
111
+ nf.total_services.must_equal '10'
112
+ nf.iss_retained.must_equal '2'
113
+ nf.total_iss.must_equal '0.2'
114
+ nf.base_calculation.must_equal '10'
115
+ nf.iss_tax_rate.must_equal '3.5'
116
+ nf.valor_liquido.must_equal '10'
117
+ nf.deductions.must_be_nil
118
+ nf.valor_pis.must_be_nil
119
+ nf.valor_cofins.must_be_nil
120
+ nf.valor_inss.must_be_nil
121
+ nf.valor_ir.must_be_nil
122
+ nf.valor_csll.must_be_nil
123
+ nf.outras_retencoes.must_be_nil
124
+ nf.desconto_condicionado.must_be_nil
125
+ nf.desconto_incondicionado.must_be_nil
126
+ nf.responsavel_retencao.must_be_nil
127
+ nf.numero_processo.must_be_nil
128
+ nf.municipio_incidencia.must_be_nil
129
+ nf.orgao_gerador_municipio.must_equal '4204202'
130
+ nf.orgao_gerador_uf.must_equal 'SC'
131
+ nf.cancelamento_codigo.must_be_nil
132
+ nf.cancelamento_numero_nf.must_be_nil
133
+ nf.cancelamento_cnpj.must_be_nil
134
+ nf.cancelamento_inscricao_municipal.must_be_nil
135
+ nf.cancelamento_municipio.must_be_nil
136
+ nf.cancelamento_sucesso.must_equal false
137
+ nf.cancelamento_data_hora.must_be_nil
138
+ nf.nfe_substituidora.must_be_nil
139
+ nf.codigo_obra.must_be_nil
140
+ nf.codigo_art.must_be_nil
141
+
142
+ nf.destinatario.cpf_cnpj.must_equal '12345678901234'
143
+ end
144
+
145
+ it "Quando encontrar uma nota fiscal com as informações completas" do
146
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_lote_rps/nfse_complete.xml')
147
+ savon.expects(:consultar_lote_rps).returns(fixture)
148
+ subject.request
149
+ response = subject.response
150
+
151
+ response.notas_fiscais.size.must_equal 1
152
+ response.status.must_equal :success
153
+ response.successful_request?.must_equal true
154
+
155
+ nf = response.notas_fiscais[0]
156
+ nf.numero_nf.must_equal '5'
157
+ nf.codigo_verificacao.must_equal '1EC6119563'
158
+ nf.data_emissao.must_equal DateTime.parse('2016-07-28T23:06:54.088754')
159
+ nf.url_nf.must_be_nil
160
+ nf.xml_nf[0..89].must_equal '<Nfse><InfNfse><Numero>5</Numero><CodigoVerificacao>1EC6119563</CodigoVerificacao><DataEmi'
161
+ nf.rps_numero.must_equal '11'
162
+ nf.rps_serie.must_equal 'SN'
163
+ nf.rps_tipo.must_equal '1'
164
+ nf.rps_situacao.must_be_nil
165
+ nf.rps_substituido_numero.must_be_nil
166
+ nf.rps_substituido_serie.must_be_nil
167
+ nf.rps_substituido_tipo.must_be_nil
168
+ nf.data_emissao_rps.must_equal Date.parse('2016-07-28')
169
+ nf.competencia.must_equal DateTime.parse('2016-07-28T00:00:00')
170
+ nf.natureza_operacao.must_equal '1'
171
+ nf.regime_especial_tributacao.must_equal '1'
172
+ nf.optante_simples_nacional.must_equal '1'
173
+ nf.incentivador_cultural.must_equal '2'
174
+ nf.outras_informacoes.must_be_nil
175
+ nf.item_lista_servico.must_equal '1.07'
176
+ nf.cnae_code.must_equal '6202300'
177
+ nf.description.must_equal '1 TESTE WEBSERVICE: R$ 5,00'
178
+ nf.codigo_municipio.must_equal '4204202'
179
+ nf.total_services.must_equal '500'
180
+ nf.iss_retained.must_equal '2'
181
+ nf.total_iss.must_equal '0.2'
182
+ nf.base_calculation.must_equal '10'
183
+ nf.iss_tax_rate.must_equal '2'
184
+ nf.valor_liquido.must_equal '463.02'
185
+ nf.deductions.must_equal '7'
186
+ nf.valor_pis.must_equal '1.12'
187
+ nf.valor_cofins.must_equal '2.12'
188
+ nf.valor_inss.must_equal '3.12'
189
+ nf.valor_ir.must_equal '4.12'
190
+ nf.valor_csll.must_equal '5.12'
191
+ nf.outras_retencoes.must_equal '6.12'
192
+ nf.desconto_condicionado.must_equal '8.12'
193
+ nf.desconto_incondicionado.must_equal '7.12'
194
+ nf.responsavel_retencao.must_be_nil
195
+ nf.numero_processo.must_be_nil
196
+ nf.orgao_gerador_municipio.must_equal '4204202'
197
+ nf.orgao_gerador_uf.must_equal 'SC'
198
+ nf.cancelamento_codigo.must_be_nil
199
+ nf.cancelamento_numero_nf.must_equal '5'
200
+ nf.cancelamento_cnpj.must_equal '23020443000140'
201
+ nf.cancelamento_inscricao_municipal.must_equal '488542'
202
+ nf.cancelamento_municipio.must_equal '4204202'
203
+ nf.cancelamento_sucesso.must_equal true
204
+ nf.cancelamento_data_hora.must_equal DateTime.parse('2016-07-28T23:06:54.392477')
205
+ nf.nfe_substituidora.must_equal '6'
206
+ nf.codigo_obra.must_equal 'VCodigoObra'
207
+ nf.codigo_art.must_equal 'VArt'
208
+
209
+ nf.emitente.cnpj.must_equal '23020443000140'
210
+ nf.emitente.inscricao_municipal.must_equal '488542'
211
+ nf.emitente.razao_social.must_equal 'DUOBR SISTEMAS LTDA ME'
212
+ nf.emitente.nome_fantasia.must_equal 'DUOBR SISTEMAS'
213
+ nf.emitente.telefone.must_equal '4933161107'
214
+ nf.emitente.email.must_equal 'emitente@mail.com.br'
215
+
216
+ nf.emitente.endereco.logradouro.must_equal 'RUA DOS PRAZERES'
217
+ nf.emitente.endereco.numero.must_equal '520'
218
+ nf.emitente.endereco.complemento.must_equal 'D'
219
+ nf.emitente.endereco.bairro.must_equal 'SAO CRISTOVAO'
220
+ nf.emitente.endereco.codigo_municipio.must_equal '4204202'
221
+ nf.emitente.endereco.uf.must_equal 'SC'
222
+ nf.emitente.endereco.cep.must_equal '89804023'
223
+
224
+ nf.destinatario.cpf_cnpj.must_equal '12345678901'
225
+ nf.destinatario.inscricao_municipal.must_equal '3365'
226
+ nf.destinatario.inscricao_estadual.must_be_nil
227
+ nf.destinatario.inscricao_suframa.must_be_nil
228
+ nf.destinatario.razao_social.must_equal 'BRUNO DAS COVES'
229
+ nf.destinatario.telefone.must_equal '4920493900'
230
+ nf.destinatario.email.must_equal 'destinatario@mail.com.br'
231
+
232
+ nf.destinatario.endereco.logradouro.must_equal 'RUA IGUACU - E'
233
+ nf.destinatario.endereco.numero.must_equal '587'
234
+ nf.destinatario.endereco.complemento.must_equal ''
235
+ nf.destinatario.endereco.bairro.must_equal 'SAIC'
236
+ nf.destinatario.endereco.codigo_municipio.must_equal '45678932'
237
+ nf.destinatario.endereco.uf.must_equal 'SC'
238
+ nf.destinatario.endereco.cep.must_equal '89802171'
239
+ end
240
+ end
241
+ end
@@ -0,0 +1,239 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Simpliss::V1::ConsultaNfsPorRps do
4
+ subject { FactoryGirl.build(:service_simpliss_v1_consulta_nfs_por_rps, emitente: emitente) }
5
+ let(:emitente) { FactoryGirl.build(:emitente) }
6
+ let(:rps) { subject.rps }
7
+
8
+ describe "superclass" do
9
+ it { subject.class.superclass.must_equal BrNfe::Service::Simpliss::V1::Base }
10
+ end
11
+
12
+ it "deve conter as regras de BrNfe::Service::Concerns::Rules::ConsultaNfsPorRps inclusas" do
13
+ subject.class.included_modules.must_include BrNfe::Service::Concerns::Rules::ConsultaNfsPorRps
14
+ end
15
+
16
+ describe "#method_wsdl" do
17
+ it { subject.method_wsdl.must_equal :consultar_nfse_por_rps }
18
+ end
19
+
20
+ it "#response_root_path" do
21
+ subject.response_root_path.must_equal [:consultar_nfse_por_rps_response]
22
+ end
23
+ it "#body_xml_path" do
24
+ subject.body_xml_path.must_equal []
25
+ end
26
+
27
+ it "#soap_body_root_tag" do
28
+ subject.soap_body_root_tag.must_equal 'ConsultarNfsePorRps'
29
+ end
30
+
31
+ describe "Validação do XML através do XSD" do
32
+ let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/simpliss/v1/xsd' }
33
+
34
+ describe "Validações a partir do arquivo XSD" do
35
+ # Só assim para passar na validação XSD.
36
+ it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
37
+ # o XSD não consegue validar os namespaces pois estão declarados na
38
+ # tag envelope.
39
+ subject.stubs(:message_namespaces).returns({'xmlns' => "http://www.sistema.com.br/Nfse/arquivos/nfse_3.xsd"})
40
+ subject.stubs(:namespace_identifier).returns(nil)
41
+ subject.stubs(:namespace_for_tags).returns(nil)
42
+ subject.stubs(:namespace_for_signature).returns(nil)
43
+
44
+
45
+ Dir.chdir(schemas_dir) do
46
+ schema = Nokogiri::XML::Schema(IO.read('nfse_3.xsd'))
47
+ document = Nokogiri::XML(subject.xml_builder)
48
+ errors = schema.validate(document)
49
+ errors.must_be_empty
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ describe "#request and set response" do
56
+ before { savon.mock! }
57
+ after { savon.unmock! }
58
+
59
+ it "Quando a requisição voltar com erro deve setar os erros corretamente" do
60
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_nfse_por_rps/fault.xml')
61
+
62
+ savon.expects(:consultar_nfse_por_rps).returns(fixture)
63
+ subject.request
64
+ response = subject.response
65
+
66
+ response.status.must_equal :falied
67
+ response.error_messages.size.must_equal 1
68
+ response.error_messages[0][:code].must_equal 'E4'
69
+ response.error_messages[0][:message].must_equal 'Esse RPS não foi enviado para a nossa base de dados.'
70
+ response.error_messages[0][:solution].must_equal 'Envie o RPS para emissão da Nfs-e.'
71
+ response.successful_request?.must_equal true
72
+ end
73
+
74
+ it "Quando encontrar uma nota fiscal com as informações básicas preenchidas" do
75
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_nfse_por_rps/nfse_simple.xml')
76
+ savon.expects(:consultar_nfse_por_rps).returns(fixture)
77
+ subject.request
78
+ response = subject.response
79
+
80
+ response.notas_fiscais.size.must_equal 1
81
+ response.status.must_equal :success
82
+ response.successful_request?.must_equal true
83
+
84
+ nf = response.notas_fiscais[0]
85
+ nf.numero_nf.must_equal '4'
86
+ nf.codigo_verificacao.must_equal 'E6E7686366'
87
+ nf.data_emissao.must_equal DateTime.parse('2016-07-28T16:17:25.398921')
88
+ nf.url_nf.must_be_nil
89
+ nf.xml_nf[0..89].must_equal '<ConsultarNfsePorRpsResult><CompNfse><Nfse><InfNfse><Numero>4</Numero><CodigoVerificacao>E'
90
+ nf.rps_numero.must_equal '10'
91
+ nf.rps_serie.must_equal 'SN'
92
+ nf.rps_tipo.must_equal '1'
93
+ nf.rps_situacao.must_be_nil
94
+ nf.rps_substituido_numero.must_be_nil
95
+ nf.rps_substituido_serie.must_be_nil
96
+ nf.rps_substituido_tipo.must_be_nil
97
+ nf.data_emissao_rps.must_equal Date.parse('2016-07-28')
98
+ nf.competencia.must_equal DateTime.parse('2016-07-28T00:00:00')
99
+ nf.natureza_operacao.must_equal '1'
100
+ nf.regime_especial_tributacao.must_equal '1'
101
+ nf.optante_simples_nacional.must_equal '1'
102
+ nf.incentivador_cultural.must_equal '2'
103
+ nf.outras_informacoes.must_equal 'Info'
104
+ nf.item_lista_servico.must_equal '1.07'
105
+ nf.cnae_code.must_equal '6202300'
106
+ nf.description.must_equal '1 TESTE WEBSERVICE: R$ 5,00'
107
+ nf.codigo_municipio.must_equal '4204202'
108
+ nf.total_services.must_equal '10'
109
+ nf.iss_retained.must_equal '2'
110
+ nf.total_iss.must_equal '0.2'
111
+ nf.base_calculation.must_equal '10'
112
+ nf.iss_tax_rate.must_equal '3.5'
113
+ nf.valor_liquido.must_equal '10'
114
+ nf.deductions.must_be_nil
115
+ nf.valor_pis.must_be_nil
116
+ nf.valor_cofins.must_be_nil
117
+ nf.valor_inss.must_be_nil
118
+ nf.valor_ir.must_be_nil
119
+ nf.valor_csll.must_be_nil
120
+ nf.outras_retencoes.must_be_nil
121
+ nf.desconto_condicionado.must_be_nil
122
+ nf.desconto_incondicionado.must_be_nil
123
+ nf.responsavel_retencao.must_be_nil
124
+ nf.numero_processo.must_be_nil
125
+ nf.municipio_incidencia.must_be_nil
126
+ nf.orgao_gerador_municipio.must_equal '4204202'
127
+ nf.orgao_gerador_uf.must_equal 'SC'
128
+ nf.cancelamento_codigo.must_be_nil
129
+ nf.cancelamento_numero_nf.must_be_nil
130
+ nf.cancelamento_cnpj.must_be_nil
131
+ nf.cancelamento_inscricao_municipal.must_be_nil
132
+ nf.cancelamento_municipio.must_be_nil
133
+ nf.cancelamento_sucesso.must_equal false
134
+ nf.cancelamento_data_hora.must_be_nil
135
+ nf.nfe_substituidora.must_be_nil
136
+ nf.codigo_obra.must_be_nil
137
+ nf.codigo_art.must_be_nil
138
+
139
+ nf.destinatario.cpf_cnpj.must_equal '12345678901234'
140
+ end
141
+
142
+ it "Quando encontrar uma nota fiscal com as informações completas" do
143
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_nfse_por_rps/nfse_complete.xml')
144
+ savon.expects(:consultar_nfse_por_rps).returns(fixture)
145
+ subject.request
146
+ response = subject.response
147
+
148
+ response.notas_fiscais.size.must_equal 1
149
+ response.status.must_equal :success
150
+ response.successful_request?.must_equal true
151
+
152
+ nf = response.notas_fiscais[0]
153
+ nf.numero_nf.must_equal '5'
154
+ nf.codigo_verificacao.must_equal '1EC6119563'
155
+ nf.data_emissao.must_equal DateTime.parse('2016-07-28T23:06:54.088754')
156
+ nf.url_nf.must_be_nil
157
+ nf.xml_nf[0..89].must_equal '<ConsultarNfsePorRpsResult><CompNfse><Nfse><InfNfse><Numero>5</Numero><CodigoVerificacao>1'
158
+ nf.rps_numero.must_equal '11'
159
+ nf.rps_serie.must_equal 'SN'
160
+ nf.rps_tipo.must_equal '1'
161
+ nf.rps_situacao.must_be_nil
162
+ nf.rps_substituido_numero.must_be_nil
163
+ nf.rps_substituido_serie.must_be_nil
164
+ nf.rps_substituido_tipo.must_be_nil
165
+ nf.data_emissao_rps.must_equal Date.parse('2016-07-28')
166
+ nf.competencia.must_equal DateTime.parse('2016-07-28T00:00:00')
167
+ nf.natureza_operacao.must_equal '1'
168
+ nf.regime_especial_tributacao.must_equal '1'
169
+ nf.optante_simples_nacional.must_equal '1'
170
+ nf.incentivador_cultural.must_equal '2'
171
+ nf.outras_informacoes.must_be_nil
172
+ nf.item_lista_servico.must_equal '1.07'
173
+ nf.cnae_code.must_equal '6202300'
174
+ nf.description.must_equal '1 TESTE WEBSERVICE: R$ 5,00'
175
+ nf.codigo_municipio.must_equal '4204202'
176
+ nf.total_services.must_equal '500'
177
+ nf.iss_retained.must_equal '2'
178
+ nf.total_iss.must_equal '0.2'
179
+ nf.base_calculation.must_equal '10'
180
+ nf.iss_tax_rate.must_equal '2'
181
+ nf.valor_liquido.must_equal '463.02'
182
+ nf.deductions.must_equal '7'
183
+ nf.valor_pis.must_equal '1.12'
184
+ nf.valor_cofins.must_equal '2.12'
185
+ nf.valor_inss.must_equal '3.12'
186
+ nf.valor_ir.must_equal '4.12'
187
+ nf.valor_csll.must_equal '5.12'
188
+ nf.outras_retencoes.must_equal '6.12'
189
+ nf.desconto_condicionado.must_equal '8.12'
190
+ nf.desconto_incondicionado.must_equal '7.12'
191
+ nf.responsavel_retencao.must_be_nil
192
+ nf.numero_processo.must_be_nil
193
+ nf.orgao_gerador_municipio.must_equal '4204202'
194
+ nf.orgao_gerador_uf.must_equal 'SC'
195
+ nf.cancelamento_codigo.must_be_nil
196
+ nf.cancelamento_numero_nf.must_equal '5'
197
+ nf.cancelamento_cnpj.must_equal '23020443000140'
198
+ nf.cancelamento_inscricao_municipal.must_equal '488542'
199
+ nf.cancelamento_municipio.must_equal '4204202'
200
+ nf.cancelamento_sucesso.must_equal true
201
+ nf.cancelamento_data_hora.must_equal DateTime.parse('2016-07-28T23:06:54.392477')
202
+ nf.nfe_substituidora.must_equal '6'
203
+ nf.codigo_obra.must_equal 'VCodigoObra'
204
+ nf.codigo_art.must_equal 'VArt'
205
+
206
+ nf.emitente.cnpj.must_equal '23020443000140'
207
+ nf.emitente.inscricao_municipal.must_equal '488542'
208
+ nf.emitente.razao_social.must_equal 'DUOBR SISTEMAS LTDA ME'
209
+ nf.emitente.nome_fantasia.must_equal 'DUOBR SISTEMAS'
210
+ nf.emitente.telefone.must_equal '4933161107'
211
+ nf.emitente.email.must_equal 'emitente@mail.com.br'
212
+
213
+ nf.emitente.endereco.logradouro.must_equal 'RUA DOS PRAZERES'
214
+ nf.emitente.endereco.numero.must_equal '520'
215
+ nf.emitente.endereco.complemento.must_equal 'D'
216
+ nf.emitente.endereco.bairro.must_equal 'SAO CRISTOVAO'
217
+ nf.emitente.endereco.codigo_municipio.must_equal '4204202'
218
+ nf.emitente.endereco.uf.must_equal 'SC'
219
+ nf.emitente.endereco.cep.must_equal '89804023'
220
+
221
+ nf.destinatario.cpf_cnpj.must_equal '12345678901'
222
+ nf.destinatario.inscricao_municipal.must_equal '3365'
223
+ nf.destinatario.inscricao_estadual.must_be_nil
224
+ nf.destinatario.inscricao_suframa.must_be_nil
225
+ nf.destinatario.razao_social.must_equal 'BRUNO DAS COVES'
226
+ nf.destinatario.telefone.must_equal '4920493900'
227
+ nf.destinatario.email.must_equal 'destinatario@mail.com.br'
228
+
229
+ nf.destinatario.endereco.logradouro.must_equal 'RUA IGUACU - E'
230
+ nf.destinatario.endereco.numero.must_equal '587'
231
+ nf.destinatario.endereco.complemento.must_equal ''
232
+ nf.destinatario.endereco.bairro.must_equal 'SAIC'
233
+ nf.destinatario.endereco.codigo_municipio.must_equal '45678932'
234
+ nf.destinatario.endereco.uf.must_equal 'SC'
235
+ nf.destinatario.endereco.cep.must_equal '89802171'
236
+ end
237
+ end
238
+
239
+ end