br_nfe 2.1.0 → 2.1.1

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 +1 -0
  3. data/.travis.yml +0 -1
  4. data/Gemfile.lock +1 -1
  5. data/README.markdown +264 -106
  6. data/lib/br_nfe/{helper → association}/have_address.rb +1 -1
  7. data/lib/br_nfe/{helper → association}/have_condicao_pagamento.rb +1 -1
  8. data/lib/br_nfe/association/have_destinatario.rb +22 -0
  9. data/lib/br_nfe/association/have_emitente.rb +24 -0
  10. data/lib/br_nfe/base.rb +37 -27
  11. data/lib/br_nfe/condicao_pagamento.rb +2 -0
  12. data/lib/br_nfe/constants.rb +33 -0
  13. data/lib/br_nfe/endereco.rb +10 -0
  14. data/lib/br_nfe/helper/string_methods.rb +4 -0
  15. data/lib/br_nfe/{emitente.rb → person.rb} +11 -7
  16. data/lib/br_nfe/product/base.rb +82 -0
  17. data/lib/br_nfe/product/consulta_status_servico.rb +35 -0
  18. data/lib/br_nfe/product/emitente.rb +8 -0
  19. data/lib/br_nfe/product/gateway/base.rb +62 -0
  20. data/lib/br_nfe/product/gateway/web_service_svrs.rb +39 -0
  21. data/lib/br_nfe/product/value_nf.rb +9 -0
  22. data/lib/br_nfe/product/xml/soap_env.xml.slim +8 -0
  23. data/lib/br_nfe/product/xml/v3_10/XSD/consReciNFe_v3.10.xsd +9 -0
  24. data/lib/br_nfe/product/xml/v3_10/XSD/consSitNFe_v3.10.xsd +9 -0
  25. data/lib/br_nfe/product/xml/v3_10/XSD/consStatServ_v3.10.xsd +9 -0
  26. data/lib/br_nfe/product/xml/v3_10/XSD/enviNFe_v3.10.xsd +9 -0
  27. data/lib/br_nfe/product/xml/v3_10/XSD/inutNFe_v3.10.xsd +9 -0
  28. data/lib/br_nfe/product/xml/v3_10/XSD/leiauteConsSitNFe_v3.10.xsd +502 -0
  29. data/lib/br_nfe/product/xml/v3_10/XSD/leiauteConsStatServ_v3.10.xsd +98 -0
  30. data/lib/br_nfe/product/xml/v3_10/XSD/leiauteInutNFe_v3.10.xsd +193 -0
  31. data/lib/br_nfe/product/xml/v3_10/XSD/leiauteNFe_v3.10.xsd +6060 -0
  32. data/lib/br_nfe/product/xml/v3_10/XSD/nfe_v3.10.xsd +9 -0
  33. data/lib/br_nfe/product/xml/v3_10/XSD/procInutNFe_v3.10.xsd +9 -0
  34. data/lib/br_nfe/product/xml/v3_10/XSD/procNFe_v3.10.xsd +9 -0
  35. data/lib/br_nfe/product/xml/v3_10/XSD/retConsReciNFe_v3.10.xsd +9 -0
  36. data/lib/br_nfe/product/xml/v3_10/XSD/retConsSitNFe_v3.10.xsd +9 -0
  37. data/lib/br_nfe/product/xml/v3_10/XSD/retConsStatServ_v3.10.xsd +9 -0
  38. data/lib/br_nfe/product/xml/v3_10/XSD/retEnviNFe_v3.10.xsd +9 -0
  39. data/lib/br_nfe/product/xml/v3_10/XSD/retInutNFe_v3.10.xsd +9 -0
  40. data/lib/br_nfe/product/xml/v3_10/XSD/tiposBasico_v3.10.xsd +571 -0
  41. data/lib/br_nfe/product/xml/v3_10/XSD/xmldsig-core-schema_v1.01.xsd +98 -0
  42. data/lib/br_nfe/product/xml/v3_10/consulta_status_servico.xml.slim +4 -0
  43. data/lib/br_nfe/service/association/have_intermediario.rb +26 -0
  44. data/lib/br_nfe/service/association/have_rps.rb +36 -0
  45. data/lib/br_nfe/service/base.rb +24 -20
  46. data/lib/br_nfe/service/betha/v1/cancela_nfse.rb +43 -0
  47. data/lib/br_nfe/service/betha/v1/consulta_lote_rps.rb +20 -6
  48. data/lib/br_nfe/service/betha/v1/consulta_nfs_por_rps.rb +17 -6
  49. data/lib/br_nfe/service/betha/v1/consulta_nfse.rb +16 -5
  50. data/lib/br_nfe/service/betha/v1/consulta_situacao_lote_rps.rb +15 -6
  51. data/lib/br_nfe/service/betha/v1/gateway.rb +4 -0
  52. data/lib/br_nfe/service/betha/v1/recepcao_lote_rps.rb +13 -5
  53. data/lib/br_nfe/service/betha/v1/xml/_tc_identificacao_prestador.xml.slim +3 -0
  54. data/lib/br_nfe/service/betha/v1/xml/_tc_pedido_cancelamento.xml.slim +4 -0
  55. data/lib/br_nfe/service/concerns/rules/cancelamento_nfs.rb +8 -0
  56. data/lib/br_nfe/service/concerns/rules/consulta_nfs_por_rps.rb +1 -1
  57. data/lib/br_nfe/service/concerns/rules/consulta_nfse.rb +5 -2
  58. data/lib/br_nfe/service/concerns/values_ts/service_v1.rb +319 -0
  59. data/lib/br_nfe/service/destinatario.rb +7 -0
  60. data/lib/br_nfe/service/emitente.rb +8 -0
  61. data/lib/br_nfe/service/intermediario.rb +1 -12
  62. data/lib/br_nfe/service/item.rb +7 -7
  63. data/lib/br_nfe/service/response/build/base.rb +166 -0
  64. data/lib/br_nfe/service/response/build/cancelamento.rb +62 -0
  65. data/lib/br_nfe/service/response/build/consulta_lote_rps.rb +25 -0
  66. data/lib/br_nfe/service/response/build/consulta_nfs_por_rps.rb +25 -0
  67. data/lib/br_nfe/service/response/build/consulta_nfse.rb +24 -0
  68. data/lib/br_nfe/service/response/build/consulta_situacao_lote_rps.rb +56 -0
  69. data/lib/br_nfe/service/response/build/invoice_build.rb +359 -0
  70. data/lib/br_nfe/service/response/build/recepcao_lote_rps.rb +69 -0
  71. data/lib/br_nfe/service/response/cancelamento.rb +22 -0
  72. data/lib/br_nfe/service/response/consulta_lote_rps.rb +18 -0
  73. data/lib/br_nfe/service/response/consulta_nfs_por_rps.rb +10 -0
  74. data/lib/br_nfe/service/response/consulta_nfse.rb +10 -0
  75. data/lib/br_nfe/service/response/consulta_situacao_lote_rps.rb +74 -0
  76. data/lib/br_nfe/service/response/default.rb +93 -0
  77. data/lib/br_nfe/{response/service → service/response}/nota_fiscal.rb +19 -12
  78. data/lib/br_nfe/service/response/paths/v1/tc_nfse.rb +275 -0
  79. data/lib/br_nfe/service/response/recepcao_lote_rps.rb +35 -0
  80. data/lib/br_nfe/service/rps.rb +30 -27
  81. data/lib/br_nfe/service/sc/florianopolis/xml/_service_item.xml.slim +4 -4
  82. data/lib/br_nfe/service/sc/florianopolis/xml/inf_requisicao.xml.slim +4 -4
  83. data/lib/br_nfe/service/simpliss/v1/cancela_nfse.rb +16 -6
  84. data/lib/br_nfe/service/simpliss/v1/consulta_lote_rps.rb +20 -12
  85. data/lib/br_nfe/service/simpliss/v1/consulta_nfs_por_rps.rb +21 -6
  86. data/lib/br_nfe/service/simpliss/v1/consulta_nfse.rb +20 -6
  87. data/lib/br_nfe/service/simpliss/v1/consulta_situacao_lote_rps.rb +17 -6
  88. data/lib/br_nfe/service/simpliss/v1/recepcao_lote_rps.rb +16 -4
  89. data/lib/br_nfe/service/simpliss/v1/xml/_tc_item_servico.xml.slim +2 -2
  90. data/lib/br_nfe/service/thema/v1/cancela_nfse.rb +21 -19
  91. data/lib/br_nfe/service/thema/v1/consulta_lote_rps.rb +21 -19
  92. data/lib/br_nfe/service/thema/v1/consulta_nfs_por_rps.rb +25 -18
  93. data/lib/br_nfe/service/thema/v1/consulta_nfse.rb +20 -20
  94. data/lib/br_nfe/service/thema/v1/consulta_situacao_lote_rps.rb +14 -20
  95. data/lib/br_nfe/service/thema/v1/recepcao_lote_rps.rb +11 -16
  96. data/lib/br_nfe/service/thema/v1/recepcao_lote_rps_limitado.rb +8 -6
  97. data/lib/br_nfe/service/xml/v1/_tc_identificacao_nfse.xml.slim +1 -1
  98. data/lib/br_nfe/service/xml/v1/_tc_pedido_cancelamento.xml.slim +1 -1
  99. data/lib/br_nfe/service/xml/v1/_tc_valores.xml.slim +11 -11
  100. data/lib/br_nfe/version.rb +1 -1
  101. data/lib/br_nfe.rb +62 -62
  102. data/test/br_nfe/association/have_address_test.rb +64 -0
  103. data/test/br_nfe/association/have_condicao_pagamento_test.rb +75 -0
  104. data/test/br_nfe/association/have_destinatario_test.rb +76 -0
  105. data/test/br_nfe/association/have_emitente_test.rb +80 -0
  106. data/test/br_nfe/base_test.rb +96 -61
  107. data/test/br_nfe/endereco_test.rb +21 -0
  108. data/test/br_nfe/person_test.rb +55 -0
  109. data/test/br_nfe/product/base_test.rb +150 -0
  110. data/test/br_nfe/product/consulta_status_servico_test.rb +59 -0
  111. data/test/br_nfe/product/emitente_test.rb +29 -0
  112. data/test/br_nfe/product/gateway/base_test.rb +16 -0
  113. data/test/br_nfe/product/gateway/web_service_svrs_test.rb +36 -0
  114. data/test/br_nfe/service/association/have_intermediario_test.rb +80 -0
  115. data/test/br_nfe/service/association/have_rps_test.rb +62 -0
  116. data/test/br_nfe/service/base_test.rb +42 -42
  117. data/test/br_nfe/service/betha/v1/cancela_nfse_test.rb +90 -0
  118. data/test/br_nfe/service/betha/v1/consulta_lote_rps_test.rb +105 -5
  119. data/test/br_nfe/service/betha/v1/consulta_nfs_por_rps_test.rb +103 -5
  120. data/test/br_nfe/service/betha/v1/consulta_nfse_test.rb +114 -5
  121. data/test/br_nfe/service/betha/v1/consulta_situacao_lote_rps_test.rb +118 -5
  122. data/test/br_nfe/service/betha/v1/gateway_test.rb +1 -1
  123. data/test/br_nfe/service/betha/v1/recepcao_lote_rps_test.rb +51 -5
  124. data/test/br_nfe/service/concerns/rules/cancelamento_nfs_test.rb +2 -2
  125. data/test/br_nfe/service/concerns/rules/consulta_nfs_por_rps_test.rb +2 -7
  126. data/test/br_nfe/service/concerns/rules/consulta_nfse_test.rb +24 -3
  127. data/test/br_nfe/service/concerns/rules/recepcao_lote_rps_test.rb +1 -1
  128. data/test/br_nfe/{helper → service/concerns}/values_ts/service_v1_test.rb +2 -2
  129. data/test/br_nfe/{destinatario_test.rb → service/destinatario_test.rb} +3 -4
  130. data/test/br_nfe/service/emitente_test.rb +29 -0
  131. data/test/br_nfe/service/item_test.rb +14 -14
  132. data/test/br_nfe/service/response/build/base_test.rb +80 -0
  133. data/test/br_nfe/{response/service → service/response}/default_test.rb +1 -82
  134. data/test/br_nfe/service/response/nota_fiscal_test.rb +59 -0
  135. data/test/br_nfe/{response/service → service/response}/paths/v1/tc_nfse_test.rb +10 -10
  136. data/test/br_nfe/service/rps_test.rb +107 -138
  137. data/test/br_nfe/service/sc/florianopolis/emission_rps_test.rb +9 -9
  138. data/test/br_nfe/service/simpliss/v1/base_test.rb +1 -1
  139. data/test/br_nfe/service/simpliss/v1/cancela_nfse_test.rb +7 -10
  140. data/test/br_nfe/service/simpliss/v1/consulta_lote_rps_test.rb +11 -18
  141. data/test/br_nfe/service/simpliss/v1/consulta_nfs_por_rps_test.rb +11 -18
  142. data/test/br_nfe/service/simpliss/v1/consulta_nfse_test.rb +11 -18
  143. data/test/br_nfe/service/simpliss/v1/consulta_situacao_lote_rps_test.rb +7 -11
  144. data/test/br_nfe/service/simpliss/v1/recepcao_lote_rps_test.rb +3 -9
  145. data/test/br_nfe/service/thema/v1/base_test.rb +1 -1
  146. data/test/br_nfe/service/thema/v1/cancela_nfse_test.rb +7 -14
  147. data/test/br_nfe/service/thema/v1/consulta_lote_rps_test.rb +6 -17
  148. data/test/br_nfe/service/thema/v1/consulta_nfs_por_rps_test.rb +6 -13
  149. data/test/br_nfe/service/thema/v1/consulta_nfse_test.rb +11 -18
  150. data/test/br_nfe/service/thema/v1/consulta_situacao_lote_rps_test.rb +7 -11
  151. data/test/br_nfe/service/thema/v1/recepcao_lote_rps_limitado_test.rb +1 -5
  152. data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test.rb +3 -9
  153. data/test/factories/base.rb +0 -1
  154. data/test/factories/{emitente.rb → person.rb} +1 -1
  155. data/test/factories/product/base.rb +12 -0
  156. data/test/factories/product/consulta_status_servico.rb +12 -0
  157. data/test/factories/product/emitente.rb +15 -0
  158. data/test/factories/product/gateway/base.rb +5 -0
  159. data/test/factories/product/gateway/web_service_svrs.rb +5 -0
  160. data/test/factories/service/betha/v1/{cancelamento_nfs.rb → cancela_nfse.rb} +2 -1
  161. data/test/factories/service/betha/v1/consulta_lote_rps.rb +1 -1
  162. data/test/factories/service/betha/v1/consulta_nfs_por_rps.rb +1 -1
  163. data/test/factories/service/betha/v1/consulta_nfse.rb +1 -1
  164. data/test/factories/service/betha/v1/consulta_situacao_lote_rps.rb +1 -1
  165. data/test/factories/{destinatario.rb → service/destinatario.rb} +1 -1
  166. data/test/factories/service/emitente.rb +15 -0
  167. data/test/factories/service/item.rb +4 -4
  168. data/test/factories/service/response/build_response.rb +5 -0
  169. data/test/factories/service/response/default.rb +6 -0
  170. data/test/factories/{response/service → service/response}/nota_fiscal.rb +8 -8
  171. data/test/factories/service/rps.rb +11 -11
  172. data/test/factories/service/sc/florianopolis/base.rb +1 -1
  173. data/test/factories/service/sc/florianopolis/cancellation.rb +1 -1
  174. data/test/factories/service/sc/florianopolis/emission_rps.rb +1 -1
  175. data/test/factories/service/simpliss/v1/base.rb +1 -1
  176. data/test/factories/service/simpliss/v1/cancela_nfse.rb +1 -1
  177. data/test/factories/service/simpliss/v1/consulta_lote_rps.rb +1 -1
  178. data/test/factories/service/simpliss/v1/consulta_nfs_por_rps.rb +1 -1
  179. data/test/factories/service/simpliss/v1/consulta_nfse.rb +1 -1
  180. data/test/factories/service/simpliss/v1/consulta_situacao_lote_rps.rb +1 -1
  181. data/test/factories/service/simpliss/v1/recepcao_lote_rps.rb +1 -1
  182. data/test/factories/service/thema/v1/base.rb +1 -1
  183. data/test/factories/service/thema/v1/cancela_nfse.rb +1 -1
  184. data/test/factories/service/thema/v1/consulta_lote_rps.rb +1 -1
  185. data/test/factories/service/thema/v1/consulta_nfs_por_rps.rb +1 -1
  186. data/test/factories/service/thema/v1/consulta_nfse.rb +1 -1
  187. data/test/factories/service/thema/v1/consulta_situacao_lote_rps.rb +1 -1
  188. data/test/factories/service/thema/v1/recepcao_lote_rps.rb +1 -1
  189. data/test/fixtures/service/response/betha/v1/cancela_nfse/fault.xml +17 -0
  190. data/test/fixtures/service/response/betha/v1/cancela_nfse/success.xml +48 -0
  191. data/test/fixtures/service/response/betha/v1/consulta_lote_rps/fault.xml +18 -0
  192. data/test/fixtures/service/response/betha/v1/consulta_lote_rps/success.xml +108 -0
  193. data/test/fixtures/service/response/betha/v1/consulta_nfse/fault.xml +18 -0
  194. data/test/fixtures/service/response/betha/v1/consulta_nfse/nfs_empty.xml +12 -0
  195. data/test/fixtures/service/response/betha/v1/consulta_nfse/success.xml +115 -0
  196. data/test/fixtures/service/response/betha/v1/consulta_nfse_por_rps/fault.xml +18 -0
  197. data/test/fixtures/service/response/betha/v1/consulta_nfse_por_rps/success.xml +103 -0
  198. data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/error.xml +13 -0
  199. data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/fault.xml +17 -0
  200. data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/success.xml +13 -0
  201. data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unprocessed.xml +13 -0
  202. data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unprocessed_by_code_error.xml +17 -0
  203. data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unreceived.xml +13 -0
  204. data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unreceived_by_code_error.xml +17 -0
  205. data/test/fixtures/service/response/betha/v1/recepcao_lote_rps/error.xml +17 -0
  206. data/test/fixtures/service/response/betha/v1/recepcao_lote_rps/success.xml +14 -0
  207. metadata +160 -94
  208. data/lib/br_nfe/destinatario.rb +0 -26
  209. data/lib/br_nfe/helper/have_destinatario.rb +0 -18
  210. data/lib/br_nfe/helper/have_emitente.rb +0 -20
  211. data/lib/br_nfe/helper/have_intermediario.rb +0 -24
  212. data/lib/br_nfe/helper/have_rps.rb +0 -34
  213. data/lib/br_nfe/helper/values_ts/service_v1.rb +0 -317
  214. data/lib/br_nfe/response/service/build_response.rb +0 -463
  215. data/lib/br_nfe/response/service/default.rb +0 -185
  216. data/lib/br_nfe/response/service/paths/base.rb +0 -127
  217. data/lib/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta.rb +0 -22
  218. data/lib/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta.rb +0 -25
  219. data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta.rb +0 -25
  220. data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta.rb +0 -25
  221. data/lib/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta.rb +0 -31
  222. data/lib/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta.rb +0 -36
  223. data/lib/br_nfe/response/service/paths/v1/tc_nfse.rb +0 -271
  224. data/lib/br_nfe/service/betha/v1/cancelamento_nfs.rb +0 -36
  225. data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta.rb +0 -23
  226. data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta.rb +0 -21
  227. data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +0 -21
  228. data/lib/br_nfe/service/simpliss/v1/response_paths/servico_cancelar_nfse_resposta.rb +0 -22
  229. data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_lote_rps_resposta.rb +0 -25
  230. data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_nfse_resposta.rb +0 -25
  231. data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +0 -25
  232. data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_situacao_lote_rps_resposta.rb +0 -31
  233. data/lib/br_nfe/service/simpliss/v1/response_paths/servico_enviar_lote_rps_resposta.rb +0 -36
  234. data/lib/br_nfe/service/thema/v1/response_paths/servico_cancelar_nfse_resposta.rb +0 -17
  235. data/lib/br_nfe/service/thema/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +0 -19
  236. data/test/br_nfe/emitente_test.rb +0 -46
  237. data/test/br_nfe/helper/have_address_test.rb +0 -62
  238. data/test/br_nfe/helper/have_condicao_pagamento_test.rb +0 -71
  239. data/test/br_nfe/helper/have_destinatario_test.rb +0 -64
  240. data/test/br_nfe/helper/have_emitente_test.rb +0 -63
  241. data/test/br_nfe/helper/have_intermediario_test.rb +0 -77
  242. data/test/br_nfe/helper/have_rps_test.rb +0 -59
  243. data/test/br_nfe/response/service/build_response_test.rb +0 -205
  244. data/test/br_nfe/response/service/nota_fiscal_test.rb +0 -41
  245. data/test/br_nfe/response/service/paths/base_test.rb +0 -196
  246. data/test/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta_test.rb +0 -25
  247. data/test/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta_test.rb +0 -30
  248. data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta_test.rb +0 -30
  249. data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta_test.rb +0 -30
  250. data/test/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta_test.rb +0 -30
  251. data/test/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta_test.rb +0 -34
  252. data/test/br_nfe/service/betha/v1/cancelamento_nfs_test.rb +0 -54
  253. data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta_test.rb +0 -16
  254. data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta_test.rb +0 -16
  255. data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta_test.rb +0 -16
  256. data/test/factories/response/service/build_response.rb +0 -5
  257. data/test/factories/response/service/default.rb +0 -10
@@ -0,0 +1,33 @@
1
+ module BrNfe
2
+ module Constants
3
+ CODIGO_IBGE_UF = [
4
+ '11', # Rondônia
5
+ '12', # Acre
6
+ '13', # Amazonas
7
+ '14', # Roraima
8
+ '15', # Pará
9
+ '16', # Amapá
10
+ '17', # Tocantins
11
+ '21', # Maranhão
12
+ '22', # Piauí
13
+ '23', # Ceará
14
+ '24', # Rio Grande do Norte
15
+ '25', # Paraíba
16
+ '26', # Pernambuco
17
+ '27', # Alagoas
18
+ '28', # Sergipe
19
+ '29', # Bahia
20
+ '31', # Minas Gerais
21
+ '32', # Espírito Santo
22
+ '33', # Rio de Janeiro
23
+ '35', # São Paulo
24
+ '41', # Paraná
25
+ '42', # Santa Catarina
26
+ '43', # Rio Grande do Sul
27
+ '50', # Mato Grosso do Sul
28
+ '51', # Mato Grosso
29
+ '52', # Goiás
30
+ '53', # Distrito Federal
31
+ ]
32
+ end
33
+ end
@@ -15,11 +15,21 @@ module BrNfe
15
15
  attr_accessor :nome_municipio
16
16
  attr_accessor :codigo_municipio # IBGE
17
17
  attr_accessor :uf
18
+ attr_accessor :codigo_ibge_uf
18
19
  attr_accessor :cep
19
20
  attr_accessor :codigo_pais # defaul: 1058 (Brasil)
20
21
  attr_accessor :nome_pais # defaul: BRASIL
21
22
 
23
+ # Código IBGE do Estado (UF)
24
+ # Caso não seja setado um valor no atributo, irá pegar os primeiros 2
25
+ # dígitos do código IBGE do município.
26
+ #
27
+ def codigo_ibge_uf
28
+ @codigo_ibge_uf || "#{codigo_municipio}"[0..1]
29
+ end
30
+
22
31
  validates :logradouro, :numero, :bairro, :codigo_municipio, :uf, :cep, presence: true
32
+ validates :codigo_ibge_uf, inclusion: {in: BrNfe::Constants::CODIGO_IBGE_UF}, allow_blank: true
23
33
 
24
34
  def is_present?
25
35
  logradouro.present? || numero.present? || complemento.present? ||
@@ -1,6 +1,10 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  module BrNfe
3
3
  module StringMethods
4
+
5
+ def br_nfe_escape_html
6
+ CGI::escapeHTML(self)
7
+ end
4
8
 
5
9
  def to_valid_format_nf
6
10
  remove_accents.upcase
@@ -1,24 +1,28 @@
1
1
  module BrNfe
2
- class Emitente < BrNfe::ActiveModelBase
3
- include BrNfe::Helper::HaveAddress
2
+ class Person < BrNfe::ActiveModelBase
3
+ include BrNfe::Association::HaveAddress
4
4
 
5
5
  # Obrigatórios
6
- attr_accessor :cnpj
7
- attr_accessor :inscricao_municipal
6
+ attr_accessor :cpf_cnpj
7
+ alias_attribute :cpf, :cpf_cnpj
8
+ alias_attribute :cnpj, :cpf_cnpj
8
9
  attr_accessor :razao_social
9
- attr_accessor :natureza_operacao
10
10
 
11
11
  #Não obrigatórios
12
12
  attr_accessor :nome_fantasia
13
13
  attr_accessor :telefone
14
14
  attr_accessor :email
15
+
15
16
  attr_accessor :regime_especial_tributacao
17
+ attr_accessor :natureza_operacao
18
+ attr_accessor :inscricao_municipal
19
+ attr_accessor :inscricao_estadual
20
+ attr_accessor :inscricao_suframa
16
21
  attr_accessor :optante_simples_nacional
17
22
  attr_accessor :incentivo_fiscal
18
23
 
19
24
 
20
- validates :inscricao_municipal, :natureza_operacao, :cnpj, :razao_social, presence: true
21
- validate :validar_endereco
25
+ validates :cpf_cnpj, :razao_social, presence: true
22
26
 
23
27
  def razao_social
24
28
  "#{@razao_social}".to_valid_format_nf
@@ -0,0 +1,82 @@
1
+ module BrNfe
2
+ module Product
3
+ class Base < BrNfe::Base
4
+ include ValueNf
5
+
6
+ def certificado_obrigatorio?
7
+ true
8
+ end
9
+
10
+ # Para as Notas fiscais de produto a autenticação via SSL é obrigatória
11
+ def ssl_request?
12
+ true
13
+ end
14
+
15
+ # O Gateway é responsável de identificar o Webservice de acordo com o Estado(UF).
16
+ # Irá identificar o webservice através do valor do método `ibge_code_of_issuer_uf`,
17
+ # na qual pode ser setado diretamente ou pego através do endereço do emissor.
18
+ # Para ver a lista de WebService por estado acesse: http://www.nfe.fazenda.gov.br/portal/webServices.aspx
19
+ #
20
+ # <b>Tipo de retorno: </b> _Object (Gateway::Base ou derivados)_
21
+ #
22
+ def gateway
23
+ case ibge_code_of_issuer_uf
24
+ when '12', '27', '16', '53', '32', '25', '33', '24', '43', '11', '14', '42', '28', '17'
25
+ BrNfe::Product::Gateway::WebServiceSVRS.new({env: env})
26
+ end
27
+ end
28
+
29
+ # Valor utilizado para inserir a url do xmlns nas tags nfeCabecMsg e nfeDadosMsg.
30
+ # Como a url pode variar de acordo com o tipo de serviço e UF, deve ser sobrescrita
31
+ # na subclass de cada serviço.
32
+ #
33
+ # <b>Tipo de retorno: </b> _String_
34
+ #
35
+ def url_xmlns
36
+ raise "O método #url_xmlns deve ser implementar em cada operação"
37
+ end
38
+
39
+ # Irá retornar a versão setada de acordo com o serviço e estado.
40
+ # Deve ser sobrescrito para cada serviço e irá pegar a versão do XML
41
+ # de acordo com o Estado e Serviço, conforme descrito em: http://www.nfe.fazenda.gov.br/portal/webServices.aspx
42
+ #
43
+ # <b>Tipo de retorno: </b> _Symbol_
44
+ #
45
+ def gateway_xml_version
46
+ raise "O método #gateway_xml_version deve ser implementar em cada operação"
47
+ end
48
+
49
+ # Versão do XML utilizado na requisição.
50
+ # Como a versão do XML pode divergir para cada estado/servidor e serviço,
51
+ # é necessário passar a versão do XML na requisição para o servidor saber qual
52
+ # validação aplicar e como pegar os dados.
53
+ # Esse método tem o intuíto de pegar a versão setada no Gateway de cada UF e serviço
54
+ # e transformar em uma String aplicável no XML.
55
+ # Exemplo:
56
+ # Se a versão do xml for :v3_10
57
+ # Esse método irá transformar o valor em '3.10'
58
+ #
59
+ # <b>Tipo de retorno: </b> _String_
60
+ #
61
+ def xml_version
62
+ "#{gateway_xml_version}".gsub('_','.').gsub(/[^\d\.]/,'')
63
+ end
64
+
65
+ # Declaro que o método `render_xml` irá verificar os arquivos também presentes
66
+ # nos diretórios especificados
67
+ #
68
+ # <b>Tipo de retorno: </b> _Array_
69
+ def xml_current_dir_path
70
+ ["#{BrNfe.root}/lib/br_nfe/product/xml/#{gateway_xml_version}", "#{BrNfe.root}/lib/br_nfe/product/xml"]+super
71
+ end
72
+
73
+ def request
74
+ client_wsdl.call(method_wsdl, xml: soap_xml)
75
+ end
76
+
77
+ def emitente_class
78
+ BrNfe.emitente_product_class
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,35 @@
1
+ module BrNfe
2
+ module Product
3
+ class ConsultaStatusServico < BrNfe::Product::Base
4
+ # URL que será setada no atribto xmlns do XML;
5
+ # Ex:
6
+ # nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"
7
+ def url_xmlns
8
+ gateway.url_xmlns_status_servico
9
+ end
10
+
11
+ # URL do webservice para enviar as informações.
12
+ # Ex:
13
+ # https://www.sefazvirtual.fazenda.gov.br/NfeInutilizacao2/NfeInutilizacao2.asmx?wsdl
14
+ def wsdl
15
+ gateway.wsdl_status_servico
16
+ end
17
+
18
+ # Método SOAP que será chamado para enviar o XML
19
+ def method_wsdl
20
+ gateway.operation_status_servico
21
+ end
22
+
23
+ # Versão utilizada pelo webservice do estado para determinada ação.
24
+ def gateway_xml_version
25
+ gateway.version_xml_status_servico
26
+ end
27
+
28
+ # XML que será enviado no body da requisição SOAP contendo as informações
29
+ # específicas de cada operação.
30
+ def xml_builder
31
+ render_xml 'consulta_status_servico'
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,8 @@
1
+ module BrNfe
2
+ module Product
3
+ class Emitente < BrNfe::Person
4
+ validates :inscricao_municipal, :natureza_operacao, presence: true
5
+ validate :validar_endereco
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,62 @@
1
+ module BrNfe
2
+ module Product
3
+ module Gateway
4
+ class Base < BrNfe::ActiveModelBase
5
+
6
+ attr_accessor :env
7
+
8
+ def env_production?; env == :production end
9
+
10
+ ##########################################################################################
11
+ ################################ NFE STATUS SERVIÇO ####################################
12
+ # Serviço destinado à consulta do status do serviço prestado pelo
13
+ # Portal da Secretaria de Fazenda Estadual
14
+ # Traduzindo: Utilizado para saber se o SEFAZ do estado está em operação
15
+ #
16
+ # O processamento do pedido de consulta de status de Serviço pode resultar em uma
17
+ # mensagem de erro ou retornar a situação atual do Servidor de Processamento, códigos de
18
+ # situação
19
+ # + 107 - Serviço em Operação
20
+ # + 108 - Serviço Paralisado Temporariamente
21
+ # + 109 - Serviço Paralisado sem Previsão
22
+ # A critério da UF o campo xObs pode ser utilizado para
23
+ # fornecer maiores informações ao contribuinte, como por exemplo: “manutenção programada”,
24
+ # “modificação de versão do aplicativo”, “previsão de retorno”, etc.
25
+ #
26
+ # Processo: síncrono.
27
+ # Método: nfeStatusServico
28
+ def wsdl_status_servico
29
+ raise "O método #wsdl_status_servico deve ser implementado no webservice de cada estado"
30
+ end
31
+ def operation_status_servico
32
+ raise "O método #operation_status_servico deve ser implementado no webservice de cada estado"
33
+ end
34
+ def version_xml_status_servico
35
+ raise "O método #version_xml_status_servico deve ser implementado no webservice de cada estado"
36
+ end
37
+ # URL que é adicionado nas tags Header/nfeCabecMsg e Body/nfeDadosMsg
38
+ def url_xmlns_status_servico
39
+ raise "O método #url_xmlns_status_servico deve ser implementado no webservice de cada estado"
40
+ end
41
+
42
+ ##########################################################################################
43
+ ################################ NFE AUTORIZAÇÃO #######################################
44
+ # Serviço destinado à recepção de mensagens de lote de NF-e.
45
+ # Traduzindo: Serviço destinando a enviar as notas fiscais para o SEFAZ
46
+ #
47
+ # Processo: assíncrono.
48
+ # Método: nfeAutorizacaoLote
49
+ #
50
+ def wsdl_autorizacao
51
+ end
52
+ def operation_autorizacao
53
+ end
54
+ def version_xml_autorizacao
55
+ end
56
+ # URL que é adicionado nas tags Header/nfeCabecMsg e Body/nfeDadosMsg
57
+ def url_xmlns_autorizacao
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,39 @@
1
+ module BrNfe
2
+ module Product
3
+ module Gateway
4
+ class WebServiceSVRS < Base
5
+
6
+ ##########################################################################################
7
+ ################################ NFE STATUS SERVIÇO ####################################
8
+ def wsdl_status_servico
9
+ if env_production?
10
+ 'https://nfe.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx?wsdl'
11
+ else
12
+ 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx?wsdl'
13
+ end
14
+ end
15
+ def operation_status_servico
16
+ :nfe_status_servico_nf2
17
+ end
18
+ def version_xml_status_servico
19
+ :v3_10
20
+ end
21
+ def url_xmlns_status_servico
22
+ 'http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2'
23
+ end
24
+
25
+ ##########################################################################################
26
+ ################################ NFE AUTORIZAÇÃO #######################################
27
+ # def wsdl_autorizacao
28
+ # 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx?wsdl'
29
+ # end
30
+ # def operation_autorizacao
31
+ # :nfe_autorizacao_lote
32
+ # end
33
+ # def version_xml_autorizacao
34
+ # :v3_10
35
+ # end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,9 @@
1
+ module BrNfe
2
+ module Product
3
+ module ValueNf
4
+ def value_nf_tp_amb value, xml_version=:v3_10
5
+ value == :production ? '1' : '2'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
2
+ soap:Header
3
+ nfeCabecMsg xmlns="#{url_xmlns}"
4
+ cUF = ibge_code_of_issuer_uf
5
+ versaoDados = xml_version
6
+ soap:Body
7
+ nfeDadosMsg xmlns="#{url_xmlns}"
8
+ = content_xml.html_safe
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
3
+ <xs:include schemaLocation="leiauteNFe_v3.10.xsd"/>
4
+ <xs:element name="consReciNFe" type="TConsReciNFe">
5
+ <xs:annotation>
6
+ <xs:documentation>Schema XML de validação do Pedido de Consulta do Recido do Lote de Notas Fiscais Eletrônicas</xs:documentation>
7
+ </xs:annotation>
8
+ </xs:element>
9
+ </xs:schema>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.portalfiscal.inf.br/nfe" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
3
+ <xs:include schemaLocation="leiauteConsSitNFe_v3.10.xsd"/>
4
+ <xs:element name="consSitNFe" type="TConsSitNFe">
5
+ <xs:annotation>
6
+ <xs:documentation>Schema de validação XML dp Pedido de Consulta da Situação Atual da Nota Fiscal Eletrônica</xs:documentation>
7
+ </xs:annotation>
8
+ </xs:element>
9
+ </xs:schema>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
3
+ <xs:include schemaLocation="leiauteConsStatServ_v3.10.xsd"/>
4
+ <xs:element name="consStatServ" type="TConsStatServ">
5
+ <xs:annotation>
6
+ <xs:documentation>Schema XML de validação do Pedido de Consulta do Status do Serviço</xs:documentation>
7
+ </xs:annotation>
8
+ </xs:element>
9
+ </xs:schema>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
3
+ <xs:include schemaLocation="leiauteNFe_v3.10.xsd"/>
4
+ <xs:element name="enviNFe" type="TEnviNFe">
5
+ <xs:annotation>
6
+ <xs:documentation>Schema XML de validação do Pedido de Concessão de Autorização da Nota Fiscal Eletrônica</xs:documentation>
7
+ </xs:annotation>
8
+ </xs:element>
9
+ </xs:schema>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
3
+ <xs:include schemaLocation="leiauteInutNFe_v3.10.xsd"/>
4
+ <xs:element name="inutNFe" type="TInutNFe">
5
+ <xs:annotation>
6
+ <xs:documentation>Schema XML de validação do Pedido de Inutilização de Numeração da Nota Fiscal Eletrônica</xs:documentation>
7
+ </xs:annotation>
8
+ </xs:element>
9
+ </xs:schema>