br_nfe 2.1.0 → 2.1.1

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 +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>