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,1173 @@
1
+ module BrNfe
2
+ module Product
3
+ class NotaFiscal < BrNfe::ActiveModelBase
4
+ # include BrNfe::Association::HaveCondicaoPagamento
5
+
6
+ # Identificação do emitente da NF-e
7
+ #
8
+ # <b>Type: </b> _BrNfe.emitente_product_class
9
+ # <b>Required: </b> _Yes_
10
+ # <b>tag: </b> emit
11
+ #
12
+ has_one :emitente, 'BrNfe.emitente_product_class', null: false
13
+ alias_attribute :emit, :emitente
14
+
15
+ # Identificação do Destinatário da NF-e
16
+ # Grupo obrigatório para a NF-e (modelo 55)
17
+ #
18
+ # <b>Type: </b> _BrNfe.destinatario_product_class_
19
+ # <b>Required: </b> _Yes_ (No if modelo_nf == 65)
20
+ # <b>tag: </b> dest
21
+ #
22
+ has_one :destinatario, 'BrNfe.destinatario_product_class', null: false
23
+ alias_attribute :dest, :destinatario
24
+
25
+ # Código do Tipo de Emissão da NF-e
26
+ # ✓ 1=Emissão normal (não em contingência);
27
+ # ✓ 6=Contingência SVC-AN (SEFAZ Virtual de Contingência do AN);
28
+ # ✓ 7=Contingência SVC-RS (SEFAZ Virtual de Contingência do RS);
29
+ # ✓ 9=Contingência off-line da NFC-e (as demais opções de contingência são válidas
30
+ # também para a NFC-e).
31
+ # Para a NFC-e somente estão disponíveis e são válidas as opções de contingência 5 e 9.
32
+ #
33
+ # <b>Type: </b> _Number_
34
+ # <b>Required: </b> _Yes_
35
+ # <b>Default: </b> _1_
36
+ # <b>Length: </b> _1_
37
+ # <b>tag: </b> tpEmis
38
+ #
39
+ attr_accessor :codigo_tipo_emissao
40
+ alias_attribute :tpEmis, :codigo_tipo_emissao
41
+
42
+
43
+ attr_accessor :chave_de_acesso
44
+
45
+ def chave_de_acesso_dv
46
+ chave_de_acesso[-1]
47
+ end
48
+ def chave_de_acesso_sem_dv
49
+ chave_de_acesso[0..-2]
50
+ end
51
+ def chave_de_acesso
52
+ @chave_de_acesso ||= gerar_chave_de_acesso!
53
+ end
54
+
55
+
56
+ # Código numérico que compõe a Chave de Acesso. Número aleatório gerado pelo
57
+ # emitente para cada NF-e para evitar acessos indevidos da NF-e.
58
+ # Resumo: É um código controlado pelo sistema. Pode por exemplo ser
59
+ # utilizado o ID da tabela da nota fiscal.
60
+ #
61
+ # <b>Type: </b> _Number_
62
+ # <b>Required: </b> _Yes_
63
+ # <b>Default: </b> _nil_
64
+ # <b>Length: </b> _max: 8_
65
+ # <b>tag: </b> cNF
66
+ #
67
+ attr_accessor :codigo_nf
68
+ alias_attribute :cNF, :codigo_nf
69
+
70
+
71
+ # Série do Documento Fiscal, preencher com zeros na hipótese
72
+ # de a NF-e não possuir série. (v2.0)
73
+ # Série 890-899: uso exclusivo para emissão de NF-e avulsa, pelo
74
+ # contribuinte com seu certificado digital, através do site do Fisco
75
+ # (procEmi=2). (v2.0)
76
+ # Serie 900-999: uso exclusivo de NF-e emitidas no SCAN. (v2.0)
77
+ #
78
+ # <b>Type: </b> _Number_
79
+ # <b>Required: </b> _Yes_
80
+ # <b>Default: </b> _nil_
81
+ # <b>Length: </b> _max: 3_
82
+ # <b>tag: </b> serie
83
+ #
84
+ attr_accessor :serie
85
+
86
+ # Número do Documento Fiscal.
87
+ # Número da nota fiscal De fato
88
+ #
89
+ # <b>Type: </b> _Number_
90
+ # <b>Required: </b> _Yes_
91
+ # <b>Default: </b> _nil_
92
+ # <b>Length: </b> _max: 9_
93
+ # <b>tag: </b> nNF
94
+ #
95
+ attr_accessor :numero_nf
96
+ alias_attribute :nNF, :numero_nf
97
+
98
+ # Descrição da Natureza da Operação
99
+ # Informar a natureza da operação de que decorrer a saída ou a
100
+ # entrada, tais como: venda, compra, transferência, devolução,
101
+ # importação, consignação, remessa (para fins de demonstração,
102
+ # de industrialização ou outra), conforme previsto na alínea 'i',
103
+ # inciso I, art. 19 do CONVÊNIO S/No, de 15 de dezembro de
104
+ # 1970.
105
+ #
106
+ # <b>Type: </b> _String_
107
+ # <b>Required: </b> _Yes_
108
+ # <b>Default: </b> _'Venda'_
109
+ # <b>tag: </b> natOp
110
+ #
111
+ attr_accessor :natureza_operacao
112
+ alias_attribute :natOp, :natureza_operacao
113
+
114
+ # Indicador da forma de pagamento
115
+ # 0=Pagamento à vista; (Default)
116
+ # 1=Pagamento a prazo;
117
+ # 2=Outros.
118
+ #
119
+ # <b>Type: </b> _Number_ OR _String_
120
+ # <b>Required: </b> _Yes_
121
+ # <b>Default: </b> _0_
122
+ # <b>Length: </b> _1_
123
+ # <b>tag: </b> indPag
124
+ #
125
+ attr_accessor :forma_pagamento
126
+ alias_attribute :indPag, :forma_pagamento
127
+
128
+ # Código do Modelo do Documento Fiscal
129
+ # 55=NF-e emitida em substituição ao modelo 1 ou 1A; (Default)
130
+ # 65=NFC-e, utilizada nas operações de venda no varejo (a critério da UF aceitar este modelo de documento).
131
+ #
132
+ # <b>Type: </b> _Number_ OR _String_
133
+ # <b>Required: </b> _Yes_
134
+ # <b>Default: </b> _55_
135
+ # <b>Length: </b> _2_
136
+ # <b>tag: </b> mod
137
+ #
138
+ attr_accessor :modelo_nf
139
+ alias_attribute :mod, :modelo_nf
140
+
141
+ # Data e hora de emissão do Documento Fiscal
142
+ #
143
+ # <b>Type: </b> _Time_
144
+ # <b>Required: </b> _Yes_
145
+ # <b>Default: </b> _Time.current_
146
+ # <b>tag: </b> dhEmi
147
+ #
148
+ attr_accessor :data_hora_emissao
149
+ def data_hora_emissao
150
+ convert_to_time(@data_hora_emissao)
151
+ end
152
+ alias_attribute :dhEmi, :data_hora_emissao
153
+
154
+ # Data e hora de Saída ou da Entrada da Mercadoria/Produto
155
+ # Campo não considerado para a NFC-e.
156
+ #
157
+ # <b>Type: </b> _Time_
158
+ # <b>Required: </b> _Yes_ (apenas para modelo 55)
159
+ # <b>Default: </b> _Time.current_
160
+ # <b>tag: </b> dhSaiEnt
161
+ #
162
+ attr_accessor :data_hora_expedicao
163
+ def data_hora_expedicao
164
+ convert_to_time(@data_hora_expedicao)
165
+ end
166
+ alias_attribute :dhSaiEnt, :data_hora_expedicao
167
+
168
+ # Tipo de Operação
169
+ # 0=Entrada;
170
+ # 1=Saída (Default)
171
+ #
172
+ # <b>Type: </b> _Number_ OR _String_
173
+ # <b>Required: </b> _Yes_
174
+ # <b>Default: </b> _1_
175
+ # <b>Length: </b> _1_
176
+ # <b>tag: </b> tpNF
177
+ #
178
+ attr_accessor :tipo_operacao
179
+ alias_attribute :tpNF, :tipo_operacao
180
+
181
+ # Formato de Impressão do DANFE
182
+ # 0=Sem geração de DANFE;
183
+ # 1=DANFE normal, Retrato; (Default)
184
+ # 2=DANFE normal, Paisagem;
185
+ # 3=DANFE Simplificado;
186
+ # 4=DANFE NFC-e;
187
+ # 5=DANFE NFC-e em mensagem eletrônica (o envio de mensagem eletrônica pode
188
+ # ser feita de forma simultânea com a impressão do DANFE; usar o tpImp=5
189
+ # quando esta for a única forma de disponibilização do DANFE).
190
+ #
191
+ # <b>Required: </b> _Yes_
192
+ # <b>Default: </b> _1_
193
+ # <b>tag: </b> tpEmis
194
+ #
195
+ attr_accessor :tipo_impressao
196
+ alias_attribute :tpEmis, :tipo_impressao
197
+
198
+ # Finalidade de emissão da NF-e
199
+ # 1=NF-e normal; (Default)
200
+ # 2=NF-e complementar;
201
+ # 3=NF-e de ajuste;
202
+ # 4=Devolução de mercadoria.
203
+ #
204
+ # <b>Required: </b> _Yes_
205
+ # <b>Default: </b> _1_
206
+ # <b>tag: </b> finNFe
207
+ #
208
+ attr_accessor :finalidade_emissao
209
+ alias_attribute :finNFe, :finalidade_emissao
210
+
211
+
212
+ # Indica operação com Consumidor final
213
+ # false=Normal;
214
+ # true=Consumidor final;
215
+ #
216
+ # Preencher esse campo com true ou false
217
+ #
218
+ # <b>Type: </b> _Boolean_
219
+ # <b>Required: </b> _Yes_
220
+ # <b>Default: </b> _false_
221
+ # <b>tag: </b> indFinal
222
+ #
223
+ attr_accessor :consumidor_final
224
+ def consumidor_final
225
+ convert_to_boolean(@consumidor_final)
226
+ end
227
+ alias_attribute :indFinal, :consumidor_final
228
+
229
+ # Indicador de presença do comprador no estabelecimento comercial no
230
+ # momento da operação:
231
+ # 0=Não se aplica (por exemplo, Nota Fiscal complementar ou de ajuste);
232
+ # 1=Operação presencial;
233
+ # 2=Operação não presencial, pela Internet;
234
+ # 3=Operação não presencial, Teleatendimento;
235
+ # 4=NFC-e em operação com entrega a domicílio;
236
+ # 9=Operação não presencial, outros. (Default)
237
+ #
238
+ # <b>Required: </b> _Yes_
239
+ # <b>Default: </b> _9_
240
+ # <b>tag: </b> indPres
241
+ #
242
+ attr_accessor :presenca_comprador
243
+ alias_attribute :indPres, :presenca_comprador
244
+
245
+ # Processo de emissão da NF-e
246
+ # 0=Emissão de NF-e com aplicativo do contribuinte; (Default)
247
+ # 1=Emissão de NF-e avulsa pelo Fisco;
248
+ # 2=Emissão de NF-e avulsa, pelo contribuinte com seu certificado digital, através do site do Fisco;
249
+ # 3=Emissão NF-e pelo contribuinte com aplicativo fornecido pelo Fisco.
250
+ #
251
+ # <b>Required: </b> _Yes_
252
+ # <b>Default: </b> _0_
253
+ # <b>tag: </b> procEmi
254
+ #
255
+ attr_accessor :processo_emissao
256
+ alias_attribute :procEmi, :processo_emissao
257
+
258
+ # Versão do Processo de emissão da NF-e
259
+ # Informar a versão do aplicativo emissor de NF-e.
260
+ #
261
+ # <b>Required: </b> _Yes_
262
+ # <b>Default: </b> _0_
263
+ # <b>tag: </b> verProc
264
+ #
265
+ attr_accessor :versao_aplicativo
266
+ alias_attribute :verProc, :versao_aplicativo
267
+
268
+ # Endereço da retirada da mercadoria
269
+ #
270
+ # <b>Type: </b> _BrNfe.endereco_class_
271
+ # <b>Required: </b> _No_
272
+ # <b>Default: </b> _nil_
273
+ # <b>tag: </b> retirada
274
+ #
275
+ has_one :endereco_retirada, 'BrNfe.endereco_class'
276
+ alias_attribute :retirada, :endereco_retirada
277
+
278
+ # CPF ou CNPJ do local de retirada da mercadoria.
279
+ # Só é obrigatório se o endereco_retirada for preenchido
280
+ #
281
+ # <b>Type: </b> _String_
282
+ # <b>Required: </b> _No_ (_Yes_ if endereco_retirada is present)
283
+ # <b>Default: </b> _nil_
284
+ # <b>tag: </b> retirada/CPF ou retirada/CNPJ
285
+ #
286
+ attr_accessor :endereco_retirada_cpf_cnpj
287
+ def endereco_retirada_cpf_cnpj
288
+ return unless @endereco_retirada_cpf_cnpj.present?
289
+ BrNfe::Helper::CpfCnpj.new(@endereco_retirada_cpf_cnpj).sem_formatacao
290
+ end
291
+
292
+
293
+ # Endereço da entrega da mercadoria
294
+ # Informar apenas quando for diferente do endereço do destinatário
295
+ #
296
+ # <b>Type: </b> _BrNfe.endereco_class_
297
+ # <b>Required: </b> _No_
298
+ # <b>Default: </b> _nil_
299
+ # <b>tag: </b> entrega
300
+ #
301
+ has_one :endereco_entrega, 'BrNfe.endereco_class'
302
+ alias_attribute :entrega, :endereco_entrega
303
+
304
+ # CPF ou CNPJ do local de entrega da mercadoria.
305
+ # Só é obrigatório se o endereco_entrega for preenchido
306
+ #
307
+ # <b>Type: </b> _String_
308
+ # <b>Required: </b> _No_ (_Yes_ if endereco_entrega is present)
309
+ # <b>Default: </b> _nil_
310
+ # <b>tag: </b> entrega/CPF ou entrega/CNPJ
311
+ #
312
+ attr_accessor :endereco_entrega_cpf_cnpj
313
+ def endereco_entrega_cpf_cnpj
314
+ return unless @endereco_entrega_cpf_cnpj.present?
315
+ BrNfe::Helper::CpfCnpj.new(@endereco_entrega_cpf_cnpj).sem_formatacao
316
+ end
317
+
318
+ # CPF ou CNPJ das pessoas que estão autorizadas a fazer o download do XML da NF-e.
319
+ # Deve ser um Array com os CPF's e CNPJ's válidos.
320
+ #
321
+ # <b>Type: </b> _Array_
322
+ # <b>Required: </b> _No_
323
+ # <b>Default: </b> _[]_
324
+ # <b>tag: </b> autXML
325
+ #
326
+ attr_accessor :autorizados_download_xml
327
+ def autorizados_download_xml
328
+ @autorizados_download_xml = [@autorizados_download_xml].flatten unless @autorizados_download_xml.is_a?(Array)
329
+ @autorizados_download_xml.compact!
330
+ @autorizados_download_xml
331
+ end
332
+ alias_attribute :autXML, :autorizados_download_xml
333
+
334
+ # Transporte da mercadoria
335
+ # Informações referentes ao transporte da mercadoria.
336
+ #
337
+ # <b>Type: </b> _BrNfe.transporte_product_class_
338
+ # <b>Required: </b> _No_
339
+ # <b>Default: </b> _nil_
340
+ # <b>tag: </b> transp
341
+ #
342
+ has_one :transporte, 'BrNfe.transporte_product_class'
343
+ alias_attribute :transp, :transporte
344
+
345
+ # Dados da cobrança da NF-e
346
+ # Fatura e Duplicatas da Nota Fiscal
347
+ # Utilizado para especificar os dados da fatura e das duplicatas.
348
+ # No caso desta GEM, a fatura contém o Array de duplicatas.
349
+ # Ex:
350
+ # self.fatura.duplicatas
351
+ # => [#<::Cobranca::Duplicata:0x00000006302b80 ...>, #<::Cobranca::Duplicata:0x00000046465bw4 ...>]
352
+ #
353
+ # <b>Type: </b> _BrNfe.fatura_product_class_
354
+ # <b>Required: </b> _No_
355
+ # <b>Default: </b> _nil_
356
+ # <b>Exemplo: </b> _BrNfe::Product::Nfe::Cobranca::Fatura.new(numero_fatura: 'FAT646498'...)_
357
+ # <b>tag: </b> cobr
358
+ #
359
+ has_one :fatura, 'BrNfe.fatura_product_class'
360
+ alias_attribute :cobranca, :fatura
361
+ alias_attribute :cobr, :fatura
362
+
363
+ # Array com as informações dos pagamentos
364
+ # IMPORTANTE: Utilizado apenas para NFC-e
365
+ #
366
+ # Pode ser adicionado os dados dos pagamentos em forma de `Hash`
367
+ # ou o próprio objeto da classe BrNfe.pagamento_product_class.
368
+ #
369
+ # Exemplo com Hash:
370
+ # self.pagamentos = [{forma_pagamento: '1', total: 100.00, ...},{forma_pagamento: '2', total: 200.00, ...}]
371
+ # self.pagamentos << {forma_pagamento: '3', total: 300.00, ...}
372
+ # self.pagamentos << {forma_pagamento: '4', total: 400.00, ...}
373
+ #
374
+ # Exemplo com Objetos:
375
+ # self.pagamentos = [BrNfe::Product::Nfe::Cobranca::Pagamento.new({forma_pagamento: '5', total: 500.00, ...}),{forma_pagamento: '11', total: 600.00, ...}]
376
+ # self.pagamentos << BrNfe::Product::Nfe::Cobranca::Pagamento.new({forma_pagamento: '10', total: 700.00, ...})
377
+ # self.pagamentos << {forma_pagamento: '12', total: 800.00, ...}
378
+ #
379
+ # Sempre vai retornar um Array de objetos da class configurada em `BrNfe.pagamento_product_class`
380
+ #
381
+ # <b>Tipo: </b> _BrNfe.pagamento_product_class (BrNfe::Product::Nfe::Cobranca::Pagamento)_
382
+ # <b>Min: </b> _0_
383
+ # <b>Max: </b> _100_
384
+ # <b>Default: </b> _[]_
385
+ # <b>tag: </b> pag
386
+ #
387
+ has_many :pagamentos, 'BrNfe.pagamento_product_class'
388
+ alias_attribute :pag, :pagamentos
389
+
390
+ # DETALHAMENTO DE PRODUTOS E SERVIÇOS
391
+ #
392
+ # <b>Type: </b> _BrNfe.item_product_class (BrNfe::Product::Nfe::Item)_
393
+ # <b>Default: </b> _[]_
394
+ # <b>Length: </b> _min: 1, max: 990_
395
+ # <b>tag: </b> det
396
+ #
397
+ has_many :itens, 'BrNfe.item_product_class'
398
+ alias_attribute :det, :itens
399
+
400
+ ##########################################################################
401
+ ######################### TOTAIS PARA PRODUTOS #########################
402
+ # BASE DE CÁLCULO DO ICMS
403
+ #
404
+ # <b>Type: </b> _Float_
405
+ # <b>Required: </b> _Yes_
406
+ # <b>Example: </b> _178.46_
407
+ # <b>Length: </b> _13v2_
408
+ # <b>tag: </b> total/ICMSTot/vBC
409
+ #
410
+ attr_accessor :total_icms_base_calculo
411
+ alias_attribute :ICMSTot_vBC, :total_icms_base_calculo
412
+ validates :total_icms_base_calculo, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
413
+
414
+ # VALOR TOTAL DO ICMS
415
+ #
416
+ # <b>Type: </b> _Float_
417
+ # <b>Required: </b> _Yes_
418
+ # <b>Example: </b> _178.46_
419
+ # <b>Length: </b> _13v2_
420
+ # <b>tag: </b> total/ICMSTot/vICMS
421
+ #
422
+ attr_accessor :total_icms
423
+ alias_attribute :ICMSTot_vICMS, :total_icms
424
+ validates :total_icms, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
425
+
426
+ # VALOR TOTAL DO ICMS DESONERADO
427
+ #
428
+ # <b>Type: </b> _Float_
429
+ # <b>Required: </b> _Yes_
430
+ # <b>Example: </b> _178.46_
431
+ # <b>Length: </b> _13v2_
432
+ # <b>tag: </b> total/ICMSTot/vICMSDeson
433
+ #
434
+ attr_accessor :total_icms_desonerado
435
+ alias_attribute :ICMSTot_vICMSDeson, :total_icms_desonerado
436
+ validates :total_icms_desonerado, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
437
+
438
+ # VALOR TOTAL DO ICMS RELATIVO FUNDO DE COMBATE À POBREZA(FCP)
439
+ # DA UF DE DESTINO
440
+ # Valor total do ICMS relativo ao Fundo de Combate à Pobreza
441
+ # (FCP) para a UF de destino.
442
+ #
443
+ # <b>Type: </b> _Float_
444
+ # <b>Required: </b> _No_
445
+ # <b>Example: </b> _108.46_
446
+ # <b>Length: </b> _13v2_
447
+ # <b>tag: </b> total/ICMSTot/vFCPUFDest
448
+ #
449
+ attr_accessor :total_icms_fcp_uf_destino
450
+ alias_attribute :ICMSTot_vFCPUFDest, :total_icms_fcp_uf_destino
451
+ validates :total_icms_fcp_uf_destino, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
452
+
453
+ # VALOR TOTAL DO ICMS INTERESTADUAL PARA A UF DE DESTINO
454
+ # Valor total do ICMS Interestadual para a UF de destino, já
455
+ # considerando o valor do ICMS relativo ao Fundo de Combate à
456
+ # Pobreza naquela UF
457
+ #
458
+ # <b>Type: </b> _Float_
459
+ # <b>Required: </b> _No_
460
+ # <b>Example: </b> _108.46_
461
+ # <b>Length: </b> _13v2_
462
+ # <b>tag: </b> total/ICMSTot/vICMSUFDest
463
+ #
464
+ attr_accessor :total_icms_uf_destino
465
+ alias_attribute :ICMSTot_vICMSUFDest, :total_icms_uf_destino
466
+ validates :total_icms_uf_destino, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
467
+
468
+ # VALOR TOTAL DO ICMS INTERESTADUAL PARA A UF DO REMETENTE
469
+ # Valor total do ICMS Interestadual para a UF do remetente.
470
+ # Nota: A partir de 2019, este valor será zero.
471
+ #
472
+ # <b>Type: </b> _Float_
473
+ # <b>Required: </b> _No_
474
+ # <b>Example: </b> _108.46_
475
+ # <b>Length: </b> _13v2_
476
+ # <b>tag: </b> total/ICMSTot/vICMSUFRemet
477
+ #
478
+ attr_accessor :total_icms_uf_origem
479
+ alias_attribute :ICMSTot_vICMSUFRemet, :total_icms_uf_origem
480
+ validates :total_icms_uf_origem, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
481
+
482
+ # BASE DE CÁLCULO DO ICMS ST
483
+ #
484
+ # <b>Type: </b> _Float_
485
+ # <b>Required: </b> _Yes_
486
+ # <b>Example: </b> _178.46_
487
+ # <b>Length: </b> _13v2_
488
+ # <b>tag: </b> total/ICMSTot/vBCST
489
+ #
490
+ attr_accessor :total_icms_base_calculo_st
491
+ alias_attribute :ICMSTot_vBCST, :total_icms_base_calculo_st
492
+ validates :total_icms_base_calculo_st, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
493
+
494
+ # VALOR TOTAL DO ICMS ST
495
+ #
496
+ # <b>Type: </b> _Float_
497
+ # <b>Required: </b> _Yes_
498
+ # <b>Example: </b> _178.46_
499
+ # <b>Length: </b> _13v2_
500
+ # <b>tag: </b> total/ICMSTot/vST
501
+ #
502
+ attr_accessor :total_icms_st
503
+ alias_attribute :ICMSTot_vST, :total_icms_st
504
+ validates :total_icms_st, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
505
+
506
+ # VALOR TOTAL DOS PRODUTOS E SERVIÇOS
507
+ #
508
+ # <b>Type: </b> _Float_
509
+ # <b>Required: </b> _Yes_
510
+ # <b>Example: </b> _178.46_
511
+ # <b>Length: </b> _13v2_
512
+ # <b>tag: </b> total/ICMSTot/vProd
513
+ #
514
+ attr_accessor :total_produtos
515
+ alias_attribute :ICMSTot_vProd, :total_produtos
516
+ validates :total_produtos, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
517
+
518
+ # VALOR TOTAL DO FRETE
519
+ #
520
+ # <b>Type: </b> _Float_
521
+ # <b>Required: </b> _Yes_
522
+ # <b>Example: </b> _178.46_
523
+ # <b>Length: </b> _13v2_
524
+ # <b>tag: </b> total/ICMSTot/vFrete
525
+ #
526
+ attr_accessor :total_frete
527
+ alias_attribute :ICMSTot_vFrete, :total_frete
528
+ validates :total_frete, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
529
+
530
+ # VALOR TOTAL DO SEGURO
531
+ #
532
+ # <b>Type: </b> _Float_
533
+ # <b>Required: </b> _Yes_
534
+ # <b>Example: </b> _178.46_
535
+ # <b>Length: </b> _13v2_
536
+ # <b>tag: </b> total/ICMSTot/vSeg
537
+ #
538
+ attr_accessor :total_seguro
539
+ alias_attribute :ICMSTot_vSeg, :total_seguro
540
+ validates :total_seguro, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
541
+
542
+ # VALOR TOTAL DO DESCONTO
543
+ #
544
+ # <b>Type: </b> _Float_
545
+ # <b>Required: </b> _Yes_
546
+ # <b>Example: </b> _178.46_
547
+ # <b>Length: </b> _13v2_
548
+ # <b>tag: </b> total/ICMSTot/vDesc
549
+ #
550
+ attr_accessor :total_desconto
551
+ alias_attribute :ICMSTot_vDesc, :total_desconto
552
+ validates :total_desconto, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
553
+
554
+ # VALOR TOTAL DO II
555
+ #
556
+ # <b>Type: </b> _Float_
557
+ # <b>Required: </b> _Yes_
558
+ # <b>Example: </b> _178.46_
559
+ # <b>Length: </b> _13v2_
560
+ # <b>tag: </b> total/ICMSTot/vII
561
+ #
562
+ attr_accessor :total_imposto_importacao
563
+ alias_attribute :ICMSTot_vII, :total_imposto_importacao
564
+ validates :total_imposto_importacao, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
565
+
566
+ # VALOR TOTAL DO IPI
567
+ #
568
+ # <b>Type: </b> _Float_
569
+ # <b>Required: </b> _Yes_
570
+ # <b>Example: </b> _178.46_
571
+ # <b>Length: </b> _13v2_
572
+ # <b>tag: </b> total/ICMSTot/vIPI
573
+ #
574
+ attr_accessor :total_ipi
575
+ alias_attribute :ICMSTot_vIPI, :total_ipi
576
+ validates :total_ipi, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
577
+
578
+ # VALOR TOTAL DO PIS
579
+ #
580
+ # <b>Type: </b> _Float_
581
+ # <b>Required: </b> _Yes_
582
+ # <b>Example: </b> _178.46_
583
+ # <b>Length: </b> _13v2_
584
+ # <b>tag: </b> total/ICMSTot/vPIS
585
+ #
586
+ attr_accessor :total_pis
587
+ alias_attribute :ICMSTot_vPIS, :total_pis
588
+ validates :total_pis, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
589
+
590
+ # VALOR TOTAL DO COFINS
591
+ #
592
+ # <b>Type: </b> _Float_
593
+ # <b>Required: </b> _Yes_
594
+ # <b>Example: </b> _178.46_
595
+ # <b>Length: </b> _13v2_
596
+ # <b>tag: </b> total/ICMSTot/vCOFINS
597
+ #
598
+ attr_accessor :total_cofins
599
+ alias_attribute :ICMSTot_vCOFINS, :total_cofins
600
+ validates :total_cofins, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
601
+
602
+ # OUTRAS DESPESAS ACESSÓRIAS
603
+ #
604
+ # <b>Type: </b> _Float_
605
+ # <b>Required: </b> _Yes_
606
+ # <b>Example: </b> _178.46_
607
+ # <b>Length: </b> _13v2_
608
+ # <b>tag: </b> total/ICMSTot/vOutro
609
+ #
610
+ attr_accessor :total_outras_despesas
611
+ alias_attribute :ICMSTot_vOutro, :total_outras_despesas
612
+ validates :total_outras_despesas, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
613
+
614
+ # VALOR TOTAL DA NF-E
615
+ #
616
+ # <b>Type: </b> _Float_
617
+ # <b>Required: </b> _Yes_
618
+ # <b>Example: </b> _178.46_
619
+ # <b>Length: </b> _13v2_
620
+ # <b>tag: </b> total/ICMSTot/vNF
621
+ #
622
+ attr_accessor :total_nf
623
+ alias_attribute :ICMSTot_vNF, :total_nf
624
+ validates :total_nf, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
625
+
626
+ # VALOR APROXIMADO TOTAL DE TRIBUTOS FEDERAIS, ESTADUAIS E MUNICIPAIS.
627
+ # (NT 2013/003)
628
+ #
629
+ # <b>Type: </b> _Float_
630
+ # <b>Required: </b> _Yes_
631
+ # <b>Example: </b> _178.46_
632
+ # <b>Length: </b> _13v2_
633
+ # <b>tag: </b> total/ICMSTot/vTotTrib
634
+ #
635
+ attr_accessor :total_tributos
636
+ alias_attribute :ICMSTot_vTotTrib, :total_tributos
637
+ validates :total_tributos, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
638
+ ##########################################################################
639
+ ######################### TOTAIS PARA SERVIÇOS #########################
640
+ # VALOR TOTAL DOS SERVIÇOS SOB NÃO-INCIDÊNCIA OU NÃO TRIBUTADOS PELO ICMS
641
+ #
642
+ # <b>Type: </b> _Float_
643
+ # <b>Required: </b> _Yes_
644
+ # <b>Example: </b> _178.46_
645
+ # <b>Length: </b> _13v2_
646
+ # <b>tag: </b> total/ISSQNtot/vServ
647
+ #
648
+ attr_accessor :total_servicos
649
+ alias_attribute :ISSQNtot_vServ, :total_servicos
650
+ validates :total_servicos, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
651
+
652
+ # VALOR TOTAL BASE DE CÁLCULO DO ISS
653
+ #
654
+ # <b>Type: </b> _Float_
655
+ # <b>Required: </b> _No_
656
+ # <b>Example: </b> _178.46_
657
+ # <b>Length: </b> _13v2_
658
+ # <b>tag: </b> total/ISSQNtot/vBC
659
+ #
660
+ attr_accessor :total_servicos_base_calculo
661
+ alias_attribute :ISSQNtot_vBC, :total_servicos_base_calculo
662
+ validates :total_servicos_base_calculo, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
663
+
664
+ # VALOR TOTAL DO ISS
665
+ #
666
+ # <b>Type: </b> _Float_
667
+ # <b>Required: </b> _No_
668
+ # <b>Example: </b> _178.46_
669
+ # <b>Length: </b> _13v2_
670
+ # <b>tag: </b> total/ISSQNtot/vISS
671
+ #
672
+ attr_accessor :total_servicos_iss
673
+ alias_attribute :ISSQNtot_vISS, :total_servicos_iss
674
+ validates :total_servicos_iss, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
675
+
676
+ # VALOR TOTAL DO PIS SOBRE SERVIÇOS
677
+ #
678
+ # <b>Type: </b> _Float_
679
+ # <b>Required: </b> _No_
680
+ # <b>Example: </b> _178.46_
681
+ # <b>Length: </b> _13v2_
682
+ # <b>tag: </b> total/ISSQNtot/vPIS
683
+ #
684
+ attr_accessor :total_servicos_pis
685
+ alias_attribute :ISSQNtot_vPIS, :total_servicos_pis
686
+ validates :total_servicos_pis, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
687
+
688
+ # VALOR TOTAL DA COFINS SOBRE SERVIÇOS
689
+ #
690
+ # <b>Type: </b> _Float_
691
+ # <b>Required: </b> _No_
692
+ # <b>Example: </b> _178.46_
693
+ # <b>Length: </b> _13v2_
694
+ # <b>tag: </b> total/ISSQNtot/vCOFINS
695
+ #
696
+ attr_accessor :total_servicos_cofins
697
+ alias_attribute :ISSQNtot_vCOFINS, :total_servicos_cofins
698
+ validates :total_servicos_cofins, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
699
+
700
+ # DATA DA PRESTAÇÃO DO SERVIÇO
701
+ #
702
+ #
703
+ # <b>Type: </b> _Date_
704
+ # <b>Required: </b> _Yes_ apenas se tiver algum serviço nos itens
705
+ # <b>Default: </b> _Date.current_
706
+ # <b>Example: </b> _Date.current_
707
+ # <b>Length: </b> _8_ YYYYMMDD
708
+ # <b>tag: </b> total/ISSQNtot/dCompet
709
+ #
710
+ attr_accessor :servicos_data_prestacao
711
+ def servicos_data_prestacao
712
+ convert_to_date(@servicos_data_prestacao)
713
+ end
714
+ alias_attribute :ISSQNtot_dCompet, :servicos_data_prestacao
715
+ validates :servicos_data_prestacao, presence: true, if: :has_any_service?
716
+
717
+ # VALOR TOTAL DEDUÇÃO PARA REDUÇÃO DA BASE DE CÁLCULO
718
+ #
719
+ # <b>Type: </b> _Float_
720
+ # <b>Required: </b> _No_
721
+ # <b>Example: </b> _178.46_
722
+ # <b>Length: </b> _13v2_
723
+ # <b>tag: </b> total/ISSQNtot/vDeducao
724
+ #
725
+ attr_accessor :total_servicos_deducao
726
+ alias_attribute :ISSQNtot_vDeducao, :total_servicos_deducao
727
+ validates :total_servicos_deducao, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
728
+
729
+ # VALOR TOTAL OUTRAS RETENÇÕES DO ISSQN
730
+ #
731
+ # <b>Type: </b> _Float_
732
+ # <b>Required: </b> _No_
733
+ # <b>Example: </b> _178.46_
734
+ # <b>Length: </b> _13v2_
735
+ # <b>tag: </b> total/ISSQNtot/vOutro
736
+ #
737
+ attr_accessor :total_servicos_outras_retencoes
738
+ alias_attribute :ISSQNtot_vOutro, :total_servicos_outras_retencoes
739
+ validates :total_servicos_outras_retencoes, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
740
+
741
+ # VALOR TOTAL DESCONTO INCONDICIONADO
742
+ #
743
+ # <b>Type: </b> _Float_
744
+ # <b>Required: </b> _No_
745
+ # <b>Example: </b> _178.46_
746
+ # <b>Length: </b> _13v2_
747
+ # <b>tag: </b> total/ISSQNtot/vDescIncond
748
+ #
749
+ attr_accessor :total_servicos_desconto_incondicionado
750
+ alias_attribute :ISSQNtot_vDescIncond, :total_servicos_desconto_incondicionado
751
+ validates :total_servicos_desconto_incondicionado, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
752
+
753
+ # VALOR TOTAL DESCONTO CONDICIONADO
754
+ #
755
+ # <b>Type: </b> _Float_
756
+ # <b>Required: </b> _No_
757
+ # <b>Example: </b> _178.46_
758
+ # <b>Length: </b> _13v2_
759
+ # <b>tag: </b> total/ISSQNtot/vDescCond
760
+ #
761
+ attr_accessor :total_servicos_desconto_condicionado
762
+ alias_attribute :ISSQNtot_vDescCond, :total_servicos_desconto_condicionado
763
+ validates :total_servicos_desconto_condicionado, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
764
+
765
+ # VALOR TOTAL RETENÇÃO ISS
766
+ #
767
+ # <b>Type: </b> _Float_
768
+ # <b>Required: </b> _No_
769
+ # <b>Example: </b> _178.46_
770
+ # <b>Length: </b> _13v2_
771
+ # <b>tag: </b> total/ISSQNtot/vISSRet
772
+ #
773
+ attr_accessor :total_servicos_iss_retido
774
+ alias_attribute :ISSQNtot_vISSRet, :total_servicos_iss_retido
775
+ validates :total_servicos_iss_retido, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
776
+
777
+ # CÓDIGO DO REGIME ESPECIAL DE TRIBUTAÇÃO
778
+ # 1 = Microempresa Municipal;
779
+ # 2 = Estimativa;
780
+ # 3 = Sociedade de Profissionais;
781
+ # 4 = Cooperativa;
782
+ # 5 = Microempresário Individual (MEI);
783
+ # 6 = Microempresário e Empresa de Pequeno Porte (ME/EPP)
784
+ #
785
+ # <b>Type: </b> _Number_
786
+ # <b>Required: </b> _No_
787
+ # <b>Example: </b> _2_
788
+ # <b>Default: </b> _1_
789
+ # <b>Length: </b> _1_
790
+ # <b>tag: </b> total/ISSQNtot/cRegTrib
791
+ #
792
+ attr_accessor :regime_tributario_servico
793
+ def regime_tributario_servico
794
+ @regime_tributario_servico.to_i if @regime_tributario_servico.present?
795
+ end
796
+ alias_attribute :ISSQNtot_cRegTrib, :regime_tributario_servico
797
+ validates :regime_tributario_servico, inclusion: {in: [1,2,3,4,5,6]}
798
+ ##########################################################################
799
+ ######################### TOTAIS DAS RETENÇÕES #########################
800
+ # VALOR RETIDO DE PIS
801
+ #
802
+ # <b>Type: </b> _Float_
803
+ # <b>Required: </b> _No_
804
+ # <b>Example: </b> _178.46_
805
+ # <b>Length: </b> _13v2_
806
+ # <b>tag: </b> total/retTrib/vRetPIS
807
+ #
808
+ attr_accessor :total_retencao_pis
809
+ alias_attribute :retTrib_vRetPIS, :total_retencao_pis
810
+ validates :total_retencao_pis, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
811
+
812
+ # VALOR RETIDO DE COFINS
813
+ #
814
+ # <b>Type: </b> _Float_
815
+ # <b>Required: </b> _No_
816
+ # <b>Example: </b> _178.46_
817
+ # <b>Length: </b> _13v2_
818
+ # <b>tag: </b> total/retTrib/vRetCOFINS
819
+ #
820
+ attr_accessor :total_retencao_cofins
821
+ alias_attribute :retTrib_vRetCOFINS, :total_retencao_cofins
822
+ validates :total_retencao_cofins, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
823
+
824
+ # VALOR RETIDO DE CSLL
825
+ #
826
+ # <b>Type: </b> _Float_
827
+ # <b>Required: </b> _No_
828
+ # <b>Example: </b> _178.46_
829
+ # <b>Length: </b> _13v2_
830
+ # <b>tag: </b> total/retTrib/vRetCSLL
831
+ #
832
+ attr_accessor :total_retencao_csll
833
+ alias_attribute :retTrib_vRetCSLL, :total_retencao_csll
834
+ validates :total_retencao_csll, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
835
+
836
+ # BASE DE CÁLCULO DO IRRF
837
+ #
838
+ # <b>Type: </b> _Float_
839
+ # <b>Required: </b> _No_
840
+ # <b>Example: </b> _178.46_
841
+ # <b>Length: </b> _13v2_
842
+ # <b>tag: </b> total/retTrib/vBCIRRF
843
+ #
844
+ attr_accessor :total_retencao_base_calculo_irrf
845
+ alias_attribute :retTrib_vBCIRRF, :total_retencao_base_calculo_irrf
846
+ validates :total_retencao_base_calculo_irrf, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
847
+
848
+ # VALOR RETIDO DO IRRF
849
+ #
850
+ # <b>Type: </b> _Float_
851
+ # <b>Required: </b> _No_
852
+ # <b>Example: </b> _178.46_
853
+ # <b>Length: </b> _13v2_
854
+ # <b>tag: </b> total/retTrib/vIRRF
855
+ #
856
+ attr_accessor :total_retencao_irrf
857
+ alias_attribute :retTrib_vIRRF, :total_retencao_irrf
858
+ validates :total_retencao_irrf, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
859
+
860
+ # BASE DE CÁLCULO DA RETENÇÃO DA PREVIDÊNCIA SOCIAL
861
+ #
862
+ # <b>Type: </b> _Float_
863
+ # <b>Required: </b> _No_
864
+ # <b>Example: </b> _178.46_
865
+ # <b>Length: </b> _13v2_
866
+ # <b>tag: </b> total/retTrib/vBCRetPrev
867
+ #
868
+ attr_accessor :total_retencao_base_calculo_previdencia
869
+ alias_attribute :retTrib_vBCRetPrev, :total_retencao_base_calculo_previdencia
870
+ validates :total_retencao_base_calculo_previdencia, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
871
+
872
+ # VALOR DA RETENÇÃO DA PREVIDÊNCIA SOCIAL
873
+ #
874
+ # <b>Type: </b> _Float_
875
+ # <b>Required: </b> _No_
876
+ # <b>Example: </b> _178.46_
877
+ # <b>Length: </b> _13v2_
878
+ # <b>tag: </b> total/retTrib/vRetPrev
879
+ #
880
+ attr_accessor :total_retencao_previdencia
881
+ alias_attribute :retTrib_vRetPrev, :total_retencao_previdencia
882
+ validates :total_retencao_previdencia, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
883
+ ##########################################################################
884
+ ######################## INFORMAÇÕES ADICIONAIS ########################
885
+ # INFORMAÇÕES ADICIONAIS DE INTERESSE DO FISCO
886
+ #
887
+ # <b>Type: </b> _String_
888
+ # <b>Required: </b> _No_
889
+ # <b>Default: </b> _nil_
890
+ # <b>Length: </b> _max: 2000_
891
+ # <b>tag: </b> infAdic/infAdFisco
892
+ #
893
+ attr_accessor :informacoes_fisco
894
+ alias_attribute :infAdFisco, :informacoes_fisco
895
+
896
+ # INFORMAÇÕES COMPLEMENTARES DE INTERESSE DO CONTRIBUINTE
897
+ #
898
+ # <b>Type: </b> _String_
899
+ # <b>Required: </b> _No_
900
+ # <b>Default: </b> _nil_
901
+ # <b>Length: </b> _max: 5000_
902
+ # <b>tag: </b> infAdic/infCpl
903
+ #
904
+ attr_accessor :informacoes_contribuinte
905
+ alias_attribute :infCpl, :informacoes_contribuinte
906
+
907
+ # GRUPO PROCESSO REFERENCIADO
908
+ # (NT 2012/003)
909
+ #
910
+ # <b>Type: </b> _BrNfe.processo_referencia_product_class (BrNfe::Product::Nfe::ProcessoReferencia)_
911
+ # <b>Default: </b> _[]_
912
+ # <b>Length: </b> _max: 100_
913
+ # <b>tag: </b> procRef
914
+ #
915
+ has_many :processos_referenciados, 'BrNfe.processo_referencia_product_class'
916
+ alias_attribute :procRef, :processos_referenciados
917
+ ##########################################################################
918
+ ###################### INFORMAÇÕES DE EXPORTAÇÃO #######################
919
+ # SIGLA DA UF DE EMBARQUE OU DE TRANSPOSIÇÃO DE FRONTEIRA
920
+ # Não aceita o valor "EX"
921
+ #
922
+ # <b>Type: </b> _String_
923
+ # <b>Required: </b> _No_
924
+ # <b>Default: </b> _nil_
925
+ # <b>Length: </b> _2_
926
+ # <b>tag: </b> exporta/UFSaidaPais
927
+ #
928
+ attr_accessor :exportacao_uf_saida
929
+ alias_attribute :UFSaidaPais, :exportacao_uf_saida
930
+ validates :exportacao_uf_saida, inclusion: {in: BrNfe::Constants::SIGLAS_UF-['EX'] }, allow_blank: true
931
+
932
+ # DESCRIÇÃO DO LOCAL DE EMBARQUE OU DE TRANSPOSIÇÃO DE FRONTEIRA
933
+ #
934
+ # <b>Type: </b> _String_
935
+ # <b>Required: </b> _No_
936
+ # <b>Default: </b> _nil_
937
+ # <b>Length: </b> _max: 60_
938
+ # <b>tag: </b> exporta/xLocExporta
939
+ #
940
+ attr_accessor :exportacao_local_embarque
941
+ alias_attribute :xLocExporta, :exportacao_local_embarque
942
+
943
+ # DESCRIÇÃO DO LOCAL DE DESPACHO
944
+ # Informação do Recinto Alfandegado
945
+ #
946
+ # <b>Type: </b> _String_
947
+ # <b>Required: </b> _No_
948
+ # <b>Default: </b> _nil_
949
+ # <b>Length: </b> _max: 60_
950
+ # <b>tag: </b> exporta/xLocDespacho
951
+ #
952
+ attr_accessor :exportacao_local_despacho
953
+ alias_attribute :xLocDespacho, :exportacao_local_despacho
954
+
955
+ ############################################################################
956
+ ######################### DADOS SETADOS NO RETORNO #######################
957
+ # Utilizado para setar o XML da nfe na resposta
958
+ attr_accessor :xml
959
+
960
+ # PROTOCOLO / NÚMERO DO RECIBO
961
+ # Número do Recibo gerado pelo Portal da
962
+ # Secretaria de Fazenda Estadual
963
+ #
964
+ attr_accessor :protocol
965
+ alias_attribute :nProt, :protocol
966
+
967
+ # VALOR DIGEST DO RETORNO
968
+ # Digest Value da NF-e processada
969
+ # Utilizado para conferir a integridade da NFe
970
+ # original.
971
+ #
972
+ attr_accessor :digest_value
973
+ alias_attribute :digVal, :digest_value
974
+
975
+ # DATA E HORA DO PROCESSAMENTO DA REQUISIÇÃO
976
+ #
977
+ attr_accessor :processed_at
978
+ def processed_at
979
+ convert_to_time(@processed_at)
980
+ end
981
+ alias_attribute :dhRecbto, :processed_at
982
+
983
+ # STATUS DA OPERAÇÃO
984
+ # Esse é o status final da operação com anota fiscal.
985
+ # A partir do status é possível identificar se obteve sucesso
986
+ # no processamento da nota (para qualquer operação)
987
+ #
988
+ attr_accessor :status_code
989
+ attr_accessor :status_motive
990
+ def status
991
+ if "#{status_code} ".strip.in?( BrNfe::Constants::NFE_STATUS_SUCCESS )
992
+ :success
993
+ elsif "#{status_code}".strip.in?( BrNfe::Constants::NFE_STATUS_PROCESSING )
994
+ :processing
995
+ elsif "#{status_code}".strip.in?( BrNfe::Constants::NFE_STATUS_OFFLINE )
996
+ :offline
997
+ elsif "#{status_code}".strip.in?( BrNfe::Constants::NFE_STATUS_DENIED )
998
+ :denied
999
+ elsif status_code.present?
1000
+ :error
1001
+ end
1002
+ end
1003
+
1004
+ # SITUAÇÃO DA NOTA FISCAL
1005
+ # Informa o status atual da nota fiscal.
1006
+ # Retorna se a nota fiscal está autorizada, cancelada, denegada, rejeitada, ajustada.
1007
+ # Exemplo:
1008
+ # - :authorized - Quando a nota fiscal está autorizada para uso
1009
+ # - :adjusted - Quando a nota fiscal está autorizada para o uso e foi realizado algum
1010
+ # evento posterior que a mesma foi ajustada
1011
+ # - :draft - Quando a nota fiscal ainda não tem validade fiscal.
1012
+ # - :canceled - Quando a nota fiscal foi cancelada.
1013
+ # - :denied - Quando a nota fiscal foi denegada e o XML deve ser guardado.
1014
+ # - :rejected - Quando a nota fiscal foi rejeitada e pode ser enviada novamente com as correções.
1015
+ #
1016
+ attr_accessor :situation
1017
+ def situation
1018
+ @situation ||= get_situation_by_status_code
1019
+ end
1020
+ def get_situation_by_status_code
1021
+ if "#{status_code}".strip.in?( BrNfe::Constants::NFE_SITUATION_AUTORIZED )
1022
+ :authorized
1023
+ elsif "#{status_code}".strip.in?( BrNfe::Constants::NFE_SITUATION_ADJUSTED )
1024
+ :adjusted
1025
+ elsif "#{status_code}".strip.in?( BrNfe::Constants::NFE_SITUATION_CANCELED )
1026
+ :canceled
1027
+ elsif "#{status_code}".strip.in?( BrNfe::Constants::NFE_SITUATION_DENIED )
1028
+ :denied
1029
+ elsif status_code.blank? || "#{status_code}".strip.in?( BrNfe::Constants::NFE_SITUATION_DRAFT )
1030
+ :draft
1031
+ else
1032
+ :rejected
1033
+ end
1034
+ end
1035
+
1036
+ def default_values
1037
+ {
1038
+ versao_aplicativo: 0,
1039
+ natureza_operacao: 'Venda',
1040
+ forma_pagamento: 0, # 0=À vista
1041
+ modelo_nf: 55, #NF-e
1042
+ data_hora_emissao: Time.current.in_time_zone,
1043
+ data_hora_expedicao: Time.current.in_time_zone,
1044
+ tipo_operacao: 1, # 1=Saída
1045
+ tipo_impressao: 1, # 1=DANFE normal, Retrato;
1046
+ finalidade_emissao: 1, # 1=NF-e normal;
1047
+ presenca_comprador: 9, # 9=Operação não presencial, outros.
1048
+ processo_emissao: 0, # 0=Emissão de NF-e com aplicativo do contribuinte;
1049
+ codigo_tipo_emissao: 1, # 1=Normal
1050
+ servicos_data_prestacao: Date.current,
1051
+ regime_tributario_servico: 1, # 1=Microempresa Municipal;
1052
+ }
1053
+ end
1054
+
1055
+ validates :codigo_tipo_emissao, presence: true
1056
+ validates :codigo_tipo_emissao, inclusion: [1, 6, 7, 9, '1', '6', '7', '9']
1057
+
1058
+ validates :codigo_nf, presence: true
1059
+ validates :codigo_nf, numericality: { only_integer: true }
1060
+ validates :codigo_nf, length: { maximum: 8 }
1061
+
1062
+ validates :serie, presence: true
1063
+ validates :serie, numericality: { only_integer: true }
1064
+ validates :serie, length: { maximum: 3 }
1065
+ validates :serie, exclusion: [890, 899, 990, 999, '890', '899', '990', '999']
1066
+
1067
+ validates :numero_nf, presence: true
1068
+ validates :numero_nf, numericality: { only_integer: true }
1069
+ validates :numero_nf, length: { maximum: 9 }
1070
+
1071
+ validates :natureza_operacao, presence: true
1072
+
1073
+ validates :forma_pagamento, presence: true
1074
+ validates :forma_pagamento, inclusion: [0, 1, 2, '0', '1', '2']
1075
+
1076
+ validates :modelo_nf, presence: true
1077
+ validates :modelo_nf, inclusion: [55, 65, '55', '65']
1078
+
1079
+ validates :data_hora_emissao, presence: true
1080
+ validates :data_hora_expedicao, presence: true, if: :nfe?
1081
+
1082
+ validates :tipo_operacao, presence: true
1083
+ validates :tipo_operacao, inclusion: [0, 1, '0', '1']
1084
+
1085
+ validates :tipo_impressao, presence: true
1086
+ validates :tipo_impressao, inclusion: [0, 1, 2, 3, 4, 5, '0', '1', '2', '3', '4', '5']
1087
+
1088
+ validates :presenca_comprador, presence: true
1089
+ validates :presenca_comprador, inclusion: [0, 1, 2, 3, 4, 9, '0', '1', '2', '3', '4', '9']
1090
+
1091
+ validates :processo_emissao, presence: true
1092
+ validates :processo_emissao, inclusion: [0, 1, 2, 3, '0', '1', '2', '3']
1093
+
1094
+ validates :autorizados_download_xml, length: { maximum: 10 }
1095
+
1096
+ validate_has_many :itens, message: :invalid_item
1097
+ validates :itens, length: {minimum: 1, maximum: 990}
1098
+
1099
+ validate_has_many :processos_referenciados, message: :invalid_processo
1100
+
1101
+ with_options if: :nfce? do |record|
1102
+ record.validate_has_many :pagamentos
1103
+ record.validates :pagamentos, length: {maximum: 100}
1104
+ end
1105
+
1106
+ validate_has_one :transporte
1107
+ validate_has_one :fatura
1108
+ validate_has_one :destinatario
1109
+ validate_has_one :emitente
1110
+
1111
+ validate_has_one :endereco_retirada
1112
+ with_options if: :endereco_retirada do |record|
1113
+ record.validates :endereco_retirada_cpf_cnpj, presence: true
1114
+ record.validates :endereco_retirada_cpf_cnpj, length: {maximum: 14}
1115
+ end
1116
+
1117
+ validate_has_one :endereco_entrega
1118
+ with_options if: :endereco_entrega do |record|
1119
+ record.validates :endereco_entrega_cpf_cnpj, presence: true
1120
+ record.validates :endereco_entrega_cpf_cnpj, length: {maximum: 14}
1121
+ end
1122
+
1123
+ def nfe?
1124
+ modelo_nf.to_i == 55
1125
+ end
1126
+
1127
+ def nfce?
1128
+ modelo_nf.to_i == 65
1129
+ end
1130
+
1131
+ def has_any_service?
1132
+ itens.select(&:is_service?).any?
1133
+ end
1134
+
1135
+ def has_any_product?
1136
+ itens.select(&:is_product?).any?
1137
+ end
1138
+
1139
+ # MÉTODO PARA SABER SE EXISTE ALGUM VALOR NO TOTALIZADOR DE RETENÇÃO DE IMPOSTOS.
1140
+ # Utilizado para saber se deve ou não colocar a tag de totalizador de retenções
1141
+ # no XML.
1142
+ #
1143
+ # <b>Tipo: </b> _Boolean_
1144
+ #
1145
+ def has_taxes_retention?
1146
+ total_retencao_pis.to_f > 0.0 || total_retencao_cofins.to_f > 0.0 ||
1147
+ total_retencao_csll.to_f > 0.0 || total_retencao_irrf.to_f > 0.0 ||
1148
+ total_retencao_previdencia.to_f > 0.0
1149
+ end
1150
+
1151
+ private
1152
+
1153
+ ###############################################################################################
1154
+ # | Código | AAMM da | CNPJ do | Modelo | Série | Número | Cód. tipo | Código | DV |
1155
+ # | da UF | emissão | Emitente | | | da NF-e | emissão | Numérico | |
1156
+ # ---------------------------------------------------------------------------------------
1157
+ # Tam = | 02 | 04 | 14 | 02 | 03 | 09 | 01 | 08 | 01 |
1158
+ # °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
1159
+ def gerar_chave_de_acesso!
1160
+ chave_sem_dv = "#{emitente.endereco.codigo_ibge_uf}"
1161
+ chave_sem_dv << "#{data_hora_emissao.try(:strftime, '%y%m')}"
1162
+ chave_sem_dv << "#{emitente.cnpj}".rjust(14,'0')
1163
+ chave_sem_dv << "#{modelo_nf}"
1164
+ chave_sem_dv << "#{serie}".rjust(3, '0')
1165
+ chave_sem_dv << "#{numero_nf}".rjust(9, '0')
1166
+ chave_sem_dv << "#{codigo_tipo_emissao}"
1167
+ chave_sem_dv << "#{codigo_nf}".rjust(8, '0')
1168
+ dv = BrNfe::Calculos::Modulo11FatorDe2a9RestoZero.new(chave_sem_dv)
1169
+ "#{chave_sem_dv}#{dv}"
1170
+ end
1171
+ end
1172
+ end
1173
+ end