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,226 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Simpliss::V1::ConsultaNfse do
4
+ subject { FactoryGirl.build(:service_simpliss_v1_consulta_nfse, 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::ConsultaNfse
14
+ end
15
+
16
+ describe "#method_wsdl" do
17
+ it { subject.method_wsdl.must_equal :consultar_nfse }
18
+ end
19
+
20
+ it "#response_root_path" do
21
+ subject.response_root_path.must_equal [:consultar_nfse_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 'ConsultarNfse'
29
+ end
30
+
31
+ describe "#request and set response" do
32
+ before { savon.mock! }
33
+ after { savon.unmock! }
34
+
35
+ it "Se não encontrar nenhuma NFe" do
36
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_nfse/nfs_empty.xml')
37
+ savon.expects(:consultar_nfse).returns(fixture)
38
+ subject.request
39
+ response = subject.response
40
+
41
+ response.notas_fiscais.must_be_empty
42
+ response.status.must_equal :success
43
+ response.successful_request?.must_equal true
44
+ end
45
+
46
+ it "Quando a requisição voltar com erro deve setar os erros corretamente" do
47
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_nfse/fault.xml')
48
+
49
+ savon.expects(:consultar_nfse).returns(fixture)
50
+ subject.request
51
+ response = subject.response
52
+
53
+ response.status.must_equal :falied
54
+ response.error_messages.size.must_equal 1
55
+ response.error_messages[0][:code].must_equal 'E160'
56
+ response.error_messages[0][:message].must_equal 'Arquivo enviado fora da estrutura do arquivo XML de entrada.'
57
+ response.error_messages[0][:solution].must_equal 'Envie um arquivo dentro do schema do arquivo XML de entrada.'
58
+ response.successful_request?.must_equal true
59
+ end
60
+
61
+ it "Quando encontrar uma nota fiscal com as informações básicas preenchidas" do
62
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_nfse/nfse_simple.xml')
63
+ savon.expects(:consultar_nfse).returns(fixture)
64
+ subject.request
65
+ response = subject.response
66
+
67
+ response.notas_fiscais.size.must_equal 1
68
+ response.status.must_equal :success
69
+ response.successful_request?.must_equal true
70
+
71
+ nf = response.notas_fiscais[0]
72
+ nf.numero_nf.must_equal '4'
73
+ nf.codigo_verificacao.must_equal 'E6E7686366'
74
+ nf.data_emissao.must_equal DateTime.parse('2016-07-28T16:17:25.398921')
75
+ nf.url_nf.must_be_nil
76
+ nf.xml_nf[0..89].must_equal '<ConsultarNfseResult><ListaNfse xmlns="http://www.sistema.com.br/Nfse/arquivos/nfse_3.xsd"'
77
+ nf.rps_numero.must_equal '10'
78
+ nf.rps_serie.must_equal 'SN'
79
+ nf.rps_tipo.must_equal '1'
80
+ nf.rps_situacao.must_be_nil
81
+ nf.rps_substituido_numero.must_be_nil
82
+ nf.rps_substituido_serie.must_be_nil
83
+ nf.rps_substituido_tipo.must_be_nil
84
+ nf.data_emissao_rps.must_equal Date.parse('2016-07-28')
85
+ nf.competencia.must_equal DateTime.parse('2016-07-28T00:00:00')
86
+ nf.natureza_operacao.must_equal '1'
87
+ nf.regime_especial_tributacao.must_equal '1'
88
+ nf.optante_simples_nacional.must_equal '1'
89
+ nf.incentivador_cultural.must_equal '2'
90
+ nf.outras_informacoes.must_equal 'Info'
91
+ nf.item_lista_servico.must_equal '1.07'
92
+ nf.cnae_code.must_equal '6202300'
93
+ nf.description.must_equal '1 TESTE WEBSERVICE: R$ 5,00'
94
+ nf.codigo_municipio.must_equal '4204202'
95
+ nf.total_services.must_equal '10'
96
+ nf.iss_retained.must_equal '2'
97
+ nf.total_iss.must_equal '0.2'
98
+ nf.base_calculation.must_equal '10'
99
+ nf.iss_tax_rate.must_equal '3.5'
100
+ nf.valor_liquido.must_equal '10'
101
+ nf.deductions.must_be_nil
102
+ nf.valor_pis.must_be_nil
103
+ nf.valor_cofins.must_be_nil
104
+ nf.valor_inss.must_be_nil
105
+ nf.valor_ir.must_be_nil
106
+ nf.valor_csll.must_be_nil
107
+ nf.outras_retencoes.must_be_nil
108
+ nf.desconto_condicionado.must_be_nil
109
+ nf.desconto_incondicionado.must_be_nil
110
+ nf.responsavel_retencao.must_be_nil
111
+ nf.numero_processo.must_be_nil
112
+ nf.municipio_incidencia.must_be_nil
113
+ nf.orgao_gerador_municipio.must_equal '4204202'
114
+ nf.orgao_gerador_uf.must_equal 'SC'
115
+ nf.cancelamento_codigo.must_be_nil
116
+ nf.cancelamento_numero_nf.must_be_nil
117
+ nf.cancelamento_cnpj.must_be_nil
118
+ nf.cancelamento_inscricao_municipal.must_be_nil
119
+ nf.cancelamento_municipio.must_be_nil
120
+ nf.cancelamento_sucesso.must_equal false
121
+ nf.cancelamento_data_hora.must_be_nil
122
+ nf.nfe_substituidora.must_be_nil
123
+ nf.codigo_obra.must_be_nil
124
+ nf.codigo_art.must_be_nil
125
+
126
+ nf.destinatario.cpf_cnpj.must_equal '12345678901234'
127
+ end
128
+
129
+ it "Quando encontrar uma nota fiscal com as informações completas" do
130
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_nfse/nfse_complete.xml')
131
+ savon.expects(:consultar_nfse).returns(fixture)
132
+ subject.request
133
+ response = subject.response
134
+
135
+ response.notas_fiscais.size.must_equal 1
136
+ response.status.must_equal :success
137
+ response.successful_request?.must_equal true
138
+
139
+ nf = response.notas_fiscais[0]
140
+ nf.numero_nf.must_equal '5'
141
+ nf.codigo_verificacao.must_equal '1EC6119563'
142
+ nf.data_emissao.must_equal DateTime.parse('2016-07-28T23:06:54.088754')
143
+ nf.url_nf.must_be_nil
144
+ nf.xml_nf[0..89].must_equal '<ConsultarNfseResult><ListaNfse xmlns="http://www.sistema.com.br/Nfse/arquivos/nfse_3.xsd"'
145
+ nf.rps_numero.must_equal '11'
146
+ nf.rps_serie.must_equal 'SN'
147
+ nf.rps_tipo.must_equal '1'
148
+ nf.rps_situacao.must_be_nil
149
+ nf.rps_substituido_numero.must_be_nil
150
+ nf.rps_substituido_serie.must_be_nil
151
+ nf.rps_substituido_tipo.must_be_nil
152
+ nf.data_emissao_rps.must_equal Date.parse('2016-07-28')
153
+ nf.competencia.must_equal DateTime.parse('2016-07-28T00:00:00')
154
+ nf.natureza_operacao.must_equal '1'
155
+ nf.regime_especial_tributacao.must_equal '1'
156
+ nf.optante_simples_nacional.must_equal '1'
157
+ nf.incentivador_cultural.must_equal '2'
158
+ nf.outras_informacoes.must_be_nil
159
+ nf.item_lista_servico.must_equal '1.07'
160
+ nf.cnae_code.must_equal '6202300'
161
+ nf.description.must_equal '1 TESTE WEBSERVICE: R$ 5,00'
162
+ nf.codigo_municipio.must_equal '4204202'
163
+ nf.total_services.must_equal '500'
164
+ nf.iss_retained.must_equal '2'
165
+ nf.total_iss.must_equal '0.2'
166
+ nf.base_calculation.must_equal '10'
167
+ nf.iss_tax_rate.must_equal '2'
168
+ nf.valor_liquido.must_equal '463.02'
169
+ nf.deductions.must_equal '7'
170
+ nf.valor_pis.must_equal '1.12'
171
+ nf.valor_cofins.must_equal '2.12'
172
+ nf.valor_inss.must_equal '3.12'
173
+ nf.valor_ir.must_equal '4.12'
174
+ nf.valor_csll.must_equal '5.12'
175
+ nf.outras_retencoes.must_equal '6.12'
176
+ nf.desconto_condicionado.must_equal '8.12'
177
+ nf.desconto_incondicionado.must_equal '7.12'
178
+ nf.responsavel_retencao.must_be_nil
179
+ nf.numero_processo.must_be_nil
180
+ nf.orgao_gerador_municipio.must_equal '4204202'
181
+ nf.orgao_gerador_uf.must_equal 'SC'
182
+ nf.cancelamento_codigo.must_be_nil
183
+ nf.cancelamento_numero_nf.must_equal '5'
184
+ nf.cancelamento_cnpj.must_equal '23020443000140'
185
+ nf.cancelamento_inscricao_municipal.must_equal '488542'
186
+ nf.cancelamento_municipio.must_equal '4204202'
187
+ nf.cancelamento_sucesso.must_equal true
188
+ nf.cancelamento_data_hora.must_equal DateTime.parse('2016-07-28T23:06:54.392477')
189
+ nf.nfe_substituidora.must_equal '6'
190
+ nf.codigo_obra.must_equal 'VCodigoObra'
191
+ nf.codigo_art.must_equal 'VArt'
192
+
193
+ nf.emitente.cnpj.must_equal '23020443000140'
194
+ nf.emitente.inscricao_municipal.must_equal '488542'
195
+ nf.emitente.razao_social.must_equal 'DUOBR SISTEMAS LTDA ME'
196
+ nf.emitente.nome_fantasia.must_equal 'DUOBR SISTEMAS'
197
+ nf.emitente.telefone.must_equal '4933161107'
198
+ nf.emitente.email.must_equal 'emitente@mail.com.br'
199
+
200
+ nf.emitente.endereco.logradouro.must_equal 'RUA DOS PRAZERES'
201
+ nf.emitente.endereco.numero.must_equal '520'
202
+ nf.emitente.endereco.complemento.must_equal 'D'
203
+ nf.emitente.endereco.bairro.must_equal 'SAO CRISTOVAO'
204
+ nf.emitente.endereco.codigo_municipio.must_equal '4204202'
205
+ nf.emitente.endereco.uf.must_equal 'SC'
206
+ nf.emitente.endereco.cep.must_equal '89804023'
207
+
208
+ nf.destinatario.cpf_cnpj.must_equal '12345678901'
209
+ nf.destinatario.inscricao_municipal.must_equal '3365'
210
+ nf.destinatario.inscricao_estadual.must_be_nil
211
+ nf.destinatario.inscricao_suframa.must_be_nil
212
+ nf.destinatario.razao_social.must_equal 'BRUNO DAS COVES'
213
+ nf.destinatario.telefone.must_equal '4920493900'
214
+ nf.destinatario.email.must_equal 'destinatario@mail.com.br'
215
+
216
+ nf.destinatario.endereco.logradouro.must_equal 'RUA IGUACU - E'
217
+ nf.destinatario.endereco.numero.must_equal '587'
218
+ nf.destinatario.endereco.complemento.must_equal ''
219
+ nf.destinatario.endereco.bairro.must_equal 'SAIC'
220
+ nf.destinatario.endereco.codigo_municipio.must_equal '45678932'
221
+ nf.destinatario.endereco.uf.must_equal 'SC'
222
+ nf.destinatario.endereco.cep.must_equal '89802171'
223
+ end
224
+ end
225
+
226
+ end
@@ -0,0 +1,122 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Simpliss::V1::ConsultaSituacaoLoteRps do
4
+ subject { FactoryGirl.build(:service_simpliss_v1_consulta_situacao_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::ConsultaLoteRps }
11
+ end
12
+
13
+ describe "#method_wsdl" do
14
+ it { subject.method_wsdl.must_equal :consultar_situacao_lote_rps }
15
+ end
16
+
17
+ it "#response_root_path" do
18
+ subject.response_root_path.must_equal [:consultar_situacao_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 'ConsultarSituacaoLoteRps'
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 processou o RPS com sucesso deve setar a situation com :success" do
57
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_situacao_lote_rps/success.xml')
58
+ savon.expects(:consultar_situacao_lote_rps).returns(fixture)
59
+ subject.request
60
+ response = subject.response
61
+
62
+ response.situation.must_equal :success
63
+ response.numero_lote.must_equal '10'
64
+ response.status.must_equal :success
65
+ response.successful_request?.must_equal true
66
+ end
67
+
68
+ it "Quando processou o RPS com erros deve setar a situation com :error" do
69
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_situacao_lote_rps/error.xml')
70
+ savon.expects(:consultar_situacao_lote_rps).returns(fixture)
71
+ subject.request
72
+ response = subject.response
73
+
74
+ response.situation.must_equal :error
75
+ response.numero_lote.must_equal '13'
76
+ response.status.must_equal :success
77
+ response.successful_request?.must_equal true
78
+ end
79
+
80
+ it "Quando não processou o RPS deve setar a situation com :unprocessed" do
81
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_situacao_lote_rps/unprocessed.xml')
82
+ savon.expects(:consultar_situacao_lote_rps).returns(fixture)
83
+ subject.request
84
+ response = subject.response
85
+
86
+ response.situation.must_equal :unprocessed
87
+ response.numero_lote.must_equal '11'
88
+ response.status.must_equal :success
89
+ response.successful_request?.must_equal true
90
+ end
91
+
92
+ it "Quando não encontrar o RPS deve setar a situation com :unreceived" do
93
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_situacao_lote_rps/unreceived.xml')
94
+ savon.expects(:consultar_situacao_lote_rps).returns(fixture)
95
+ subject.request
96
+ response = subject.response
97
+
98
+ response.situation.must_equal :unreceived
99
+ response.numero_lote.must_equal '12'
100
+ response.status.must_equal :success
101
+ response.successful_request?.must_equal true
102
+ end
103
+
104
+ it "Quando a requisição voltar com erro deve setar os erros corretamente" do
105
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/consulta_situacao_lote_rps/fault.xml')
106
+
107
+ savon.expects(:consultar_situacao_lote_rps).returns(fixture)
108
+ subject.request
109
+ response = subject.response
110
+
111
+ response.protocolo.must_be_nil
112
+ response.data_recebimento.must_be_nil
113
+ response.numero_lote.must_be_nil
114
+ response.status.must_equal :falied
115
+ response.error_messages.size.must_equal 1
116
+ response.error_messages[0][:code].must_equal 'E900'
117
+ response.error_messages[0][:message].must_equal 'Chamada ao método retornou erro.'
118
+ response.error_messages[0][:solution].must_equal 'Entre em contato com o fornecedor do serviço para mais informações'
119
+ response.successful_request?.must_equal true
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,105 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Service::Simpliss::V1::RecepcaoLoteRps do
4
+ subject { FactoryGirl.build(:service_simpliss_v1_recepcao_lote_rps, 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::ConsultaNfsPorRps inclusas" do
12
+ subject.class.included_modules.must_include BrNfe::Service::Concerns::Rules::RecepcaoLoteRps
13
+ end
14
+
15
+ describe "#method_wsdl" do
16
+ it { subject.method_wsdl.must_equal :recepcionar_lote_rps }
17
+ end
18
+
19
+ it "#response_root_path" do
20
+ subject.response_root_path.must_equal [:recepcionar_lote_rps_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 'RecepcionarLoteRps'
29
+ end
30
+
31
+ describe "Validação do XML através do XSD" do
32
+ let(:rps_basico) { FactoryGirl.build(:br_nfe_rps) }
33
+ let(:rps_completo) { FactoryGirl.build(:br_nfe_rps, :completo) }
34
+
35
+ let(:schemas_dir) { BrNfe.root+'/test/br_nfe/service/simpliss/v1/xsd' }
36
+
37
+ def validate_schema
38
+ # Só assim para passar na validação XSD.
39
+ # o XSD não consegue validar os namespaces pois estão declarados na
40
+ # tag envelope.
41
+ subject.stubs(:message_namespaces).returns({'xmlns' => "http://www.sistema.com.br/Nfse/arquivos/nfse_3.xsd"})
42
+ subject.stubs(:namespace_identifier).returns(nil)
43
+ subject.stubs(:namespace_for_tags).returns(nil)
44
+ subject.stubs(:namespace_for_signature).returns(nil)
45
+
46
+ Dir.chdir(schemas_dir) do
47
+ schema = Nokogiri::XML::Schema(IO.read('nfse_3.xsd'))
48
+ document = Nokogiri::XML(subject.xml_builder)
49
+ errors = schema.validate(document)
50
+ errors.must_be_empty
51
+ end
52
+ end
53
+ it "Deve ser válido com 1 RPS com todas as informações preenchidas" do
54
+ subject.lote_rps = [rps_completo]
55
+ validate_schema
56
+ end
57
+ it "Deve ser válido com 1 RPS com apenas as informações obrigatórias preenchidas" do
58
+ subject.lote_rps = [rps_basico]
59
+ validate_schema
60
+ end
61
+ it "Deve ser válido com vários RPS's - 1 rps completo e 1 parcial" do
62
+ subject.assign_attributes(certificate_pkcs12_password: nil, certificate_pkcs12_path: nil, username: '23020443000140', password: '33161107')
63
+ subject.lote_rps = [rps_completo, rps_basico]
64
+ validate_schema
65
+ end
66
+ end
67
+
68
+ describe "#request and set response" do
69
+ before { savon.mock! }
70
+ after { savon.unmock! }
71
+
72
+ it "Quando gravou o RPS com sucesso deve setar seus valores corretamente na resposta" do
73
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/recepcao_lote_rps/success.xml')
74
+
75
+ savon.expects(:recepcionar_lote_rps).returns(fixture)
76
+ subject.request
77
+ response = subject.response
78
+
79
+ response.protocolo.must_equal '128277'
80
+ response.data_recebimento.must_equal Time.parse('2016-07-28T16:17:18.4043985-03:00')
81
+ response.numero_lote.must_equal '10'
82
+ response.status.must_equal :success
83
+ response.successful_request?.must_equal true
84
+ end
85
+
86
+ it "Quando a requisição voltar com erro deve setar os erros corretamente" do
87
+ fixture = File.read(BrNfe.root+'/test/fixtures/service/response/simpliss/v1/recepcao_lote_rps/error.xml')
88
+
89
+ savon.expects(:recepcionar_lote_rps).returns(fixture)
90
+ subject.request
91
+ response = subject.response
92
+
93
+ response.protocolo.must_be_nil
94
+ response.data_recebimento.must_be_nil
95
+ response.numero_lote.must_be_nil
96
+ response.status.must_equal :falied
97
+ response.error_messages.size.must_equal 1
98
+ response.error_messages[0][:code].must_equal 'E903'
99
+ response.error_messages[0][:message].must_equal 'Já existe lote protocolado com esse número para o mesmo cnpj e inscrição municipal.'
100
+ response.error_messages[0][:solution].must_equal 'Altere o número do lote.'
101
+ response.successful_request?.must_equal true
102
+ end
103
+ end
104
+ end
105
+