br_nfe 1.1.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -1,72 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
describe BrNfe::Servico::Betha::V1::CancelamentoNfs do
|
4
|
-
subject { FactoryGirl.build(:servico_betha_cancelamento_nfs, emitente: emitente) }
|
5
|
-
let(:emitente) { FactoryGirl.build(:emitente) }
|
6
|
-
|
7
|
-
describe "superclass" do
|
8
|
-
it { subject.class.superclass.must_equal BrNfe::Servico::Betha::V1::Gateway }
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "validations" do
|
12
|
-
it { must validate_presence_of(:numero_nfse) }
|
13
|
-
it { must validate_presence_of(:codigo_cancelamento) }
|
14
|
-
context "validações do certificado" do
|
15
|
-
before { subject.certificate_pkcs12 = nil }
|
16
|
-
it { must validate_presence_of(:certificate) }
|
17
|
-
it { must validate_presence_of(:certificate_key) }
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe "#wsdl" do
|
22
|
-
context "for env production" do
|
23
|
-
it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/cancelarNfseV02?wsdl' }
|
24
|
-
end
|
25
|
-
context "for env test" do
|
26
|
-
before do
|
27
|
-
subject.env = :test
|
28
|
-
end
|
29
|
-
it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/cancelarNfseV02?wsdl' }
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "#method_wsdl" do
|
34
|
-
it { subject.method_wsdl.must_equal :cancelar_nfse }
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
describe "#xml_inf_pedido_cancelamento" do
|
39
|
-
it "estrutura" do
|
40
|
-
xml = subject.send(:xml_inf_pedido_cancelamento).doc
|
41
|
-
|
42
|
-
xml.xpath('InfPedidoCancelamento/CodigoCancelamento').first.text.must_equal subject.codigo_cancelamento
|
43
|
-
|
44
|
-
xml.xpath('InfPedidoCancelamento/IdentificacaoNfse/Numero').first.text.must_equal subject.numero_nfse
|
45
|
-
|
46
|
-
xml.xpath('InfPedidoCancelamento/IdentificacaoNfse/Cnpj').first.text.must_equal emitente.cnpj
|
47
|
-
xml.xpath('InfPedidoCancelamento/IdentificacaoNfse/InscricaoMunicipal').first.text.must_equal emitente.inscricao_municipal
|
48
|
-
xml.xpath('InfPedidoCancelamento/IdentificacaoNfse/CodigoMunicipio').first.text.must_equal emitente.endereco.codigo_municipio
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
|
53
|
-
describe "#xml_builder" do
|
54
|
-
let(:info_pedido) do
|
55
|
-
Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
|
56
|
-
xml.InfPedidoCancelamento 'Valor'
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
it "deve adicionar o valor do xml_inf_pedido_cancelamento e assinar o xml" do
|
61
|
-
subject.stubs(:xml_inf_pedido_cancelamento).returns(info_pedido)
|
62
|
-
subject.expects(:assinatura_xml).with(info_pedido.doc.root.to_s).returns("<Signature>Val</Signature>")
|
63
|
-
xml = subject.xml_builder
|
64
|
-
xml = Nokogiri::XML xml
|
65
|
-
|
66
|
-
xml.xpath('Pedido/InfPedidoCancelamento').first.text.must_equal 'Valor'
|
67
|
-
xml.xpath('Pedido/Signature').first.text.must_equal 'Val'
|
68
|
-
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
describe BrNfe::Servico::Betha::V1::ConsultaLoteRps do
|
4
|
-
subject { FactoryGirl.build(:servico_betha_consulta_lote_rps, emitente: emitente) }
|
5
|
-
let(:emitente) { FactoryGirl.build(:emitente) }
|
6
|
-
|
7
|
-
describe "superclass" do
|
8
|
-
it { subject.class.superclass.must_equal BrNfe::Servico::Betha::V1::Gateway }
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "validations" do
|
12
|
-
it { must validate_presence_of(:protocolo) }
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "#wsdl" do
|
16
|
-
context "for env production" do
|
17
|
-
it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/consultarLoteRps?wsdl' }
|
18
|
-
end
|
19
|
-
context "for env test" do
|
20
|
-
before do
|
21
|
-
subject.env = :test
|
22
|
-
end
|
23
|
-
it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarLoteRps?wsdl' }
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
describe "#method_wsdl" do
|
28
|
-
it { subject.method_wsdl.must_equal :consultar_lote_rps }
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
describe "#xml_builder" do
|
33
|
-
it "deve adicionar o valor do xml_inf_pedido_cancelamento e assinar o xml" do
|
34
|
-
subject.protocolo = '6654898765131'
|
35
|
-
|
36
|
-
xml = subject.xml_builder.to_s
|
37
|
-
xml = Nokogiri::XML xml
|
38
|
-
|
39
|
-
xml.xpath('Temp/Prestador/Cnpj').first.text.must_equal emitente.cnpj
|
40
|
-
xml.xpath('Temp/Prestador/InscricaoMunicipal').first.text.must_equal emitente.inscricao_municipal
|
41
|
-
xml.xpath('Temp/Protocolo').first.text.must_equal '6654898765131'
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'br_nfe/helper/have_rps'
|
3
|
-
|
4
|
-
describe BrNfe::Servico::Betha::V1::ConsultaNfsPorRps do
|
5
|
-
subject { FactoryGirl.build(:servico_betha_consulta_nfs_por_rps, emitente: emitente) }
|
6
|
-
let(:emitente) { FactoryGirl.build(:emitente) }
|
7
|
-
let(:rps) { subject.rps }
|
8
|
-
|
9
|
-
describe "superclass" do
|
10
|
-
it { subject.class.superclass.must_equal BrNfe::Servico::Betha::V1::Gateway }
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "#wsdl" do
|
14
|
-
context "for env production" do
|
15
|
-
it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/consultarNfsePorRps?wsdl' }
|
16
|
-
end
|
17
|
-
context "for env test" do
|
18
|
-
before do
|
19
|
-
subject.env = :test
|
20
|
-
end
|
21
|
-
it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarNfsePorRps?wsdl' }
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe "#method_wsdl" do
|
26
|
-
it { subject.method_wsdl.must_equal :consultar_nfse_por_rps }
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "rps" do
|
30
|
-
include BrNfeTest::HelperTest::HaveRpsTest
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "#xml_builder" do
|
34
|
-
it "deve adicionar o valor do xml_inf_pedido_cancelamento e assinar o xml" do
|
35
|
-
xml = subject.xml_builder.to_s
|
36
|
-
xml = Nokogiri::XML xml
|
37
|
-
|
38
|
-
xml.xpath('Temp/Prestador/Cnpj').first.text.must_equal emitente.cnpj
|
39
|
-
xml.xpath('Temp/Prestador/InscricaoMunicipal').first.text.must_equal emitente.inscricao_municipal
|
40
|
-
|
41
|
-
xml.xpath('Temp/IdentificacaoRps/Numero').first.text.must_equal rps.numero.to_s
|
42
|
-
xml.xpath('Temp/IdentificacaoRps/Serie').first.text.must_equal rps.serie.to_s
|
43
|
-
xml.xpath('Temp/IdentificacaoRps/Tipo').first.text.must_equal rps.tipo.to_s
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "#set_response" do
|
48
|
-
let(:hash_response) { {envelope: {body: {consultar_nfse_por_rps_envio_response: 'valor_hash'} } } }
|
49
|
-
let(:response) { FactoryGirl.build(:response_default) }
|
50
|
-
let(:build_response) { FactoryGirl.build(:betha_v1_build_response) }
|
51
|
-
|
52
|
-
it "deve instanciar um objeto response pelo build_response" do
|
53
|
-
res = Object.new
|
54
|
-
res.stubs(:hash).returns( hash_response )
|
55
|
-
build_response.stubs(:response).returns(response)
|
56
|
-
|
57
|
-
BrNfe::Servico::Betha::V1::BuildResponse.expects(:new).
|
58
|
-
with({hash: 'valor_hash', nfe_method: :consultar_nfse_rps}).
|
59
|
-
returns(build_response)
|
60
|
-
|
61
|
-
subject.instance_variable_get(:@response).must_be_nil
|
62
|
-
|
63
|
-
subject.set_response(res).must_equal response
|
64
|
-
subject.instance_variable_get(:@response).must_equal response
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
@@ -1,74 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
describe BrNfe::Servico::Betha::V1::ConsultaNfse do
|
4
|
-
subject { FactoryGirl.build(:servico_betha_consulta_nfse, emitente: emitente) }
|
5
|
-
let(:emitente) { FactoryGirl.build(:emitente) }
|
6
|
-
|
7
|
-
describe "superclass" do
|
8
|
-
it { subject.class.superclass.must_equal BrNfe::Servico::Betha::V1::Gateway }
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "validations" do
|
12
|
-
it { must validate_presence_of(:data_inicial) }
|
13
|
-
it { must validate_presence_of(:data_final) }
|
14
|
-
end
|
15
|
-
|
16
|
-
context "data inicial e final sempre deve retornar uma data na formatação adequada" do
|
17
|
-
it "data_inicial" do
|
18
|
-
subject.data_inicial = '12/05/2015'
|
19
|
-
subject.data_inicial.must_equal '2015-05-12'
|
20
|
-
end
|
21
|
-
|
22
|
-
it "data_final" do
|
23
|
-
subject.data_inicial = Date.parse '12/05/2010'
|
24
|
-
subject.data_inicial.must_equal '2010-05-12'
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe "#wsdl" do
|
29
|
-
context "for env production" do
|
30
|
-
it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/consultarNfse?wsdl' }
|
31
|
-
end
|
32
|
-
context "for env test" do
|
33
|
-
before do
|
34
|
-
subject.env = :test
|
35
|
-
end
|
36
|
-
it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarNfse?wsdl' }
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe "#method_wsdl" do
|
41
|
-
it { subject.method_wsdl.must_equal :consultar_nfse }
|
42
|
-
end
|
43
|
-
|
44
|
-
describe "#xml_builder" do
|
45
|
-
before do
|
46
|
-
subject.assign_attributes(data_inicial: Date.parse('01/09/2015'), data_final: Date.parse('10/09/2015'))
|
47
|
-
end
|
48
|
-
it "estrutura com numero da nfse" do
|
49
|
-
xml = subject.xml_builder.to_s
|
50
|
-
xml = Nokogiri::XML xml
|
51
|
-
|
52
|
-
xml.xpath('Temp/Prestador/Cnpj').first.text.must_equal emitente.cnpj
|
53
|
-
xml.xpath('Temp/Prestador/InscricaoMunicipal').first.text.must_equal emitente.inscricao_municipal
|
54
|
-
|
55
|
-
xml.xpath('Temp/NumeroNfse').first.text.must_equal subject.numero_nfse
|
56
|
-
xml.xpath('Temp/PeriodoEmissao/DataInicial').first.text.must_equal '2015-09-01'
|
57
|
-
xml.xpath('Temp/PeriodoEmissao/DataFinal').first.text.must_equal '2015-09-10'
|
58
|
-
end
|
59
|
-
|
60
|
-
it "estrutura sem numero da nfse" do
|
61
|
-
subject.numero_nfse = ''
|
62
|
-
|
63
|
-
xml = subject.xml_builder.to_s
|
64
|
-
xml = Nokogiri::XML xml
|
65
|
-
|
66
|
-
xml.xpath('Temp/Prestador/Cnpj').first.text.must_equal emitente.cnpj
|
67
|
-
xml.xpath('Temp/Prestador/InscricaoMunicipal').first.text.must_equal emitente.inscricao_municipal
|
68
|
-
|
69
|
-
xml.xpath('Temp/NumeroNfse').first.must_be_nil
|
70
|
-
xml.xpath('Temp/PeriodoEmissao/DataInicial').first.text.must_equal '2015-09-01'
|
71
|
-
xml.xpath('Temp/PeriodoEmissao/DataFinal').first.text.must_equal '2015-09-10'
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
describe BrNfe::Servico::Betha::V1::ConsultaSituacaoLoteRps do
|
4
|
-
subject { FactoryGirl.build(:servico_betha_consulta_situacao_lote_rps, emitente: emitente) }
|
5
|
-
let(:emitente) { FactoryGirl.build(:emitente) }
|
6
|
-
|
7
|
-
describe "superclass" do
|
8
|
-
it { subject.class.superclass.must_equal BrNfe::Servico::Betha::V1::ConsultaLoteRps }
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "#wsdl" do
|
12
|
-
context "for env production" do
|
13
|
-
it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/consultarSituacaoLoteRps?wsdl' }
|
14
|
-
end
|
15
|
-
context "for env test" do
|
16
|
-
before do
|
17
|
-
subject.env = :test
|
18
|
-
end
|
19
|
-
it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarSituacaoLoteRps?wsdl' }
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe "#method_wsdl" do
|
24
|
-
it { subject.method_wsdl.must_equal :consultar_situacao_lote_rps }
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
@@ -1,151 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
describe BrNfe::Servico::Betha::V1::Gateway do
|
4
|
-
subject { FactoryGirl.build(:br_nfe_servico_betha_v1_gateway, emitente: emitente) }
|
5
|
-
let(:rps) { FactoryGirl.build(:br_nfe_rps, :completo) }
|
6
|
-
let(:emitente) { FactoryGirl.build(:emitente) }
|
7
|
-
let(:intermediario) { FactoryGirl.build(:intermediario) }
|
8
|
-
|
9
|
-
describe "inheritance class" do
|
10
|
-
it { subject.class.superclass.must_equal BrNfe::Servico::Betha::Base }
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "#namespaces" do
|
14
|
-
it "deve ter um valor" do
|
15
|
-
subject.namespaces.must_equal({"xmlns:ns1" => "http://www.betha.com.br/e-nota-contribuinte-ws"})
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
describe "#namespace_identifier" do
|
20
|
-
it "deve ter o valor ns1" do
|
21
|
-
subject.namespace_identifier.must_equal :ns1
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe "#version" do
|
26
|
-
it { subject.version.must_equal :v1 }
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "#content_xml" do
|
30
|
-
it "canonicaliza o xml_builder e remove as tags <Temp>" do
|
31
|
-
subject.expects(:xml_builder).returns('<?xml version="1.0" encoding="UTF-8"?>'+"\n<Temp>\n\t <AlgumaTag>ValorXXX</AlgumaTag>\n</Temp>")
|
32
|
-
subject.content_xml.must_equal "<AlgumaTag>ValorXXX</AlgumaTag>"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "#xml_dados_servico" do
|
37
|
-
it "deve vir com a estrutura adecuada com todos os valores preenchidos" do
|
38
|
-
xml = subject.send(:xml_dados_servico, rps).doc
|
39
|
-
|
40
|
-
xml.xpath('Servico/ItemListaServico').first.text.must_equal rps.item_lista_servico
|
41
|
-
xml.xpath('Servico/CodigoCnae').first.text.must_equal rps.codigo_cnae
|
42
|
-
xml.xpath('Servico/CodigoTributacaoMunicipio').first.text.must_equal rps.codigo_tributacao_municipio
|
43
|
-
xml.xpath('Servico/Discriminacao').first.text.must_equal rps.discriminacao
|
44
|
-
xml.xpath('Servico/CodigoMunicipio').first.text.must_equal rps.codigo_municipio
|
45
|
-
|
46
|
-
xml.xpath('Servico/Valores/ValorServicos').first.text.must_equal rps.valor_servicos.to_f.round(2).to_s
|
47
|
-
xml.xpath('Servico/Valores/IssRetido').first.text.must_equal '2'
|
48
|
-
xml.xpath('Servico/Valores/BaseCalculo').first.text.must_equal rps.base_calculo.to_f.round(2).to_s
|
49
|
-
xml.xpath('Servico/Valores/ValorDeducoes').first.text.must_equal rps.valor_deducoes.to_f.round(2).to_s
|
50
|
-
xml.xpath('Servico/Valores/ValorPis').first.text.must_equal rps.valor_pis.to_f.round(2).to_s
|
51
|
-
xml.xpath('Servico/Valores/ValorCofins').first.text.must_equal rps.valor_cofins.to_f.round(2).to_s
|
52
|
-
xml.xpath('Servico/Valores/ValorInss').first.text.must_equal rps.valor_inss.to_f.round(2).to_s
|
53
|
-
xml.xpath('Servico/Valores/ValorIr').first.text.must_equal rps.valor_ir.to_f.round(2).to_s
|
54
|
-
xml.xpath('Servico/Valores/ValorCsll').first.text.must_equal rps.valor_csll.to_f.round(2).to_s
|
55
|
-
xml.xpath('Servico/Valores/ValorIss').first.text.must_equal rps.valor_iss.to_f.round(2).to_s
|
56
|
-
xml.xpath('Servico/Valores/OutrasRetencoes').first.text.must_equal rps.outras_retencoes.to_f.round(2).to_s
|
57
|
-
xml.xpath('Servico/Valores/Aliquota').first.text.must_equal rps.aliquota.to_f.round(2).to_s
|
58
|
-
end
|
59
|
-
|
60
|
-
it "sem os valores não obrigatórios" do
|
61
|
-
rps.assign_attributes({valor_deducoes: '', valor_pis: '', valor_cofins: '',
|
62
|
-
valor_inss: '', valor_ir: '', valor_csll: '', valor_iss: '', outras_retencoes: '',
|
63
|
-
aliquota: '', codigo_cnae: '', codigo_tributacao_municipio: ''
|
64
|
-
})
|
65
|
-
|
66
|
-
xml = subject.send(:xml_dados_servico, rps).doc
|
67
|
-
|
68
|
-
|
69
|
-
xml.xpath('Servico/CodigoCnae').first.must_be_nil
|
70
|
-
xml.xpath('Servico/CodigoTributacaoMunicipio').first.must_be_nil
|
71
|
-
xml.xpath('Servico/Valores/ValorDeducoes').first.must_be_nil
|
72
|
-
xml.xpath('Servico/Valores/ValorPis').first.must_be_nil
|
73
|
-
xml.xpath('Servico/Valores/ValorCofins').first.must_be_nil
|
74
|
-
xml.xpath('Servico/Valores/ValorInss').first.must_be_nil
|
75
|
-
xml.xpath('Servico/Valores/ValorIr').first.must_be_nil
|
76
|
-
xml.xpath('Servico/Valores/ValorCsll').first.must_be_nil
|
77
|
-
xml.xpath('Servico/Valores/ValorIss').first.must_be_nil
|
78
|
-
xml.xpath('Servico/Valores/OutrasRetencoes').first.must_be_nil
|
79
|
-
xml.xpath('Servico/Valores/Aliquota').first.must_be_nil
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
context "#xml_prestador" do
|
84
|
-
it "estrutura com todos os atributos" do
|
85
|
-
xml = subject.send(:xml_prestador).doc
|
86
|
-
|
87
|
-
xml.xpath('Prestador/Cnpj').first.text.must_equal emitente.cnpj
|
88
|
-
xml.xpath('Prestador/InscricaoMunicipal').first.text.must_equal emitente.inscricao_municipal
|
89
|
-
end
|
90
|
-
it "estrutura sem os atributos não obrigatorios" do
|
91
|
-
emitente.inscricao_municipal = ''
|
92
|
-
xml = subject.send(:xml_prestador).doc
|
93
|
-
|
94
|
-
xml.xpath('Prestador/InscricaoMunicipal').first.must_be_nil
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
context "#xml_intermediario_servico" do
|
99
|
-
it "estrutura com todos os atributos" do
|
100
|
-
xml = subject.send(:xml_intermediario_servico, intermediario).doc
|
101
|
-
xml.xpath('IntermediarioServico/RazaoSocial').first.text.must_equal intermediario.razao_social
|
102
|
-
xml.xpath('IntermediarioServico/CpfCnpj/Cnpj').first.text.must_equal BrNfe::Helper::CpfCnpj.new(intermediario.cpf_cnpj).sem_formatacao
|
103
|
-
xml.xpath('IntermediarioServico/InscricaoMunicipal').first.text.must_equal intermediario.inscricao_municipal
|
104
|
-
end
|
105
|
-
it "estrutura sem os atributos não obrigatorios" do
|
106
|
-
intermediario.assign_attributes({cpf_cnpj: '132.456.789-01', inscricao_municipal: ''})
|
107
|
-
xml = subject.send(:xml_intermediario_servico, intermediario).doc
|
108
|
-
|
109
|
-
xml.xpath('IntermediarioServico/CpfCnpj/Cpf').first.text.must_equal BrNfe::Helper::CpfCnpj.new(intermediario.cpf_cnpj).sem_formatacao
|
110
|
-
xml.xpath('IntermediarioServico/InscricaoMunicipal').first.must_be_nil
|
111
|
-
end
|
112
|
-
it "se não tiver intermediario não monta o xml" do
|
113
|
-
xml = subject.send(:xml_intermediario_servico, nil).doc
|
114
|
-
xml.root.to_s.must_equal ''
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
describe "#xml_condicao_pagamento" do
|
119
|
-
it "estrutura a prazo" do
|
120
|
-
xml = subject.send(:xml_condicao_pagamento, rps).doc
|
121
|
-
|
122
|
-
xml.xpath('CondicaoPagamento/Condicao').first.text.must_equal rps.condicao_pagamento.condicao
|
123
|
-
xml.xpath('CondicaoPagamento/QtdParcela').first.text.must_equal '2'
|
124
|
-
|
125
|
-
xml.xpath('CondicaoPagamento/Parcelas/Parcela').first.text.must_equal '1'
|
126
|
-
xml.xpath('CondicaoPagamento/Parcelas/DataVencimento').first.text.must_equal '15/10/2015'
|
127
|
-
xml.xpath('CondicaoPagamento/Parcelas/Valor').first.text.must_equal '10.0'
|
128
|
-
|
129
|
-
xml.xpath('CondicaoPagamento/Parcelas/Parcela').last.text.must_equal '2'
|
130
|
-
xml.xpath('CondicaoPagamento/Parcelas/DataVencimento').last.text.must_equal '15/11/2015'
|
131
|
-
xml.xpath('CondicaoPagamento/Parcelas/Valor').last.text.must_equal '20.0'
|
132
|
-
end
|
133
|
-
|
134
|
-
it "estrutura a vista" do
|
135
|
-
rps.condicao_pagamento.assign_attributes(condicao: 'A_VISTA', parcelas: [])
|
136
|
-
xml = subject.send(:xml_condicao_pagamento, rps).doc
|
137
|
-
|
138
|
-
xml.xpath('CondicaoPagamento/Condicao').first.text.must_equal 'A_VISTA'
|
139
|
-
xml.xpath('CondicaoPagamento/QtdParcela').first.must_be_nil
|
140
|
-
|
141
|
-
xml.xpath('CondicaoPagamento/Parcelas').first.must_be_nil
|
142
|
-
end
|
143
|
-
|
144
|
-
it "quando não tem condicao_pagamento" do
|
145
|
-
rps.condicao_pagamento = nil
|
146
|
-
xml = subject.send(:xml_condicao_pagamento, rps).doc
|
147
|
-
xml.root.to_s.must_equal ''
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
end
|
@@ -1,249 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
describe BrNfe::Servico::Betha::V1::RecepcaoLoteRps do
|
4
|
-
subject { FactoryGirl.build(:br_nfe_servico_betha_recepcao_lote_rps, emitente: emitente) }
|
5
|
-
let(:emitente) { FactoryGirl.build(:emitente) }
|
6
|
-
let(:rps_1) { FactoryGirl.build(:br_nfe_rps, valor_pis: '', valor_cofins: nil, valor_inss: nil, valor_ir: nil, valor_csll: nil) }
|
7
|
-
let(:rps_2) { FactoryGirl.build(:br_nfe_rps, :completo) }
|
8
|
-
|
9
|
-
describe "superclass" do
|
10
|
-
it { subject.class.superclass.must_equal BrNfe::Servico::Betha::V1::Gateway }
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "validations" do
|
14
|
-
it { must validate_presence_of(:numero_lote_rps) }
|
15
|
-
context "validações do certificado" do
|
16
|
-
before { subject.certificate_pkcs12 = nil }
|
17
|
-
it { must validate_presence_of(:certificate) }
|
18
|
-
it { must validate_presence_of(:certificate_key) }
|
19
|
-
end
|
20
|
-
|
21
|
-
it "deve chamar o metodo validar_lote_rps" do
|
22
|
-
subject.expects(:validar_lote_rps)
|
23
|
-
subject.valid?
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
describe "#wsdl" do
|
28
|
-
context "for env production" do
|
29
|
-
it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-ws/recepcionarLoteRps?wsdl' }
|
30
|
-
end
|
31
|
-
context "for env test" do
|
32
|
-
before do
|
33
|
-
subject.env = :test
|
34
|
-
end
|
35
|
-
it { subject.wsdl.must_equal 'http://e-gov.betha.com.br/e-nota-contribuinte-test-ws/recepcionarLoteRps?wsdl' }
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "#method_wsdl" do
|
40
|
-
it { subject.method_wsdl.must_equal :enviar_lote_rps }
|
41
|
-
end
|
42
|
-
|
43
|
-
describe "#xml_inf_rps" do
|
44
|
-
it "estrutura com informações do rps parcialmente preenchidas" do
|
45
|
-
xml = subject.xml_inf_rps(rps_1).doc
|
46
|
-
|
47
|
-
xml.xpath('InfRps').first.attr("Id").must_equal "rps#{rps_1.numero}"
|
48
|
-
xml.xpath('InfRps/IdentificacaoRps/Numero').first.text.must_equal rps_1.numero.to_s
|
49
|
-
xml.xpath('InfRps/IdentificacaoRps/Serie').first.text.must_equal rps_1.serie
|
50
|
-
xml.xpath('InfRps/IdentificacaoRps/Tipo').first.text.must_equal rps_1.tipo
|
51
|
-
|
52
|
-
xml.xpath('InfRps/RpsSubstituido/Numero').first.must_be_nil
|
53
|
-
xml.xpath('InfRps/RpsSubstituido/Serie').first.must_be_nil
|
54
|
-
xml.xpath('InfRps/RpsSubstituido/Tipo').first.must_be_nil
|
55
|
-
|
56
|
-
xml.xpath('InfRps/DataEmissao').first.text.must_equal rps_1.data_emissao.to_s(:br_nfe)
|
57
|
-
xml.xpath('InfRps/NaturezaOperacao').first.text.must_equal emitente.natureza_operacao
|
58
|
-
xml.xpath('InfRps/RegimeEspecialTributacao').first.text.must_equal emitente.regime_especial_tributacao
|
59
|
-
xml.xpath('InfRps/OptanteSimplesNacional').first.text.must_equal emitente.optante_simples_nacional
|
60
|
-
xml.xpath('InfRps/IncentivadorCultural').first.text.must_equal emitente.incentivo_fiscal
|
61
|
-
xml.xpath('InfRps/Status').first.text.must_equal rps_1.status
|
62
|
-
|
63
|
-
# Serviço
|
64
|
-
xml.xpath('InfRps/Servico/ItemListaServico').first.text.must_equal rps_1.item_lista_servico
|
65
|
-
xml.xpath('InfRps/Servico/CodigoCnae').first.text.must_equal rps_1.codigo_cnae
|
66
|
-
xml.xpath('InfRps/Servico/CodigoTributacaoMunicipio').first.must_be_nil
|
67
|
-
xml.xpath('InfRps/Servico/Discriminacao').first.text.must_equal rps_1.discriminacao
|
68
|
-
xml.xpath('InfRps/Servico/CodigoMunicipio').first.text.must_equal rps_1.codigo_municipio
|
69
|
-
# Valores dos serviços
|
70
|
-
xml.xpath('InfRps/Servico/Valores/ValorServicos').first.text.must_equal rps_1.valor_servicos.to_f.round(2).to_s
|
71
|
-
xml.xpath('InfRps/Servico/Valores/IssRetido').first.text.must_equal '2'
|
72
|
-
xml.xpath('InfRps/Servico/Valores/BaseCalculo').first.text.must_equal rps_1.base_calculo.to_f.round(2).to_s
|
73
|
-
xml.xpath('InfRps/Servico/Valores/ValorDeducoes').first.text.must_equal rps_1.valor_deducoes.to_f.round(2).to_s
|
74
|
-
xml.xpath('InfRps/Servico/Valores/ValorPis').first.must_be_nil
|
75
|
-
xml.xpath('InfRps/Servico/Valores/ValorCofins').first.must_be_nil
|
76
|
-
xml.xpath('InfRps/Servico/Valores/ValorInss').first.must_be_nil
|
77
|
-
xml.xpath('InfRps/Servico/Valores/ValorIr').first.must_be_nil
|
78
|
-
xml.xpath('InfRps/Servico/Valores/ValorCsll').first.must_be_nil
|
79
|
-
xml.xpath('InfRps/Servico/Valores/ValorIss').first.text.must_equal rps_1.valor_iss
|
80
|
-
xml.xpath('InfRps/Servico/Valores/OutrasRetencoes').first.text.must_equal rps_1.outras_retencoes
|
81
|
-
xml.xpath('InfRps/Servico/Valores/Aliquota').first.text.must_equal rps_1.aliquota
|
82
|
-
|
83
|
-
# Prestador
|
84
|
-
xml.xpath('InfRps/Prestador/Cnpj').first.text.must_equal emitente.cnpj
|
85
|
-
xml.xpath('InfRps/Prestador/InscricaoMunicipal').first.text.must_equal emitente.inscricao_municipal
|
86
|
-
|
87
|
-
# Tomador
|
88
|
-
xml.xpath('InfRps/Tomador/RazaoSocial').first.text.must_equal rps_1.destinatario.razao_social
|
89
|
-
xml.xpath('InfRps/Tomador/IdentificacaoTomador/CpfCnpj/Cpf').first.text.must_equal BrNfe::Helper::CpfCnpj.new(rps_1.destinatario.cpf_cnpj).sem_formatacao
|
90
|
-
xml.xpath('InfRps/Tomador/IdentificacaoTomador/InscricaoMunicipal').first.text.must_equal rps_1.destinatario.inscricao_municipal
|
91
|
-
xml.xpath('InfRps/Tomador/IdentificacaoTomador/InscricaoEstadual').first.text.must_equal rps_1.destinatario.inscricao_estadual
|
92
|
-
xml.xpath('InfRps/Tomador/Endereco/Endereco').first.text.must_equal rps_1.destinatario.endereco.logradouro
|
93
|
-
xml.xpath('InfRps/Tomador/Endereco/Numero').first.text.must_equal rps_1.destinatario.endereco.numero
|
94
|
-
xml.xpath('InfRps/Tomador/Endereco/Complemento').first.text.must_equal rps_1.destinatario.endereco.complemento
|
95
|
-
xml.xpath('InfRps/Tomador/Endereco/Bairro').first.text.must_equal rps_1.destinatario.endereco.bairro
|
96
|
-
xml.xpath('InfRps/Tomador/Endereco/CodigoMunicipio').first.text.must_equal rps_1.destinatario.endereco.codigo_municipio
|
97
|
-
xml.xpath('InfRps/Tomador/Endereco/Uf').first.text.must_equal rps_1.destinatario.endereco.uf
|
98
|
-
xml.xpath('InfRps/Tomador/Endereco/Cep').first.text.must_equal rps_1.destinatario.endereco.cep.gsub(/[^0-9]/,'')
|
99
|
-
xml.xpath('InfRps/Tomador/Contato/Telefone').first.text.must_equal rps_1.destinatario.telefone
|
100
|
-
xml.xpath('InfRps/Tomador/Contato/Email').first.text.must_equal rps_1.destinatario.email
|
101
|
-
|
102
|
-
xml.xpath('InfRps/IntermediarioServico').first.must_be_nil
|
103
|
-
xml.xpath('InfRps/ConstrucaoCivil').first.must_be_nil
|
104
|
-
xml.xpath('InfRps/OutrasInformacoes').first.must_be_nil
|
105
|
-
xml.xpath('InfRps/CondicaoPagamento').first.must_be_nil
|
106
|
-
end
|
107
|
-
it "estrutura com toas informações do rps preenchidas" do
|
108
|
-
rps_2.destinatario.cpf_cnpj = '12345678901234'
|
109
|
-
xml = subject.xml_inf_rps(rps_2).doc
|
110
|
-
|
111
|
-
xml.xpath('InfRps').first.attr("Id").must_equal "rps#{rps_2.numero}"
|
112
|
-
xml.xpath('InfRps/IdentificacaoRps/Numero').first.text.must_equal rps_2.numero.to_s
|
113
|
-
xml.xpath('InfRps/IdentificacaoRps/Serie').first.text.must_equal rps_2.serie
|
114
|
-
xml.xpath('InfRps/IdentificacaoRps/Tipo').first.text.must_equal rps_2.tipo
|
115
|
-
|
116
|
-
xml.xpath('InfRps/RpsSubstituido/Numero').first.text.must_equal rps_2.numero_substituicao
|
117
|
-
xml.xpath('InfRps/RpsSubstituido/Serie').first.text.must_equal rps_2.serie_substituicao
|
118
|
-
xml.xpath('InfRps/RpsSubstituido/Tipo').first.text.must_equal rps_2.tipo_substituicao
|
119
|
-
|
120
|
-
xml.xpath('InfRps/DataEmissao').first.text.must_equal rps_2.data_emissao.to_s(:br_nfe)
|
121
|
-
xml.xpath('InfRps/NaturezaOperacao').first.text.must_equal emitente.natureza_operacao
|
122
|
-
xml.xpath('InfRps/RegimeEspecialTributacao').first.text.must_equal emitente.regime_especial_tributacao
|
123
|
-
xml.xpath('InfRps/OptanteSimplesNacional').first.text.must_equal emitente.optante_simples_nacional
|
124
|
-
xml.xpath('InfRps/IncentivadorCultural').first.text.must_equal emitente.incentivo_fiscal
|
125
|
-
xml.xpath('InfRps/Status').first.text.must_equal rps_2.status
|
126
|
-
|
127
|
-
# Serviço
|
128
|
-
xml.xpath('InfRps/Servico/ItemListaServico').first.text.must_equal rps_2.item_lista_servico
|
129
|
-
xml.xpath('InfRps/Servico/CodigoCnae').first.text.must_equal rps_2.codigo_cnae
|
130
|
-
xml.xpath('InfRps/Servico/CodigoTributacaoMunicipio').first.text.must_equal rps_2.codigo_tributacao_municipio
|
131
|
-
xml.xpath('InfRps/Servico/Discriminacao').first.text.must_equal rps_2.discriminacao
|
132
|
-
xml.xpath('InfRps/Servico/CodigoMunicipio').first.text.must_equal rps_2.codigo_municipio
|
133
|
-
# Valores dos serviços
|
134
|
-
xml.xpath('InfRps/Servico/Valores/ValorServicos').first.text.must_equal rps_2.valor_servicos.to_f.round(4).to_s
|
135
|
-
xml.xpath('InfRps/Servico/Valores/IssRetido').first.text.must_equal '2'
|
136
|
-
xml.xpath('InfRps/Servico/Valores/BaseCalculo').first.text.must_equal rps_2.base_calculo.to_f.round(4).to_s
|
137
|
-
xml.xpath('InfRps/Servico/Valores/ValorDeducoes').first.text.must_equal rps_2.valor_deducoes.to_f.round(4).to_s
|
138
|
-
xml.xpath('InfRps/Servico/Valores/ValorPis').first.text.must_equal rps_2.valor_pis.to_f.round(4).to_s
|
139
|
-
xml.xpath('InfRps/Servico/Valores/ValorCofins').first.text.must_equal rps_2.valor_cofins.to_f.round(4).to_s
|
140
|
-
xml.xpath('InfRps/Servico/Valores/ValorInss').first.text.must_equal rps_2.valor_inss.to_f.round(4).to_s
|
141
|
-
xml.xpath('InfRps/Servico/Valores/ValorIr').first.text.must_equal rps_2.valor_ir.to_f.round(4).to_s
|
142
|
-
xml.xpath('InfRps/Servico/Valores/ValorCsll').first.text.must_equal rps_2.valor_csll.to_f.round(4).to_s
|
143
|
-
xml.xpath('InfRps/Servico/Valores/ValorIss').first.text.must_equal rps_2.valor_iss.to_f.round(4).to_s
|
144
|
-
xml.xpath('InfRps/Servico/Valores/OutrasRetencoes').first.text.must_equal rps_2.outras_retencoes.to_f.round(4).to_s
|
145
|
-
xml.xpath('InfRps/Servico/Valores/Aliquota').first.text.must_equal rps_2.aliquota.to_f.round(4).to_s
|
146
|
-
|
147
|
-
# Prestador
|
148
|
-
xml.xpath('InfRps/Prestador/Cnpj').first.text.must_equal emitente.cnpj
|
149
|
-
xml.xpath('InfRps/Prestador/InscricaoMunicipal').first.text.must_equal emitente.inscricao_municipal
|
150
|
-
|
151
|
-
# Tomador
|
152
|
-
xml.xpath('InfRps/Tomador/RazaoSocial').first.text.must_equal rps_2.destinatario.razao_social
|
153
|
-
xml.xpath('InfRps/Tomador/IdentificacaoTomador/CpfCnpj/Cnpj').first.text.must_equal BrNfe::Helper::CpfCnpj.new(rps_2.destinatario.cpf_cnpj).sem_formatacao
|
154
|
-
xml.xpath('InfRps/Tomador/IdentificacaoTomador/InscricaoMunicipal').first.text.must_equal rps_2.destinatario.inscricao_municipal
|
155
|
-
xml.xpath('InfRps/Tomador/IdentificacaoTomador/InscricaoEstadual').first.text.must_equal rps_2.destinatario.inscricao_estadual
|
156
|
-
xml.xpath('InfRps/Tomador/Endereco/Endereco').first.text.must_equal rps_2.destinatario.endereco.logradouro
|
157
|
-
xml.xpath('InfRps/Tomador/Endereco/Numero').first.text.must_equal rps_2.destinatario.endereco.numero
|
158
|
-
xml.xpath('InfRps/Tomador/Endereco/Complemento').first.text.must_equal rps_2.destinatario.endereco.complemento
|
159
|
-
xml.xpath('InfRps/Tomador/Endereco/Bairro').first.text.must_equal rps_2.destinatario.endereco.bairro
|
160
|
-
xml.xpath('InfRps/Tomador/Endereco/CodigoMunicipio').first.text.must_equal rps_2.destinatario.endereco.codigo_municipio
|
161
|
-
xml.xpath('InfRps/Tomador/Endereco/Uf').first.text.must_equal rps_2.destinatario.endereco.uf
|
162
|
-
xml.xpath('InfRps/Tomador/Endereco/Cep').first.text.must_equal rps_2.destinatario.endereco.cep.gsub(/[^0-9]/,'')
|
163
|
-
xml.xpath('InfRps/Tomador/Contato/Telefone').first.text.must_equal rps_2.destinatario.telefone
|
164
|
-
xml.xpath('InfRps/Tomador/Contato/Email').first.text.must_equal rps_2.destinatario.email
|
165
|
-
|
166
|
-
xml.xpath('InfRps/IntermediarioServico/RazaoSocial').first.text.must_equal rps_2.intermediario.razao_social
|
167
|
-
xml.xpath('InfRps/IntermediarioServico/CpfCnpj/Cnpj').first.text.must_equal BrNfe::Helper::CpfCnpj.new(rps_2.intermediario.cpf_cnpj).sem_formatacao
|
168
|
-
xml.xpath('InfRps/IntermediarioServico/InscricaoMunicipal').first.text.must_equal rps_2.intermediario.inscricao_municipal
|
169
|
-
|
170
|
-
xml.xpath('InfRps/ConstrucaoCivil/CodigoObra').first.text.must_equal rps_2.codigo_obra
|
171
|
-
xml.xpath('InfRps/ConstrucaoCivil/Art').first.text.must_equal rps_2.codigo_art
|
172
|
-
|
173
|
-
xml.xpath('InfRps/OutrasInformacoes').first.text.must_equal rps_2.outras_informacoes
|
174
|
-
|
175
|
-
xml.xpath('InfRps/CondicaoPagamento/Condicao').first.text.must_equal rps_2.condicao_pagamento.condicao
|
176
|
-
xml.xpath('InfRps/CondicaoPagamento/QtdParcela').first.text.must_equal '2'
|
177
|
-
xml.xpath('InfRps/CondicaoPagamento/Parcelas').count.must_equal 2
|
178
|
-
|
179
|
-
xml.xpath('InfRps/CondicaoPagamento/Parcelas/Parcela').first.text.must_equal '1'
|
180
|
-
xml.xpath('InfRps/CondicaoPagamento/Parcelas/DataVencimento').first.text.must_equal '15/10/2015'
|
181
|
-
xml.xpath('InfRps/CondicaoPagamento/Parcelas/Valor').first.text.must_equal '10.0'
|
182
|
-
|
183
|
-
xml.xpath('InfRps/CondicaoPagamento/Parcelas/Parcela').last.text.must_equal '2'
|
184
|
-
xml.xpath('InfRps/CondicaoPagamento/Parcelas/DataVencimento').last.text.must_equal '15/11/2015'
|
185
|
-
xml.xpath('InfRps/CondicaoPagamento/Parcelas/Valor').last.text.must_equal '20.0'
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
describe "#lote_rps_xml" do
|
190
|
-
let(:info_rps_1) do
|
191
|
-
Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
|
192
|
-
xml.InfRps "RPS1"
|
193
|
-
end
|
194
|
-
end
|
195
|
-
let(:info_rps_2) do
|
196
|
-
Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
|
197
|
-
xml.InfRps "RPS2"
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
before do
|
202
|
-
rps_1.numero = '1'
|
203
|
-
rps_2.numero = '2'
|
204
|
-
subject.lote_rps = [rps_1, rps_2]
|
205
|
-
end
|
206
|
-
|
207
|
-
it "estrutura deve conter as informações assinadas de todos os RPSs do lote" do
|
208
|
-
subject.expects(:xml_inf_rps).with(rps_1).returns(info_rps_1)
|
209
|
-
subject.expects(:xml_inf_rps).with(rps_2).returns(info_rps_2)
|
210
|
-
|
211
|
-
subject.expects(:assinatura_xml).with(info_rps_1.doc.root.to_s, '#rps1').returns('<Signature>RPS_1</Signature>')
|
212
|
-
subject.expects(:assinatura_xml).with(info_rps_2.doc.root.to_s, '#rps2').returns('<Signature>RPS_2</Signature>')
|
213
|
-
|
214
|
-
xml = subject.lote_rps_xml.doc
|
215
|
-
|
216
|
-
xml.xpath('LoteRps/NumeroLote').first.text.must_equal subject.numero_lote_rps
|
217
|
-
xml.xpath('LoteRps/Cnpj').first.text.must_equal emitente.cnpj
|
218
|
-
xml.xpath('LoteRps/InscricaoMunicipal').first.text.must_equal emitente.inscricao_municipal
|
219
|
-
xml.xpath('LoteRps/QuantidadeRps').first.text.must_equal '2'
|
220
|
-
|
221
|
-
xml.xpath('LoteRps/ListaRps/Rps/InfRps').first.text.must_equal 'RPS1'
|
222
|
-
xml.xpath('LoteRps/ListaRps/Rps/Signature').first.text.must_equal 'RPS_1'
|
223
|
-
|
224
|
-
xml.xpath('LoteRps/ListaRps/Rps/InfRps').last.text.must_equal 'RPS2'
|
225
|
-
xml.xpath('LoteRps/ListaRps/Rps/Signature').last.text.must_equal 'RPS_2'
|
226
|
-
|
227
|
-
end
|
228
|
-
end
|
229
|
-
|
230
|
-
describe "#xml_builder" do
|
231
|
-
let(:xml_lote_rps) do
|
232
|
-
Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
|
233
|
-
xml.LoteRps "Valor lote rps"
|
234
|
-
end
|
235
|
-
end
|
236
|
-
|
237
|
-
it "estrutura" do
|
238
|
-
subject.numero_lote_rps = '8899'
|
239
|
-
subject.expects(:lote_rps_xml).returns(xml_lote_rps)
|
240
|
-
subject.expects(:assinatura_xml).with(xml_lote_rps.doc.root.to_s, '#lote8899').returns('<Signature>SIGN</Signature>')
|
241
|
-
|
242
|
-
xml = Nokogiri::XML(subject.xml_builder)
|
243
|
-
|
244
|
-
xml.xpath("Temp/LoteRps").first.text.must_equal "Valor lote rps"
|
245
|
-
xml.xpath("Temp/Signature").first.text.must_equal "SIGN"
|
246
|
-
end
|
247
|
-
end
|
248
|
-
|
249
|
-
end
|