br_nfe 1.1.0 → 2.0.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 (257) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/.travis.yml +8 -0
  4. data/Gemfile +16 -0
  5. data/Gemfile.lock +27 -3
  6. data/LICENSE +1 -1
  7. data/README.markdown +10 -12
  8. data/Rakefile +13 -0
  9. data/br_nfe.gemspec +18 -21
  10. data/lib/br_nfe/active_model_base.rb +7 -1
  11. data/lib/br_nfe/base.rb +175 -37
  12. data/lib/br_nfe/endereco.rb +7 -1
  13. data/lib/br_nfe/helper/have_rps.rb +1 -1
  14. data/lib/br_nfe/helper/values_ts/service_v1.rb +313 -0
  15. data/lib/br_nfe/response/service/build_response.rb +286 -0
  16. data/lib/br_nfe/response/service/default.rb +185 -0
  17. data/lib/br_nfe/{servico/response → response/service}/nota_fiscal.rb +11 -10
  18. data/lib/br_nfe/response/service/paths/base.rb +93 -0
  19. data/lib/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta.rb +22 -0
  20. data/lib/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta.rb +25 -0
  21. data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta.rb +25 -0
  22. data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta.rb +25 -0
  23. data/lib/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta.rb +31 -0
  24. data/lib/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta.rb +36 -0
  25. data/lib/br_nfe/response/service/paths/v1/tc_nfse.rb +127 -0
  26. data/lib/br_nfe/service/base.rb +59 -0
  27. data/lib/br_nfe/service/betha/base.rb +8 -0
  28. data/lib/br_nfe/service/betha/v1/cancelamento_nfs.rb +39 -0
  29. data/lib/br_nfe/service/betha/v1/consulta_lote_rps.rb +34 -0
  30. data/lib/br_nfe/service/betha/v1/consulta_nfs_por_rps.rb +32 -0
  31. data/lib/br_nfe/service/betha/v1/consulta_nfse.rb +32 -0
  32. data/lib/br_nfe/service/betha/v1/consulta_situacao_lote_rps.rb +30 -0
  33. data/lib/br_nfe/service/betha/v1/gateway.rb +21 -0
  34. data/lib/br_nfe/service/betha/v1/recepcao_lote_rps.rb +37 -0
  35. data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta.rb +19 -0
  36. data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta.rb +17 -0
  37. data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +17 -0
  38. data/lib/br_nfe/service/concerns/rules/cancelamento_nfs.rb +20 -0
  39. data/lib/br_nfe/service/concerns/rules/consulta_nfs_por_rps.rb +18 -0
  40. data/lib/br_nfe/service/concerns/rules/consulta_nfse.rb +29 -0
  41. data/lib/br_nfe/service/concerns/rules/recepcao_lote_rps.rb +50 -0
  42. data/lib/br_nfe/{servico → service}/intermediario.rb +1 -1
  43. data/lib/br_nfe/service/item.rb +70 -0
  44. data/lib/br_nfe/service/rps.rb +231 -0
  45. data/lib/br_nfe/service/sc/florianopolis/base.rb +25 -0
  46. data/lib/br_nfe/service/sc/florianopolis/cancellation.rb +30 -0
  47. data/lib/br_nfe/service/sc/florianopolis/emission_rps.rb +19 -0
  48. data/lib/br_nfe/service/sc/florianopolis/xml/_address.xml.slim +21 -0
  49. data/lib/br_nfe/service/sc/florianopolis/xml/_contact.xml.slim +3 -0
  50. data/lib/br_nfe/service/sc/florianopolis/xml/_service_item.xml.slim +9 -0
  51. data/lib/br_nfe/service/sc/florianopolis/xml/cancellation.xml.slim +6 -0
  52. data/lib/br_nfe/service/sc/florianopolis/xml/inf_requisicao.xml.slim +55 -0
  53. data/lib/br_nfe/service/sc/gaspar/cancela_nfse.rb +13 -0
  54. data/lib/br_nfe/service/sc/gaspar/consulta_lote_rps.rb +13 -0
  55. data/lib/br_nfe/service/sc/gaspar/consulta_nfs_por_rps.rb +13 -0
  56. data/lib/br_nfe/service/sc/gaspar/consulta_nfse.rb +17 -0
  57. data/lib/br_nfe/service/sc/gaspar/consulta_situacao_lote_rps.rb +13 -0
  58. data/lib/br_nfe/service/sc/gaspar/recepcao_lote_rps.rb +13 -0
  59. data/lib/br_nfe/service/sc/gaspar/recepcao_lote_rps_limitado.rb +13 -0
  60. data/lib/br_nfe/service/thema/v1/base.rb +55 -0
  61. data/lib/br_nfe/service/thema/v1/cancela_nfse.rb +48 -0
  62. data/lib/br_nfe/service/thema/v1/consulta_lote_rps.rb +49 -0
  63. data/lib/br_nfe/service/thema/v1/consulta_nfs_por_rps.rb +48 -0
  64. data/lib/br_nfe/service/thema/v1/consulta_nfse.rb +47 -0
  65. data/lib/br_nfe/service/thema/v1/consulta_situacao_lote_rps.rb +46 -0
  66. data/lib/br_nfe/service/thema/v1/recepcao_lote_rps.rb +51 -0
  67. data/lib/br_nfe/service/thema/v1/recepcao_lote_rps_limitado.rb +30 -0
  68. data/lib/br_nfe/service/xml/v1/_tc_contato.xml.slim +7 -0
  69. data/lib/br_nfe/service/xml/v1/_tc_cpf_cnpj.xml.slim +5 -0
  70. data/lib/br_nfe/service/xml/v1/_tc_dados_construcao_civil.xml.slim +2 -0
  71. data/lib/br_nfe/service/xml/v1/_tc_dados_prestador.xml.slim +15 -0
  72. data/lib/br_nfe/service/xml/v1/_tc_dados_servico.xml.slim +14 -0
  73. data/lib/br_nfe/service/xml/v1/_tc_dados_tomador.xml.slim +15 -0
  74. data/lib/br_nfe/service/xml/v1/_tc_endereco.xml.slim +13 -0
  75. data/lib/br_nfe/service/xml/v1/_tc_identificacao_intermediario_servico.xml.slim +7 -0
  76. data/lib/br_nfe/service/xml/v1/_tc_identificacao_nfse.xml.slim +7 -0
  77. data/lib/br_nfe/service/xml/v1/_tc_identificacao_orgao_gerador.xml.slim +8 -0
  78. data/lib/br_nfe/service/xml/v1/_tc_identificacao_prestador.xml.slim +3 -0
  79. data/lib/br_nfe/service/xml/v1/_tc_identificacao_rps.xml.slim +16 -0
  80. data/lib/br_nfe/service/xml/v1/_tc_identificacao_tomador.xml.slim +4 -0
  81. data/lib/br_nfe/service/xml/v1/_tc_inf_pedido_cancelamento.xml.slim +4 -0
  82. data/lib/br_nfe/service/xml/v1/_tc_inf_rps.xml.slim +47 -0
  83. data/lib/br_nfe/service/xml/v1/_tc_lote_rps.xml.slim +9 -0
  84. data/lib/br_nfe/service/xml/v1/_tc_pedido_cancelamento.xml.slim +4 -0
  85. data/lib/br_nfe/service/xml/v1/_tc_rps.xml.slim +8 -0
  86. data/lib/br_nfe/service/xml/v1/_tc_valores.xml.slim +48 -0
  87. data/lib/br_nfe/service/xml/v1/servico_cancelar_nfse_envio.xml.slim +9 -0
  88. data/lib/br_nfe/service/xml/v1/servico_consultar_lote_rps_envio.xml.slim +4 -0
  89. data/lib/br_nfe/service/xml/v1/servico_consultar_nfse_envio.xml.slim +19 -0
  90. data/lib/br_nfe/service/xml/v1/servico_consultar_nfse_rps_envio.xml.slim +5 -0
  91. data/lib/br_nfe/service/xml/v1/servico_consultar_situacao_lote_rps_envio.xml.slim +4 -0
  92. data/lib/br_nfe/service/xml/v1/servico_enviar_lote_rps_envio.xml.slim +9 -0
  93. data/lib/br_nfe/version.rb +2 -2
  94. data/lib/br_nfe/xml/_signed_info_sh1.xml.slim +9 -0
  95. data/lib/br_nfe/xml/signature_sh1.xml.slim +12 -0
  96. data/lib/br_nfe/xml/soap_env.xml.slim +3 -0
  97. data/lib/br_nfe.rb +72 -20
  98. data/test/br_nfe/base_test.rb +257 -108
  99. data/test/br_nfe/helper/have_intermediario_test.rb +2 -2
  100. data/test/br_nfe/helper/have_rps_test.rb +4 -4
  101. data/test/br_nfe/response/service/build_response_test.rb +377 -0
  102. data/test/br_nfe/response/service/default_test.rb +218 -0
  103. data/test/br_nfe/{servico/response → response/service}/nota_fiscal_test.rb +2 -2
  104. data/test/br_nfe/response/service/paths/base_test.rb +199 -0
  105. data/test/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta_test.rb +25 -0
  106. data/test/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta_test.rb +30 -0
  107. data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta_test.rb +30 -0
  108. data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta_test.rb +30 -0
  109. data/test/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta_test.rb +30 -0
  110. data/test/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta_test.rb +34 -0
  111. data/test/br_nfe/response/service/paths/v1/tc_nfse_test.rb +122 -0
  112. data/test/br_nfe/service/base_test.rb +138 -0
  113. data/test/br_nfe/service/betha/base_test.rb +9 -0
  114. data/test/br_nfe/service/betha/v1/cancelamento_nfs_test.rb +60 -0
  115. data/test/br_nfe/service/betha/v1/consulta_lote_rps_test.rb +55 -0
  116. data/test/br_nfe/service/betha/v1/consulta_nfs_por_rps_test.rb +55 -0
  117. data/test/br_nfe/service/betha/v1/consulta_nfse_test.rb +53 -0
  118. data/test/br_nfe/service/betha/v1/consulta_situacao_lote_rps_test.rb +49 -0
  119. data/test/br_nfe/service/betha/v1/gateway_test.rb +35 -0
  120. data/test/br_nfe/service/betha/v1/recepcao_lote_rps_test.rb +84 -0
  121. data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta_test.rb +16 -0
  122. data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta_test.rb +16 -0
  123. data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta_test.rb +16 -0
  124. data/test/br_nfe/service/betha/v1/xsd/TiposNFe_v01.xsd +583 -0
  125. data/test/br_nfe/service/betha/v1/xsd/nfse_v01.xsd +652 -0
  126. data/test/br_nfe/service/betha/v1/xsd/servico_cancelar_nfse_envio_v01.xsd +17 -0
  127. data/test/br_nfe/service/betha/v1/xsd/servico_consultar_lote_rps_envio_v01.xsd +16 -0
  128. data/test/br_nfe/service/betha/v1/xsd/servico_consultar_nfse_envio_v01.xsd +28 -0
  129. data/test/br_nfe/service/betha/v1/xsd/servico_consultar_nfse_rps_envio_v01.xsd +16 -0
  130. data/test/br_nfe/service/betha/v1/xsd/servico_consultar_situacao_lote_rps_envio_v01.xsd +16 -0
  131. data/test/br_nfe/service/betha/v1/xsd/servico_enviar_lote_rps_envio_v01.xsd +17 -0
  132. data/test/br_nfe/service/betha/v1/xsd/xmldsig-core-schema.xsd +308 -0
  133. data/test/br_nfe/service/betha/v1/xsd/xmldsig-core-schema_v01.xsd +95 -0
  134. data/test/br_nfe/service/concerns/rules/cancelamento_nfs_test.rb +15 -0
  135. data/test/br_nfe/service/concerns/rules/consulta_nfs_por_rps_test.rb +36 -0
  136. data/test/br_nfe/service/concerns/rules/consulta_nfse_test.rb +42 -0
  137. data/test/br_nfe/{servico/base_test.rb → service/concerns/rules/recepcao_lote_rps_test.rb} +12 -4
  138. data/test/br_nfe/{servico → service}/intermediario_test.rb +1 -1
  139. data/test/br_nfe/service/item_test.rb +34 -0
  140. data/test/br_nfe/{servico → service}/rps_test.rb +191 -43
  141. data/test/br_nfe/service/sc/florianopolis/XSD/TiposNFSe_v2.0.xsd +863 -0
  142. data/test/br_nfe/service/sc/florianopolis/XSD/xmldsig-core-schema.xsd +309 -0
  143. data/test/br_nfe/service/sc/florianopolis/base_test.rb +20 -0
  144. data/test/br_nfe/service/sc/florianopolis/cancellation_test.rb +36 -0
  145. data/test/br_nfe/service/sc/florianopolis/emission_rps_test.rb +145 -0
  146. data/test/br_nfe/service/sc/gaspar/cancela_nfse_test.rb +21 -0
  147. data/test/br_nfe/service/sc/gaspar/consulta_nfs_por_rps_test.rb +21 -0
  148. data/test/br_nfe/service/sc/gaspar/consulta_nfse_test.rb +21 -0
  149. data/test/br_nfe/service/sc/gaspar/consulta_situacao_lote_rps_test.rb +21 -0
  150. data/test/br_nfe/service/sc/gaspar/recepcao_lote_rps_limitado_test.rb +22 -0
  151. data/test/br_nfe/service/sc/gaspar/recepcao_lote_rps_test.rb +22 -0
  152. data/test/br_nfe/service/thema/v1/base_test.rb +65 -0
  153. data/test/br_nfe/service/thema/v1/cancela_nfse_test.rb +56 -0
  154. data/test/br_nfe/service/thema/v1/consulta_lote_rps_test.rb +47 -0
  155. data/test/br_nfe/service/thema/v1/consulta_nfs_por_rps_test.rb +50 -0
  156. data/test/br_nfe/service/thema/v1/consulta_nfse_test.rb +50 -0
  157. data/test/br_nfe/service/thema/v1/consulta_situacao_lote_rps_test.rb +47 -0
  158. data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test.rb +62 -0
  159. data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test_limitado.rb +50 -0
  160. data/test/br_nfe/service/thema/v1/xsd/nfse.xsd +656 -0
  161. data/test/br_nfe/service/thema/v1/xsd/xmldsig-core-schema20020212.xsd +318 -0
  162. data/test/br_nfe/service/xsd/v1/nfse.xsd +779 -0
  163. data/test/br_nfe/service/xsd/v1/xmldsig-core-schema20020212.xsd +316 -0
  164. data/test/cert.pfx +0 -0
  165. data/test/factories/base.rb +2 -0
  166. data/test/factories/destinatario.rb +3 -3
  167. data/test/factories/response/service/build_response.rb +5 -0
  168. data/test/factories/response/service/default.rb +10 -0
  169. data/test/factories/{servico/response → response/service}/nota_fiscal.rb +9 -9
  170. data/test/factories/service/base.rb +6 -0
  171. data/test/factories/service/betha/base.rb +4 -0
  172. data/test/factories/service/betha/v1/cancelamento_nfs.rb +9 -0
  173. data/test/factories/{servico → service}/betha/v1/consulta_lote_rps.rb +2 -2
  174. data/test/factories/{servico → service}/betha/v1/consulta_nfs_por_rps.rb +1 -1
  175. data/test/factories/service/betha/v1/consulta_nfse.rb +8 -0
  176. data/test/factories/{servico → service}/betha/v1/consulta_situacao_lote_rps.rb +2 -2
  177. data/test/factories/{servico → service}/betha/v1/gateway.rb +1 -1
  178. data/test/factories/service/betha/v1/recepcao_lote_rps.rb +8 -0
  179. data/test/factories/{servico → service}/intermediario.rb +2 -2
  180. data/test/factories/service/item.rb +12 -0
  181. data/test/factories/service/rps.rb +50 -0
  182. data/test/factories/service/sc/florianopolis/base.rb +5 -0
  183. data/test/factories/service/sc/florianopolis/cancellation.rb +7 -0
  184. data/test/factories/service/sc/florianopolis/emission_rps.rb +7 -0
  185. data/test/factories/service/sc/gaspar/cancela_nfse.rb +9 -0
  186. data/test/factories/service/sc/gaspar/consulta_lote_rps.rb +7 -0
  187. data/test/factories/service/sc/gaspar/consulta_nfs_por_rps.rb +6 -0
  188. data/test/factories/service/sc/gaspar/consulta_nfse.rb +8 -0
  189. data/test/factories/service/sc/gaspar/consulta_situacao_lote_rps.rb +6 -0
  190. data/test/factories/service/sc/gaspar/recepcao_lote_rps.rb +9 -0
  191. data/test/factories/service/sc/gaspar/recepcao_lote_rps_limitado.rb +9 -0
  192. data/test/factories/service/thema/v1/base.rb +7 -0
  193. data/test/factories/service/thema/v1/cancela_nfse.rb +9 -0
  194. data/test/factories/service/thema/v1/consulta_lote_rps.rb +7 -0
  195. data/test/factories/service/thema/v1/consulta_nfs_por_rps.rb +6 -0
  196. data/test/factories/service/thema/v1/consulta_nfse.rb +8 -0
  197. data/test/factories/service/thema/v1/consulta_situacao_lote_rps.rb +6 -0
  198. data/test/factories/service/thema/v1/recepcao_lote_rps.rb +9 -0
  199. data/test/factories/service/thema/v1/recepcao_lote_rps_limitado.rb +8 -0
  200. data/test/test_helper.rb +42 -0
  201. metadata +338 -121
  202. data/lib/br_nfe/servico/base.rb +0 -35
  203. data/lib/br_nfe/servico/betha/base.rb +0 -85
  204. data/lib/br_nfe/servico/betha/build_response.rb +0 -141
  205. data/lib/br_nfe/servico/betha/v1/build_response.rb +0 -121
  206. data/lib/br_nfe/servico/betha/v1/cancelamento_nfs.rb +0 -52
  207. data/lib/br_nfe/servico/betha/v1/consulta_lote_rps.rb +0 -33
  208. data/lib/br_nfe/servico/betha/v1/consulta_nfs_por_rps.rb +0 -37
  209. data/lib/br_nfe/servico/betha/v1/consulta_nfse.rb +0 -51
  210. data/lib/br_nfe/servico/betha/v1/consulta_situacao_lote_rps.rb +0 -18
  211. data/lib/br_nfe/servico/betha/v1/gateway.rb +0 -125
  212. data/lib/br_nfe/servico/betha/v1/recepcao_lote_rps.rb +0 -97
  213. data/lib/br_nfe/servico/betha/v2/build_response.rb +0 -159
  214. data/lib/br_nfe/servico/betha/v2/cancelamento_nfs.rb +0 -30
  215. data/lib/br_nfe/servico/betha/v2/consulta_lote_rps.rb +0 -30
  216. data/lib/br_nfe/servico/betha/v2/consulta_nfse_por_rps.rb +0 -27
  217. data/lib/br_nfe/servico/betha/v2/envio_lote_rps_sincrono.rb +0 -30
  218. data/lib/br_nfe/servico/betha/v2/gateway.rb +0 -230
  219. data/lib/br_nfe/servico/betha/v2/gera_nfse.rb +0 -30
  220. data/lib/br_nfe/servico/betha/v2/recepcao_lote_rps.rb +0 -52
  221. data/lib/br_nfe/servico/betha/v2/substituicao_nfse.rb +0 -43
  222. data/lib/br_nfe/servico/response/default.rb +0 -34
  223. data/lib/br_nfe/servico/rps.rb +0 -108
  224. data/test/br_nfe/servico/betha/base_test.rb +0 -135
  225. data/test/br_nfe/servico/betha/v1/build_response_test.rb +0 -557
  226. data/test/br_nfe/servico/betha/v1/cancelamento_nfs_test.rb +0 -72
  227. data/test/br_nfe/servico/betha/v1/consulta_lote_rps_test.rb +0 -46
  228. data/test/br_nfe/servico/betha/v1/consulta_nfs_por_rps_test.rb +0 -68
  229. data/test/br_nfe/servico/betha/v1/consulta_nfse_test.rb +0 -74
  230. data/test/br_nfe/servico/betha/v1/consulta_situacao_lote_rps_test.rb +0 -27
  231. data/test/br_nfe/servico/betha/v1/gateway_test.rb +0 -151
  232. data/test/br_nfe/servico/betha/v1/recepcao_lote_rps_test.rb +0 -249
  233. data/test/br_nfe/servico/betha/v2/cancelamento_nfs_test.rb +0 -44
  234. data/test/br_nfe/servico/betha/v2/consulta_lote_rps_test.rb +0 -38
  235. data/test/br_nfe/servico/betha/v2/consulta_nfse_por_rps_test.rb +0 -36
  236. data/test/br_nfe/servico/betha/v2/envio_lote_rps_sincrono_test.rb +0 -51
  237. data/test/br_nfe/servico/betha/v2/gateway_test.rb +0 -372
  238. data/test/br_nfe/servico/betha/v2/gera_nfse_test.rb +0 -62
  239. data/test/br_nfe/servico/betha/v2/recepcao_lote_rps_test.rb +0 -108
  240. data/test/br_nfe/servico/betha/v2/substituicao_nfse_test.rb +0 -84
  241. data/test/br_nfe/servico/response/default_test.rb +0 -54
  242. data/test/factories/servico/base.rb +0 -5
  243. data/test/factories/servico/betha/base.rb +0 -5
  244. data/test/factories/servico/betha/v1/build_response.rb +0 -6
  245. data/test/factories/servico/betha/v1/cancelamento_nfs.rb +0 -7
  246. data/test/factories/servico/betha/v1/consulta_nfse.rb +0 -8
  247. data/test/factories/servico/betha/v1/recepcao_lote_rps.rb +0 -6
  248. data/test/factories/servico/betha/v2/cancelamento_nfs.rb +0 -7
  249. data/test/factories/servico/betha/v2/consulta_lote_rps.rb +0 -6
  250. data/test/factories/servico/betha/v2/consulta_nfse_por_rps.rb +0 -6
  251. data/test/factories/servico/betha/v2/envio_lote_rps_sincrono.rb +0 -5
  252. data/test/factories/servico/betha/v2/gateway.rb +0 -5
  253. data/test/factories/servico/betha/v2/gera_nfse.rb +0 -6
  254. data/test/factories/servico/betha/v2/recepcao_lote_rps.rb +0 -5
  255. data/test/factories/servico/betha/v2/substituicao_nfse.rb +0 -8
  256. data/test/factories/servico/response/default.rb +0 -10
  257. data/test/factories/servico/rps.rb +0 -44
@@ -1,37 +0,0 @@
1
- module BrNfe
2
- module Servico
3
- module Betha
4
- module V1
5
- class ConsultaNfsPorRps < BrNfe::Servico::Betha::V1::Gateway
6
- include BrNfe::Helper::HaveRps
7
-
8
- validate :validar_rps # metodo definido no module BrNfe::Helper::HaveRps
9
-
10
- def wsdl
11
- "http://e-gov.betha.com.br/e-nota-contribuinte-#{'test-' if env == :test}ws/consultarNfsePorRps?wsdl"
12
- end
13
-
14
- def method_wsdl
15
- :consultar_nfse_por_rps
16
- end
17
-
18
- def xml_builder
19
- Nokogiri::XML::Builder.new do |xml|
20
- xml.Temp {
21
- # Identificação RPS
22
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_identificacao_rps(rps).doc.root.to_s )
23
-
24
- # Pestador / Emitente
25
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_prestador.doc.root.to_s )
26
- }
27
- end.doc.root
28
- end
29
-
30
- def set_response(resp)
31
- @response = BrNfe::Servico::Betha::V1::BuildResponse.new(hash: resp.hash[:envelope][:body][:consultar_nfse_por_rps_envio_response], nfe_method: :consultar_nfse_rps).response
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,51 +0,0 @@
1
- module BrNfe
2
- module Servico
3
- module Betha
4
- module V1
5
- class ConsultaNfse < BrNfe::Servico::Betha::V1::Gateway
6
-
7
- def wsdl
8
- "http://e-gov.betha.com.br/e-nota-contribuinte-#{'test-' if env == :test}ws/consultarNfse?wsdl"
9
- end
10
-
11
- attr_accessor :numero_nfse
12
- attr_accessor :data_inicial
13
- attr_accessor :data_final
14
-
15
- validates :data_inicial, :data_final, presence: true
16
-
17
-
18
- def data_inicial
19
- value_date(@data_inicial)
20
- end
21
-
22
- def data_final
23
- value_date(@data_final)
24
- end
25
-
26
-
27
- def method_wsdl
28
- :consultar_nfse
29
- end
30
-
31
- def xml_builder
32
- Nokogiri::XML::Builder.new do |xml|
33
- xml.Temp {
34
-
35
- # Pestador / Emitente
36
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_prestador.doc.root.to_s )
37
-
38
- xml.NumeroNfse BrNfe::Helper.only_number(numero_nfse).max_size(15) if !numero_nfse.blank?
39
- xml.PeriodoEmissao {
40
- xml.DataInicial data_inicial
41
- xml.DataFinal data_final
42
- }
43
- }
44
- end.doc.root
45
- end
46
-
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,18 +0,0 @@
1
- module BrNfe
2
- module Servico
3
- module Betha
4
- module V1
5
- class ConsultaSituacaoLoteRps < BrNfe::Servico::Betha::V1::ConsultaLoteRps
6
-
7
- def wsdl
8
- "http://e-gov.betha.com.br/e-nota-contribuinte-#{'test-' if env == :test}ws/consultarSituacaoLoteRps?wsdl"
9
- end
10
-
11
- def method_wsdl
12
- :consultar_situacao_lote_rps
13
- end
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,125 +0,0 @@
1
- module BrNfe
2
- module Servico
3
- module Betha
4
- module V1
5
- class Gateway < BrNfe::Servico::Betha::Base
6
- def namespaces
7
- {"xmlns:ns1" => "http://www.betha.com.br/e-nota-contribuinte-ws"}
8
- end
9
-
10
- def namespace_identifier
11
- :ns1
12
- end
13
-
14
- def version
15
- :v1
16
- end
17
-
18
- def request
19
- set_response(
20
- client_wsdl.call("#{method_wsdl}_envio".to_sym,
21
- message: "#{content_xml}",
22
- attributes: {'xmlns:ns1' => 'http://www.betha.com.br/e-nota-contribuinte-ws'}
23
- )
24
- )
25
- rescue Savon::SOAPFault => error
26
- return @response = BrNfe::Servico::Response::Default.new(success: false, error_messages: [error.message])
27
- end
28
-
29
- def set_response(resp)
30
- method_response = (method_wsdl.to_s + "_envio_response").to_sym
31
- @builder = BrNfe::Servico::Betha::V1::BuildResponse.new(hash: resp.hash[:envelope][:body][method_response], nfe_method: method_wsdl)
32
- @original_response = @builder.messages
33
- @response = @builder.response
34
- end
35
-
36
- def content_xml
37
- canonicalize(xml_builder).gsub('<Temp>','').gsub('</Temp>','')
38
- end
39
-
40
- private
41
-
42
- def xml_dados_servico(rps)
43
- Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
44
- xml.Servico {
45
- xml.ItemListaServico BrNfe::Helper.only_number(rps.item_lista_servico).rjust(4,'0').max_size(4)
46
- xml.CodigoCnae BrNfe::Helper.only_number(rps.codigo_cnae).max_size(7) unless rps.codigo_cnae.blank?
47
- xml.CodigoTributacaoMunicipio rps.codigo_tributacao_municipio unless rps.codigo_tributacao_municipio.blank?
48
- xml.Discriminacao "#{rps.discriminacao}".max_size(2_000).remove_accents
49
- xml.CodigoMunicipio "#{rps.codigo_municipio}".max_size(7)
50
-
51
- xml.Valores {
52
- xml.ValorServicos value_monetary(rps.valor_servicos, 4) # Valores obrigatórios
53
- xml.IssRetido value_true_false(rps.iss_retido?) # Valores obrigatórios
54
- xml.BaseCalculo value_monetary(rps.base_calculo, 4) # Valores obrigatórios
55
- xml.ValorDeducoes value_monetary(rps.valor_deducoes, 4) unless rps.valor_deducoes.blank?
56
- xml.ValorPis value_monetary(rps.valor_pis, 4) unless rps.valor_pis.blank?
57
- xml.ValorCofins value_monetary(rps.valor_cofins, 4) unless rps.valor_cofins.blank?
58
- xml.ValorInss value_monetary(rps.valor_inss, 4) unless rps.valor_inss.blank?
59
- xml.ValorIr value_monetary(rps.valor_ir, 4) unless rps.valor_ir.blank?
60
- xml.ValorCsll value_monetary(rps.valor_csll, 4) unless rps.valor_csll.blank?
61
- xml.ValorIss value_monetary(rps.valor_iss, 4) unless rps.valor_iss.blank?
62
- xml.OutrasRetencoes value_monetary(rps.outras_retencoes, 4) unless rps.outras_retencoes.blank?
63
- xml.Aliquota value_monetary(rps.aliquota, 4) unless rps.aliquota.blank?
64
- }
65
- }
66
- end
67
- end
68
-
69
- def xml_prestador
70
- Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
71
- xml.Prestador {
72
- tag_cpf_cnpj(xml, emitente.cnpj)
73
- xml.InscricaoMunicipal "#{emitente.inscricao_municipal}".max_size(15) if !emitente.inscricao_municipal.blank? && env == :production
74
- }
75
- end
76
- end
77
-
78
- def xml_intermediario_servico(intermediario)
79
- return Nokogiri::XML::Builder.new unless intermediario
80
- Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
81
- xml.IntermediarioServico{
82
- xml.RazaoSocial "#{intermediario.razao_social}".max_size(115)
83
- xml.CpfCnpj{
84
- tag_cpf_cnpj(xml, intermediario.cpf_cnpj)
85
- }
86
- xml.InscricaoMunicipal "#{intermediario.inscricao_municipal}".max_size(15) unless intermediario.inscricao_municipal.blank?
87
- }
88
- end
89
- end
90
-
91
- def xml_condicao_pagamento(rps)
92
- return Nokogiri::XML::Builder.new unless rps.condicao_pagamento
93
- Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
94
- xml.CondicaoPagamento{
95
- xml.Condicao rps.condicao_pagamento.condicao
96
- if rps.condicao_pagamento.parcelas.size > 0
97
- xml.QtdParcela rps.condicao_pagamento.parcelas.size
98
- rps.condicao_pagamento.parcelas.each_with_index do |parcela, i|
99
- #
100
- # Aqui há uma ressalva:
101
- # Na documentação diz que a DataVencimento deve ser do tipo DateTime
102
- # Porém não é nem do tipo DateTime e nem do tipo Date, mas sim uma String
103
- # no formato DD/MM/YYYY <- by bethagambis.com
104
- #
105
- vencimento = get_date(parcela[:vencimento])
106
- xml.Parcelas{
107
- xml.Parcela i+1
108
- xml.DataVencimento "#{vencimento.day.to_s.rjust(2, '0')}/#{vencimento.month.to_s.rjust(2, '0')}/#{vencimento.year}" if vencimento
109
- xml.Valor value_monetary(parcela[:valor], 4)
110
- }
111
- end
112
- end
113
- }
114
- end
115
- end
116
-
117
- def get_date(value)
118
- Date.parse(value.to_s)
119
- rescue
120
- end
121
- end
122
- end
123
- end
124
- end
125
- end
@@ -1,97 +0,0 @@
1
- module BrNfe
2
- module Servico
3
- module Betha
4
- module V1
5
- class RecepcaoLoteRps < BrNfe::Servico::Betha::V1::Gateway
6
- def wsdl
7
- "http://e-gov.betha.com.br/e-nota-contribuinte-#{'test-' if env == :test}ws/recepcionarLoteRps?wsdl"
8
- end
9
- def method_wsdl
10
- :enviar_lote_rps
11
- end
12
-
13
- def certificado_obrigatorio?
14
- true
15
- end
16
-
17
- validates :numero_lote_rps, presence: true
18
- validate :validar_lote_rps
19
-
20
- def xml_builder
21
- xml = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
22
- xml.Temp {
23
- xml_lote_rps = lote_rps_xml.doc.root
24
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_lote_rps.to_s )
25
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( assinatura_xml(xml_lote_rps.to_s, "#lote#{numero_lote_rps}") )
26
- }
27
- end.doc
28
-
29
- canonicalize(xml.root())
30
- end
31
-
32
- def lote_rps_xml
33
- Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
34
- xml.LoteRps("Id" => "lote#{numero_lote_rps}"){
35
- xml.NumeroLote BrNfe::Helper.only_number(numero_lote_rps).max_size(15)
36
- tag_cpf_cnpj(xml, emitente.cnpj)
37
-
38
- xml.InscricaoMunicipal "#{emitente.inscricao_municipal}".max_size(15) if env == :production
39
-
40
- xml.QuantidadeRps lote_rps.size
41
- xml.ListaRps {
42
- xml.Rps do |xml_rps|
43
- lote_rps.each do |rps|
44
- xml_informacao_rps = xml_inf_rps(rps).doc.root
45
- xml_rps.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_informacao_rps.to_s )
46
- xml_rps.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( assinatura_xml( xml_informacao_rps.to_s, "#rps#{rps.numero}" ) )
47
- end
48
- end
49
- }
50
- }
51
- end
52
- end
53
-
54
- def xml_inf_rps(rps)
55
- Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
56
- xml.InfRps('Id' => "rps#{rps.numero}") {
57
-
58
- # Identificação RPS
59
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_identificacao_rps(rps).doc.root.to_s )
60
-
61
- xml.DataEmissao value_date_time(rps.data_emissao)
62
- xml.NaturezaOperacao "#{emitente.natureza_operacao}".max_size(2)
63
- xml.RegimeEspecialTributacao "#{emitente.regime_especial_tributacao}".max_size(2) unless emitente.regime_especial_tributacao.blank? # Código de identificação do regime especial de tributação: (1)Microempresa municipal, (2)Estimativa, (3)Sociedade de profissionais, (4)Cooperativa, (5)Microempresário Individual (MEI), (6)Microempresário e Empresa de Pequeno Porte (ME EPP) ,
64
- xml.OptanteSimplesNacional value_true_false(emitente.optante_simples_nacional?) # (1)sim ----- (2)não -----
65
- xml.IncentivadorCultural value_true_false(emitente.incentivo_fiscal?) # (1)sim ----- (2)não -----
66
- xml.Status "#{rps.status}".max_size(1)
67
-
68
- # RPS subistituido
69
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_rps_substituido(rps).doc.root.to_s )
70
-
71
- # Dados do(s) serviço(s)
72
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_dados_servico(rps).doc.root.to_s )
73
-
74
- # Pestador / Emitente
75
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_prestador.doc.root.to_s )
76
-
77
- # Tomador / Destinatário
78
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_dados_tomador(rps.destinatario).doc.root.to_s )
79
-
80
- # Intermediario
81
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_intermediario_servico(rps.intermediario).doc.root.to_s )
82
-
83
- # Dados Construção Civil
84
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_dados_construcao_civil(rps).doc.root.to_s )
85
-
86
- xml.OutrasInformacoes "#{rps.outras_informacoes}".max_size(255) unless rps.outras_informacoes.blank?
87
-
88
- # Condição de pagamento
89
- xml.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( xml_condicao_pagamento(rps).doc.root.to_s )
90
- }
91
- end
92
- end
93
- end
94
- end
95
- end
96
- end
97
- end
@@ -1,159 +0,0 @@
1
- module BrNfe
2
- module Servico
3
- module Betha
4
- module V2
5
- class BuildResponse < BrNfe::Servico::Betha::BuildResponse
6
- attr_accessor :xml
7
-
8
- def messages
9
- @messages ||= Nori.new(:convert_tags_to => lambda { |tag| tag.snakecase.to_sym }).parse(xml.to_s)["#{nfe_method.to_s}_resposta".to_sym]
10
- end
11
-
12
- private
13
-
14
- def key_complemento_nfse
15
- :comp_nfse
16
- end
17
-
18
- def new_nota_fiscal(params)
19
- info_nfse = params[:nfse] ? params[:nfse][:inf_nfse] : {}
20
-
21
- BrNfe::Servico::Response::NotaFiscal.new do |nfse|
22
- nfse.numero_nf = info_nfse[:numero]
23
- nfse.codigo_verificacao = info_nfse[:codigo_verificacao]
24
- nfse.data_emissao = info_nfse[:data_emissao]
25
- nfse.outras_informacoes = info_nfse[:outras_informacoes]
26
- nfse.url_nf = info_nfse[:outras_informacoes]
27
-
28
- get_emitente_servico nfse, info_nfse[:prestador_servico]
29
- get_info_cancelamento( nfse, params[:nfse_cancelamento]) if params[:nfse_cancelamento]
30
- get_info_substituicao( nfse, params[:nfse_substituicao]) if params[:nfse_substituicao]
31
- get_orgao_gerador nfse, info_nfse[:orgao_gerador]
32
-
33
- if info_nfse[:valores_nfse]
34
- nfse.base_calculo = info_nfse[:valores_nfse][:base_calculo]
35
- nfse.aliquota = info_nfse[:valores_nfse][:aliquota]
36
- nfse.valor_iss = info_nfse[:valores_nfse][:valor_iss]
37
- nfse.valor_liquido = info_nfse[:valores_nfse][:valor_liquido_nfse]
38
- end
39
-
40
- get_declaracao_prestacao_servico(nfse, info_nfse[:declaracao_prestacao_servico]) if info_nfse[:declaracao_prestacao_servico]
41
-
42
- end
43
- end
44
-
45
- def get_emitente_servico(nfse, dados_emitente)
46
- dados_emitente ||= {}
47
- nfse.emitente do |em|
48
- if dados_emitente[:identificacao_prestador]
49
- em.cnpj = dados_emitente[:identificacao_prestador][:cpf_cnpj][:cnpj] if dados_emitente[:identificacao_prestador][:cpf_cnpj]
50
- em.inscricao_municipal = dados_emitente[:identificacao_prestador][:inscricao_municipal]
51
- end
52
- em.razao_social = dados_emitente[:razao_social]
53
- em.nome_fantasia = dados_emitente[:nome_fantasia]
54
- if dados_emitente[:contato]
55
- em.telefone = dados_emitente[:contato][:telefone]
56
- em.email = dados_emitente[:contato][:email]
57
- end
58
- em.endereco = get_endereco(dados_emitente[:endereco])
59
- end
60
- end
61
-
62
- def get_info_cancelamento(nfse, params)
63
- params ||= {}
64
- params = params[:confirmacao] || {}
65
-
66
- info_pedido_cancelamento = params[:pedido][:inf_pedido_cancelamento] if params[:pedido]
67
- info_pedido_cancelamento ||= {}
68
-
69
- confirmacao_cancelamento = params[:inf_confirmacao_cancelamento] || {}
70
-
71
- nfse.cancelamento_codigo = info_pedido_cancelamento[:codigo_cancelamento]
72
- if info_pedido_cancelamento[:identificacao_nfse]
73
- nfse.cancelamento_numero_nf = info_pedido_cancelamento[:identificacao_nfse][:numero]
74
- nfse.cancelamento_cnpj = info_pedido_cancelamento[:identificacao_nfse][:cpf_cnpj][:cnpj] if info_pedido_cancelamento[:identificacao_nfse][:cpf_cnpj]
75
- nfse.cancelamento_inscricao_municipal = info_pedido_cancelamento[:identificacao_nfse][:inscricao_municipal]
76
- nfse.cancelamento_municipio = info_pedido_cancelamento[:identificacao_nfse][:codigo_municipio]
77
- end
78
- nfse.cancelamento_sucesso = confirmacao_cancelamento[:sucesso]
79
- nfse.cancelamento_data_hora = confirmacao_cancelamento[:data_hora]
80
- end
81
-
82
- def get_declaracao_prestacao_servico(nfse, params)
83
- params = params[:inf_declaracao_prestacao_servico] || {}
84
-
85
- nfse.competencia = params[:competencia]
86
- nfse.emitente.optante_simples_nacional = params[:optante_simples_nacional]
87
-
88
- get_informacoes_rps nfse, params[:rps]
89
- get_dados_servico nfse, params[:servico]
90
- get_destinatario_servico nfse, params[:tomador]
91
- get_intermediario nfse, params[:intermediario] if params[:intermediario]
92
- get_construcao_civil nfse, params[:construcao_civil]
93
- end
94
-
95
- def get_informacoes_rps(nfse, params)
96
- params ||= {}
97
- if params[:identificacao_rps]
98
- nfse.rps_numero = params[:identificacao_rps][:numero]
99
- nfse.rps_serie = params[:identificacao_rps][:serie]
100
- nfse.rps_tipo = params[:identificacao_rps][:tipo]
101
- end
102
- nfse.rps_situacao = params[:situacao]
103
- nfse.data_emissao_rps = params[:data_emissao]
104
- if params[:rps_substituido]
105
- nfse.rps_substituido_numero = params[:rps_substituido][:numero]
106
- nfse.rps_substituido_serie = params[:rps_substituido][:serie]
107
- nfse.rps_substituido_tipo = params[:rps_substituido][:tipo]
108
- end
109
- end
110
-
111
- def get_dados_servico(nfse, params)
112
- if valores = params[:valores]
113
- nfse.valor_servicos = valores[:valor_servicos]
114
- nfse.valor_deducoes = valores[:valor_deducoes]
115
- nfse.valor_pis = valores[:valor_pis]
116
- nfse.valor_cofins = valores[:valor_cofins]
117
- nfse.valor_inss = valores[:valor_inss]
118
- nfse.valor_ir = valores[:valor_ir]
119
- nfse.valor_csll = valores[:valor_csll]
120
- nfse.outras_retencoes = valores[:outras_retencoes]
121
- # nfse.valor_iss = valores[:valor_iss]
122
- nfse.desconto_condicionado = valores[:desconto_condicionado]
123
- nfse.desconto_incondicionado = valores[:desconto_incondicionado]
124
- end
125
-
126
- nfse.iss_retido = params[:iss_retido]
127
- nfse.responsavel_retencao = params[:responsavel_retencao]
128
- nfse.item_lista_servico = params[:item_lista_servico]
129
- nfse.codigo_cnae = params[:codigo_cnae]
130
- nfse.discriminacao = params[:discriminacao]
131
- nfse.codigo_municipio = params[:codigo_municipio]
132
- nfse.emitente.natureza_operacao = params[:exigibilidade_iss]
133
- nfse.numero_processo = params[:numero_processo]
134
- nfse.municipio_incidencia = params[:municipio_incidencia]
135
- end
136
-
137
- def get_destinatario_servico(nfse, params)
138
- params ||= {}
139
- nfse.destinatario do |dest|
140
- if identificacao = params[:identificacao_tomador]
141
- dest.cpf_cnpj = identificacao[:cpf_cnpj][:cnpj] || identificacao[:cpf_cnpj][:cpf] if identificacao[:cpf_cnpj]
142
- dest.inscricao_municipal = identificacao[:inscricao_municipal]
143
- end
144
- dest.razao_social = params[:razao_social]
145
- dest.nome_fantasia = params[:nome_fantasia]
146
- if params[:contato]
147
- dest.telefone = params[:contato][:telefone]
148
- dest.email = params[:contato][:email]
149
- end
150
- dest.endereco = get_endereco(params[:endereco])
151
- end
152
- end
153
-
154
-
155
- end
156
- end
157
- end
158
- end
159
- end