diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php
index af81e797252..a3d93608ebf 100644
--- a/htdocs/compta/facture/fiche-rec.php
+++ b/htdocs/compta/facture/fiche-rec.php
@@ -116,6 +116,8 @@ $permissionnote = $user->rights->facture->creer; // Used by the include of actio
$permissiondellink=$user->rights->facture->creer; // Used by the include of actions_dellink.inc.php
$permissiontoedit = $user->rights->facture->creer; // Used by the include of actions_lineupdonw.inc.php
+$now = dol_now();
+
/*
* Actions
@@ -1131,7 +1133,7 @@ if ($action == 'create')
print " ".$form->selectarray('unit_frequency', array('d'=>$langs->trans('Day'), 'm'=>$langs->trans('Month'), 'y'=>$langs->trans('Year')), (GETPOST('unit_frequency')?GETPOST('unit_frequency'):'m'));
print "";
- // First date of execution for cron
+ // Date next run
print "
".$langs->trans('NextDateToExecution')." ";
$date_next_execution = isset($date_next_execution) ? $date_next_execution : (GETPOST('remonth') ? dol_mktime(12, 0, 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear')) : -1);
print $form->select_date($date_next_execution, '', 1, 1, '', "add", 1, 1, 1);
@@ -1531,6 +1533,8 @@ else
{
print $form->editfieldval($langs->trans("NextDateToExecution"), 'date_when', $object->date_when, $object, $user->rights->facture->creer, 'day', $object->date_when, null, '', '', 0, 'strikeIfMaxNbGenReached');
}
+ //var_dump(dol_print_date($object->date_when+60, 'dayhour').' - '.dol_print_date($now, 'dayhour'));
+ if ($action != 'editdate_when' && $object->frequency > 0 && $object->date_when && $object->date_when < $now) print img_warning($langs->trans("Late"));
print ' ';
print ' ';
diff --git a/htdocs/compta/facture/invoicetemplate_list.php b/htdocs/compta/facture/invoicetemplate_list.php
index d3a7c01b4c0..fe4a8a5c7cd 100644
--- a/htdocs/compta/facture/invoicetemplate_list.php
+++ b/htdocs/compta/facture/invoicetemplate_list.php
@@ -72,12 +72,12 @@ $search_montant_vat=GETPOST('search_montant_vat');
$search_montant_ttc=GETPOST('search_montant_ttc');
$search_payment_mode=GETPOST('search_payment_mode');
$search_payment_term=GETPOST('search_payment_term');
-$day=GETPOST('day');
-$year=GETPOST('year');
-$month=GETPOST('month');
-$day_date_when=GETPOST('day_date_when');
-$year_date_when=GETPOST('year_date_when');
-$month_date_when=GETPOST('month_date_when');
+$search_day=GETPOST('search_day','int');
+$search_year=GETPOST('search_year','int');
+$search_month=GETPOST('search_month','int');
+$search_day_date_when=GETPOST('search_day_date_when','int');
+$search_year_date_when=GETPOST('search_year_date_when','int');
+$search_month_date_when=GETPOST('search_month_date_when','int');
$search_recurring=GETPOST('search_recurring','int');
$search_frequency=GETPOST('search_frequency','alpha');
$search_unit_frequency=GETPOST('search_unit_frequency','alpha');
@@ -172,12 +172,12 @@ if (empty($reshook))
$search_montant_ttc='';
$search_payment_mode='';
$search_payment_term='';
- $day='';
- $year='';
- $month='';
- $day_date_when='';
- $year_date_when='';
- $month_date_when='';
+ $search_day='';
+ $search_year='';
+ $search_month='';
+ $search_day_date_when='';
+ $search_year_date_when='';
+ $search_month_date_when='';
$search_recurring='';
$search_frequency='';
$search_unit_frequency='';
@@ -239,38 +239,38 @@ if (! empty($search_payment_term) && $search_payment_term != '-1') $sql .= nat
if ($search_recurring == '1') $sql .= ' AND f.frequency > 0';
if ($search_recurring == '0') $sql .= ' AND (f.frequency IS NULL or f.frequency = 0)';
if ($search_frequency != '') $sql .= natural_search('f.frequency', $search_frequency, 1);
-if ($search_unit_frequency != '') $sql .= natural_search('f.unit_frequency', $search_unit_frequency);
+if ($search_unit_frequency != '') $sql .= ' AND f.frequency > 0'.natural_search('f.unit_frequency', $search_unit_frequency);
if ($search_status != '' && $search_status >= -1)
{
if ($search_status == 0) $sql.= ' AND frequency = 0 AND suspended = 0';
if ($search_status == 1) $sql.= ' AND frequency != 0 AND suspended = 0';
if ($search_status == -1) $sql.= ' AND suspended = 1';
}
-if ($month > 0)
+if ($search_month > 0)
{
- if ($year > 0 && empty($day))
- $sql.= " AND f.date_last_gen BETWEEN '".$db->idate(dol_get_first_day($year,$month,false))."' AND '".$db->idate(dol_get_last_day($year,$month,false))."'";
- else if ($year > 0 && ! empty($day))
- $sql.= " AND f.date_last_gen BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month, $day, $year))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month, $day, $year))."'";
+ if ($search_year > 0 && empty($search_day))
+ $sql.= " AND f.date_last_gen BETWEEN '".$db->idate(dol_get_first_day($search_year,$search_month,false))."' AND '".$db->idate(dol_get_last_day($search_year,$search_month,false))."'";
+ else if ($search_year > 0 && ! empty($search_day))
+ $sql.= " AND f.date_last_gen BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $search_month, $search_day, $search_year))."' AND '".$db->idate(dol_mktime(23, 59, 59, $search_month, $search_day, $search_year))."'";
else
- $sql.= " AND date_format(f.date_last_gen, '%m') = '".$month."'";
+ $sql.= " AND date_format(f.date_last_gen, '%m') = '".$db->escape($search_month)."'";
}
-else if ($year > 0)
+else if ($search_year > 0)
{
- $sql.= " AND f.date_last_gen BETWEEN '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'";
+ $sql.= " AND f.date_last_gen BETWEEN '".$db->idate(dol_get_first_day($search_year,1,false))."' AND '".$db->idate(dol_get_last_day($search_year,12,false))."'";
}
-if ($month_date_when > 0)
+if ($search_month_date_when > 0)
{
- if ($year_date_when > 0 && empty($day_date_when))
- $sql.= " AND f.date_when BETWEEN '".$db->idate(dol_get_first_day($year_date_when,$month_date_when,false))."' AND '".$db->idate(dol_get_last_day($year_date_when,$month_date_when,false))."'";
- else if ($year_date_when > 0 && ! empty($day_date_when))
- $sql.= " AND f.date_date_when_reglement BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month_date_when, $day_date_when, $year_date_when))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month_date_when, $day_date_when, $year_date_when))."'";
+ if ($search_year_date_when > 0 && empty($search_day_date_when))
+ $sql.= " AND f.date_when BETWEEN '".$db->idate(dol_get_first_day($search_year_date_when,$search_month_date_when,false))."' AND '".$db->idate(dol_get_last_day($search_year_date_when,$search_month_date_when,false))."'";
+ else if ($search_year_date_when > 0 && ! empty($search_day_date_when))
+ $sql.= " AND f.date_date_when_reglement BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $search_month_date_when, $search_day_date_when, $search_year_date_when))."' AND '".$db->idate(dol_mktime(23, 59, 59, $search_month_date_when, $search_day_date_when, $search_year_date_when))."'";
else
- $sql.= " AND date_format(f.date_when, '%m') = '".$month_date_when."'";
+ $sql.= " AND date_format(f.date_when, '%m') = '".$db->escape($search_month_date_when)."'";
}
-else if ($year_date_when > 0)
+else if ($search_year_date_when > 0)
{
- $sql.= " AND f.date_when BETWEEN '".$db->idate(dol_get_first_day($year_date_when,1,false))."' AND '".$db->idate(dol_get_last_day($year_date_when,12,false))."'";
+ $sql.= " AND f.date_when BETWEEN '".$db->idate(dol_get_first_day($search_year_date_when,1,false))."' AND '".$db->idate(dol_get_last_day($search_year_date_when,12,false))."'";
}
$nbtotalofrecords = '';
@@ -291,26 +291,26 @@ if ($resql)
$param='';
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage);
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
- if ($socid) $param.='&socid='.urlencode($socid);
- if ($day) $param.='&day='.urlencode($day);
- if ($month) $param.='&month='.urlencode($month);
- if ($year) $param.='&year=' .urlencode($year);
- if ($day_date_when) $param.='&day_date_when='.urlencode($day_date_when);
- if ($month_date_when) $param.='&month_date_when='.urlencode($month_date_when);
- if ($year_date_when) $param.='&year_date_when=' .urlencode($year_date_when);
- if ($search_ref) $param.='&search_ref=' .urlencode($search_ref);
- if ($search_societe) $param.='&search_societe=' .urlencode($search_societe);
+ if ($socid) $param.='&socid='.urlencode($socid);
+ if ($search_day) $param.='&search_day='.urlencode($search_day);
+ if ($search_month) $param.='&search_month='.urlencode($search_month);
+ if ($search_year) $param.='&search_year=' .urlencode($search_year);
+ if ($search_day_date_when) $param.='&search_day_date_when='.urlencode($search_day_date_when);
+ if ($search_month_date_when) $param.='&search_month_date_when='.urlencode($search_month_date_when);
+ if ($search_year_date_when) $param.='&search_year_date_when=' .urlencode($search_year_date_when);
+ if ($search_ref) $param.='&search_ref=' .urlencode($search_ref);
+ if ($search_societe) $param.='&search_societe=' .urlencode($search_societe);
if ($search_montant_ht != '') $param.='&search_montant_ht=' .urlencode($search_montant_ht);
if ($search_montant_vat != '') $param.='&search_montant_vat='.urlencode($search_montant_vat);
if ($search_montant_ttc != '') $param.='&search_montant_ttc='.urlencode($search_montant_ttc);
if ($search_payment_mode != '') $param.='&search_payment_mode='.urlencode($search_payment_mode);
if ($search_payment_type != '') $param.='&search_payment_type='.urlencode($search_payment_type);
if ($search_recurring != '' && $search_recurrning != '-1') $param.='&search_recurring=' .urlencode($search_recurring);
- if ($search_frequency > 0) $param.='&search_frequency=' .urlencode($search_frequency);
- if ($search_unit_frequency > 0) $param.='&search_unit_frequency='.urlencode($search_unit_frequency);
+ if ($search_frequency > 0) $param.='&search_frequency=' .urlencode($search_frequency);
+ if ($search_unit_frequency != '') $param.='&search_unit_frequency='.urlencode($search_unit_frequency);
if ($search_status != '') $param.='&search_status='.urlencode($search_status);
- if ($option) $param.="&option=".urlencode($option);
- if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
+ if ($option) $param.="&option=".urlencode($option);
+ if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
// Add $param from extra fields
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
@@ -420,18 +420,18 @@ if ($resql)
if (! empty($arrayfields['f.date_last_gen']['checked']))
{
print '';
- if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ' ';
- print ' ';
- $formother->select_year($year?$year:-1,'year',1, 20, 5);
+ if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ' ';
+ print ' ';
+ $formother->select_year($search_year?$search_year:-1,'search_year',1, 20, 5);
print ' ';
}
- // Date due
+ // Date next generation
if (! empty($arrayfields['f.date_when']['checked']))
{
print '';
- if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ' ';
- print ' ';
- $formother->select_year($year_date_when?$year_date_when:-1,'year_date_when',1, 20, 5);
+ if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ' ';
+ print ' ';
+ $formother->select_year($search_year_date_when?$search_year_date_when:-1,'search_year_date_when',1, 20, 5);
print ' ';
}
// Extra fields
@@ -583,21 +583,24 @@ if ($resql)
if (! empty($arrayfields['f.nb_gen_done']['checked']))
{
print '';
- print ($objp->frequency ? $objp->nb_gen_done.($objp->nb_gen_max>0?' / '. $objp->nb_gen_max:'') : ''.$langs->trans('NA').' ');
+ print ($objp->frequency > 0 ? $objp->nb_gen_done.($objp->nb_gen_max>0?' / '. $objp->nb_gen_max:'') : ''.$langs->trans('NA').' ');
print ' ';
if (! $i) $totalarray['nbfield']++;
}
+ // Date last generation
if (! empty($arrayfields['f.date_last_gen']['checked']))
{
print '';
- print ($objp->frequency ? dol_print_date($db->jdate($objp->date_last_gen),'day') : ''.$langs->trans('NA').' ');
+ print ($objp->frequency > 0 ? dol_print_date($db->jdate($objp->date_last_gen),'day') : ''.$langs->trans('NA').' ');
print ' ';
if (! $i) $totalarray['nbfield']++;
}
+ // Date next generation
if (! empty($arrayfields['f.date_when']['checked']))
{
print '';
print ($objp->frequency ? ($invoicerectmp->isMaxNbGenReached()?'':'').dol_print_date($db->jdate($objp->date_when),'day').($invoicerectmp->isMaxNbGenReached()?' ':'') : ''.$langs->trans('NA').' ');
+ if ($objp->frequency > 0 && $objp->date_last_gen && $objp->date_last_gen < $now) print img_warning($langs->trans("Late"));
print ' ';
if (! $i) $totalarray['nbfield']++;
}
diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php
index 71c4e0a39a5..0709a2a0f80 100644
--- a/htdocs/theme/eldy/style.css.php
+++ b/htdocs/theme/eldy/style.css.php
@@ -277,7 +277,8 @@ input.select2-input {
.liste_titre input[name=month_date_when], .liste_titre input[name=monthvalid], .liste_titre input[name=search_ordermonth], .liste_titre input[name=search_deliverymonth],
.liste_titre input[name=search_smonth], .liste_titre input[name=search_month], .liste_titre input[name=search_emonth], .liste_titre input[name=smonth], .liste_titre input[name=month], .liste_titre select[name=month],
-.liste_titre input[name=month_lim], .liste_titre input[name=month_start], .liste_titre input[name=month_end], .liste_titre input[name=month_create] {
+.liste_titre input[name=month_lim], .liste_titre input[name=month_start], .liste_titre input[name=month_end], .liste_titre input[name=month_create],
+.liste_titre input[name=search_day_date_when], .liste_titre input[name=search_month_date_when], .liste_titre input[name=search_year_date_when] {
margin-right: 4px;
}
input[type=submit] {
diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php
index 325a6f86a36..eb4791bb47e 100644
--- a/htdocs/theme/md/style.css.php
+++ b/htdocs/theme/md/style.css.php
@@ -290,7 +290,8 @@ textarea.cke_source:focus
.liste_titre input[name=month_date_when], .liste_titre input[name=monthvalid], .liste_titre input[name=search_ordermonth], .liste_titre input[name=search_deliverymonth],
.liste_titre input[name=search_smonth], .liste_titre input[name=search_month], .liste_titre input[name=search_emonth], .liste_titre input[name=smonth], .liste_titre input[name=month],
-.liste_titre input[name=month_lim], .liste_titre input[name=month_start], .liste_titre input[name=month_end], .liste_titre input[name=month_create] {
+.liste_titre input[name=month_lim], .liste_titre input[name=month_start], .liste_titre input[name=month_end], .liste_titre input[name=month_create],
+.liste_titre input[name=search_day_date_when], .liste_titre input[name=search_month_date_when], .liste_titre input[name=search_year_date_when] {
margin-right: 4px;
}
input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select {