Ir para conteúdo
  • Cadastre-se

dev botao

[Inclusão de Componente] Sugestão para novo componente ACBrFeriado


Filipe Sortica
  • Este tópico foi criado há 1855 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá, bom dia!

Gostaria de sugerir a inclusão do novo componente ACBrFeriado.

Ele faz a busca dos feriados de acordo com a API fornecida por http://www.calendario.com.br/. O componente segue a mesma linha do ACBrCEP. A utilização do componente seria assim:

  ACBrFeriado := TACBrFeriado.Create(nil);
  try
    ACBrFeriado.WebService := wsfCalendario; // Aqui poderá mais adiante haver outros WebServices
    ACBrFeriado.Token := 'seutoken';
    ACBrFeriado.OnBuscaEfetuada := FeriadoBuscaEfetuada; // Evento para recuperar os feriados retornados
    ACBrFeriado.Buscar(Ano, Uf, NomeCidade); // Realiza a busca dos feriados
  finally
    ACBrFeriado.Free;
  end;

Ao realizar a consulta, preenche-se a lista dos eventos. Cada evento possui as seguintes informações:

  TACBrFeriadoEvento = class
    {...}
  public
    {...}
    property Ano: Integer           read fAno       write fAno;
    property Mes: Integer           read fMes       write fMes;
    property Dia: Integer           read fDia       write fDia;
    property Data: TDateTime        read fData      write fData;
    property Nome: String           read fNome      write fNome;
    property Descricao: String      read fDescricao write fDescricao;
    property Tipo: TACBrFeriadoTipo read fTipo      write fTipo;
    property Link: String           read fLink      write fLink;
  end;

O tipo terá os seguintes possíveis valores:

  TACBrFeriadoTipo = ( ftNenhum, ftNacional, ftEstadual, ftMunicipal,
                       ftFacultativo, ftDiaConvencional );

Um detalhe em relação à busca é que deve ser passado o nome da cidade, em vez de o código do IBGE. Já sugeri ao http://www.calendario.com.br/ que incluam a possibilidade de fazer a consulta dos feriados por meio de sua API utilizando o código do IBGE. Eles retornaram dizendo que irão trabalhar nisso. Então, em breve, poderemos adequar essa parte. Por enquanto, a pesquisa utilizando o nome da cidade deve seguir o padrão que eles especificam no site: http://www.calendario.com.br/api_feriados_municipais_estaduais_nacionais.php. Neste site, também é possível receber gratuitamente o token para a utilização da API.

Espero que a contribuição seja útil.

Abraços!

ACBrFeriado.pas

ACBrTCPReg.pas

ACBr_TCP.dpk

  • Curtir 4

Att,

Filipe Sortica
Santa Maria / RS
Analista de Sistemas

Link para o comentário
Compartilhar em outros sites

4 minutos atrás, bylaardt disse:

Pena que esse site não é tão confiável assim.
Dia 11 de agosto não é feriado em Santa Catarina como indica o site:
Conforme previsão legal, o feriado é sempre transferido para o domingo seguinte.

Realmente, manter uma base nacional com todos os feriados nacionais, estuaduais e municipais não é nada simples. No caso de Santa Maria, RS, o feriado de 20/09 é estadual, mas consta como estadual e também como municipal. Por isso, entrei em contato com eles para que não apareça como municipal. É possível informá-los para que atualizem a base, de acordo com o que diz no site.

Citar

Algum feriado de sua cidade está desatualizado? Comunique a nossa equipe!

Dúvidas, problemas ou sugestões: [email protected]

 

  • Curtir 1

Att,

Filipe Sortica
Santa Maria / RS
Analista de Sistemas

Link para o comentário
Compartilhar em outros sites

E outra, com os mais de 60 mil membros que o ACBr tem, poderíamos muito bem fazer algo semelhante ao que foi feito com a NFS-e. Cada cidade tem um provedor, uma configuração. Neste caso seria até bem mais simples. Os feriados nacionais são simples, os feriados móveis podem ser calculados, os estaduais temos um pouco mais, e aí iríamos adicionando os municipais.

  • Curtir 2

Att,

Filipe Sortica
Santa Maria / RS
Analista de Sistemas

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Qual é a receita (forma de ganhar dinheiro) do site: http://www.calendario.com.br/ ?  (Toda empresa precisa ter lucro... senão acaba fechando)

Pergunto, para saber se não há a possibilidade de descontinuarem ou tornar fechado, o serviço...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Atualmente eu utilizo Calendários tipo iCAL para fazer controle pessoal e um calendário provido pelo google ou pela Microsoft, para feriados nacionais. Infelizmente, os municípios não disponibilizam esse tipo de informação em formato eletrônico.

Manter esse bando de dados não é um trabalho pequeno. Mas termos um componente para utilização de uma API Rest seria interessante.

Meu único medo é no futuro não termos outra API para substituir a atual deixar de existir.

6 horas atrás, Filipe Sortica disse:

Espero que a contribuição seja útil.

Abraços!

ACBrFeriado.pas

ACBrTCPReg.pas

ACBr_TCP.dpk

Vou analisar e dar um retorno aqui.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Buenas!

Gostaria de enviar novamente como sugestão o componente, agora com algumas alterações.

Em 27/10/2017 at 10:51, Filipe Sortica disse:

E outra, com os mais de 60 mil membros que o ACBr tem, poderíamos muito bem fazer algo semelhante ao que foi feito com a NFS-e. Cada cidade tem um provedor, uma configuração. Neste caso seria até bem mais simples. Os feriados nacionais são simples, os feriados móveis podem ser calculados, os estaduais temos um pouco mais, e aí iríamos adicionando os municipais.

Agora o componente pode também fazer a pesquisa em um arquivo JSON, onde iríamos incluindo os dados dos eventos. Envio junto o arquivo JSON. Os feriados nacionais e estaduais já estão contemplados. Os feriados municipais de Santa Maria e Porto Alegre (RS), Florianópolis (SC), Curitiba (PR), São Paulo (SP), Rio de Janeiro (RJ), Belo Horizonte (MG), Salvador e Feira de Santana (BA) também já estão contemplados. Neste tipo de pesquisa, deve-se utilizar o código do município, em vez de o nome.

Junto está indo também um aplicativo demo para o componente.

ACBr_TCP.dpk

ACBrFeriado.pas

ACBrFeriadoEventos.json

ACBrTCPReg.pas

DemoFeriados.dpr

Frm_Feriados.dfm

Frm_Feriados.pas

Att,

Filipe Sortica
Santa Maria / RS
Analista de Sistemas

Link para o comentário
Compartilhar em outros sites

Em ‎27‎/‎10‎/‎2017 at 09:58, bylaardt disse:

Pena que esse site não é tão confiável assim.
Dia 11 de agosto não é feriado em Santa Catarina como indica o site:
Conforme previsão legal, o feriado é sempre transferido para o domingo seguinte.

Com a nova alteração, pode-se configurar no arquivo JSON a troca do dia do feriado.

Att,

Filipe Sortica
Santa Maria / RS
Analista de Sistemas

Link para o comentário
Compartilhar em outros sites

  • Consultores
3 horas atrás, Filipe Sortica disse:

Buenas!

Gostaria de enviar novamente como sugestão o componente, agora com algumas alterações.

Agora o componente pode também fazer a pesquisa em um arquivo JSON, onde iríamos incluindo os dados dos eventos. Envio junto o arquivo JSON. Os feriados nacionais e estaduais já estão contemplados. Os feriados municipais de Santa Maria e Porto Alegre (RS), Florianópolis (SC), Curitiba (PR), São Paulo (SP), Rio de Janeiro (RJ), Belo Horizonte (MG), Salvador e Feira de Santana (BA) também já estão contemplados. Neste tipo de pesquisa, deve-se utilizar o código do município, em vez de o nome.

Junto está indo também um aplicativo demo para o componente.

ACBr_TCP.dpk

ACBrFeriado.pas

ACBrFeriadoEventos.json

ACBrTCPReg.pas

DemoFeriados.dpr

Frm_Feriados.dfm

Frm_Feriados.pas

Vou verificar Felipe.

 

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Consultores

Enviei ao SVN. Mas considero o componente em beta.

Confesso que não entendi todas as propriedades (Exemplo: TrocaDiaTipo), mas aqui vão algumas considerações:

Notei que o arquivo .json não é válido. Você mesmo pode testar em sites como: https://jsonformatter.org/ ou https://jsonformatter.curiousconcept.com/ 

Removendo uma vírgula na linha 84 e alterando a linha 2 para incluir uma string (exemplo "definicao": { ), corrige o arquivo.

Na busca por feriados de 2017, o programa de exemplo está exibindo "a páscoa" com data de "30/12/1899"...

Outra coisa, as classes estão todas dentro do arquivo ACBrFeriado.pas. Seria melhor estarem em arquivos separados. Principalmente as classes abstratas ou básicas (TACBrFeriadoWSClass) e suas implementações (TACBrWSCalendario, TACBrWSJSON).

 

Nota: Ao pesquisar sobre o assunto, acabei encontrando o seguinte projeto: https://github.com/dadosbr/feriados. Pode ser interessante unir forças já que eles mesmos disponibilizaram uma mini-api.

  • Curtir 2
  • Obrigado 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

15 horas atrás, EMBarbosa disse:

Enviei ao SVN. Mas considero o componente em beta.

Que bom.

15 horas atrás, EMBarbosa disse:

Notei que o arquivo .json não é válido. Você mesmo pode testar em sites como: https://jsonformatter.org/ ou https://jsonformatter.curiousconcept.com/ 

Removendo uma vírgula na linha 84 e alterando a linha 2 para incluir uma string (exemplo "definicao": { ), corrige o arquivo.

Obrigado, realmente foram falhas minhas.

15 horas atrás, EMBarbosa disse:

Na busca por feriados de 2017, o programa de exemplo está exibindo "a páscoa" com data de "30/12/1899"...

Não consegui reproduzir o erro. Para mim, em 2017, este feriado está aparecendo com a data de 16/04/2017. E funcionando também para os anos seguintes.

15 horas atrás, EMBarbosa disse:

Confesso que não entendi todas as propriedades (Exemplo: TrocaDiaTipo)

Existem casos que os feriados são, pela legislação, transferidos de dia. Neste caso, pode-se configurar especificando que tipo de troca de dia ocorre. Ex.: Como exemplo que o colega citou acima. Conforme previsão legal, o feriado de 11/08 em SC sempre é transferido para o domingo seguinte. Então, configuramos assim:

  "trocaDiaTipo": 1,            // O tipo de troca será um de-para.
  "trocaDiaDe": "2,3,4,5,6,7",  // Caso o feriado caia em algum desses dias da semana, ele será trocado (entre segunda e sábado).
  "trocaDiaPara": 1,            // O dia da semana para o qual ele será trocado (domingo).
  "trocaDiaParaSemana": 1       // Indica que a troca ocorrerá para um dia na semana seguinte.

Pelo que pesquisei, a troca do dia do feriado prevista legalmente ocorre também no Acre e no Maranhão. Para implementar isso, caso alguém tenha outras maneiras de fazê-lo, pode ficar a vontade para dar sugestões.

15 horas atrás, EMBarbosa disse:

Nota: Ao pesquisar sobre o assunto, acabei encontrando o seguinte projeto: https://github.com/dadosbr/feriados. Pode ser interessante unir forças já que eles mesmos disponibilizaram uma mini-api.

Eu cheguei a encontrar esse projeto, e me pareceu descontinuado. Mas de repente seria interessante.

15 horas atrás, EMBarbosa disse:

Outra coisa, as classes estão todas dentro do arquivo ACBrFeriado.pas. Seria melhor estarem em arquivos separados. Principalmente as classes abstratas ou básicas (TACBrFeriadoWSClass) e suas implementações (TACBrWSCalendario, TACBrWSJSON).

Posso alterar de acordo com a sugestão.

  • Curtir 1

Att,

Filipe Sortica
Santa Maria / RS
Analista de Sistemas

Link para o comentário
Compartilhar em outros sites

  • Consultores
4 horas atrás, Filipe Sortica disse:

Obrigado, realmente foram falhas minhas

No SVN já está corrigido. Se puder testar eu agradeceria.

4 horas atrás, Filipe Sortica disse:

Não consegui reproduzir o erro. Para mim, em 2017, este feriado está aparecendo com a data de 16/04/2017. E funcionando também para os anos seguintes.

Esqueci de mencionar que o erro aconteceu no Lazarus. Pode ser algo relacionado com a codificação dos arquivos.

4 horas atrás, Filipe Sortica disse:

Existem casos que os feriados são, pela legislação, transferidos de dia. Neste caso, pode-se configurar especificando que tipo de troca de dia ocorre. Ex.: Como exemplo que o colega citou acima. Conforme previsão legal, o feriado de 11/08 em SC sempre é transferido para o domingo seguinte. Então, configuramos assim:


  "trocaDiaTipo": 1,            // O tipo de troca será um de-para.
  "trocaDiaDe": "2,3,4,5,6,7",  // Caso o feriado caia em algum desses dias da semana, ele será trocado (entre segunda e sábado).
  "trocaDiaPara": 1,            // O dia da semana para o qual ele será trocado (domingo).
  "trocaDiaParaSemana": 1       // Indica que a troca ocorrerá para um dia na semana seguinte.

Pelo que pesquisei, a troca do dia do feriado prevista legalmente ocorre também no Acre e no Maranhão. Para implementar isso, caso alguém tenha outras maneiras de fazê-lo, pode ficar a vontade para dar sugestões.

Entendi. Obrigado pela explicação.

4 horas atrás, Filipe Sortica disse:

Posso alterar de acordo com a sugestão.

Se puder alterar e anexar os arquivos alterados aqui, eu ficaria feliz em atualizar.

Mas antes, queira testar a versão do SVN se está tudo ok.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Fundadores
5 minutos atrás, EMBarbosa disse:

Esqueci de mencionar que o erro aconteceu no Lazarus. Pode ser algo relacionado com a codificação dos arquivos.

Como posso testar esse problema no Lazarus ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Consultores
1 minuto atrás, Daniel Simoes disse:

Como posso testar esse problema no Lazarus ?

  1. executar o demo
  2. Configurar para buscar do arquivo .json
  3. preencher ano com 2017
  4. clicar no botão buscar

Na lista de feriados vai aparecer Páscoa com data de 30/12/1899...

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Em 07/11/2017 at 17:00, EMBarbosa disse:

Outra coisa, as classes estão todas dentro do arquivo ACBrFeriado.pas. Seria melhor estarem em arquivos separados. Principalmente as classes abstratas ou básicas (TACBrFeriadoWSClass) e suas implementações (TACBrWSCalendario, TACBrWSJSON).

Envio os arquivos alterados conforme a sugestão.

Incluídos também os feriados municipais de Aracaju (SE).

ACBrFeriadoWSJSON.pas

ACBr_TCP.dpk

ACBrFeriado.pas

ACBrFeriadoEventos.json

ACBrFeriadoWSCalendario.pas

ACBrFeriadoWSClass.pas

  • Curtir 1

Att,

Filipe Sortica
Santa Maria / RS
Analista de Sistemas

Link para o comentário
Compartilhar em outros sites

  • Consultores
Em 14/11/2017 at 11:51, Filipe Sortica disse:

Envio os arquivos alterados conforme a sugestão.

Incluídos também os feriados municipais de Aracaju (SE).

ACBrFeriadoWSJSON.pas

ACBr_TCP.dpk

ACBrFeriado.pas

ACBrFeriadoEventos.json

ACBrFeriadoWSCalendario.pas

ACBrFeriadoWSClass.pas

Olá Filipe,

Enviei as alterações Revisão 14168. Me parece OK. Se puder testar agradeço.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
Em 27/10/2017 at 09:45, Filipe Sortica disse:

Olá, bom dia!

Gostaria de sugerir a inclusão do novo componente ACBrFeriado.

Ele faz a busca dos feriados de acordo com a API fornecida por http://www.calendario.com.br/. O componente segue a mesma linha do ACBrCEP. A utilização do componente seria assim:

Muito legal a iniciativa do Felipe!

Trabalho no site Calendario.com.br e gostaria de saber como podemos trabalhar juntos nisto.

Gostaríamos de prover um calendário confiável e fácil de usar, para todos os desenvolvedores brasileiros.

Me coloco à disposição para trabalharmos nisso.

Editado por Calendario
  • Curtir 3
Link para o comentário
Compartilhar em outros sites

  • Consultores
12 horas atrás, Calendario disse:

Trabalho no site Calendario.com.br e gostaria de saber como podemos trabalhar juntos nisto.

Gostaríamos de prover um calendário confiável e fácil de usar, para todos os desenvolvedores brasileiros.

Me coloco à disposição para trabalharmos nisso.

O componente com a consulta de feriados via API disponibilizada pelo site foi adicionado.

Você pode, se desejar, colocar um link para esse tópico no seu site para informar a programadores Delphi/Lazarus/Pascal que este componente está disponível.

Se tiver alguma outra API, ou alguma sugestão fique a vontade para dizer.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

2 horas atrás, EMBarbosa disse:

O componente com a consulta de feriados via API disponibilizada pelo site foi adicionado.

Você pode, se desejar, colocar um link para esse tópico no seu site para informar a programadores Delphi/Lazarus/Pascal que este componente está disponível.

Se tiver alguma outra API, ou alguma sugestão fique a vontade para dizer.

Sim, pensei nisso. Mas qual seria a melhor página a linkarmos em nosso site?

Tem alguma página diretamente de download do componente(s)?

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Infelizmente não dá para baixar apenas o componente ACBrFeriado...

Seria necessário baixar todo o ACBr e instalar pelo menos o pacote ACBrTCP, usando o instalador automatizado do ACBr

https://www.projetoacbr.com.br/como-usar/

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Olá,

Atendendo a pedidos (entre eles do Felipe, criador do componente ACBrFeriados), implementamos a possibilidade de utilizar a API com o código IBGE das cidades.

ex: http://www.calendario.com.br/api/api_feriados.php?token=[seu-token]&ano=2017&ibge=3550308

Seria bem legal se alguém conseguisse atualizar o componente para aceitar também os códigos do IBGE.

Nós também colocamos um link para o site  ACBr e para esta página do fórum na página da API de Feriados

http://www.calendario.com.br/dev/api_feriados_municipais_estaduais_nacionais.php

Qualquer dúvida ou sugestão, estamos à disposição.

 

Abraços,

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Consultores
Em 06/12/2017 at 08:27, Filipe Sortica disse:

Olá!

Segue a atualização para consulta com o novo parâmetro.

ACBrFeriadoWSCalendario.pas

Já estou verificando.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1855 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.