No artigo de hoje, vamos mostrar uma função que foi desenvolvida para retornar o quinto dia útil do mês.
A lógica para desenvolver a rotina foi basicamente:
- Receber uma data por parâmetro, por exemplo, 20/05/2021
 - A partir disso, encontrar a primeira data do mês, por exemplo, 01/05/2021
 - Com isso, é feito um laço de repetição, até que atinja 5, e toda vez que a data não for válida (feriado ou fim de semana), irá diminuir 1 (nesse exemplo, vai pular os dias 01/05/2021 e 02/05/2021)
 - Por último, define a data de retorno para a função
 
Abaixo o código fonte desenvolvido, conforme lógica demonstrada acima:
//Bibliotecas
#Include "TOTVS.ch"
 
/*/{Protheus.doc} User Function zQuinto
Função que retorna o quinto dia útil de um mês
@type  Function
@author Atilio
@since 20/05/2021
@version version
@param dDataRef, Date, Data do mês de referência
@return dQuintoDia, Date, Data do quinto dia útil
@example
    dData := u_zQuinto(sToD("20210401"))
/*/
 
User Function zQuinto(dDataRef)
    Local aArea := GetArea()
    Local dQuintoDia
    Local dDataAux
    Local nDiaUtil := 1
    Default dDataRef := Date()
 
    //Define a data auxiliar como o primeiro dia do mês
    dDataAux := FirstDate(dDataRef)
 
    //Enquanto o dia útil for menor que 5
    While nDiaUtil < 5
        //Se for fim de semana ou feriado, subtrai um do contador do While
        If DataValida(dDataAux) != dDataAux
            nDiaUtil--
        EndIf
 
        //Incrementa um dia na data auxiliar
        dDataAux := DaySum(dDataAux, 1)
        nDiaUtil++
    EndDo
 
    //Define o quinto dia, conforme a data que finalizou no While
    dQuintoDia := DataValida(dDataAux) //dica do Jose Alberto, caso caia exatamente em um sábado ou feriado
 
    RestArea(aArea)
Return dQuintoDia
Bom pessoal, por hoje é só.
Abraços e até a próxima.
SHOW!!! SHOW!!!
Opa, obrigado pelo feedback jovem.
Abraços.
Sugiro que na linha 39 coloque
dQuintoDia := DataValida(dDataAux) // se por acaso cair exatamente no sabado ou feriado.
Opa, obrigado pela contribuição Jose, já atualizei o artigo.
Grande abraço.