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(