Codeigniter - Ayuda con algoritmo

   
Vista:

Ayuda con algoritmo

Publicado por javier jaguila@cdc.com.mx (1 intervención) el 09/03/2018 21:28:20
Hola, requiero de su apoyo para un problema que tengo .

tengo un proyecto hecho en Code Igniter 2, necesito calcular los días que trabajo un empleado un mes antes,

por ejemplo, en este mes de Marzo 2018, voy a pagar el sueldo de este mismo mes, sin embargo, puede que existan empleados que entraron a trabajar en febrero y necesito calcular cuantos dias trabajaron el mes pasado, y esos días sumarselos a este mes en curso, por ejemplo si alguien entro el 25 de Febrero, necesito que el sistema tome en cuenta los días trabajados desde el 25 de Febrero al día 30 (ya se que febrero tiene 28 días pero por razones administrativas, el sistema contempla todos los meses como si tuvieran 30 días) y esos días trabajados el mes anterior se los sume a los 30 días de Marzo, les anexo el codigo que tengo hecho pero me esta dando bastantes problemas.

nota: este sistema paga sueldos de forma mensual, no quincenal ni semanal, por eso la duda que tengo en cuanto a como sumar los días de un mes anterior.

la variable $alta es la fecha en la cual ingreso un empleado

la variable $fecha_ultimo_pago es la fecha en la que se genero el pago de sueldos del mes anterior, esta fecha no es fija, el pago de sueldos lo pueden realizar el día 15, 16, 20, 21, cualquier día del mes.



$alta = strtotime($comisionista->fecha_ingreso);

if ($fecha_ultimo_pago != NULL && $alta >= $fecha_ultimo_pago)
{

$dias = 0;
//Para descontar dias
if (date('Y-m', $alta) == date('Y-m'))
$dias = -1 * ($alta - strtotime(date('Y-m-1'))) / (60 * 60 * 24);
else
{
// $dias = (strtotime(mktime(0, 0, 0, (int) date('n'), 1, date('Y')) - $alta )) / (60 * 60 * 24);

// $monthbefore = strtotime(mktime(0, 0, 0, ((int) date('m')-1), 1, date('Y')));*/

// $dias = date("F", mktime(0, 0, 0, (int) date('n'), 1, date('Y')) - $alta ) / (60 * 60 * 24);

$diap = $alta;
$diau = strtotime(date('Y-m-30'));

$intervalo = date_diff(date_create($diap), date_create($diau));
$dias = strtotime(date($intervalo)) / 86400;

$monthbefore = date("F", mktime(0, 0, 0, ((int) date('m')-1), 1, date('Y')));
// $monthbefore = strtotime('Y-m-d', )


$diasma = date ('t',$monthbefore );
if($diasma > 30)
$dias = $dias-1;
}

$adicional = (float) ( $comisionista->sueldo_total / 30) * $dias;



Quedo atento a sus comentarios.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Revisar política de publicidad