diff --git a/htdocs/admin/mails_templates.php b/htdocs/admin/mails_templates.php index 3000612514a..356f52061f6 100644 --- a/htdocs/admin/mails_templates.php +++ b/htdocs/admin/mails_templates.php @@ -125,17 +125,30 @@ $formmail=new FormMail($db); if (empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) { $tmp=FormMail::getAvailableSubstitKey('formemail'); - $tmp['__(AnyTranslationKey)__']='__(AnyTranslationKey)__'; - $helpsubstit = $langs->trans("AvailableVariables").':
'.implode('
', $tmp); - $helpsubstitforlines = $langs->trans("AvailableVariables").':
'.implode('
', $tmp); + $tmp['__(AnyTranslationKey)__']='Translation'; + $helpsubstit = $langs->trans("AvailableVariables").':
'; + $helpsubstitforlines = $langs->trans("AvailableVariables").':
'; + foreach($tmp as $key => $val) + { + $helpsubstit.=$key.' -> '.$val.'
'; + $helpsubstitforlines.=$key.' -> '.$val.'
'; + } } else { $tmp=FormMail::getAvailableSubstitKey('formemailwithlines'); - $tmp['__(AnyTranslationKey)__']='__(AnyTranslationKey)__'; - $helpsubstit = $langs->trans("AvailableVariables").':
'.implode('
', $tmp); + $tmp['__(AnyTranslationKey)__']='Translation'; + $helpsubstit = $langs->trans("AvailableVariables").':
'; + $helpsubstitforlines = $langs->trans("AvailableVariables").':
'; + foreach($tmp as $key => $val) + { + $helpsubstit.=$key.' -> '.$val.'
'; + } $tmp=FormMail::getAvailableSubstitKey('formemailforlines'); - $helpsubstitforlines = $langs->trans("AvailableVariables").':
'.implode('
', $tmp); + foreach($tmp as $key => $val) + { + $helpsubstitforlines.=$key.' -> '.$val.'
'; + } } diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 904bd519f76..07a620963da 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -2243,14 +2243,17 @@ else $formmail->withcancel = 1; // Array of substitutions $formmail->setSubstitFromObject($object); + $dateplannedstart=''; $datenextexpiration=''; foreach($object->lines as $line) { - if ($line->statut != 4) continue; - if ($line->date_fin_prevue > $datenextexpiration) $datenextexpiration = $line->date_fin_prevue; + if ($line->date_ouverture_prevue > $dateplannedstart) $dateplannedstart = $line->date_ouverture_prevue; + if ($line->statut == 4 && $line->date_fin_prevue && (! $datenextexpiration || $line->date_fin_prevue < $datenextexpiration)) $datenextexpiration = $line->date_fin_prevue; } - $formmail->substit['__CONTRACT_NEXT_EXPIRATION_DATE__'] = dol_print_date($datenextexpiration, 'dayrfc'); - $formmail->substit['__CONTRACT_NEXT_EXPIRATION_DATETIME__'] = dol_print_date($datenextexpiration, 'standard'); + $formmail->substit['__CONTRACT_HIGHEST_PLANNED_START_DATE__'] = dol_print_date($dateplannedstart, 'dayrfc'); + $formmail->substit['__CONTRACT_HIGHEST_PLANNED_START_DATETIME__'] = dol_print_date($dateplannedstart, 'standard'); + $formmail->substit['__CONTRACT_LOWEST_EXPIRATION_DATE__'] = dol_print_date($datenextexpiration, 'dayrfc'); + $formmail->substit['__CONTRACT_LOWEST_EXPIRATION_DATETIME__'] = dol_print_date($datenextexpiration, 'standard'); $formmail->substit['__PERSONALIZED__']=''; // deprecated $formmail->substit['__CONTACTCIVNAME__']=''; diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index 144cba07779..fddd6889515 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -351,14 +351,17 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO // Add specific substitution for contracts if (is_object($object) && $object->element == 'contrat' && is_array($object->lines)) { + $dateplannedstart=''; $datenextexpiration=''; foreach($object->lines as $line) { - if ($line->statut != 4) continue; - if ($line->date_fin_prevue > $datenextexpiration) $datenextexpiration = $line->date_fin_prevue; + if ($line->date_ouverture_prevue > $dateplannedstart) $dateplannedstart = $line->date_ouverture_prevue; + if ($line->statut == 4 && $line->date_fin_prevue && (! $datenextexpiration || $line->date_fin_prevue < $datenextexpiration)) $datenextexpiration = $line->date_fin_prevue; } - $substitutionarray['__CONTRACT_NEXT_EXPIRATION_DATE__'] = dol_print_date($datenextexpiration, 'dayrfc'); - $substitutionarray['__CONTRACT_NEXT_EXPIRATION_DATETIME__'] = dol_print_date($datenextexpiration, 'standard'); + $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATE__'] = dol_print_date($dateplannedstart, 'dayrfc'); + $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATETIME__'] = dol_print_date($dateplannedstart, 'standard'); + $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATE__'] = dol_print_date($datenextexpiration, 'dayrfc'); + $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATETIME__'] = dol_print_date($datenextexpiration, 'standard'); } $parameters=array('mode'=>'formemail'); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 2b8ab5ebf7a..aa8c74026ff 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5244,8 +5244,10 @@ function getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $ob $substitutionarray['__PROJECT_REF__'] = '__PROJECT_REF__'; $substitutionarray['__PROJECT_NAME__'] = '__PROJECT_REF__'; - $substitutionarray['__CONTRACT_NEXT_EXPIRATION_DATE__'] = 'Date for next expired service'; - $substitutionarray['__CONTRACT_NEXT_EXPIRATION_DATETIME__'] = 'Date and hour for next expired service'; + $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATE__'] = 'Highest date planned for a service start'; + $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATETIME__'] = 'Highest date and hour planned for service start'; + $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATE__'] = 'Lowest data for planned expiration of service'; + $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATETIME__'] = 'Lowest date and hour for planned expiration of service'; $substitutionarray['__ONLINE_PAYMENT_URL__'] = 'LinkToPayOnlineIfApplicable'; $substitutionarray['__SECUREKEYPAYMENT__'] = 'Security key (if key is not unique per record)'; @@ -5285,8 +5287,10 @@ function getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $ob } } - $substitutionarray['__CONTRACT_NEXT_EXPIRATION_DATE__'] = 'TODO'; - $substitutionarray['__CONTRACT_NEXT_EXPIRATION_DATETIME__'] = 'TODO'; + $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATE__'] = 'TODO'; + $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATETIME__'] = 'TODO'; + $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATE__'] = 'TODO'; + $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATETIME__'] = 'TODO'; $substitutionarray['__ONLINE_PAYMENT_URL__'] = 'TODO'; } diff --git a/htdocs/core/tpl/card_presend.tpl.php b/htdocs/core/tpl/card_presend.tpl.php index 5273a761d4e..af6e3699f39 100644 --- a/htdocs/core/tpl/card_presend.tpl.php +++ b/htdocs/core/tpl/card_presend.tpl.php @@ -144,16 +144,17 @@ if ($action == 'presend') // Add specific substitution for contracts if (is_object($object) && $object->element == 'contrat' && is_array($object->lines)) { - $datenextexpiration = ''; - foreach ($object->lines as $line) + $dateplannedstart=''; + $datenextexpiration=''; + foreach($object->lines as $line) { - if ($line->statut != 4) - continue; - if ($line->date_fin_prevue > $datenextexpiration) - $datenextexpiration = $line->date_fin_prevue; + if ($line->date_ouverture_prevue > $dateplannedstart) $dateplannedstart = $line->date_ouverture_prevue; + if ($line->statut == 4 && $line->date_fin_prevue && (! $datenextexpiration || $line->date_fin_prevue < $datenextexpiration)) $datenextexpiration = $line->date_fin_prevue; } - $substitutionarray['__CONTRACT_NEXT_EXPIRATION_DATE__'] = dol_print_date($datenextexpiration, 'dayrfc'); - $substitutionarray['__CONTRACT_NEXT_EXPIRATION_DATETIME__'] = dol_print_date($datenextexpiration, 'standard'); + $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATE__'] = dol_print_date($dateplannedstart, 'dayrfc'); + $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATETIME__'] = dol_print_date($dateplannedstart, 'standard'); + $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATE__'] = dol_print_date($datenextexpiration, 'dayrfc'); + $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATETIME__'] = dol_print_date($datenextexpiration, 'standard'); } // Choose one contact for the __CONTACTCIVNAME__ TODO Really not reliable. diff --git a/htdocs/core/tpl/massactions_form.tpl.php b/htdocs/core/tpl/massactions_form.tpl.php index 00ca40daf37..7e767b7cf03 100644 --- a/htdocs/core/tpl/massactions_form.tpl.php +++ b/htdocs/core/tpl/massactions_form.tpl.php @@ -122,16 +122,17 @@ $substitutionarray['__CONTACTCIVNAME__'] = ''; // Add specific substitution for contracts if (is_object($object) && $object->element == 'contrat' && is_array($object->lines)) { - $datenextexpiration = ''; - foreach ($object->lines as $line) + $dateplannedstart=''; + $datenextexpiration=''; + foreach($object->lines as $line) { - if ($line->statut != 4) - continue; - if ($line->date_fin_prevue > $datenextexpiration) - $datenextexpiration = $line->date_fin_prevue; + if ($line->date_ouverture_prevue > $dateplannedstart) $dateplannedstart = $line->date_ouverture_prevue; + if ($line->statut == 4 && $line->date_fin_prevue && (! $datenextexpiration || $line->date_fin_prevue < $datenextexpiration)) $datenextexpiration = $line->date_fin_prevue; } - $substitutionarray['__CONTRACT_NEXT_EXPIRATION_DATE__'] = dol_print_date($datenextexpiration, 'dayrfc'); - $substitutionarray['__CONTRACT_NEXT_EXPIRATION_DATETIME__'] = dol_print_date($datenextexpiration, 'standard'); + $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATE__'] = dol_print_date($dateplannedstart, 'dayrfc'); + $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATETIME__'] = dol_print_date($dateplannedstart, 'standard'); + $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATE__'] = dol_print_date($datenextexpiration, 'dayrfc'); + $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATETIME__'] = dol_print_date($datenextexpiration, 'standard'); } $parameters = array(