Browse Source

Fix search on dates on template invoices

Laurent Destailleur 7 years ago
parent
commit
1907b9c52d

+ 5 - 1
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 "<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>";
 
-		// First date of execution for cron
+		// Date next run
 		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);
 		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 '</td>';
 		print '</tr>';
 

+ 54 - 51
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 '<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.'">';
-		print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">';
-		$formother->select_year($year?$year:-1,'year',1, 20, 5);
+		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="search_month" value="'.$search_month.'">';
+		$formother->select_year($search_year?$search_year:-1,'search_year',1, 20, 5);
 		print '</td>';
 	}
-	// Date due
+	// Date next generation
 	if (! empty($arrayfields['f.date_when']['checked']))
 	{
 		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.'">';
-		print '<input class="flat" type="text" size="1" maxlength="2" name="month_date_when" value="'.$month_date_when.'">';
-		$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 '<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="search_month_date_when" value="'.$search_month_date_when.'">';
+		$formother->select_year($search_year_date_when?$search_year_date_when:-1,'search_year_date_when',1, 20, 5);
 		print '</td>';
 	}
 	// Extra fields
@@ -583,21 +583,24 @@ if ($resql)
 			if (! empty($arrayfields['f.nb_gen_done']['checked']))
 			{
 				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>';
 				if (! $i) $totalarray['nbfield']++;
 			}
+			// Date last generation
 			if (! empty($arrayfields['f.date_last_gen']['checked']))
 			{
 			   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>';
 			   if (! $i) $totalarray['nbfield']++;
 			}
+			// Date next generation
 			if (! empty($arrayfields['f.date_when']['checked']))
 			{
 			   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>');
+			   if ($objp->frequency > 0 && $objp->date_last_gen && $objp->date_last_gen < $now) print img_warning($langs->trans("Late"));
 			   print '</td>';
 			   if (! $i) $totalarray['nbfield']++;
 			}

+ 2 - 1
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] {

+ 2 - 1
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 {