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,84 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Product::Operation::NfeRecepcaoEvento do
4
+ subject { FactoryGirl.build(:product_operation_nfe_recepcao_evento) }
5
+ let(:gateway) { FactoryGirl.build(:product_gateway_web_service_svrs) }
6
+
7
+ before do
8
+ subject.stubs(:gateway).returns(gateway)
9
+ end
10
+
11
+ describe '#aliases' do
12
+ it { must_have_alias_attribute :idLote, :numero_lote }
13
+ end
14
+
15
+ describe 'have one cancelamento' do
16
+ it { must_have_one :cancelamento, BrNfe.cancelamento_product_class, {protocolo_nfe: '12345', justificativa: 'Justi'} }
17
+ it { must_validate_have_one :cancelamento, BrNfe.cancelamento_product_class, :invalid_cancelamento }
18
+ end
19
+
20
+ describe 'Validations' do
21
+ it { must validate_presence_of(:numero_lote) }
22
+ it { must validate_length_of(:numero_lote).is_at_most(15) }
23
+ it { must validate_numericality_of(:numero_lote).only_integer }
24
+ it { must allow_value('123456789012345').for(:numero_lote) }
25
+ end
26
+
27
+ it 'o método #wsdl deve pegar o valor do método wsdl_recepcao_evento do gateway ' do
28
+ gateway.expects(:wsdl_recepcao_evento).returns('http://teste.wsdl_recepcao_evento.com')
29
+ subject.wsdl.must_equal 'http://teste.wsdl_recepcao_evento.com'
30
+ end
31
+
32
+ it 'o método #method_wsdl deve pegar o valor do método operation_recepcao_evento do gateway ' do
33
+ gateway.expects(:operation_recepcao_evento).returns(:operation_recepcao_evento)
34
+ subject.method_wsdl.must_equal :operation_recepcao_evento
35
+ end
36
+
37
+ it 'o método #gateway_xml_version deve pegar o valor do método version_xml_recepcao_evento do gateway ' do
38
+ gateway.expects(:version_xml_recepcao_evento).returns(:v3_20)
39
+ subject.gateway_xml_version.must_equal :v3_20
40
+ end
41
+
42
+ it 'o método #url_xmlns deve pegar o valor do método url_xmlns_recepcao_evento do gateway ' do
43
+ gateway.expects(:url_xmlns_recepcao_evento).returns('http://teste.url_xmlns_recepcao_evento.com')
44
+ subject.url_xmlns.must_equal 'http://teste.url_xmlns_recepcao_evento.com'
45
+ end
46
+
47
+ it 'o método #ssl_version deve pegar o valor do método ssl_version_recepcao_evento do gateway ' do
48
+ gateway.expects(:ssl_version_recepcao_evento).returns(:TLSv1)
49
+ subject.ssl_version.must_equal :TLSv1
50
+ end
51
+
52
+ describe '#xml_builder' do
53
+ it "Deve renderizar o XML e setar o valor na variavel @xml_builder" do
54
+ subject.expects(:render_xml).returns('<xml>OK</xml>')
55
+
56
+ subject.xml_builder.must_equal '<xml>OK</xml>'
57
+ subject.instance_variable_get(:@xml_builder).must_equal '<xml>OK</xml>'
58
+ end
59
+ it "Se já houver valor setado na variavel @xml_builder não deve renderizar o xml novamente" do
60
+ subject.instance_variable_set(:@xml_builder, '<xml>OK</xml>')
61
+ subject.expects(:render_xml).never
62
+ subject.xml_builder.must_equal '<xml>OK</xml>'
63
+ end
64
+ end
65
+
66
+ describe "Validação do XML para o Cancelamento através do XSD" do
67
+ context "Para emissores que utilizam a versão 1.00" do
68
+ before do
69
+ gateway.stubs(:version_xml_recepcao_evento).returns(:v1_00)
70
+ end
71
+ it "Deve ser válido em ambiente de produção" do
72
+ subject.env = :production
73
+ subject.valid?.must_equal true, "#{subject.errors.full_messages}"
74
+ nfe_must_be_valid_by_schema 'envEventoCancNFe_v1.00.xsd'
75
+ end
76
+ it "Deve ser válido em ambiente de homologação" do
77
+ subject.env = :test
78
+ subject.valid?.must_equal true, "#{subject.errors.full_messages}"
79
+ nfe_must_be_valid_by_schema 'envEventoCancNFe_v1.00.xsd'
80
+ end
81
+ end
82
+ end
83
+
84
+ end
@@ -0,0 +1,309 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Product::Operation::NfeRetAutorizacao do
4
+ subject { FactoryGirl.build(:product_operation_nfe_ret_autorizacao) }
5
+
6
+ let(:gateway) { FactoryGirl.build(:product_gateway_web_service_svrs) }
7
+ let(:nota_fiscal) { FactoryGirl.build(:product_nota_fiscal) }
8
+
9
+ before do
10
+ subject.stubs(:gateway).returns(gateway)
11
+ end
12
+
13
+ describe '#aliases' do
14
+ it { must_have_alias_attribute :nRec, :numero_recibo }
15
+ end
16
+
17
+ describe 'Validations' do
18
+ it { must validate_presence_of(:numero_recibo) }
19
+ it { must validate_length_of(:numero_recibo).is_at_most(15) }
20
+ it { must validate_numericality_of(:numero_recibo).only_integer }
21
+ it { must allow_value('123456789012345').for(:numero_recibo) }
22
+ end
23
+
24
+ it 'o método #url_xmlns deve pegar o valor do método url_xmlns_retorno_autorizacao do gateway ' do
25
+ gateway.expects(:url_xmlns_retorno_autorizacao).returns('http://teste.url_xmlns_retorno_autorizacao.com')
26
+ subject.url_xmlns.must_equal 'http://teste.url_xmlns_retorno_autorizacao.com'
27
+ end
28
+
29
+ it 'o método #wsdl deve pegar o valor do método wsdl_retorno_autorizacao do gateway ' do
30
+ gateway.expects(:wsdl_retorno_autorizacao).returns('http://teste.wsdl_retorno_autorizacao.com')
31
+ subject.wsdl.must_equal 'http://teste.wsdl_retorno_autorizacao.com'
32
+ end
33
+
34
+ it 'o método #method_wsdl deve pegar o valor do método operation_retorno_autorizacao do gateway ' do
35
+ gateway.expects(:operation_retorno_autorizacao).returns(:operation_retorno_autorizacao)
36
+ subject.method_wsdl.must_equal :operation_retorno_autorizacao
37
+ end
38
+
39
+ it 'o método #gateway_xml_version deve pegar o valor do método version_xml_retorno_autorizacao do gateway ' do
40
+ gateway.expects(:version_xml_retorno_autorizacao).returns(:v3_20)
41
+ subject.gateway_xml_version.must_equal :v3_20
42
+ end
43
+
44
+ describe '#xml_builder' do
45
+ it "Deve renderizar o XML e setar o valor na variavel @xml_builder" do
46
+ subject.expects(:render_xml).returns('<xml>OK</xml>')
47
+
48
+ subject.xml_builder.must_equal '<xml>OK</xml>'
49
+ subject.instance_variable_get(:@xml_builder).must_equal '<xml>OK</xml>'
50
+ end
51
+ it "Se já houver valor setado na variavel @xml_builder não deve renderizar o xml novamente" do
52
+ subject.instance_variable_set(:@xml_builder, '<xml>OK</xml>')
53
+ subject.expects(:render_xml).never
54
+ subject.xml_builder.must_equal '<xml>OK</xml>'
55
+ end
56
+ end
57
+
58
+ describe "Validação do XML através do XSD" do
59
+ describe 'for XML version 2.00' do
60
+ before { subject.stubs(:gateway_xml_version).returns(:v2_00) }
61
+ it "Deve ser válido em ambiente de produção" do
62
+ subject.env = :production
63
+ nfe_must_be_valid_by_schema 'consReciNFe_v2.00.xsd'
64
+ end
65
+ it "Deve ser válido em ambiente de homologação" do
66
+ subject.env = :test
67
+ nfe_must_be_valid_by_schema 'consReciNFe_v2.00.xsd'
68
+ end
69
+ end
70
+ describe 'for XML version 3.10' do
71
+ before { subject.stubs(:gateway_xml_version).returns(:v3_10) }
72
+ it "Deve ser válido em ambiente de produção" do
73
+ subject.env = :production
74
+ nfe_must_be_valid_by_schema 'consReciNFe_v3.10.xsd'
75
+ end
76
+ it "Deve ser válido em ambiente de homologação" do
77
+ subject.env = :test
78
+ nfe_must_be_valid_by_schema 'consReciNFe_v3.10.xsd'
79
+ end
80
+ end
81
+ end
82
+
83
+ describe 'REQUEST MUST BE SET RESPONSE CORRECTLY' do
84
+ let(:original_xml_lot) { read_fixture('product/response/v3.10/nfe_ret_autorizacao/original_xml/lot.xml') }
85
+ let(:original_xml_nfe) { read_fixture('product/response/v3.10/nfe_ret_autorizacao/original_xml/nfe.xml') }
86
+ let(:original_xml_nfeProc) { read_fixture('product/response/v3.10/nfe_ret_autorizacao/original_xml/nfeProc.xml') }
87
+ before do
88
+ savon.mock!
89
+ stub_request(:get, subject.wsdl).to_return(status: 200, body: read_fixture('product/wsdl/NFeRetAutorizacao.xml') )
90
+ end
91
+ after { savon.unmock! }
92
+
93
+ it "Quando o lote processou com erro deve setar o motivo e os demais valores" do
94
+ subject.original_xml = original_xml_lot
95
+ response_xml = read_fixture('product/response/v3.10/nfe_ret_autorizacao/lot_fail.xml')
96
+ savon.expects(gateway.operation_retorno_autorizacao).returns(response_xml)
97
+ subject.request
98
+ response = subject.response
99
+
100
+ response.must_be_kind_of BrNfe::Product::Response::NfeRetAutorizacao
101
+
102
+ response.environment.must_equal :test
103
+ response.app_version.must_equal 'SVRS201611281548'
104
+ response.processed_at.must_equal Time.parse('2016-12-20T16:11:28-02:00')
105
+ response.protocol.must_equal '423002169484138'
106
+ response.request_status.must_equal :success
107
+ response.processing_status_code.must_equal '106'
108
+ response.processing_status_motive.must_equal 'Lote não localizado'
109
+ response.processing_status.must_equal :error
110
+ response.notas_fiscais.must_be_empty
111
+ end
112
+
113
+ it "Deve instanciar a nota e setar os valores quando o lote processou porém a nota não foi autorizada" do
114
+ subject.original_xml = original_xml_nfeProc
115
+ response_xml = read_fixture('product/response/v3.10/nfe_ret_autorizacao/lot_ok_one_invoice_fail.xml')
116
+ savon.expects(gateway.operation_retorno_autorizacao).returns(response_xml)
117
+ subject.request
118
+ response = subject.response
119
+
120
+ response.environment.must_equal :test
121
+ response.app_version.must_equal 'SVRS201611281548'
122
+ response.processed_at.must_equal Time.parse('2016-12-20T14:29:28-02:00')
123
+ response.protocol.must_equal '423002169476281'
124
+ response.request_status.must_equal :success
125
+ response.processing_status_code.must_equal '104'
126
+ response.processing_status_motive.must_equal 'Lote processado'
127
+ response.processing_status.must_equal :success
128
+
129
+ response.notas_fiscais.size.must_equal 1
130
+ nf = response.notas_fiscais[0]
131
+
132
+ # Não deve adicionar o protocolo no XML se deu erro
133
+ nf.xml.must_equal read_fixture('product/response/v3.10/nfe_ret_autorizacao/nfe/nf_2_without_protocol.xml')
134
+
135
+ nf.protocol.must_equal ''
136
+ nf.digest_value.must_equal 'hBKuDGD3gRtlFDO5bT9VH/UWKBQ='
137
+ nf.processed_at.must_equal Time.parse('2016-12-20T14:29:28-02:00')
138
+ nf.status_code.must_equal '209'
139
+ nf.status_motive.must_equal 'Rejeicao: IE do emitente invalida'
140
+ nf.status.must_equal :error
141
+ end
142
+
143
+ it "Quando tiver mais de uma nota e 1 nota autorizou e a outra não eve setar os valores referentes a cada nota" do
144
+ subject.original_xml = original_xml_lot
145
+ response_xml = read_fixture('product/response/v3.10/nfe_ret_autorizacao/lot_ok_one_invoice_fail_and_one_ok.xml')
146
+ savon.expects(gateway.operation_retorno_autorizacao).returns(response_xml)
147
+ subject.request
148
+ response = subject.response
149
+
150
+ response.environment.must_equal :test
151
+ response.app_version.must_equal 'SVRS201611281548'
152
+ response.processed_at.must_equal Time.parse('2016-12-23T15:02:01-02:00')
153
+ response.protocol.must_equal '423002169623858'
154
+ response.request_status.must_equal :success
155
+ response.processing_status_code.must_equal '104'
156
+ response.processing_status_motive.must_equal 'Lote processado'
157
+ response.processing_status.must_equal :success
158
+
159
+ response.notas_fiscais.size.must_equal 2
160
+
161
+ nf1 = response.notas_fiscais[0]
162
+ nf1.xml.must_equal read_fixture('product/response/v3.10/nfe_ret_autorizacao/nfe/nf_2_without_protocol.xml')
163
+ nf1.protocol.must_equal ''
164
+ nf1.digest_value.must_equal ''
165
+ nf1.processed_at.must_equal Time.parse('2016-12-23T15:02:01-02:00')
166
+ nf1.status_code.must_equal '209'
167
+ nf1.status_motive.must_equal 'Rejeicao: IE do emitente invalida'
168
+ nf1.status.must_equal :error
169
+
170
+ nf2 = response.notas_fiscais[1]
171
+ nf2.xml.must_equal read_fixture('product/response/v3.10/nfe_ret_autorizacao/nfe/nf_3_with_protocol.xml')
172
+ nf2.protocol.must_equal '342160000820227'
173
+ nf2.digest_value.must_equal 'eoBzPod21zF9/46jjOS2kLRyTPM='
174
+ nf2.processed_at.must_equal Time.parse('2016-12-23T15:02:01-02:00')
175
+ nf2.status_code.must_equal '100'
176
+ nf2.status_motive.must_equal 'Autorizado o uso da NF-e'
177
+ nf2.status.must_equal :success
178
+ end
179
+ it "Quando tiver apenas uma nota e estiver autorizada" do
180
+ subject.original_xml = original_xml_nfe
181
+ response_xml = read_fixture('product/response/v3.10/nfe_ret_autorizacao/lot_ok_one_invoice_ok.xml')
182
+ savon.expects(gateway.operation_retorno_autorizacao).returns(response_xml)
183
+ subject.request
184
+ response = subject.response
185
+
186
+ response.environment.must_equal :test
187
+ response.app_version.must_equal 'SVRS201611281548'
188
+ response.processed_at.must_equal Time.parse('2016-12-20T16:11:28-02:00')
189
+ response.protocol.must_equal '423002169484138'
190
+ response.request_status.must_equal :success
191
+ response.processing_status_code.must_equal '104'
192
+ response.processing_status_motive.must_equal 'Lote processado'
193
+ response.processing_status.must_equal :success
194
+
195
+ response.notas_fiscais.size.must_equal 1
196
+
197
+ nf1 = response.notas_fiscais[0]
198
+ nf1.chave_de_acesso.must_equal '42161208897094000155550010000000021201601013'
199
+ nf1.xml.must_equal read_fixture('product/response/v3.10/nfe_ret_autorizacao/nfe/nf_2_with_protocol.xml')
200
+ nf1.protocol.must_equal '342160000785247'
201
+ nf1.digest_value.must_equal 'AcoglfmS7KCjv/XaaYO0T9ohlqM='
202
+ nf1.processed_at.must_equal Time.parse('2016-12-20T16:11:28-02:00')
203
+ nf1.status_code.must_equal '100'
204
+ nf1.status_motive.must_equal 'Autorizado o uso da NF-e'
205
+ nf1.status.must_equal :success
206
+ end
207
+
208
+ it "Quando tiver duas notas rejeitadas" do
209
+ subject.original_xml = original_xml_lot
210
+ response_xml = read_fixture('product/response/v3.10/nfe_ret_autorizacao/lot_ok_two_invoice_fail.xml')
211
+ savon.expects(gateway.operation_retorno_autorizacao).returns(response_xml)
212
+ subject.request
213
+ response = subject.response
214
+
215
+ response.environment.must_equal :test
216
+ response.app_version.must_equal 'SVRS201611281548'
217
+ response.processed_at.must_equal Time.parse('2016-12-23T15:02:01-02:00')
218
+ response.protocol.must_equal '423002169623858'
219
+ response.request_status.must_equal :success
220
+ response.processing_status_code.must_equal '104'
221
+ response.processing_status_motive.must_equal 'Lote processado'
222
+ response.processing_status.must_equal :success
223
+
224
+ response.notas_fiscais.size.must_equal 2
225
+
226
+ nf1 = response.notas_fiscais[0]
227
+ nf1.chave_de_acesso.must_equal '42161208897094000155550010000000021201601013'
228
+ nf1.xml.must_equal read_fixture('product/response/v3.10/nfe_ret_autorizacao/nfe/nf_2_without_protocol.xml')
229
+ nf1.protocol.must_equal ''
230
+ nf1.digest_value.must_equal ''
231
+ nf1.processed_at.must_equal Time.parse('2016-12-23T15:02:01-02:00')
232
+ nf1.status_code.must_equal '209'
233
+ nf1.status_motive.must_equal 'Rejeicao: IE do emitente invalida'
234
+ nf1.status.must_equal :error
235
+
236
+ nf2 = response.notas_fiscais[1]
237
+ nf2.chave_de_acesso.must_equal '42161208897094000155550010000000031201601010'
238
+ nf2.xml.must_equal read_fixture('product/response/v3.10/nfe_ret_autorizacao/nfe/nf_3_without_protocol.xml')
239
+ nf2.protocol.must_equal ''
240
+ nf2.digest_value.must_equal ''
241
+ nf2.processed_at.must_equal Time.parse('2016-12-23T15:02:02-02:00')
242
+ nf2.status_code.must_equal '216'
243
+ nf2.status_motive.must_equal 'Rejeição: Chave de Acesso difere da cadastrada'
244
+ nf2.status.must_equal :error
245
+ end
246
+
247
+ it "Quando tiver duas notas autorizadas" do
248
+ subject.original_xml = original_xml_lot
249
+ response_xml = read_fixture('product/response/v3.10/nfe_ret_autorizacao/lot_ok_two_invoice_ok.xml')
250
+ savon.expects(gateway.operation_retorno_autorizacao).returns(response_xml)
251
+ subject.request
252
+ response = subject.response
253
+
254
+ response.environment.must_equal :test
255
+ response.app_version.must_equal 'SVRS201611281548'
256
+ response.processed_at.must_equal Time.parse('2016-12-23T15:02:01-02:00')
257
+ response.protocol.must_equal '423002169623858'
258
+ response.request_status.must_equal :success
259
+ response.processing_status_code.must_equal '104'
260
+ response.processing_status_motive.must_equal 'Lote processado'
261
+ response.processing_status.must_equal :success
262
+
263
+ response.notas_fiscais.size.must_equal 2
264
+
265
+ nf1 = response.notas_fiscais[0]
266
+ nf1.chave_de_acesso.must_equal '42161208897094000155550010000000021201601013'
267
+ nf1.xml.must_equal read_fixture('product/response/v3.10/nfe_ret_autorizacao/nfe/nf_2_with_protocol.xml')
268
+ nf1.protocol.must_equal '342160000785247'
269
+ nf1.digest_value.must_equal 'AcoglfmS7KCjv/XaaYO0T9ohlqM='
270
+ nf1.processed_at.must_equal Time.parse('2016-12-20T16:11:28-02:00')
271
+ nf1.status_code.must_equal '100'
272
+ nf1.status_motive.must_equal 'Autorizado o uso da NF-e'
273
+ nf1.status.must_equal :success
274
+
275
+ nf2 = response.notas_fiscais[1]
276
+ nf2.xml.must_equal read_fixture('product/response/v3.10/nfe_ret_autorizacao/nfe/nf_3_with_protocol.xml')
277
+ nf2.protocol.must_equal '342160000820227'
278
+ nf2.digest_value.must_equal 'eoBzPod21zF9/46jjOS2kLRyTPM='
279
+ nf2.processed_at.must_equal Time.parse('2016-12-23T15:02:01-02:00')
280
+ nf2.status_code.must_equal '100'
281
+ nf2.status_motive.must_equal 'Autorizado o uso da NF-e'
282
+ nf2.status.must_equal :success
283
+ end
284
+
285
+ it "Se não Encontrar o XML da nota passada por parametro no original_xml não deve add um xml na nota" do
286
+ # Aqui é setado o 'XML' de uma nota que não está presente no protocolode autorização
287
+ subject.original_xml = '<?xml version="1.0" encoding="utf-8"?><nfeProc xmlns="http://www.portalfiscal.inf.br/nfe"'
288
+ subject.original_xml += ' versao="3.10"><NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe Id="NFe421612088970940001555500100000000201234567890" versao="3.10"></NFe></nfeProc>'
289
+
290
+ response_xml = read_fixture('product/response/v3.10/nfe_ret_autorizacao/lot_ok_one_invoice_ok.xml')
291
+ savon.expects(gateway.operation_retorno_autorizacao).returns(response_xml)
292
+ subject.request
293
+ response = subject.response
294
+
295
+ response.environment.must_equal :test
296
+ response.app_version.must_equal 'SVRS201611281548'
297
+ response.processed_at.must_equal Time.parse('2016-12-20T16:11:28-02:00')
298
+ response.protocol.must_equal '423002169484138'
299
+ response.request_status.must_equal :success
300
+ response.processing_status_code.must_equal '104'
301
+ response.processing_status_motive.must_equal 'Lote processado'
302
+ response.processing_status.must_equal :success
303
+
304
+ response.notas_fiscais.size.must_equal 1
305
+ response.notas_fiscais[0].xml.must_be_nil
306
+ end
307
+ end
308
+
309
+ end
@@ -0,0 +1,122 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Product::Operation::NfeStatusServico do
4
+ subject { FactoryGirl.build(:product_operation_nfe_status_servico) }
5
+ let(:gateway) { FactoryGirl.build(:product_gateway_web_service_svrs) }
6
+
7
+ before do
8
+ subject.stubs(:gateway).returns(gateway)
9
+ end
10
+
11
+ it 'o método #url_xmlns deve pegar o valor do método url_xmlns_status_servico do gateway ' do
12
+ gateway.expects(:url_xmlns_status_servico).returns('http://teste.url_xmlns_status_servico.com')
13
+ subject.url_xmlns.must_equal 'http://teste.url_xmlns_status_servico.com'
14
+ end
15
+
16
+ it 'o método #wsdl deve pegar o valor do método wsdl_status_servico do gateway ' do
17
+ gateway.expects(:wsdl_status_servico).returns('http://teste.wsdl_status_servico.com')
18
+ subject.wsdl.must_equal 'http://teste.wsdl_status_servico.com'
19
+ end
20
+
21
+ it 'o método #method_wsdl deve pegar o valor do método operation_status_servico do gateway ' do
22
+ gateway.expects(:operation_status_servico).returns(:operation_status_servico)
23
+ subject.method_wsdl.must_equal :operation_status_servico
24
+ end
25
+
26
+ it 'o método #gateway_xml_version deve pegar o valor do método version_xml_status_servico do gateway ' do
27
+ gateway.expects(:version_xml_status_servico).returns(:v3_20)
28
+ subject.gateway_xml_version.must_equal :v3_20
29
+ end
30
+
31
+ describe '#xml_builder' do
32
+ it "Deve renderizar o XML e setar o valor na variavel @xml_builder" do
33
+ subject.expects(:render_xml).returns('<xml>OK</xml>')
34
+
35
+ subject.xml_builder.must_equal '<xml>OK</xml>'
36
+ subject.instance_variable_get(:@xml_builder).must_equal '<xml>OK</xml>'
37
+ end
38
+ it "Se já houver valor setado na variavel @xml_builder não deve renderizar o xml novamente" do
39
+ subject.instance_variable_set(:@xml_builder, '<xml>OK</xml>')
40
+ subject.expects(:render_xml).never
41
+ subject.xml_builder.must_equal '<xml>OK</xml>'
42
+ end
43
+ end
44
+
45
+ describe "Validação do XML através do XSD" do
46
+ describe 'for XML version 2.00' do
47
+ before { subject.stubs(:gateway_xml_version).returns(:v2_00) }
48
+ it "Deve ser válido em ambiente de produção" do
49
+ subject.env = :production
50
+ nfe_must_be_valid_by_schema 'consStatServ_v2.00.xsd'
51
+ end
52
+ it "Deve ser válido em ambiente de homologação" do
53
+ subject.env = :test
54
+ nfe_must_be_valid_by_schema 'consStatServ_v2.00.xsd'
55
+ end
56
+ end
57
+ describe 'for XML version 3.10' do
58
+ before { subject.stubs(:gateway_xml_version).returns(:v3_10) }
59
+ it "Deve ser válido em ambiente de produção" do
60
+ subject.env = :production
61
+ nfe_must_be_valid_by_schema 'consStatServ_v3.10.xsd'
62
+ end
63
+ it "Deve ser válido em ambiente de homologação" do
64
+ subject.env = :test
65
+ nfe_must_be_valid_by_schema 'consStatServ_v3.10.xsd'
66
+ end
67
+ end
68
+ end
69
+
70
+ describe 'REQUEST MUST BE SET RESPONSE CORRECTLY' do
71
+ let(:xml_success) { read_fixture('product/response/v3.10/nfe_status_servico/success.xml') }
72
+ let(:xml_fail) { read_fixture('product/response/v3.10/nfe_status_servico/fail.xml') }
73
+ before do
74
+ savon.mock!
75
+ stub_request(:get, subject.wsdl).to_return(status: 200, body: read_fixture('product/wsdl/NfeStatusServico2.xml') )
76
+ end
77
+ after { savon.unmock! }
78
+
79
+ it "Quando serviço estiver ONLINE" do
80
+ savon.expects(subject.method_wsdl).returns(xml_success)
81
+ subject.request
82
+ response = subject.response
83
+
84
+ response.environment.must_equal :production
85
+ response.app_version.must_equal 'SVRS201610061549'
86
+ response.processed_at.must_equal Time.parse('2017-01-05T17:26:03-02:00')
87
+ response.protocol.must_be_nil
88
+ response.request_status.must_equal :success
89
+ response.processing_status_code.must_equal '107'
90
+ response.processing_status_motive.must_equal 'Servico em Operacao'
91
+ response.processing_status.must_equal :success
92
+
93
+ response.uf.must_equal '42'
94
+ response.average_time.must_equal 1
95
+ response.observation.must_equal ''
96
+ response.return_prevision.must_be_nil
97
+ response.status.must_equal :online
98
+ end
99
+
100
+ it "Quando serviço estiver OFFLINE" do
101
+ savon.expects(subject.method_wsdl).returns(xml_fail)
102
+ subject.request
103
+ response = subject.response
104
+
105
+ response.environment.must_equal :test
106
+ response.app_version.must_equal 'SVRS201610061549'
107
+ response.processed_at.must_equal Time.parse('2017-01-05T17:26:03-02:00')
108
+ response.protocol.must_be_nil
109
+ response.request_status.must_equal :success
110
+ response.processing_status_code.must_equal '108'
111
+ response.processing_status_motive.must_equal 'Serviço Paralisado Temporariamente'
112
+ response.processing_status.must_equal :offline
113
+
114
+ response.uf.must_equal '42'
115
+ response.average_time.must_equal 0
116
+ response.observation.must_equal 'NOSSO WEBSERVEICE É UMA BOSTA'
117
+ response.return_prevision.must_equal Time.parse('2017-01-05T17:30:03-02:00')
118
+ response.status.must_equal :offline
119
+ end
120
+ end
121
+
122
+ end
@@ -0,0 +1,75 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Product::Response::Base do
4
+ subject { FactoryGirl.build(:product_response_base) }
5
+
6
+ describe '#aliases' do
7
+ it { must_have_alias_attribute :tpAmb, :environment, 2, :test }
8
+ it { must_have_alias_attribute :verAplic, :app_version }
9
+ it { must_have_alias_attribute :dhRecbto, :processed_at, '2016-06-06T16:00:00 -0200', Time.parse('2016-06-06T16:00:00 -02:00') }
10
+ it { must_have_alias_attribute :nRec, :protocol }
11
+ it { must_have_alias_attribute :cStat, :processing_status_code }
12
+ it { must_have_alias_attribute :xMotivo, :processing_status_motive }
13
+ end
14
+
15
+ describe '#environment' do
16
+ it "se for setado o valor '1' deve retornar o valor :production" do
17
+ subject.environment = 1
18
+ subject.environment.must_equal :production
19
+ subject.environment = '1'
20
+ subject.environment.must_equal :production
21
+ end
22
+ it "se for setado qualquer outro valor diferente de '1' deve retornar o valor :test" do
23
+ subject.environment = 2
24
+ subject.environment.must_equal :test
25
+ subject.environment = '2'
26
+ subject.environment.must_equal :test
27
+ subject.environment = 'Y'
28
+ subject.environment.must_equal :test
29
+ end
30
+ end
31
+
32
+ describe '#processed_successfully?' do
33
+ it "deve retornar true se #processing_status for :success" do
34
+ subject.expects(:processing_status).returns(:success)
35
+ subject.processed_successfully?.must_equal true
36
+ end
37
+ it "deve retornar false se #processing_status for doferente de :success" do
38
+ subject.expects(:processing_status).returns(:other)
39
+ subject.processed_successfully?.must_equal false
40
+ end
41
+ end
42
+
43
+ describe '#processing_status' do
44
+ it 'Deve retornar :success se o processing_status_code estiver entre os valores da constante NFE_STATUS_SUCCESS' do
45
+ BrNfe::Constants::NFE_STATUS_SUCCESS.each do |code|
46
+ subject.processing_status_code = code
47
+ subject.processing_status.must_equal :success
48
+ end
49
+ end
50
+ it 'Deve retornar :processing se o processing_status_code estiver entre os valores da constante NFE_STATUS_PROCESSING' do
51
+ BrNfe::Constants::NFE_STATUS_PROCESSING.each do |code|
52
+ subject.processing_status_code = code
53
+ subject.processing_status.must_equal :processing
54
+ end
55
+ end
56
+ it 'Deve retornar :offline se o processing_status_code estiver entre os valores da constante NFE_STATUS_OFFLINE' do
57
+ BrNfe::Constants::NFE_STATUS_OFFLINE.each do |code|
58
+ subject.processing_status_code = code
59
+ subject.processing_status.must_equal :offline
60
+ end
61
+ end
62
+ it 'Deve retornar :denied se o processing_status_code estiver entre os valores da constante NFE_STATUS_DENIED' do
63
+ BrNfe::Constants::NFE_STATUS_DENIED.each do |code|
64
+ subject.processing_status_code = code
65
+ subject.processing_status.must_equal :denied
66
+ end
67
+ end
68
+ it "deve retornar o status :error para qualquer outro código que não esteja entre os códigos testados anteriormente" do
69
+ subject.processing_status_code = '000'
70
+ subject.processing_status.must_equal :error
71
+ subject.processing_status_code = '1000'
72
+ subject.processing_status.must_equal :error
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,34 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Product::Response::Build::Base do
4
+ subject { FactoryGirl.build(:product_response_build_base) }
5
+
6
+ describe '#response' do
7
+ context "é responsável por instanciar e setar os valores da resposta para cada operação" do
8
+ it "deve setar os valores :soap_xml com o xml presente no attr savon_response " do
9
+ subject.savon_response = Nokogiri::XML('<?xml version="1.0" encoding="UTF-8"?><tag>1<tag>')
10
+ subject.savon_response.stubs(:xml).returns('<?xml version="1.0" encoding="UTF-8"?><tag>1<tag>')
11
+
12
+ subject.response.soap_xml.must_equal '<?xml version="1.0" encoding="UTF-8"?><tag>1<tag>'
13
+ end
14
+ it "Deve setar o status da requisição com :success" do
15
+ subject.response.request_status.must_equal :success
16
+ end
17
+ it "deve setar os atributos especificos para cada operação" do
18
+ subject.expects(:specific_attributes).returns({app_version: '1', protocol: '2'})
19
+
20
+ resp = subject.response
21
+ resp.app_version.must_equal '1'
22
+ resp.protocol.must_equal '2'
23
+ subject.instance_variable_get(:@response).must_equal resp
24
+ end
25
+ it "se já tiver valor na variavel @response não deve tentar instanciar novamnete" do
26
+ subject.instance_variable_set(:@response, 'resp')
27
+
28
+ subject.expects(:response_class).never
29
+
30
+ subject.response.must_equal 'resp'
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,14 @@
1
+ require 'test_helper'
2
+
3
+ describe BrNfe::Product::Response::NfeRetAutorizacao do
4
+ subject { FactoryGirl.build(:product_response_nfe_ret_autorizacao) }
5
+
6
+ it "Deve Herdar de BrNfe::Product::Response::Base" do
7
+ subject.class.superclass.must_equal BrNfe::Product::Response::Base
8
+ end
9
+
10
+ it "Deve ter um has_many para as notas fiscais" do
11
+ must_have_many(:notas_fiscais, BrNfe.nota_fiscal_product_class, {codigo_nf: '1233', serie: '1'})
12
+ end
13
+
14
+ end