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,138 @@
1
+ module BrNfe
2
+ module Product
3
+ module Nfe
4
+ module ItemTax
5
+ class Pis < BrNfe::ActiveModelBase
6
+ # CÓDIGO DA SITUAÇÃO TRIBUTÁRIA do PIS
7
+ # 01 = Operação Tributável (base de cálculo = valor da operação alíquota normal (cumulativo/não cumulativo));
8
+ # 02 = Operação Tributável (base de cálculo = valor da operação (alíquota diferenciada));
9
+ # 03 = Operação Tributável: (base de cálculo = quantidade vendida x alíquota por unidade de produto);
10
+ # 04 = Operação Tributável (tributação monofásica (alíquota zero));
11
+ # 05 = Operação Tributável (Substituição Tributária);
12
+ # 06 = Operação Tributável (alíquota zero);
13
+ # 07 = Operação Isenta da Contribuição;
14
+ # 08 = Operação Sem Incidência da Contribuição;
15
+ # 09 = Operação com Suspensão da Contribuição;
16
+ # 49 = Outras Operações de Saída;
17
+ # 50 = Operação com Direito a Crédito - Vinculada Exclusivamente a Receita Tributada no Mercado Interno;
18
+ # 51 = Operação com Direito a Crédito - Vinculada Exclusivamente a Receita Não Tributada no Mercado Interno;
19
+ # 52 = Operação com Direito a Crédito – Vinculada Exclusivamente a Receita de Exportação;
20
+ # 53 = Operação com Direito a Crédito - Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno;
21
+ # 54 = Operação com Direito a Crédito - Vinculada a Receitas Tributadas no Mercado Interno e de Exportação;
22
+ # 55 = Operação com Direito a Crédito - Vinculada a Receitas Não Tributadas no Mercado Interno e de Exportação;
23
+ # 56 = Operação com Direito a Crédito - Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno, e de Exportação;
24
+ # 60 = Crédito Presumido - Operação de Aquisição Vinculada Exclusivamente a Receita Tributada no Mercado Interno;
25
+ # 61 = Crédito Presumido - Operação de Aquisição Vinculada Exclusivamente a Receita Não-Tributada no Mercado Interno;
26
+ # 62 = Crédito Presumido - Operação de Aquisição Vinculada Exclusivamente a Receita de Exportação;
27
+ # 63 = Crédito Presumido - Operação de Aquisição Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno;
28
+ # 64 = Crédito Presumido - Operação de Aquisição Vinculada a Receitas Tributadas no Mercado Interno e de Exportação;
29
+ # 65 = Crédito Presumido - Operação de Aquisição Vinculada a Receitas Não-Tributadas no Mercado Interno e de Exportação;
30
+ # 66 = Crédito Presumido - Operação de Aquisição Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno, e de Exportação;
31
+ # 67 = Crédito Presumido - Outras Operações;
32
+ # 70 = Operação de Aquisição sem Direito a Crédito;
33
+ # 71 = Operação de Aquisição com Isenção;
34
+ # 72 = Operação de Aquisição com Suspensão;
35
+ # 73 = Operação de Aquisição a Alíquota Zero;
36
+ # 74 = Operação de Aquisição; sem Incidência da Contribuição;
37
+ # 75 = Operação de Aquisição por Substituição Tributária;
38
+ # 98 = Outras Operações de Entrada;
39
+ # 99 = Outras Operações;
40
+ #
41
+ # <b>Type: </b> _Number_ <- string
42
+ # <b>Required: </b> _Yes_
43
+ # <b>Example: </b> _00_
44
+ # <b>Length: </b> _2_
45
+ # <b>tag: </b> CST
46
+ #
47
+ attr_accessor :codigo_cst
48
+ def codigo_cst
49
+ "#{@codigo_cst}".rjust(2, '0') if @codigo_cst.present?
50
+ end
51
+ alias_attribute :CST, :codigo_cst
52
+
53
+ # VALOR DA BASE DE CÁLCULO DO PIS
54
+ #
55
+ # <b>Type: </b> _Float_
56
+ # <b>Required: </b> _No_ (Yes if cst in [01 02])
57
+ # <b>Example: </b> _350.47_
58
+ # <b>tag: </b> vBC
59
+ #
60
+ attr_accessor :total_base_calculo
61
+ alias_attribute :vBC, :total_base_calculo
62
+
63
+ # ALÍQUOTA DO PIS (EM PERCENTUAL)
64
+ #
65
+ # <b>Type: </b> _Float_
66
+ # <b>Required: </b> _No_ (Yes if cst in [01 02])
67
+ # <b>Example: </b> _350.47_
68
+ # <b>tag: </b> pPIS
69
+ #
70
+ attr_accessor :aliquota
71
+ alias_attribute :pPIS, :aliquota
72
+
73
+ # VALOR DO PIS
74
+ #
75
+ # <b>Type: </b> _Float_
76
+ # <b>Required: </b> _Yes_ (No if cst in [04 05 06 07 08 09])
77
+ # <b>Example: </b> _350.47_
78
+ # <b>tag: </b> vPIS
79
+ #
80
+ attr_accessor :total
81
+ alias_attribute :vPIS, :total
82
+
83
+ # QUANTIDADE VENDIDA
84
+ #
85
+ # <b>Type: </b> _Float_
86
+ # <b>Required: </b> _No_ (Yes if cst is 03)
87
+ # <b>Example: </b> _10.0_
88
+ # <b>Length: </b> _12v0-4_
89
+ # <b>tag: </b> qBCProd
90
+ #
91
+ attr_accessor :quantidade_vendida
92
+ alias_attribute :qBCProd, :quantidade_vendida
93
+
94
+ # ALÍQUOTA DO PIS (EM REAIS)
95
+ #
96
+ # <b>Type: </b> _Float_
97
+ # <b>Required: </b> _No_ (Yes if cst is 03)
98
+ # <b>Example: </b> _10.0_
99
+ # <b>Length: </b> _11v0-4_
100
+ # <b>tag: </b> vAliqProd
101
+ #
102
+ attr_accessor :total_aliquota
103
+ alias_attribute :vAliqProd, :total_aliquota
104
+
105
+ def default_values
106
+ {
107
+ codigo_cst: '07'
108
+ }
109
+ end
110
+
111
+ validates :codigo_cst, presence: true
112
+ validates :codigo_cst, inclusion: {in: %w[01 02 03 04 05 06 07 08 09 49 50 51 52 53 54 55 56 60 61 62 63 64 65 66 67 70 71 72 73 74 75 98 99]}
113
+
114
+ with_options if: lambda{ |r| r.codigo_cst.in?(%w[01 02]) } do |record|
115
+ record.validates :total_base_calculo, presence: true
116
+ record.validates :total_base_calculo, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
117
+ record.validates :aliquota, presence: true
118
+ record.validates :aliquota, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
119
+ record.validates :total, presence: true
120
+ record.validates :total, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
121
+ end
122
+ with_options if: lambda{ |r| r.codigo_cst == '03' } do |record|
123
+ record.validates :quantidade_vendida, presence: true
124
+ record.validates :quantidade_vendida, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
125
+ record.validates :total_aliquota, presence: true
126
+ record.validates :total_aliquota, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
127
+ record.validates :total, presence: true
128
+ record.validates :total, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
129
+ end
130
+ with_options if: lambda{ |r| r.codigo_cst.in?(%w[49 50 51 52 53 54 55 56 60 61 62 63 64 65 66 67 70 71 72 73 74 75 98 99]) } do |record|
131
+ record.validates :total, presence: true
132
+ record.validates :total, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,68 @@
1
+ module BrNfe
2
+ module Product
3
+ module Nfe
4
+ module ItemTax
5
+ class PisSt < BrNfe::ActiveModelBase
6
+ # VALOR DA BASE DE CÁLCULO DO PIS ST
7
+ #
8
+ # <b>Type: </b> _Float_
9
+ # <b>Required: </b> _No_ (Yes if cst in [01 02])
10
+ # <b>Example: </b> _350.47_
11
+ # <b>tag: </b> vBC
12
+ #
13
+ attr_accessor :total_base_calculo
14
+ alias_attribute :vBC, :total_base_calculo
15
+
16
+ # ALÍQUOTA DO PIS (EM PERCENTUAL)
17
+ #
18
+ # <b>Type: </b> _Float_
19
+ # <b>Required: </b> _No_ (Yes if cst in [01 02])
20
+ # <b>Example: </b> _350.47_
21
+ # <b>tag: </b> pPIS
22
+ #
23
+ attr_accessor :aliquota
24
+ alias_attribute :pPIS, :aliquota
25
+
26
+ # VALOR DO PIS
27
+ #
28
+ # <b>Type: </b> _Float_
29
+ # <b>Required: </b> _Yes_ (No if cst in [04 05 06 07 08 09])
30
+ # <b>Example: </b> _350.47_
31
+ # <b>tag: </b> vPIS
32
+ #
33
+ attr_accessor :total
34
+ alias_attribute :vPIS, :total
35
+
36
+ # QUANTIDADE VENDIDA
37
+ #
38
+ # <b>Type: </b> _Float_
39
+ # <b>Required: </b> _No_ (Yes if cst is 03)
40
+ # <b>Example: </b> _10.0_
41
+ # <b>Length: </b> _12v0-4_
42
+ # <b>tag: </b> qBCProd
43
+ #
44
+ attr_accessor :quantidade_vendida
45
+ alias_attribute :qBCProd, :quantidade_vendida
46
+
47
+ # ALÍQUOTA DO PIS (EM REAIS)
48
+ #
49
+ # <b>Type: </b> _Float_
50
+ # <b>Required: </b> _No_ (Yes if cst is 03)
51
+ # <b>Example: </b> _10.0_
52
+ # <b>Length: </b> _11v0-4_
53
+ # <b>tag: </b> vAliqProd
54
+ #
55
+ attr_accessor :total_aliquota
56
+ alias_attribute :vAliqProd, :total_aliquota
57
+
58
+ validates :total, presence: true
59
+ validates :total, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
60
+ validates :total_base_calculo, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
61
+ validates :aliquota, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
62
+ validates :quantidade_vendida, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
63
+ validates :total_aliquota, numericality: {greater_than_or_equal_to: 0.0}, allow_blank: true
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,48 @@
1
+ # Grupo Processo referenciado
2
+ # (NT 2012/003)
3
+ #
4
+ # <b>Type: </b> _Group_
5
+ # <b>Length: </b> _max: 100_
6
+ # <b>tag: </b> procRef
7
+ #
8
+ module BrNfe
9
+ module Product
10
+ module Nfe
11
+ class ProcessoReferencia < BrNfe::ActiveModelBase
12
+ # IDENTIFICADOR DO PROCESSO OU ATO CONCESSÓRIO
13
+ #
14
+ # <b>Type: </b> _String_
15
+ # <b>Required: </b> _Yes_
16
+ # <b>Example: </b> _PRF226482_
17
+ # <b>Length: </b> _max: 60_
18
+ # <b>tag: </b> nProc
19
+ #
20
+ attr_accessor :numero_processo
21
+ alias_attribute :nProc, :numero_processo
22
+
23
+ # INDICADOR DA ORIGEM DO PROCESSO
24
+ # 0 = SEFAZ;
25
+ # 1 = Justiça Federal;
26
+ # 2 = Justiça Estadual;
27
+ # 3 = Secex/RFB;
28
+ # 9 = Outros
29
+ #
30
+ # <b>Type: </b> _Number_
31
+ # <b>Required: </b> _Yes_
32
+ # <b>Default: </b> _0_
33
+ # <b>Example: </b> _1_
34
+ # <b>Length: </b> _max: 60_
35
+ # <b>tag: </b> indProc
36
+ #
37
+ attr_accessor :indicador
38
+ def indicador
39
+ @indicador.to_i
40
+ end
41
+ alias_attribute :indProc, :indicador
42
+
43
+ validates :indicador, inclusion: {in: [0,1,2,3,9]}
44
+ validates :numero_processo, presence: true
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,264 @@
1
+ module BrNfe
2
+ module Product
3
+ module Nfe
4
+ module Transporte
5
+ class Base < BrNfe::ActiveModelBase
6
+
7
+ # Modalidade do frete
8
+ # 0- Por conta do emitente;
9
+ # 1- Por conta do destinatário/remetente;
10
+ # 2- Por conta de terceiros;
11
+ # 9- Sem frete
12
+ #
13
+ # <b>Type: </b> _Number_
14
+ # <b>Required: </b> _Yes_
15
+ # <b>Default: </b> _9_
16
+ # <b>Length: </b> _1_
17
+ # <b>tag: </b> modFrete
18
+ #
19
+ attr_accessor :modalidade_frete
20
+ alias_attribute :modFrete, :modalidade_frete
21
+
22
+
23
+ ##############################################################################
24
+ #################### Dados da retenção ICMS do Transporte ####################
25
+
26
+ # Método para saber se há retenção de ICMS, e se houver,
27
+ # aplica as validações e adiciona a tag no XML
28
+ #
29
+ # <b>Type: </b> _Boolean_
30
+ # <b>tag: </b> retTransp
31
+ #
32
+ def retencao_icms?
33
+ retencao_valor_sevico.to_f > 0.0
34
+ end
35
+
36
+ # Valor do serviço
37
+ #
38
+ # <b>Type: </b> _Float_
39
+ # <b>Required: </b> _No_
40
+ # <b>Default: </b> _nil_
41
+ # <b>tag: </b> vServ
42
+ #
43
+ attr_accessor :retencao_valor_sevico
44
+ alias_attribute :vServ, :retencao_valor_sevico
45
+
46
+ # Base de Cálculo da Retenção do ICMS
47
+ #
48
+ # <b>Type: </b> _Float_
49
+ # <b>Required: </b> _No_
50
+ # <b>Default: </b> _nil_
51
+ # <b>tag: </b> vBCRet
52
+ #
53
+ attr_accessor :retencao_base_calculo_icms
54
+ alias_attribute :vBCRet, :retencao_base_calculo_icms
55
+
56
+ # Percentual de aliquota da retenção do ICMS
57
+ # Exemplo:
58
+ # Se a aliquota for de 2,56% então deve setar o valor para
59
+ # o atrubuto assim: self.retencao_aliquota = 2.56
60
+ #
61
+ # <b>Type: </b> _Float_
62
+ # <b>Required: </b> _No_
63
+ # <b>Default: </b> _nil_
64
+ # <b>tag: </b> pICMSRet
65
+ #
66
+ attr_accessor :retencao_aliquota
67
+ alias_attribute :pICMSRet, :retencao_aliquota
68
+
69
+ # Valor do ICMS Retido
70
+ # Caso não seja setado nenhum valor, irá calcular automaticamente
71
+ # através dos atributos 'retencao_base_calculo_icms' e 'retencao_aliquota'
72
+ #
73
+ # <b>Type: </b> _Float_
74
+ # <b>Required: </b> _No_
75
+ # <b>Default: </b> _nil_
76
+ # <b>tag: </b> vICMSRet
77
+ #
78
+ attr_accessor :retencao_valor_icms
79
+ def retencao_valor_icms
80
+ @retencao_valor_icms || calculate_retencao_valor_icms
81
+ end
82
+ alias_attribute :vICMSRet, :retencao_valor_icms
83
+
84
+ # CFOP de Serviço de Transporte
85
+ #
86
+ # <b>Type: </b> _Number_
87
+ # <b>Required: </b> _No_ (Yes if retencao_icms?)
88
+ # <b>Default: </b> _nil_
89
+ # <b>tag: </b> CFOP
90
+ #
91
+ attr_accessor :retencao_cfop
92
+ alias_attribute :CFOP, :retencao_cfop
93
+
94
+ # Código do município de ocorrência do fato gerador
95
+ # do ICMS do transporte
96
+ #
97
+ # <b>Type: </b> _Number_
98
+ # <b>Required: </b> _No_ (Yes if retencao_icms?)
99
+ # <b>Default: </b> _nil_
100
+ # <b>tag: </b> cMunFG
101
+ #
102
+ attr_accessor :retencao_codigo_municipio
103
+ alias_attribute :cMunFG, :retencao_codigo_municipio
104
+
105
+ # Attr utilizado para saber como será validado os dados do
106
+ # 'veiculo' utilizado para transportar a carga.
107
+ #
108
+ # <b>Type: </b> _Symbol_
109
+ # <b>Allowed: </b> _:veiculo, :balsa, :vagao_
110
+ # <b>Required: </b> _Yes_
111
+ # <b>Default: </b> _:veiculo_
112
+ #
113
+ attr_accessor :forma_transporte
114
+
115
+ # Veículo de transporte
116
+ # Utilizado quando a forma de transporte for com :veiculo
117
+ #
118
+ # <b>Type: </b> _BrNfe.veiculo_product_class_
119
+ # <b>Required: </b> _No_ (Yes if forma_transporte == :veiculo)
120
+ # <b>Default: </b> _nil_
121
+ # <b>tag: </b> veicTransp
122
+ #
123
+ has_one :veiculo, 'BrNfe.veiculo_product_class'
124
+ alias_attribute :veicTransp, :veiculo
125
+
126
+
127
+ # Identificação da balsa (v2.0)
128
+ #
129
+ # <b>Type: </b> _String_
130
+ # <b>Required: </b> _No_ (Yes if forma_transporte == :balsa)
131
+ # <b>tag: </b> balsa
132
+ #
133
+ attr_accessor :identificacao_balsa
134
+ alias_attribute :balsa, :identificacao_balsa
135
+
136
+ # Identificação do vagao (v2.0)
137
+ #
138
+ # <b>Type: </b> _String_
139
+ # <b>Required: </b> _No_ (Yes if forma_transporte == :vagao)
140
+ # <b>tag: </b> vagao
141
+ #
142
+ attr_accessor :identificacao_vagao
143
+ alias_attribute :vagao, :identificacao_vagao
144
+
145
+ # Array com os reboques utilizados para transportar a carga
146
+ # Pode ser adicionado os dados dos reboques em forma de `Hash` ou
147
+ # O próprio objeto da classe Veiculo.
148
+ #
149
+ # Exemplo com Hash:
150
+ # self.reboques = [{placa: 'XXX6644', uf: 'SP', ...},{placa: 'XXX6644', uf: 'SC', ...}]
151
+ # self.reboques << {placa: 'XXX6644', uf: 'MG', ...}
152
+ # self.reboques << {placa: 'XXX6644', uf: 'GO', ...}
153
+ #
154
+ # Exemplo com Objetos:
155
+ # self.reboques = [BrNfe::Product::Nfe::Transporte::Veiculo.new({placa: 'XXX6644', uf: 'PI', ...}),{placa: 'XXX6644', uf: 'RS', ...}]
156
+ # self.reboques << BrNfe::Product::Nfe::Transporte::Veiculo.new({placa: 'XXX6644', uf: 'PR', ...})
157
+ # self.reboques << {placa: 'XXX6644', uf: 'DF', ...}
158
+ #
159
+ # Sempre vai retornar um Array de objetos da class configurada em `BrNfe.veiculo_product_class`
160
+ #
161
+ # <b>Tipo: </b> _BrNfe.veiculo_product_class (BrNfe::Product::Nfe::Transporte::Veiculo)_
162
+ # <b>Length: </b> _min: 0, max: 5_
163
+ # <b>Default: </b> _[]_
164
+ # <b>tag: </b> reboque
165
+ #
166
+ has_many :reboques, 'BrNfe.veiculo_product_class'
167
+
168
+ # Array com os volumes utilizados para transportar a carga
169
+ # Pode ser adicionado os dados dos volumes em forma de `Hash` ou
170
+ # O próprio objeto da classe Volume.
171
+ #
172
+ # Exemplo com Hash:
173
+ # self.volumes = [{marca: 'XXX6644', quantidade: 8, ...},{marca: 'XXX6644', quantidade: 9, ...}]
174
+ # self.volumes << {marca: 'XXX6644', quantidade: 10, ...}
175
+ # self.volumes << {marca: 'XXX6644', quantidade: 11, ...}
176
+ #
177
+ # Exemplo com Objetos:
178
+ # self.volumes = [BrNfe::Product::Nfe::Transporte::Volume.new({marca: 'XXX6644', quantidade: 12, ...}),{marca: 'XXX6644', quantidade: 13, ...}]
179
+ # self.volumes << BrNfe::Product::Nfe::Transporte::Volume.new({marca: 'XXX6644', quantidade: 14, ...})
180
+ # self.volumes << {marca: 'XXX6644', quantidade: 15, ...}
181
+ #
182
+ # Sempre vai retornar um Array de objetos da class configurada em `BrNfe.volume_transporte_product_class`
183
+ #
184
+ # <b>Tipo: </b> _BrNfe.volume_transporte_product_class (BrNfe::Product::Nfe::Transporte::Volume)_
185
+ # <b>Default: </b> _[]_
186
+ # <b>tag: </b> vol
187
+ #
188
+ has_many :volumes, 'BrNfe.volume_transporte_product_class'
189
+ alias_attribute :vol, :volumes
190
+
191
+ # Transportador da mercadoria
192
+ # Dados da transportadora que irá `transportar` a mercadoria.
193
+ #
194
+ # <b>Type: </b> _BrNfe.transportador_product_class_
195
+ # <b>Required: </b> _No_
196
+ # <b>Default: </b> _nil_
197
+ # <b>tag: </b> transporta
198
+ #
199
+ has_one :transportador, 'BrNfe.transportador_product_class'
200
+ alias_attribute :transporta, :transportador
201
+
202
+
203
+ def default_values
204
+ {
205
+ modalidade_frete: 9, # 9 = Sem frete
206
+ forma_transporte: :veiculo, # Define qualer tipo de veículo terrestre (Caminhão, van, etc..)
207
+ }
208
+ end
209
+
210
+ validates :modalidade_frete, inclusion: [0, '0', 1, '1', 2, '2', 9, '9']
211
+ validates :forma_transporte, presence: true
212
+ validates :forma_transporte, inclusion: [:veiculo, :balsa, :vagao]
213
+ validate_has_one :transportador
214
+
215
+ validate_has_many :volumes, message: :invalid_volume
216
+ validate_has_many :reboques, message: :invalid_reboque
217
+ validates :reboques, length: {maximum: 5}
218
+
219
+ with_options if: lambda { |rec| rec.have_carriage? && rec.forma_transporte_veiculo? } do |record|
220
+ record.validates :veiculo, presence: true
221
+ record.validate_has_one :veiculo
222
+ end
223
+ validates :identificacao_balsa, presence: true, if: lambda { |rec| rec.have_carriage? && rec.forma_transporte_balsa? }
224
+ validates :identificacao_vagao, presence: true, if: lambda { |rec| rec.have_carriage? && rec.forma_transporte_vagao? }
225
+
226
+ with_options if: :retencao_icms? do |record|
227
+ record.validates :retencao_codigo_municipio, :retencao_cfop, presence: true
228
+ record.validates :retencao_base_calculo_icms, numericality: true, allow_blank: true
229
+ record.validates :retencao_aliquota, numericality: {less_than: 100}, allow_blank: true
230
+ record.validates :retencao_valor_icms, numericality: true, allow_blank: true
231
+ end
232
+
233
+ def have_carriage?
234
+ modalidade_frete.to_i != 9
235
+ end
236
+
237
+ def forma_transporte_veiculo?
238
+ forma_transporte == :veiculo
239
+ end
240
+
241
+ def forma_transporte_balsa?
242
+ forma_transporte == :balsa
243
+ end
244
+
245
+ def forma_transporte_vagao?
246
+ forma_transporte == :vagao
247
+ end
248
+
249
+ private
250
+
251
+ ################################## CÁLCULOS ##################################
252
+ # Método utilizado apra calcular o valor do ICMS retido no caso
253
+ # de não informar o valor manualmente.
254
+ # O Cálculo é em base do valor da base de cálculo multiplicado
255
+ # pelo percentual da aliquota de retenção.
256
+ #
257
+ def calculate_retencao_valor_icms
258
+ ((retencao_aliquota.to_f/100.0)*retencao_base_calculo_icms.to_f).round(2)
259
+ end
260
+ end
261
+ end
262
+ end
263
+ end
264
+ end
@@ -0,0 +1,15 @@
1
+ module BrNfe
2
+ module Product
3
+ module Nfe
4
+ module Transporte
5
+ class Transportador < BrNfe::Person
6
+
7
+ private
8
+ def validate_regime_tributario?
9
+ false
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,53 @@
1
+ module BrNfe
2
+ module Product
3
+ module Nfe
4
+ module Transporte
5
+ class Veiculo < BrNfe::ActiveModelBase
6
+ # Placa do veículo (NT2011/004)
7
+ # Conforme a documentação oficial:
8
+ # Informar em um dos seguintes formatos: XXX9999, XXX999, XX9999 ou XXXX999.
9
+ # Informar a placa em informações complementares quando a placa do veículo
10
+ # tiver lei de formação diversa. (NT 2011/005)
11
+ # Porém a gem permite informar a placa com o - (hífen), Exemplo:
12
+ # XXX-0000, XXX9999, XXX999, XX9999 ou XXXX999.
13
+ # Esse attr só irá considerar as letras e números, onde as letras sempre
14
+ # vai converter para maiúsculo
15
+ #
16
+ # <b>Type: </b> _String_
17
+ # <b>Required: </b> _Yes_
18
+ # <b>tag: </b> placa
19
+ #
20
+ attr_accessor :placa
21
+ def placa
22
+ "#{@placa}".gsub(/[^\d\w]/, '').upcase
23
+ end
24
+
25
+ # Sigla da UF
26
+ #
27
+ # <b>Type: </b> _String_
28
+ # <b>Required: </b> _Yes_
29
+ # <b>Length: </b> _2_
30
+ # <b>tag: </b> UF
31
+ #
32
+ attr_accessor :uf
33
+
34
+ # Registro Nacional de Transportador de Carga (ANTT)
35
+ #
36
+ # <b>Type: </b> _String_
37
+ # <b>Required: </b> _No_
38
+ # <b>Length: </b> _max: 20_
39
+ # <b>tag: </b> RNTC
40
+ #
41
+ attr_accessor :rntc
42
+
43
+
44
+ validates :placa, :uf, presence: true
45
+ validates :uf, inclusion: { in: BrNfe::Constants::SIGLAS_UF} , allow_blank: true
46
+ validates :rntc, length: { maximum: 20 }
47
+ validates :placa, length: { is: 7 }
48
+
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,89 @@
1
+ module BrNfe
2
+ module Product
3
+ module Nfe
4
+ module Transporte
5
+ class Volume < BrNfe::ActiveModelBase
6
+ # Quantidade de volumes transportados
7
+ #
8
+ # <b>Type: </b> _Number_
9
+ # <b>Required: </b> _No_
10
+ # <b>tag: </b> qVol
11
+ #
12
+ attr_accessor :quantidade
13
+ alias_attribute :qVol, :quantidade
14
+
15
+ # Espécie dos volumes transportados
16
+ # Exemplo: 'CAIXA', 'SACOLA', 'MALOTE'
17
+ #
18
+ # <b>Type: </b> _String_
19
+ # <b>Required: </b> _No_
20
+ # <b>tag: </b> esp
21
+ #
22
+ attr_accessor :especie
23
+ alias_attribute :esp, :especie
24
+
25
+ # Marca dos volumes transportados
26
+ # Exemplo: 'LINDOYA', 'NIKE', 'COCA COLA'
27
+ #
28
+ # <b>Type: </b> _String_
29
+ # <b>Required: </b> _No_
30
+ # <b>tag: </b> marca
31
+ #
32
+ attr_accessor :marca
33
+
34
+ # Numeração dos volumes transportados
35
+ # Exemplo: 'EXT12124', '500'
36
+ #
37
+ # <b>Type: </b> _String_
38
+ # <b>Required: </b> _No_
39
+ # <b>tag: </b> nVol
40
+ #
41
+ attr_accessor :numercao
42
+ alias_attribute :nVol, :numercao
43
+
44
+ # Peso líquido do volume EM Kg
45
+ # Exemplo:
46
+ # 13.5 = 13 Kilos e 500 gramas
47
+ # 100.003 = 100 Kilos e 3 gramas
48
+ #
49
+ # <b>Type: </b> _Number_
50
+ # <b>Required: </b> _No_
51
+ # <b>tag: </b> pesoL
52
+ #
53
+ attr_accessor :peso_liquido
54
+ alias_attribute :pesoL, :peso_liquido
55
+
56
+ # Peso bruto do volume EM Kg
57
+ # Exemplo:
58
+ # 13.5 = 13 Kilos e 500 gramas
59
+ # 100.003 = 100 Kilos e 3 gramas
60
+ #
61
+ # <b>Type: </b> _Number_
62
+ # <b>Required: </b> _No_
63
+ # <b>tag: </b> pesoB
64
+ #
65
+ attr_accessor :peso_bruto
66
+ alias_attribute :pesoB, :peso_bruto
67
+
68
+ # Número dos Lacres (NT 2012/003)
69
+ # Exemplo:
70
+ # ['XYZ10231486', 123456879]
71
+ #
72
+ # <b>Type: </b> _Array_
73
+ # <b>Required: </b> _No_
74
+ # <b>Length: </b> _max: 5000_
75
+ # <b>tag: </b> lacres
76
+ #
77
+ attr_accessor :lacres
78
+ def lacres
79
+ @lacres = [@lacres].flatten.reject(&:blank?)
80
+ @lacres
81
+ end
82
+
83
+ validates :lacres, length: {maximum: 5_000}
84
+ validates :especie, :marca, :numercao, length: {maximum: 60}
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end