Função pra feriados

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função pra feriados

Mensagem por JoséQuintas »

Iniciei uma nova função na SefazClass.
Quem tiver mais datas pra acrescentar, é só avisar.

Código: Selecionar todos

FUNCTION ze_Feriado( dDate, cUF )

   LOCAL lFeriado
   LOCAL aList := { ;
      { "BR", "0101" }, ; // Ano Novo
      { "BR", "0421" }, ; // Tiradentes
      { "BR", "0501" }, ; // Dia do Trabalho
      { "BR", "0907" }, ; // Independência
      { "BR", "1012" }, ; // N S Aparecida
      { "BR", "1102" }, ; // Finados
      { "BR", "1115" }, ; // Proclamação da República
      { "BR", "1225" }, ;  // Natal
      { "SP", "0125" }, ; // Fundação de SP
      { "SP", "0419" }, ; // Paixao de Cristo
      { "SP", "0620" }, ; // Corpus Christi
      { "SP", "0709" }, ; // Revolução Constitucionalista
      { "SP", "1120" } }  // Consciência Negra

   hb_Default( @cUF, "" )

   lFeriado := AScan( aList, { | e | ( e[ 1 ] == "BR" .OR. e[ 1 ] == cUF ) .AND. e[ 2 ] == Right( Dtos( dDate ), 4 ) } ) != 0
   IF ! lFeriado
      IF AScan( { 0, 1 }, dDate - TercaDeCarnaval( Year( dDate ) ) ) != 0
         lFeriado := .T.
      ENDIF
   ENDIF

   RETURN lFeriado
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Função pra feriados

Mensagem por lwinter »

Boa tarde Jose!

Segue minha sugestão:
Para dar acuracidade na sua função de feriado, seria interessante incluir os feriados eclesiasticos, ou seja, os feriados religiosos que tem data dinâmica/variavel e que muda conforme a data da pascoa. Por definicao, a pascoa é o primeiro Domingo apos a lua cheia que ocorre apos o equinocio vernal, e pode cair entre 22 de Marco e 25 de Abril e é calculada pela funcao ft_Easter().

Código: Selecionar todos

FUNCTION ze_Feriado( dDate, cUF )
    LOCAL lFeriado
    LOCAL aList := { ;
      { "BR", "0101" }, ; // Ano Novo
      { "BR", "0421" }, ; // Tiradentes
      { "BR", "0501" }, ; // Dia do Trabalhador
      { "BR", "0907" }, ; // Independência
      { "BR", "1012" }, ; // N S Aparecida (dia das criancas)
      { "BR", "1102" }, ; // Dia de Finados
      { "BR", "1115" }, ; // Proclamação da República
      { "BR", "1225" }, ; // Natal
      { "SP", "0125" }, ; // Fundação de SP
      { "SP", "0709" }, ; // Revolução Constitucionalista
      { "SP", "1120" } }  // Consciência Negra
    LOCAL aEclesiasticos := { ;
       0, ; // domindo de pascoa
      -2, ; // sexta   paixao de cristo 
     -49, ; // domingo carnaval
     -47, ; // terca   carnaval
     -48, ; // quarta  cinzas
     +60  } // quinta copus christi

    hb_Default( @cUF, "" )

    For Each nDias in aEclesiasticos
        AADD (aList, { 'BR', Right (DTOS (ft_Easter (Year(dDate)) - nDias), 4) } )
    Next

    lFeriado := AScan( aList, { | e | ( e[ 1 ] == "BR" .OR. e[ 1 ] == cUF ) .AND. e[ 2 ] == Right( Dtos( dDate ), 4 ) } ) != 0
    
    RETURN lFeriado
PS: Não cheguei a compilar, portanto pode haver erro de digitação no código fonte mas a ideia é esta.

Espero ter ajudado!

rgds,
Editado pela última vez por JoséQuintas em 19 Jul 2019 15:13, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função pra feriados

Mensagem por JoséQuintas »

Até já tem a função pra isso, pode ver no fonte a Terça de carnaval.
Mas encontrei alguns textos na internet dizendo que alguns feriados são estaduais/municipais, apesar de serem eclesiásticos.
Fiquei na dúvida sobre adicionar automático ou não.

Código: Selecionar todos

 IF ! lFeriado
      IF AScan( { 0, 1 }, dDate - TercaDeCarnaval( Year( dDate ) ) ) != 0
         lFeriado := .T.
      ENDIF
   ENDIF
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Função pra feriados

Mensagem por lwinter »

Sim, mas pelo o que da a entender é que o fonte só cobre a terca de carnaval, certo? Ou ela cobre os outros feriados. Se cobrir o código fonte não fica claro e talvez a minha sugestão fique mais claro.
Esta questão de feriado é bem confusa. Estou verificando no wiki em https://pt.wikipedia.org/wiki/Feriados_no_Brasil e verifiquei a o dia da consciência negra também é facultativo e estadual.
Acho que esta função de feriado deve prever os feriados mais comuns nos estados como federal ("BR") assim cobre a maioria das opções. O que você acha?
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Função pra feriados

Mensagem por lwinter »

Retirei do wiki no link https://pt.wikipedia.org/wiki/Feriados_no_Brasil os principais feriados estaduais do Brasil. Caso queira utilizar em seu fonte, segue abaixo:

Código: Selecionar todos

FUNCTION ze_Feriado( dDate, cUF )
    LOCAL lFeriado
    LOCAL aList := { ;
        { "BR", "0101" }, ; // Ano Novo
        { "BR", "0421" }, ; // Tiradentes
        { "BR", "0501" }, ; // Dia do Trabalhador
        { "BR", "0907" }, ; // Independência
        { "BR", "1012" }, ; // N S Aparecida (dia das criancas)
        { "BR", "1102" }, ; // Dia de Finados
        { "BR", "1115" }, ; // Proclamação da República
        { "BR", "1225" }, ; // Natal
        { 'AC', '0123' }, ; // Dia do evangélico                                                                                    Lei Estadual nº 1.538/2004
        { 'AC', '0308' }, ; // Alusivo ao Dia Internacional da Mulher                                                               Lei Estadual nº 1.411/2001
        { 'AC', '0615' }, ; // Aniversário do estado                                                                                Lei Estadual nº 14/1964
        { 'AC', '0905' }, ; // Dia da Amazônia                                                                                      Lei Estadual nº 1.526/2004
        { 'AC', '1117' }, ; // Assinatura do Tratado de Petrópolis                                                                  Ponto facultativo; Lei estadual nº 57/1965
        { 'AL', '0624' }, ; // São João                                                                                             Lei estadual nº 5.508/1993
        { 'AL', '0629' }, ; // São Pedro                                                                                            Lei estadual nº 5.509/1993
        { 'AL', '0916' }, ; // Emancipação política    
        { 'AL', '1120' }, ; // Morte de Zumbi dos Palmares                                                                          Lei estadual nº 5.724/1995
        { 'AP', '0319' }, ; // Dia de São José, santo padroeiro do Estado do Amapá                                                  Lei estadual nº 667, de 16 de abril de 2002 
        { 'AP', '0913' }, ; // Criação do Território Federal (Data Magna do estado)                                                 Art. 335 da Constituição estadual.
        { 'AM', '0905' }, ; // Elevação do Amazonas à categoria de província                                                        Lei estadual nº 25/1977
        { 'AM', '1120' }, ; // Dia da Consciência Negra                                                                             Lei estadual nº 84/2010 
        { 'AM', '1208' }, ; // Nossa Senhora da Conceição      
        { 'BA', '0702' }, ; // Independência da Bahia (Data magna do estado)                                                        Art. 6º, § 3º da Constituição estadual
        { 'CE', '0319' }, ; // Dia de São José (Padroeiro do Ceará)                                                                 Lei Federal nº 9.093/1995 
        { 'CE', '0325' }, ; // Data magna do estado (data da abolição da escravidão no Ceará)                                       Art. 18, parágrafo único da constituição estadual
        { 'CE', '0815' }, ; // Dia de Nossa Senhora da Assunção (Padroeira de Fortaleza)                                            Lei Federal nº 9.093/1995 
        { 'DF', '0421' }, ; // Fundação de Brasília                                                                                 Coincide com o feriado nacional de Tiradentes 
        { 'DF', '1130' }, ; // Dia do evangélico                                                                                    Lei distrital nº 963/1995 
        { 'GO', '0524' }, ; // Dia de Nossa Senhora Auxiliadora                                                                     Feriado religioso 
        { 'GO', '1024' }, ; // Pedra Fundamental de Goiânia                                                                         Lei estadual nº 10.460/1988 
        { 'MA', '0728' }, ; // Adesão do Maranhão à independência do Brasil                                                         Lei estadual nº 2.457/1964
        { 'MT', '1120' }, ; // Dia da Consciência Negra                                                                             Lei estadual nº 7.879/2002
        { 'MS', '1011' }, ; // Criação do estado                                                                                    Lei estadual nº 10/1979
        { 'MG', '0421' }, ; // Data magna do estado                                                                                 Art. 256 da constituição estadual; coincide com o feriado nacional de Tiradentes. 
        { 'PA', '0815' }, ; // Adesão do Grão-Pará à independência do Brasil (data magna)                                           Lei estadual nº 5.999/1996
        { 'PB', '0726' }, ; // Homenagem à memória do ex-presidente João Pessoa                                                     Lei Estadual 3.489/67, Art. 2º. 
        { 'PB', '0805' }, ; // Fundação do Estado em 1585 e dia da sua padroeira, Nossa Senhora das Neves                           Lei Estadual 3.489/1967
        { 'PR', '1219' }, ; // Emancipação política do estado do Paraná                                                             Lei estadual nº 4.658/1962 
        { 'PE', '0306' }, ; // Revolução Pernambucana de 1817 (Data Magna)                                                          Lei estadual nº 13.835/2009. (Feriado Oficial do Estadual de Pernambuco) 
        { 'PE', '0624' }, ; // Festa de São João (Festa Junina)                                                                     Feriado Estadual (Pernambuco) e Municipal (Recife) 
        { 'PE', '0716' }, ; // Dia de Nossa Senhora do Carmo (Padroeira da Cidade do Recife)                                        Feriado religioso (Feriado Municipal da Cidade do Recife/PE) 
        { 'PE', '1208' }, ; // Dia de Nossa Senhora da Conceição (santa de grande devoção pela população da cidade do Recife)       Feriado religioso (Feriado Municipal da Cidade do Recife/PE) 
        { 'PI', '1019' }, ; // Dia do Piauí                                                                                         Lei estadual nº 176/1937 
        { 'RJ', '0423' }, ; // Dia de São Jorge                                                                                     Lei nº 5.198/2008
        { 'RJ', '1120' }, ; // Dia da Consciência Negra                                                                             Lei nº 4.007/2002
        { 'RN', '1003' }, ; // Mártires de Cunhaú e Uruaçu                                                                          Lei estadual nº 8.913/2006
        { 'RS', '0920' }, ; // Proclamação da República Rio-Grandense                                                               Art. 6, parágrafo único da constituição estadual.
        { 'RO', '0104' }, ; // Criação do estado (data magna)                                                                       Lei estadual nº 2291/2010
        { 'RO', '0618' }, ; // Dia do evangélico                                                                                    Lei estadual nº 1.026/2001
        { 'RR', '1005' }, ; // Criação do estado                                                                                    Art. 9 da Constituição estadual.
        { 'SC', '0811' }, ; // Dia de Santa Catarina (criação da capitania, separando-se de São Paulo)                              Lei estadual nº 12.906, de 22 de janeiro de 2004[61] 
        { 'SC', '1125' }, ; // Dia de Santa Catarina de Alexandria                                                                  Lei estadual nº 10.306/1996
        { "SP", "0125" }, ; // Fundação de SP
        { "SP", "1120" } }  // Consciência Negra
        { 'SP', '0709' }, ; // Revolução Constitucionalista de 1932 (Data magna do estado)                                          Lei estadual nº 9.497/1997
        { 'SE', '0708' }, ; // Emancipação política de Sergipe                                                                      Art. 269 da Constituição estadual.
        { 'TO', '1005' }, ; // Criação do estado                                                                                    Lei estadual nº 98/1989
        { 'TO', '0318' }, ; // Autonomia do Estado (criação da Comarca do Norte);                                                   Lei estadual nº 960/1998
        { 'TO', '0908' } }  // Padroeira do Estado (Nossa Senhora da Natividade);                                                   Lei estadual nº 627/1993
    LOCAL aEclesiasticos := { ;
       0, ; // domindo de pascoa
      -2, ; // sexta   paixao de cristo 
     -49, ; // domingo carnaval
     -47, ; // terca   carnaval
     -48, ; // quarta  cinzas
     +60  } // quinta copus christi

    hb_Default( @cUF, "" )

    For Each nDias in aEclesiasticos
        AADD (aList, { 'BR', Right (DTOS (ft_Easter (Year(dDate)) - nDias), 4) } )
    Next

    lFeriado := AScan( aList, { | e | ( e[ 1 ] == "BR" .OR. e[ 1 ] == cUF ) .AND. e[ 2 ] == Right( Dtos( dDate ), 4 ) } ) != 0
    
    RETURN lFeriado
Editado pela última vez por JoséQuintas em 21 Jul 2019 01:27, em um total de 2 vezes.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Função pra feriados

Mensagem por lwinter »

ERRATA:

O correto é " + nDias" e não "- nDIAS" conforme abaixo:

Código: Selecionar todos

For Each nDias in aEclesiasticos
     AADD (aList, { 'BR', Right (DTOS (ft_Easter (Year(dDate)) + nDias), 4) } )
Next
Editado pela última vez por JoséQuintas em 21 Jul 2019 01:28, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função pra feriados

Mensagem por JoséQuintas »

Com tanto texto, aproveitei e alterei pra retornar a descrição.

Código: Selecionar todos

cDescricao := ze_Feriado( Date() )
IF ! Empty( cDescricao )
   ? "Feriado " + cDescricao
ENDIF
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Função pra feriados

Mensagem por lwinter »

Esta nova versao da funcao feriados, permite que seja colocado um feridado eclesiastico na federacao ("BR") ou em um determinado estado.
Exemplo hipotetico para colocar o corpus christi apenas para SP e RJ:

Código: Selecionar todos

LOCAL aEclesiasticos := { ;
{ 'BR',   0 }, ; // domindo de pascoa
{ 'BR',  -2 }, ; // sexta paixao de cristo 
{ 'BR', -49 }, ; // domingo carnaval
{ 'BR', -47 }, ; // terca carnaval
{ 'BR', -48 }, ; // quarta cinzas
{ 'SP', +60 }, ; // quinta copus christi
{ 'RJ', +60 } }  // quinta copus christi

Veja como ficaria a funcao feriado:

FUNCTION ze_Feriado( dDate, cUF )
LOCAL lFeriado
LOCAL aList := { ;
{ "BR", "0101" }, ; // Ano Novo
{ "BR", "0421" }, ; // Tiradentes
{ "BR", "0501" }, ; // Dia do Trabalhador
{ "BR", "0907" }, ; // Independência
{ "BR", "1012" }, ; // N S Aparecida (dia das criancas)
{ "BR", "1102" }, ; // Dia de Finados
{ "BR", "1115" }, ; // Proclamação da República
{ "BR", "1225" }, ; // Natal
{ 'AC', '0123' }, ; // Dia do evangélico Lei Estadual nº 1.538/2004
{ 'AC', '0308' }, ; // Alusivo ao Dia Internacional da Mulher Lei Estadual nº 1.411/2001
{ 'AC', '0615' }, ; // Aniversário do estado Lei Estadual nº 14/1964
{ 'AC', '0905' }, ; // Dia da Amazônia Lei Estadual nº 1.526/2004
{ 'AC', '1117' }, ; // Assinatura do Tratado de Petrópolis Ponto facultativo; Lei estadual nº 57/1965
{ 'AL', '0624' }, ; // São João Lei estadual nº 5.508/1993
{ 'AL', '0629' }, ; // São Pedro Lei estadual nº 5.509/1993
{ 'AL', '0916' }, ; // Emancipação política 
{ 'AL', '1120' }, ; // Morte de Zumbi dos Palmares Lei estadual nº 5.724/1995
{ 'AP', '0319' }, ; // Dia de São José, santo padroeiro do Estado do Amapá Lei estadual nº 667, de 16 de abril de 2002 
{ 'AP', '0913' }, ; // Criação do Território Federal (Data Magna do estado) Art. 335 da Constituição estadual.
{ 'AM', '0905' }, ; // Elevação do Amazonas à categoria de província Lei estadual nº 25/1977
{ 'AM', '1120' }, ; // Dia da Consciência Negra Lei estadual nº 84/2010 
{ 'AM', '1208' }, ; // Nossa Senhora da Conceição 
{ 'BA', '0702' }, ; // Independência da Bahia (Data magna do estado) Art. 6º, § 3º da Constituição estadual
{ 'CE', '0319' }, ; // Dia de São José (Padroeiro do Ceará) Lei Federal nº 9.093/1995 
{ 'CE', '0325' }, ; // Data magna do estado (data da abolição da escravidão no Ceará) Art. 18, parágrafo único da constituição estadual
{ 'CE', '0815' }, ; // Dia de Nossa Senhora da Assunção (Padroeira de Fortaleza) Lei Federal nº 9.093/1995 
{ 'DF', '0421' }, ; // Fundação de Brasília Coincide com o feriado nacional de Tiradentes 
{ 'DF', '1130' }, ; // Dia do evangélico Lei distrital nº 963/1995 
{ 'GO', '0524' }, ; // Dia de Nossa Senhora Auxiliadora Feriado religioso 
{ 'GO', '1024' }, ; // Pedra Fundamental de Goiânia Lei estadual nº 10.460/1988 
{ 'MA', '0728' }, ; // Adesão do Maranhão à independência do Brasil Lei estadual nº 2.457/1964
{ 'MT', '1120' }, ; // Dia da Consciência Negra Lei estadual nº 7.879/2002
{ 'MS', '1011' }, ; // Criação do estado Lei estadual nº 10/1979
{ 'MG', '0421' }, ; // Data magna do estado Art. 256 da constituição estadual; coincide com o feriado nacional de Tiradentes. 
{ 'PA', '0815' }, ; // Adesão do Grão-Pará à independência do Brasil (data magna) Lei estadual nº 5.999/1996
{ 'PB', '0726' }, ; // Homenagem à memória do ex-presidente João Pessoa Lei Estadual 3.489/67, Art. 2º. 
{ 'PB', '0805' }, ; // Fundação do Estado em 1585 e dia da sua padroeira, Nossa Senhora das Neves Lei Estadual 3.489/1967
{ 'PR', '1219' }, ; // Emancipação política do estado do Paraná Lei estadual nº 4.658/1962 
{ 'PE', '0306' }, ; // Revolução Pernambucana de 1817 (Data Magna) Lei estadual nº 13.835/2009. (Feriado Oficial do Estadual de Pernambuco) 
{ 'PE', '0624' }, ; // Festa de São João (Festa Junina) Feriado Estadual (Pernambuco) e Municipal (Recife) 
{ 'PE', '0716' }, ; // Dia de Nossa Senhora do Carmo (Padroeira da Cidade do Recife) Feriado religioso (Feriado Municipal da Cidade do Recife/PE) 
{ 'PE', '1208' }, ; // Dia de Nossa Senhora da Conceição (santa de grande devoção pela população da cidade do Recife) Feriado religioso (Feriado Municipal da Cidade do Recife/PE) 
{ 'PI', '1019' }, ; // Dia do Piauí Lei estadual nº 176/1937 
{ 'RJ', '0423' }, ; // Dia de São Jorge Lei nº 5.198/2008
{ 'RJ', '1120' }, ; // Dia da Consciência Negra Lei nº 4.007/2002
{ 'RN', '1003' }, ; // Mártires de Cunhaú e Uruaçu Lei estadual nº 8.913/2006
{ 'RS', '0920' }, ; // Proclamação da República Rio-Grandense Art. 6, parágrafo único da constituição estadual.
{ 'RO', '0104' }, ; // Criação do estado (data magna) Lei estadual nº 2291/2010
{ 'RO', '0618' }, ; // Dia do evangélico Lei estadual nº 1.026/2001
{ 'RR', '1005' }, ; // Criação do estado Art. 9 da Constituição estadual.
{ 'SC', '0811' }, ; // Dia de Santa Catarina (criação da capitania, separando-se de São Paulo) Lei estadual nº 12.906, de 22 de janeiro de 2004[61] 
{ 'SC', '1125' }, ; // Dia de Santa Catarina de Alexandria Lei estadual nº 10.306/1996
{ "SP", "0125" }, ; // Fundação de SP
{ "SP", "1120" } } // Consciência Negra
{ 'SP', '0709' }, ; // Revolução Constitucionalista de 1932 (Data magna do estado) Lei estadual nº 9.497/1997
{ 'SE', '0708' }, ; // Emancipação política de Sergipe Art. 269 da Constituição estadual.
{ 'TO', '1005' }, ; // Criação do estado Lei estadual nº 98/1989
{ 'TO', '0318' }, ; // Autonomia do Estado (criação da Comarca do Norte); Lei estadual nº 960/1998
{ 'TO', '0908' } } // Padroeira do Estado (Nossa Senhora da Natividade); Lei estadual nº 627/1993
LOCAL aEclesiasticos := { ;
{ 'BR',   0 }, ; // domindo de pascoa
{ 'BR',  -2 }, ; // sexta paixao de cristo 
{ 'BR', -49 }, ; // domingo carnaval
{ 'BR', -47 }, ; // terca carnaval
{ 'BR', -48 }, ; // quarta cinzas
{ 'BR', +60 } } // quinta copus christi

hb_Default( @cUF, "" )

For Each aFeriados in aEclesiasticos
   AADD (aList, { aFeriados [1], Right (DTOS (ft_Easter (Year(dDate)) - aFeriados [2]), 4) } )
Next

lFeriado := AScan( aList, { | e | ( e[ 1 ] == "BR" .OR. e[ 1 ] == cUF ) .AND. e[ 2 ] == Right( Dtos( dDate ), 4 ) } ) != 0

RETURN lFeriado
Editado pela última vez por JoséQuintas em 21 Jul 2019 17:05, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função pra feriados

Mensagem por JoséQuintas »

Ficou com limitação, mas pensei numa solução, ainda vou mexer.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função pra feriados

Mensagem por JoséQuintas »

Não esquece de formatar seus fontes que posta, é colocar a tag code, tem a indicação nas mensagens de como se faz.
Bom, aqui dá uma idéia da mudança, aceitar uma lista de UFs

Código: Selecionar todos

      { "1120", "MT,RJ,SP,AM,AL", "Dia da Consciência Negra, AL Morte de Zumbi dos Palmares" }, ;
      { "1125", "SC", "SC Dia de Sta Catarina de Alexandria" }, ;
      { "1130", "DF", "DF Dia do evangélico" }, ;
      { "1208", "AM,PE", "AM/PE N Sra da Conceição" }, ; //
      { "1219", "PR", "PR Emancipação política do estado do PR" }, ;
      { "1225", "BR", "Natal" } }

   LOCAL aEclesiasticos := { ; // baseados no domingo de pascoa
      {  0,  "BR", "Domingo de Páscoa" }, ;
      { -2,  "BR", "Paixao de Cristo" }, ;
      { -47, "BR", "Terça de Carnaval" }, ;
      { -48, "BR", "Quarta Feira de Cinzas" }, ;
      {  60, "BR", "Corpus Christi" } }
Já atualizei na classe
https://github.com/JoseQuintas/sefazcla ... scfunc.prg
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função pra feriados

Mensagem por JoséQuintas »

Fiz a correção, eu tinha invertido na hora de montar os eclesiásticos, inverti os dois primeiros elementos.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder