diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 65f9de244960ddb0ab9b5c162a0e40b6f2fc50f4..983e9600c92808d56c1678d1f00dfe30f9744f9a 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -158,6 +158,7 @@ class Adherent extends CommonObject $from=$conf->email_from; if (! empty($conf->global->ADHERENT_MAIL_FROM)) $from=$conf->global->ADHERENT_MAIL_FROM; + // Send email (substitutionarray must be done just before this) include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; $mailfile = new CMailFile($subjecttosend, $this->email, $from, $texttosend, $filename_list, $mimetype_list, $mimefilename_list, $addr_cc, $addr_bcc, $deliveryreceipt, $msgishtml); if ($mailfile->sendfile()) diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php index dadf7b476eeb0c6ceb72a1135cbc8ec8db1faa82..279c65fa204ca646c8ba449e6e4cea598a04796d 100644 --- a/htdocs/admin/mails.php +++ b/htdocs/admin/mails.php @@ -46,13 +46,18 @@ if ($action == 'test' || $action == 'send') } $substitutionarrayfortest=array( -'__LOGIN__' => $user->login, -'__ID__' => 'TESTIdRecord', -'__EMAIL__' => 'TESTEMail', -'__LASTNAME__' => 'TESTLastname', -'__FIRSTNAME__' => 'TESTFirstname', -'__SIGNATURE__' => (($user->signature && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))?$usersignature:''), -//'__PERSONALIZED__' => 'TESTPersonalized' // Hiden because not used yet +'__DOL_MAIN_URL_ROOT__'=>DOL_MAIN_URL_ROOT, +'__ID__' => 'RecipientIdRecord', +//'__EMAIL__' => 'RecipientEMail', // Done into actions_sendmails +'__CHECK_READ__' => (is_object($object) && is_object($object->thirdparty))?'<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$object->thirdparty->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>':'', +'__SIGNATURE__' => (($user->signature && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))?$usersignature:''), // Done into actions_sendmails +'__LOGIN__' => 'RecipientLogin', +'__LASTNAME__' => 'RecipientLastname', +'__FIRSTNAME__' => 'RecipientFirstname', +'__ADDRESS__'=> 'RecipientAddress', +'__ZIP__'=> 'RecipientZip', +'__TOWN_'=> 'RecipientTown', +'__COUNTRY__'=> 'RecipientCountry' ); complete_substitutions_array($substitutionarrayfortest, $langs); diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 0d4a6c6d80c23de444ba57c1a3f9f528c084cac1..e424fe0376bc6fec8cff570356f3712b0b294cd3 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -82,7 +82,7 @@ if (! $error && $massaction == 'confirm_presend') $result=$objecttmp->fetch($toselectid); if ($result > 0) { - $listoinvoicesid[$toselectid]=$toselectid; + $listofobjectid[$toselectid]=$toselectid; $thirdpartyid=$objecttmp->fk_soc?$objecttmp->fk_soc:$objecttmp->socid; $listofobjectthirdparties[$thirdpartyid]=$thirdpartyid; $listofobjectref[$thirdpartyid][$toselectid]=$objecttmp; @@ -169,7 +169,7 @@ if (! $error && $massaction == 'confirm_presend') //var_dump($listofobjectref);exit; $attachedfiles=array('paths'=>array(), 'names'=>array(), 'mimes'=>array()); - $listofqualifiedinvoice=array(); + $listofqualifiedid=array(); $listofqualifiedref=array(); foreach($listofobjectref[$thirdpartyid] as $objectid => $object) { @@ -223,7 +223,7 @@ if (! $error && $massaction == 'confirm_presend') ); } - $listofqualifiedinvoice[$objectid]=$object; + $listofqualifiedid[$objectid]=$object; $listofqualifiedref[$objectid]=$object->ref; } else @@ -238,8 +238,8 @@ if (! $error && $massaction == 'confirm_presend') //var_dump($listofqualifiedref); } - // Loop on each qualified invoice of the thirdparty - if (count($listofqualifiedinvoice) > 0) + // Loop on each qualified objects of the thirdparty + if (count($listofqualifiedid) > 0) { $langs->load("commercial"); @@ -266,17 +266,35 @@ if (! $error && $massaction == 'confirm_presend') $subject = GETPOST('subject'); $message = GETPOST('message'); $sendtocc = GETPOST('sentocc'); - $sendtobcc = (empty($conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO)?'':$conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO); + $sendtobcc = ''; + if ($objectclass == 'Propale') $sendtocc = (empty($conf->global->MAIN_MAIL_AUTOCOPY_PROPOSAL_TO)?'':$conf->global->MAIN_MAIL_AUTOCOPY_PROPOSAL_TO); + if ($objectclass == 'Commande') $sendtocc = (empty($conf->global->MAIN_MAIL_AUTOCOPY_ORDER_TO)?'':$conf->global->MAIN_MAIL_AUTOCOPY_ORDER_TO); + if ($objectclass == 'Facture') $sendtocc = (empty($conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO)?'':$conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO); + if ($objectclass == 'Supplier_Proposal') $sendtocc = (empty($conf->global->MAIN_MAIL_AUTOCOPY_SUPPLIER_PROPOSAL_TO)?'':$conf->global->MAIN_MAIL_AUTOCOPY_SUPPLIER_PROPOSAL_TO); + if ($objectclass == 'CommandeFournisseur') $sendtocc = (empty($conf->global->MAIN_MAIL_AUTOCOPY_SUPPLIER_ORDER_TO)?'':$conf->global->MAIN_MAIL_AUTOCOPY_SUPPLIER_ORDER_TO); + if ($objectclass == 'FactureFournisseur') $sendtocc = (empty($conf->global->MAIN_MAIL_AUTOCOPY_SUPPLIER_INVOICE_TO)?'':$conf->global->MAIN_MAIL_AUTOCOPY_SUPPLIER_INVOICE_TO); + $substitutionarray=array( - '__ID__' => join(', ',array_keys($listofqualifiedinvoice)), + '__DOL_MAIN_URL_ROOT__'=>DOL_MAIN_URL_ROOT, + '__ID__' => join(', ',array_keys($listofqualifiedid)), '__EMAIL__' => $thirdparty->email, '__CHECK_READ__' => '<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$thirdparty->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>', '__FACREF__' => join(', ',$listofqualifiedref), // For backward compatibility '__ORDERREF__' => join(', ',$listofqualifiedref), // For backward compatibility '__PROPREF__' => join(', ',$listofqualifiedref), // For backward compatibility '__REF__' => join(', ',$listofqualifiedref), - '__REFCLIENT__' => $thirdparty->name + '__REFCLIENT__' => $thirdparty->name, + '__SIGNATURE__' => (($user->signature && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))?dol_string_nohtmltag($user->signature):'') + /* not available on all object + /'__FIRSTNAME__'=>(is_object($object)?$object->firstname:''), + '__LASTNAME__'=>(is_object($object)?$object->lastname:''), + '__FULLNAME__'=>(is_object($object)?$object->getFullName($langs):''), + '__ADDRESS__'=>(is_object($object)?$object->address:''), + '__ZIP__'=>(is_object($object)?$object->zip:''), + '__TOWN_'=>(is_object($object)?$object->town:''), + '__COUNTRY__'=>(is_object($object)?$object->country:''), + */ ); $subject=make_substitutions($subject, $substitutionarray); @@ -288,7 +306,7 @@ if (! $error && $massaction == 'confirm_presend') //var_dump($filepath); - // Send mail + // Send mail (substitutionarray must be done just before this) require_once(DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'); $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,$sendtobcc,$deliveryreceipt,-1); if ($mailfile->error) @@ -305,7 +323,7 @@ if (! $error && $massaction == 'confirm_presend') $error=0; // Insert logs into agenda - foreach($listofqualifiedinvoice as $invid => $object) + foreach($listofqualifiedid as $objid => $object) { /*if ($objectclass == 'Propale') $actiontypecode='AC_PROP'; if ($objectclass == 'Commande') $actiontypecode='AC_COM'; @@ -328,7 +346,7 @@ if (! $error && $massaction == 'confirm_presend') $object->sendtoid = 0; $object->actionmsg = $actionmsg; // Long text $object->actionmsg2 = $actionmsg2; // Short text - $object->fk_element = $invid; + $object->fk_element = $objid; $object->elementtype = $object->element; // Appel des triggers @@ -403,7 +421,7 @@ if (! $error && $massaction == "builddoc" && $permtoread && ! GETPOST('button_se $result=$objecttmp->fetch($toselectid); if ($result > 0) { - $listoinvoicesid[$toselectid]=$toselectid; + $listofobjectid[$toselectid]=$toselectid; $thirdpartyid=$objecttmp->fk_soc?$objecttmp->fk_soc:$objecttmp->socid; $listofobjectthirdparties[$thirdpartyid]=$thirdpartyid; $listofobjectref[$toselectid]=$objecttmp->ref; diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index a796a94c68c3d852cf6a571c2fb776e33852c345..f18827bdd678fe6ba70bb96426f66ed676e3c751 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -344,7 +344,29 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO } } - // Send mail + + $substitutionarray=array( + '__DOL_MAIN_URL_ROOT__'=>DOL_MAIN_URL_ROOT, + '__ID__' => (is_object($object)?$object->id:''), + '__EMAIL__' => $sendto, + '__CHECK_READ__' => (is_object($object) && is_object($object->thirdparty))?'<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$object->thirdparty->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>':'', + '__REF__' => (is_object($object)?$object->ref:''), + '__SIGNATURE__' => (($user->signature && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))?dol_string_nohtmltag($user->signature):'') + /* not available on all object + /'__FIRSTNAME__'=>(is_object($object)?$object->firstname:''), + '__LASTNAME__'=>(is_object($object)?$object->lastname:''), + '__FULLNAME__'=>(is_object($object)?$object->getFullName($langs):''), + '__ADDRESS__'=>(is_object($object)?$object->address:''), + '__ZIP__'=>(is_object($object)?$object->zip:''), + '__TOWN_'=>(is_object($object)?$object->town:''), + '__COUNTRY__'=>(is_object($object)?$object->country:''), + */ + ); + + $subject=make_substitutions($subject, $substitutionarray); + $message=make_substitutions($message, $substitutionarray); + + // Send mail (substitutionarray must be done just before this) $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,$sendtobcc,$deliveryreceipt,-1,'','',$trackid); if ($mailfile->error) { diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index bd52f5dcaa23390df897183c1fdfe8cd441a3894..9179b8eddb7944b25275c59a42c71b03f2fb4588 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -71,7 +71,7 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object NbOfActiveNotifications=Number of notifications (nb of recipient emails) -PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ +PredefinedMailTest=This is a test mail sent to __EMAIL__.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a <b>test</b> mail (the word test must be in bold).<br>The two lines are separated by a carriage return.<br><br>__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __REF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __REF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__