br_nfe 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,185 @@
1
+ module BrNfe
2
+ module Response
3
+ module Service
4
+ class Default < BrNfe::ActiveModelBase
5
+
6
+ # Array contendo as mensagens de erros
7
+ # No array pode conter Hash (com :codigo, :mensagem e :correcao)
8
+ # mas também pode conter mensagens de texto puro
9
+ #
10
+ # <b>Tipo de retorno: </b> _Array_
11
+ #
12
+ attr_accessor :error_messages
13
+
14
+ # Array contendo as notas fiscais encontradas no xml de retorno.
15
+ # Utillizado em algumas requisições onde pode ser que retorne algum XML de NFe
16
+ # É um Array contendo objetos da classe BrNfe::Response::Service::NotaFiscal
17
+ #
18
+ # <b>Tipo de retorno: </b> _Array_
19
+ #
20
+ attr_accessor :notas_fiscais
21
+
22
+ # Número do protocolo de recebimento do XML
23
+ # Setado normalmente quando é enviado um lote RPS
24
+ # para processamento.
25
+ # O valor desse atributo é utilizado para posteriormente
26
+ # fazer a consulta para saber se o RPS já foi processado
27
+ #
28
+ # <b>Tipo de retorno: </b> _Integer_ ou _String_
29
+ #
30
+ attr_accessor :protocolo
31
+
32
+ # Data/Data hora do recebimento do XML pelo orgão emissor
33
+ # Nesse atrubuto pe setado a data/hora na qual o orgão emissor
34
+ # recebeu o XML que foi enviado.
35
+ # também é nesse atributo que é setado a data/hora do processamento
36
+ # da NF-e (nos casos de consulta)
37
+ #
38
+ # <b>Tipo de retorno: </b> _DateTime_
39
+ #
40
+ attr_accessor :data_recebimento
41
+
42
+ # Número do lote RPS
43
+ # Nesse atributo é setado o número do lote RPS
44
+ # quando o mesmo for retornado na resposta
45
+ #
46
+ # <b>Tipo de retorno: </b> _Integer_
47
+ #
48
+ attr_accessor :numero_lote
49
+
50
+ # XML original da resposta
51
+ # Contém todo o XML Envelope da resposta SOAP
52
+ #
53
+ # <b>Tipo de retorno: </b> _String_ XML
54
+ #
55
+ attr_accessor :original_xml
56
+
57
+ # Data e hora do cancelamento da NF-e
58
+ # utilizado apenas para o Cancelamento da NF
59
+ #
60
+ # <b>Tipo de retorno: </b> _DateTime_
61
+ #
62
+ attr_accessor :cancelation_date_time
63
+
64
+ # Status possíveis
65
+ # [:success, :falied, :soap_error, :http_error, :unknown_error]
66
+ #
67
+ # <b>Tipo de retorno: </b> _Hash_
68
+ #
69
+ attr_accessor :status
70
+
71
+ # Código da situação do lote RPS
72
+ # Utilizado para saber se o Lote RPS já foi processado
73
+ # e se foi processado com sucesso ou teve algum erro
74
+ #
75
+ # <b>Tipo de retorno: </b> _Integer_ ou _String_
76
+ #
77
+ attr_accessor :situation
78
+ def situation
79
+ @situation ||= get_situation_by_message_codes if error_messages.present?
80
+ @situation
81
+ end
82
+
83
+ def situation_unreceived_code_errors
84
+ @situation_unreceived_code_errors ||= []
85
+ @situation_unreceived_code_errors+['E4']
86
+ end
87
+ def situation_unreceived_code_errors=(value)
88
+ @situation_unreceived_code_errors = [value].flatten
89
+ end
90
+
91
+ def situation_unprocessed_code_errors
92
+ @situation_unprocessed_code_errors ||= []
93
+ @situation_unprocessed_code_errors+['E92']
94
+ end
95
+ def situation_unprocessed_code_errors=(value)
96
+ @situation_unprocessed_code_errors = [value].flatten
97
+ end
98
+
99
+ def situation_success_code_errors
100
+ @situation_success_code_errors ||= []
101
+ @situation_success_code_errors#+[]
102
+ end
103
+ def situation_success_code_errors=(value)
104
+ @situation_success_code_errors = [value].flatten
105
+ end
106
+
107
+ # Como alguns orgãos emissores (como a Betha) não tem a capacidade
108
+ # de programar para colocar o codigo da situação em determinados momentos
109
+ # e simplesmente colocam uma mensagem de erro na resposta sem setar a situação
110
+ # foi necessário construir esse método para que a partir dos códigos das mensagens
111
+ # seja possível distinguir qual a situação atual do lote enviado.
112
+ # Por exemplo: Quando retornar o erro com código 'E92' quer dizer que a situação
113
+ # do lote é :unprocessed. Equivalente ao código de situação 2
114
+ #
115
+ # <b>Tipo de retorno: </b> _Symbol_
116
+ #
117
+ def get_situation_by_message_codes
118
+ if (situation_unprocessed_code_errors & message_codes).any?
119
+ :unprocessed
120
+ elsif (situation_unreceived_code_errors & message_codes).any?
121
+ :unreceived
122
+ elsif (situation_success_code_errors & message_codes).any?
123
+ :success
124
+ elsif message_codes.any?
125
+ :error
126
+ end
127
+ end
128
+
129
+ def initialize(attributes = {})
130
+ self.notas_fiscais = [] # Para poder utilizar o <<
131
+ self.error_messages = [] # Para poder utilizar o <<
132
+ super
133
+ end
134
+
135
+ def notas_fiscais
136
+ @notas_fiscais = [@notas_fiscais].flatten # Para retornar sempre um vetor
137
+ end
138
+
139
+ def error_messages
140
+ @error_messages = [@error_messages].flatten
141
+ end
142
+
143
+ # Método para saber se a conexão com a prefeitura foi mal-sucedida.
144
+ # Caso ocorra algum erro na requisição irá retornar true.
145
+ #
146
+ # <b>Tipo de retorno: </b> _Boolean_
147
+ #
148
+ def unsuccessful_request?
149
+ status.in?([:soap_error, :http_error, :unknown_error])
150
+ end
151
+
152
+ # Método para saber se a conexão com a prefeitura foi bem-sucedida.
153
+ # Caso a requisição ocorra certo e não apresente nenhuma exception
154
+ # irá retornar true.
155
+ #
156
+ # <b>Tipo de retorno: </b> _Boolean_
157
+ #
158
+ def successful_request?
159
+ !unsuccessful_request?
160
+ end
161
+
162
+ def success?
163
+ status == :success
164
+ end
165
+
166
+ def status
167
+ @status ||= get_status
168
+ end
169
+
170
+ def get_status
171
+ error_messages.blank? ? :success : :falied
172
+ end
173
+
174
+ # Retorna um array apenas com os códigos das mensagens de erro.
175
+ # Sempre retornar o código no formato de String.
176
+ #
177
+ # <b>Tipo de retorno: </b> _Array_
178
+ #
179
+ def message_codes
180
+ @message_codes ||= error_messages.select{|msg| msg.is_a?(Hash)}.map{|msg| msg[:code].try(:to_s) }
181
+ end
182
+ end
183
+ end
184
+ end
185
+ end
@@ -1,6 +1,6 @@
1
1
  module BrNfe
2
- module Servico
3
- module Response
2
+ module Response
3
+ module Service
4
4
  class NotaFiscal < BrNfe::ActiveModelBase
5
5
  include BrNfe::Helper::HaveIntermediario
6
6
  include BrNfe::Helper::HaveDestinatario
@@ -11,6 +11,7 @@ module BrNfe
11
11
  attr_accessor :codigo_verificacao
12
12
  attr_accessor :data_emissao
13
13
  attr_accessor :url_nf
14
+ attr_accessor :xml_nf
14
15
 
15
16
  #identificacao do rps
16
17
  attr_accessor :rps_numero
@@ -27,23 +28,23 @@ module BrNfe
27
28
 
28
29
  # dados dos serviços
29
30
  attr_accessor :item_lista_servico
30
- attr_accessor :codigo_cnae
31
- attr_accessor :discriminacao
31
+ attr_accessor :cnae_code
32
+ attr_accessor :description
32
33
  attr_accessor :codigo_municipio
33
34
 
34
35
  #Valores dos serviços
35
- attr_accessor :valor_servicos
36
- attr_accessor :valor_deducoes
36
+ attr_accessor :total_services
37
+ attr_accessor :deductions
37
38
  attr_accessor :valor_pis
38
39
  attr_accessor :valor_cofins
39
40
  attr_accessor :valor_inss
40
41
  attr_accessor :valor_ir
41
42
  attr_accessor :valor_csll
42
- attr_accessor :iss_retido
43
+ attr_accessor :iss_retained
43
44
  attr_accessor :outras_retencoes
44
- attr_accessor :valor_iss
45
- attr_accessor :base_calculo
46
- attr_accessor :aliquota
45
+ attr_accessor :total_iss
46
+ attr_accessor :base_calculation
47
+ attr_accessor :iss_tax_rate
47
48
  attr_accessor :valor_liquido # v2
48
49
  attr_accessor :desconto_condicionado # v2
49
50
  attr_accessor :desconto_incondicionado # v2
@@ -0,0 +1,93 @@
1
+ module BrNfe
2
+ module Service
3
+ module Response
4
+ module Paths
5
+ module Base
6
+ # Caminho referente ao caminho do número do lote
7
+ def lot_number_path; [] end
8
+
9
+ # Caminho para encontrar o número do protocolo
10
+ def protocol_path; [] end
11
+
12
+ # Caminho para encontrar a data de recebimento do lote/rps/nfe
13
+ def received_date_path; [] end
14
+
15
+ # Caminho para encontrar a situação
16
+ def situation_path; [] end
17
+
18
+ # Chaves para formatar a situação do Lote RPS
19
+ def situation_key_values
20
+ {
21
+ '1' => :unreceived, # Não Recebido
22
+ '2' => :unprocessed,# Não Processado
23
+ '3' => :error, # Processado com Erro
24
+ '4' => :success, # Processado com Sucesso
25
+ }
26
+ end
27
+
28
+ # Caminho para encontrar a data e hora do cancelamento da nF
29
+ def cancelation_date_time_path; [] end
30
+
31
+ def message_errors_path; [] end
32
+ def message_code_key; :codigo end
33
+ def message_msg_key; :mensagem end
34
+ def message_solution_key; :correcao end
35
+
36
+ # Caminho referente ao caminho onde se encontra as notas fiscais
37
+ # poderá encontrar apenas uma ou várias
38
+ def invoices_path; [] end
39
+
40
+ # Demais caminhos para encontrar os dados da NF-e
41
+ def invoice_numero_nf_path; [] end
42
+ def invoice_codigo_verificacao_path; [] end
43
+ def invoice_data_emissao_path; [] end
44
+ def invoice_url_nf_path; [] end
45
+ def invoice_rps_numero_path; [] end
46
+ def invoice_rps_serie_path; [] end
47
+ def invoice_rps_tipo_path; [] end
48
+ def invoice_rps_situacao_path; [] end
49
+ def invoice_rps_substituido_numero_path; [] end
50
+ def invoice_rps_substituido_serie_path; [] end
51
+ def invoice_rps_substituido_tipo_path; [] end
52
+ def invoice_data_emissao_rps_path; [] end
53
+ def invoice_competencia_path; [] end
54
+ def invoice_outras_informacoes_path; [] end
55
+ def invoice_item_lista_servico_path; [] end
56
+ def invoice_cnae_code_path; [] end
57
+ def invoice_description_path; [] end
58
+ def invoice_codigo_municipio_path; [] end
59
+ def invoice_total_services_path; [] end
60
+ def invoice_deductions_path; [] end
61
+ def invoice_valor_pis_path; [] end
62
+ def invoice_valor_cofins_path; [] end
63
+ def invoice_valor_inss_path; [] end
64
+ def invoice_valor_ir_path; [] end
65
+ def invoice_valor_csll_path; [] end
66
+ def invoice_iss_retained_path; [] end
67
+ def invoice_outras_retencoes_path; [] end
68
+ def invoice_total_iss_path; [] end
69
+ def invoice_base_calculation_path; [] end
70
+ def invoice_iss_tax_rate_path; [] end
71
+ def invoice_valor_liquido_path; [] end
72
+ def invoice_desconto_condicionado_path; [] end
73
+ def invoice_desconto_incondicionado_path; [] end
74
+ def invoice_responsavel_retencao_path; [] end
75
+ def invoice_numero_processo_path; [] end
76
+ def invoice_municipio_incidencia_path; [] end
77
+ def invoice_orgao_gerador_municipio_path; [] end
78
+ def invoice_orgao_gerador_uf_path; [] end
79
+ def invoice_cancelamento_codigo_path; [] end
80
+ def invoice_cancelamento_numero_nf_path; [] end
81
+ def invoice_cancelamento_cnpj_path; [] end
82
+ def invoice_cancelamento_municipio_path; [] end
83
+ def invoice_cancelamento_sucesso_path; [] end
84
+ def invoice_cancelamento_data_hora_path; [] end
85
+ def invoice_nfe_substituidora_path; [] end
86
+ def invoice_codigo_obra_path; [] end
87
+ def invoice_codigo_art_path; [] end
88
+ def invoice_cancelamento_inscricao_municipal_path; [] end
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,22 @@
1
+ module BrNfe
2
+ module Service
3
+ module Response
4
+ module Paths
5
+ module V1
6
+ module ServicoCancelarNfseResposta
7
+ include BrNfe::Service::Response::Paths::Base
8
+
9
+ # def message_alerts_path; [] end
10
+ def message_errors_path
11
+ [:cancelar_nfse_resposta, :lista_mensagem_retorno, :mensagem_retorno]
12
+ end
13
+
14
+ def cancelation_date_time_path
15
+ [:cancelar_nfse_resposta, :cancelamento, :confirmacao, :inf_confirmacao_cancelamento, :data_hora]
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,25 @@
1
+ module BrNfe
2
+ module Service
3
+ module Response
4
+ module Paths
5
+ module V1
6
+ module ServicoConsultarLoteRpsResposta
7
+ include BrNfe::Service::Response::Paths::Base
8
+ include BrNfe::Service::Response::Paths::V1::TcNfse
9
+
10
+ # def message_alerts_path; [] end
11
+ def message_errors_path
12
+ [:consultar_lote_rps_resposta, :lista_mensagem_retorno, :mensagem_retorno]
13
+ end
14
+
15
+ # Caminho referente ao caminho onde se encontra as notas fiscais
16
+ # poderá encontrar apenas uma ou várias
17
+ def invoices_path
18
+ [:consultar_lote_rps_resposta, :lista_nfse, :comp_nfse]
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ module BrNfe
2
+ module Service
3
+ module Response
4
+ module Paths
5
+ module V1
6
+ module ServicoConsultarNfseResposta
7
+ include BrNfe::Service::Response::Paths::Base
8
+ include BrNfe::Service::Response::Paths::V1::TcNfse
9
+
10
+ # def message_alerts_path; [] end
11
+ def message_errors_path
12
+ [:consultar_nfse_resposta, :lista_mensagem_retorno, :mensagem_retorno]
13
+ end
14
+
15
+ # Caminho referente ao caminho onde se encontra as notas fiscais
16
+ # poderá encontrar apenas uma ou várias
17
+ def invoices_path
18
+ [:consultar_nfse_resposta, :lista_nfse, :comp_nfse]
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ module BrNfe
2
+ module Service
3
+ module Response
4
+ module Paths
5
+ module V1
6
+ module ServicoConsultarNfseRpsResposta
7
+ include BrNfe::Service::Response::Paths::Base
8
+ include BrNfe::Service::Response::Paths::V1::TcNfse
9
+
10
+ # def message_alerts_path; [] end
11
+ def message_errors_path
12
+ [:consultar_nfse_rps_resposta, :lista_mensagem_retorno, :mensagem_retorno]
13
+ end
14
+
15
+ # Caminho referente ao caminho onde se encontra as notas fiscais
16
+ # poderá encontrar apenas uma ou várias
17
+ def invoices_path
18
+ [:consultar_nfse_rps_resposta, :comp_nfse]
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,31 @@
1
+ module BrNfe
2
+ module Service
3
+ module Response
4
+ module Paths
5
+ module V1
6
+ module ServicoConsultarSituacaoLoteRpsResposta
7
+ include BrNfe::Service::Response::Paths::Base
8
+
9
+ # Caminho referente ao caminho do número do lote
10
+ def lot_number_path
11
+ [:consultar_situacao_lote_rps_resposta, :numero_lote]
12
+ end
13
+
14
+ # Caminho para encontrar o número do protocolo
15
+ def situation_path
16
+ [:consultar_situacao_lote_rps_resposta, :situacao]
17
+ end
18
+
19
+ # def message_alerts_path; [] end
20
+ def message_errors_path
21
+ [:consultar_situacao_lote_rps_resposta, :lista_mensagem_retorno, :mensagem_retorno]
22
+ end
23
+ # def message_code_key; :codigo end
24
+ # def message_msg_key; :mensagem end
25
+ # def message_solution_key; :correcao end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end