Skip to content

Latest commit

 

History

History
118 lines (107 loc) · 4.51 KB

README.md

File metadata and controls

118 lines (107 loc) · 4.51 KB

Ponto Portaria 15.10/2009

Projeto em C# que calcula o débito, crédito e adicional noturno do dia, levando em conta as regras impostas pela portaria Nº 15.10/2009

Para calcular o crédito, débito e adicional noturno do dia, chamar o método

var horario = Regex.Split("13:15	17:55	18:55	23:00", @"\s+").Select(x => Convert.ToDateTime(x)).ToArray();
var batidas = Regex.Split("13:15	17:53	18:56	23:10", @"\s+").Select(x => Convert.ToDateTime(x)).ToArray();
var diaPonto = new CalculoPonto().CalculaDiaPonto(horario, batidas);
Console.WriteLine(diaPonto.Debito);//00:00:00
Console.WriteLine(diaPonto.Credito);//00:10:00
Console.WriteLine(diaPonto.AdicionalNoturno);//01:10:00

Para horários justificados

var horario = Regex.Split("13:15	17:55	18:55	23:00", @"\s+").Select(x => Convert.ToDateTime(x)).ToArray();
var batidas = new Batida[] {
	new Batida(Convert.ToDateTime("13:17"),BatidaTipo.Justificada),
	new Batida(Convert.ToDateTime("17:55"),BatidaTipo.Justificada),
	new Batida(Convert.ToDateTime("18:55"),BatidaTipo.Justificada),
	new Batida(Convert.ToDateTime("23:00"),BatidaTipo.Justificada),
};
var diaPonto = new CalculoPonto().CalculaDiaPonto(horario, batidasT);
Console.WriteLine(diaPonto.AdicionalNoturno);
//00:00:00

Calcular o mês todo e obter os totalizadores por semana(horas extras, faltas e adicionais noturnos)

var calculator =  new CalculoPonto();
List<DataPonto> pontos = new List<DataPonto>();

//Semana 1
pontos.Add(new DataPonto()
{
	Data = Convert.ToDateTime("01/10/2016"),
	Horario = horario,
	Batidas = Regex.Split("13:10	15:00	15:30	18:00	19:00	21:08	22:08	23:40", @"\s+").Select(x => new Batida(Convert.ToDateTime(x), BatidaTipo.Normal)).ToArray()
});//Debito 01:35, Credito 00:50, Adicional 01:32

pontos.Add(new DataPonto()
{
	Data = Convert.ToDateTime("02/10/2016"),
	Horario = horario,
	Batidas = Regex.Split("13:10	15:00	15:30	18:00	19:00	21:08	22:08	23:40", @"\s+").Select(x => new Batida(Convert.ToDateTime(x), BatidaTipo.Normal)).ToArray()
});//Debito 01:35, Credito 00:50, Adicional 01:32


//Semana 2
pontos.Add(new DataPonto()
{
	Data = Convert.ToDateTime("05/10/2016"),
	Horario = horario,
	Batidas = Regex.Split("13:17	17:55	18:55	23:00", @"\s+").Select(x => new Batida(Convert.ToDateTime(x), BatidaTipo.Normal)).ToArray()
});//Debito 00:00, Credito 00:00, Adicional 01:00
pontos.Add(new DataPonto()
{
	Data = Convert.ToDateTime("06/10/2016"),
	Horario = horario,
	Batidas = Regex.Split("13:17	17:55	18:55	23:00", @"\s+").Select(x => new Batida(Convert.ToDateTime(x), BatidaTipo.Normal)).ToArray()
});//Debito 00:00, Credito 00:00, Adicional 01:00
...
//Calcula do mês
var resultado = calculator.CalculaMes(pontos);//Opcionalmente posso passar a data inicial e final, serão adicionados automaticamente os dias entre o inicio e fim
//Calcula os Totalizadores
var totalizadores = new Totalizador().HoraSemanal(resultado);

Para dias com feriados

pontos.Add(new DataPonto()
{
	Data = Convert.ToDateTime("04/10/2016"),
	Horario = horario,
	TipoData = TipoData.Feriado,
	LegendaTipoHorario = "Feriado",
	Batidas = Regex.Split("13:17	17:55	18:55	23:00", @"\s+").Select(x => new Batida(Convert.ToDateTime(x), BatidaTipo.Normal)).ToArray()
});
//Serão calculadas horas 100%

Para aplicar a justificativa no período, executar antes de calcular as horas extras

Justificativa.AplicaJustificativa(pontos, "Viagem", Convert.ToDateTime("01/10/2016 07:30"), Convert.ToDateTime("01/10/2016 23:00"));

Para gerar o relatório no regime de horas extras

PontoReportDados dados = new PontoReportDados();
dados.Admissao = DateTime.Now;
dados.Cnpj = "00000000000000";
dados.Empresa = "Empresa 1";
dados.Funcao = "Programador";
dados.Funcionario = "Charles Michael Stein";
dados.DataInicio = Convert.ToDateTime("01/10/2016");
dados.DataFim = Convert.ToDateTime("31/10/2016");
List<DataPonto> pontos = new List<DataPonto>();
...
dados.Pontos = pontos;
var gerador = PdfReport.Gerador(PontoReportTipo.Semanal);
using (var stream = new FileStream("ponto.pdf", FileMode.Create))
{
	gerador.Write(new List<PontoReportDados>()
	{
		dados
	}, stream);
}

Features

  • Cálculo do crédito e débito
  • Aplica a tolerância dos 10 minutos no crédito e no débito e 5 minutos nos pontos
  • Cálculo de adicional noturno
  • Pontos justificados não somam no adicional noturno
  • Totalizador por regime de horas extras
  • Feriados e descanso remunerado com Hora extra 100%
  • Relatório PDF do funcionário no regime de horas extras
  • Suporte a Período justificado, que não conta como falta