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,99 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Product::Nfe::ItemTax::IcmsUfDestino do
4
+ subject { FactoryGirl.build(:product_item_tax_icms_uf_destino) }
5
+
6
+ describe 'Alias attributes' do
7
+ it { must_have_alias_attribute :vBCUFDest, :total_base_calculo }
8
+ it { must_have_alias_attribute :pFCPUFDest, :percentual_fcp }
9
+ it { must_have_alias_attribute :pICMSUFDest, :aliquota_interna_uf_destino }
10
+ it { must_have_alias_attribute :pICMSInter, :aliquota_interestadual }
11
+ it { must_have_alias_attribute :pICMSInterPart, :percentual_partilha_destino }
12
+ it { must_have_alias_attribute :vFCPUFDest, :total_fcp_destino }
13
+ it { must_have_alias_attribute :vICMSUFDest, :total_destino }
14
+ it { must_have_alias_attribute :vICMSUFRemet, :total_origem }
15
+ end
16
+
17
+ describe 'Validations' do
18
+ describe '#total_base_calculo' do
19
+ it { must validate_presence_of(:total_base_calculo) }
20
+ it { must validate_numericality_of(:total_base_calculo).is_greater_than_or_equal_to(0.0).allow_nil }
21
+ end
22
+ describe '#aliquota_interna_uf_destino' do
23
+ it { must validate_presence_of(:aliquota_interna_uf_destino) }
24
+ it { must validate_numericality_of(:aliquota_interna_uf_destino).is_greater_than_or_equal_to(0.0).allow_nil }
25
+ end
26
+ describe '#aliquota_interestadual' do
27
+ it { must validate_presence_of(:aliquota_interestadual) }
28
+ it { must validate_numericality_of(:aliquota_interestadual).
29
+ is_greater_than_or_equal_to(0.0).
30
+ is_less_than_or_equal_to(99.99).
31
+ allow_nil
32
+ }
33
+ end
34
+ describe '#percentual_partilha_destino' do
35
+ it { must validate_numericality_of(:percentual_partilha_destino).
36
+ is_greater_than_or_equal_to(0.0).
37
+ is_less_than_or_equal_to(100.0).
38
+ allow_nil
39
+ }
40
+ end
41
+ describe '#percentual_fcp' do
42
+ it { must validate_numericality_of(:percentual_fcp).
43
+ is_greater_than_or_equal_to(0.0).
44
+ is_less_than_or_equal_to(2.0).
45
+ allow_nil
46
+ }
47
+ end
48
+ describe '#total_fcp_destino' do
49
+ it { must validate_numericality_of(:total_fcp_destino).
50
+ is_greater_than_or_equal_to(0.0).
51
+ allow_nil
52
+ }
53
+ end
54
+ describe '#total_destino' do
55
+ it { must validate_presence_of(:total_destino) }
56
+ it { must validate_numericality_of(:total_destino).is_greater_than_or_equal_to(0.0).allow_nil }
57
+ end
58
+ describe '#total_origem' do
59
+ it { must validate_presence_of(:total_origem) }
60
+ it { must validate_numericality_of(:total_origem).is_greater_than_or_equal_to(0.0).allow_nil }
61
+ end
62
+ end
63
+
64
+ describe '#percentual_partilha_destino' do
65
+ it "se for setado um valor, deve considerar esse valor" do
66
+ subject.percentual_partilha_destino = 77.00
67
+ subject.percentual_partilha_destino.must_equal 77.00
68
+ end
69
+ context "quando o valor estiver nil" do
70
+ before { subject.percentual_partilha_destino = nil }
71
+ it "se o ano for 2016 deve retornar 40%" do
72
+ date = Date.parse('31/12/2016')
73
+ Date.stubs(:current).returns(date)
74
+ subject.percentual_partilha_destino.must_equal 40.0
75
+ end
76
+ it "se o ano for 2017 deve retornar 60%" do
77
+ date = Date.parse('31/12/2017')
78
+ Date.stubs(:current).returns(date)
79
+ subject.percentual_partilha_destino.must_equal 60.0
80
+ end
81
+ it "se o ano for 2018 deve retornar 80%" do
82
+ date = Date.parse('31/12/2018')
83
+ Date.stubs(:current).returns(date)
84
+ subject.percentual_partilha_destino.must_equal 80.0
85
+ end
86
+ it "se o ano for 2019 deve retornar 100%" do
87
+ date = Date.parse('31/12/2019')
88
+ Date.stubs(:current).returns(date)
89
+ subject.percentual_partilha_destino.must_equal 100.0
90
+ end
91
+ it "se o ano for maior que 2019 deve retornar 100%" do
92
+ date = Date.parse('31/12/2020')
93
+ Date.stubs(:current).returns(date)
94
+ subject.percentual_partilha_destino.must_equal 100.0
95
+ end
96
+
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,23 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Product::Nfe::ItemTax::Importacao do
4
+ subject { FactoryGirl.build(:product_item_tax_importacao) }
5
+
6
+ describe 'Alias attributes' do
7
+ it { must_have_alias_attribute :vBC, :total_base_calculo }
8
+ it { must_have_alias_attribute :vDespAdu, :total_despesas_aduaneiras }
9
+ it { must_have_alias_attribute :vII, :total_imposto }
10
+ it { must_have_alias_attribute :vIOF, :total_iof }
11
+ end
12
+
13
+ describe 'Validations' do
14
+ it { must validate_presence_of(:total_base_calculo) }
15
+ it { must validate_numericality_of(:total_base_calculo).is_greater_than_or_equal_to(0.0).allow_nil }
16
+ it { must validate_presence_of(:total_despesas_aduaneiras) }
17
+ it { must validate_numericality_of(:total_despesas_aduaneiras).is_greater_than_or_equal_to(0.0).allow_nil }
18
+ it { must validate_presence_of(:total_imposto) }
19
+ it { must validate_numericality_of(:total_imposto).is_greater_than_or_equal_to(0.0).allow_nil }
20
+ it { must validate_presence_of(:total_iof) }
21
+ it { must validate_numericality_of(:total_iof).is_greater_than_or_equal_to(0.0).allow_nil }
22
+ end
23
+ end
@@ -0,0 +1,160 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Product::Nfe::ItemTax::Ipi do
4
+ subject { FactoryGirl.build(:product_item_tax_ipi) }
5
+
6
+ describe 'Alias attributes' do
7
+ it { must_have_alias_attribute :CST, :codigo_cst, '01' }
8
+ it { must_have_alias_attribute :clEnq, :classe_enquadramento}
9
+ it { must_have_alias_attribute :CNPJProd, :cnpj_produtor, '001'}
10
+ it { must_have_alias_attribute :cSelo, :codigo_selo}
11
+ it { must_have_alias_attribute :qSelo, :quantidade_selo, '1'}
12
+ it { must_have_alias_attribute :vBC, :base_calculo}
13
+ it { must_have_alias_attribute :pIPI, :aliquota}
14
+ it { must_have_alias_attribute :qUnid, :quantidade_unidade}
15
+ it { must_have_alias_attribute :vUnid, :total_unidade}
16
+ it { must_have_alias_attribute :vIPI, :total}
17
+ end
18
+
19
+ describe 'Default values' do
20
+ it { subject.class.new.codigo_enquadramento.must_equal '999' }
21
+ end
22
+
23
+ describe 'Validations' do
24
+ context '#codigo_cst' do
25
+ it { must validate_presence_of(:codigo_cst) }
26
+ it { must validate_inclusion_of(:codigo_cst).in_array(%w[00 01 02 03 04 05 49 50 51 52 53 54 55 99]) }
27
+ end
28
+ context '#classe_enquadramento' do
29
+ it { must allow_value('').for(:classe_enquadramento) }
30
+ it { must validate_length_of(:classe_enquadramento).is_at_most(5) }
31
+ end
32
+ context '#cnpj_produtor' do
33
+ before { MiniTest::Spec.string_for_validation_length = '1' }
34
+ after { MiniTest::Spec.string_for_validation_length = 'x' }
35
+ it { must allow_value('').for(:cnpj_produtor) }
36
+ it { must validate_length_of(:cnpj_produtor).is_equal_to(14) }
37
+ end
38
+ context '#codigo_selo' do
39
+ it { must allow_value('').for(:codigo_selo) }
40
+ it { must validate_length_of(:codigo_selo).is_at_most(60) }
41
+ end
42
+ context '#quantidade_selo' do
43
+ before { MiniTest::Spec.string_for_validation_length = '1' }
44
+ after { MiniTest::Spec.string_for_validation_length = 'x' }
45
+ it { must allow_value('').for(:quantidade_selo) }
46
+ it { must validate_length_of(:quantidade_selo).is_at_most(12) }
47
+ end
48
+ context '#codigo_enquadramento' do
49
+ it { must validate_presence_of(:codigo_enquadramento) }
50
+ it { must validate_length_of(:codigo_enquadramento).is_at_most(3) }
51
+ end
52
+ describe "CST 00" do
53
+ before { subject.codigo_cst = '00' }
54
+ it { must validate_presence_of(:total) }
55
+ it { must validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
56
+ end
57
+ describe "CST 01" do
58
+ before { subject.codigo_cst = '01' }
59
+ it { wont validate_presence_of(:total) }
60
+ it { wont validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
61
+ end
62
+ describe "CST 02" do
63
+ before { subject.codigo_cst = '02' }
64
+ it { wont validate_presence_of(:total) }
65
+ it { wont validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
66
+ end
67
+ describe "CST 03" do
68
+ before { subject.codigo_cst = '03' }
69
+ it { wont validate_presence_of(:total) }
70
+ it { wont validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
71
+ end
72
+ describe "CST 04" do
73
+ before { subject.codigo_cst = '04' }
74
+ it { wont validate_presence_of(:total) }
75
+ it { wont validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
76
+ end
77
+ describe "CST 05" do
78
+ before { subject.codigo_cst = '05' }
79
+ it { wont validate_presence_of(:total) }
80
+ it { wont validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
81
+ end
82
+ describe "CST 49" do
83
+ before { subject.codigo_cst = '49' }
84
+ it { must validate_presence_of(:total) }
85
+ it { must validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
86
+ end
87
+ describe "CST 50" do
88
+ before { subject.codigo_cst = '50' }
89
+ it { must validate_presence_of(:total) }
90
+ it { must validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
91
+ end
92
+ describe "CST 51" do
93
+ before { subject.codigo_cst = '51' }
94
+ it { wont validate_presence_of(:total) }
95
+ it { wont validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
96
+ end
97
+ describe "CST 52" do
98
+ before { subject.codigo_cst = '52' }
99
+ it { wont validate_presence_of(:total) }
100
+ it { wont validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
101
+ end
102
+ describe "CST 53" do
103
+ before { subject.codigo_cst = '53' }
104
+ it { wont validate_presence_of(:total) }
105
+ it { wont validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
106
+ end
107
+ describe "CST 54" do
108
+ before { subject.codigo_cst = '54' }
109
+ it { wont validate_presence_of(:total) }
110
+ it { wont validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
111
+ end
112
+ describe "CST 55" do
113
+ before { subject.codigo_cst = '55' }
114
+ it { wont validate_presence_of(:total) }
115
+ it { wont validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
116
+ end
117
+ describe "CST 99" do
118
+ before { subject.codigo_cst = '99' }
119
+ it { must validate_presence_of(:total) }
120
+ it { must validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
121
+ end
122
+ end
123
+
124
+ describe '#codigo_cst' do
125
+ it "deve sempre retornar uam string" do
126
+ subject.codigo_cst = 100
127
+ subject.codigo_cst.must_equal '100'
128
+ end
129
+ it "deve ajustar o valor para 2 posições adicionando zeros" do
130
+ subject.codigo_cst = 0
131
+ subject.codigo_cst.must_equal '00'
132
+ end
133
+ it "se não tiver valor setado deve retornar nil" do
134
+ subject.codigo_cst = ''
135
+ subject.codigo_cst.must_be_nil
136
+ end
137
+ end
138
+
139
+ describe '#cnpj_produtor' do
140
+ it "deve retornar apenas os numeros setados" do
141
+ subject.cnpj_produtor = '00.000.000/0001-00'
142
+ subject.cnpj_produtor.must_equal '00000000000100'
143
+ end
144
+ it "se setar um valor inteiro deve retornar em forma de string" do
145
+ subject.cnpj_produtor = 1234567890
146
+ subject.cnpj_produtor.must_equal '1234567890'
147
+ end
148
+ end
149
+
150
+ describe '#quantidade_selo' do
151
+ it "deve retornar apenas os numeros setados" do
152
+ subject.quantidade_selo = 'A001B'
153
+ subject.quantidade_selo.must_equal '001'
154
+ end
155
+ it "se setar um valor inteiro deve retornar em forma de string" do
156
+ subject.quantidade_selo = 123
157
+ subject.quantidade_selo.must_equal '123'
158
+ end
159
+ end
160
+ end
@@ -0,0 +1,84 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Product::Nfe::ItemTax::Issqn do
4
+ subject { FactoryGirl.build(:product_item_tax_issqn) }
5
+
6
+ describe "Default values" do
7
+ it { must_have_default_value_for :indicador_iss, 1 }
8
+ it { must_have_default_value_for :incentivo_fiscal, false }
9
+ end
10
+ describe 'Alias attributes' do
11
+ it { must_have_alias_attribute :vBC, :total_base_calculo }
12
+ it { must_have_alias_attribute :vAliq, :aliquota }
13
+ it { must_have_alias_attribute :vISSQN, :total }
14
+ it { must_have_alias_attribute :cMunFG, :municipio_ocorrencia, '1' }
15
+ it { must_have_alias_attribute :cListServ, :codigo_servico, '1' }
16
+ it { must_have_alias_attribute :vDeducao, :total_deducao_bc }
17
+ it { must_have_alias_attribute :vOutro, :total_outras_retencoes }
18
+ it { must_have_alias_attribute :vDescIncond, :total_desconto_incondicionado }
19
+ it { must_have_alias_attribute :vDescCond, :total_desconto_condicionado }
20
+ it { must_have_alias_attribute :vISSRet, :total_iss_retido }
21
+ it { must_have_alias_attribute :indISS, :indicador_iss, 1 }
22
+ it { must_have_alias_attribute :cServico, :codigo_servico_municipio }
23
+ it { must_have_alias_attribute :cMun, :municipio_incidencia }
24
+ it { must_have_alias_attribute :cPais, :codigo_pais }
25
+ it { must_have_alias_attribute :nProcesso, :numero_processo }
26
+ it { must_have_alias_attribute :indIncentivo, :incentivo_fiscal, true }
27
+ end
28
+
29
+ describe 'Validations' do
30
+ before { MiniTest::Spec.string_for_validation_length = '1' }
31
+ after { MiniTest::Spec.string_for_validation_length = 'x' }
32
+
33
+ it { must validate_presence_of(:indicador_iss) }
34
+ it { must validate_presence_of(:codigo_servico) }
35
+ it { must validate_presence_of(:total_base_calculo) }
36
+ it { must validate_presence_of(:aliquota) }
37
+ it { must validate_presence_of(:total) }
38
+ it { must validate_presence_of(:municipio_ocorrencia) }
39
+
40
+ it { must validate_inclusion_of(:indicador_iss).in_array([1,2,3,4,5,6,7]) }
41
+
42
+ it { must validate_numericality_of(:total_base_calculo).is_greater_than_or_equal_to(0.0).allow_nil }
43
+ it { must validate_numericality_of(:aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
44
+ it { must validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
45
+
46
+ it { must validate_length_of(:codigo_pais).is_at_most(4) }
47
+ it { must validate_length_of(:municipio_ocorrencia).is_at_most(7) }
48
+ it { must validate_length_of(:municipio_incidencia).is_at_most(7) }
49
+ it { must validate_length_of(:codigo_servico_municipio).is_at_most(20) }
50
+ it { must validate_length_of(:numero_processo).is_at_most(30) }
51
+ end
52
+
53
+ describe 'Valores formatados' do
54
+ it { must_returns_a_boolean_for :incentivo_fiscal }
55
+ it { must_accept_only_numbers :municipio_ocorrencia }
56
+ it { must_returns_a_integer_for :indicador_iss }
57
+ describe '#codigo_servico' do
58
+ it "se setar um valor já formatado deve retornar esse mesmo valor" do
59
+ subject.codigo_servico = '7.90'
60
+ subject.codigo_servico.must_equal '7.90'
61
+ end
62
+ it "se setar um valor inteiro deve formatar para NN.NN" do
63
+ subject.codigo_servico = 1785
64
+ subject.codigo_servico.must_equal '17.85'
65
+ end
66
+ it "se setar um valor inteiro com apenas 1 caracter deve retornar esse unico caractere" do
67
+ subject.codigo_servico = 1
68
+ subject.codigo_servico.must_equal '1'
69
+ end
70
+ it "se setar um valor com mais de 4 posições deve formatar mesmo assim" do
71
+ subject.codigo_servico = 123456
72
+ subject.codigo_servico.must_equal '12.34.56'
73
+ end
74
+ it "se setar nil deve retornar o um valor em branco e não da erro" do
75
+ subject.codigo_servico = nil
76
+ subject.codigo_servico.must_be_nil
77
+ end
78
+ it "deve ignorar os Zeros da frente do número" do
79
+ subject.codigo_servico = '0458'
80
+ subject.codigo_servico.must_equal '4.58'
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Product::Nfe::ItemTax::PisSt do
4
+ subject { FactoryGirl.build(:product_item_tax_pis_st) }
5
+
6
+ describe 'Alias attributes' do
7
+ it { must_have_alias_attribute :vBC, :total_base_calculo }
8
+ it { must_have_alias_attribute :pPIS, :aliquota }
9
+ it { must_have_alias_attribute :vPIS, :total }
10
+ it { must_have_alias_attribute :qBCProd, :quantidade_vendida }
11
+ it { must_have_alias_attribute :vAliqProd, :total_aliquota }
12
+ end
13
+
14
+ describe 'Validations' do
15
+ it { must validate_presence_of(:total) }
16
+ it { must validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
17
+ it { must validate_numericality_of(:quantidade_vendida).is_greater_than_or_equal_to(0.0).allow_nil }
18
+ it { must validate_numericality_of(:total_aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
19
+ it { must validate_numericality_of(:total_base_calculo).is_greater_than_or_equal_to(0.0).allow_nil }
20
+ it { must validate_numericality_of(:aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
21
+ end
22
+ end
@@ -0,0 +1,113 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Product::Nfe::ItemTax::Pis do
4
+ subject { FactoryGirl.build(:product_item_tax_pis) }
5
+
6
+ describe 'Alias attributes' do
7
+ it { must_have_alias_attribute :CST, :codigo_cst, '01' }
8
+ it { must_have_alias_attribute :vBC, :total_base_calculo }
9
+ it { must_have_alias_attribute :pPIS, :aliquota }
10
+ it { must_have_alias_attribute :vPIS, :total }
11
+ it { must_have_alias_attribute :qBCProd, :quantidade_vendida }
12
+ it { must_have_alias_attribute :vAliqProd, :total_aliquota }
13
+ end
14
+
15
+ it { must_have_default_value_for(:codigo_cst, '07') }
16
+
17
+ describe 'Validations' do
18
+ context '#codigo_cst' do
19
+ it { must validate_presence_of(:codigo_cst) }
20
+ it { must validate_inclusion_of(:codigo_cst).in_array(%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]) }
21
+ end
22
+ context "CST 01" do
23
+ before { subject.codigo_cst = '01' }
24
+ it { must validate_presence_of(:total_base_calculo) }
25
+ it { must validate_numericality_of(:total_base_calculo).is_greater_than_or_equal_to(0.0).allow_nil }
26
+ it { must validate_presence_of(:aliquota) }
27
+ it { must validate_numericality_of(:aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
28
+ it { must validate_presence_of(:total) }
29
+ it { must validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
30
+
31
+ it { wont validate_presence_of(:quantidade_vendida) }
32
+ it { wont validate_numericality_of(:quantidade_vendida).is_greater_than_or_equal_to(0.0).allow_nil }
33
+ it { wont validate_presence_of(:total_aliquota) }
34
+ it { wont validate_numericality_of(:total_aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
35
+ end
36
+ context "CST 02" do
37
+ before { subject.codigo_cst = '02' }
38
+ it { must validate_presence_of(:total_base_calculo) }
39
+ it { must validate_numericality_of(:total_base_calculo).is_greater_than_or_equal_to(0.0).allow_nil }
40
+ it { must validate_presence_of(:aliquota) }
41
+ it { must validate_numericality_of(:aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
42
+ it { must validate_presence_of(:total) }
43
+ it { must validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
44
+
45
+ it { wont validate_presence_of(:quantidade_vendida) }
46
+ it { wont validate_numericality_of(:quantidade_vendida).is_greater_than_or_equal_to(0.0).allow_nil }
47
+ it { wont validate_presence_of(:total_aliquota) }
48
+ it { wont validate_numericality_of(:total_aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
49
+ end
50
+ context "CST 03" do
51
+ before { subject.codigo_cst = '03' }
52
+ it { must validate_presence_of(:quantidade_vendida) }
53
+ it { must validate_numericality_of(:quantidade_vendida).is_greater_than_or_equal_to(0.0).allow_nil }
54
+ it { must validate_presence_of(:total_aliquota) }
55
+ it { must validate_numericality_of(:total_aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
56
+ it { must validate_presence_of(:total) }
57
+ it { must validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
58
+
59
+ it { wont validate_presence_of(:total_base_calculo) }
60
+ it { wont validate_numericality_of(:total_base_calculo).is_greater_than_or_equal_to(0.0).allow_nil }
61
+ it { wont validate_presence_of(:aliquota) }
62
+ it { wont validate_numericality_of(:aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
63
+ end
64
+
65
+ context "CSTs 04, 05, 06, 07, 08 e 09" do
66
+ %w[04 05 06 07 08 09].each do |cst|
67
+ before { subject.codigo_cst = cst }
68
+ it { wont validate_presence_of(:quantidade_vendida) }
69
+ it { wont validate_numericality_of(:quantidade_vendida).is_greater_than_or_equal_to(0.0).allow_nil }
70
+ it { wont validate_presence_of(:total_aliquota) }
71
+ it { wont validate_numericality_of(:total_aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
72
+ it { wont validate_presence_of(:total) }
73
+ it { wont validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
74
+ it { wont validate_presence_of(:total_base_calculo) }
75
+ it { wont validate_numericality_of(:total_base_calculo).is_greater_than_or_equal_to(0.0).allow_nil }
76
+ it { wont validate_presence_of(:aliquota) }
77
+ it { wont validate_numericality_of(:aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
78
+ end
79
+ end
80
+
81
+ context "CST 49..99" do
82
+ %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].each do |cst|
83
+ before { subject.codigo_cst = cst }
84
+ it { must validate_presence_of(:total) }
85
+ it { must validate_numericality_of(:total).is_greater_than_or_equal_to(0.0).allow_nil }
86
+
87
+ it { wont validate_presence_of(:quantidade_vendida) }
88
+ it { wont validate_numericality_of(:quantidade_vendida).is_greater_than_or_equal_to(0.0).allow_nil }
89
+ it { wont validate_presence_of(:total_aliquota) }
90
+ it { wont validate_numericality_of(:total_aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
91
+ it { wont validate_presence_of(:total_base_calculo) }
92
+ it { wont validate_numericality_of(:total_base_calculo).is_greater_than_or_equal_to(0.0).allow_nil }
93
+ it { wont validate_presence_of(:aliquota) }
94
+ it { wont validate_numericality_of(:aliquota).is_greater_than_or_equal_to(0.0).allow_nil }
95
+ end
96
+ end
97
+ end
98
+
99
+ describe '#codigo_cst' do
100
+ it "deve sempre retornar uam string" do
101
+ subject.codigo_cst = 100
102
+ subject.codigo_cst.must_equal '100'
103
+ end
104
+ it "deve ajustar o valor para 2 posições adicionando zeros" do
105
+ subject.codigo_cst = 0
106
+ subject.codigo_cst.must_equal '00'
107
+ end
108
+ it "se não tiver valor setado deve retornar nil" do
109
+ subject.codigo_cst = ''
110
+ subject.codigo_cst.must_be_nil
111
+ end
112
+ end
113
+ end