br_nfe 1.1.0 → 2.0.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.
- checksums.yaml +4 -4
- data/.gitignore +5 -0
- data/.travis.yml +8 -0
- data/Gemfile +16 -0
- data/Gemfile.lock +27 -3
- data/LICENSE +1 -1
- data/README.markdown +10 -12
- data/Rakefile +13 -0
- data/br_nfe.gemspec +18 -21
- data/lib/br_nfe/active_model_base.rb +7 -1
- data/lib/br_nfe/base.rb +175 -37
- data/lib/br_nfe/endereco.rb +7 -1
- data/lib/br_nfe/helper/have_rps.rb +1 -1
- data/lib/br_nfe/helper/values_ts/service_v1.rb +313 -0
- data/lib/br_nfe/response/service/build_response.rb +286 -0
- data/lib/br_nfe/response/service/default.rb +185 -0
- data/lib/br_nfe/{servico/response → response/service}/nota_fiscal.rb +11 -10
- data/lib/br_nfe/response/service/paths/base.rb +93 -0
- data/lib/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta.rb +22 -0
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta.rb +25 -0
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta.rb +25 -0
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta.rb +25 -0
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta.rb +31 -0
- data/lib/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta.rb +36 -0
- data/lib/br_nfe/response/service/paths/v1/tc_nfse.rb +127 -0
- data/lib/br_nfe/service/base.rb +59 -0
- data/lib/br_nfe/service/betha/base.rb +8 -0
- data/lib/br_nfe/service/betha/v1/cancelamento_nfs.rb +39 -0
- data/lib/br_nfe/service/betha/v1/consulta_lote_rps.rb +34 -0
- data/lib/br_nfe/service/betha/v1/consulta_nfs_por_rps.rb +32 -0
- data/lib/br_nfe/service/betha/v1/consulta_nfse.rb +32 -0
- data/lib/br_nfe/service/betha/v1/consulta_situacao_lote_rps.rb +30 -0
- data/lib/br_nfe/service/betha/v1/gateway.rb +21 -0
- data/lib/br_nfe/service/betha/v1/recepcao_lote_rps.rb +37 -0
- data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta.rb +19 -0
- data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta.rb +17 -0
- data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +17 -0
- data/lib/br_nfe/service/concerns/rules/cancelamento_nfs.rb +20 -0
- data/lib/br_nfe/service/concerns/rules/consulta_nfs_por_rps.rb +18 -0
- data/lib/br_nfe/service/concerns/rules/consulta_nfse.rb +29 -0
- data/lib/br_nfe/service/concerns/rules/recepcao_lote_rps.rb +50 -0
- data/lib/br_nfe/{servico → service}/intermediario.rb +1 -1
- data/lib/br_nfe/service/item.rb +70 -0
- data/lib/br_nfe/service/rps.rb +231 -0
- data/lib/br_nfe/service/sc/florianopolis/base.rb +25 -0
- data/lib/br_nfe/service/sc/florianopolis/cancellation.rb +30 -0
- data/lib/br_nfe/service/sc/florianopolis/emission_rps.rb +19 -0
- data/lib/br_nfe/service/sc/florianopolis/xml/_address.xml.slim +21 -0
- data/lib/br_nfe/service/sc/florianopolis/xml/_contact.xml.slim +3 -0
- data/lib/br_nfe/service/sc/florianopolis/xml/_service_item.xml.slim +9 -0
- data/lib/br_nfe/service/sc/florianopolis/xml/cancellation.xml.slim +6 -0
- data/lib/br_nfe/service/sc/florianopolis/xml/inf_requisicao.xml.slim +55 -0
- data/lib/br_nfe/service/sc/gaspar/cancela_nfse.rb +13 -0
- data/lib/br_nfe/service/sc/gaspar/consulta_lote_rps.rb +13 -0
- data/lib/br_nfe/service/sc/gaspar/consulta_nfs_por_rps.rb +13 -0
- data/lib/br_nfe/service/sc/gaspar/consulta_nfse.rb +17 -0
- data/lib/br_nfe/service/sc/gaspar/consulta_situacao_lote_rps.rb +13 -0
- data/lib/br_nfe/service/sc/gaspar/recepcao_lote_rps.rb +13 -0
- data/lib/br_nfe/service/sc/gaspar/recepcao_lote_rps_limitado.rb +13 -0
- data/lib/br_nfe/service/thema/v1/base.rb +55 -0
- data/lib/br_nfe/service/thema/v1/cancela_nfse.rb +48 -0
- data/lib/br_nfe/service/thema/v1/consulta_lote_rps.rb +49 -0
- data/lib/br_nfe/service/thema/v1/consulta_nfs_por_rps.rb +48 -0
- data/lib/br_nfe/service/thema/v1/consulta_nfse.rb +47 -0
- data/lib/br_nfe/service/thema/v1/consulta_situacao_lote_rps.rb +46 -0
- data/lib/br_nfe/service/thema/v1/recepcao_lote_rps.rb +51 -0
- data/lib/br_nfe/service/thema/v1/recepcao_lote_rps_limitado.rb +30 -0
- data/lib/br_nfe/service/xml/v1/_tc_contato.xml.slim +7 -0
- data/lib/br_nfe/service/xml/v1/_tc_cpf_cnpj.xml.slim +5 -0
- data/lib/br_nfe/service/xml/v1/_tc_dados_construcao_civil.xml.slim +2 -0
- data/lib/br_nfe/service/xml/v1/_tc_dados_prestador.xml.slim +15 -0
- data/lib/br_nfe/service/xml/v1/_tc_dados_servico.xml.slim +14 -0
- data/lib/br_nfe/service/xml/v1/_tc_dados_tomador.xml.slim +15 -0
- data/lib/br_nfe/service/xml/v1/_tc_endereco.xml.slim +13 -0
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_intermediario_servico.xml.slim +7 -0
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_nfse.xml.slim +7 -0
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_orgao_gerador.xml.slim +8 -0
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_prestador.xml.slim +3 -0
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_rps.xml.slim +16 -0
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_tomador.xml.slim +4 -0
- data/lib/br_nfe/service/xml/v1/_tc_inf_pedido_cancelamento.xml.slim +4 -0
- data/lib/br_nfe/service/xml/v1/_tc_inf_rps.xml.slim +47 -0
- data/lib/br_nfe/service/xml/v1/_tc_lote_rps.xml.slim +9 -0
- data/lib/br_nfe/service/xml/v1/_tc_pedido_cancelamento.xml.slim +4 -0
- data/lib/br_nfe/service/xml/v1/_tc_rps.xml.slim +8 -0
- data/lib/br_nfe/service/xml/v1/_tc_valores.xml.slim +48 -0
- data/lib/br_nfe/service/xml/v1/servico_cancelar_nfse_envio.xml.slim +9 -0
- data/lib/br_nfe/service/xml/v1/servico_consultar_lote_rps_envio.xml.slim +4 -0
- data/lib/br_nfe/service/xml/v1/servico_consultar_nfse_envio.xml.slim +19 -0
- data/lib/br_nfe/service/xml/v1/servico_consultar_nfse_rps_envio.xml.slim +5 -0
- data/lib/br_nfe/service/xml/v1/servico_consultar_situacao_lote_rps_envio.xml.slim +4 -0
- data/lib/br_nfe/service/xml/v1/servico_enviar_lote_rps_envio.xml.slim +9 -0
- data/lib/br_nfe/version.rb +2 -2
- data/lib/br_nfe/xml/_signed_info_sh1.xml.slim +9 -0
- data/lib/br_nfe/xml/signature_sh1.xml.slim +12 -0
- data/lib/br_nfe/xml/soap_env.xml.slim +3 -0
- data/lib/br_nfe.rb +72 -20
- data/test/br_nfe/base_test.rb +257 -108
- data/test/br_nfe/helper/have_intermediario_test.rb +2 -2
- data/test/br_nfe/helper/have_rps_test.rb +4 -4
- data/test/br_nfe/response/service/build_response_test.rb +377 -0
- data/test/br_nfe/response/service/default_test.rb +218 -0
- data/test/br_nfe/{servico/response → response/service}/nota_fiscal_test.rb +2 -2
- data/test/br_nfe/response/service/paths/base_test.rb +199 -0
- data/test/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta_test.rb +25 -0
- data/test/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta_test.rb +30 -0
- data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta_test.rb +30 -0
- data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta_test.rb +30 -0
- data/test/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta_test.rb +30 -0
- data/test/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta_test.rb +34 -0
- data/test/br_nfe/response/service/paths/v1/tc_nfse_test.rb +122 -0
- data/test/br_nfe/service/base_test.rb +138 -0
- data/test/br_nfe/service/betha/base_test.rb +9 -0
- data/test/br_nfe/service/betha/v1/cancelamento_nfs_test.rb +60 -0
- data/test/br_nfe/service/betha/v1/consulta_lote_rps_test.rb +55 -0
- data/test/br_nfe/service/betha/v1/consulta_nfs_por_rps_test.rb +55 -0
- data/test/br_nfe/service/betha/v1/consulta_nfse_test.rb +53 -0
- data/test/br_nfe/service/betha/v1/consulta_situacao_lote_rps_test.rb +49 -0
- data/test/br_nfe/service/betha/v1/gateway_test.rb +35 -0
- data/test/br_nfe/service/betha/v1/recepcao_lote_rps_test.rb +84 -0
- data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta_test.rb +16 -0
- data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta_test.rb +16 -0
- data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta_test.rb +16 -0
- data/test/br_nfe/service/betha/v1/xsd/TiposNFe_v01.xsd +583 -0
- data/test/br_nfe/service/betha/v1/xsd/nfse_v01.xsd +652 -0
- data/test/br_nfe/service/betha/v1/xsd/servico_cancelar_nfse_envio_v01.xsd +17 -0
- data/test/br_nfe/service/betha/v1/xsd/servico_consultar_lote_rps_envio_v01.xsd +16 -0
- data/test/br_nfe/service/betha/v1/xsd/servico_consultar_nfse_envio_v01.xsd +28 -0
- data/test/br_nfe/service/betha/v1/xsd/servico_consultar_nfse_rps_envio_v01.xsd +16 -0
- data/test/br_nfe/service/betha/v1/xsd/servico_consultar_situacao_lote_rps_envio_v01.xsd +16 -0
- data/test/br_nfe/service/betha/v1/xsd/servico_enviar_lote_rps_envio_v01.xsd +17 -0
- data/test/br_nfe/service/betha/v1/xsd/xmldsig-core-schema.xsd +308 -0
- data/test/br_nfe/service/betha/v1/xsd/xmldsig-core-schema_v01.xsd +95 -0
- data/test/br_nfe/service/concerns/rules/cancelamento_nfs_test.rb +15 -0
- data/test/br_nfe/service/concerns/rules/consulta_nfs_por_rps_test.rb +36 -0
- data/test/br_nfe/service/concerns/rules/consulta_nfse_test.rb +42 -0
- data/test/br_nfe/{servico/base_test.rb → service/concerns/rules/recepcao_lote_rps_test.rb} +12 -4
- data/test/br_nfe/{servico → service}/intermediario_test.rb +1 -1
- data/test/br_nfe/service/item_test.rb +34 -0
- data/test/br_nfe/{servico → service}/rps_test.rb +191 -43
- data/test/br_nfe/service/sc/florianopolis/XSD/TiposNFSe_v2.0.xsd +863 -0
- data/test/br_nfe/service/sc/florianopolis/XSD/xmldsig-core-schema.xsd +309 -0
- data/test/br_nfe/service/sc/florianopolis/base_test.rb +20 -0
- data/test/br_nfe/service/sc/florianopolis/cancellation_test.rb +36 -0
- data/test/br_nfe/service/sc/florianopolis/emission_rps_test.rb +145 -0
- data/test/br_nfe/service/sc/gaspar/cancela_nfse_test.rb +21 -0
- data/test/br_nfe/service/sc/gaspar/consulta_nfs_por_rps_test.rb +21 -0
- data/test/br_nfe/service/sc/gaspar/consulta_nfse_test.rb +21 -0
- data/test/br_nfe/service/sc/gaspar/consulta_situacao_lote_rps_test.rb +21 -0
- data/test/br_nfe/service/sc/gaspar/recepcao_lote_rps_limitado_test.rb +22 -0
- data/test/br_nfe/service/sc/gaspar/recepcao_lote_rps_test.rb +22 -0
- data/test/br_nfe/service/thema/v1/base_test.rb +65 -0
- data/test/br_nfe/service/thema/v1/cancela_nfse_test.rb +56 -0
- data/test/br_nfe/service/thema/v1/consulta_lote_rps_test.rb +47 -0
- data/test/br_nfe/service/thema/v1/consulta_nfs_por_rps_test.rb +50 -0
- data/test/br_nfe/service/thema/v1/consulta_nfse_test.rb +50 -0
- data/test/br_nfe/service/thema/v1/consulta_situacao_lote_rps_test.rb +47 -0
- data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test.rb +62 -0
- data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test_limitado.rb +50 -0
- data/test/br_nfe/service/thema/v1/xsd/nfse.xsd +656 -0
- data/test/br_nfe/service/thema/v1/xsd/xmldsig-core-schema20020212.xsd +318 -0
- data/test/br_nfe/service/xsd/v1/nfse.xsd +779 -0
- data/test/br_nfe/service/xsd/v1/xmldsig-core-schema20020212.xsd +316 -0
- data/test/cert.pfx +0 -0
- data/test/factories/base.rb +2 -0
- data/test/factories/destinatario.rb +3 -3
- data/test/factories/response/service/build_response.rb +5 -0
- data/test/factories/response/service/default.rb +10 -0
- data/test/factories/{servico/response → response/service}/nota_fiscal.rb +9 -9
- data/test/factories/service/base.rb +6 -0
- data/test/factories/service/betha/base.rb +4 -0
- data/test/factories/service/betha/v1/cancelamento_nfs.rb +9 -0
- data/test/factories/{servico → service}/betha/v1/consulta_lote_rps.rb +2 -2
- data/test/factories/{servico → service}/betha/v1/consulta_nfs_por_rps.rb +1 -1
- data/test/factories/service/betha/v1/consulta_nfse.rb +8 -0
- data/test/factories/{servico → service}/betha/v1/consulta_situacao_lote_rps.rb +2 -2
- data/test/factories/{servico → service}/betha/v1/gateway.rb +1 -1
- data/test/factories/service/betha/v1/recepcao_lote_rps.rb +8 -0
- data/test/factories/{servico → service}/intermediario.rb +2 -2
- data/test/factories/service/item.rb +12 -0
- data/test/factories/service/rps.rb +50 -0
- data/test/factories/service/sc/florianopolis/base.rb +5 -0
- data/test/factories/service/sc/florianopolis/cancellation.rb +7 -0
- data/test/factories/service/sc/florianopolis/emission_rps.rb +7 -0
- data/test/factories/service/sc/gaspar/cancela_nfse.rb +9 -0
- data/test/factories/service/sc/gaspar/consulta_lote_rps.rb +7 -0
- data/test/factories/service/sc/gaspar/consulta_nfs_por_rps.rb +6 -0
- data/test/factories/service/sc/gaspar/consulta_nfse.rb +8 -0
- data/test/factories/service/sc/gaspar/consulta_situacao_lote_rps.rb +6 -0
- data/test/factories/service/sc/gaspar/recepcao_lote_rps.rb +9 -0
- data/test/factories/service/sc/gaspar/recepcao_lote_rps_limitado.rb +9 -0
- data/test/factories/service/thema/v1/base.rb +7 -0
- data/test/factories/service/thema/v1/cancela_nfse.rb +9 -0
- data/test/factories/service/thema/v1/consulta_lote_rps.rb +7 -0
- data/test/factories/service/thema/v1/consulta_nfs_por_rps.rb +6 -0
- data/test/factories/service/thema/v1/consulta_nfse.rb +8 -0
- data/test/factories/service/thema/v1/consulta_situacao_lote_rps.rb +6 -0
- data/test/factories/service/thema/v1/recepcao_lote_rps.rb +9 -0
- data/test/factories/service/thema/v1/recepcao_lote_rps_limitado.rb +8 -0
- data/test/test_helper.rb +42 -0
- metadata +338 -121
- data/lib/br_nfe/servico/base.rb +0 -35
- data/lib/br_nfe/servico/betha/base.rb +0 -85
- data/lib/br_nfe/servico/betha/build_response.rb +0 -141
- data/lib/br_nfe/servico/betha/v1/build_response.rb +0 -121
- data/lib/br_nfe/servico/betha/v1/cancelamento_nfs.rb +0 -52
- data/lib/br_nfe/servico/betha/v1/consulta_lote_rps.rb +0 -33
- data/lib/br_nfe/servico/betha/v1/consulta_nfs_por_rps.rb +0 -37
- data/lib/br_nfe/servico/betha/v1/consulta_nfse.rb +0 -51
- data/lib/br_nfe/servico/betha/v1/consulta_situacao_lote_rps.rb +0 -18
- data/lib/br_nfe/servico/betha/v1/gateway.rb +0 -125
- data/lib/br_nfe/servico/betha/v1/recepcao_lote_rps.rb +0 -97
- data/lib/br_nfe/servico/betha/v2/build_response.rb +0 -159
- data/lib/br_nfe/servico/betha/v2/cancelamento_nfs.rb +0 -30
- data/lib/br_nfe/servico/betha/v2/consulta_lote_rps.rb +0 -30
- data/lib/br_nfe/servico/betha/v2/consulta_nfse_por_rps.rb +0 -27
- data/lib/br_nfe/servico/betha/v2/envio_lote_rps_sincrono.rb +0 -30
- data/lib/br_nfe/servico/betha/v2/gateway.rb +0 -230
- data/lib/br_nfe/servico/betha/v2/gera_nfse.rb +0 -30
- data/lib/br_nfe/servico/betha/v2/recepcao_lote_rps.rb +0 -52
- data/lib/br_nfe/servico/betha/v2/substituicao_nfse.rb +0 -43
- data/lib/br_nfe/servico/response/default.rb +0 -34
- data/lib/br_nfe/servico/rps.rb +0 -108
- data/test/br_nfe/servico/betha/base_test.rb +0 -135
- data/test/br_nfe/servico/betha/v1/build_response_test.rb +0 -557
- data/test/br_nfe/servico/betha/v1/cancelamento_nfs_test.rb +0 -72
- data/test/br_nfe/servico/betha/v1/consulta_lote_rps_test.rb +0 -46
- data/test/br_nfe/servico/betha/v1/consulta_nfs_por_rps_test.rb +0 -68
- data/test/br_nfe/servico/betha/v1/consulta_nfse_test.rb +0 -74
- data/test/br_nfe/servico/betha/v1/consulta_situacao_lote_rps_test.rb +0 -27
- data/test/br_nfe/servico/betha/v1/gateway_test.rb +0 -151
- data/test/br_nfe/servico/betha/v1/recepcao_lote_rps_test.rb +0 -249
- data/test/br_nfe/servico/betha/v2/cancelamento_nfs_test.rb +0 -44
- data/test/br_nfe/servico/betha/v2/consulta_lote_rps_test.rb +0 -38
- data/test/br_nfe/servico/betha/v2/consulta_nfse_por_rps_test.rb +0 -36
- data/test/br_nfe/servico/betha/v2/envio_lote_rps_sincrono_test.rb +0 -51
- data/test/br_nfe/servico/betha/v2/gateway_test.rb +0 -372
- data/test/br_nfe/servico/betha/v2/gera_nfse_test.rb +0 -62
- data/test/br_nfe/servico/betha/v2/recepcao_lote_rps_test.rb +0 -108
- data/test/br_nfe/servico/betha/v2/substituicao_nfse_test.rb +0 -84
- data/test/br_nfe/servico/response/default_test.rb +0 -54
- data/test/factories/servico/base.rb +0 -5
- data/test/factories/servico/betha/base.rb +0 -5
- data/test/factories/servico/betha/v1/build_response.rb +0 -6
- data/test/factories/servico/betha/v1/cancelamento_nfs.rb +0 -7
- data/test/factories/servico/betha/v1/consulta_nfse.rb +0 -8
- data/test/factories/servico/betha/v1/recepcao_lote_rps.rb +0 -6
- data/test/factories/servico/betha/v2/cancelamento_nfs.rb +0 -7
- data/test/factories/servico/betha/v2/consulta_lote_rps.rb +0 -6
- data/test/factories/servico/betha/v2/consulta_nfse_por_rps.rb +0 -6
- data/test/factories/servico/betha/v2/envio_lote_rps_sincrono.rb +0 -5
- data/test/factories/servico/betha/v2/gateway.rb +0 -5
- data/test/factories/servico/betha/v2/gera_nfse.rb +0 -6
- data/test/factories/servico/betha/v2/recepcao_lote_rps.rb +0 -5
- data/test/factories/servico/betha/v2/substituicao_nfse.rb +0 -8
- data/test/factories/servico/response/default.rb +0 -10
- data/test/factories/servico/rps.rb +0 -44
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module BrNfe
|
|
2
|
+
module Service
|
|
3
|
+
module Betha
|
|
4
|
+
module V1
|
|
5
|
+
module ResponsePaths
|
|
6
|
+
module ServicoConsultarLoteRpsResposta
|
|
7
|
+
include BrNfe::Service::Response::Paths::V1::ServicoConsultarLoteRpsResposta
|
|
8
|
+
|
|
9
|
+
# Caminho referente ao caminho onde se encontra as notas fiscais
|
|
10
|
+
# poderá encontrar apenas uma ou várias
|
|
11
|
+
def invoices_path
|
|
12
|
+
[:consultar_lote_rps_resposta, :lista_nfse, :compl_nfse]
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module BrNfe
|
|
2
|
+
module Service
|
|
3
|
+
module Betha
|
|
4
|
+
module V1
|
|
5
|
+
module ResponsePaths
|
|
6
|
+
module ServicoConsultarNfseResposta
|
|
7
|
+
include BrNfe::Service::Response::Paths::V1::ServicoConsultarNfseResposta
|
|
8
|
+
|
|
9
|
+
def invoices_path
|
|
10
|
+
[:consultar_nfse_resposta, :lista_nfse, :compl_nfse]
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module BrNfe
|
|
2
|
+
module Service
|
|
3
|
+
module Betha
|
|
4
|
+
module V1
|
|
5
|
+
module ResponsePaths
|
|
6
|
+
module ServicoConsultarNfseRpsResposta
|
|
7
|
+
include BrNfe::Service::Response::Paths::V1::ServicoConsultarNfseRpsResposta
|
|
8
|
+
|
|
9
|
+
def invoices_path
|
|
10
|
+
[:consultar_nfse_rps_resposta, :compl_nfse]
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module BrNfe
|
|
2
|
+
module Service
|
|
3
|
+
module Concerns
|
|
4
|
+
module Rules
|
|
5
|
+
module CancelamentoNfs
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
included do
|
|
9
|
+
|
|
10
|
+
attr_accessor :nfe_number
|
|
11
|
+
attr_accessor :codigo_cancelamento
|
|
12
|
+
|
|
13
|
+
validates :nfe_number, :codigo_cancelamento, presence: true
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module BrNfe
|
|
2
|
+
module Service
|
|
3
|
+
module Concerns
|
|
4
|
+
module Rules
|
|
5
|
+
module ConsultaNfsPorRps
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
included do
|
|
9
|
+
include BrNfe::Helper::HaveRps
|
|
10
|
+
|
|
11
|
+
validate :validate_rps # metodo definido no module BrNfe::Helper::HaveRps
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module BrNfe
|
|
2
|
+
module Service
|
|
3
|
+
module Concerns
|
|
4
|
+
module Rules
|
|
5
|
+
module ConsultaNfse
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
included do
|
|
9
|
+
include BrNfe::Helper::HaveDestinatario
|
|
10
|
+
include BrNfe::Helper::HaveIntermediario
|
|
11
|
+
|
|
12
|
+
attr_accessor :nfe_number
|
|
13
|
+
attr_accessor :start_date
|
|
14
|
+
attr_accessor :end_date
|
|
15
|
+
|
|
16
|
+
def start_date
|
|
17
|
+
value_date(@start_date)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def end_date
|
|
21
|
+
value_date(@end_date)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module BrNfe
|
|
2
|
+
module Service
|
|
3
|
+
module Concerns
|
|
4
|
+
module Rules
|
|
5
|
+
module RecepcaoLoteRps
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
included do
|
|
9
|
+
|
|
10
|
+
attr_accessor :lote_rps
|
|
11
|
+
attr_accessor :numero_lote_rps
|
|
12
|
+
attr_accessor :operacao
|
|
13
|
+
|
|
14
|
+
validates :numero_lote_rps, presence: true
|
|
15
|
+
validate :validar_lote_rps
|
|
16
|
+
|
|
17
|
+
def initialize(attributes = {})
|
|
18
|
+
self.lote_rps = [] # Para poder utilizar o << para adicionar rps
|
|
19
|
+
super
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Get lote_rps
|
|
23
|
+
# Sobrescrito para sempre retornar um Array
|
|
24
|
+
#
|
|
25
|
+
# <b>Tipo de retorno: </b> _Array_
|
|
26
|
+
#
|
|
27
|
+
def lote_rps
|
|
28
|
+
@lote_rps = [@lote_rps].flatten # Para retornar sempre um vetor
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def validar_lote_rps
|
|
34
|
+
if lote_rps.empty?
|
|
35
|
+
errors.add(:base, "Deve conter ao menos 1 RPS")
|
|
36
|
+
else
|
|
37
|
+
lote_rps.each_with_index do |rps, i|
|
|
38
|
+
rps.validar_recepcao_rps = true
|
|
39
|
+
if rps.invalid?
|
|
40
|
+
rps.errors.full_messages.map{|msg| errors.add(:base, "RPS #{i+1}: #{msg}") }
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
module BrNfe
|
|
2
|
+
module Service
|
|
3
|
+
class Item < BrNfe::ActiveModelBase
|
|
4
|
+
|
|
5
|
+
# ID do código CNAE
|
|
6
|
+
# Algumas cidades necessitam que esse ID seja passado
|
|
7
|
+
# e normalmente é encontrado junto a documentação da mesma.
|
|
8
|
+
#
|
|
9
|
+
# <b>Tipo: </b> _Integer_
|
|
10
|
+
attr_accessor :cnae_id
|
|
11
|
+
|
|
12
|
+
# Código CNAE (Classificação Nacional de Atividades Econômicas)
|
|
13
|
+
# Pode ser encontrado em http://www.cnae.ibge.gov.br/
|
|
14
|
+
# Tamanho de 8 caracteres
|
|
15
|
+
#
|
|
16
|
+
# <b>Tipo: </b> _String_
|
|
17
|
+
attr_accessor :cnae_code
|
|
18
|
+
|
|
19
|
+
# Descrição do serviço
|
|
20
|
+
# Será utilizada apenas para as cidades que permitem adicionar mais de 1 item de
|
|
21
|
+
# serviço na mesma nota
|
|
22
|
+
#
|
|
23
|
+
# <b>Tipo: </b> _Text_
|
|
24
|
+
attr_accessor :description
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# CST
|
|
28
|
+
# Código da situação tributária
|
|
29
|
+
# onde apenas alguns municipios utilizam
|
|
30
|
+
#
|
|
31
|
+
# <b>Tipo: </b> _Text_
|
|
32
|
+
attr_accessor :cst
|
|
33
|
+
|
|
34
|
+
# Alíquota
|
|
35
|
+
# Percentual de aliquota dividido por 100
|
|
36
|
+
# Ex: se a aliquita for 7.5% então o valor setado no campo é 0.075
|
|
37
|
+
#
|
|
38
|
+
# <b>Tipo: </b> _Float_
|
|
39
|
+
attr_accessor :iss_tax_rate
|
|
40
|
+
|
|
41
|
+
# Valor unitário do item
|
|
42
|
+
# Refere-se ao valor separado de cada serviço prestado
|
|
43
|
+
#
|
|
44
|
+
# <b>Tipo: </b> _Float_
|
|
45
|
+
attr_accessor :unit_value
|
|
46
|
+
|
|
47
|
+
# Quantidade prestada de serviços do item
|
|
48
|
+
#
|
|
49
|
+
# <b>Tipo: </b> _Float_
|
|
50
|
+
attr_accessor :quantity
|
|
51
|
+
|
|
52
|
+
# Valor total cobrado do item
|
|
53
|
+
#
|
|
54
|
+
# <b>Tipo: </b> _Float_
|
|
55
|
+
attr_accessor :total_value
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def default_values
|
|
59
|
+
{
|
|
60
|
+
quantity: 1.0,
|
|
61
|
+
}
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def total_value
|
|
66
|
+
@total_value || (quantity.to_f * unit_value.to_f)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
module BrNfe
|
|
2
|
+
module Service
|
|
3
|
+
class Rps < BrNfe::ActiveModelBase
|
|
4
|
+
include BrNfe::Helper::HaveDestinatario
|
|
5
|
+
include BrNfe::Helper::HaveIntermediario
|
|
6
|
+
include BrNfe::Helper::HaveCondicaoPagamento
|
|
7
|
+
|
|
8
|
+
# Método utilizado para saberse o modelo deve validar
|
|
9
|
+
# as informações obrigatórias do RPS.
|
|
10
|
+
# Por padrão é setado com true pois a maioria das cidades trabalha com RPS.
|
|
11
|
+
# Para as cidades que não trabalham com RPS esse método deverá ser sobrescrito
|
|
12
|
+
#
|
|
13
|
+
# <b>Tipo: </b> _Boolean_
|
|
14
|
+
def validate_rps?
|
|
15
|
+
true
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Sempre que houver RPS, essas informações são obrigatórias
|
|
19
|
+
validates :numero, :serie, :tipo, presence: true, if: :validate_rps?
|
|
20
|
+
|
|
21
|
+
with_options if: :validar_recepcao_rps do |record|
|
|
22
|
+
record.validates :data_emissao, :item_lista_servico, :description, :codigo_municipio, :base_calculation, presence: true
|
|
23
|
+
record.validates :total_iss, :iss_tax_rate, presence: true, unless: :iss_retained?
|
|
24
|
+
record.validates :municipio_incidencia, presence: true, if: :municipio_incidencia_obrigatorio?
|
|
25
|
+
|
|
26
|
+
record.validates :total_services, :base_calculation, numericality: {greater_than: 0}
|
|
27
|
+
|
|
28
|
+
record.validates :deductions, :valor_pis, :valor_cofins, :valor_inss, :valor_ir,
|
|
29
|
+
:valor_csll, :outras_retencoes, :total_iss, :iss_tax_rate, :base_calculation,
|
|
30
|
+
:desconto_incondicionado, :desconto_condicionado, numericality: true, allow_blank: true
|
|
31
|
+
|
|
32
|
+
record.validate :validar_intermediario
|
|
33
|
+
record.validate :validar_destinatario
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def initialize(attributes = {})
|
|
38
|
+
self.items = [] # Para poder utilizar o << para adicionar itens
|
|
39
|
+
super
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Itens do RPS
|
|
43
|
+
# Contém um vetor com todos os serviços prestados
|
|
44
|
+
# Para a maioria das cidades os itens são informados junto à discriminação
|
|
45
|
+
# porém para outras poucas cidades é possível inserir vários itens de serviços
|
|
46
|
+
# na NF.
|
|
47
|
+
#
|
|
48
|
+
# Mesmo para as cidades que não permitem enviar os itens de serviço
|
|
49
|
+
# será necessário informar pelo menos 1 item.
|
|
50
|
+
#
|
|
51
|
+
# <b>Tipo: </b> _Array_
|
|
52
|
+
attr_accessor :items
|
|
53
|
+
def items
|
|
54
|
+
@items = [@items].flatten # Para retornar sempre um vetor
|
|
55
|
+
# Só aceita objetos que forem da classe definida em _BrNfe.service_item_class_
|
|
56
|
+
@items.select!{ |item| item.is_a?(BrNfe.service_item_class) }
|
|
57
|
+
@items
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Valor da base de cálculo da substituição tributária
|
|
61
|
+
#
|
|
62
|
+
# <b>Tipo: </b> _Float_
|
|
63
|
+
attr_accessor :total_base_calculation_st
|
|
64
|
+
|
|
65
|
+
# Valor total do ISS de substituição tributária
|
|
66
|
+
#
|
|
67
|
+
# <b>Tipo: </b> _Float_
|
|
68
|
+
attr_accessor :total_issqn_st
|
|
69
|
+
|
|
70
|
+
attr_accessor :validar_recepcao_rps
|
|
71
|
+
|
|
72
|
+
attr_accessor :numero
|
|
73
|
+
attr_accessor :serie
|
|
74
|
+
attr_accessor :tipo
|
|
75
|
+
|
|
76
|
+
attr_accessor :data_emissao
|
|
77
|
+
attr_accessor :status
|
|
78
|
+
attr_accessor :competencia
|
|
79
|
+
|
|
80
|
+
attr_accessor :numero_substituicao
|
|
81
|
+
attr_accessor :serie_substituicao
|
|
82
|
+
attr_accessor :tipo_substituicao
|
|
83
|
+
|
|
84
|
+
#Para construção civil
|
|
85
|
+
attr_accessor :codigo_obra
|
|
86
|
+
attr_accessor :codigo_art
|
|
87
|
+
|
|
88
|
+
# Valor total dos serviços
|
|
89
|
+
# Pode ser definido diretamente ou então será a soma
|
|
90
|
+
# do valor de todos os itens
|
|
91
|
+
#
|
|
92
|
+
# <b>Tipo: </b> _Float_
|
|
93
|
+
attr_accessor :total_services
|
|
94
|
+
def total_services
|
|
95
|
+
@total_services || items.map(&:total_value).map(&:to_f).sum.round(2)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Valor da base de cálculo
|
|
99
|
+
# Caso não definido irá somar o total dos serviços e subtrair com
|
|
100
|
+
# o valor das deduções
|
|
101
|
+
#
|
|
102
|
+
# <b>Tipo: </b> _Float_
|
|
103
|
+
attr_accessor :base_calculation
|
|
104
|
+
def base_calculation
|
|
105
|
+
@base_calculation || (total_services.to_f - deductions.to_f).round(2)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Valor das deduções de impostos
|
|
109
|
+
#
|
|
110
|
+
# <b>Tipo: </b> _Float_
|
|
111
|
+
attr_accessor :deductions
|
|
112
|
+
|
|
113
|
+
# Iss retido?
|
|
114
|
+
# Identifica se o ISS foi retido
|
|
115
|
+
#
|
|
116
|
+
# <b>Tipo: </b> _Integer_
|
|
117
|
+
attr_accessor :iss_retained
|
|
118
|
+
|
|
119
|
+
# Valor do Iss retido
|
|
120
|
+
# Total de iss retido da nota
|
|
121
|
+
#
|
|
122
|
+
# <b>Tipo: </b> _float_
|
|
123
|
+
#
|
|
124
|
+
attr_accessor :total_iss_retained
|
|
125
|
+
|
|
126
|
+
# Valor total do ISS (R$)
|
|
127
|
+
# Valor utilizado para identificar o valor total do ISS
|
|
128
|
+
#
|
|
129
|
+
# <b>Tipo: </b> _Float_
|
|
130
|
+
attr_accessor :total_iss
|
|
131
|
+
|
|
132
|
+
# % de Aliquota do ISS
|
|
133
|
+
# Utilizado para as cidades que não possuem multiplos itens de serviço na nota.
|
|
134
|
+
# Caso não seja definido então irá pegar a aliquota do 1º item que encontrar
|
|
135
|
+
#
|
|
136
|
+
# <b>Tipo: </b> _Float_
|
|
137
|
+
attr_accessor :iss_tax_rate
|
|
138
|
+
def iss_tax_rate
|
|
139
|
+
@iss_tax_rate || items.first.try(:iss_tax_rate)
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
# Valor líquido da NF (R$)
|
|
143
|
+
#
|
|
144
|
+
# Normalmente esse valor é adquirido a partir da seguinte fórmula:
|
|
145
|
+
# (ValorServicos - ValorPIS -ValorCOFINS - ValorINSS - ValorIR - ValorCSLL -
|
|
146
|
+
# OutrasRetençoes - ValorISSRetido -DescontoIncondicionado -DescontoCondicionado)
|
|
147
|
+
#
|
|
148
|
+
# <b>Tipo: </b> _Float_
|
|
149
|
+
#
|
|
150
|
+
attr_accessor :net_value
|
|
151
|
+
|
|
152
|
+
attr_accessor :valor_pis
|
|
153
|
+
attr_accessor :valor_cofins
|
|
154
|
+
attr_accessor :valor_inss
|
|
155
|
+
attr_accessor :valor_ir
|
|
156
|
+
attr_accessor :valor_csll
|
|
157
|
+
attr_accessor :outras_retencoes
|
|
158
|
+
attr_accessor :desconto_incondicionado
|
|
159
|
+
attr_accessor :desconto_condicionado
|
|
160
|
+
|
|
161
|
+
attr_accessor :responsavel_retencao
|
|
162
|
+
attr_accessor :item_lista_servico
|
|
163
|
+
attr_accessor :codigo_tributacao_municipio
|
|
164
|
+
attr_accessor :exigibilidade_iss
|
|
165
|
+
attr_accessor :codigo_municipio
|
|
166
|
+
attr_accessor :municipio_incidencia
|
|
167
|
+
attr_accessor :codigo_pais
|
|
168
|
+
attr_accessor :numero_processo
|
|
169
|
+
attr_accessor :outras_informacoes
|
|
170
|
+
|
|
171
|
+
# Código CNAE (Classificação Nacional de Atividades Econômicas)
|
|
172
|
+
# Pode ser encontrado em http://www.cnae.ibge.gov.br/
|
|
173
|
+
# Tamanho de 8 caracteres
|
|
174
|
+
# - Para as cidades que não trabalham com multiplos serviços na nota, se não for definido
|
|
175
|
+
# um código CNAE será pega o código do 1° item de serviço (se houver algum)
|
|
176
|
+
#
|
|
177
|
+
# <b>Tipo: </b> _String_
|
|
178
|
+
attr_accessor :cnae_code
|
|
179
|
+
def cnae_code
|
|
180
|
+
@cnae_code || items.first.try(:cnae_code)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# Descrição dos serviços prestados
|
|
184
|
+
# Algumas cidades permitem adicionar os serviços com itens
|
|
185
|
+
# e a maioria é necessário identificar cada serviço dentro da discriminação.
|
|
186
|
+
#
|
|
187
|
+
# <b>Tipo: </b> _Text_
|
|
188
|
+
attr_accessor :description
|
|
189
|
+
|
|
190
|
+
# Verifica se a NF atual está sendo substituida por outra
|
|
191
|
+
#
|
|
192
|
+
# <b>Tipo: </b> _Boolean_
|
|
193
|
+
def replace_invoice?
|
|
194
|
+
numero_substituicao.present? && serie_substituicao.present? && tipo_substituicao.present?
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
def iss_retained?
|
|
198
|
+
BrNfe.true_values.include?(iss_retained)
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
def competencia
|
|
202
|
+
@competencia || data_emissao
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def default_values
|
|
206
|
+
{
|
|
207
|
+
codigo_pais: '1058',
|
|
208
|
+
validar_recepcao_rps: false
|
|
209
|
+
}
|
|
210
|
+
end
|
|
211
|
+
private
|
|
212
|
+
|
|
213
|
+
def validar_intermediario
|
|
214
|
+
return true unless intermediario
|
|
215
|
+
if intermediario.invalid?
|
|
216
|
+
intermediario.errors.full_messages.map{|msg| errors.add(:base, "Intermediário: #{msg}") }
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
def validar_destinatario
|
|
221
|
+
if destinatario.invalid?
|
|
222
|
+
destinatario.errors.full_messages.map{|msg| errors.add(:base, "Destinatário: #{msg}") }
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def municipio_incidencia_obrigatorio?
|
|
227
|
+
"#{exigibilidade_iss}".in?(['1','01','6','06','7','07'])
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|