br_nfe 2.1.1 → 2.2.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 (495) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/Gemfile +1 -0
  4. data/Gemfile.lock +12 -2
  5. data/README.markdown +3 -1
  6. data/Rakefile +20 -1
  7. data/lib/br_nfe/active_model/associations.rb +11 -0
  8. data/lib/br_nfe/active_model/has_many.rb +65 -0
  9. data/lib/br_nfe/active_model/has_one.rb +57 -0
  10. data/lib/br_nfe/active_model_base.rb +38 -1
  11. data/lib/br_nfe/base.rb +9 -0
  12. data/lib/br_nfe/calculos/fatores_de_multiplicacao.rb +67 -0
  13. data/lib/br_nfe/calculos/modulo11.rb +54 -0
  14. data/lib/br_nfe/calculos/modulo11_fator_de2a9.rb +83 -0
  15. data/lib/br_nfe/calculos/modulo11_fator_de2a9_resto_zero.rb +29 -0
  16. data/lib/br_nfe/constants.rb +46 -1
  17. data/lib/br_nfe/endereco.rb +6 -2
  18. data/lib/br_nfe/helper/cpf_cnpj.rb +8 -1
  19. data/lib/br_nfe/person.rb +32 -3
  20. data/lib/br_nfe/product/destinatario.rb +45 -0
  21. data/lib/br_nfe/product/emitente.rb +14 -1
  22. data/lib/br_nfe/product/evento/base.rb +146 -0
  23. data/lib/br_nfe/product/evento/cancelamento.rb +46 -0
  24. data/lib/br_nfe/product/gateway/base.rb +16 -43
  25. data/lib/br_nfe/product/gateway/web_service_am.rb +140 -0
  26. data/lib/br_nfe/product/gateway/web_service_ba.rb +140 -0
  27. data/lib/br_nfe/product/gateway/web_service_ce.rb +162 -0
  28. data/lib/br_nfe/product/gateway/web_service_go.rb +140 -0
  29. data/lib/br_nfe/product/gateway/web_service_mg.rb +140 -0
  30. data/lib/br_nfe/product/gateway/web_service_ms.rb +140 -0
  31. data/lib/br_nfe/product/gateway/web_service_mt.rb +140 -0
  32. data/lib/br_nfe/product/gateway/web_service_pe.rb +140 -0
  33. data/lib/br_nfe/product/gateway/web_service_pr.rb +140 -0
  34. data/lib/br_nfe/product/gateway/web_service_rs.rb +140 -0
  35. data/lib/br_nfe/product/gateway/web_service_sp.rb +140 -0
  36. data/lib/br_nfe/product/gateway/web_service_svan.rb +162 -0
  37. data/lib/br_nfe/product/gateway/web_service_svc_an.rb +131 -0
  38. data/lib/br_nfe/product/gateway/web_service_svc_rs.rb +20 -0
  39. data/lib/br_nfe/product/gateway/web_service_svrs.rb +111 -10
  40. data/lib/br_nfe/product/nf_xml_value.rb +278 -0
  41. data/lib/br_nfe/product/nfe/adicao_importacao.rb +76 -0
  42. data/lib/br_nfe/product/nfe/cobranca/duplicata.rb +44 -0
  43. data/lib/br_nfe/product/nfe/cobranca/fatura.rb +64 -0
  44. data/lib/br_nfe/product/nfe/cobranca/pagamento.rb +99 -0
  45. data/lib/br_nfe/product/nfe/declaracao_importacao.rb +221 -0
  46. data/lib/br_nfe/product/nfe/detalhe_exportacao.rb +89 -0
  47. data/lib/br_nfe/product/nfe/item.rb +678 -0
  48. data/lib/br_nfe/product/nfe/item_tax/cofins.rb +138 -0
  49. data/lib/br_nfe/product/nfe/item_tax/cofins_st.rb +68 -0
  50. data/lib/br_nfe/product/nfe/item_tax/icms.rb +593 -0
  51. data/lib/br_nfe/product/nfe/item_tax/icms_uf_destino.rb +169 -0
  52. data/lib/br_nfe/product/nfe/item_tax/importacao.rb +62 -0
  53. data/lib/br_nfe/product/nfe/item_tax/ipi.rb +179 -0
  54. data/lib/br_nfe/product/nfe/item_tax/issqn.rb +256 -0
  55. data/lib/br_nfe/product/nfe/item_tax/pis.rb +138 -0
  56. data/lib/br_nfe/product/nfe/item_tax/pis_st.rb +68 -0
  57. data/lib/br_nfe/product/nfe/processo_referencia.rb +48 -0
  58. data/lib/br_nfe/product/nfe/transporte/base.rb +264 -0
  59. data/lib/br_nfe/product/nfe/transporte/transportador.rb +15 -0
  60. data/lib/br_nfe/product/nfe/transporte/veiculo.rb +53 -0
  61. data/lib/br_nfe/product/nfe/transporte/volume.rb +89 -0
  62. data/lib/br_nfe/product/nota_fiscal.rb +1173 -0
  63. data/lib/br_nfe/product/operation/base.rb +255 -0
  64. data/lib/br_nfe/product/operation/nfe_autorizacao.rb +118 -0
  65. data/lib/br_nfe/product/operation/nfe_consulta_protocolo.rb +61 -0
  66. data/lib/br_nfe/product/operation/nfe_download_nf.rb +86 -0
  67. data/lib/br_nfe/product/operation/nfe_inutilizacao.rb +168 -0
  68. data/lib/br_nfe/product/operation/nfe_recepcao_evento.rb +70 -0
  69. data/lib/br_nfe/product/operation/nfe_ret_autorizacao.rb +63 -0
  70. data/lib/br_nfe/product/operation/nfe_status_servico.rb +46 -0
  71. data/lib/br_nfe/product/response/base.rb +97 -0
  72. data/lib/br_nfe/product/response/build/base.rb +287 -0
  73. data/lib/br_nfe/product/response/build/nfe_autorizacao.rb +102 -0
  74. data/lib/br_nfe/product/response/build/nfe_consulta_protocolo.rb +133 -0
  75. data/lib/br_nfe/product/response/build/nfe_inutilizacao.rb +53 -0
  76. data/lib/br_nfe/product/response/build/nfe_ret_autorizacao.rb +65 -0
  77. data/lib/br_nfe/product/response/build/nfe_status_servico.rb +43 -0
  78. data/lib/br_nfe/product/response/event.rb +89 -0
  79. data/lib/br_nfe/product/response/nfe_autorizacao.rb +12 -0
  80. data/lib/br_nfe/product/response/nfe_consulta_protocolo.rb +13 -0
  81. data/lib/br_nfe/product/response/nfe_inutilizacao.rb +89 -0
  82. data/lib/br_nfe/product/response/nfe_ret_autorizacao.rb +9 -0
  83. data/lib/br_nfe/product/response/nfe_status_servico.rb +31 -0
  84. data/lib/br_nfe/product/xml/_signed_info_sh1.xml.slim +9 -0
  85. data/lib/br_nfe/product/xml/_tc_cpf_cnpj.xml.slim +7 -0
  86. data/lib/br_nfe/product/xml/signature_sh1.xml.slim +12 -0
  87. data/lib/br_nfe/product/xml/v1_00/evento/infEventoCancelamento.xml.slim +19 -0
  88. data/lib/br_nfe/product/xml/v1_00/root/NfeDownloadNf.xml.slim +5 -0
  89. data/lib/br_nfe/product/xml/v1_00/root/NfeRecepcaoEvento.xml.slim +7 -0
  90. data/lib/br_nfe/product/xml/v2_00/_tc_endereco.xml.slim +19 -0
  91. data/lib/br_nfe/product/xml/v2_00/_tc_infNFe.xml.slim +39 -0
  92. data/lib/br_nfe/product/xml/v2_00/infInut.xml.slim +12 -0
  93. data/lib/br_nfe/product/xml/v2_00/infNFe/NFe.xml.slim +4 -0
  94. data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_cobr.xml.slim +19 -0
  95. data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_dest.xml.slim +14 -0
  96. data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_det.xml.slim +7 -0
  97. data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_emit.xml.slim +19 -0
  98. data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_entrega.xml.slim +11 -0
  99. data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_exporta.xml.slim +2 -0
  100. data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_ide.xml.slim +24 -0
  101. data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_infAdic.xml.slim +13 -0
  102. data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_retirada.xml.slim +11 -0
  103. data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_total.xml.slim +50 -0
  104. data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_transp.xml.slim +35 -0
  105. data/lib/br_nfe/product/xml/v2_00/infNFe/det/_tc_imposto.xml.slim +31 -0
  106. data/lib/br_nfe/product/xml/v2_00/infNFe/det/_tc_prod.xml.slim +37 -0
  107. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS00.xml.slim +6 -0
  108. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS10.xml.slim +16 -0
  109. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS101.xml.slim +4 -0
  110. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS102.xml.slim +3 -0
  111. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS20.xml.slim +6 -0
  112. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS201.xml.slim +15 -0
  113. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS202.xml.slim +14 -0
  114. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS30.xml.slim +12 -0
  115. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS40.xml.slim +7 -0
  116. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS500.xml.slim +6 -0
  117. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS51.xml.slim +13 -0
  118. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS60.xml.slim +5 -0
  119. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS70.xml.slim +18 -0
  120. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS90.xml.slim +21 -0
  121. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS900.xml.slim +25 -0
  122. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_COFINS.xml.slim +26 -0
  123. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_COFINS_ST.xml.slim +7 -0
  124. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_ICMS.xml.slim +45 -0
  125. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_II.xml.slim +4 -0
  126. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_IPI.xml.slim +30 -0
  127. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_PIS.xml.slim +26 -0
  128. data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_PIS_ST.xml.slim +7 -0
  129. data/lib/br_nfe/product/xml/v2_00/infNFe/det/prod/_tc_di.xml.slim +13 -0
  130. data/lib/br_nfe/product/xml/v2_00/infNFe/transp/_tc_retTransp.xml.slim +6 -0
  131. data/lib/br_nfe/product/xml/v2_00/infNFe/transp/_tc_transporta.xml.slim +17 -0
  132. data/lib/br_nfe/product/xml/v2_00/infNFe/transp/_tc_vol.xml.slim +15 -0
  133. data/lib/br_nfe/product/xml/v2_00/infNFe.xml.slim +3 -0
  134. data/lib/br_nfe/product/xml/v2_00/root/NfeAutorizacao.xml.slim +5 -0
  135. data/lib/br_nfe/product/xml/v2_00/root/NfeInutilizacao.xml.slim +4 -0
  136. data/lib/br_nfe/product/xml/v2_00/root/NfeRetAutorizacao.xml.slim +3 -0
  137. data/lib/br_nfe/product/xml/v2_00/root/NfeStatusServico.xml.slim +4 -0
  138. data/lib/br_nfe/product/xml/v2_01/root/NfeConsultaProtocolo.xml.slim +4 -0
  139. data/lib/br_nfe/product/xml/v3_10/_tc_infNFe.xml.slim +44 -0
  140. data/lib/br_nfe/product/xml/v3_10/infNFe/_tc_dest.xml.slim +25 -0
  141. data/lib/br_nfe/product/xml/v3_10/infNFe/_tc_det.xml.slim +14 -0
  142. data/lib/br_nfe/product/xml/v3_10/infNFe/_tc_exporta.xml.slim +4 -0
  143. data/lib/br_nfe/product/xml/v3_10/infNFe/_tc_ide.xml.slim +26 -0
  144. data/lib/br_nfe/product/xml/v3_10/infNFe/_tc_pag.xml.slim +7 -0
  145. data/lib/br_nfe/product/xml/v3_10/infNFe/_tc_total.xml.slim +78 -0
  146. data/lib/br_nfe/product/xml/v3_10/infNFe/det/_tc_imposto.xml.slim +37 -0
  147. data/lib/br_nfe/product/xml/v3_10/infNFe/det/_tc_prod.xml.slim +48 -0
  148. data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/ICMS/_tc_ICMS20.xml.slim +12 -0
  149. data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/ICMS/_tc_ICMS30.xml.slim +17 -0
  150. data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/ICMS/_tc_ICMS40.xml.slim +7 -0
  151. data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/ICMS/_tc_ICMS51.xml.slim +19 -0
  152. data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/ICMS/_tc_ICMS70.xml.slim +23 -0
  153. data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/ICMS/_tc_ICMS90.xml.slim +26 -0
  154. data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/_tc_ICMSUFDest.xml.slim +8 -0
  155. data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/_tc_ISSQN.xml.slim +35 -0
  156. data/lib/br_nfe/product/xml/v3_10/infNFe/det/prod/_tc_det_export.xml.slim +8 -0
  157. data/lib/br_nfe/product/xml/v3_10/infNFe/det/prod/_tc_di.xml.slim +28 -0
  158. data/lib/br_nfe/product/xml/v3_10/root/NfeAutorizacao.xml.slim +6 -0
  159. data/lib/br_nfe/service/base.rb +1 -105
  160. data/lib/br_nfe/service/betha/v1/cancela_nfse.rb +1 -1
  161. data/lib/br_nfe/service/response/default.rb +1 -1
  162. data/lib/br_nfe/service/simpliss/v1/base.rb +2 -0
  163. data/lib/br_nfe/version.rb +2 -2
  164. data/lib/br_nfe.rb +180 -22
  165. data/lib/config/locales/br_nfe/en/product/nfe/cobranca/fatura.yml +6 -0
  166. data/lib/config/locales/br_nfe/en/product/nfe/declaracao_importacao.yml +10 -0
  167. data/lib/config/locales/br_nfe/en/product/nfe/item.yml +20 -0
  168. data/lib/config/locales/br_nfe/en/product/nfe/item_tax/icms_uf_destino.yml +8 -0
  169. data/lib/config/locales/br_nfe/en/product/nfe/transporte/base.yml +9 -0
  170. data/lib/config/locales/br_nfe/en/product/nota_fiscal.yml +21 -0
  171. data/lib/config/locales/br_nfe/en/product/operation/nfe_autorizacao.yml +10 -0
  172. data/lib/config/locales/br_nfe/en/product/operation/nfe_recepcao_evento.yml +6 -0
  173. data/lib/config/locales/br_nfe/pt-BR/product/nfe/cobranca/fatura.yml +6 -0
  174. data/lib/config/locales/br_nfe/pt-BR/product/nfe/declaracao_importacao.yml +10 -0
  175. data/lib/config/locales/br_nfe/pt-BR/product/nfe/item.yml +20 -0
  176. data/lib/config/locales/br_nfe/pt-BR/product/nfe/item_tax/icms_uf_destino.yml +8 -0
  177. data/lib/config/locales/br_nfe/pt-BR/product/nfe/transporte/base.yml +9 -0
  178. data/lib/config/locales/br_nfe/pt-BR/product/nota_fiscal.yml +21 -0
  179. data/lib/config/locales/br_nfe/pt-BR/product/operation/nfe_autorizacao.yml +10 -0
  180. data/lib/config/locales/br_nfe/pt-BR/product/operation/nfe_recepcao_evento.yml +6 -0
  181. data/test/br_nfe/association/have_destinatario_test.rb +8 -8
  182. data/test/br_nfe/association/have_emitente_test.rb +6 -6
  183. data/test/br_nfe/base_test.rb +15 -4
  184. data/test/br_nfe/endereco_test.rb +15 -0
  185. data/test/br_nfe/person_test.rb +55 -6
  186. data/test/br_nfe/product/destinatario_test.rb +26 -0
  187. data/test/br_nfe/product/emitente_test.rb +1 -2
  188. data/test/br_nfe/product/evento/base_test.rb +58 -0
  189. data/test/br_nfe/product/evento/cancelamento_test.rb +32 -0
  190. data/test/br_nfe/product/gateway/web_service_am_test.rb +242 -0
  191. data/test/br_nfe/product/gateway/web_service_ba_test.rb +242 -0
  192. data/test/br_nfe/product/gateway/web_service_ce_test.rb +242 -0
  193. data/test/br_nfe/product/gateway/web_service_go_test.rb +242 -0
  194. data/test/br_nfe/product/gateway/web_service_mg_test.rb +242 -0
  195. data/test/br_nfe/product/gateway/web_service_ms_test.rb +242 -0
  196. data/test/br_nfe/product/gateway/web_service_mt_test.rb +408 -0
  197. data/test/br_nfe/product/gateway/web_service_pe_test.rb +408 -0
  198. data/test/br_nfe/product/gateway/web_service_pr_test.rb +408 -0
  199. data/test/br_nfe/product/gateway/web_service_rs_test.rb +407 -0
  200. data/test/br_nfe/product/gateway/web_service_sp_test.rb +408 -0
  201. data/test/br_nfe/product/gateway/web_service_svan_test.rb +242 -0
  202. data/test/br_nfe/product/gateway/web_service_svc_an_test.rb +185 -0
  203. data/test/br_nfe/product/gateway/web_service_svc_rs_test.rb +185 -0
  204. data/test/br_nfe/product/gateway/web_service_svrs_test.rb +208 -2
  205. data/test/br_nfe/product/nfe/adicao_importacao_test.rb +19 -0
  206. data/test/br_nfe/product/nfe/cobranca/duplicata_test.rb +19 -0
  207. data/test/br_nfe/product/nfe/cobranca/fatura_test.rb +32 -0
  208. data/test/br_nfe/product/nfe/cobranca/pagamento_test.rb +105 -0
  209. data/test/br_nfe/product/nfe/declaracao_importacao_test.rb +116 -0
  210. data/test/br_nfe/product/nfe/detalhe_exportacao_test.rb +97 -0
  211. data/test/br_nfe/product/nfe/item_tax/cofins_st_test.rb +22 -0
  212. data/test/br_nfe/product/nfe/item_tax/cofins_test.rb +113 -0
  213. data/test/br_nfe/product/nfe/item_tax/icms_test.rb +1011 -0
  214. data/test/br_nfe/product/nfe/item_tax/icms_uf_destino_test.rb +99 -0
  215. data/test/br_nfe/product/nfe/item_tax/importacao_test.rb +23 -0
  216. data/test/br_nfe/product/nfe/item_tax/ipi_test.rb +160 -0
  217. data/test/br_nfe/product/nfe/item_tax/issqn_test.rb +84 -0
  218. data/test/br_nfe/product/nfe/item_tax/pis_st_test.rb +22 -0
  219. data/test/br_nfe/product/nfe/item_tax/pis_test.rb +113 -0
  220. data/test/br_nfe/product/nfe/item_test.rb +381 -0
  221. data/test/br_nfe/product/nfe/processo_referencia_test.rb +30 -0
  222. data/test/br_nfe/product/nfe/transporte/base_test.rb +182 -0
  223. data/test/br_nfe/product/nfe/transporte/transportador_test.rb +13 -0
  224. data/test/br_nfe/product/nfe/transporte/veiculo_test.rb +13 -0
  225. data/test/br_nfe/product/nfe/transporte/volume_test.rb +42 -0
  226. data/test/br_nfe/product/nota_fiscal_test.rb +662 -0
  227. data/test/br_nfe/product/operation/base_test.rb +538 -0
  228. data/test/br_nfe/product/operation/nfe_autorizacao_test.rb +378 -0
  229. data/test/br_nfe/product/operation/nfe_consulta_protocolo_test.rb +349 -0
  230. data/test/br_nfe/product/operation/nfe_download_nf_test.rb +93 -0
  231. data/test/br_nfe/product/operation/nfe_inutilizacao_test.rb +210 -0
  232. data/test/br_nfe/product/operation/nfe_recepcao_evento_test.rb +84 -0
  233. data/test/br_nfe/product/operation/nfe_ret_autorizacao_test.rb +309 -0
  234. data/test/br_nfe/product/operation/nfe_status_servico_test.rb +122 -0
  235. data/test/br_nfe/product/response/base_test.rb +75 -0
  236. data/test/br_nfe/product/response/build/base_test.rb +34 -0
  237. data/test/br_nfe/product/response/nfe_ret_autorizacao_test.rb +14 -0
  238. data/test/br_nfe/service/association/have_intermediario_test.rb +10 -10
  239. data/test/br_nfe/service/base_test.rb +9 -206
  240. data/test/br_nfe/service/betha/v1/cancela_nfse_test.rb +8 -6
  241. data/test/br_nfe/service/betha/v1/consulta_lote_rps_test.rb +6 -3
  242. data/test/br_nfe/service/betha/v1/consulta_nfs_por_rps_test.rb +6 -3
  243. data/test/br_nfe/service/betha/v1/consulta_nfse_test.rb +7 -4
  244. data/test/br_nfe/service/betha/v1/consulta_situacao_lote_rps_test.rb +12 -9
  245. data/test/br_nfe/service/betha/v1/recepcao_lote_rps_test.rb +6 -3
  246. data/test/br_nfe/service/rps_test.rb +2 -2
  247. data/test/br_nfe/service/simpliss/v1/cancela_nfse_test.rb +6 -3
  248. data/test/br_nfe/service/simpliss/v1/consulta_lote_rps_test.rb +7 -4
  249. data/test/br_nfe/service/simpliss/v1/consulta_nfs_por_rps_test.rb +7 -4
  250. data/test/br_nfe/service/simpliss/v1/consulta_nfse_test.rb +8 -5
  251. data/test/br_nfe/service/simpliss/v1/consulta_situacao_lote_rps_test.rb +9 -6
  252. data/test/br_nfe/service/simpliss/v1/recepcao_lote_rps_test.rb +6 -3
  253. data/test/br_nfe/service/thema/v1/cancela_nfse_test.rb +6 -3
  254. data/test/br_nfe/service/thema/v1/consulta_lote_rps_test.rb +6 -3
  255. data/test/br_nfe/service/thema/v1/consulta_nfs_por_rps_test.rb +6 -3
  256. data/test/br_nfe/service/thema/v1/consulta_nfse_test.rb +8 -5
  257. data/test/br_nfe/service/thema/v1/consulta_situacao_lote_rps_test.rb +9 -6
  258. data/test/br_nfe/service/thema/v1/recepcao_lote_rps_limitado_test.rb +6 -3
  259. data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test.rb +6 -3
  260. data/test/factories/person.rb +1 -1
  261. data/test/factories/product/destinatario.rb +11 -0
  262. data/test/factories/product/emitente.rb +1 -1
  263. data/test/factories/product/evento/base.rb +9 -0
  264. data/test/factories/product/evento/cancelamento.rb +10 -0
  265. data/test/factories/product/gateway/web_service_am.rb +5 -0
  266. data/test/factories/product/gateway/web_service_ba.rb +5 -0
  267. data/test/factories/product/nfe/adicao_importacao.rb +7 -0
  268. data/test/factories/product/nfe/cobranca/duplicata.rb +7 -0
  269. data/test/factories/product/nfe/cobranca/fatura.rb +8 -0
  270. data/test/factories/product/nfe/cobranca/pagamento.rb +9 -0
  271. data/test/factories/product/nfe/declaracao_importacao.rb +10 -0
  272. data/test/factories/product/nfe/detalhe_exportacao.rb +5 -0
  273. data/test/factories/product/nfe/item.rb +24 -0
  274. data/test/factories/product/nfe/item_tax/cofins.rb +5 -0
  275. data/test/factories/product/nfe/item_tax/cofins_st.rb +5 -0
  276. data/test/factories/product/nfe/item_tax/icms.rb +9 -0
  277. data/test/factories/product/nfe/item_tax/icms_uf_destino.rb +11 -0
  278. data/test/factories/product/nfe/item_tax/importacao.rb +8 -0
  279. data/test/factories/product/nfe/item_tax/ipi.rb +6 -0
  280. data/test/factories/product/nfe/item_tax/issqn.rb +9 -0
  281. data/test/factories/product/nfe/item_tax/pis.rb +5 -0
  282. data/test/factories/product/nfe/item_tax/pis_st.rb +5 -0
  283. data/test/factories/product/nfe/processo_referencia.rb +6 -0
  284. data/test/factories/product/nfe/transporte/base.rb +5 -0
  285. data/test/factories/product/nfe/transporte/transportador.rb +7 -0
  286. data/test/factories/product/nfe/transporte/veiculo.rb +7 -0
  287. data/test/factories/product/nfe/transporte/volume.rb +5 -0
  288. data/test/factories/product/nota_fiscal.rb +22 -0
  289. data/test/factories/product/{base.rb → operation/base.rb} +1 -1
  290. data/test/factories/product/operation/nfe_autorizacao.rb +590 -0
  291. data/test/factories/product/operation/nfe_consulta_protocolo.rb +13 -0
  292. data/test/factories/product/operation/nfe_download_nf.rb +15 -0
  293. data/test/factories/product/operation/nfe_inutilizacao.rb +19 -0
  294. data/test/factories/product/operation/nfe_recepcao_evento.rb +14 -0
  295. data/test/factories/product/operation/nfe_ret_autorizacao.rb +13 -0
  296. data/test/factories/product/{consulta_status_servico.rb → operation/nfe_status_servico.rb} +1 -1
  297. data/test/factories/product/response/base.rb +12 -0
  298. data/test/factories/product/response/build/base.rb +6 -0
  299. data/test/factories/product/response/nfe_ret_autorizacao.rb +13 -0
  300. data/test/factories/service/emitente.rb +1 -1
  301. data/test/fixtures/product/operation/nfe_autorizacao/nfe_signed.xml +1 -0
  302. data/test/fixtures/product/response/v3.10/nfe_autorizacao/async_fail.xml +21 -0
  303. data/test/fixtures/product/response/v3.10/nfe_autorizacao/async_success.xml +25 -0
  304. data/test/fixtures/product/response/v3.10/nfe_autorizacao/nfe/with_proc.xml +1 -0
  305. data/test/fixtures/product/response/v3.10/nfe_autorizacao/nfe/without_proc.xml +1 -0
  306. data/test/fixtures/product/response/v3.10/nfe_autorizacao/original_xml.xml +1 -0
  307. data/test/fixtures/product/response/v3.10/nfe_autorizacao/sync_fail.xml +32 -0
  308. data/test/fixtures/product/response/v3.10/nfe_autorizacao/sync_success.xml +33 -0
  309. data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/event_xml/event_1.xml +1 -0
  310. data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/event_xml/event_2.xml +1 -0
  311. data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/event_xml/event_3.xml +1 -0
  312. data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/event_xml/event_cancel.xml +1 -0
  313. data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/event_xml/one_event.xml +1 -0
  314. data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/fail.xml +22 -0
  315. data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/nfe_original/with_proc.xml +1 -0
  316. data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/nfe_original/without_proc.xml +1 -0
  317. data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/success_many_with_cancel.xml +198 -0
  318. data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/success_many_without_cancel.xml +199 -0
  319. data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/success_one.xml +89 -0
  320. data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/success_without.xml +34 -0
  321. data/test/fixtures/product/response/v3.10/nfe_inutilizacao/fail.xml +29 -0
  322. data/test/fixtures/product/response/v3.10/nfe_inutilizacao/success.xml +30 -0
  323. data/test/fixtures/product/response/v3.10/nfe_recepcao_evento/cancelamento/fail.xml +34 -0
  324. data/test/fixtures/product/response/v3.10/nfe_recepcao_evento/cancelamento/success.xml +36 -0
  325. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/lot_fail.xml +22 -0
  326. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/lot_ok_one_invoice_fail.xml +33 -0
  327. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/lot_ok_one_invoice_fail_and_one_ok.xml +46 -0
  328. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/lot_ok_one_invoice_ok.xml +34 -0
  329. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/lot_ok_two_invoice_fail.xml +46 -0
  330. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/lot_ok_two_invoice_ok.xml +46 -0
  331. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/nfe/nf_2_with_protocol.xml +1 -0
  332. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/nfe/nf_2_without_protocol.xml +1 -0
  333. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/nfe/nf_3_with_protocol.xml +1 -0
  334. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/nfe/nf_3_without_protocol.xml +1 -0
  335. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/original_xml/lot.xml +2 -0
  336. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/original_xml/nfe.xml +2 -0
  337. data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/original_xml/nfeProc.xml +4 -0
  338. data/test/fixtures/product/response/v3.10/nfe_status_servico/fail.xml +23 -0
  339. data/test/fixtures/product/response/v3.10/nfe_status_servico/success.xml +22 -0
  340. data/test/fixtures/product/schemas/CCe_v1.00.xsd +11 -0
  341. data/test/fixtures/product/schemas/EPEC_v1.00.xsd +9 -0
  342. data/test/fixtures/product/schemas/LeiauteCadastroEmissorDFe_v1.01.xsd +234 -0
  343. data/test/fixtures/product/schemas/SuframaInternaliza_v1.00.xsd +9 -0
  344. data/test/fixtures/product/schemas/SuframaVistoria_v1.00.xsd +9 -0
  345. data/test/fixtures/product/schemas/atuCadEmiDFe_v1.01.xsd +9 -0
  346. data/test/fixtures/product/schemas/cabecMsg_v1.02.xsd +29 -0
  347. data/test/fixtures/product/schemas/cadEmiDFe_v1.01.xsd +9 -0
  348. data/test/fixtures/product/schemas/cancNFe_v2.00.xsd +9 -0
  349. data/test/fixtures/product/schemas/confRecebto_v1.00.xsd +9 -0
  350. data/test/fixtures/product/schemas/consCad_v2.00.xsd +9 -0
  351. data/test/fixtures/product/schemas/consDPEC_v1.01.xsd +9 -0
  352. data/test/fixtures/product/schemas/consNFeDest_v1.01.xsd +10 -0
  353. data/test/fixtures/product/schemas/consReciNFe_v2.00.xsd +9 -0
  354. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/consReciNFe_v3.10.xsd +8 -8
  355. data/test/fixtures/product/schemas/consSitNFe_v2.01.xsd +10 -0
  356. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/consSitNFe_v3.10.xsd +8 -8
  357. data/test/fixtures/product/schemas/consStatServ_v2.00.xsd +9 -0
  358. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/consStatServ_v3.10.xsd +8 -8
  359. data/test/fixtures/product/schemas/distDFeInt_v1.00.xsd +71 -0
  360. data/test/fixtures/product/schemas/downloadNFe_v1.00.xsd +10 -0
  361. data/test/fixtures/product/schemas/e110110_v1.00.xsd +58 -0
  362. data/test/fixtures/product/schemas/e110111_v1.00.xsd +42 -0
  363. data/test/fixtures/product/schemas/e110140_v1.00.xsd +124 -0
  364. data/test/fixtures/product/schemas/e111500_v1.00.xsd +69 -0
  365. data/test/fixtures/product/schemas/e111501_v1.00.xsd +69 -0
  366. data/test/fixtures/product/schemas/e111502_v1.00.xsd +50 -0
  367. data/test/fixtures/product/schemas/e111503_v1.00.xsd +50 -0
  368. data/test/fixtures/product/schemas/e210200_v1.00.xsd +32 -0
  369. data/test/fixtures/product/schemas/e210210_v1.00.xsd +32 -0
  370. data/test/fixtures/product/schemas/e210220_v1.00.xsd +45 -0
  371. data/test/fixtures/product/schemas/e210240_v1.00.xsd +44 -0
  372. data/test/fixtures/product/schemas/e411500_v1.00.xsd +134 -0
  373. data/test/fixtures/product/schemas/e411501_v1.00.xsd +134 -0
  374. data/test/fixtures/product/schemas/e411502_v1.00.xsd +95 -0
  375. data/test/fixtures/product/schemas/e411503_v1.00.xsd +95 -0
  376. data/test/fixtures/product/schemas/e990900_v1.00.xsd +87 -0
  377. data/test/fixtures/product/schemas/e990910_v1.00.xsd +81 -0
  378. data/test/fixtures/product/schemas/envCCe_v1.00.xsd +10 -0
  379. data/test/fixtures/product/schemas/envCancelPProrrogNFe_v1.0.xsd +50 -0
  380. data/test/fixtures/product/schemas/envConfRecebto_v1.00.xsd +9 -0
  381. data/test/fixtures/product/schemas/envDPEC_v1.01.xsd +9 -0
  382. data/test/fixtures/product/schemas/envEPEC_v1.00.xsd +9 -0
  383. data/test/fixtures/product/schemas/envEventoCancNFe_v1.00.xsd +9 -0
  384. data/test/fixtures/product/schemas/envEvento_v1.00.xsd +9 -0
  385. data/test/fixtures/product/schemas/envFiscoNfe_v1.0.xsd +179 -0
  386. data/test/fixtures/product/schemas/envPProrrogNFe_v1.0.xsd +65 -0
  387. data/test/fixtures/product/schemas/envRemIndus_v1.00.xsd +9 -0
  388. data/test/fixtures/product/schemas/envSuframaInternaliza_v1.00.xsd +10 -0
  389. data/test/fixtures/product/schemas/envSuframaVistoria_v1.00.xsd +10 -0
  390. data/test/fixtures/product/schemas/enviNFe_v2.00.xsd +9 -0
  391. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/enviNFe_v3.10.xsd +8 -8
  392. data/test/fixtures/product/schemas/eventoCancNFe_v1.00.xsd +9 -0
  393. data/test/fixtures/product/schemas/eventoEPEC_v0.01.xsd +267 -0
  394. data/test/fixtures/product/schemas/eventoEPEC_v1.00.xsd +267 -0
  395. data/test/fixtures/product/schemas/eventoRemIndus_v1.00.xsd +9 -0
  396. data/test/fixtures/product/schemas/inutNFe_v2.00.xsd +9 -0
  397. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/inutNFe_v3.10.xsd +8 -8
  398. data/test/fixtures/product/schemas/leiauteCCe_v1.00.xsd +418 -0
  399. data/test/fixtures/product/schemas/leiauteCancNFe_v2.00.xsd +143 -0
  400. data/test/fixtures/product/schemas/leiauteConfRecebto_v1.00.xsd +406 -0
  401. data/test/fixtures/product/schemas/leiauteConsNFeDest_v1.01.xsd +483 -0
  402. data/test/fixtures/product/schemas/leiauteConsSitNFe_v2.01.xsd +548 -0
  403. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/leiauteConsSitNFe_v3.10.xsd +502 -502
  404. data/test/fixtures/product/schemas/leiauteConsStatServ_v2.00.xsd +98 -0
  405. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/leiauteConsStatServ_v3.10.xsd +97 -97
  406. data/test/fixtures/product/schemas/leiauteConsultaCadastro_v1.01.xsd +355 -0
  407. data/test/fixtures/product/schemas/leiauteConsultaCadastro_v2.00.xsd +404 -0
  408. data/test/fixtures/product/schemas/leiauteDPEC_v1.01.xsd +464 -0
  409. data/test/fixtures/product/schemas/leiauteDownloadNFe_v1.00.xsd +149 -0
  410. data/test/fixtures/product/schemas/leiauteEPEC_v1.00.xsd +459 -0
  411. data/test/fixtures/product/schemas/leiauteEventoCancNFe_v1.00.xsd +394 -0
  412. data/test/fixtures/product/schemas/leiauteEvento_v1.00.xsd +373 -0
  413. data/test/fixtures/product/schemas/leiauteInutNFe_v2.00.xsd +193 -0
  414. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/leiauteInutNFe_v3.10.xsd +192 -192
  415. data/test/fixtures/product/schemas/leiauteNFe_v2.00.xsd +6661 -0
  416. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/leiauteNFe_v3.10.xsd +6060 -6060
  417. data/test/fixtures/product/schemas/leiauteRemIndus_v1.00.xsd +382 -0
  418. data/test/fixtures/product/schemas/leiauteSRE_v1.00.xsd +372 -0
  419. data/test/fixtures/product/schemas/leiauteSuframaInternaliza_v1.00.xsd +642 -0
  420. data/test/fixtures/product/schemas/leiauteSuframaVistoria_v1.00.xsd +648 -0
  421. data/test/fixtures/product/schemas/nfe_v2.00.xsd +9 -0
  422. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/nfe_v3.10.xsd +8 -8
  423. data/test/fixtures/product/schemas/procCCeNFe_v1.00.xsd +10 -0
  424. data/test/fixtures/product/schemas/procCancNFe_v2.00.xsd +9 -0
  425. data/test/fixtures/product/schemas/procConfRecebtoNFe_v1.00.xsd +9 -0
  426. data/test/fixtures/product/schemas/procEPEC_v1.00.xsd +9 -0
  427. data/test/fixtures/product/schemas/procEventoCancNFe_v1.00.xsd +9 -0
  428. data/test/fixtures/product/schemas/procEventoNFe_v1.00.xsd +9 -0
  429. data/test/fixtures/product/schemas/procEventoNFe_v99.99.xsd +37 -0
  430. data/test/fixtures/product/schemas/procInutNFe_v2.00.xsd +9 -0
  431. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/procInutNFe_v3.10.xsd +8 -8
  432. data/test/fixtures/product/schemas/procNFe_v2.00.xsd +9 -0
  433. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/procNFe_v3.10.xsd +8 -8
  434. data/test/fixtures/product/schemas/procRemIndus_v1.00.xsd +9 -0
  435. data/test/fixtures/product/schemas/resEvento_v1.00.xsd +94 -0
  436. data/test/fixtures/product/schemas/resNFe_v1.00.xsd +110 -0
  437. data/test/fixtures/product/schemas/retAtuCadEmiDFe_v1.01.xsd +9 -0
  438. data/test/fixtures/product/schemas/retCancNFe_v2.00.xsd +9 -0
  439. data/test/fixtures/product/schemas/retConsCad_v2.00.xsd +9 -0
  440. data/test/fixtures/product/schemas/retConsDPEC_v1.01.xsd +9 -0
  441. data/test/fixtures/product/schemas/retConsReciNFe_v2.00.xsd +9 -0
  442. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/retConsReciNFe_v3.10.xsd +8 -8
  443. data/test/fixtures/product/schemas/retConsSitNFe_v2.01.xsd +10 -0
  444. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/retConsSitNFe_v3.10.xsd +8 -8
  445. data/test/fixtures/product/schemas/retConsStatServ_v2.00.xsd +9 -0
  446. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/retConsStatServ_v3.10.xsd +8 -8
  447. data/test/fixtures/product/schemas/retDPEC_v1.01.xsd +9 -0
  448. data/test/fixtures/product/schemas/retDistDFeInt_v1.00.xsd +84 -0
  449. data/test/fixtures/product/schemas/retDownloadNFe_v1.00.xsd +9 -0
  450. data/test/fixtures/product/schemas/retEnvCCe_v1.00.xsd +10 -0
  451. data/test/fixtures/product/schemas/retEnvCancelPProrrogNFe_v1.0.xsd +231 -0
  452. data/test/fixtures/product/schemas/retEnvConfRecebto_v1.00.xsd +9 -0
  453. data/test/fixtures/product/schemas/retEnvEPEC_v1.00.xsd +9 -0
  454. data/test/fixtures/product/schemas/retEnvEventoCancNFe_v1.00.xsd +9 -0
  455. data/test/fixtures/product/schemas/retEnvEvento_v1.00.xsd +9 -0
  456. data/test/fixtures/product/schemas/retEnvFiscoNFe_v1.0.xsd +234 -0
  457. data/test/fixtures/product/schemas/retEnvRemIndus_v1.00.xsd +9 -0
  458. data/test/fixtures/product/schemas/retEnvSuframaInternaliza_v1.00.xsd +9 -0
  459. data/test/fixtures/product/schemas/retEnvSuframaVistoria_v1.00.xsd +9 -0
  460. data/test/fixtures/product/schemas/retEnviNFe_v2.00.xsd +9 -0
  461. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/retEnviNFe_v3.10.xsd +8 -8
  462. data/test/fixtures/product/schemas/retEventoEPEC_v0.01.xsd +207 -0
  463. data/test/fixtures/product/schemas/retInutNFe_v2.00.xsd +9 -0
  464. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/retInutNFe_v3.10.xsd +8 -8
  465. data/test/fixtures/product/schemas/retPProrrogNFe_v1.0.xsd +233 -0
  466. data/test/fixtures/product/schemas/retconsNFeDest_v1.01.xsd +9 -0
  467. data/test/fixtures/product/schemas/tiposBasico_v1.03.xsd +816 -0
  468. data/test/fixtures/product/schemas/tiposBasico_v1.03_OPENSSL.xsd +816 -0
  469. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/tiposBasico_v3.10.xsd +571 -571
  470. data/test/fixtures/product/schemas/tiposBasico_v3.10_OPENSSL.xsd +877 -0
  471. data/test/fixtures/product/schemas/tiposDistDFe_v1.00.xsd +217 -0
  472. data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/xmldsig-core-schema_v1.01.xsd +97 -97
  473. data/test/fixtures/product/wsdl/NFeRetAutorizacao.xml +80 -0
  474. data/test/fixtures/product/wsdl/NfeAutorizacao.xml +107 -0
  475. data/test/fixtures/product/wsdl/NfeConsulta2.xml +80 -0
  476. data/test/fixtures/product/wsdl/NfeStatusServico2.xml +70 -0
  477. data/test/fixtures/product/wsdl/nfeinutilizacao2.xml +80 -0
  478. data/test/fixtures/service/wsdl/betha/v1/cancelar_nfse.xml +178 -0
  479. data/test/fixtures/service/wsdl/betha/v1/consultar_lote_rps.xml +339 -0
  480. data/test/fixtures/service/wsdl/betha/v1/consultar_nfse.xml +348 -0
  481. data/test/fixtures/service/wsdl/betha/v1/consultar_nfse_por_rps.xml +365 -0
  482. data/test/fixtures/service/wsdl/betha/v1/consultar_situacao_lote_rps.xml +74 -0
  483. data/test/fixtures/service/wsdl/betha/v1/recepcionar_lote_rps.xml +299 -0
  484. data/test/fixtures/service/wsdl/simpliss/v1/nfseservice.xml +1 -0
  485. data/test/fixtures/service/wsdl/thema/v1/nfse_cancelamento.xml +82 -0
  486. data/test/fixtures/service/wsdl/thema/v1/nfse_consulta.xml +235 -0
  487. data/test/fixtures/service/wsdl/thema/v1/nfse_remessa.xml +185 -0
  488. data/test/test_helper.rb +369 -1
  489. metadata +711 -33
  490. data/lib/br_nfe/product/base.rb +0 -82
  491. data/lib/br_nfe/product/consulta_status_servico.rb +0 -35
  492. data/lib/br_nfe/product/value_nf.rb +0 -9
  493. data/lib/br_nfe/product/xml/v3_10/consulta_status_servico.xml.slim +0 -4
  494. data/test/br_nfe/product/base_test.rb +0 -150
  495. data/test/br_nfe/product/consulta_status_servico_test.rb +0 -59
@@ -0,0 +1,255 @@
1
+ module BrNfe
2
+ module Product
3
+ module Operation
4
+ class Base < BrNfe::Base
5
+ include NfXmlValue
6
+
7
+ # Serve para saber se vai usar o módo de contingência, e se usar,
8
+ # serve para saber qual o tipo de contingência será utilizado.
9
+ # Options: [:normal, :svc]
10
+ #
11
+ # <b>Required: </b> _Yes_
12
+ # <b>Default: </b> _:normal_
13
+ #
14
+ attr_accessor :tipo_emissao
15
+
16
+ # Informações que devem ser informadas quando a operação for em contingência.
17
+ #
18
+ attr_accessor :motivo_contingencia
19
+ attr_accessor :inicio_contingencia # Data e hora do início da contingência
20
+ def inicio_contingencia
21
+ convert_to_time(@inicio_contingencia)
22
+ end
23
+
24
+ # String XML que será aplicado o resultado da resposta do serviço
25
+ # de acordo com a operação.
26
+ # Por exemplo, quando vai consultar o protocolo da emissão de uma nfe,
27
+ # deve ser passado por parâmetro o XML da NF-e para que seja possível obter
28
+ # o XML da nota fiscal junto com o protocolo de autorização.
29
+ # Também quando for cancelar uma nota fiscal deve passar o XML da nota para
30
+ # que seja adicionado o protocolo de confirmação de cancelamento junto a nota.
31
+ #
32
+ # <b>Required: </b> _No_
33
+ # <b>Type: </b> _String_ XML
34
+ #
35
+ attr_accessor :original_xml
36
+
37
+ validates :tipo_emissao, inclusion: {in: [:normal, :svc]}
38
+ validates :inicio_contingencia, presence: true, if: :contingencia?
39
+ validates :motivo_contingencia, length: { minimum: 15, maximum: 256 }, if: :contingencia?
40
+
41
+ def default_values
42
+ {
43
+ tipo_emissao: :normal,
44
+ }
45
+ end
46
+
47
+ def certificado_obrigatorio?
48
+ true
49
+ end
50
+
51
+ # Para as Notas fiscais de produto a autenticação via SSL é obrigatória
52
+ def ssl_request?
53
+ true
54
+ end
55
+
56
+ # O Gateway é responsável de identificar o Webservice de acordo com o Estado(UF).
57
+ # Irá identificar o webservice através do valor do método `ibge_code_of_issuer_uf`,
58
+ # na qual pode ser setado diretamente ou pego através do endereço do emissor.
59
+ # Para ver a lista de WebService por estado acesse: http://www.nfe.fazenda.gov.br/portal/webServices.aspx
60
+ #
61
+ # <b>Tipo de retorno: </b> _Object (Gateway::Base ou derivados)_
62
+ #
63
+ def gateway
64
+ @gateway ||= case tipo_emissao
65
+ when :normal
66
+ get_gateway_by_normal_operation
67
+ when :svc
68
+ get_gateway_by_svc_operation
69
+ end
70
+ end
71
+
72
+ # WebServices utilizados para contingência em SVC (Servidor Virtual de Contingência)
73
+ # Existe 2 servidores de contingência para SVC: O `SVC-AN` e `SVC-RS`
74
+ # Cada estado(UF) é autorizado a emitir notas em contingência em apenas 1 dos servidores.
75
+ # Esse método é responsável em setar qual o WebService será utilizado para cada UF.
76
+ #
77
+ # <b>Tipo de retorno: </b> _Object (::WebServiceSvcRS ou ::WebServiceSvcAN)_
78
+ #
79
+ def get_gateway_by_svc_operation
80
+ case ibge_code_of_issuer_uf
81
+ # 'AM', 'BA', 'CE', 'GO', 'MA', 'MS', 'MT', 'PA', 'PE', 'PI', 'PR'
82
+ when '13', '29', '23', '52', '21', '50', '51', '15', '26', '22', '41'
83
+ BrNfe::Product::Gateway::WebServiceSvcRS.new({env: env})
84
+ else # AC, AL, AP, DF, ES, MG, PB, RJ, RN, RO, RR, RS, SC, SE, SP, TO
85
+ BrNfe::Product::Gateway::WebServiceSvcAN.new({env: env})
86
+ end
87
+ end
88
+
89
+ # Seta o WebService quando o tipo de emissão for normal para cada UF
90
+ #
91
+ # <b>Tipo de retorno: </b> _Object (Gateway::Base ou derivados)_
92
+ #
93
+ def get_gateway_by_normal_operation
94
+ case ibge_code_of_issuer_uf
95
+ when '13'
96
+ BrNfe::Product::Gateway::WebServiceAM.new({env: env})
97
+ when '29'
98
+ BrNfe::Product::Gateway::WebServiceBA.new({env: env})
99
+ when '23'
100
+ BrNfe::Product::Gateway::WebServiceCE.new({env: env})
101
+ when '52'
102
+ BrNfe::Product::Gateway::WebServiceGO.new({env: env})
103
+ when '31'
104
+ BrNfe::Product::Gateway::WebServiceMG.new({env: env})
105
+ when '50'
106
+ BrNfe::Product::Gateway::WebServiceMS.new({env: env})
107
+ when '51'
108
+ BrNfe::Product::Gateway::WebServiceMT.new({env: env})
109
+ when '26'
110
+ BrNfe::Product::Gateway::WebServicePE.new({env: env})
111
+ when '41'
112
+ BrNfe::Product::Gateway::WebServicePR.new({env: env})
113
+ when '43'
114
+ BrNfe::Product::Gateway::WebServiceRS.new({env: env})
115
+ when '35'
116
+ BrNfe::Product::Gateway::WebServiceSP.new({env: env})
117
+ when '21', '15', '22'
118
+ BrNfe::Product::Gateway::WebServiceSVAN.new({env: env})
119
+ else
120
+ BrNfe::Product::Gateway::WebServiceSVRS.new({env: env})
121
+ end
122
+ end
123
+
124
+ # Valor utilizado para inserir a url do xmlns nas tags nfeCabecMsg e nfeDadosMsg.
125
+ # Como a url pode variar de acordo com o tipo de serviço e UF, deve ser sobrescrita
126
+ # na subclass de cada serviço.
127
+ #
128
+ # <b>Tipo de retorno: </b> _String_
129
+ #
130
+ def url_xmlns
131
+ raise "O método #url_xmlns deve ser implementar em cada operação"
132
+ end
133
+
134
+ # Irá retornar a versão setada de acordo com o serviço e estado.
135
+ # Deve ser sobrescrito para cada serviço e irá pegar a versão do XML
136
+ # de acordo com o Estado e Serviço, conforme descrito em: http://www.nfe.fazenda.gov.br/portal/webServices.aspx
137
+ #
138
+ # <b>Tipo de retorno: </b> _Symbol_
139
+ #
140
+ def gateway_xml_version
141
+ raise "O método #gateway_xml_version deve ser implementar em cada operação"
142
+ end
143
+
144
+ # Versão do XML utilizado na requisição.
145
+ # Como a versão do XML pode divergir para cada estado/servidor e serviço,
146
+ # é necessário passar a versão do XML na requisição para o servidor saber qual
147
+ # validação aplicar e como pegar os dados.
148
+ # Esse método tem o intuíto de pegar a versão setada no Gateway de cada UF e serviço
149
+ # e transformar em uma String aplicável no XML.
150
+ # Exemplo:
151
+ # Se a versão do xml for :v3_10
152
+ # Esse método irá transformar o valor em '3.10'
153
+ #
154
+ # <b>Tipo de retorno: </b> _String_
155
+ #
156
+ def xml_version
157
+ "#{gateway_xml_version}".gsub('_','.').gsub(/[^\d\.]/,'')
158
+ end
159
+
160
+ # Declaro que o método `render_xml` irá verificar os arquivos também presentes
161
+ # nos diretórios especificados.
162
+ # O diretório dos XMLs irá variar de acordo com a operação e a versão do XML utilizado.
163
+ # EX:
164
+ # Se a versão do XML que a operação utiliza for a versão 2.0, então irá procurar o arquivo
165
+ # XML primeiro no diretório da v2, caso não encontre vai procurar no diretório da v1.
166
+ # Já se a versão do XML for a versão 3.1, irá procurar primeiro no diretório v3_10,
167
+ # se não contrar irá procurar no diretório da v2_00, e se ainda assim não encontrar, vai procurar
168
+ # no diretório v1_00.
169
+ # Foi construido dessa forma pois algumas tags utilizadas na v3.10 são exatamente iguais
170
+ # da v2.0, e nesse caso não há a necessidade de duplicar o código.
171
+ #
172
+ # <b>Tipo de retorno: </b> _Array_
173
+ def xml_current_dir_path
174
+ return @xml_current_dir_path if @xml_current_dir_path.present?
175
+ paths = ["#{BrNfe.root}/lib/br_nfe/product/xml/v1_00"] # Sempre terá o path da v1_00
176
+ paths << "#{BrNfe.root}/lib/br_nfe/product/xml/v1_10" if gateway_xml_version >= :v1_10
177
+ paths << "#{BrNfe.root}/lib/br_nfe/product/xml/v2_00" if gateway_xml_version >= :v2_00
178
+ paths << "#{BrNfe.root}/lib/br_nfe/product/xml/v2_01" if gateway_xml_version >= :v2_01
179
+ paths << "#{BrNfe.root}/lib/br_nfe/product/xml/v3_10" if gateway_xml_version == :v3_10
180
+
181
+ @xml_current_dir_path = paths.reverse+["#{BrNfe.root}/lib/br_nfe/product/xml"]+super
182
+ end
183
+
184
+ # Método utilizado para saber se a operação será em contingência.
185
+ #
186
+ # <b>Tipo de retorno: </b> _Boolean_
187
+ #
188
+ def contingencia?
189
+ tipo_emissao != :normal
190
+ end
191
+
192
+ # Código do Tipo de Emissão da NF-e
193
+ # ✓ 1=Emissão normal (não em contingência);
194
+ # ✕ 2=Contingência FS-IA, com impressão do DANFE em formulário de segurança;
195
+ # ✕ 3=Contingência SCAN (Sistema de Contingência do Ambiente Nacional);
196
+ # ✕ 4=Contingência DPEC (Declaração Prévia da Emissão em Contingência);
197
+ # ✕ 5=Contingência FS-DA, com impressão do DANFE em formulário de segurança;
198
+ # ✓ 6=Contingência SVC-AN (SEFAZ Virtual de Contingência do AN);
199
+ # ✓ 7=Contingência SVC-RS (SEFAZ Virtual de Contingência do RS);
200
+ # ✓ 9=Contingência off-line da NFC-e (as demais opções de contingência são válidas
201
+ # também para a NFC-e).
202
+ # Para a NFC-e somente estão disponíveis e são válidas as opções de contingência 5 e 9.
203
+ def codigo_tipo_emissao(nfe)
204
+ return 9 if nfe.nfce?
205
+ case tipo_emissao
206
+ when :normal
207
+ 1
208
+ when :svc
209
+ if gateway.is_a?(BrNfe::Product::Gateway::WebServiceSvcAN) # SVC-AN
210
+ 6
211
+ else # SVC-RS
212
+ 7
213
+ end
214
+ end
215
+ end
216
+
217
+ def request
218
+ @savon_response = client_wsdl.call(method_wsdl, xml: soap_xml)
219
+ rescue Savon::SOAPFault => error
220
+ return @response = response_class_builder.new.response_class.new(request_status: :soap_error, request_message_error: error.message)
221
+ rescue Savon::HTTPError => error
222
+ return @response = response_class_builder.new.response_class.new(request_status: :http_error, request_message_error: error.message)
223
+ rescue Exception => error
224
+ return @response = response_class_builder.new.response_class.new(request_status: :unknown_error, request_message_error: error.message)
225
+ end
226
+
227
+ def response
228
+ @response ||= get_response
229
+ end
230
+
231
+ private
232
+ def emitente_class
233
+ BrNfe.emitente_product_class
234
+ end
235
+
236
+ def response_class_builder
237
+ raise NotImplementedError.new("Not implemented #response_class_builder in #{self}.")
238
+ end
239
+
240
+ def builder_response_params
241
+ {}
242
+ end
243
+
244
+ def get_response
245
+ builder = response_class_builder.new do |builder|
246
+ builder.savon_response = @savon_response
247
+ builder.operation = self
248
+ end
249
+ builder.assign_attributes(builder_response_params)
250
+ builder.response
251
+ end
252
+ end
253
+ end
254
+ end
255
+ end
@@ -0,0 +1,118 @@
1
+ module BrNfe
2
+ module Product
3
+ module Operation
4
+ class NfeAutorizacao < Base
5
+
6
+ # NÚMERO DO LOTE
7
+ # Identificador de controle do envio do lote.
8
+ # Número sequencial autoincremental, de controle
9
+ # correspondente ao identificador único do lote
10
+ # enviado. A responsabilidade de gerar e controlar
11
+ # esse número é exclusiva do contribuinte.
12
+ #
13
+ # <b>Type: </b> _Number_
14
+ # <b>Required: </b> _Yes_
15
+ # <b>Example: </b> _20161230135547_
16
+ # <b>Length: </b> _max: 15_
17
+ # <b>tag: </b> idLote
18
+ #
19
+ attr_accessor :numero_lote
20
+ alias_attribute :idLote, :numero_lote
21
+
22
+ # INDICADOR DO PROCESSAMENTO SINCRONO OU ASINCRONO
23
+ # false = 0=Não. (Default)
24
+ # true = 1=Empresa solicita processamento síncrono do
25
+ # Lote de NF-e (sem a geração de Recibo para consulta futura);
26
+ #
27
+ # Nota: O processamento síncrono do Lote corresponde a entrega
28
+ # da resposta do processamento das NF-e do Lote, sem a geração
29
+ # de um Recibo de Lote para consulta futura. A resposta de forma
30
+ # síncrona pela SEFAZ Autorizadora só ocorrerá se:
31
+ # - a empresa solicitar e constar unicamente uma NF-e no Lote;
32
+ # - a SEFAZ Autorizadora implementar o processamento síncrono
33
+ # para a resposta do Lote de NF-e.
34
+ #
35
+ # <b>Type: </b> _Boolean_
36
+ # <b>Required: </b> _Yes_
37
+ # <b>Example: </b> _true_
38
+ # <b>Default: </b> _false_
39
+ # <b>tag: </b> indSinc
40
+ #
41
+ attr_accessor :sincrono
42
+ def sincrono
43
+ convert_to_boolean(@sincrono)
44
+ end
45
+ alias_attribute :indSinc, :sincrono
46
+
47
+ # Array com as notas fiscais a serem emitidas
48
+ # Pode ser adicionado os dados das notas fiscais em forma de `Hash` ou
49
+ # O próprio objeto da NF-e.
50
+ #
51
+ # Exemplo com Hash:
52
+ # self.notas_fiscais = [{serie: 1, numero_nf: 1143, ...},{serie: 1, numero_nf: 1144, ...}]
53
+ # self.notas_fiscais << {serie: 1, numero_nf: 1145, ...}
54
+ # self.notas_fiscais << {serie: 1, numero_nf: 1146, ...}
55
+ #
56
+ # Exemplo com Objetos:
57
+ # self.notas_fiscais = [BrNfe::Product::NotaFiscal.new({serie: 1, numero_nf: 1143, ...}),{serie: 1, numero_nf: 1144, ...}]
58
+ # self.notas_fiscais << BrNfe::Product::NotaFiscal.new({serie: 1, numero_nf: 1145, ...})
59
+ # self.notas_fiscais << {serie: 1, numero_nf: 1146, ...}
60
+ #
61
+ # Sempre vai retornar um Array de objetos da class configurada em `BrNfe.nota_fiscal_product_class`
62
+ #
63
+ # <b>Tipo: </b> _BrNfe.nota_fiscal_product_class (BrNfe::Product::NotaFiscal)_
64
+ # <b>Min: </b> _1_
65
+ # <b>Max: </b> _50_
66
+ # <b>Default: </b> _[]_
67
+ #
68
+ has_many :notas_fiscais, 'BrNfe.nota_fiscal_product_class'
69
+
70
+
71
+ validate_has_many :notas_fiscais, message: :invalid_invoice
72
+ validates :notas_fiscais, length: {in: 1..50}
73
+ validates :numero_lote, presence: true
74
+ validates :numero_lote, numericality: {only_integer: true}, allow_blank: true
75
+ validates :numero_lote, length: {maximum: 15}, allow_blank: true
76
+
77
+ # URL que será setada no atribto xmlns do XML;
78
+ # Ex:
79
+ # nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"
80
+ def url_xmlns
81
+ gateway.url_xmlns_autorizacao
82
+ end
83
+
84
+ # URL do webservice para enviar as informações.
85
+ # Ex:
86
+ # https://www.sefazvirtual.fazenda.gov.br/NfeInutilizacao2/NfeInutilizacao2.asmx?wsdl
87
+ def wsdl
88
+ gateway.wsdl_autorizacao
89
+ end
90
+
91
+ # Método SOAP que será chamado para enviar o XML
92
+ def method_wsdl
93
+ gateway.operation_autorizacao
94
+ end
95
+
96
+ # Versão utilizada pelo webservice do estado para determinada ação.
97
+ def gateway_xml_version
98
+ gateway.version_xml_autorizacao
99
+ end
100
+
101
+ # Versão SSL utilizada pelo webservice
102
+ def ssl_version
103
+ gateway.ssl_version_autorizacao
104
+ end
105
+
106
+ # XML que será enviado no body da requisição SOAP contendo as informações
107
+ # específicas de cada operação.
108
+ def xml_builder
109
+ @xml_builder ||= render_xml 'root/NfeAutorizacao'
110
+ end
111
+
112
+ def response_class_builder
113
+ BrNfe::Product::Response::Build::NfeAutorizacao
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,61 @@
1
+ module BrNfe
2
+ module Product
3
+ module Operation
4
+ class NfeConsultaProtocolo < Base
5
+ # CHAVE DE ACESSO DA NF-E.
6
+ #
7
+ # <b>Type: </b> _Number_
8
+ # <b>Required: </b> _Yes_
9
+ # <b>Example: </b> _42000082176983000186550000000000006313331836_
10
+ # <b>Length: </b> _44_
11
+ # <b>tag: </b> chNFe
12
+ #
13
+ attr_accessor :chave_nfe
14
+ alias_attribute :chNFe, :chave_nfe
15
+
16
+
17
+ validates :chave_nfe, presence: true
18
+ validates :chave_nfe, length: {is: 44}, allow_blank: true
19
+
20
+ # URL do webservice para enviar as informações.
21
+ # Ex:
22
+ # https://www.sefazvirtual.fazenda.gov.br/NfeInutilizacao2/NfeInutilizacao2.asmx?wsdl
23
+ def wsdl
24
+ gateway.wsdl_consulta_protocolo
25
+ end
26
+
27
+ # Método SOAP que será chamado para enviar o XML
28
+ def method_wsdl
29
+ gateway.operation_consulta_protocolo
30
+ end
31
+
32
+ # Versão utilizada pelo webservice do estado para determinada ação.
33
+ def gateway_xml_version
34
+ gateway.version_xml_consulta_protocolo
35
+ end
36
+
37
+ # URL que será setada no atribto xmlns do XML;
38
+ # Ex:
39
+ # nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"
40
+ def url_xmlns
41
+ gateway.url_xmlns_consulta_protocolo
42
+ end
43
+
44
+ # Versão SSL utilizada pelo webservice
45
+ def ssl_version
46
+ gateway.ssl_version_consulta_protocolo
47
+ end
48
+
49
+ # XML que será enviado no body da requisição SOAP contendo as informações
50
+ # específicas de cada operação.
51
+ def xml_builder
52
+ @xml_builder ||= render_xml 'root/NfeConsultaProtocolo'
53
+ end
54
+
55
+ def response_class_builder
56
+ BrNfe::Product::Response::Build::NfeConsultaProtocolo
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,86 @@
1
+ module BrNfe
2
+ module Product
3
+ module Operation
4
+ class NfeDownloadNf < Base
5
+ # UTILIZADO PARA FORÇAR A UTILIZAÇÃO DE OUTRO GATEWAY
6
+ # O Gateway padrão da GEM para o download da NF é o
7
+ # webservice do AN(Ambiente Nacional) (Exceto para o estado do
8
+ # Ceará(CE), na qual possui url própria para download da NF).
9
+ # Outro Webservice que pode ser utilizado é do SVAN (Servidor Virtual do
10
+ # Ambiente Nacional).
11
+ # Pode ser modificado o servidor passando o attr :force_gateway com
12
+ # um dos seguintes valores:
13
+ # - :SVAN - Na qual irá forçar o uso do Servidor Virtual do Ambiente Nacional
14
+ # - :AN - Na qual irá forçar o uso do Ambiente Nacional (apenas para o estado
15
+ # do Ceará, já que esse é o servidor padrão para os demais estados)
16
+ #
17
+ # <b>Type: </b> _Symbol_
18
+ # <b>Required: </b> _No_
19
+ # <b>Example: </b> _:SVAN_
20
+ # <b>Default: </b> _nil_
21
+ #
22
+ attr_accessor :force_gateway
23
+ def force_gateway=(value)
24
+ @force_gateway = "#{value}".to_sym
25
+ end
26
+
27
+ # CHAVE DE ACESSO DA NF-E.
28
+ #
29
+ # <b>Type: </b> _Number_
30
+ # <b>Required: </b> _Yes_
31
+ # <b>Example: </b> _42000082176983000186550000000000006313331836_
32
+ # <b>Length: </b> _44_
33
+ # <b>tag: </b> chNFe
34
+ #
35
+ attr_accessor :chave_nfe
36
+ alias_attribute :chNFe, :chave_nfe
37
+
38
+ validates :chave_nfe, presence: true
39
+ validates :chave_nfe, length: {is: 44}
40
+
41
+ def gateway
42
+ @gateway ||= case force_gateway
43
+ when :SVAN
44
+ BrNfe::Product::Gateway::WebServiceSVAN.new({env: env})
45
+ when :AN
46
+ BrNfe::Product::Gateway::Base.new({env: env})
47
+ else
48
+ super
49
+ end
50
+ end
51
+
52
+
53
+ # URL do webservice para enviar as informações.
54
+ def wsdl
55
+ gateway.wsdl_download_nf
56
+ end
57
+
58
+ # Método SOAP que será chamado para enviar o XML
59
+ def method_wsdl
60
+ gateway.operation_download_nf
61
+ end
62
+
63
+ # Versão utilizada pelo webservice do estado para determinada ação.
64
+ def gateway_xml_version
65
+ gateway.version_xml_download_nf
66
+ end
67
+
68
+ # URL que será setada no atribto xmlns do XML;
69
+ def url_xmlns
70
+ gateway.url_xmlns_download_nf
71
+ end
72
+
73
+ # Versão SSL utilizada pelo webservice
74
+ def ssl_version
75
+ gateway.ssl_version_download_nf
76
+ end
77
+
78
+ # XML que será enviado no body da requisição SOAP contendo as informações
79
+ # específicas de cada operação.
80
+ def xml_builder
81
+ @xml_builder ||= render_xml 'root/NfeDownloadNf'
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,168 @@
1
+ module BrNfe
2
+ module Product
3
+ module Operation
4
+ class NfeInutilizacao < Base
5
+
6
+ # Identificador da TAG a ser assinada formada com:
7
+ # 01-02 = Literal 'ID' (2 posições) +
8
+ # 03-04 = Código da UF (2 posições) +
9
+ # 05-06 = Ano (2 posições) +
10
+ # 07-20 = CNPJ (14 posições) +
11
+ # 21-22 = modelo (2 posições) +
12
+ # 23-25 = série (3 posições) +
13
+ # 26-34 = Numeração inicial (9 posições) +
14
+ # 35-43 = Numeração final (9 posições)
15
+ #
16
+ # <b>Type: </b> _Number_
17
+ # <b>Required: </b> _Yes_
18
+ # <b>Example: </b> _ID41140616149400017255001000000002000000002_
19
+ # <b>Length: </b> _43_
20
+ # <b>tag: </b> Id
21
+ #
22
+ attr_accessor :chave
23
+ def chave
24
+ @chave = generate_key if @chave.blank?
25
+ @chave
26
+ end
27
+ alias_attribute :Id, :chave
28
+
29
+ # ANO DE INUTILIZAÇÃO DA NUMERAÇÃO
30
+ #
31
+ # <b>Type: </b> _Number_
32
+ # <b>Required: </b> _Yes_
33
+ # <b>Example: </b> _17_
34
+ # <b>Length: </b> _2_
35
+ # <b>tag: </b> Id
36
+ #
37
+ attr_accessor :ano
38
+
39
+ # Código do Modelo do Documento Fiscal
40
+ # 55=NF-e emitida em substituição ao modelo 1 ou 1A; (Default)
41
+ # 65=NFC-e, utilizada nas operações de venda no varejo (a critério da UF aceitar este modelo de documento).
42
+ #
43
+ # <b>Type: </b> _Number_
44
+ # <b>Required: </b> _Yes_
45
+ # <b>Default: </b> _55_
46
+ # <b>Length: </b> _2_
47
+ # <b>tag: </b> mod
48
+ #
49
+ attr_accessor :modelo_nf
50
+ alias_attribute :mod, :modelo_nf
51
+
52
+ # Série da NF-e
53
+ #
54
+ # <b>Type: </b> _Number_
55
+ # <b>Required: </b> _Yes_
56
+ # <b>Default: </b> _nil_
57
+ # <b>Length: </b> _max: 3_
58
+ # <b>tag: </b> serie
59
+ #
60
+ attr_accessor :serie
61
+
62
+ # Número da NF-e inicial a ser inutilizada
63
+ #
64
+ # <b>Type: </b> _Number_
65
+ # <b>Required: </b> _Yes_
66
+ # <b>Length: </b> _max: 9_
67
+ # <b>tag: </b> nNFIni
68
+ #
69
+ attr_accessor :numero_nf_inicial
70
+ alias_attribute :nNFIni, :numero_nf_inicial
71
+
72
+ # Número da NF-e final a ser inutilizada
73
+ #
74
+ # <b>Type: </b> _Number_
75
+ # <b>Required: </b> _Yes_
76
+ # <b>Default: </b> _self.numero_nf_inicial_
77
+ # <b>Length: </b> _max: 9_
78
+ # <b>tag: </b> nNFFin
79
+ #
80
+ attr_accessor :numero_nf_final
81
+ def numero_nf_final
82
+ @numero_nf_final ||= numero_nf_inicial
83
+ end
84
+ alias_attribute :nNFFin, :numero_nf_final
85
+
86
+ # Informar a justificativa do pedido de inutilização
87
+ #
88
+ # <b>Type: </b> _String_
89
+ # <b>Required: </b> _Yes_
90
+ # <b>Length: </b> _min: 15, max: 255_
91
+ # <b>tag: </b> xJust
92
+ #
93
+ attr_accessor :justificativa
94
+ alias_attribute :xJust, :justificativa
95
+
96
+ validates :chave, presence: true
97
+ validates :chave, length: {is: 43}, allow_blank: true
98
+ validates :ano, presence: true
99
+ validates :ano, length: {is: 2}, allow_blank: true
100
+
101
+ validates :modelo_nf, presence: true
102
+ validates :modelo_nf, inclusion: [55, 65, '55', '65']
103
+
104
+ validates :serie, presence: true
105
+ validates :serie, numericality: { only_integer: true }
106
+ validates :serie, length: { maximum: 3 }
107
+
108
+ validates :numero_nf_inicial, :numero_nf_final, presence: true
109
+ validates :numero_nf_inicial, :numero_nf_final, numericality: { only_integer: true }, allow_blank: true
110
+ validates :numero_nf_inicial, :numero_nf_final, length: { maximum: 9 }, allow_blank: true
111
+
112
+ validates :justificativa, length: { in: 15..255 }
113
+
114
+ # URL do webservice para enviar as informações.
115
+ # Ex:
116
+ # https://www.sefazvirtual.fazenda.gov.br/NfeInutilizacao2/NfeInutilizacao2.asmx?wsdl
117
+ def wsdl
118
+ gateway.wsdl_inutilizacao
119
+ end
120
+
121
+ # Método SOAP que será chamado para enviar o XML
122
+ def method_wsdl
123
+ gateway.operation_inutilizacao
124
+ end
125
+
126
+ # Versão utilizada pelo webservice do estado para determinada ação.
127
+ def gateway_xml_version
128
+ gateway.version_xml_inutilizacao
129
+ end
130
+
131
+ # URL que será setada no atribto xmlns do XML;
132
+ # Ex:
133
+ # nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"
134
+ def url_xmlns
135
+ gateway.url_xmlns_inutilizacao
136
+ end
137
+
138
+ # Versão SSL utilizada pelo webservice
139
+ def ssl_version
140
+ gateway.ssl_version_inutilizacao
141
+ end
142
+
143
+ # XML que será enviado no body da requisição SOAP contendo as informações
144
+ # específicas de cada operação.
145
+ def xml_builder
146
+ @xml_builder ||= render_xml 'root/NfeInutilizacao'
147
+ end
148
+ private
149
+
150
+ def response_class_builder
151
+ BrNfe::Product::Response::Build::NfeInutilizacao
152
+ end
153
+
154
+ def generate_key
155
+ key = 'ID'
156
+ key << ibge_code_of_issuer_uf # 03-04 = Código da UF (2 posições)
157
+ key << "#{ano}".rjust(2, '0') # 05-06 = Ano (2 posições) +
158
+ key << "#{emitente.cnpj}".rjust(14, '0') # 07-20 = CNPJ (14 posições) +
159
+ key << "#{modelo_nf}" # 21-22 = modelo (2 posições) +
160
+ key << "#{serie}".rjust(3, '0') # 23-25 = série (3 posições) +
161
+ key << "#{numero_nf_inicial}".rjust(9, '0')# 26-34 = Numeração inicial (9 posições) +
162
+ key << "#{numero_nf_final}".rjust(9, '0')# 35-43 = Numeração final (9 posições)
163
+ key
164
+ end
165
+ end
166
+ end
167
+ end
168
+ end