Gracias @ocp001a
He encontrado otra solución espero que os sirva para calcular la fecha de vencimiento
Tener en cuenta que el formato de fechas es YYYY-MM-DD (año - mes - dia)
Los pasos para calcular las fechas son:
Sumar a la fecha inicio los dias (en este caso 30 dias)
Calculamos el numero de dias que hay entre la fecha resultante y el dia de pago en el mes actual del resultado y al del mes siguiente
Código PHP:
$finicio = "2003-01-15";
$dias = "30";
$diapago1 = "5";
echo '<p>Fecha inicio: '.$finicio.'</p>';
echo '<p>Dias: '.$dias.'</p>';
echo '<p>Dia de pago: '.$diapago1.'</p>';
$dias = $dias * 86400;
$fecharesultado = date('Y-m-d', strtotime($finicio) + $dias);
echo '<p>30 dias '.$fecharesultado.'</p>';
$xfecha = explode("-", $fecharesultado);
$fano = $xfecha[0];
$fmes = $xfecha[1];
$fdia = $xfecha[2];
$xtempfpagoa = $fano.'-'.$fmes.'-'.$diapago1;
$fmes = $fmes + 1;
$xtempfpagob = $fano.'-'.$fmes.'-'.$diapago1;
$datetime1 = new DateTime($fecharesultado);
$datetime2 = new DateTime($xtempfpagoa);
$intervala = $datetime1->diff($datetime2);
$difa = $intervala->format('%R%a');
$datetime1 = new DateTime($fecharesultado);
$datetime2 = new DateTime($xtempfpagob);
$intervalb = $datetime1->diff($datetime2);
$difb = $intervalb->format('%R%a');
$date = new DateTime($xtempfpagoa);
$xtempfpagoa = $date->format('Y-m-d');
$date = new DateTime($xtempfpagob);
$xtempfpagob = $date->format('Y-m-d');
echo '<p>dif A '.$difa.' -- '.$xtempfpagoa.'</p>';
echo '<p>dif B '.$difb.' -- '.$xtempfpagob.'</p>';
$numdifa = (float)$difa;
$numdifb = (float)$difb;
echo '<p>numero: '.$numdifa.'</p>';
echo '<p>numero: '.$numdifb.'</p>';
if ($numdifa == 0 && $numdifa == 0)
{
echo '<p>Es el mismo dia de vencimiento: '.$xtempfpagoa.'</p>';
}
else
{
if ($numdifa > 0)
{
echo '<p>La fecha de vencimiento será '.$xtempfpagoa.'</p>';
}
else
{
echo '<p>La fecha de vencimiento será '.$xtempfpagob.'</p>';
}
}