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
@@ -0,0 +1,19 @@
1
+ module BrNfe
2
+ module Service
3
+ module Betha
4
+ module V1
5
+ module ResponsePaths
6
+ module ServicoConsultarLoteRpsResposta
7
+ include BrNfe::Service::Response::Paths::V1::ServicoConsultarLoteRpsResposta
8
+
9
+ # Caminho referente ao caminho onde se encontra as notas fiscais
10
+ # poderá encontrar apenas uma ou várias
11
+ def invoices_path
12
+ [:consultar_lote_rps_resposta, :lista_nfse, :compl_nfse]
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ module BrNfe
2
+ module Service
3
+ module Betha
4
+ module V1
5
+ module ResponsePaths
6
+ module ServicoConsultarNfseResposta
7
+ include BrNfe::Service::Response::Paths::V1::ServicoConsultarNfseResposta
8
+
9
+ def invoices_path
10
+ [:consultar_nfse_resposta, :lista_nfse, :compl_nfse]
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module BrNfe
2
+ module Service
3
+ module Betha
4
+ module V1
5
+ module ResponsePaths
6
+ module ServicoConsultarNfseRpsResposta
7
+ include BrNfe::Service::Response::Paths::V1::ServicoConsultarNfseRpsResposta
8
+
9
+ def invoices_path
10
+ [:consultar_nfse_rps_resposta, :compl_nfse]
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,20 @@
1
+ module BrNfe
2
+ module Service
3
+ module Concerns
4
+ module Rules
5
+ module CancelamentoNfs
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+
10
+ attr_accessor :nfe_number
11
+ attr_accessor :codigo_cancelamento
12
+
13
+ validates :nfe_number, :codigo_cancelamento, presence: true
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+
@@ -0,0 +1,18 @@
1
+ module BrNfe
2
+ module Service
3
+ module Concerns
4
+ module Rules
5
+ module ConsultaNfsPorRps
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ include BrNfe::Helper::HaveRps
10
+
11
+ validate :validate_rps # metodo definido no module BrNfe::Helper::HaveRps
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
@@ -0,0 +1,29 @@
1
+ module BrNfe
2
+ module Service
3
+ module Concerns
4
+ module Rules
5
+ module ConsultaNfse
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ include BrNfe::Helper::HaveDestinatario
10
+ include BrNfe::Helper::HaveIntermediario
11
+
12
+ attr_accessor :nfe_number
13
+ attr_accessor :start_date
14
+ attr_accessor :end_date
15
+
16
+ def start_date
17
+ value_date(@start_date)
18
+ end
19
+
20
+ def end_date
21
+ value_date(@end_date)
22
+ end
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,50 @@
1
+ module BrNfe
2
+ module Service
3
+ module Concerns
4
+ module Rules
5
+ module RecepcaoLoteRps
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+
10
+ attr_accessor :lote_rps
11
+ attr_accessor :numero_lote_rps
12
+ attr_accessor :operacao
13
+
14
+ validates :numero_lote_rps, presence: true
15
+ validate :validar_lote_rps
16
+
17
+ def initialize(attributes = {})
18
+ self.lote_rps = [] # Para poder utilizar o << para adicionar rps
19
+ super
20
+ end
21
+
22
+ # Get lote_rps
23
+ # Sobrescrito para sempre retornar um Array
24
+ #
25
+ # <b>Tipo de retorno: </b> _Array_
26
+ #
27
+ def lote_rps
28
+ @lote_rps = [@lote_rps].flatten # Para retornar sempre um vetor
29
+ end
30
+
31
+ private
32
+
33
+ def validar_lote_rps
34
+ if lote_rps.empty?
35
+ errors.add(:base, "Deve conter ao menos 1 RPS")
36
+ else
37
+ lote_rps.each_with_index do |rps, i|
38
+ rps.validar_recepcao_rps = true
39
+ if rps.invalid?
40
+ rps.errors.full_messages.map{|msg| errors.add(:base, "RPS #{i+1}: #{msg}") }
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,5 +1,5 @@
1
1
  module BrNfe
2
- module Servico
2
+ module Service
3
3
  class Intermediario < BrNfe::ActiveModelBase
4
4
 
5
5
  attr_accessor :cpf_cnpj
@@ -0,0 +1,70 @@
1
+ module BrNfe
2
+ module Service
3
+ class Item < BrNfe::ActiveModelBase
4
+
5
+ # ID do código CNAE
6
+ # Algumas cidades necessitam que esse ID seja passado
7
+ # e normalmente é encontrado junto a documentação da mesma.
8
+ #
9
+ # <b>Tipo: </b> _Integer_
10
+ attr_accessor :cnae_id
11
+
12
+ # Código CNAE (Classificação Nacional de Atividades Econômicas)
13
+ # Pode ser encontrado em http://www.cnae.ibge.gov.br/
14
+ # Tamanho de 8 caracteres
15
+ #
16
+ # <b>Tipo: </b> _String_
17
+ attr_accessor :cnae_code
18
+
19
+ # Descrição do serviço
20
+ # Será utilizada apenas para as cidades que permitem adicionar mais de 1 item de
21
+ # serviço na mesma nota
22
+ #
23
+ # <b>Tipo: </b> _Text_
24
+ attr_accessor :description
25
+
26
+
27
+ # CST
28
+ # Código da situação tributária
29
+ # onde apenas alguns municipios utilizam
30
+ #
31
+ # <b>Tipo: </b> _Text_
32
+ attr_accessor :cst
33
+
34
+ # Alíquota
35
+ # Percentual de aliquota dividido por 100
36
+ # Ex: se a aliquita for 7.5% então o valor setado no campo é 0.075
37
+ #
38
+ # <b>Tipo: </b> _Float_
39
+ attr_accessor :iss_tax_rate
40
+
41
+ # Valor unitário do item
42
+ # Refere-se ao valor separado de cada serviço prestado
43
+ #
44
+ # <b>Tipo: </b> _Float_
45
+ attr_accessor :unit_value
46
+
47
+ # Quantidade prestada de serviços do item
48
+ #
49
+ # <b>Tipo: </b> _Float_
50
+ attr_accessor :quantity
51
+
52
+ # Valor total cobrado do item
53
+ #
54
+ # <b>Tipo: </b> _Float_
55
+ attr_accessor :total_value
56
+
57
+
58
+ def default_values
59
+ {
60
+ quantity: 1.0,
61
+ }
62
+ end
63
+
64
+
65
+ def total_value
66
+ @total_value || (quantity.to_f * unit_value.to_f)
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,231 @@
1
+ module BrNfe
2
+ module Service
3
+ class Rps < BrNfe::ActiveModelBase
4
+ include BrNfe::Helper::HaveDestinatario
5
+ include BrNfe::Helper::HaveIntermediario
6
+ include BrNfe::Helper::HaveCondicaoPagamento
7
+
8
+ # Método utilizado para saberse o modelo deve validar
9
+ # as informações obrigatórias do RPS.
10
+ # Por padrão é setado com true pois a maioria das cidades trabalha com RPS.
11
+ # Para as cidades que não trabalham com RPS esse método deverá ser sobrescrito
12
+ #
13
+ # <b>Tipo: </b> _Boolean_
14
+ def validate_rps?
15
+ true
16
+ end
17
+
18
+ # Sempre que houver RPS, essas informações são obrigatórias
19
+ validates :numero, :serie, :tipo, presence: true, if: :validate_rps?
20
+
21
+ with_options if: :validar_recepcao_rps do |record|
22
+ record.validates :data_emissao, :item_lista_servico, :description, :codigo_municipio, :base_calculation, presence: true
23
+ record.validates :total_iss, :iss_tax_rate, presence: true, unless: :iss_retained?
24
+ record.validates :municipio_incidencia, presence: true, if: :municipio_incidencia_obrigatorio?
25
+
26
+ record.validates :total_services, :base_calculation, numericality: {greater_than: 0}
27
+
28
+ record.validates :deductions, :valor_pis, :valor_cofins, :valor_inss, :valor_ir,
29
+ :valor_csll, :outras_retencoes, :total_iss, :iss_tax_rate, :base_calculation,
30
+ :desconto_incondicionado, :desconto_condicionado, numericality: true, allow_blank: true
31
+
32
+ record.validate :validar_intermediario
33
+ record.validate :validar_destinatario
34
+ end
35
+
36
+
37
+ def initialize(attributes = {})
38
+ self.items = [] # Para poder utilizar o << para adicionar itens
39
+ super
40
+ end
41
+
42
+ # Itens do RPS
43
+ # Contém um vetor com todos os serviços prestados
44
+ # Para a maioria das cidades os itens são informados junto à discriminação
45
+ # porém para outras poucas cidades é possível inserir vários itens de serviços
46
+ # na NF.
47
+ #
48
+ # Mesmo para as cidades que não permitem enviar os itens de serviço
49
+ # será necessário informar pelo menos 1 item.
50
+ #
51
+ # <b>Tipo: </b> _Array_
52
+ attr_accessor :items
53
+ def items
54
+ @items = [@items].flatten # Para retornar sempre um vetor
55
+ # Só aceita objetos que forem da classe definida em _BrNfe.service_item_class_
56
+ @items.select!{ |item| item.is_a?(BrNfe.service_item_class) }
57
+ @items
58
+ end
59
+
60
+ # Valor da base de cálculo da substituição tributária
61
+ #
62
+ # <b>Tipo: </b> _Float_
63
+ attr_accessor :total_base_calculation_st
64
+
65
+ # Valor total do ISS de substituição tributária
66
+ #
67
+ # <b>Tipo: </b> _Float_
68
+ attr_accessor :total_issqn_st
69
+
70
+ attr_accessor :validar_recepcao_rps
71
+
72
+ attr_accessor :numero
73
+ attr_accessor :serie
74
+ attr_accessor :tipo
75
+
76
+ attr_accessor :data_emissao
77
+ attr_accessor :status
78
+ attr_accessor :competencia
79
+
80
+ attr_accessor :numero_substituicao
81
+ attr_accessor :serie_substituicao
82
+ attr_accessor :tipo_substituicao
83
+
84
+ #Para construção civil
85
+ attr_accessor :codigo_obra
86
+ attr_accessor :codigo_art
87
+
88
+ # Valor total dos serviços
89
+ # Pode ser definido diretamente ou então será a soma
90
+ # do valor de todos os itens
91
+ #
92
+ # <b>Tipo: </b> _Float_
93
+ attr_accessor :total_services
94
+ def total_services
95
+ @total_services || items.map(&:total_value).map(&:to_f).sum.round(2)
96
+ end
97
+
98
+ # Valor da base de cálculo
99
+ # Caso não definido irá somar o total dos serviços e subtrair com
100
+ # o valor das deduções
101
+ #
102
+ # <b>Tipo: </b> _Float_
103
+ attr_accessor :base_calculation
104
+ def base_calculation
105
+ @base_calculation || (total_services.to_f - deductions.to_f).round(2)
106
+ end
107
+
108
+ # Valor das deduções de impostos
109
+ #
110
+ # <b>Tipo: </b> _Float_
111
+ attr_accessor :deductions
112
+
113
+ # Iss retido?
114
+ # Identifica se o ISS foi retido
115
+ #
116
+ # <b>Tipo: </b> _Integer_
117
+ attr_accessor :iss_retained
118
+
119
+ # Valor do Iss retido
120
+ # Total de iss retido da nota
121
+ #
122
+ # <b>Tipo: </b> _float_
123
+ #
124
+ attr_accessor :total_iss_retained
125
+
126
+ # Valor total do ISS (R$)
127
+ # Valor utilizado para identificar o valor total do ISS
128
+ #
129
+ # <b>Tipo: </b> _Float_
130
+ attr_accessor :total_iss
131
+
132
+ # % de Aliquota do ISS
133
+ # Utilizado para as cidades que não possuem multiplos itens de serviço na nota.
134
+ # Caso não seja definido então irá pegar a aliquota do 1º item que encontrar
135
+ #
136
+ # <b>Tipo: </b> _Float_
137
+ attr_accessor :iss_tax_rate
138
+ def iss_tax_rate
139
+ @iss_tax_rate || items.first.try(:iss_tax_rate)
140
+ end
141
+
142
+ # Valor líquido da NF (R$)
143
+ #
144
+ # Normalmente esse valor é adquirido a partir da seguinte fórmula:
145
+ # (ValorServicos - ValorPIS -ValorCOFINS - ValorINSS - ValorIR - ValorCSLL -
146
+ # OutrasRetençoes - ValorISSRetido -DescontoIncondicionado -DescontoCondicionado)
147
+ #
148
+ # <b>Tipo: </b> _Float_
149
+ #
150
+ attr_accessor :net_value
151
+
152
+ attr_accessor :valor_pis
153
+ attr_accessor :valor_cofins
154
+ attr_accessor :valor_inss
155
+ attr_accessor :valor_ir
156
+ attr_accessor :valor_csll
157
+ attr_accessor :outras_retencoes
158
+ attr_accessor :desconto_incondicionado
159
+ attr_accessor :desconto_condicionado
160
+
161
+ attr_accessor :responsavel_retencao
162
+ attr_accessor :item_lista_servico
163
+ attr_accessor :codigo_tributacao_municipio
164
+ attr_accessor :exigibilidade_iss
165
+ attr_accessor :codigo_municipio
166
+ attr_accessor :municipio_incidencia
167
+ attr_accessor :codigo_pais
168
+ attr_accessor :numero_processo
169
+ attr_accessor :outras_informacoes
170
+
171
+ # Código CNAE (Classificação Nacional de Atividades Econômicas)
172
+ # Pode ser encontrado em http://www.cnae.ibge.gov.br/
173
+ # Tamanho de 8 caracteres
174
+ # - Para as cidades que não trabalham com multiplos serviços na nota, se não for definido
175
+ # um código CNAE será pega o código do 1° item de serviço (se houver algum)
176
+ #
177
+ # <b>Tipo: </b> _String_
178
+ attr_accessor :cnae_code
179
+ def cnae_code
180
+ @cnae_code || items.first.try(:cnae_code)
181
+ end
182
+
183
+ # Descrição dos serviços prestados
184
+ # Algumas cidades permitem adicionar os serviços com itens
185
+ # e a maioria é necessário identificar cada serviço dentro da discriminação.
186
+ #
187
+ # <b>Tipo: </b> _Text_
188
+ attr_accessor :description
189
+
190
+ # Verifica se a NF atual está sendo substituida por outra
191
+ #
192
+ # <b>Tipo: </b> _Boolean_
193
+ def replace_invoice?
194
+ numero_substituicao.present? && serie_substituicao.present? && tipo_substituicao.present?
195
+ end
196
+
197
+ def iss_retained?
198
+ BrNfe.true_values.include?(iss_retained)
199
+ end
200
+
201
+ def competencia
202
+ @competencia || data_emissao
203
+ end
204
+
205
+ def default_values
206
+ {
207
+ codigo_pais: '1058',
208
+ validar_recepcao_rps: false
209
+ }
210
+ end
211
+ private
212
+
213
+ def validar_intermediario
214
+ return true unless intermediario
215
+ if intermediario.invalid?
216
+ intermediario.errors.full_messages.map{|msg| errors.add(:base, "Intermediário: #{msg}") }
217
+ end
218
+ end
219
+
220
+ def validar_destinatario
221
+ if destinatario.invalid?
222
+ destinatario.errors.full_messages.map{|msg| errors.add(:base, "Destinatário: #{msg}") }
223
+ end
224
+ end
225
+
226
+ def municipio_incidencia_obrigatorio?
227
+ "#{exigibilidade_iss}".in?(['1','01','6','06','7','07'])
228
+ end
229
+ end
230
+ end
231
+ end