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,15 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class RuleCancelamentoNfsTest < BrNfe::Service::Base
|
|
4
|
+
include BrNfe::Service::Concerns::Rules::CancelamentoNfs
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe BrNfe::Service::Concerns::Rules::CancelamentoNfs do
|
|
8
|
+
subject { RuleCancelamentoNfsTest.new(nfe_number: 1254, codigo_cancelamento: 1, emitente: emitente) }
|
|
9
|
+
let(:emitente) { FactoryGirl.build(:emitente, endereco: endereco) }
|
|
10
|
+
let(:endereco) { FactoryGirl.build(:endereco) }
|
|
11
|
+
|
|
12
|
+
it { must validate_presence_of(:nfe_number) }
|
|
13
|
+
it { must validate_presence_of(:codigo_cancelamento) }
|
|
14
|
+
|
|
15
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'br_nfe/helper/have_rps_test'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
describe BrNfe::Service::Concerns::Rules::ConsultaNfsPorRps do
|
|
6
|
+
class RuleConsultaNfsPorRpsTest < BrNfe::Service::Base
|
|
7
|
+
include BrNfe::Service::Concerns::Rules::ConsultaNfsPorRps
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
subject { RuleConsultaNfsPorRpsTest.new(rps: rps, emitente: emitente) }
|
|
11
|
+
let(:emitente) { FactoryGirl.build(:emitente, endereco: endereco) }
|
|
12
|
+
let(:endereco) { FactoryGirl.build(:endereco) }
|
|
13
|
+
let(:rps) { FactoryGirl.build(:br_nfe_rps) }
|
|
14
|
+
|
|
15
|
+
it "deve ter o o helper HaveRps incluido" do
|
|
16
|
+
subject.class.included_modules.must_include BrNfe::Helper::HaveRps
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "rps" do
|
|
20
|
+
include BrNfeTest::HelperTest::HaveRpsTest
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "#validate_rps" do
|
|
24
|
+
it "se o RPS for inválido deve add os erros do RPS no registro" do
|
|
25
|
+
rps.stubs(:errors).returns(stub(full_messages: ["Erro rps"]))
|
|
26
|
+
rps.stubs(:valid?).returns(false)
|
|
27
|
+
subject.valid?.must_equal false
|
|
28
|
+
subject.errors.full_messages.must_include( "Rps Erro rps" )
|
|
29
|
+
end
|
|
30
|
+
it "se o RPS for válido o registro também será valido" do
|
|
31
|
+
rps.stubs(:valid?).returns(true)
|
|
32
|
+
subject.valid?.must_equal true
|
|
33
|
+
subject.errors.must_be_empty
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class RuleConsultaNfseTest < BrNfe::Service::Base
|
|
4
|
+
include BrNfe::Service::Concerns::Rules::ConsultaNfse
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe BrNfe::Service::Concerns::Rules::ConsultaNfse do
|
|
8
|
+
subject { RuleConsultaNfseTest.new(nfe_number: '554', start_date: 1.month.ago, end_date: Time.now, emitente: emitente) }
|
|
9
|
+
let(:emitente) { FactoryGirl.build(:emitente, endereco: endereco) }
|
|
10
|
+
let(:endereco) { FactoryGirl.build(:endereco) }
|
|
11
|
+
let(:rps) { FactoryGirl.build(:br_nfe_rps) }
|
|
12
|
+
|
|
13
|
+
it "deve ter o o helper HaveDestinatario incluido" do
|
|
14
|
+
subject.class.included_modules.must_include BrNfe::Helper::HaveDestinatario
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "deve ter o o helper HaveIntermediario incluido" do
|
|
18
|
+
subject.class.included_modules.must_include BrNfe::Helper::HaveIntermediario
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "#start_date" do
|
|
22
|
+
it "o get do start_date deve retornar uma data no formato YYYY-MM-DD" do
|
|
23
|
+
subject.start_date = '20/05/2010'
|
|
24
|
+
subject.start_date.must_equal '2010-05-20'
|
|
25
|
+
end
|
|
26
|
+
it "se start_date for nil o get deve retornar em branco" do
|
|
27
|
+
subject.start_date = nil
|
|
28
|
+
subject.start_date.must_equal ''
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
describe "#end_date" do
|
|
33
|
+
it "o get do end_date deve retornar uma data no formato YYYY-MM-DD" do
|
|
34
|
+
subject.end_date = '20/08/2015'
|
|
35
|
+
subject.end_date.must_equal '2015-08-20'
|
|
36
|
+
end
|
|
37
|
+
it "se end_date for nil o get deve retornar em branco" do
|
|
38
|
+
subject.end_date = nil
|
|
39
|
+
subject.end_date.must_equal ''
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
class RuleRecepcaoLoteRpsTest < BrNfe::Service::Base
|
|
4
|
+
include BrNfe::Service::Concerns::Rules::RecepcaoLoteRps
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe BrNfe::Service::Concerns::Rules::RecepcaoLoteRps do
|
|
8
|
+
subject { RuleRecepcaoLoteRpsTest.new(numero_lote_rps: 545, operacao: '1', emitente: emitente) }
|
|
9
|
+
let(:emitente) { FactoryGirl.build(:emitente, endereco: endereco) }
|
|
10
|
+
let(:endereco) { FactoryGirl.build(:endereco) }
|
|
5
11
|
let(:rps) { FactoryGirl.build(:br_nfe_rps) }
|
|
6
|
-
|
|
12
|
+
|
|
13
|
+
it { must validate_presence_of(:numero_lote_rps) }
|
|
14
|
+
|
|
7
15
|
describe "#lote_rps" do
|
|
8
16
|
it "deve inicializar como um vetor vazio" do
|
|
9
17
|
subject.class.new.lote_rps.must_equal []
|
|
@@ -25,7 +33,7 @@ describe BrNfe::Servico::Base do
|
|
|
25
33
|
it "se não houver nenhum rps, deve add um erro" do
|
|
26
34
|
subject.lote_rps = []
|
|
27
35
|
subject.errors.full_messages.must_equal( [] )
|
|
28
|
-
subject.
|
|
36
|
+
subject.valid?.must_equal false
|
|
29
37
|
subject.errors.full_messages.must_equal( ["Deve conter ao menos 1 RPS"] )
|
|
30
38
|
end
|
|
31
39
|
context "deve validar o rps setando a opcao validar_recepcao_rps" do
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrNfe::Service::Item do
|
|
4
|
+
subject { FactoryGirl.build(:service_item) }
|
|
5
|
+
|
|
6
|
+
describe "#default_values" do
|
|
7
|
+
context "#quantity" do
|
|
8
|
+
it "valor padrão deve ser 1" do
|
|
9
|
+
subject.class.new.quantity.must_equal 1
|
|
10
|
+
end
|
|
11
|
+
it "posso modificar o valor" do
|
|
12
|
+
subject.class.new(quantity: 50.88).quantity.must_equal 50.88
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe "#total_value" do
|
|
18
|
+
it "se não for setado nenhum valor deve sempre retornar a multiplicação entre a quantidade e o valor unitário" do
|
|
19
|
+
subject.total_value = nil
|
|
20
|
+
subject.assign_attributes(quantity: 3.5, unit_value: 10.0)
|
|
21
|
+
subject.total_value.must_equal 35.0
|
|
22
|
+
end
|
|
23
|
+
it "se setar um valor em total_value não deve multiplicar a quantidade com o valor unitário" do
|
|
24
|
+
subject.total_value = 66.0
|
|
25
|
+
subject.assign_attributes(quantity: 3.5, unit_value: 10.0)
|
|
26
|
+
subject.total_value.must_equal 66.0
|
|
27
|
+
end
|
|
28
|
+
it "se quantidade ou valor unitário forem nil deve retornar zero" do
|
|
29
|
+
subject.total_value = nil
|
|
30
|
+
subject.assign_attributes(quantity: nil, unit_value: nil)
|
|
31
|
+
subject.total_value.must_equal 0.0
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -1,37 +1,45 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
2
|
|
|
3
|
-
describe BrNfe::
|
|
3
|
+
describe BrNfe::Service::Rps do
|
|
4
4
|
subject { FactoryGirl.build(:br_nfe_rps) }
|
|
5
5
|
let(:destinatario) { FactoryGirl.build(:destinatario) }
|
|
6
6
|
let(:intermediario) { FactoryGirl.build(:intermediario) }
|
|
7
7
|
let(:condicao_pagamento) { FactoryGirl.build(:condicao_pagamento) }
|
|
8
|
+
let(:item_1) { FactoryGirl.build(:service_item) }
|
|
9
|
+
let(:item_2) { FactoryGirl.build(:service_item) }
|
|
8
10
|
|
|
9
11
|
describe "validations" do
|
|
10
12
|
it { must validate_presence_of(:numero) }
|
|
11
13
|
it { must validate_presence_of(:serie) }
|
|
12
14
|
it { must validate_presence_of(:tipo) }
|
|
15
|
+
context "Quando #validate_rps? for false os valores de RPS não devem ser obrigatórios" do
|
|
16
|
+
before { subject.stubs(:validate_rps?).returns(false) }
|
|
17
|
+
it { wont validate_presence_of(:numero) }
|
|
18
|
+
it { wont validate_presence_of(:serie) }
|
|
19
|
+
it { wont validate_presence_of(:tipo) }
|
|
20
|
+
end
|
|
13
21
|
|
|
14
22
|
describe "option validar_recepcao_rps" do
|
|
15
23
|
context "quando for true" do
|
|
16
24
|
before { subject.validar_recepcao_rps = true }
|
|
17
25
|
it { must validate_presence_of(:data_emissao) }
|
|
18
26
|
it { must validate_presence_of(:item_lista_servico) }
|
|
19
|
-
it { must validate_presence_of(:
|
|
27
|
+
it { must validate_presence_of(:description) }
|
|
20
28
|
it { must validate_presence_of(:codigo_municipio) }
|
|
21
|
-
it { must
|
|
22
|
-
it { must
|
|
29
|
+
it { must validate_numericality_of(:total_services).is_greater_than(0) }
|
|
30
|
+
it { must validate_numericality_of(:base_calculation).is_greater_than(0) }
|
|
23
31
|
|
|
24
|
-
it { must validate_numericality_of(:
|
|
25
|
-
it { must validate_numericality_of(:
|
|
32
|
+
it { must validate_numericality_of(:total_services) }
|
|
33
|
+
it { must validate_numericality_of(:deductions) }
|
|
26
34
|
it { must validate_numericality_of(:valor_pis) }
|
|
27
35
|
it { must validate_numericality_of(:valor_cofins) }
|
|
28
36
|
it { must validate_numericality_of(:valor_inss) }
|
|
29
37
|
it { must validate_numericality_of(:valor_ir) }
|
|
30
38
|
it { must validate_numericality_of(:valor_csll) }
|
|
31
39
|
it { must validate_numericality_of(:outras_retencoes) }
|
|
32
|
-
it { must validate_numericality_of(:
|
|
33
|
-
it { must validate_numericality_of(:
|
|
34
|
-
it { must validate_numericality_of(:
|
|
40
|
+
it { must validate_numericality_of(:total_iss) }
|
|
41
|
+
it { must validate_numericality_of(:iss_tax_rate) }
|
|
42
|
+
it { must validate_numericality_of(:base_calculation) }
|
|
35
43
|
it { must validate_numericality_of(:desconto_incondicionado) }
|
|
36
44
|
it { must validate_numericality_of(:desconto_condicionado) }
|
|
37
45
|
|
|
@@ -45,16 +53,16 @@ describe BrNfe::Servico::Rps do
|
|
|
45
53
|
subject.valid?
|
|
46
54
|
end
|
|
47
55
|
|
|
48
|
-
describe "option
|
|
56
|
+
describe "option iss_retained?" do
|
|
49
57
|
context "quando for true" do
|
|
50
|
-
before { subject.stubs(:
|
|
51
|
-
it { wont validate_presence_of(:
|
|
52
|
-
it { wont validate_presence_of(:
|
|
58
|
+
before { subject.stubs(:iss_retained?).returns(true) }
|
|
59
|
+
it { wont validate_presence_of(:total_iss) }
|
|
60
|
+
it { wont validate_presence_of(:iss_tax_rate) }
|
|
53
61
|
end
|
|
54
62
|
context "quando for false" do
|
|
55
|
-
before { subject.stubs(:
|
|
56
|
-
it { must validate_presence_of(:
|
|
57
|
-
it { must validate_presence_of(:
|
|
63
|
+
before { subject.stubs(:iss_retained?).returns(false) }
|
|
64
|
+
it { must validate_presence_of(:total_iss) }
|
|
65
|
+
it { must validate_presence_of(:iss_tax_rate) }
|
|
58
66
|
end
|
|
59
67
|
end
|
|
60
68
|
end
|
|
@@ -63,22 +71,22 @@ describe BrNfe::Servico::Rps do
|
|
|
63
71
|
before { subject.validar_recepcao_rps = false }
|
|
64
72
|
it { wont validate_presence_of(:data_emissao) }
|
|
65
73
|
it { wont validate_presence_of(:item_lista_servico) }
|
|
66
|
-
it { wont validate_presence_of(:
|
|
74
|
+
it { wont validate_presence_of(:description) }
|
|
67
75
|
it { wont validate_presence_of(:codigo_municipio) }
|
|
68
|
-
it { wont
|
|
69
|
-
it { wont
|
|
76
|
+
it { wont validate_numericality_of(:total_services).is_greater_than(0) }
|
|
77
|
+
it { wont validate_numericality_of(:base_calculation).is_greater_than(0) }
|
|
70
78
|
|
|
71
|
-
it { wont validate_numericality_of(:
|
|
72
|
-
it { wont validate_numericality_of(:
|
|
79
|
+
it { wont validate_numericality_of(:total_services) }
|
|
80
|
+
it { wont validate_numericality_of(:deductions) }
|
|
73
81
|
it { wont validate_numericality_of(:valor_pis) }
|
|
74
82
|
it { wont validate_numericality_of(:valor_cofins) }
|
|
75
83
|
it { wont validate_numericality_of(:valor_inss) }
|
|
76
84
|
it { wont validate_numericality_of(:valor_ir) }
|
|
77
85
|
it { wont validate_numericality_of(:valor_csll) }
|
|
78
86
|
it { wont validate_numericality_of(:outras_retencoes) }
|
|
79
|
-
it { wont validate_numericality_of(:
|
|
80
|
-
it { wont validate_numericality_of(:
|
|
81
|
-
it { wont validate_numericality_of(:
|
|
87
|
+
it { wont validate_numericality_of(:total_iss) }
|
|
88
|
+
it { wont validate_numericality_of(:iss_tax_rate) }
|
|
89
|
+
it { wont validate_numericality_of(:base_calculation) }
|
|
82
90
|
it { wont validate_numericality_of(:desconto_incondicionado) }
|
|
83
91
|
it { wont validate_numericality_of(:desconto_condicionado) }
|
|
84
92
|
|
|
@@ -92,16 +100,16 @@ describe BrNfe::Servico::Rps do
|
|
|
92
100
|
subject.valid?
|
|
93
101
|
end
|
|
94
102
|
|
|
95
|
-
describe "option
|
|
103
|
+
describe "option iss_retained?" do
|
|
96
104
|
context "quando for true" do
|
|
97
|
-
before { subject.stubs(:
|
|
98
|
-
it { wont validate_presence_of(:
|
|
99
|
-
it { wont validate_presence_of(:
|
|
105
|
+
before { subject.stubs(:iss_retained?).returns(true) }
|
|
106
|
+
it { wont validate_presence_of(:total_iss) }
|
|
107
|
+
it { wont validate_presence_of(:iss_tax_rate) }
|
|
100
108
|
end
|
|
101
109
|
context "quando for false" do
|
|
102
|
-
before { subject.stubs(:
|
|
103
|
-
it { wont validate_presence_of(:
|
|
104
|
-
it { wont validate_presence_of(:
|
|
110
|
+
before { subject.stubs(:iss_retained?).returns(false) }
|
|
111
|
+
it { wont validate_presence_of(:total_iss) }
|
|
112
|
+
it { wont validate_presence_of(:iss_tax_rate) }
|
|
105
113
|
end
|
|
106
114
|
end
|
|
107
115
|
end
|
|
@@ -109,31 +117,31 @@ describe BrNfe::Servico::Rps do
|
|
|
109
117
|
|
|
110
118
|
end
|
|
111
119
|
|
|
112
|
-
describe "#
|
|
120
|
+
describe "#replace_invoice?" do
|
|
113
121
|
before do
|
|
114
122
|
subject.assign_attributes(numero_substituicao: '1', serie_substituicao: '2', tipo_substituicao: '1')
|
|
115
123
|
end
|
|
116
124
|
it "true se numero_substituicao, serie_substituicao e tipo_substituicao tiver algum valor" do
|
|
117
|
-
subject.
|
|
125
|
+
subject.replace_invoice?.must_equal true
|
|
118
126
|
end
|
|
119
127
|
it "false se numero_substituicao não tiver valor" do
|
|
120
128
|
subject.numero_substituicao = ''
|
|
121
|
-
subject.
|
|
129
|
+
subject.replace_invoice?.must_equal false
|
|
122
130
|
end
|
|
123
131
|
it "false se serie_substituicao não tiver valor" do
|
|
124
132
|
subject.serie_substituicao = ''
|
|
125
|
-
subject.
|
|
133
|
+
subject.replace_invoice?.must_equal false
|
|
126
134
|
end
|
|
127
135
|
it "false se tipo_substituicao não tiver valor" do
|
|
128
136
|
subject.tipo_substituicao = ''
|
|
129
|
-
subject.
|
|
137
|
+
subject.replace_invoice?.must_equal false
|
|
130
138
|
end
|
|
131
139
|
end
|
|
132
140
|
|
|
133
141
|
|
|
134
142
|
describe "#destinatario" do
|
|
135
143
|
it "sempre deve retornar um objeto BrNfe::Destinatario" do
|
|
136
|
-
novo = BrNfe::
|
|
144
|
+
novo = BrNfe::Service::Rps.new
|
|
137
145
|
novo.destinatario.class.must_equal BrNfe::Destinatario
|
|
138
146
|
novo.destinatario = nil
|
|
139
147
|
novo.destinatario.class.must_equal BrNfe::Destinatario
|
|
@@ -144,7 +152,7 @@ describe BrNfe::Servico::Rps do
|
|
|
144
152
|
it "a classe do destinatario deve segir a configuração de BrNfe.destinatario_class" do
|
|
145
153
|
BrNfe.destinatario_class = BrNfe::Emitente
|
|
146
154
|
|
|
147
|
-
novo = BrNfe::
|
|
155
|
+
novo = BrNfe::Service::Rps.new
|
|
148
156
|
novo.destinatario.class.must_equal BrNfe::Emitente
|
|
149
157
|
novo.destinatario = nil
|
|
150
158
|
novo.destinatario.class.must_equal BrNfe::Emitente
|
|
@@ -189,7 +197,7 @@ describe BrNfe::Servico::Rps do
|
|
|
189
197
|
|
|
190
198
|
describe "#intermediario" do
|
|
191
199
|
it "valor padrão é nil" do
|
|
192
|
-
novo = BrNfe::
|
|
200
|
+
novo = BrNfe::Service::Rps.new
|
|
193
201
|
novo.intermediario.must_be_nil
|
|
194
202
|
novo.intermediario = 'outro valor qualquer'
|
|
195
203
|
novo.intermediario.must_be_nil
|
|
@@ -198,7 +206,7 @@ describe BrNfe::Servico::Rps do
|
|
|
198
206
|
it "a classe do intermediario deve segir a configuração de BrNfe.intermediario_class" do
|
|
199
207
|
BrNfe.intermediario_class = BrNfe::Emitente
|
|
200
208
|
|
|
201
|
-
novo = BrNfe::
|
|
209
|
+
novo = BrNfe::Service::Rps.new(intermediario: BrNfe::Emitente.new)
|
|
202
210
|
novo.intermediario.class.must_equal BrNfe::Emitente
|
|
203
211
|
|
|
204
212
|
novo.intermediario = nil
|
|
@@ -207,7 +215,7 @@ describe BrNfe::Servico::Rps do
|
|
|
207
215
|
novo.intermediario = 'outro valor qualquer'
|
|
208
216
|
novo.intermediario.must_be_nil
|
|
209
217
|
|
|
210
|
-
BrNfe.intermediario_class = BrNfe::
|
|
218
|
+
BrNfe.intermediario_class = BrNfe::Service::Intermediario
|
|
211
219
|
end
|
|
212
220
|
|
|
213
221
|
it "atributos pode ser atribuidos em forma de bloco" do
|
|
@@ -259,7 +267,7 @@ describe BrNfe::Servico::Rps do
|
|
|
259
267
|
|
|
260
268
|
describe "#condicao_pagamento" do
|
|
261
269
|
it "valor padrão é nil" do
|
|
262
|
-
novo = BrNfe::
|
|
270
|
+
novo = BrNfe::Service::Rps.new
|
|
263
271
|
novo.condicao_pagamento.must_be_nil
|
|
264
272
|
novo.condicao_pagamento = 'outro valor qualquer'
|
|
265
273
|
novo.condicao_pagamento.must_be_nil
|
|
@@ -268,7 +276,7 @@ describe BrNfe::Servico::Rps do
|
|
|
268
276
|
it "a classe do condicao_pagamento deve segir a configuração de BrNfe.condicao_pagamento_class" do
|
|
269
277
|
BrNfe.condicao_pagamento_class = BrNfe::Emitente
|
|
270
278
|
|
|
271
|
-
novo = BrNfe::
|
|
279
|
+
novo = BrNfe::Service::Rps.new(condicao_pagamento: BrNfe::Emitente.new)
|
|
272
280
|
novo.condicao_pagamento.class.must_equal BrNfe::Emitente
|
|
273
281
|
|
|
274
282
|
novo.condicao_pagamento = nil
|
|
@@ -352,4 +360,144 @@ describe BrNfe::Servico::Rps do
|
|
|
352
360
|
end
|
|
353
361
|
end
|
|
354
362
|
|
|
363
|
+
describe "#items" do
|
|
364
|
+
it "deve inicializar como um vetor vazio" do
|
|
365
|
+
subject.class.new.items.must_equal []
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
it "posso utilizar o << para adicionar valores" do
|
|
369
|
+
subject.items << item_1
|
|
370
|
+
subject.items << item_2
|
|
371
|
+
subject.items.must_equal [item_1,item_2]
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
it "sempre retorna um array" do
|
|
375
|
+
subject.items = item_2
|
|
376
|
+
subject.items.must_equal [item_2]
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
it "não permite adicionar outro objeto a não ser o definido pela class BrNfe.service_item_class" do
|
|
380
|
+
class CustomClass
|
|
381
|
+
end
|
|
382
|
+
c_class_1 = CustomClass.new
|
|
383
|
+
c_class_2 = CustomClass.new
|
|
384
|
+
BrNfe.service_item_class = CustomClass
|
|
385
|
+
|
|
386
|
+
subject.items << c_class_1
|
|
387
|
+
subject.items << c_class_2
|
|
388
|
+
subject.items << item_1
|
|
389
|
+
subject.items.must_equal [c_class_1, c_class_2]
|
|
390
|
+
|
|
391
|
+
subject.items = 'item_2'
|
|
392
|
+
subject.items.must_equal []
|
|
393
|
+
|
|
394
|
+
BrNfe.service_item_class = BrNfe::Service::Item
|
|
395
|
+
end
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
describe "#total_services" do
|
|
399
|
+
it "se não setar valor em total_services deve somar o total_value de todos os items" do
|
|
400
|
+
subject.total_services = nil
|
|
401
|
+
item_1.total_value = 55.70
|
|
402
|
+
item_2.total_value = 40.35
|
|
403
|
+
subject.items = [item_1, item_2]
|
|
404
|
+
|
|
405
|
+
subject.total_services.must_equal 96.05
|
|
406
|
+
end
|
|
407
|
+
it "se não houver itens e nem um valor setado deve retornar zero" do
|
|
408
|
+
subject.total_services = nil
|
|
409
|
+
subject.items = []
|
|
410
|
+
|
|
411
|
+
subject.total_services.must_equal 0.0
|
|
412
|
+
end
|
|
413
|
+
it "se setar um valor deve retornar esse valor e não pode somar dos itens" do
|
|
414
|
+
subject.total_services = 47.0
|
|
415
|
+
item_1.total_value = 55.70
|
|
416
|
+
item_2.total_value = 40.35
|
|
417
|
+
subject.items = [item_1, item_2]
|
|
418
|
+
|
|
419
|
+
subject.total_services.must_equal 47.0
|
|
420
|
+
end
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
describe "#base_calculation" do
|
|
424
|
+
it "se não setar valor em base_calculation deve subtratir o total_services com deductions" do
|
|
425
|
+
subject.assign_attributes({
|
|
426
|
+
base_calculation: nil,
|
|
427
|
+
total_services: 100.0,
|
|
428
|
+
deductions: 4.500000555
|
|
429
|
+
})
|
|
430
|
+
|
|
431
|
+
subject.base_calculation.must_equal 95.5
|
|
432
|
+
end
|
|
433
|
+
it "deve retornar zero se não houver valor em base_calculation e nem em total_services ou deductions" do
|
|
434
|
+
subject.assign_attributes({
|
|
435
|
+
base_calculation: nil,
|
|
436
|
+
total_services: nil,
|
|
437
|
+
deductions: nil
|
|
438
|
+
})
|
|
439
|
+
|
|
440
|
+
subject.base_calculation.must_equal 0.0
|
|
441
|
+
end
|
|
442
|
+
it "se setar um valor deve retornar esse valor e não pode celcular o total_services subtraindo as deductions" do
|
|
443
|
+
subject.assign_attributes({
|
|
444
|
+
base_calculation: 200,
|
|
445
|
+
total_services: 100,
|
|
446
|
+
deductions: 50
|
|
447
|
+
})
|
|
448
|
+
|
|
449
|
+
subject.base_calculation.must_equal 200
|
|
450
|
+
end
|
|
451
|
+
end
|
|
452
|
+
|
|
453
|
+
describe "#iss_tax_rate" do
|
|
454
|
+
it "deve pegar o valor de iss_tax_rate do primeiro item se não houver valor setado em iss_tax_rate do RPS" do
|
|
455
|
+
subject.iss_tax_rate = nil
|
|
456
|
+
item_1.iss_tax_rate = 0.3
|
|
457
|
+
item_2.iss_tax_rate = 0.4
|
|
458
|
+
subject.items = [item_2, item_1]
|
|
459
|
+
|
|
460
|
+
subject.iss_tax_rate.must_equal 0.4
|
|
461
|
+
end
|
|
462
|
+
it "Deve retornar nil se não houver itens e nem um valor setado" do
|
|
463
|
+
subject.iss_tax_rate = nil
|
|
464
|
+
subject.items = []
|
|
465
|
+
|
|
466
|
+
subject.iss_tax_rate.must_be_nil
|
|
467
|
+
end
|
|
468
|
+
it "se setar um valor deve retornar esse valor e não pode pegar dos itens" do
|
|
469
|
+
subject.iss_tax_rate = 0.4
|
|
470
|
+
item_1.total_value = 0.1
|
|
471
|
+
item_2.total_value = 0.2
|
|
472
|
+
subject.items = [item_1, item_2]
|
|
473
|
+
|
|
474
|
+
subject.iss_tax_rate.must_equal 0.4
|
|
475
|
+
end
|
|
476
|
+
end
|
|
477
|
+
|
|
478
|
+
describe "#cnae_code" do
|
|
479
|
+
it "deve pegar o valor de cnae_code do primeiro item se não houver valor setado em cnae_code do RPS" do
|
|
480
|
+
subject.cnae_code = nil
|
|
481
|
+
item_1.cnae_code = '11111'
|
|
482
|
+
item_2.cnae_code = '22222'
|
|
483
|
+
subject.items = [item_2, item_1]
|
|
484
|
+
|
|
485
|
+
subject.cnae_code.must_equal '22222'
|
|
486
|
+
end
|
|
487
|
+
it "Deve retornar nil se não houver itens e nem um valor setado" do
|
|
488
|
+
subject.cnae_code = nil
|
|
489
|
+
subject.items = []
|
|
490
|
+
|
|
491
|
+
subject.cnae_code.must_be_nil
|
|
492
|
+
end
|
|
493
|
+
it "se setar um valor deve retornar esse valor e não pode pegar dos itens" do
|
|
494
|
+
subject.cnae_code = '2'
|
|
495
|
+
item_1.total_value = '3'
|
|
496
|
+
item_2.total_value = '4'
|
|
497
|
+
subject.items = [item_1, item_2]
|
|
498
|
+
|
|
499
|
+
subject.cnae_code.must_equal '2'
|
|
500
|
+
end
|
|
501
|
+
end
|
|
502
|
+
|
|
355
503
|
end
|