br_nfe 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/Gemfile +1 -0
- data/Gemfile.lock +12 -2
- data/README.markdown +3 -1
- data/Rakefile +20 -1
- data/lib/br_nfe/active_model/associations.rb +11 -0
- data/lib/br_nfe/active_model/has_many.rb +65 -0
- data/lib/br_nfe/active_model/has_one.rb +57 -0
- data/lib/br_nfe/active_model_base.rb +38 -1
- data/lib/br_nfe/base.rb +9 -0
- data/lib/br_nfe/calculos/fatores_de_multiplicacao.rb +67 -0
- data/lib/br_nfe/calculos/modulo11.rb +54 -0
- data/lib/br_nfe/calculos/modulo11_fator_de2a9.rb +83 -0
- data/lib/br_nfe/calculos/modulo11_fator_de2a9_resto_zero.rb +29 -0
- data/lib/br_nfe/constants.rb +46 -1
- data/lib/br_nfe/endereco.rb +6 -2
- data/lib/br_nfe/helper/cpf_cnpj.rb +8 -1
- data/lib/br_nfe/person.rb +32 -3
- data/lib/br_nfe/product/destinatario.rb +45 -0
- data/lib/br_nfe/product/emitente.rb +14 -1
- data/lib/br_nfe/product/evento/base.rb +146 -0
- data/lib/br_nfe/product/evento/cancelamento.rb +46 -0
- data/lib/br_nfe/product/gateway/base.rb +16 -43
- data/lib/br_nfe/product/gateway/web_service_am.rb +140 -0
- data/lib/br_nfe/product/gateway/web_service_ba.rb +140 -0
- data/lib/br_nfe/product/gateway/web_service_ce.rb +162 -0
- data/lib/br_nfe/product/gateway/web_service_go.rb +140 -0
- data/lib/br_nfe/product/gateway/web_service_mg.rb +140 -0
- data/lib/br_nfe/product/gateway/web_service_ms.rb +140 -0
- data/lib/br_nfe/product/gateway/web_service_mt.rb +140 -0
- data/lib/br_nfe/product/gateway/web_service_pe.rb +140 -0
- data/lib/br_nfe/product/gateway/web_service_pr.rb +140 -0
- data/lib/br_nfe/product/gateway/web_service_rs.rb +140 -0
- data/lib/br_nfe/product/gateway/web_service_sp.rb +140 -0
- data/lib/br_nfe/product/gateway/web_service_svan.rb +162 -0
- data/lib/br_nfe/product/gateway/web_service_svc_an.rb +131 -0
- data/lib/br_nfe/product/gateway/web_service_svc_rs.rb +20 -0
- data/lib/br_nfe/product/gateway/web_service_svrs.rb +111 -10
- data/lib/br_nfe/product/nf_xml_value.rb +278 -0
- data/lib/br_nfe/product/nfe/adicao_importacao.rb +76 -0
- data/lib/br_nfe/product/nfe/cobranca/duplicata.rb +44 -0
- data/lib/br_nfe/product/nfe/cobranca/fatura.rb +64 -0
- data/lib/br_nfe/product/nfe/cobranca/pagamento.rb +99 -0
- data/lib/br_nfe/product/nfe/declaracao_importacao.rb +221 -0
- data/lib/br_nfe/product/nfe/detalhe_exportacao.rb +89 -0
- data/lib/br_nfe/product/nfe/item.rb +678 -0
- data/lib/br_nfe/product/nfe/item_tax/cofins.rb +138 -0
- data/lib/br_nfe/product/nfe/item_tax/cofins_st.rb +68 -0
- data/lib/br_nfe/product/nfe/item_tax/icms.rb +593 -0
- data/lib/br_nfe/product/nfe/item_tax/icms_uf_destino.rb +169 -0
- data/lib/br_nfe/product/nfe/item_tax/importacao.rb +62 -0
- data/lib/br_nfe/product/nfe/item_tax/ipi.rb +179 -0
- data/lib/br_nfe/product/nfe/item_tax/issqn.rb +256 -0
- data/lib/br_nfe/product/nfe/item_tax/pis.rb +138 -0
- data/lib/br_nfe/product/nfe/item_tax/pis_st.rb +68 -0
- data/lib/br_nfe/product/nfe/processo_referencia.rb +48 -0
- data/lib/br_nfe/product/nfe/transporte/base.rb +264 -0
- data/lib/br_nfe/product/nfe/transporte/transportador.rb +15 -0
- data/lib/br_nfe/product/nfe/transporte/veiculo.rb +53 -0
- data/lib/br_nfe/product/nfe/transporte/volume.rb +89 -0
- data/lib/br_nfe/product/nota_fiscal.rb +1173 -0
- data/lib/br_nfe/product/operation/base.rb +255 -0
- data/lib/br_nfe/product/operation/nfe_autorizacao.rb +118 -0
- data/lib/br_nfe/product/operation/nfe_consulta_protocolo.rb +61 -0
- data/lib/br_nfe/product/operation/nfe_download_nf.rb +86 -0
- data/lib/br_nfe/product/operation/nfe_inutilizacao.rb +168 -0
- data/lib/br_nfe/product/operation/nfe_recepcao_evento.rb +70 -0
- data/lib/br_nfe/product/operation/nfe_ret_autorizacao.rb +63 -0
- data/lib/br_nfe/product/operation/nfe_status_servico.rb +46 -0
- data/lib/br_nfe/product/response/base.rb +97 -0
- data/lib/br_nfe/product/response/build/base.rb +287 -0
- data/lib/br_nfe/product/response/build/nfe_autorizacao.rb +102 -0
- data/lib/br_nfe/product/response/build/nfe_consulta_protocolo.rb +133 -0
- data/lib/br_nfe/product/response/build/nfe_inutilizacao.rb +53 -0
- data/lib/br_nfe/product/response/build/nfe_ret_autorizacao.rb +65 -0
- data/lib/br_nfe/product/response/build/nfe_status_servico.rb +43 -0
- data/lib/br_nfe/product/response/event.rb +89 -0
- data/lib/br_nfe/product/response/nfe_autorizacao.rb +12 -0
- data/lib/br_nfe/product/response/nfe_consulta_protocolo.rb +13 -0
- data/lib/br_nfe/product/response/nfe_inutilizacao.rb +89 -0
- data/lib/br_nfe/product/response/nfe_ret_autorizacao.rb +9 -0
- data/lib/br_nfe/product/response/nfe_status_servico.rb +31 -0
- data/lib/br_nfe/product/xml/_signed_info_sh1.xml.slim +9 -0
- data/lib/br_nfe/product/xml/_tc_cpf_cnpj.xml.slim +7 -0
- data/lib/br_nfe/product/xml/signature_sh1.xml.slim +12 -0
- data/lib/br_nfe/product/xml/v1_00/evento/infEventoCancelamento.xml.slim +19 -0
- data/lib/br_nfe/product/xml/v1_00/root/NfeDownloadNf.xml.slim +5 -0
- data/lib/br_nfe/product/xml/v1_00/root/NfeRecepcaoEvento.xml.slim +7 -0
- data/lib/br_nfe/product/xml/v2_00/_tc_endereco.xml.slim +19 -0
- data/lib/br_nfe/product/xml/v2_00/_tc_infNFe.xml.slim +39 -0
- data/lib/br_nfe/product/xml/v2_00/infInut.xml.slim +12 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/NFe.xml.slim +4 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_cobr.xml.slim +19 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_dest.xml.slim +14 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_det.xml.slim +7 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_emit.xml.slim +19 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_entrega.xml.slim +11 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_exporta.xml.slim +2 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_ide.xml.slim +24 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_infAdic.xml.slim +13 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_retirada.xml.slim +11 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_total.xml.slim +50 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/_tc_transp.xml.slim +35 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/_tc_imposto.xml.slim +31 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/_tc_prod.xml.slim +37 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS00.xml.slim +6 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS10.xml.slim +16 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS101.xml.slim +4 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS102.xml.slim +3 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS20.xml.slim +6 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS201.xml.slim +15 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS202.xml.slim +14 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS30.xml.slim +12 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS40.xml.slim +7 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS500.xml.slim +6 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS51.xml.slim +13 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS60.xml.slim +5 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS70.xml.slim +18 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS90.xml.slim +21 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/ICMS/_tc_ICMS900.xml.slim +25 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_COFINS.xml.slim +26 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_COFINS_ST.xml.slim +7 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_ICMS.xml.slim +45 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_II.xml.slim +4 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_IPI.xml.slim +30 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_PIS.xml.slim +26 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/imposto/_tc_PIS_ST.xml.slim +7 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/det/prod/_tc_di.xml.slim +13 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/transp/_tc_retTransp.xml.slim +6 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/transp/_tc_transporta.xml.slim +17 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe/transp/_tc_vol.xml.slim +15 -0
- data/lib/br_nfe/product/xml/v2_00/infNFe.xml.slim +3 -0
- data/lib/br_nfe/product/xml/v2_00/root/NfeAutorizacao.xml.slim +5 -0
- data/lib/br_nfe/product/xml/v2_00/root/NfeInutilizacao.xml.slim +4 -0
- data/lib/br_nfe/product/xml/v2_00/root/NfeRetAutorizacao.xml.slim +3 -0
- data/lib/br_nfe/product/xml/v2_00/root/NfeStatusServico.xml.slim +4 -0
- data/lib/br_nfe/product/xml/v2_01/root/NfeConsultaProtocolo.xml.slim +4 -0
- data/lib/br_nfe/product/xml/v3_10/_tc_infNFe.xml.slim +44 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/_tc_dest.xml.slim +25 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/_tc_det.xml.slim +14 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/_tc_exporta.xml.slim +4 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/_tc_ide.xml.slim +26 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/_tc_pag.xml.slim +7 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/_tc_total.xml.slim +78 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/_tc_imposto.xml.slim +37 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/_tc_prod.xml.slim +48 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/ICMS/_tc_ICMS20.xml.slim +12 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/ICMS/_tc_ICMS30.xml.slim +17 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/ICMS/_tc_ICMS40.xml.slim +7 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/ICMS/_tc_ICMS51.xml.slim +19 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/ICMS/_tc_ICMS70.xml.slim +23 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/ICMS/_tc_ICMS90.xml.slim +26 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/_tc_ICMSUFDest.xml.slim +8 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/_tc_ISSQN.xml.slim +35 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/prod/_tc_det_export.xml.slim +8 -0
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/prod/_tc_di.xml.slim +28 -0
- data/lib/br_nfe/product/xml/v3_10/root/NfeAutorizacao.xml.slim +6 -0
- data/lib/br_nfe/service/base.rb +1 -105
- data/lib/br_nfe/service/betha/v1/cancela_nfse.rb +1 -1
- data/lib/br_nfe/service/response/default.rb +1 -1
- data/lib/br_nfe/service/simpliss/v1/base.rb +2 -0
- data/lib/br_nfe/version.rb +2 -2
- data/lib/br_nfe.rb +180 -22
- data/lib/config/locales/br_nfe/en/product/nfe/cobranca/fatura.yml +6 -0
- data/lib/config/locales/br_nfe/en/product/nfe/declaracao_importacao.yml +10 -0
- data/lib/config/locales/br_nfe/en/product/nfe/item.yml +20 -0
- data/lib/config/locales/br_nfe/en/product/nfe/item_tax/icms_uf_destino.yml +8 -0
- data/lib/config/locales/br_nfe/en/product/nfe/transporte/base.yml +9 -0
- data/lib/config/locales/br_nfe/en/product/nota_fiscal.yml +21 -0
- data/lib/config/locales/br_nfe/en/product/operation/nfe_autorizacao.yml +10 -0
- data/lib/config/locales/br_nfe/en/product/operation/nfe_recepcao_evento.yml +6 -0
- data/lib/config/locales/br_nfe/pt-BR/product/nfe/cobranca/fatura.yml +6 -0
- data/lib/config/locales/br_nfe/pt-BR/product/nfe/declaracao_importacao.yml +10 -0
- data/lib/config/locales/br_nfe/pt-BR/product/nfe/item.yml +20 -0
- data/lib/config/locales/br_nfe/pt-BR/product/nfe/item_tax/icms_uf_destino.yml +8 -0
- data/lib/config/locales/br_nfe/pt-BR/product/nfe/transporte/base.yml +9 -0
- data/lib/config/locales/br_nfe/pt-BR/product/nota_fiscal.yml +21 -0
- data/lib/config/locales/br_nfe/pt-BR/product/operation/nfe_autorizacao.yml +10 -0
- data/lib/config/locales/br_nfe/pt-BR/product/operation/nfe_recepcao_evento.yml +6 -0
- data/test/br_nfe/association/have_destinatario_test.rb +8 -8
- data/test/br_nfe/association/have_emitente_test.rb +6 -6
- data/test/br_nfe/base_test.rb +15 -4
- data/test/br_nfe/endereco_test.rb +15 -0
- data/test/br_nfe/person_test.rb +55 -6
- data/test/br_nfe/product/destinatario_test.rb +26 -0
- data/test/br_nfe/product/emitente_test.rb +1 -2
- data/test/br_nfe/product/evento/base_test.rb +58 -0
- data/test/br_nfe/product/evento/cancelamento_test.rb +32 -0
- data/test/br_nfe/product/gateway/web_service_am_test.rb +242 -0
- data/test/br_nfe/product/gateway/web_service_ba_test.rb +242 -0
- data/test/br_nfe/product/gateway/web_service_ce_test.rb +242 -0
- data/test/br_nfe/product/gateway/web_service_go_test.rb +242 -0
- data/test/br_nfe/product/gateway/web_service_mg_test.rb +242 -0
- data/test/br_nfe/product/gateway/web_service_ms_test.rb +242 -0
- data/test/br_nfe/product/gateway/web_service_mt_test.rb +408 -0
- data/test/br_nfe/product/gateway/web_service_pe_test.rb +408 -0
- data/test/br_nfe/product/gateway/web_service_pr_test.rb +408 -0
- data/test/br_nfe/product/gateway/web_service_rs_test.rb +407 -0
- data/test/br_nfe/product/gateway/web_service_sp_test.rb +408 -0
- data/test/br_nfe/product/gateway/web_service_svan_test.rb +242 -0
- data/test/br_nfe/product/gateway/web_service_svc_an_test.rb +185 -0
- data/test/br_nfe/product/gateway/web_service_svc_rs_test.rb +185 -0
- data/test/br_nfe/product/gateway/web_service_svrs_test.rb +208 -2
- data/test/br_nfe/product/nfe/adicao_importacao_test.rb +19 -0
- data/test/br_nfe/product/nfe/cobranca/duplicata_test.rb +19 -0
- data/test/br_nfe/product/nfe/cobranca/fatura_test.rb +32 -0
- data/test/br_nfe/product/nfe/cobranca/pagamento_test.rb +105 -0
- data/test/br_nfe/product/nfe/declaracao_importacao_test.rb +116 -0
- data/test/br_nfe/product/nfe/detalhe_exportacao_test.rb +97 -0
- data/test/br_nfe/product/nfe/item_tax/cofins_st_test.rb +22 -0
- data/test/br_nfe/product/nfe/item_tax/cofins_test.rb +113 -0
- data/test/br_nfe/product/nfe/item_tax/icms_test.rb +1011 -0
- data/test/br_nfe/product/nfe/item_tax/icms_uf_destino_test.rb +99 -0
- data/test/br_nfe/product/nfe/item_tax/importacao_test.rb +23 -0
- data/test/br_nfe/product/nfe/item_tax/ipi_test.rb +160 -0
- data/test/br_nfe/product/nfe/item_tax/issqn_test.rb +84 -0
- data/test/br_nfe/product/nfe/item_tax/pis_st_test.rb +22 -0
- data/test/br_nfe/product/nfe/item_tax/pis_test.rb +113 -0
- data/test/br_nfe/product/nfe/item_test.rb +381 -0
- data/test/br_nfe/product/nfe/processo_referencia_test.rb +30 -0
- data/test/br_nfe/product/nfe/transporte/base_test.rb +182 -0
- data/test/br_nfe/product/nfe/transporte/transportador_test.rb +13 -0
- data/test/br_nfe/product/nfe/transporte/veiculo_test.rb +13 -0
- data/test/br_nfe/product/nfe/transporte/volume_test.rb +42 -0
- data/test/br_nfe/product/nota_fiscal_test.rb +662 -0
- data/test/br_nfe/product/operation/base_test.rb +538 -0
- data/test/br_nfe/product/operation/nfe_autorizacao_test.rb +378 -0
- data/test/br_nfe/product/operation/nfe_consulta_protocolo_test.rb +349 -0
- data/test/br_nfe/product/operation/nfe_download_nf_test.rb +93 -0
- data/test/br_nfe/product/operation/nfe_inutilizacao_test.rb +210 -0
- data/test/br_nfe/product/operation/nfe_recepcao_evento_test.rb +84 -0
- data/test/br_nfe/product/operation/nfe_ret_autorizacao_test.rb +309 -0
- data/test/br_nfe/product/operation/nfe_status_servico_test.rb +122 -0
- data/test/br_nfe/product/response/base_test.rb +75 -0
- data/test/br_nfe/product/response/build/base_test.rb +34 -0
- data/test/br_nfe/product/response/nfe_ret_autorizacao_test.rb +14 -0
- data/test/br_nfe/service/association/have_intermediario_test.rb +10 -10
- data/test/br_nfe/service/base_test.rb +9 -206
- data/test/br_nfe/service/betha/v1/cancela_nfse_test.rb +8 -6
- data/test/br_nfe/service/betha/v1/consulta_lote_rps_test.rb +6 -3
- data/test/br_nfe/service/betha/v1/consulta_nfs_por_rps_test.rb +6 -3
- data/test/br_nfe/service/betha/v1/consulta_nfse_test.rb +7 -4
- data/test/br_nfe/service/betha/v1/consulta_situacao_lote_rps_test.rb +12 -9
- data/test/br_nfe/service/betha/v1/recepcao_lote_rps_test.rb +6 -3
- data/test/br_nfe/service/rps_test.rb +2 -2
- data/test/br_nfe/service/simpliss/v1/cancela_nfse_test.rb +6 -3
- data/test/br_nfe/service/simpliss/v1/consulta_lote_rps_test.rb +7 -4
- data/test/br_nfe/service/simpliss/v1/consulta_nfs_por_rps_test.rb +7 -4
- data/test/br_nfe/service/simpliss/v1/consulta_nfse_test.rb +8 -5
- data/test/br_nfe/service/simpliss/v1/consulta_situacao_lote_rps_test.rb +9 -6
- data/test/br_nfe/service/simpliss/v1/recepcao_lote_rps_test.rb +6 -3
- data/test/br_nfe/service/thema/v1/cancela_nfse_test.rb +6 -3
- data/test/br_nfe/service/thema/v1/consulta_lote_rps_test.rb +6 -3
- data/test/br_nfe/service/thema/v1/consulta_nfs_por_rps_test.rb +6 -3
- data/test/br_nfe/service/thema/v1/consulta_nfse_test.rb +8 -5
- data/test/br_nfe/service/thema/v1/consulta_situacao_lote_rps_test.rb +9 -6
- data/test/br_nfe/service/thema/v1/recepcao_lote_rps_limitado_test.rb +6 -3
- data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test.rb +6 -3
- data/test/factories/person.rb +1 -1
- data/test/factories/product/destinatario.rb +11 -0
- data/test/factories/product/emitente.rb +1 -1
- data/test/factories/product/evento/base.rb +9 -0
- data/test/factories/product/evento/cancelamento.rb +10 -0
- data/test/factories/product/gateway/web_service_am.rb +5 -0
- data/test/factories/product/gateway/web_service_ba.rb +5 -0
- data/test/factories/product/nfe/adicao_importacao.rb +7 -0
- data/test/factories/product/nfe/cobranca/duplicata.rb +7 -0
- data/test/factories/product/nfe/cobranca/fatura.rb +8 -0
- data/test/factories/product/nfe/cobranca/pagamento.rb +9 -0
- data/test/factories/product/nfe/declaracao_importacao.rb +10 -0
- data/test/factories/product/nfe/detalhe_exportacao.rb +5 -0
- data/test/factories/product/nfe/item.rb +24 -0
- data/test/factories/product/nfe/item_tax/cofins.rb +5 -0
- data/test/factories/product/nfe/item_tax/cofins_st.rb +5 -0
- data/test/factories/product/nfe/item_tax/icms.rb +9 -0
- data/test/factories/product/nfe/item_tax/icms_uf_destino.rb +11 -0
- data/test/factories/product/nfe/item_tax/importacao.rb +8 -0
- data/test/factories/product/nfe/item_tax/ipi.rb +6 -0
- data/test/factories/product/nfe/item_tax/issqn.rb +9 -0
- data/test/factories/product/nfe/item_tax/pis.rb +5 -0
- data/test/factories/product/nfe/item_tax/pis_st.rb +5 -0
- data/test/factories/product/nfe/processo_referencia.rb +6 -0
- data/test/factories/product/nfe/transporte/base.rb +5 -0
- data/test/factories/product/nfe/transporte/transportador.rb +7 -0
- data/test/factories/product/nfe/transporte/veiculo.rb +7 -0
- data/test/factories/product/nfe/transporte/volume.rb +5 -0
- data/test/factories/product/nota_fiscal.rb +22 -0
- data/test/factories/product/{base.rb → operation/base.rb} +1 -1
- data/test/factories/product/operation/nfe_autorizacao.rb +590 -0
- data/test/factories/product/operation/nfe_consulta_protocolo.rb +13 -0
- data/test/factories/product/operation/nfe_download_nf.rb +15 -0
- data/test/factories/product/operation/nfe_inutilizacao.rb +19 -0
- data/test/factories/product/operation/nfe_recepcao_evento.rb +14 -0
- data/test/factories/product/operation/nfe_ret_autorizacao.rb +13 -0
- data/test/factories/product/{consulta_status_servico.rb → operation/nfe_status_servico.rb} +1 -1
- data/test/factories/product/response/base.rb +12 -0
- data/test/factories/product/response/build/base.rb +6 -0
- data/test/factories/product/response/nfe_ret_autorizacao.rb +13 -0
- data/test/factories/service/emitente.rb +1 -1
- data/test/fixtures/product/operation/nfe_autorizacao/nfe_signed.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_autorizacao/async_fail.xml +21 -0
- data/test/fixtures/product/response/v3.10/nfe_autorizacao/async_success.xml +25 -0
- data/test/fixtures/product/response/v3.10/nfe_autorizacao/nfe/with_proc.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_autorizacao/nfe/without_proc.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_autorizacao/original_xml.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_autorizacao/sync_fail.xml +32 -0
- data/test/fixtures/product/response/v3.10/nfe_autorizacao/sync_success.xml +33 -0
- data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/event_xml/event_1.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/event_xml/event_2.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/event_xml/event_3.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/event_xml/event_cancel.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/event_xml/one_event.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/fail.xml +22 -0
- data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/nfe_original/with_proc.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/nfe_original/without_proc.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/success_many_with_cancel.xml +198 -0
- data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/success_many_without_cancel.xml +199 -0
- data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/success_one.xml +89 -0
- data/test/fixtures/product/response/v3.10/nfe_consulta_protocolo/success_without.xml +34 -0
- data/test/fixtures/product/response/v3.10/nfe_inutilizacao/fail.xml +29 -0
- data/test/fixtures/product/response/v3.10/nfe_inutilizacao/success.xml +30 -0
- data/test/fixtures/product/response/v3.10/nfe_recepcao_evento/cancelamento/fail.xml +34 -0
- data/test/fixtures/product/response/v3.10/nfe_recepcao_evento/cancelamento/success.xml +36 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/lot_fail.xml +22 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/lot_ok_one_invoice_fail.xml +33 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/lot_ok_one_invoice_fail_and_one_ok.xml +46 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/lot_ok_one_invoice_ok.xml +34 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/lot_ok_two_invoice_fail.xml +46 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/lot_ok_two_invoice_ok.xml +46 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/nfe/nf_2_with_protocol.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/nfe/nf_2_without_protocol.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/nfe/nf_3_with_protocol.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/nfe/nf_3_without_protocol.xml +1 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/original_xml/lot.xml +2 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/original_xml/nfe.xml +2 -0
- data/test/fixtures/product/response/v3.10/nfe_ret_autorizacao/original_xml/nfeProc.xml +4 -0
- data/test/fixtures/product/response/v3.10/nfe_status_servico/fail.xml +23 -0
- data/test/fixtures/product/response/v3.10/nfe_status_servico/success.xml +22 -0
- data/test/fixtures/product/schemas/CCe_v1.00.xsd +11 -0
- data/test/fixtures/product/schemas/EPEC_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/LeiauteCadastroEmissorDFe_v1.01.xsd +234 -0
- data/test/fixtures/product/schemas/SuframaInternaliza_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/SuframaVistoria_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/atuCadEmiDFe_v1.01.xsd +9 -0
- data/test/fixtures/product/schemas/cabecMsg_v1.02.xsd +29 -0
- data/test/fixtures/product/schemas/cadEmiDFe_v1.01.xsd +9 -0
- data/test/fixtures/product/schemas/cancNFe_v2.00.xsd +9 -0
- data/test/fixtures/product/schemas/confRecebto_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/consCad_v2.00.xsd +9 -0
- data/test/fixtures/product/schemas/consDPEC_v1.01.xsd +9 -0
- data/test/fixtures/product/schemas/consNFeDest_v1.01.xsd +10 -0
- data/test/fixtures/product/schemas/consReciNFe_v2.00.xsd +9 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/consReciNFe_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/consSitNFe_v2.01.xsd +10 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/consSitNFe_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/consStatServ_v2.00.xsd +9 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/consStatServ_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/distDFeInt_v1.00.xsd +71 -0
- data/test/fixtures/product/schemas/downloadNFe_v1.00.xsd +10 -0
- data/test/fixtures/product/schemas/e110110_v1.00.xsd +58 -0
- data/test/fixtures/product/schemas/e110111_v1.00.xsd +42 -0
- data/test/fixtures/product/schemas/e110140_v1.00.xsd +124 -0
- data/test/fixtures/product/schemas/e111500_v1.00.xsd +69 -0
- data/test/fixtures/product/schemas/e111501_v1.00.xsd +69 -0
- data/test/fixtures/product/schemas/e111502_v1.00.xsd +50 -0
- data/test/fixtures/product/schemas/e111503_v1.00.xsd +50 -0
- data/test/fixtures/product/schemas/e210200_v1.00.xsd +32 -0
- data/test/fixtures/product/schemas/e210210_v1.00.xsd +32 -0
- data/test/fixtures/product/schemas/e210220_v1.00.xsd +45 -0
- data/test/fixtures/product/schemas/e210240_v1.00.xsd +44 -0
- data/test/fixtures/product/schemas/e411500_v1.00.xsd +134 -0
- data/test/fixtures/product/schemas/e411501_v1.00.xsd +134 -0
- data/test/fixtures/product/schemas/e411502_v1.00.xsd +95 -0
- data/test/fixtures/product/schemas/e411503_v1.00.xsd +95 -0
- data/test/fixtures/product/schemas/e990900_v1.00.xsd +87 -0
- data/test/fixtures/product/schemas/e990910_v1.00.xsd +81 -0
- data/test/fixtures/product/schemas/envCCe_v1.00.xsd +10 -0
- data/test/fixtures/product/schemas/envCancelPProrrogNFe_v1.0.xsd +50 -0
- data/test/fixtures/product/schemas/envConfRecebto_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/envDPEC_v1.01.xsd +9 -0
- data/test/fixtures/product/schemas/envEPEC_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/envEventoCancNFe_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/envEvento_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/envFiscoNfe_v1.0.xsd +179 -0
- data/test/fixtures/product/schemas/envPProrrogNFe_v1.0.xsd +65 -0
- data/test/fixtures/product/schemas/envRemIndus_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/envSuframaInternaliza_v1.00.xsd +10 -0
- data/test/fixtures/product/schemas/envSuframaVistoria_v1.00.xsd +10 -0
- data/test/fixtures/product/schemas/enviNFe_v2.00.xsd +9 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/enviNFe_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/eventoCancNFe_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/eventoEPEC_v0.01.xsd +267 -0
- data/test/fixtures/product/schemas/eventoEPEC_v1.00.xsd +267 -0
- data/test/fixtures/product/schemas/eventoRemIndus_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/inutNFe_v2.00.xsd +9 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/inutNFe_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/leiauteCCe_v1.00.xsd +418 -0
- data/test/fixtures/product/schemas/leiauteCancNFe_v2.00.xsd +143 -0
- data/test/fixtures/product/schemas/leiauteConfRecebto_v1.00.xsd +406 -0
- data/test/fixtures/product/schemas/leiauteConsNFeDest_v1.01.xsd +483 -0
- data/test/fixtures/product/schemas/leiauteConsSitNFe_v2.01.xsd +548 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/leiauteConsSitNFe_v3.10.xsd +502 -502
- data/test/fixtures/product/schemas/leiauteConsStatServ_v2.00.xsd +98 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/leiauteConsStatServ_v3.10.xsd +97 -97
- data/test/fixtures/product/schemas/leiauteConsultaCadastro_v1.01.xsd +355 -0
- data/test/fixtures/product/schemas/leiauteConsultaCadastro_v2.00.xsd +404 -0
- data/test/fixtures/product/schemas/leiauteDPEC_v1.01.xsd +464 -0
- data/test/fixtures/product/schemas/leiauteDownloadNFe_v1.00.xsd +149 -0
- data/test/fixtures/product/schemas/leiauteEPEC_v1.00.xsd +459 -0
- data/test/fixtures/product/schemas/leiauteEventoCancNFe_v1.00.xsd +394 -0
- data/test/fixtures/product/schemas/leiauteEvento_v1.00.xsd +373 -0
- data/test/fixtures/product/schemas/leiauteInutNFe_v2.00.xsd +193 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/leiauteInutNFe_v3.10.xsd +192 -192
- data/test/fixtures/product/schemas/leiauteNFe_v2.00.xsd +6661 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/leiauteNFe_v3.10.xsd +6060 -6060
- data/test/fixtures/product/schemas/leiauteRemIndus_v1.00.xsd +382 -0
- data/test/fixtures/product/schemas/leiauteSRE_v1.00.xsd +372 -0
- data/test/fixtures/product/schemas/leiauteSuframaInternaliza_v1.00.xsd +642 -0
- data/test/fixtures/product/schemas/leiauteSuframaVistoria_v1.00.xsd +648 -0
- data/test/fixtures/product/schemas/nfe_v2.00.xsd +9 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/nfe_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/procCCeNFe_v1.00.xsd +10 -0
- data/test/fixtures/product/schemas/procCancNFe_v2.00.xsd +9 -0
- data/test/fixtures/product/schemas/procConfRecebtoNFe_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/procEPEC_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/procEventoCancNFe_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/procEventoNFe_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/procEventoNFe_v99.99.xsd +37 -0
- data/test/fixtures/product/schemas/procInutNFe_v2.00.xsd +9 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/procInutNFe_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/procNFe_v2.00.xsd +9 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/procNFe_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/procRemIndus_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/resEvento_v1.00.xsd +94 -0
- data/test/fixtures/product/schemas/resNFe_v1.00.xsd +110 -0
- data/test/fixtures/product/schemas/retAtuCadEmiDFe_v1.01.xsd +9 -0
- data/test/fixtures/product/schemas/retCancNFe_v2.00.xsd +9 -0
- data/test/fixtures/product/schemas/retConsCad_v2.00.xsd +9 -0
- data/test/fixtures/product/schemas/retConsDPEC_v1.01.xsd +9 -0
- data/test/fixtures/product/schemas/retConsReciNFe_v2.00.xsd +9 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/retConsReciNFe_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/retConsSitNFe_v2.01.xsd +10 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/retConsSitNFe_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/retConsStatServ_v2.00.xsd +9 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/retConsStatServ_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/retDPEC_v1.01.xsd +9 -0
- data/test/fixtures/product/schemas/retDistDFeInt_v1.00.xsd +84 -0
- data/test/fixtures/product/schemas/retDownloadNFe_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/retEnvCCe_v1.00.xsd +10 -0
- data/test/fixtures/product/schemas/retEnvCancelPProrrogNFe_v1.0.xsd +231 -0
- data/test/fixtures/product/schemas/retEnvConfRecebto_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/retEnvEPEC_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/retEnvEventoCancNFe_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/retEnvEvento_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/retEnvFiscoNFe_v1.0.xsd +234 -0
- data/test/fixtures/product/schemas/retEnvRemIndus_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/retEnvSuframaInternaliza_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/retEnvSuframaVistoria_v1.00.xsd +9 -0
- data/test/fixtures/product/schemas/retEnviNFe_v2.00.xsd +9 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/retEnviNFe_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/retEventoEPEC_v0.01.xsd +207 -0
- data/test/fixtures/product/schemas/retInutNFe_v2.00.xsd +9 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/retInutNFe_v3.10.xsd +8 -8
- data/test/fixtures/product/schemas/retPProrrogNFe_v1.0.xsd +233 -0
- data/test/fixtures/product/schemas/retconsNFeDest_v1.01.xsd +9 -0
- data/test/fixtures/product/schemas/tiposBasico_v1.03.xsd +816 -0
- data/test/fixtures/product/schemas/tiposBasico_v1.03_OPENSSL.xsd +816 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/tiposBasico_v3.10.xsd +571 -571
- data/test/fixtures/product/schemas/tiposBasico_v3.10_OPENSSL.xsd +877 -0
- data/test/fixtures/product/schemas/tiposDistDFe_v1.00.xsd +217 -0
- data/{lib/br_nfe/product/xml/v3_10/XSD → test/fixtures/product/schemas}/xmldsig-core-schema_v1.01.xsd +97 -97
- data/test/fixtures/product/wsdl/NFeRetAutorizacao.xml +80 -0
- data/test/fixtures/product/wsdl/NfeAutorizacao.xml +107 -0
- data/test/fixtures/product/wsdl/NfeConsulta2.xml +80 -0
- data/test/fixtures/product/wsdl/NfeStatusServico2.xml +70 -0
- data/test/fixtures/product/wsdl/nfeinutilizacao2.xml +80 -0
- data/test/fixtures/service/wsdl/betha/v1/cancelar_nfse.xml +178 -0
- data/test/fixtures/service/wsdl/betha/v1/consultar_lote_rps.xml +339 -0
- data/test/fixtures/service/wsdl/betha/v1/consultar_nfse.xml +348 -0
- data/test/fixtures/service/wsdl/betha/v1/consultar_nfse_por_rps.xml +365 -0
- data/test/fixtures/service/wsdl/betha/v1/consultar_situacao_lote_rps.xml +74 -0
- data/test/fixtures/service/wsdl/betha/v1/recepcionar_lote_rps.xml +299 -0
- data/test/fixtures/service/wsdl/simpliss/v1/nfseservice.xml +1 -0
- data/test/fixtures/service/wsdl/thema/v1/nfse_cancelamento.xml +82 -0
- data/test/fixtures/service/wsdl/thema/v1/nfse_consulta.xml +235 -0
- data/test/fixtures/service/wsdl/thema/v1/nfse_remessa.xml +185 -0
- data/test/test_helper.rb +369 -1
- metadata +711 -33
- data/lib/br_nfe/product/base.rb +0 -82
- data/lib/br_nfe/product/consulta_status_servico.rb +0 -35
- data/lib/br_nfe/product/value_nf.rb +0 -9
- data/lib/br_nfe/product/xml/v3_10/consulta_status_servico.xml.slim +0 -4
- data/test/br_nfe/product/base_test.rb +0 -150
- data/test/br_nfe/product/consulta_status_servico_test.rb +0 -59
@@ -0,0 +1,133 @@
|
|
1
|
+
# o método original_xml deve ter o XML da NF-e
|
2
|
+
#
|
3
|
+
module BrNfe
|
4
|
+
module Product
|
5
|
+
module Response
|
6
|
+
module Build
|
7
|
+
class NfeConsultaProtocolo < Base
|
8
|
+
# Responsável por definir qual classe será instânciada para
|
9
|
+
# setar os valores de retorno referentes a cada operação.
|
10
|
+
#
|
11
|
+
# <b>Type: </b> _Class_
|
12
|
+
#
|
13
|
+
def response_class
|
14
|
+
BrNfe::Product::Response::NfeConsultaProtocolo
|
15
|
+
end
|
16
|
+
|
17
|
+
# Responsável por setar os atributos específicos para
|
18
|
+
# cada tipo de operação.
|
19
|
+
#
|
20
|
+
# <b>Type: </b> _Hash_
|
21
|
+
#
|
22
|
+
def specific_attributes
|
23
|
+
attrs = {
|
24
|
+
environment: body_xml.xpath('//ret:nfeConsultaNF2Result/nf:retConsSitNFe/nf:tpAmb', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
25
|
+
app_version: body_xml.xpath('//ret:nfeConsultaNF2Result/nf:retConsSitNFe/nf:verAplic', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
26
|
+
processed_at: request_processed_at,
|
27
|
+
processing_status_code: get_processing_status_code,
|
28
|
+
processing_status_motive: get_processing_status_motive,
|
29
|
+
}
|
30
|
+
|
31
|
+
set_events!( attrs )
|
32
|
+
|
33
|
+
attrs[:nota_fiscal] = build_invoice_by_prot_nfe( prot_nfe_doc ) if prot_nfe_doc
|
34
|
+
|
35
|
+
set_invoice_situation!( attrs )
|
36
|
+
|
37
|
+
attrs
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def prot_nfe_doc
|
43
|
+
return @prot_nfe_doc if @prot_nfe_doc
|
44
|
+
if prot_nfe = body_xml.xpath('//ret:nfeConsultaNF2Result/nf:retConsSitNFe/nf:protNFe', nf: nf_xmlns, ret: url_xmlns_retorno).first
|
45
|
+
@prot_nfe_doc = parse_nokogiri_xml( prot_nfe.to_xml )
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def request_processed_at
|
50
|
+
@request_processed_at ||= body_xml.xpath('//ret:nfeConsultaNF2Result/nf:retConsSitNFe/nf:dhRecbto', nf: nf_xmlns, ret: url_xmlns_retorno).text
|
51
|
+
end
|
52
|
+
def get_processing_status_code
|
53
|
+
@get_processing_status_code ||= body_xml.xpath('//ret:nfeConsultaNF2Result/nf:retConsSitNFe/nf:cStat', nf: nf_xmlns, ret: url_xmlns_retorno).text
|
54
|
+
end
|
55
|
+
def get_processing_status_motive
|
56
|
+
@get_processing_status_motive ||= body_xml.xpath('//ret:nfeConsultaNF2Result/nf:retConsSitNFe/nf:xMotivo', nf: nf_xmlns, ret: url_xmlns_retorno).text
|
57
|
+
end
|
58
|
+
|
59
|
+
# Responsável por instanciar e setar os eventos através do XML
|
60
|
+
# Percore todas as tags de eventos, instancia o evento e seta o
|
61
|
+
# valor na chave do evento
|
62
|
+
#
|
63
|
+
def set_events! attrs
|
64
|
+
attrs[:events] = []
|
65
|
+
body_xml.xpath('//ret:nfeConsultaNF2Result/nf:retConsSitNFe/nf:procEventoNFe', nf: nf_xmlns, ret: url_xmlns_retorno).each do |event_node|
|
66
|
+
doc_evento = parse_nokogiri_xml( event_node.to_xml )
|
67
|
+
attrs[:events] << build_event_by_xml( doc_evento )
|
68
|
+
end
|
69
|
+
set_main_event!(attrs)
|
70
|
+
end
|
71
|
+
|
72
|
+
# Responsável por setar o evento principal.
|
73
|
+
# O evento principal é o que tem a maior sequência. Exceto se
|
74
|
+
# tiver algum evento de cancelamento, pois o evento de cancelamento
|
75
|
+
# é sempre o último evento, e após o cancelamento não é mais
|
76
|
+
# possível registrar eventos.
|
77
|
+
#
|
78
|
+
def set_main_event!(attrs)
|
79
|
+
# CÓDIGO DE CANCELAMENTO
|
80
|
+
if ev_cancel = attrs[:events].select{|e| e.code == '110111' }.last
|
81
|
+
attrs[:main_event] = ev_cancel
|
82
|
+
else
|
83
|
+
attrs[:main_event] = attrs[:events].sort_by{|e| [e.sequence.to_i, (e.registred_at||Time.current)] }.last
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def build_event_by_xml( doc_evento )
|
88
|
+
# É feito o dup para setar no evento o XMl com os namespaces
|
89
|
+
doc_evento_with_namespaces = doc_evento.dup
|
90
|
+
|
91
|
+
# Os namespaces são removidos pois as vezes pode vir com namespace
|
92
|
+
# e as vezes não.
|
93
|
+
doc_evento.remove_namespaces!
|
94
|
+
|
95
|
+
BrNfe::Product::Response::Event.new do |event|
|
96
|
+
event.codigo_orgao = doc_evento.xpath('//procEventoNFe/retEvento/infEvento/cOrgao').text
|
97
|
+
event.status_code = doc_evento.xpath('//procEventoNFe/retEvento/infEvento/cStat').text
|
98
|
+
event.status_motive = doc_evento.xpath('//procEventoNFe/retEvento/infEvento/xMotivo').text
|
99
|
+
event.code = doc_evento.xpath('//procEventoNFe/retEvento/infEvento/tpEvento').text
|
100
|
+
event.sequence = doc_evento.xpath('//procEventoNFe/retEvento/infEvento/nSeqEvento').text.to_i
|
101
|
+
|
102
|
+
if doc_evento.xpath('//procEventoNFe/retEvento/infEvento/CNPJDest').present?
|
103
|
+
event.cpf_cnpj_destino = doc_evento.xpath('//procEventoNFe/retEvento/infEvento/CNPJDest').text
|
104
|
+
else
|
105
|
+
event.cpf_cnpj_destino = doc_evento.xpath('//procEventoNFe/retEvento/infEvento/CPFDest').text
|
106
|
+
end
|
107
|
+
|
108
|
+
event.sent_at = doc_evento.xpath('//procEventoNFe/evento/infEvento/dhEvento').text
|
109
|
+
event.registred_at = doc_evento.xpath('//procEventoNFe/retEvento/infEvento/dhRegEvento').text
|
110
|
+
event.event_protocol = doc_evento.xpath('//procEventoNFe/evento/infEvento/detEvento/nProt').text
|
111
|
+
event.ret_event_protocol = doc_evento.xpath('//procEventoNFe/retEvento/infEvento/nProt').text
|
112
|
+
event.description = doc_evento.xpath('//procEventoNFe/evento/infEvento/detEvento/descEvento').text
|
113
|
+
event.justification = doc_evento.xpath('//procEventoNFe/evento/infEvento/detEvento/xJust').text
|
114
|
+
event.correction_text = doc_evento.xpath('//procEventoNFe/evento/infEvento/detEvento/xCorrecao').text
|
115
|
+
event.xml = '<?xml version="1.0" encoding="UTF-8"?>'+canonicalize( doc_evento_with_namespaces.to_xml )
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def set_invoice_situation!( attrs )
|
120
|
+
if attrs[:nota_fiscal].present? && attrs[:main_event].present?
|
121
|
+
case attrs[:main_event].code.to_i
|
122
|
+
when 110111
|
123
|
+
attrs[:nota_fiscal].situation = :canceled
|
124
|
+
when 110110
|
125
|
+
attrs[:nota_fiscal].situation = :adjusted
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module BrNfe
|
2
|
+
module Product
|
3
|
+
module Response
|
4
|
+
module Build
|
5
|
+
class NfeInutilizacao < Base
|
6
|
+
|
7
|
+
# Responsável por definir qual classe será instânciada para
|
8
|
+
# setar os valores de retorno referentes a cada operação.
|
9
|
+
#
|
10
|
+
# <b>Type: </b> _Class_
|
11
|
+
#
|
12
|
+
def response_class
|
13
|
+
BrNfe::Product::Response::NfeInutilizacao
|
14
|
+
end
|
15
|
+
|
16
|
+
# Responsável por pegar a tag XML principal que contém os dados da homologação.
|
17
|
+
# Utilizado para facilitar a codificação e para não repetir o
|
18
|
+
# código ao buscar as informações da homologação.
|
19
|
+
#
|
20
|
+
def info_xml
|
21
|
+
@info_xml ||= parse_nokogiri_xml( body_xml.xpath('//ret:nfeInutilizacaoNF2Result/nf:retInutNFe/nf:infInut', nf: nf_xmlns, ret: url_xmlns_retorno).to_xml )
|
22
|
+
end
|
23
|
+
|
24
|
+
# Responsável por setar os atributos específicos para
|
25
|
+
# cada tipo de operação.
|
26
|
+
# Nesse caso irá setar as informações da homologação da inutilização.
|
27
|
+
#
|
28
|
+
# <b>Type: </b> _Hash_
|
29
|
+
#
|
30
|
+
def specific_attributes
|
31
|
+
{
|
32
|
+
environment: info_xml.xpath('//infInut/tpAmb').text,
|
33
|
+
app_version: info_xml.xpath('//infInut/verAplic').text,
|
34
|
+
processed_at: info_xml.xpath('//infInut/dhRecbto').text,
|
35
|
+
protocol: info_xml.xpath('//infInut/nProt').text,
|
36
|
+
|
37
|
+
processing_status_code: info_xml.xpath('//infInut/cStat').text,
|
38
|
+
processing_status_motive: info_xml.xpath('//infInut/xMotivo').text,
|
39
|
+
|
40
|
+
uf: info_xml.xpath('//infInut/cUF').text,
|
41
|
+
year: info_xml.xpath('//infInut/ano').text,
|
42
|
+
cnpj: info_xml.xpath('//infInut/CNPJ').text,
|
43
|
+
nf_model: info_xml.xpath('//infInut/mod').text,
|
44
|
+
nf_series: info_xml.xpath('//infInut/serie').text,
|
45
|
+
start_invoice_number: info_xml.xpath('//infInut/nNFIni').text,
|
46
|
+
end_invoice_number: info_xml.xpath('//infInut/nNFFin').text,
|
47
|
+
}
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module BrNfe
|
2
|
+
module Product
|
3
|
+
module Response
|
4
|
+
module Build
|
5
|
+
class NfeRetAutorizacao < Base
|
6
|
+
|
7
|
+
# Responsável por definir qual classe será instânciada para
|
8
|
+
# setar os valores de retorno referentes a cada operação.
|
9
|
+
#
|
10
|
+
# <b>Type: </b> _Class_
|
11
|
+
#
|
12
|
+
def response_class
|
13
|
+
BrNfe::Product::Response::NfeRetAutorizacao
|
14
|
+
end
|
15
|
+
|
16
|
+
# Responsável por setar os atributos específicos para
|
17
|
+
# cada tipo de operação.
|
18
|
+
# Nesse caso irá setar as notas fiscais com seus respectivos
|
19
|
+
# XMLs.
|
20
|
+
#
|
21
|
+
# <b>Type: </b> _Hash_
|
22
|
+
#
|
23
|
+
def specific_attributes
|
24
|
+
{
|
25
|
+
environment: body_xml.xpath('//ret:nfeRetAutorizacaoLoteResult/nf:retConsReciNFe/nf:tpAmb', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
26
|
+
app_version: body_xml.xpath('//ret:nfeRetAutorizacaoLoteResult/nf:retConsReciNFe/nf:verAplic', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
27
|
+
processed_at: body_xml.xpath('//ret:nfeRetAutorizacaoLoteResult/nf:retConsReciNFe/nf:dhRecbto', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
28
|
+
protocol: body_xml.xpath('//ret:nfeRetAutorizacaoLoteResult/nf:retConsReciNFe/nf:nRec', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
29
|
+
|
30
|
+
processing_status_code: body_xml.xpath('//ret:nfeRetAutorizacaoLoteResult/nf:retConsReciNFe/nf:cStat', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
31
|
+
processing_status_motive: body_xml.xpath('//ret:nfeRetAutorizacaoLoteResult/nf:retConsReciNFe/nf:xMotivo', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
32
|
+
|
33
|
+
notas_fiscais: get_invoices
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
# Responsável por buscar os protocolos no XML da resposta.
|
38
|
+
#
|
39
|
+
# <b>Type: </b> _Nokogiri::XML::NodeSet_
|
40
|
+
#
|
41
|
+
def protocol_nfe_nodes
|
42
|
+
@protocol_nfe_nodes ||= body_xml.xpath('//ret:nfeRetAutorizacaoLoteResult/nf:retConsReciNFe/nf:protNFe', nf: nf_xmlns, ret: url_xmlns_retorno)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Responsável por instânciar as notas fiscais presentes na resposta
|
46
|
+
# a partir das tags de resposta do xml (protNFe).
|
47
|
+
# Também irá ajustar e setar o xml atualizado na nota fiscal, já com o protocolo
|
48
|
+
# incluso. Irá setar a tag nfeProc como raiz do XML.
|
49
|
+
#
|
50
|
+
# <b>Type: </b> _Array_
|
51
|
+
#
|
52
|
+
def get_invoices
|
53
|
+
invoices = []
|
54
|
+
protocol_nfe_nodes.each do |prot_nfe|
|
55
|
+
prot_nfe = parse_nokogiri_xml(prot_nfe.to_xml)
|
56
|
+
invoices << build_invoice_by_prot_nfe(prot_nfe)
|
57
|
+
end
|
58
|
+
invoices
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module BrNfe
|
2
|
+
module Product
|
3
|
+
module Response
|
4
|
+
module Build
|
5
|
+
class NfeStatusServico < Base
|
6
|
+
|
7
|
+
# Responsável por definir qual classe será instânciada para
|
8
|
+
# setar os valores de retorno referentes a cada operação.
|
9
|
+
#
|
10
|
+
# <b>Type: </b> _Class_
|
11
|
+
#
|
12
|
+
def response_class
|
13
|
+
BrNfe::Product::Response::NfeStatusServico
|
14
|
+
end
|
15
|
+
|
16
|
+
# Responsável por setar os atributos específicos para
|
17
|
+
# cada tipo de operação.
|
18
|
+
# Nesse caso irá setar as notas fiscais com seus respectivos
|
19
|
+
# XMLs.
|
20
|
+
#
|
21
|
+
# <b>Type: </b> _Hash_
|
22
|
+
#
|
23
|
+
def specific_attributes
|
24
|
+
{
|
25
|
+
environment: body_xml.xpath('//ret:nfeStatusServicoNF2Result/nf:retConsStatServ/nf:tpAmb', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
26
|
+
app_version: body_xml.xpath('//ret:nfeStatusServicoNF2Result/nf:retConsStatServ/nf:verAplic', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
27
|
+
processed_at: body_xml.xpath('//ret:nfeStatusServicoNF2Result/nf:retConsStatServ/nf:dhRecbto', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
28
|
+
|
29
|
+
processing_status_code: body_xml.xpath('//ret:nfeStatusServicoNF2Result/nf:retConsStatServ/nf:cStat', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
30
|
+
processing_status_motive: body_xml.xpath('//ret:nfeStatusServicoNF2Result/nf:retConsStatServ/nf:xMotivo', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
31
|
+
|
32
|
+
uf: body_xml.xpath('//ret:nfeStatusServicoNF2Result/nf:retConsStatServ/nf:cUF', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
33
|
+
average_time: body_xml.xpath('//ret:nfeStatusServicoNF2Result/nf:retConsStatServ/nf:tMed', nf: nf_xmlns, ret: url_xmlns_retorno).text.to_i,
|
34
|
+
observation: body_xml.xpath('//ret:nfeStatusServicoNF2Result/nf:retConsStatServ/nf:xObs', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
35
|
+
return_prevision: body_xml.xpath('//ret:nfeStatusServicoNF2Result/nf:retConsStatServ/nf:dhRetorno', nf: nf_xmlns, ret: url_xmlns_retorno).text,
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
module BrNfe
|
2
|
+
module Product
|
3
|
+
module Response
|
4
|
+
class Event < BrNfe::ActiveModelBase
|
5
|
+
|
6
|
+
# CÓDIGO DA UF QUE REGISTROU O EVENTO
|
7
|
+
# Será setado 90 para o Ambiente Nacional.
|
8
|
+
#
|
9
|
+
attr_accessor :codigo_orgao
|
10
|
+
alias_attribute :cOrgao, :codigo_orgao
|
11
|
+
|
12
|
+
# CÓDIGO DO STATUS DO EVENTO
|
13
|
+
#
|
14
|
+
attr_accessor :status_code
|
15
|
+
alias_attribute :cStat, :status_code
|
16
|
+
|
17
|
+
# DESCRIÇÃO DO STATUS DO EVENTO
|
18
|
+
#
|
19
|
+
attr_accessor :status_motive
|
20
|
+
alias_attribute :xMotivo, :status_motive
|
21
|
+
|
22
|
+
# CÓDIGO DO EVENTO
|
23
|
+
# Código do Tipo do Evento.
|
24
|
+
# 110111: Cancelamento
|
25
|
+
# 110110: CCe
|
26
|
+
# 110140: EPEC
|
27
|
+
# Eventos de manifestação do destinatário
|
28
|
+
# 210200: Confirmação da Operação
|
29
|
+
# 210210: Ciência da Emissão
|
30
|
+
# 210220: Desconhecimento da Operação
|
31
|
+
# 210240: Operação não Realizada
|
32
|
+
#
|
33
|
+
attr_accessor :code
|
34
|
+
alias_attribute :tpEvento, :code
|
35
|
+
|
36
|
+
# SEQUENCIAL DO EVENTO PARA O MESMO TIPO DE EVENTO.
|
37
|
+
#
|
38
|
+
attr_accessor :sequence
|
39
|
+
alias_attribute :nSeqEvento, :sequence
|
40
|
+
|
41
|
+
# CPF OU CNPJ DO DESTINATÁRIO DA NF-E
|
42
|
+
#
|
43
|
+
attr_accessor :cpf_cnpj_destino
|
44
|
+
alias_attribute :CNPJDest, :cpf_cnpj_destino
|
45
|
+
alias_attribute :CPFDest, :cpf_cnpj_destino
|
46
|
+
|
47
|
+
# DATA E HORA EM QUE O EVENTO FOI ENVIADO
|
48
|
+
#
|
49
|
+
attr_accessor :sent_at
|
50
|
+
def sent_at
|
51
|
+
convert_to_time( @sent_at )
|
52
|
+
end
|
53
|
+
alias_attribute :dhEvento, :sent_at
|
54
|
+
|
55
|
+
# DATA E HORA EM QUE O EVENTO FOI PROCESSADO PELA SEFAZ
|
56
|
+
#
|
57
|
+
attr_accessor :registred_at
|
58
|
+
def registred_at
|
59
|
+
convert_to_time( @registred_at )
|
60
|
+
end
|
61
|
+
alias_attribute :dhRegEvento, :registred_at
|
62
|
+
|
63
|
+
# NÚMERO DO PROTOCOLO DO ENVIO DO EVENTO
|
64
|
+
attr_accessor :event_protocol
|
65
|
+
alias_attribute :evento_nProt, :event_protocol
|
66
|
+
|
67
|
+
# NÚMERO DO PROTOCOLO DE AUTORIZAÇÃO DO EVENTO
|
68
|
+
attr_accessor :ret_event_protocol
|
69
|
+
alias_attribute :retEvento_nProt, :ret_event_protocol
|
70
|
+
|
71
|
+
# DESCRIÇÃO DO EVENTO
|
72
|
+
attr_accessor :description
|
73
|
+
alias_attribute :descEvento, :description
|
74
|
+
|
75
|
+
# JUSTIFICATIVA DO EVENTO
|
76
|
+
# Utilizado no evento de cancelamento de NF-e
|
77
|
+
attr_accessor :justification
|
78
|
+
alias_attribute :xJust, :justification
|
79
|
+
|
80
|
+
# DESCRIÇÃO DA CARTA DE CORREÇÃO
|
81
|
+
attr_accessor :correction_text
|
82
|
+
alias_attribute :xCorrecao, :correction_text
|
83
|
+
|
84
|
+
# XML DO EVENTO
|
85
|
+
attr_accessor :xml
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module BrNfe
|
2
|
+
module Product
|
3
|
+
module Response
|
4
|
+
class NfeConsultaProtocolo < Base
|
5
|
+
has_one :nota_fiscal, 'BrNfe.nota_fiscal_product_class'
|
6
|
+
|
7
|
+
has_many :events, 'BrNfe::Product::Response::Event'
|
8
|
+
|
9
|
+
has_one :main_event, 'BrNfe::Product::Response::Event'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
module BrNfe
|
2
|
+
module Product
|
3
|
+
module Response
|
4
|
+
class NfeInutilizacao < Base
|
5
|
+
|
6
|
+
# Código da UF que atendeu a solicitação
|
7
|
+
#
|
8
|
+
# <b>Type: </b> _String_
|
9
|
+
# <b>Required: </b> _Yes_
|
10
|
+
# <b>Example: </b> _SC_
|
11
|
+
# <b>Length: </b> _2_
|
12
|
+
# <b>tag: </b> cUF
|
13
|
+
#
|
14
|
+
attr_accessor :uf
|
15
|
+
alias_attribute :cUF, :uf
|
16
|
+
|
17
|
+
####################################################################
|
18
|
+
# OS DADOS A SEGUIR APENAS SERÃO PREENCHIDOS SE A #
|
19
|
+
# HOMOLOGAÇÃO DA INUTILIZAÇÃO OBTIVER SUCESSO (cStat=102) #
|
20
|
+
####################################################################
|
21
|
+
# Ano de inutilização da numeração
|
22
|
+
#
|
23
|
+
# <b>Type: </b> _String_
|
24
|
+
# <b>Required: </b> _No_
|
25
|
+
# <b>Example: </b> _SC_
|
26
|
+
# <b>Length: </b> _2_
|
27
|
+
# <b>tag: </b> cUF
|
28
|
+
#
|
29
|
+
attr_accessor :year
|
30
|
+
alias_attribute :ano, :year
|
31
|
+
|
32
|
+
# CNPJ do emitente
|
33
|
+
#
|
34
|
+
# <b>Type: </b> _String_
|
35
|
+
# <b>Required: </b> _No_
|
36
|
+
# <b>Example: </b> _12345678901234_
|
37
|
+
# <b>Length: </b> _14_
|
38
|
+
# <b>tag: </b> CNPJ
|
39
|
+
#
|
40
|
+
attr_accessor :cnpj
|
41
|
+
alias_attribute :CNPJ, :cnpj
|
42
|
+
|
43
|
+
# Modelo da NF-e
|
44
|
+
#
|
45
|
+
# <b>Type: </b> _Number_
|
46
|
+
# <b>Required: </b> _No_
|
47
|
+
# <b>Example: </b> _55_
|
48
|
+
# <b>Length: </b> _2_
|
49
|
+
# <b>tag: </b> mod
|
50
|
+
#
|
51
|
+
attr_accessor :nf_model
|
52
|
+
alias_attribute :mod, :nf_model
|
53
|
+
|
54
|
+
# Série da NF-e
|
55
|
+
#
|
56
|
+
# <b>Type: </b> _Number_
|
57
|
+
# <b>Required: </b> _No_
|
58
|
+
# <b>Example: </b> _1_
|
59
|
+
# <b>Length: </b> _min: 1, max: 3_
|
60
|
+
# <b>tag: </b> serie
|
61
|
+
#
|
62
|
+
attr_accessor :nf_series
|
63
|
+
alias_attribute :serie, :nf_series
|
64
|
+
|
65
|
+
# Número da NF-e inicial a ser inutilizada
|
66
|
+
#
|
67
|
+
# <b>Type: </b> _Number_
|
68
|
+
# <b>Required: </b> _No_
|
69
|
+
# <b>Example: </b> _1_
|
70
|
+
# <b>Length: </b> _min: 1, max: 3_
|
71
|
+
# <b>tag: </b> nNFIni
|
72
|
+
#
|
73
|
+
attr_accessor :start_invoice_number
|
74
|
+
alias_attribute :nNFIni, :start_invoice_number
|
75
|
+
|
76
|
+
# Número da NF-e final a ser inutilizada
|
77
|
+
#
|
78
|
+
# <b>Type: </b> _Number_
|
79
|
+
# <b>Required: </b> _No_
|
80
|
+
# <b>Example: </b> _1_
|
81
|
+
# <b>Length: </b> _min: 1, max: 3_
|
82
|
+
# <b>tag: </b> nNFFin
|
83
|
+
#
|
84
|
+
attr_accessor :end_invoice_number
|
85
|
+
alias_attribute :nNFFin, :end_invoice_number
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module BrNfe
|
2
|
+
module Product
|
3
|
+
module Response
|
4
|
+
class NfeStatusServico < Base
|
5
|
+
|
6
|
+
attr_accessor :uf
|
7
|
+
alias_attribute :cUF, :uf
|
8
|
+
|
9
|
+
attr_accessor :average_time
|
10
|
+
alias_attribute :tMed, :average_time
|
11
|
+
|
12
|
+
attr_accessor :observation
|
13
|
+
alias_attribute :xObs, :observation
|
14
|
+
|
15
|
+
attr_accessor :return_prevision
|
16
|
+
alias_attribute :dhRetorno, :return_prevision
|
17
|
+
def return_prevision
|
18
|
+
convert_to_time(@return_prevision)
|
19
|
+
end
|
20
|
+
|
21
|
+
def status
|
22
|
+
if processing_status_code == '107'
|
23
|
+
:online
|
24
|
+
else
|
25
|
+
:offline
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"
|
2
|
+
CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
|
3
|
+
SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"
|
4
|
+
Reference URI="##{uri}"
|
5
|
+
Transforms
|
6
|
+
Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"
|
7
|
+
Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
|
8
|
+
DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"
|
9
|
+
DigestValue = remove_quebras Base64.encode64(OpenSSL::Digest::SHA1.digest(data_xml.html_safe))
|
@@ -0,0 +1,7 @@
|
|
1
|
+
- cpf_cnpj = BrNfe::Helper::CpfCnpj.new(cpf_cnpj)
|
2
|
+
- if cpf_cnpj.cnpj?
|
3
|
+
CNPJ = nf_xml_value_cnpj(cpf_cnpj.sem_formatacao)
|
4
|
+
- elsif cpf_cnpj.cpf?
|
5
|
+
CPF = nf_xml_value_cpf( cpf_cnpj.sem_formatacao)
|
6
|
+
- else
|
7
|
+
idEstrangeiro = nf_xml_value_id_estrangeiro(cpf_cnpj.sem_formatacao)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Signature xmlns="http://www.w3.org/2000/09/xmldsig#"
|
2
|
+
- info_xml = render_xml('_signed_info_sh1', data_xml: data_xml, uri: uri)
|
3
|
+
/ o xmlns é necessário apenas para assinar e não deve estar presente no XML
|
4
|
+
/ e para evitar 2 renderizações foi feito um gsub para tirar o xmlns
|
5
|
+
= info_xml.gsub('<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">','<SignedInfo >').html_safe
|
6
|
+
|
7
|
+
- signature_hash = certificate_key.sign(OpenSSL::Digest::SHA1.new, info_xml.html_safe)
|
8
|
+
SignatureValue = remove_quebras( Base64.encode64( signature_hash ) )
|
9
|
+
|
10
|
+
KeyInfo
|
11
|
+
X509Data
|
12
|
+
X509Certificate = certificate.to_s.gsub(/\-\-\-\-\-[A-Z]+ CERTIFICATE\-\-\-\-\-/, "").gsub(/\n/,"")
|
@@ -0,0 +1,19 @@
|
|
1
|
+
|<infEvento xmlns="http://www.portalfiscal.inf.br/nfe" Id="#{cancelamento.chave}">
|
2
|
+
cOrgao = nf_xml_value_orgao_emissor( cancelamento )
|
3
|
+
tpAmb = nf_xml_value_tipo_ambiente( env )
|
4
|
+
|
5
|
+
- if "#{emitente.cpf_cnpj}".size > 11
|
6
|
+
CNPJ = nf_xml_value_cnpj( emitente.cpf_cnpj )
|
7
|
+
- else
|
8
|
+
CPF = nf_xml_value_cpf( emitente.cpf_cnpj )
|
9
|
+
|
10
|
+
chNFe = nf_xml_value_chave_nfe( cancelamento.chave_nfe )
|
11
|
+
dhEvento = nf_xml_value_date_time( cancelamento.data_hora )
|
12
|
+
tpEvento = cancelamento.codigo_evento
|
13
|
+
nSeqEvento = cancelamento.numero_sequencial.to_i
|
14
|
+
verEvento = '1.00'
|
15
|
+
detEvento versao="1.00"
|
16
|
+
descEvento = 'Cancelamento'
|
17
|
+
nProt = cancelamento.protocolo_nfe
|
18
|
+
xJust = nf_xml_value_text( cancelamento.justificativa, 255 )
|
19
|
+
|</infEvento>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
envEvento xmlns="http://www.portalfiscal.inf.br/nfe" versao="#{xml_version}"
|
2
|
+
idLote = numero_lote
|
3
|
+
- if cancelamento
|
4
|
+
evento versao="#{xml_version}"
|
5
|
+
- evento_xml = render_xml('evento/infEventoCancelamento')
|
6
|
+
= evento_xml.gsub('<infEvento xmlns="http://www.portalfiscal.inf.br/nfe"', '<infEvento ').html_safe
|
7
|
+
= render_xml('signature_sh1', data_xml: evento_xml, uri: "#{cancelamento.chave}").html_safe
|
@@ -0,0 +1,19 @@
|
|
1
|
+
xLgr = nf_xml_value_text( person.endereco.logradouro, 60 )
|
2
|
+
nro = nf_xml_value_text( person.endereco.numero, 60 )
|
3
|
+
|
4
|
+
- if person.endereco.complemento.present?
|
5
|
+
xCpl = nf_xml_value_text( person.endereco.complemento, 60 )
|
6
|
+
|
7
|
+
xBairro = nf_xml_value_text( person.endereco.bairro, 60 )
|
8
|
+
cMun = nf_xml_value_codigo_ibge_municipio( person.endereco.codigo_municipio )
|
9
|
+
xMun = nf_xml_value_text( person.endereco.nome_municipio, 60 )
|
10
|
+
UF = nf_xml_value_UF( person.endereco.uf )
|
11
|
+
CEP = nf_xml_value_CEP( person.endereco.cep )
|
12
|
+
|
13
|
+
/ Só é necessário informar o país se não for o Brasil
|
14
|
+
- if person.endereco.codigo_pais.to_i != 1058
|
15
|
+
cPais = nf_xml_value_codigo_pais( person.endereco.codigo_pais )
|
16
|
+
xPais = nf_xml_value_text( person.endereco.nome_pais, 60 )
|
17
|
+
|
18
|
+
- if person.telefone.present?
|
19
|
+
fone = nf_xml_value_fone( person.telefone )
|
@@ -0,0 +1,39 @@
|
|
1
|
+
ide = render_xml 'infNFe/_tc_ide', nfe: nfe
|
2
|
+
emit = render_xml 'infNFe/_tc_emit'
|
3
|
+
/ avulsa
|
4
|
+
dest = render_xml 'infNFe/_tc_dest', nfe: nfe
|
5
|
+
|
6
|
+
- if nfe.endereco_retirada
|
7
|
+
retirada = render_xml 'infNFe/_tc_retirada', nfe: nfe
|
8
|
+
|
9
|
+
- if nfe.endereco_entrega
|
10
|
+
entrega = render_xml 'infNFe/_tc_entrega', nfe: nfe
|
11
|
+
|
12
|
+
- nfe.autorizados_download_xml.each do |auth|
|
13
|
+
autXML
|
14
|
+
= render_xml('_tc_cpf_cnpj', cpf_cnpj: auth)
|
15
|
+
|
16
|
+
- nfe.itens.each_with_index do |item, i|
|
17
|
+
det nItem="#{i+1}"
|
18
|
+
= render_xml 'infNFe/_tc_det', item: item
|
19
|
+
|
20
|
+
total
|
21
|
+
= render_xml 'infNFe/_tc_total', nfe: nfe
|
22
|
+
|
23
|
+
transp
|
24
|
+
= render_xml('infNFe/_tc_transp', nfe: nfe)
|
25
|
+
|
26
|
+
- if nfe.fatura
|
27
|
+
cobr
|
28
|
+
= render_xml 'infNFe/_tc_cobr', nfe: nfe
|
29
|
+
|
30
|
+
- if nfe.informacoes_fisco.present? || nfe.informacoes_contribuinte.present? || nfe.processos_referenciados.present?
|
31
|
+
infAdic
|
32
|
+
= render_xml 'infNFe/_tc_infAdic', nfe: nfe
|
33
|
+
|
34
|
+
- if nfe.exportacao_uf_saida.present? && nfe.exportacao_local_embarque.present?
|
35
|
+
exporta
|
36
|
+
= render_xml 'infNFe/_tc_exporta', nfe: nfe
|
37
|
+
|
38
|
+
/ compra
|
39
|
+
/ cana
|