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,34 +0,0 @@
1
- module BrNfe
2
- module Servico
3
- module Response
4
- class Default < BrNfe::ActiveModelBase
5
- attr_accessor :success
6
- attr_accessor :error_messages
7
- attr_accessor :notas_fiscais
8
-
9
- attr_accessor :protocolo
10
- attr_accessor :data_recebimento
11
- attr_accessor :numero_lote
12
-
13
-
14
- def initialize(attributes = {})
15
- self.notas_fiscais = [] # Para poder utilizar o <<
16
- self.error_messages = [] # Para poder utilizar o <<
17
- super
18
- end
19
-
20
- def notas_fiscais
21
- @notas_fiscais = [@notas_fiscais].flatten # Para retornar sempre um vetor
22
- end
23
-
24
- def error_messages
25
- @error_messages = [@error_messages].flatten
26
- end
27
-
28
- def success?
29
- success
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,108 +0,0 @@
1
- module BrNfe
2
- module Servico
3
- class Rps < BrNfe::ActiveModelBase
4
- include BrNfe::Helper::HaveDestinatario
5
- include BrNfe::Helper::HaveIntermediario
6
- include BrNfe::Helper::HaveCondicaoPagamento
7
-
8
- attr_accessor :validar_recepcao_rps
9
-
10
- # Sempre que houver RPS, essas informações são obrigatórias
11
- validates :numero, :serie, :tipo, presence: true
12
-
13
- with_options if: :validar_recepcao_rps do |record|
14
- record.validates :data_emissao, :item_lista_servico, :discriminacao, :codigo_municipio,
15
- :valor_servicos, :base_calculo, presence: true
16
- record.validates :valor_iss, :aliquota, presence: true, unless: :iss_retido?
17
- record.validates :municipio_incidencia, presence: true, if: :municipio_incidencia_obrigatorio?
18
-
19
- record.validates :valor_servicos, :valor_deducoes, :valor_pis, :valor_cofins, :valor_inss, :valor_ir,
20
- :valor_csll, :outras_retencoes, :valor_iss, :aliquota, :base_calculo,
21
- :desconto_incondicionado, :desconto_condicionado, numericality: true, allow_blank: true
22
-
23
- record.validate :validar_intermediario
24
- record.validate :validar_destinatario
25
- end
26
-
27
- attr_accessor :numero
28
- attr_accessor :serie
29
- attr_accessor :tipo
30
-
31
- attr_accessor :data_emissao
32
- attr_accessor :status
33
- attr_accessor :competencia
34
-
35
- attr_accessor :numero_substituicao
36
- attr_accessor :serie_substituicao
37
- attr_accessor :tipo_substituicao
38
-
39
- #Para construção civil
40
- attr_accessor :codigo_obra
41
- attr_accessor :codigo_art
42
-
43
- attr_accessor :valor_servicos
44
- attr_accessor :valor_deducoes
45
- attr_accessor :valor_pis
46
- attr_accessor :valor_cofins
47
- attr_accessor :valor_inss
48
- attr_accessor :valor_ir
49
- attr_accessor :valor_csll
50
- attr_accessor :outras_retencoes
51
- attr_accessor :iss_retido
52
- attr_accessor :valor_iss
53
- attr_accessor :aliquota
54
- attr_accessor :base_calculo
55
- attr_accessor :desconto_incondicionado
56
- attr_accessor :desconto_condicionado
57
-
58
- attr_accessor :responsavel_retencao
59
- attr_accessor :item_lista_servico
60
- attr_accessor :codigo_tributacao_municipio
61
- attr_accessor :discriminacao
62
- attr_accessor :exigibilidade_iss
63
- attr_accessor :codigo_municipio
64
- attr_accessor :municipio_incidencia
65
- attr_accessor :codigo_pais
66
- attr_accessor :numero_processo
67
- attr_accessor :codigo_cnae
68
- attr_accessor :outras_informacoes
69
-
70
- def contem_substituicao?
71
- numero_substituicao.present? && serie_substituicao.present? && tipo_substituicao.present?
72
- end
73
-
74
- def iss_retido?
75
- BrNfe.true_values.include?(iss_retido)
76
- end
77
-
78
- def competencia
79
- @competencia || data_emissao
80
- end
81
-
82
- def default_values
83
- {
84
- codigo_pais: '1058',
85
- validar_recepcao_rps: false
86
- }
87
- end
88
- private
89
-
90
- def validar_intermediario
91
- return true unless intermediario
92
- if intermediario.invalid?
93
- intermediario.errors.full_messages.map{|msg| errors.add(:base, "Intermediário: #{msg}") }
94
- end
95
- end
96
-
97
- def validar_destinatario
98
- if destinatario.invalid?
99
- destinatario.errors.full_messages.map{|msg| errors.add(:base, "Destinatário: #{msg}") }
100
- end
101
- end
102
-
103
- def municipio_incidencia_obrigatorio?
104
- "#{exigibilidade_iss}".in?(['1','01','6','06','7','07'])
105
- end
106
- end
107
- end
108
- end
@@ -1,135 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe BrNfe::Servico::Betha::Base do
4
- subject { FactoryGirl.build(:br_nfe_servico_betha_base) }
5
- let(:rps) { FactoryGirl.build(:br_nfe_rps) }
6
- let(:destinatario) { FactoryGirl.build(:destinatario) }
7
- let(:endereco) { FactoryGirl.build(:endereco) }
8
-
9
- describe "#xml_identificacao_rps" do
10
- it "deve vir com a estrutura adecuada" do
11
- xml = subject.send(:xml_identificacao_rps, rps).doc
12
-
13
- xml.xpath('IdentificacaoRps/Numero').first.text.must_equal "#{rps.numero}"
14
- xml.xpath('IdentificacaoRps/Serie').first.text.must_equal "#{rps.serie}"
15
- xml.xpath('IdentificacaoRps/Tipo').first.text.must_equal "#{rps.tipo}"
16
- end
17
- end
18
-
19
- describe "#xml_rps_substituido" do
20
- before do
21
- rps.numero_substituicao = 333
22
- rps.serie_substituicao = 5
23
- rps.tipo_substituicao = 9
24
- end
25
- it "deve vir com a estrutura adecuada" do
26
- xml = subject.send(:xml_rps_substituido, rps).doc
27
-
28
- xml.xpath('RpsSubstituido/Numero').first.text.must_equal "333"
29
- xml.xpath('RpsSubstituido/Serie').first.text.must_equal "5"
30
- xml.xpath('RpsSubstituido/Tipo').first.text.must_equal "9"
31
- end
32
-
33
- it "se rps contem_substituicao deve retornar um html vazio" do
34
- rps.expects(:contem_substituicao?).returns(false)
35
- xml = subject.send(:xml_rps_substituido, rps).doc.root.to_s.must_equal ''
36
- end
37
- end
38
-
39
- describe "#xml_endereco" do
40
- before do
41
- endereco.assign_attributes({
42
- logradouro: 'á'.rjust(130, 'á'),
43
- numero: '2'.rjust(100, '2'),
44
- complemento: 'õ'.rjust(100, 'õ'),
45
- bairro: 'ê'.rjust(100, 'ê'),
46
- codigo_municipio: '123456789'.rjust(100, 'A'),
47
- uf: 'ABCDE',
48
- cep: '123-4567-89-60',
49
- codigo_pais: '123456AAAA'
50
- })
51
- end
52
- it "valores padroes" do
53
- xml = subject.send(:xml_endereco, endereco).doc
54
- xml.xpath('Endereco/Endereco').first.text.must_equal "A".rjust(125, 'A')
55
- xml.xpath('Endereco/Numero').first.text.must_equal "2".rjust(10, '2')
56
- xml.xpath('Endereco/Complemento').first.text.must_equal "O".rjust(60, 'O')
57
- xml.xpath('Endereco/Bairro').first.text.must_equal "E".rjust(60, 'E')
58
- xml.xpath('Endereco/CodigoMunicipio').first.text.must_equal "1234567"
59
- xml.xpath('Endereco/Uf').first.text.must_equal "AB"
60
- xml.xpath('Endereco/Cep').first.text.must_equal '12345678'
61
- xml.xpath('Endereco/CodigoPais').first.must_be_nil
62
- end
63
-
64
- it "se for versao 1 e mandar o codigo_pais como true deve ignorar" do
65
- subject.stubs(:version).returns(:v1)
66
- xml = subject.send(:xml_endereco, endereco, true).doc
67
- xml.xpath('Endereco/CodigoPais').first.must_be_nil
68
- end
69
-
70
- it "se for versao 2 e mandar o codigo_pais como true deve trazer junto o codigo do pais" do
71
- subject.stubs(:version).returns(:v2)
72
- xml = subject.send(:xml_endereco, endereco, true).doc
73
- xml.xpath('Endereco/CodigoPais').first.text.must_equal '1234'
74
- end
75
-
76
- it "se for versao 2 e mandar o codigo_pais como false não deve trazer o codigo do pais" do
77
- subject.stubs(:version).returns(:v2)
78
- xml = subject.send(:xml_endereco, endereco, false).doc
79
- xml.xpath('Endereco/CodigoPais').first.must_be_nil
80
- end
81
- end
82
-
83
- describe "#xml_dados_tomador" do
84
- it "Valores padrões indiferentemente da versao" do
85
- xml = subject.send(:xml_dados_tomador, destinatario).doc
86
-
87
- xml.xpath('Tomador/RazaoSocial').first.text.must_equal destinatario.razao_social
88
- xml.xpath('Tomador/IdentificacaoTomador/CpfCnpj/Cpf').first.text.must_equal BrNfe::Helper::CpfCnpj.new(destinatario.cpf_cnpj).sem_formatacao
89
- xml.xpath('Tomador/IdentificacaoTomador/InscricaoMunicipal').first.text.must_equal destinatario.inscricao_municipal
90
- xml.xpath('Tomador/IdentificacaoTomador/InscricaoEstadual').first.must_be_nil
91
-
92
- xml.xpath('Tomador/Endereco/Endereco').first.text.must_equal destinatario.endereco.logradouro
93
- xml.xpath('Tomador/Endereco/Numero').first.text.must_equal destinatario.endereco.numero
94
- xml.xpath('Tomador/Endereco/Complemento').first.text.must_equal destinatario.endereco.complemento
95
- xml.xpath('Tomador/Endereco/Bairro').first.text.must_equal destinatario.endereco.bairro
96
- xml.xpath('Tomador/Endereco/CodigoMunicipio').first.text.must_equal destinatario.endereco.codigo_municipio
97
- xml.xpath('Tomador/Endereco/Uf').first.text.must_equal destinatario.endereco.uf
98
- xml.xpath('Tomador/Endereco/Cep').first.text.must_equal destinatario.endereco.cep.gsub(/[^0-9]/,'')
99
- xml.xpath('Tomador/Endereco/CodigoPais').first.must_be_nil
100
-
101
-
102
- xml.xpath('Tomador/Contato/Telefone').first.text.must_equal destinatario.telefone
103
- xml.xpath('Tomador/Contato/Email').first.text.must_equal destinatario.email
104
- end
105
-
106
- context "tags da versão 1" do
107
- before do
108
- subject.stubs(:version).returns(:v1)
109
- end
110
- it "inscricao_estadual" do
111
- xml = subject.send(:xml_dados_tomador, destinatario).doc
112
- xml.xpath('Tomador/IdentificacaoTomador/InscricaoEstadual').first.text.must_equal destinatario.inscricao_estadual
113
- end
114
- end
115
- end
116
-
117
- describe "#xml_dados_construcao_civil" do
118
- it "quando rps não tem codigo_obra" do
119
- rps.assign_attributes(codigo_obra: '', codigo_art: '366')
120
- xml = subject.send(:xml_dados_construcao_civil, rps).doc.root.to_s.must_equal ''
121
- end
122
- it "quando rps não tem codigo_art" do
123
- rps.assign_attributes(codigo_obra: '13', codigo_art: '')
124
- xml = subject.send(:xml_dados_construcao_civil, rps).doc.root.to_s.must_equal ''
125
- end
126
-
127
- it "quando rps tem codigo_art e codigo_obra" do
128
- rps.assign_attributes(codigo_obra: '13', codigo_art: '555')
129
- xml = subject.send(:xml_dados_construcao_civil, rps).doc
130
- xml.xpath('ConstrucaoCivil/CodigoObra').first.text.must_equal '13'
131
- xml.xpath('ConstrucaoCivil/Art').first.text.must_equal '555'
132
- end
133
- end
134
-
135
- end
@@ -1,557 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe BrNfe::Servico::Betha::V1::BuildResponse do
4
- subject { FactoryGirl.build(:betha_v1_build_response) }
5
-
6
- describe "#messages" do
7
- it "deve retornar o resultado da key do hash conforme o atributo nfe_method com _resposta no fim" do
8
- subject.nfe_method = :algo
9
- subject.hash = {algo_resposta: {valor_a: 1}}
10
- subject.messages.must_equal({valor_a: 1})
11
- end
12
- end
13
-
14
- describe "#success?" do
15
- it "deve ser true quanto não tem mensagem de retorno" do
16
- subject.stubs(:error_messages).returns([])
17
- subject.success?.must_equal true
18
- end
19
-
20
- it "deve ser false quanto tem alguma mensagem de retorno" do
21
- subject.stubs(:error_messages).returns([{codigo: '1'}])
22
- subject.success?.must_equal false
23
- end
24
- end
25
-
26
- describe "#error_messages" do
27
- before do
28
- subject.nfe_method = :key
29
- subject.hash = {key_resposta: {
30
- lista_mensagem_retorno: {mensagem_retorno: {
31
- codigo: "999",
32
- mensagem: "A mensagem",
33
- correcao: "A correcao"
34
- }}
35
- }}
36
- end
37
- it "se ja tem valor na variavel @error_messages deve retornar o conteudo da variavel" do
38
- subject.instance_variable_set(:@error_messages, [123])
39
- subject.error_messages.must_equal([123])
40
- end
41
-
42
- it "deve retornar um vetor com um hash com as mensagens quando houver apenas 1 mensagem em um hash" do
43
- subject.error_messages.size.must_equal 1
44
- subject.error_messages.class.must_equal Array
45
-
46
- subject.error_messages[0][:codigo].must_equal '999'
47
- subject.error_messages[0][:mensagem].must_equal 'A mensagem'
48
- subject.error_messages[0][:correcao].must_equal 'A correcao'
49
- end
50
-
51
- it "deve retornar todas as mensagens quando houver mais que uma" do
52
- subject.hash = {key_resposta: {
53
- lista_mensagem_retorno: {mensagem_retorno: [
54
- {codigo: "111", mensagem: "A mensagem 1", correcao: "A correcao 1"},
55
- {codigo: "222", mensagem: "A mensagem 2", correcao: "A correcao 2"},
56
- ]}
57
- }}
58
-
59
- subject.error_messages[0][:codigo].must_equal '111'
60
- subject.error_messages[0][:mensagem].must_equal 'A mensagem 1'
61
- subject.error_messages[0][:correcao].must_equal 'A correcao 1'
62
-
63
- subject.error_messages[1][:codigo].must_equal '222'
64
- subject.error_messages[1][:mensagem].must_equal 'A mensagem 2'
65
- subject.error_messages[1][:correcao].must_equal 'A correcao 2'
66
- end
67
- end
68
-
69
-
70
- describe "#response" do
71
- context "deve instanciar um objeto Response Default" do
72
- it "com o hash completo" do
73
- subject.nfe_method = :key
74
- subject.hash ={ key_resposta: hash_resposta_completa}
75
-
76
- response = subject.response
77
- response.success.must_equal false
78
- response.error_messages.size.must_equal 2
79
- response.error_messages[0][:codigo].must_equal '111'
80
- response.error_messages[0][:mensagem].must_equal 'Msg 1'
81
- response.error_messages[0][:correcao].must_equal 'corr 1'
82
- response.error_messages[1][:codigo].must_equal '222'
83
- response.error_messages[1][:mensagem].must_equal 'Msg 2'
84
- response.error_messages[1][:correcao].must_equal 'corr 2'
85
-
86
- response.numero_lote.must_equal "333332"
87
- response.protocolo.must_equal "5566633548"
88
- response.data_recebimento.must_equal DateTime.parse("Fri, 04 Sep 2015 09:56:22 -0300")
89
-
90
- response.notas_fiscais.size.must_equal 1
91
- nota_fiscal = response.notas_fiscais.first
92
-
93
- nota_fiscal.numero_nf.must_equal "1111"
94
- nota_fiscal.codigo_verificacao.must_equal "ASDAD"
95
- nota_fiscal.data_emissao.must_equal DateTime.parse("Fri, 04 Sep 2015 09:56:22 -0300")
96
- nota_fiscal.rps_numero.must_equal "11111"
97
- nota_fiscal.rps_serie.must_equal "SN"
98
- nota_fiscal.rps_tipo.must_equal "1"
99
- nota_fiscal.rps_situacao.must_be_nil
100
- nota_fiscal.data_emissao_rps.must_equal DateTime.parse("Fri, 04 Sep 2015 09:56:17 -0300")
101
- nota_fiscal.competencia.must_equal DateTime.parse("Tue, 01 Sep 2015 00:00:00 -0300")
102
- nota_fiscal.outras_informacoes.must_equal "http://e-gov.betha.com.br/e-nota"
103
- nota_fiscal.url_nf.must_equal "http://e-gov.betha.com.br/e-nota"
104
- nota_fiscal.item_lista_servico.must_equal "111"
105
- nota_fiscal.codigo_cnae.must_equal "6202300"
106
- nota_fiscal.discriminacao.must_equal "discriminacao"
107
- nota_fiscal.codigo_municipio.must_equal "4204202"
108
- nota_fiscal.valor_servicos.must_equal "111"
109
- nota_fiscal.valor_deducoes.must_equal "0"
110
- nota_fiscal.valor_pis.must_equal "0.00"
111
- nota_fiscal.valor_cofins.must_equal "0.00"
112
- nota_fiscal.valor_inss.must_equal "0.00"
113
- nota_fiscal.valor_ir.must_equal "0.00"
114
- nota_fiscal.valor_csll.must_equal "0.00"
115
- nota_fiscal.iss_retido.must_equal "2"
116
- nota_fiscal.valor_iss.must_equal "0"
117
- nota_fiscal.base_calculo.must_equal "111"
118
- nota_fiscal.aliquota.must_equal "1.0000"
119
- nota_fiscal.desconto_condicionado.must_equal "desconto_condicionado"
120
- nota_fiscal.desconto_incondicionado.must_equal "desconto_incondicionado"
121
- nota_fiscal.orgao_gerador_municipio.must_equal "0"
122
- nota_fiscal.orgao_gerador_uf.must_equal "SC"
123
- nota_fiscal.cancelamento_codigo.must_equal "123"
124
- nota_fiscal.cancelamento_numero_nf.must_equal "123"
125
- nota_fiscal.cancelamento_cnpj.must_equal "12345678901234"
126
- nota_fiscal.cancelamento_inscricao_municipal.must_equal "INSCRICAO CANCELAMENTO"
127
- nota_fiscal.cancelamento_municipio.must_equal "99999999"
128
- nota_fiscal.cancelamento_sucesso.must_equal true
129
- nota_fiscal.cancelamento_data_hora.must_equal DateTime.parse("Fri, 05 Sep 2015 09:56:17 -0300")
130
- nota_fiscal.nfe_substituidora.must_equal "663322"
131
- nota_fiscal.codigo_obra.must_equal "3333"
132
- nota_fiscal.codigo_art.must_equal "4444"
133
-
134
- #Intermediario
135
- nota_fiscal.intermediario.razao_social.must_equal "RAZAO_SOCIAL INTERMEDIARIO"
136
- nota_fiscal.intermediario.cpf_cnpj.must_equal "cpf intermediario"
137
- nota_fiscal.intermediario.inscricao_municipal.must_equal "inscricao_municipal intermediario"
138
-
139
- # Emitente / prestador
140
- nota_fiscal.emitente.cnpj.must_equal "18113831000135"
141
- nota_fiscal.emitente.inscricao_municipal.must_equal "inscricao_municipal prestador"
142
- nota_fiscal.emitente.razao_social.must_equal "EMPRESA NACIONAL LTDA - ME"
143
- nota_fiscal.emitente.nome_fantasia.must_equal "EMPRESA NACIONAL"
144
- nota_fiscal.emitente.telefone.must_equal "123456"
145
- nota_fiscal.emitente.email.must_equal "email@prestador"
146
- nota_fiscal.emitente.regime_especial_tributacao.must_be_nil
147
- nota_fiscal.emitente.optante_simples_nacional.must_equal "emitente optante_simples_nacional"
148
- nota_fiscal.emitente.incentivo_fiscal.must_be_nil
149
- nota_fiscal.emitente.natureza_operacao.must_equal "1"
150
-
151
- # Destinatario / Tomador
152
- nota_fiscal.destinatario.cpf_cnpj.must_equal "12345678901"
153
- nota_fiscal.destinatario.inscricao_estadual.must_equal "tomador inscricao_estadual"
154
- nota_fiscal.destinatario.inscricao_municipal.must_equal "tomador inscricao_municipal"
155
- nota_fiscal.destinatario.razao_social.must_equal "TOMADOR SERVICO"
156
- nota_fiscal.destinatario.telefone.must_equal "336644557"
157
- nota_fiscal.destinatario.email.must_equal "mail@prestador.com"
158
- end
159
-
160
- it "com o hash parcial e mais de uma nota" do
161
- subject.nfe_method = :key
162
- subject.hash ={ key_resposta: hash_resposta_parcial}
163
-
164
- response = subject.response
165
- response.success.must_equal true
166
- response.error_messages.size.must_equal 0
167
-
168
- response.numero_lote.must_be_nil
169
- response.protocolo.must_be_nil
170
- response.data_recebimento.must_be_nil
171
-
172
- response.notas_fiscais.size.must_equal 2
173
- nota_fiscal_1 = response.notas_fiscais.first
174
- nota_fiscal_2 = response.notas_fiscais.last
175
-
176
- nota_fiscal_1.numero_nf.must_equal "1111"
177
- nota_fiscal_1.codigo_verificacao.must_equal "ASDAD"
178
- nota_fiscal_1.data_emissao.must_equal DateTime.parse("Fri, 04 Sep 2015 09:56:22 -0300")
179
- nota_fiscal_1.rps_numero.must_equal "11111"
180
- nota_fiscal_1.rps_serie.must_equal "SN"
181
- nota_fiscal_1.rps_tipo.must_equal "1"
182
- nota_fiscal_1.rps_situacao.must_be_nil
183
- nota_fiscal_1.data_emissao_rps.must_equal DateTime.parse("Fri, 04 Sep 2015 09:56:17 -0300")
184
- nota_fiscal_1.competencia.must_equal DateTime.parse("Tue, 01 Sep 2015 00:00:00 -0300")
185
- nota_fiscal_1.outras_informacoes.must_equal "http://e-gov.betha.com.br/e-nota"
186
- nota_fiscal_1.url_nf.must_equal "http://e-gov.betha.com.br/e-nota"
187
- nota_fiscal_1.item_lista_servico.must_equal "111"
188
- nota_fiscal_1.codigo_cnae.must_equal "6202300"
189
- nota_fiscal_1.discriminacao.must_equal "discriminacao"
190
- nota_fiscal_1.codigo_municipio.must_equal "4204202"
191
- nota_fiscal_1.valor_servicos.must_equal "111"
192
- nota_fiscal_1.valor_deducoes.must_equal "0"
193
- nota_fiscal_1.valor_pis.must_equal "0.00"
194
- nota_fiscal_1.valor_cofins.must_equal "0.00"
195
- nota_fiscal_1.valor_inss.must_equal "0.00"
196
- nota_fiscal_1.valor_ir.must_equal "0.00"
197
- nota_fiscal_1.valor_csll.must_equal "0.00"
198
- nota_fiscal_1.iss_retido.must_equal "2"
199
- nota_fiscal_1.valor_iss.must_equal "0"
200
- nota_fiscal_1.base_calculo.must_equal "111"
201
- nota_fiscal_1.aliquota.must_equal "1.0000"
202
- nota_fiscal_1.desconto_condicionado.must_equal "desconto_condicionado"
203
- nota_fiscal_1.desconto_incondicionado.must_equal "desconto_incondicionado"
204
- nota_fiscal_1.orgao_gerador_municipio.must_equal "0"
205
- nota_fiscal_1.orgao_gerador_uf.must_equal "SC"
206
- nota_fiscal_1.cancelamento_codigo.must_equal "123"
207
- nota_fiscal_1.cancelamento_numero_nf.must_equal "123"
208
- nota_fiscal_1.cancelamento_cnpj.must_equal "12345678901234"
209
- nota_fiscal_1.cancelamento_inscricao_municipal.must_equal "INSCRICAO CANCELAMENTO"
210
- nota_fiscal_1.cancelamento_municipio.must_equal "99999999"
211
- nota_fiscal_1.cancelamento_sucesso.must_equal true
212
- nota_fiscal_1.cancelamento_data_hora.must_equal DateTime.parse("Fri, 05 Sep 2015 09:56:17 -0300")
213
- nota_fiscal_1.nfe_substituidora.must_equal "663322"
214
- nota_fiscal_1.codigo_obra.must_equal "3333"
215
- nota_fiscal_1.codigo_art.must_equal "4444"
216
-
217
- nota_fiscal_2.numero_nf.must_equal "NOTA2 numero_nf"
218
- nota_fiscal_2.codigo_verificacao.must_equal "NOTA2 codigo_verificacao"
219
- nota_fiscal_2.data_emissao.must_equal "NOTA2 data_emissao"
220
- nota_fiscal_2.rps_numero.must_equal "NOTA2 rps_numero"
221
- nota_fiscal_2.rps_serie.must_equal "NOTA2 rps_serie"
222
- nota_fiscal_2.rps_tipo.must_equal "NOTA2 rps_tipo"
223
- nota_fiscal_2.data_emissao_rps.must_equal "NOTA2 data_emissao_rps"
224
- nota_fiscal_2.competencia.must_equal "NOTA2 competencia"
225
- nota_fiscal_2.outras_informacoes.must_equal "NOTA2 outras_informacoes"
226
- nota_fiscal_2.url_nf.must_equal "NOTA2 outras_informacoes"
227
- nota_fiscal_2.item_lista_servico.must_equal "NOTA2 item_lista_servico"
228
- nota_fiscal_2.discriminacao.must_equal "NOTA2 discriminacao"
229
- nota_fiscal_2.codigo_municipio.must_equal "NOTA2 codigo_municipio"
230
- nota_fiscal_2.valor_servicos.must_equal "NOTA2 valor_servicos"
231
- nota_fiscal_2.base_calculo.must_equal "NOTA2 base_calculo"
232
- nota_fiscal_2.aliquota.must_equal "NOTA2 aliquota"
233
- nota_fiscal_2.codigo_cnae.must_be_nil
234
- nota_fiscal_2.valor_deducoes.must_be_nil
235
- nota_fiscal_2.valor_pis.must_be_nil
236
- nota_fiscal_2.valor_cofins.must_be_nil
237
- nota_fiscal_2.valor_inss.must_be_nil
238
- nota_fiscal_2.valor_ir.must_be_nil
239
- nota_fiscal_2.valor_csll.must_be_nil
240
- nota_fiscal_2.iss_retido.must_be_nil
241
- nota_fiscal_2.valor_iss.must_be_nil
242
- nota_fiscal_2.desconto_condicionado.must_be_nil
243
- nota_fiscal_2.desconto_incondicionado.must_be_nil
244
- nota_fiscal_2.orgao_gerador_municipio.must_be_nil
245
- nota_fiscal_2.orgao_gerador_uf.must_be_nil
246
- nota_fiscal_2.cancelamento_codigo.must_be_nil
247
- nota_fiscal_2.cancelamento_numero_nf.must_be_nil
248
- nota_fiscal_2.cancelamento_cnpj.must_be_nil
249
- nota_fiscal_2.cancelamento_inscricao_municipal.must_be_nil
250
- nota_fiscal_2.cancelamento_municipio.must_be_nil
251
- nota_fiscal_2.cancelamento_sucesso.must_be_nil
252
- nota_fiscal_2.cancelamento_data_hora.must_be_nil
253
- nota_fiscal_2.nfe_substituidora.must_be_nil
254
- nota_fiscal_2.codigo_obra.must_be_nil
255
- nota_fiscal_2.codigo_art.must_be_nil
256
- end
257
-
258
- end
259
- end
260
-
261
-
262
- def hash_resposta_completa
263
- {
264
- protocolo: "5566633548",
265
- data_recebimento: DateTime.parse("Fri, 04 Sep 2015 09:56:22 -0300"),
266
- numero_lote: '333332',
267
- lista_nfse: {
268
- compl_nfse: {
269
- nfse: {
270
- inf_nfse: {
271
- numero: "1111",
272
- codigo_verificacao: "ASDAD",
273
- data_emissao: DateTime.parse("Fri, 04 Sep 2015 09:56:22 -0300"),
274
- identificacao_rps: {
275
- numero: "11111",
276
- serie: "SN",
277
- tipo: "1"
278
- },
279
- data_emissao_rps: DateTime.parse("Fri, 04 Sep 2015 09:56:17 -0300"),
280
- natureza_operacao: "1",
281
- optante_simples_nacional: "emitente optante_simples_nacional",
282
- competencia: DateTime.parse("Tue, 01 Sep 2015 00:00:00 -0300"),
283
- outras_informacoes: "http://e-gov.betha.com.br/e-nota",
284
- servico: {
285
- valores: {
286
- valor_servicos: "111",
287
- valor_deducoes: "0",
288
- valor_pis: "0.00",
289
- valor_cofins: "0.00",
290
- valor_inss: "0.00",
291
- valor_ir: "0.00",
292
- valor_csll: "0.00",
293
- iss_retido: "2",
294
- valor_iss: "0",
295
- base_calculo: "111",
296
- aliquota: "1.0000",
297
- desconto_condicionado: "desconto_condicionado",
298
- desconto_incondicionado: "desconto_incondicionado"
299
- },
300
- item_lista_servico: "111",
301
- codigo_cnae: "6202300",
302
- discriminacao: "discriminacao",
303
- codigo_municipio: "4204202"
304
- },
305
- intermediario_servico: {
306
- razao_social: "razao_social intermediario",
307
- cpf_cnpj: {cpf: 'cpf intermediario'},
308
- inscricao_municipal: "inscricao_municipal intermediario"
309
-
310
- },
311
- prestador_servico: {
312
- identificacao_prestador: {
313
- cnpj: "18113831000135",
314
- inscricao_municipal: "inscricao_municipal prestador",
315
- },
316
- razao_social: "EMPRESA NACIONAL LTDA - ME",
317
- nome_fantasia: "EMPRESA NACIONAL",
318
- endereco: {
319
- endereco: "RUA PRESTADOR",
320
- numero: "111",
321
- complemento: "COMPLEMENTO PRESTADOR",
322
- bairro: "BAIRRO PRESTADOR",
323
- codigo_municipio: "4204202",
324
- uf: "SC",
325
- cep: "89805675"
326
- },
327
- contato: {
328
- telefone: "123456",
329
- email: "email@prestador",
330
- }
331
- },
332
- tomador_servico: {
333
- identificacao_tomador: {
334
- cpf_cnpj: {
335
- cpf: "12345678901",
336
- },
337
- inscricao_estadual: "tomador inscricao_estadual",
338
- inscricao_municipal: "tomador inscricao_municipal"
339
- },
340
- razao_social: "TOMADOR SERVIcO",
341
- endereco: {
342
- endereco: "RUA TOMADOR",
343
- numero: "99999",
344
- complemento: "COMPLEMENTO TOMADOR",
345
- bairro: "BAIRRO TOMADOR",
346
- codigo_municipio: "4204202",
347
- uf: "SC",
348
- cep: "89805675"
349
- },
350
- contato: {
351
- telefone: "336644557",
352
- email: "mail@prestador.com"
353
- }
354
- },
355
- orgao_gerador: {
356
- codigo_municipio: "0",
357
- uf: "SC"
358
- },
359
- construcao_civil: {
360
- codigo_obra: '3333',
361
- art: '4444'
362
- }
363
- }
364
- },
365
- nfse_cancelamento: {
366
- confirmacao: {
367
- pedido: {
368
- inf_pedido_cancelamento: {
369
- codigo_cancelamento: '123',
370
- identificacao_nfse: {
371
- numero: '123',
372
- cnpj: '12345678901234',
373
- inscricao_municipal: 'INSCRICAO CANCELAMENTO',
374
- codigo_municipio: '99999999'
375
- }
376
- },
377
- signature: nil
378
- },
379
- inf_confirmacao_cancelamento: {
380
- sucesso: true,
381
- data_hora: DateTime.parse("Fri, 05 Sep 2015 09:56:17 -0300")
382
- }
383
- }
384
- },
385
- nfse_substituicao: {
386
- substituicao_nfse: {
387
- nfse_substituidora: '663322'
388
- }
389
- }
390
- }
391
- },
392
- lista_mensagem_retorno: {
393
- mensagem_retorno: [
394
- {codigo: '111', mensagem: 'Msg 1', correcao: 'corr 1'},
395
- {codigo: '222', mensagem: 'Msg 2', correcao: 'corr 2'}
396
- ]
397
- }
398
- }
399
- end
400
-
401
- def hash_resposta_parcial
402
- {
403
- lista_nfse: {
404
- compl_nfse: [
405
- {
406
- nfse: {
407
- inf_nfse: {
408
- numero: "1111",
409
- codigo_verificacao: "ASDAD",
410
- data_emissao: DateTime.parse("Fri, 04 Sep 2015 09:56:22 -0300"),
411
- identificacao_rps: {
412
- numero: "11111",
413
- serie: "SN",
414
- tipo: "1"
415
- },
416
- data_emissao_rps: DateTime.parse("Fri, 04 Sep 2015 09:56:17 -0300"),
417
- natureza_operacao: "1",
418
- optante_simples_nacional: "1",
419
- competencia: DateTime.parse("Tue, 01 Sep 2015 00:00:00 -0300"),
420
- outras_informacoes: "http://e-gov.betha.com.br/e-nota",
421
- servico: {
422
- valores: {
423
- valor_servicos: "111",
424
- valor_deducoes: "0",
425
- valor_pis: "0.00",
426
- valor_cofins: "0.00",
427
- valor_inss: "0.00",
428
- valor_ir: "0.00",
429
- valor_csll: "0.00",
430
- iss_retido: "2",
431
- valor_iss: "0",
432
- base_calculo: "111",
433
- aliquota: "1.0000",
434
- desconto_condicionado: "desconto_condicionado",
435
- desconto_incondicionado: "desconto_incondicionado"
436
- },
437
- item_lista_servico: "111",
438
- codigo_cnae: "6202300",
439
- discriminacao: "discriminacao",
440
- codigo_municipio: "4204202"
441
- },
442
- prestador_servico: {
443
- identificacao_prestador: {
444
- cnpj: "18113831000135"
445
- },
446
- razao_social: "EMPRESA NACIONAL LTDA - ME",
447
- nome_fantasia: "EMPRESA NACIONAL",
448
- endereco: {
449
- endereco: "RUA PRESTADOR",
450
- numero: "111",
451
- complemento: "COMPLEMENTO PRESTADOR",
452
- bairro: "BAIRRO PRESTADOR",
453
- codigo_municipio: "4204202",
454
- uf: "SC",
455
- cep: "89805675"
456
- },
457
- contato: {
458
- email: "email@prestador",
459
- telefone: "123456"
460
- }
461
- },
462
- tomador_servico: {
463
- identificacao_tomador: {
464
- cpf_cnpj: {
465
- cnpj: "12345678901234"
466
- }
467
- },
468
- razao_social: "TOMADOR SERVIÇO",
469
- endereco: {
470
- endereco: "RUA TOMADOR",
471
- numero: "99999",
472
- complemento: "COMPLEMENTO TOMADOR",
473
- bairro: "BAIRRO TOMADOR",
474
- codigo_municipio: "4204202",
475
- uf: "SC",
476
- cep: "89805675"
477
- },
478
- contato: {
479
- telefone: "336644557",
480
- email: "mail@prestador.com"
481
- }
482
- },
483
- orgao_gerador: {
484
- codigo_municipio: "0",
485
- uf: "SC"
486
- },
487
- construcao_civil: {
488
- codigo_obra: '3333',
489
- art: '4444'
490
- }
491
- }
492
- },
493
- nfse_cancelamento: {
494
- confirmacao: {
495
- pedido: {
496
- inf_pedido_cancelamento: {
497
- codigo_cancelamento: '123',
498
- identificacao_nfse: {
499
- numero: '123',
500
- cnpj: '12345678901234',
501
- inscricao_municipal: 'INSCRICAO CANCELAMENTO',
502
- codigo_municipio: '99999999'
503
- }
504
- },
505
- signature: nil
506
- },
507
- inf_confirmacao_cancelamento: {
508
- sucesso: true,
509
- data_hora: DateTime.parse("Fri, 05 Sep 2015 09:56:17 -0300")
510
- }
511
- }
512
- },
513
- nfse_substituicao: {
514
- substituicao_nfse: {
515
- nfse_substituidora: '663322'
516
- }
517
- }
518
- },
519
- {
520
- nfse: {
521
- inf_nfse: {
522
- numero: "NOTA2 numero_nf",
523
- codigo_verificacao: "NOTA2 codigo_verificacao",
524
- data_emissao: "NOTA2 data_emissao",
525
- identificacao_rps: {
526
- numero: "NOTA2 rps_numero",
527
- serie: "NOTA2 rps_serie",
528
- tipo: "NOTA2 rps_tipo"
529
- },
530
- data_emissao_rps: "NOTA2 data_emissao_rps",
531
- natureza_operacao: "NOTA2 natureza_operacao",
532
- optante_simples_nacional: "NOTA2 optante_simples_nacional",
533
- competencia: "NOTA2 competencia",
534
- outras_informacoes: "NOTA2 outras_informacoes",
535
- servico: {
536
- valores: {
537
- valor_servicos: "NOTA2 valor_servicos",
538
- base_calculo: "NOTA2 base_calculo",
539
- aliquota: "NOTA2 aliquota"
540
- },
541
- item_lista_servico: "NOTA2 item_lista_servico",
542
- discriminacao: "NOTA2 discriminacao",
543
- codigo_municipio: "NOTA2 codigo_municipio"
544
- },
545
- }
546
- },
547
- nfse_cancelamento: {
548
- confirmacao: nil
549
- },
550
- nfse_substituicao: nil
551
- }
552
- ]
553
- },
554
- lista_mensagem_retorno: nil
555
- }
556
- end
557
- end