Fix search on dates on template invoices

This commit is contained in:
Laurent Destailleur 2018-02-27 19:03:14 +01:00
parent bca2927da0
commit 1907b9c52d
4 changed files with 63 additions and 54 deletions

View File

@ -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 $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 $permissiontoedit = $user->rights->facture->creer; // Used by the include of actions_lineupdonw.inc.php
$now = dol_now();
/* /*
* Actions * Actions
@ -1131,7 +1133,7 @@ if ($action == 'create')
print "<input type='text' name='frequency' value='".GETPOST('frequency', 'int')."' size='4' />&nbsp;".$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 "<input type='text' name='frequency' value='".GETPOST('frequency', 'int')."' size='4' />&nbsp;".$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 "</td></tr>"; print "</td></tr>";
// First date of execution for cron // Date next run
print "<tr><td>".$langs->trans('NextDateToExecution')."</td><td>"; print "<tr><td>".$langs->trans('NextDateToExecution')."</td><td>";
$date_next_execution = isset($date_next_execution) ? $date_next_execution : (GETPOST('remonth') ? dol_mktime(12, 0, 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear')) : -1); $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); 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'); 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 '</td>'; print '</td>';
print '</tr>'; print '</tr>';

View File

@ -72,12 +72,12 @@ $search_montant_vat=GETPOST('search_montant_vat');
$search_montant_ttc=GETPOST('search_montant_ttc'); $search_montant_ttc=GETPOST('search_montant_ttc');
$search_payment_mode=GETPOST('search_payment_mode'); $search_payment_mode=GETPOST('search_payment_mode');
$search_payment_term=GETPOST('search_payment_term'); $search_payment_term=GETPOST('search_payment_term');
$day=GETPOST('day'); $search_day=GETPOST('search_day','int');
$year=GETPOST('year'); $search_year=GETPOST('search_year','int');
$month=GETPOST('month'); $search_month=GETPOST('search_month','int');
$day_date_when=GETPOST('day_date_when'); $search_day_date_when=GETPOST('search_day_date_when','int');
$year_date_when=GETPOST('year_date_when'); $search_year_date_when=GETPOST('search_year_date_when','int');
$month_date_when=GETPOST('month_date_when'); $search_month_date_when=GETPOST('search_month_date_when','int');
$search_recurring=GETPOST('search_recurring','int'); $search_recurring=GETPOST('search_recurring','int');
$search_frequency=GETPOST('search_frequency','alpha'); $search_frequency=GETPOST('search_frequency','alpha');
$search_unit_frequency=GETPOST('search_unit_frequency','alpha'); $search_unit_frequency=GETPOST('search_unit_frequency','alpha');
@ -172,12 +172,12 @@ if (empty($reshook))
$search_montant_ttc=''; $search_montant_ttc='';
$search_payment_mode=''; $search_payment_mode='';
$search_payment_term=''; $search_payment_term='';
$day=''; $search_day='';
$year=''; $search_year='';
$month=''; $search_month='';
$day_date_when=''; $search_day_date_when='';
$year_date_when=''; $search_year_date_when='';
$month_date_when=''; $search_month_date_when='';
$search_recurring=''; $search_recurring='';
$search_frequency=''; $search_frequency='';
$search_unit_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 == '1') $sql .= ' AND f.frequency > 0';
if ($search_recurring == '0') $sql .= ' AND (f.frequency IS NULL or 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_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 != '' && $search_status >= -1)
{ {
if ($search_status == 0) $sql.= ' AND frequency = 0 AND suspended = 0'; 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 frequency != 0 AND suspended = 0';
if ($search_status == -1) $sql.= ' AND suspended = 1'; if ($search_status == -1) $sql.= ' AND suspended = 1';
} }
if ($month > 0) if ($search_month > 0)
{ {
if ($year > 0 && empty($day)) if ($search_year > 0 && empty($search_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))."'"; $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 ($year > 0 && ! empty($day)) else if ($search_year > 0 && ! empty($search_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))."'"; $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 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)) if ($search_year_date_when > 0 && empty($search_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))."'"; $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 ($year_date_when > 0 && ! empty($day_date_when)) 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, $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))."'"; $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 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 = ''; $nbtotalofrecords = '';
@ -292,12 +292,12 @@ if ($resql)
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage);
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
if ($socid) $param.='&socid='.urlencode($socid); if ($socid) $param.='&socid='.urlencode($socid);
if ($day) $param.='&day='.urlencode($day); if ($search_day) $param.='&search_day='.urlencode($search_day);
if ($month) $param.='&month='.urlencode($month); if ($search_month) $param.='&search_month='.urlencode($search_month);
if ($year) $param.='&year=' .urlencode($year); if ($search_year) $param.='&search_year=' .urlencode($search_year);
if ($day_date_when) $param.='&day_date_when='.urlencode($day_date_when); if ($search_day_date_when) $param.='&search_day_date_when='.urlencode($search_day_date_when);
if ($month_date_when) $param.='&month_date_when='.urlencode($month_date_when); if ($search_month_date_when) $param.='&search_month_date_when='.urlencode($search_month_date_when);
if ($year_date_when) $param.='&year_date_when=' .urlencode($year_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_ref) $param.='&search_ref=' .urlencode($search_ref);
if ($search_societe) $param.='&search_societe=' .urlencode($search_societe); if ($search_societe) $param.='&search_societe=' .urlencode($search_societe);
if ($search_montant_ht != '') $param.='&search_montant_ht=' .urlencode($search_montant_ht); if ($search_montant_ht != '') $param.='&search_montant_ht=' .urlencode($search_montant_ht);
@ -307,7 +307,7 @@ if ($resql)
if ($search_payment_type != '') $param.='&search_payment_type='.urlencode($search_payment_type); 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_recurring != '' && $search_recurrning != '-1') $param.='&search_recurring=' .urlencode($search_recurring);
if ($search_frequency > 0) $param.='&search_frequency=' .urlencode($search_frequency); 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_unit_frequency != '') $param.='&search_unit_frequency='.urlencode($search_unit_frequency);
if ($search_status != '') $param.='&search_status='.urlencode($search_status); if ($search_status != '') $param.='&search_status='.urlencode($search_status);
if ($option) $param.="&option=".urlencode($option); if ($option) $param.="&option=".urlencode($option);
if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss); if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
@ -420,18 +420,18 @@ if ($resql)
if (! empty($arrayfields['f.date_last_gen']['checked'])) if (! empty($arrayfields['f.date_last_gen']['checked']))
{ {
print '<td class="liste_titre" align="center">'; print '<td class="liste_titre" align="center">';
if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day" value="'.$day.'">'; if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="search_day" value="'.$search_day.'">';
print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">'; print '<input class="flat" type="text" size="1" maxlength="2" name="search_month" value="'.$search_month.'">';
$formother->select_year($year?$year:-1,'year',1, 20, 5); $formother->select_year($search_year?$search_year:-1,'search_year',1, 20, 5);
print '</td>'; print '</td>';
} }
// Date due // Date next generation
if (! empty($arrayfields['f.date_when']['checked'])) if (! empty($arrayfields['f.date_when']['checked']))
{ {
print '<td class="liste_titre" align="center">'; print '<td class="liste_titre" align="center">';
if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day_date_when" value="'.$day_date_when.'">'; if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="search_day_date_when" value="'.$search_day_date_when.'">';
print '<input class="flat" type="text" size="1" maxlength="2" name="month_date_when" value="'.$month_date_when.'">'; print '<input class="flat" type="text" size="1" maxlength="2" name="search_month_date_when" value="'.$search_month_date_when.'">';
$formother->select_year($year_date_when?$year_date_when:-1,'year_date_when',1, 20, 5); $formother->select_year($search_year_date_when?$search_year_date_when:-1,'search_year_date_when',1, 20, 5);
print '</td>'; print '</td>';
} }
// Extra fields // Extra fields
@ -583,21 +583,24 @@ if ($resql)
if (! empty($arrayfields['f.nb_gen_done']['checked'])) if (! empty($arrayfields['f.nb_gen_done']['checked']))
{ {
print '<td align="center">'; print '<td align="center">';
print ($objp->frequency ? $objp->nb_gen_done.($objp->nb_gen_max>0?' / '. $objp->nb_gen_max:'') : '<span class="opacitymedium">'.$langs->trans('NA').'</span>'); print ($objp->frequency > 0 ? $objp->nb_gen_done.($objp->nb_gen_max>0?' / '. $objp->nb_gen_max:'') : '<span class="opacitymedium">'.$langs->trans('NA').'</span>');
print '</td>'; print '</td>';
if (! $i) $totalarray['nbfield']++; if (! $i) $totalarray['nbfield']++;
} }
// Date last generation
if (! empty($arrayfields['f.date_last_gen']['checked'])) if (! empty($arrayfields['f.date_last_gen']['checked']))
{ {
print '<td align="center">'; print '<td align="center">';
print ($objp->frequency ? dol_print_date($db->jdate($objp->date_last_gen),'day') : '<span class="opacitymedium">'.$langs->trans('NA').'</span>'); print ($objp->frequency > 0 ? dol_print_date($db->jdate($objp->date_last_gen),'day') : '<span class="opacitymedium">'.$langs->trans('NA').'</span>');
print '</td>'; print '</td>';
if (! $i) $totalarray['nbfield']++; if (! $i) $totalarray['nbfield']++;
} }
// Date next generation
if (! empty($arrayfields['f.date_when']['checked'])) if (! empty($arrayfields['f.date_when']['checked']))
{ {
print '<td align="center">'; print '<td align="center">';
print ($objp->frequency ? ($invoicerectmp->isMaxNbGenReached()?'<strike>':'').dol_print_date($db->jdate($objp->date_when),'day').($invoicerectmp->isMaxNbGenReached()?'</strike>':'') : '<span class="opacitymedium">'.$langs->trans('NA').'</span>'); print ($objp->frequency ? ($invoicerectmp->isMaxNbGenReached()?'<strike>':'').dol_print_date($db->jdate($objp->date_when),'day').($invoicerectmp->isMaxNbGenReached()?'</strike>':'') : '<span class="opacitymedium">'.$langs->trans('NA').'</span>');
if ($objp->frequency > 0 && $objp->date_last_gen && $objp->date_last_gen < $now) print img_warning($langs->trans("Late"));
print '</td>'; print '</td>';
if (! $i) $totalarray['nbfield']++; if (! $i) $totalarray['nbfield']++;
} }

View File

@ -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=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=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; margin-right: 4px;
} }
input[type=submit] { input[type=submit] {

View File

@ -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=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=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; margin-right: 4px;
} }
input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select { input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select {