Work on the "mass action" feature. Can run mass action on
result of a select.
This commit is contained in:
parent
6df4948a73
commit
574b270da0
@ -3886,9 +3886,9 @@ else if ($id > 0 || ! empty($ref))
|
|||||||
$formmail->withtocc = $liste; // List suggested for CC
|
$formmail->withtocc = $liste; // List suggested for CC
|
||||||
$formmail->withtoccc = $conf->global->MAIN_EMAIL_USECCC;
|
$formmail->withtoccc = $conf->global->MAIN_EMAIL_USECCC;
|
||||||
if (empty($object->ref_client)) {
|
if (empty($object->ref_client)) {
|
||||||
$formmail->withtopic = $outputlangs->transnoentities($topicmail, '__FACREF__');
|
$formmail->withtopic = $outputlangs->transnoentities($topicmail, '__REF__');
|
||||||
} else if (! empty($object->ref_client)) {
|
} else if (! empty($object->ref_client)) {
|
||||||
$formmail->withtopic = $outputlangs->transnoentities($topicmail, '__FACREF__ (__REFCLIENT__)');
|
$formmail->withtopic = $outputlangs->transnoentities($topicmail, '__REF__ (__REFCLIENT__)');
|
||||||
}
|
}
|
||||||
|
|
||||||
$formmail->withfile = 2;
|
$formmail->withfile = 2;
|
||||||
@ -3896,7 +3896,7 @@ else if ($id > 0 || ! empty($ref))
|
|||||||
$formmail->withdeliveryreceipt = 1;
|
$formmail->withdeliveryreceipt = 1;
|
||||||
$formmail->withcancel = 1;
|
$formmail->withcancel = 1;
|
||||||
// Tableau des substitutions
|
// Tableau des substitutions
|
||||||
$formmail->substit['__FACREF__'] = $object->ref;
|
$formmail->substit['__REF__'] = $object->ref;
|
||||||
$formmail->substit['__SIGNATURE__'] = $user->signature;
|
$formmail->substit['__SIGNATURE__'] = $user->signature;
|
||||||
$formmail->substit['__REFCLIENT__'] = $object->ref_client;
|
$formmail->substit['__REFCLIENT__'] = $object->ref_client;
|
||||||
$formmail->substit['__THIRDPARTY_NAME__'] = $object->thirdparty->name;
|
$formmail->substit['__THIRDPARTY_NAME__'] = $object->thirdparty->name;
|
||||||
|
|||||||
@ -3688,9 +3688,7 @@ class Facture extends CommonInvoice
|
|||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
|
||||||
// Paid invoices have status STATUS_CLOSED
|
// Paid invoices have status STATUS_CLOSED
|
||||||
if (!$this->statut != Facture::STATUS_VALIDATED) {
|
if ($this->statut != Facture::STATUS_VALIDATED) return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->date_lim_reglement < ($now - $conf->facture->client->warning_delay);
|
return $this->date_lim_reglement < ($now - $conf->facture->client->warning_delay);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -60,6 +60,7 @@ $id=(GETPOST('id','int')?GETPOST('id','int'):GETPOST('facid','int')); // For ba
|
|||||||
$ref=GETPOST('ref','alpha');
|
$ref=GETPOST('ref','alpha');
|
||||||
$socid=GETPOST('socid','int');
|
$socid=GETPOST('socid','int');
|
||||||
$action=GETPOST('action','alpha');
|
$action=GETPOST('action','alpha');
|
||||||
|
$massaction=GETPOST('massaction','alpha');
|
||||||
$confirm=GETPOST('confirm','alpha');
|
$confirm=GETPOST('confirm','alpha');
|
||||||
$lineid=GETPOST('lineid','int');
|
$lineid=GETPOST('lineid','int');
|
||||||
$userid=GETPOST('userid','int');
|
$userid=GETPOST('userid','int');
|
||||||
@ -70,6 +71,9 @@ $search_societe=GETPOST('search_societe','alpha');
|
|||||||
$search_montant_ht=GETPOST('search_montant_ht','alpha');
|
$search_montant_ht=GETPOST('search_montant_ht','alpha');
|
||||||
$search_montant_ttc=GETPOST('search_montant_ttc','alpha');
|
$search_montant_ttc=GETPOST('search_montant_ttc','alpha');
|
||||||
$search_status=GETPOST('search_status','int');
|
$search_status=GETPOST('search_status','int');
|
||||||
|
$search_paymentmode=GETPOST('search_paymentmode','int');
|
||||||
|
$option = GETPOST('option');
|
||||||
|
if ($option == 'late') $filter = 'paye:0';
|
||||||
|
|
||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield",'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder",'alpha');
|
||||||
@ -94,6 +98,7 @@ $day_lim = GETPOST('day_lim','int');
|
|||||||
$month_lim = GETPOST('month_lim','int');
|
$month_lim = GETPOST('month_lim','int');
|
||||||
$year_lim = GETPOST('year_lim','int');
|
$year_lim = GETPOST('year_lim','int');
|
||||||
$filtre = GETPOST('filtre');
|
$filtre = GETPOST('filtre');
|
||||||
|
$toselect = GETPOST('toselect', 'array');
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
$fieldid = (! empty($ref)?'facnumber':'rowid');
|
$fieldid = (! empty($ref)?'facnumber':'rowid');
|
||||||
@ -122,9 +127,290 @@ if (empty($user->socid)) $fieldstosearchall["f.note_private"]="NotePrivate";
|
|||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if (GETPOST('cancel')) { $action='list'; $massaction=''; }
|
||||||
|
|
||||||
$parameters=array('socid'=>$socid);
|
$parameters=array('socid'=>$socid);
|
||||||
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
||||||
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
|
if (empty($reshook))
|
||||||
|
{
|
||||||
|
// Mass actions
|
||||||
|
if (! empty($massaction) && count($toselect) < 1)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
setEventMessage("NoLineChecked","warnings");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error && $massaction == 'confirm_presend')
|
||||||
|
{
|
||||||
|
$resaction = '';
|
||||||
|
$nbsent = 0;
|
||||||
|
$nbignored = 0;
|
||||||
|
$langs->load("mails");
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||||
|
|
||||||
|
if (!isset($user->email))
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans("NoSenderEmailDefined"), null, 'warnings');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$thirdparty=new Societe($db);
|
||||||
|
$objecttmp=new Facture($db);
|
||||||
|
$listofobjectid=array();
|
||||||
|
$listofobjectthirdparties=array();
|
||||||
|
$listofobjectref=array();
|
||||||
|
foreach($toselect as $toselectid)
|
||||||
|
{
|
||||||
|
$objecttmp=new Facture($db); // must create new instance because instance is saved into $listofobjectref array for future use
|
||||||
|
$result=$objecttmp->fetch($toselectid);
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
$listoinvoicesid[$toselectid]=$toselectid;
|
||||||
|
$thirdpartyid=$objecttmp->fk_soc?$objecttmp->fk_soc:$objecttmp->socid;
|
||||||
|
$listofobjectthirdparties[$thirdpartyid]=$thirdpartyid;
|
||||||
|
$listofobjectref[$thirdpartyid][$toselectid]=$objecttmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//var_dump($listofobjectthirdparties);exit;
|
||||||
|
|
||||||
|
foreach ($listofobjectthirdparties as $thirdpartyid)
|
||||||
|
{
|
||||||
|
$result = $thirdparty->fetch($thirdpartyid);
|
||||||
|
if ($result < 0)
|
||||||
|
{
|
||||||
|
dol_print_error($db);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define recipient $sendto and $sendtocc
|
||||||
|
if (trim($_POST['sendto']))
|
||||||
|
{
|
||||||
|
// Recipient is provided into free text
|
||||||
|
$sendto = trim($_POST['sendto']);
|
||||||
|
$sendtoid = 0;
|
||||||
|
}
|
||||||
|
elseif ($_POST['receiver'] != '-1')
|
||||||
|
{
|
||||||
|
// Recipient was provided from combo list
|
||||||
|
if ($_POST['receiver'] == 'thirdparty') // Id of third party
|
||||||
|
{
|
||||||
|
$sendto = $thirdparty->email;
|
||||||
|
$sendtoid = 0;
|
||||||
|
}
|
||||||
|
else // Id du contact
|
||||||
|
{
|
||||||
|
$sendto = $thirdparty->contact_get_property((int) $_POST['receiver'],'email');
|
||||||
|
$sendtoid = $_POST['receiver'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (trim($_POST['sendtocc']))
|
||||||
|
{
|
||||||
|
$sendtocc = trim($_POST['sendtocc']);
|
||||||
|
}
|
||||||
|
elseif ($_POST['receivercc'] != '-1')
|
||||||
|
{
|
||||||
|
// Recipient was provided from combo list
|
||||||
|
if ($_POST['receivercc'] == 'thirdparty') // Id of third party
|
||||||
|
{
|
||||||
|
$sendtocc = $thirdparty->email;
|
||||||
|
}
|
||||||
|
else // Id du contact
|
||||||
|
{
|
||||||
|
$sendtocc = $thirdparty->contact_get_property((int) $_POST['receivercc'],'email');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//var_dump($listofobjectref[$thirdpartyid]); // Array of invoice for this thirdparty
|
||||||
|
|
||||||
|
$attachedfiles=array('paths'=>array(), 'names'=>array(), 'mimes'=>array());
|
||||||
|
$listofqualifiedinvoice=array();
|
||||||
|
$listofqualifiedref=array();
|
||||||
|
foreach($listofobjectref[$thirdpartyid] as $objectid => $object)
|
||||||
|
{
|
||||||
|
//var_dump($object);
|
||||||
|
//var_dump($thirdpartyid.' - '.$objectid.' - '.$object->statut);
|
||||||
|
|
||||||
|
if ($object->statut != Facture::STATUS_VALIDATED)
|
||||||
|
{
|
||||||
|
$nbignored++;
|
||||||
|
continue; // Payment done or started or canceled
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read document
|
||||||
|
// TODO Use future field $object->fullpathdoc to know where is stored default file
|
||||||
|
// TODO If not defined, use $object->modelpdf (or defaut invoice config) to know what is template to use to regenerate doc.
|
||||||
|
$filename=dol_sanitizeFileName($object->ref).'.pdf';
|
||||||
|
$filedir=$conf->facture->dir_output . '/' . dol_sanitizeFileName($object->ref);
|
||||||
|
$file = $filedir . '/' . $filename;
|
||||||
|
$mime = dol_mimetype($file);
|
||||||
|
|
||||||
|
if (dol_is_file($file))
|
||||||
|
{
|
||||||
|
if (empty($sendto)) // For the case, no recipient were set (multi thirdparties send)
|
||||||
|
{
|
||||||
|
$object->fetch_thirdparty();
|
||||||
|
$sendto = $object->thirdparty->email;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($sendto))
|
||||||
|
{
|
||||||
|
//print "No recipient for thirdparty ".$object->thirdparty->name;
|
||||||
|
$nbignored++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dol_strlen($sendto))
|
||||||
|
{
|
||||||
|
// Create form object
|
||||||
|
$attachedfiles=array(
|
||||||
|
'paths'=>array_merge($attachedfiles['paths'],array($file)),
|
||||||
|
'names'=>array_merge($attachedfiles['names'],array($filename)),
|
||||||
|
'mimes'=>array_merge($attachedfiles['mimes'],array($mime))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$listofqualifiedinvoice[$objectid]=$object;
|
||||||
|
$listofqualifiedref[$objectid]=$object->ref;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$nbignored++;
|
||||||
|
$langs->load("other");
|
||||||
|
$resaction.='<div class="error">'.$langs->trans('ErrorCantReadFile',$file).'</div>';
|
||||||
|
dol_syslog('Failed to read file: '.$file, LOG_WARNING);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//var_dump($listofqualifiedref);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($listofqualifiedinvoice) > 0)
|
||||||
|
{
|
||||||
|
$langs->load("commercial");
|
||||||
|
$from = $user->getFullName($langs) . ' <' . $user->email .'>';
|
||||||
|
$replyto = $from;
|
||||||
|
$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);
|
||||||
|
|
||||||
|
$substitutionarray=array(
|
||||||
|
'__ID__' => join(', ',array_keys($listofqualifiedinvoice)),
|
||||||
|
'__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"/>',
|
||||||
|
//'__LASTNAME__' => $obj2->lastname,
|
||||||
|
//'__FIRSTNAME__' => $obj2->firstname,
|
||||||
|
'__FACREF__' => join(', ',$listofqualifiedref), // For backward compatibility
|
||||||
|
'__REF__' => join(', ',$listofqualifiedref),
|
||||||
|
'__REFCLIENT__' => $thirdparty->name
|
||||||
|
);
|
||||||
|
|
||||||
|
$subject=make_substitutions($subject, $substitutionarray);
|
||||||
|
$message=make_substitutions($message, $substitutionarray);
|
||||||
|
|
||||||
|
$filepath = $attachedfiles['paths'];
|
||||||
|
$filename = $attachedfiles['names'];
|
||||||
|
$mimetype = $attachedfiles['mimes'];
|
||||||
|
|
||||||
|
//var_dump($filepath);
|
||||||
|
|
||||||
|
// Send mail
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
$resaction.='<div class="error">'.$mailfile->error.'</div>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$result=$mailfile->sendfile();
|
||||||
|
if ($result)
|
||||||
|
{
|
||||||
|
$resaction.=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)); // Must not contain "
|
||||||
|
|
||||||
|
$error=0;
|
||||||
|
|
||||||
|
foreach($listofqualifiedinvoice as $invid => $object)
|
||||||
|
{
|
||||||
|
$actiontypecode='AC_FAC';
|
||||||
|
$actionmsg=$langs->transnoentities('MailSentBy').' '.$from.' '.$langs->transnoentities('To').' '.$sendto;
|
||||||
|
if ($message)
|
||||||
|
{
|
||||||
|
if ($sendtocc) $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('Bcc') . ": " . $sendtocc);
|
||||||
|
$actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('MailTopic') . ": " . $subject);
|
||||||
|
$actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('TextUsedInTheMessageBody') . ":");
|
||||||
|
$actionmsg = dol_concatdesc($actionmsg, $message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialisation donnees
|
||||||
|
$object->sendtoid = 0;
|
||||||
|
$object->actiontypecode = $actiontypecode;
|
||||||
|
$object->actionmsg = $actionmsg; // Long text
|
||||||
|
$object->actionmsg2 = $actionmsg2; // Short text
|
||||||
|
$object->fk_element = $invid;
|
||||||
|
$object->elementtype = $object->element;
|
||||||
|
|
||||||
|
// Appel des triggers
|
||||||
|
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
|
||||||
|
$interface=new Interfaces($db);
|
||||||
|
$result=$interface->run_triggers('BILL_SENTBYMAIL',$object,$user,$langs,$conf);
|
||||||
|
if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||||
|
// Fin appel triggers
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$resaction.=$langs->trans("MailSent").': '.$sendto."<br>\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
|
$nbsent++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$langs->load("other");
|
||||||
|
if ($mailfile->error)
|
||||||
|
{
|
||||||
|
$resaction.=$langs->trans('ErrorFailedToSendMail',$from,$sendto);
|
||||||
|
$resaction.='<br><div class="error">'.$mailfile->error.'</div>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$resaction.='<div class="warning">No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS</div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$resaction.=($resaction?'<br>':$resaction);
|
||||||
|
$resaction.='<strong>'.$langs->trans("ResultOfMailSending").':</strong><br>'."\n";
|
||||||
|
$resaction.=$langs->trans("NbSelected").': '.count($toselect)."\n<br>";
|
||||||
|
$resaction.=$langs->trans("NbIgnored").': '.($nbignored?$nbignored:0)."\n<br>";
|
||||||
|
$resaction.=$langs->trans("NbSent").': '.($nbsent?$nbsent:0)."\n<br>";
|
||||||
|
|
||||||
|
if ($nbsent)
|
||||||
|
{
|
||||||
|
$action=''; // Do not show form post if there was at least one successfull sent
|
||||||
|
setEventMessages($langs->trans("EMailSentToNRecipients", $nbsent.'/'.count($toselect)), null, 'mesgs');
|
||||||
|
setEventMessages($resaction, null, 'mesgs');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//setEventMessages($langs->trans("EMailSentToNRecipients", 0), null, 'warnings'); // May be object has no generated PDF file
|
||||||
|
setEventMessages($resaction, null, 'warnings');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$action='list';
|
||||||
|
$massaction='';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Do we click on purge search criteria ?
|
// Do we click on purge search criteria ?
|
||||||
if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers
|
if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers
|
||||||
@ -139,9 +425,13 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
|
|||||||
$search_montant_ht='';
|
$search_montant_ht='';
|
||||||
$search_montant_ttc='';
|
$search_montant_ttc='';
|
||||||
$search_status='';
|
$search_status='';
|
||||||
|
$search_paymentmode='';
|
||||||
$day='';
|
$day='';
|
||||||
$year='';
|
$year='';
|
||||||
$month='';
|
$month='';
|
||||||
|
$toselect='';
|
||||||
|
$option='';
|
||||||
|
$filter='';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -160,7 +450,7 @@ $facturestatic=new Facture($db);
|
|||||||
|
|
||||||
$sql = 'SELECT';
|
$sql = 'SELECT';
|
||||||
if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT';
|
if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT';
|
||||||
$sql.= ' f.rowid as facid, f.facnumber, f.ref_client, f.type, f.note_private, f.increment, f.total as total_ht, f.tva as total_tva, f.total_ttc,';
|
$sql.= ' f.rowid as facid, f.facnumber, f.ref_client, f.type, f.note_private, f.increment, f.fk_mode_reglement, f.total as total_ht, f.tva as total_tva, f.total_ttc,';
|
||||||
$sql.= ' f.datef as df, f.date_lim_reglement as datelimite,';
|
$sql.= ' f.datef as df, f.date_lim_reglement as datelimite,';
|
||||||
$sql.= ' f.paye as paye, f.fk_statut,';
|
$sql.= ' f.paye as paye, f.fk_statut,';
|
||||||
$sql.= ' s.nom as name, s.rowid as socid, s.code_client, s.client ';
|
$sql.= ' s.nom as name, s.rowid as socid, s.code_client, s.client ';
|
||||||
@ -203,6 +493,7 @@ if ($search_societe) $sql .= natural_search('s.nom', $search_societe);
|
|||||||
if ($search_montant_ht != '') $sql.= natural_search('f.total', $search_montant_ht, 1);
|
if ($search_montant_ht != '') $sql.= natural_search('f.total', $search_montant_ht, 1);
|
||||||
if ($search_montant_ttc != '') $sql.= natural_search('f.total_ttc', $search_montant_ttc, 1);
|
if ($search_montant_ttc != '') $sql.= natural_search('f.total_ttc', $search_montant_ttc, 1);
|
||||||
if ($search_status != '' && $search_status >= 0) $sql.= " AND f.fk_statut = ".$db->escape($search_status);
|
if ($search_status != '' && $search_status >= 0) $sql.= " AND f.fk_statut = ".$db->escape($search_status);
|
||||||
|
if ($search_paymentmode > 0) $sql .= " AND f.fk_mode_reglement = ".$search_paymentmode."";
|
||||||
if ($month > 0)
|
if ($month > 0)
|
||||||
{
|
{
|
||||||
if ($year > 0 && empty($day))
|
if ($year > 0 && empty($day))
|
||||||
@ -229,6 +520,8 @@ else if ($year_lim > 0)
|
|||||||
{
|
{
|
||||||
$sql.= " AND f.date_lim_reglement BETWEEN '".$db->idate(dol_get_first_day($year_lim,1,false))."' AND '".$db->idate(dol_get_last_day($year_lim,12,false))."'";
|
$sql.= " AND f.date_lim_reglement BETWEEN '".$db->idate(dol_get_first_day($year_lim,1,false))."' AND '".$db->idate(dol_get_last_day($year_lim,12,false))."'";
|
||||||
}
|
}
|
||||||
|
if ($option == 'late') $sql.=" AND f.date_lim_reglement < '".$db->idate(dol_now() - $conf->facture->client->warning_delay)."'";
|
||||||
|
if ($filter == 'paye:0') $sql.= " AND f.fk_statut = 1";
|
||||||
if ($search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale;
|
if ($search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale;
|
||||||
if ($search_user > 0)
|
if ($search_user > 0)
|
||||||
{
|
{
|
||||||
@ -265,6 +558,8 @@ if ($resql)
|
|||||||
{
|
{
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
|
|
||||||
|
$arrayofselected=is_array($toselect)?$toselect:array();
|
||||||
|
|
||||||
if ($socid)
|
if ($socid)
|
||||||
{
|
{
|
||||||
$soc = new Societe($db);
|
$soc = new Societe($db);
|
||||||
@ -282,10 +577,113 @@ if ($resql)
|
|||||||
if ($search_montant_ht != '') $param.='&search_montant_ht='.$search_montant_ht;
|
if ($search_montant_ht != '') $param.='&search_montant_ht='.$search_montant_ht;
|
||||||
if ($search_montant_ttc != '') $param.='&search_montant_ttc='.$search_montant_ttc;
|
if ($search_montant_ttc != '') $param.='&search_montant_ttc='.$search_montant_ttc;
|
||||||
if ($search_status != '') $param.='&search_status='.$search_status;
|
if ($search_status != '') $param.='&search_status='.$search_status;
|
||||||
print_barre_liste($langs->trans('BillsCustomers').' '.($socid?' '.$soc->name:''),$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords,'title_accountancy.png');
|
if ($search_paymentmode > 0) $param.='search_paymentmode='.$search_paymentmode;
|
||||||
|
$param.=(! empty($option)?"&option=".$option:"");
|
||||||
|
|
||||||
|
$massactionbutton=$form->selectMassAction('', $massaction ? array() : array('presend'=>$langs->trans("SendByMail")));
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">'."\n";
|
print '<form method="POST" name="searchFormList" action="'.$_SERVER["PHP_SELF"].'">'."\n";
|
||||||
|
|
||||||
|
print_barre_liste($langs->trans('BillsCustomers').' '.($socid?' '.$soc->name:''),$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,$massactionbutton,$num,$nbtotalofrecords,'title_accountancy.png');
|
||||||
|
|
||||||
|
if ($massaction == 'presend')
|
||||||
|
{
|
||||||
|
$langs->load("mails");
|
||||||
|
|
||||||
|
if (! GETPOST('cancel'))
|
||||||
|
{
|
||||||
|
$objecttmp=new Facture($db);
|
||||||
|
$listofselectedid=array();
|
||||||
|
$listofselectedthirdparties=array();
|
||||||
|
$listofselectedref=array();
|
||||||
|
foreach($arrayofselected as $toselectid)
|
||||||
|
{
|
||||||
|
$result=$objecttmp->fetch($toselectid);
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
$listofselectedid[$toselectid]=$toselectid;
|
||||||
|
$thirdpartyid=$objecttmp->fk_soc?$objecttmp->fk_soc:$objecttmp->socid;
|
||||||
|
$listofselectedthirdparties[$thirdpartyid]=$thirdpartyid;
|
||||||
|
$listofselectedref[$thirdpartyid][$toselectid]=$objecttmp->ref;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<input type="hidden" name="massaction" value="confirm_presend">';
|
||||||
|
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
|
||||||
|
$formmail = new FormMail($db);
|
||||||
|
|
||||||
|
dol_fiche_head(null, '', $langs->trans("SendByMail"));
|
||||||
|
|
||||||
|
$topicmail="SendBillRef";
|
||||||
|
$modelmail="facture_send";
|
||||||
|
|
||||||
|
// Cree l'objet formulaire mail
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
|
||||||
|
$formmail = new FormMail($db);
|
||||||
|
$formmail->withform=-1;
|
||||||
|
$formmail->fromtype = 'user';
|
||||||
|
$formmail->fromid = $user->id;
|
||||||
|
$formmail->fromname = $user->getFullName($langs);
|
||||||
|
$formmail->frommail = $user->email;
|
||||||
|
if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 1)) // If bit 1 is set
|
||||||
|
{
|
||||||
|
$formmail->trackid='inv'.$object->id;
|
||||||
|
}
|
||||||
|
if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set
|
||||||
|
{
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||||
|
$formmail->frommail=dolAddEmailTrackId($formmail->frommail, 'inv'.$object->id);
|
||||||
|
}
|
||||||
|
$formmail->withfrom=1;
|
||||||
|
$liste=$langs->trans("AllRecipientSelected");
|
||||||
|
if (count($listofselectedthirdparties) == 1)
|
||||||
|
{
|
||||||
|
$liste=array();
|
||||||
|
$thirdpartyid=array_shift($listofselectedthirdparties);
|
||||||
|
$soc=new Societe($db);
|
||||||
|
$soc->fetch($thirdpartyid);
|
||||||
|
foreach ($soc->thirdparty_and_contact_email_array(1) as $key=>$value)
|
||||||
|
{
|
||||||
|
$liste[$key]=$value;
|
||||||
|
}
|
||||||
|
$formmail->withtoreadonly=0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$formmail->withtoreadonly=1;
|
||||||
|
}
|
||||||
|
$formmail->withto=$liste;
|
||||||
|
$formmail->withtofree=0;
|
||||||
|
$formmail->withtocc=1;
|
||||||
|
$formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC;
|
||||||
|
$formmail->withtopic=$langs->transnoentities($topicmail, '__REF__', '__REFCLIENT__');
|
||||||
|
$formmail->withfile=$langs->trans("EachInvoiceWillBeAttachedToEmail");
|
||||||
|
$formmail->withbody=1;
|
||||||
|
$formmail->withdeliveryreceipt=1;
|
||||||
|
$formmail->withcancel=1;
|
||||||
|
// Tableau des substitutions
|
||||||
|
$formmail->substit['__REF__']='__REF__'; // We want to keep the tag
|
||||||
|
$formmail->substit['__SIGNATURE__']=$user->signature;
|
||||||
|
$formmail->substit['__REFCLIENT__']='__REFCLIENT__'; // We want to keep the tag
|
||||||
|
$formmail->substit['__PERSONALIZED__']='';
|
||||||
|
$formmail->substit['__CONTACTCIVNAME__']='';
|
||||||
|
|
||||||
|
// Tableau des parametres complementaires du post
|
||||||
|
$formmail->param['action']=$action;
|
||||||
|
$formmail->param['models']=$modelmail;
|
||||||
|
$formmail->param['models_id']=GETPOST('modelmailselected','int');
|
||||||
|
$formmail->param['facid']=join(',',$arrayofselected);
|
||||||
|
//$formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$object->id;
|
||||||
|
|
||||||
|
print $formmail->get_form();
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print '<input type="hidden" name="action" value="list">';
|
print '<input type="hidden" name="action" value="list">';
|
||||||
@ -347,8 +745,9 @@ if ($resql)
|
|||||||
print_liste_field_titre($langs->trans('Date'),$_SERVER['PHP_SELF'],'f.datef','',$param,'align="center"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans('Date'),$_SERVER['PHP_SELF'],'f.datef','',$param,'align="center"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("DateDue"),$_SERVER['PHP_SELF'],"f.date_lim_reglement",'',$param,'align="center"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("DateDue"),$_SERVER['PHP_SELF'],"f.date_lim_reglement",'',$param,'align="center"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans('ThirdParty'),$_SERVER['PHP_SELF'],'s.nom','',$param,'',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans('ThirdParty'),$_SERVER['PHP_SELF'],'s.nom','',$param,'',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans("PaymentModeShort"),$_SERVER["PHP_SELF"],"f.fk_reglement_mode","",$param,"",$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans('AmountHT'),$_SERVER['PHP_SELF'],'f.total','',$param,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans('AmountHT'),$_SERVER['PHP_SELF'],'f.total','',$param,'align="right"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans('AmountVAT'),$_SERVER['PHP_SELF'],'f.tva','',$param,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans('Taxes'),$_SERVER['PHP_SELF'],'f.tva','',$param,'align="right"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans('AmountTTC'),$_SERVER['PHP_SELF'],'f.total_ttc','',$param,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans('AmountTTC'),$_SERVER['PHP_SELF'],'f.total_ttc','',$param,'align="right"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans('Received'),$_SERVER['PHP_SELF'],'am','',$param,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans('Received'),$_SERVER['PHP_SELF'],'am','',$param,'align="right"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans('Status'),$_SERVER['PHP_SELF'],'fk_statut,paye,am','',$param,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans('Status'),$_SERVER['PHP_SELF'],'fk_statut,paye,am','',$param,'align="right"',$sortfield,$sortorder);
|
||||||
@ -372,8 +771,12 @@ if ($resql)
|
|||||||
if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day_lim" value="'.$day_lim.'">';
|
if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day_lim" value="'.$day_lim.'">';
|
||||||
print '<input class="flat" type="text" size="1" maxlength="2" name="month_lim" value="'.$month_lim.'">';
|
print '<input class="flat" type="text" size="1" maxlength="2" name="month_lim" value="'.$month_lim.'">';
|
||||||
$formother->select_year($year_lim?$year_lim:-1,'year_lim',1, 20, 5);
|
$formother->select_year($year_lim?$year_lim:-1,'year_lim',1, 20, 5);
|
||||||
|
print '<br><input type="checkbox" name="option" value="late"'.($option == 'late'?' checked':'').'> '.$langs->trans("Late");
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre" align="left"><input class="flat" type="text" size="8" name="search_societe" value="'.$search_societe.'"></td>';
|
print '<td class="liste_titre" align="left"><input class="flat" type="text" size="8" name="search_societe" value="'.$search_societe.'"></td>';
|
||||||
|
print '<td class="liste_titre" align="left">';
|
||||||
|
$form->select_types_paiements($search_paymentmode, 'search_paymentmode', '', 0, 0, 1, 10);
|
||||||
|
print '</td>';
|
||||||
print '<td class="liste_titre" align="right"><input class="flat" type="text" size="6" name="search_montant_ht" value="'.$search_montant_ht.'"></td>';
|
print '<td class="liste_titre" align="right"><input class="flat" type="text" size="6" name="search_montant_ht" value="'.$search_montant_ht.'"></td>';
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td class="liste_titre" align="right"><input class="flat" type="text" size="6" name="search_montant_ttc" value="'.$search_montant_ttc.'"></td>';
|
print '<td class="liste_titre" align="right"><input class="flat" type="text" size="6" name="search_montant_ttc" value="'.$search_montant_ttc.'"></td>';
|
||||||
@ -463,6 +866,11 @@ if ($resql)
|
|||||||
print $thirdparty->getNomUrl(1,'customer');
|
print $thirdparty->getNomUrl(1,'customer');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
|
// Payment mode
|
||||||
|
print '<td>';
|
||||||
|
$form->form_modes_reglement($_SERVER['PHP_SELF'], $objp->fk_mode_reglement, 'none');
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
print '<td align="right">'.price($objp->total_ht,0,$langs).'</td>';
|
print '<td align="right">'.price($objp->total_ht,0,$langs).'</td>';
|
||||||
|
|
||||||
print '<td align="right">'.price($objp->total_tva,0,$langs).'</td>';
|
print '<td align="right">'.price($objp->total_tva,0,$langs).'</td>';
|
||||||
@ -471,12 +879,17 @@ if ($resql)
|
|||||||
|
|
||||||
print '<td align="right">'.(! empty($paiement)?price($paiement,0,$langs):' ').'</td>';
|
print '<td align="right">'.(! empty($paiement)?price($paiement,0,$langs):' ').'</td>';
|
||||||
|
|
||||||
// Affiche statut de la facture
|
// Status
|
||||||
print '<td align="right" class="nowrap">';
|
print '<td align="right" class="nowrap">';
|
||||||
print $facturestatic->LibStatut($objp->paye,$objp->fk_statut,5,$paiement,$objp->type);
|
print $facturestatic->LibStatut($objp->paye,$objp->fk_statut,5,$paiement,$objp->type);
|
||||||
print "</td>";
|
print "</td>";
|
||||||
|
|
||||||
print "<td></td>";
|
// Checkbox
|
||||||
|
print '<td class="nowrap" align="center">';
|
||||||
|
$selected=0;
|
||||||
|
if (in_array($objp->facid, $arrayofselected)) $selected=1;
|
||||||
|
print '<input id="cb'.$objp->facid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$objp->facid.'"'.($selected?' checked="checked"':'').'>';
|
||||||
|
print '</td>' ;
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
$total_ht+=$objp->total_ht;
|
$total_ht+=$objp->total_ht;
|
||||||
@ -490,7 +903,7 @@ if ($resql)
|
|||||||
{
|
{
|
||||||
// Print total
|
// Print total
|
||||||
print '<tr class="liste_total">';
|
print '<tr class="liste_total">';
|
||||||
print '<td class="liste_total" colspan="5" align="left">'.$langs->trans('Total').'</td>';
|
print '<td class="liste_total" colspan="6" align="left">'.$langs->trans('Total').'</td>';
|
||||||
print '<td class="liste_total" align="right">'.price($total_ht,0,$langs).'</td>';
|
print '<td class="liste_total" align="right">'.price($total_ht,0,$langs).'</td>';
|
||||||
print '<td class="liste_total" align="right">'.price($total_tva,0,$langs).'</td>';
|
print '<td class="liste_total" align="right">'.price($total_tva,0,$langs).'</td>';
|
||||||
print '<td class="liste_total" align="right">'.price($total_ttc,0,$langs).'</td>';
|
print '<td class="liste_total" align="right">'.price($total_ttc,0,$langs).'</td>';
|
||||||
|
|||||||
@ -590,13 +590,13 @@ if ($resql)
|
|||||||
$formmail->withtoreadonly=1;
|
$formmail->withtoreadonly=1;
|
||||||
$formmail->withtocc=1;
|
$formmail->withtocc=1;
|
||||||
$formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC;
|
$formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC;
|
||||||
$formmail->withtopic=$langs->transnoentities($topicmail, '__FACREF__', '__REFCLIENT__');
|
$formmail->withtopic=$langs->transnoentities($topicmail, '__REF__', '__REFCLIENT__');
|
||||||
$formmail->withfile=$langs->trans("EachInvoiceWillBeAttachedToEmail");
|
$formmail->withfile=$langs->trans("EachInvoiceWillBeAttachedToEmail");
|
||||||
$formmail->withbody=1;
|
$formmail->withbody=1;
|
||||||
$formmail->withdeliveryreceipt=1;
|
$formmail->withdeliveryreceipt=1;
|
||||||
$formmail->withcancel=1;
|
$formmail->withcancel=1;
|
||||||
// Tableau des substitutions
|
// Tableau des substitutions
|
||||||
//$formmail->substit['__FACREF__']='';
|
//$formmail->substit['__REF__']='';
|
||||||
$formmail->substit['__SIGNATURE__']=$user->signature;
|
$formmail->substit['__SIGNATURE__']=$user->signature;
|
||||||
//$formmail->substit['__REFCLIENT__']='';
|
//$formmail->substit['__REFCLIENT__']='';
|
||||||
$formmail->substit['__PERSONALIZED__']='';
|
$formmail->substit['__PERSONALIZED__']='';
|
||||||
|
|||||||
@ -482,6 +482,72 @@ class Form
|
|||||||
return $this->textwithtooltip($text, $htmltext, 2, $direction, $img, $extracss, $notabs, '', $noencodehtmltext);
|
return $this->textwithtooltip($text, $htmltext, 2, $direction, $img, $extracss, $notabs, '', $noencodehtmltext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate select HTML to choose massaction
|
||||||
|
*
|
||||||
|
* @parama string $selected Selected value
|
||||||
|
* @param int $arrayofaction array('code'=>'label', ...)
|
||||||
|
* @param string Select list
|
||||||
|
*/
|
||||||
|
function selectMassAction($selected, $arrayofaction)
|
||||||
|
{
|
||||||
|
global $conf,$langs,$hookmanager;
|
||||||
|
|
||||||
|
if (count($arrayofaction) == 0) return;
|
||||||
|
|
||||||
|
$disabled=0;
|
||||||
|
$ret='<div class="centpercent center"><select class="flat hideobject massaction massactionselect" name="massaction"'.($disabled?' disabled="disabled"':'').'>';
|
||||||
|
$ret.='<option value="0"'.($disabled?' disabled="disabled"':'').'>-- '.$langs->trans("SelectAction").' --</option>';
|
||||||
|
foreach($arrayofaction as $code => $label)
|
||||||
|
{
|
||||||
|
$ret.='<option value="'.$code.'"'.($disabled?' disabled="disabled"':'').'>'.$label.'</option>';
|
||||||
|
}
|
||||||
|
$ret.='</select>';
|
||||||
|
$ret.='<input type="submit" name="confirmmassaction" disabled="disabled" class="button hideobject massaction massactionconfirmed" value="'.dol_escape_htmltag($langs->trans("Confirm")).'">';
|
||||||
|
$ret.='</div>';
|
||||||
|
|
||||||
|
$ret.='<!-- JS CODE TO ENABLE mass action select -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
jQuery(document).ready(function () {
|
||||||
|
function initCheckForSelect()
|
||||||
|
{
|
||||||
|
atleastoneselected=0;
|
||||||
|
jQuery(".checkforselect").each(function( index ) {
|
||||||
|
/* console.log( index + ": " + $( this ).text() ); */
|
||||||
|
if ($(this).is(\':checked\')) atleastoneselected++;
|
||||||
|
});
|
||||||
|
console.log(atleastoneselected);
|
||||||
|
if (atleastoneselected)
|
||||||
|
{
|
||||||
|
jQuery(".massaction").show();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
jQuery(".massaction").hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
initCheckForSelect();
|
||||||
|
jQuery(".checkforselect").click(function() {
|
||||||
|
initCheckForSelect();
|
||||||
|
});
|
||||||
|
jQuery(".massactionselect").change(function() {
|
||||||
|
console.log( $( this ).val() );
|
||||||
|
if ($(this).val() != \'0\')
|
||||||
|
{
|
||||||
|
jQuery(".massactionconfirmed").prop(\'disabled\', false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
jQuery(".massactionconfirmed").prop(\'disabled\', true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
';
|
||||||
|
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return combo list of activated countries, into language of user
|
* Return combo list of activated countries, into language of user
|
||||||
*
|
*
|
||||||
|
|||||||
@ -648,7 +648,7 @@ class FormMail extends Form
|
|||||||
}
|
}
|
||||||
if ($this->param["models"]=='facture_send')
|
if ($this->param["models"]=='facture_send')
|
||||||
{
|
{
|
||||||
$url=getPaypalPaymentUrl(0,'invoice',$this->substit['__FACREF__']);
|
$url=getPaypalPaymentUrl(0,'invoice',$this->substit['__REF__']);
|
||||||
$this->substit['__PERSONALIZED__']=str_replace('\n',"\n",$langs->transnoentitiesnoconv("PredefinedMailContentLink",$url));
|
$this->substit['__PERSONALIZED__']=str_replace('\n',"\n",$langs->transnoentitiesnoconv("PredefinedMailContentLink",$url));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -692,7 +692,7 @@ class FormMail extends Form
|
|||||||
else $this->withfckeditor=0;
|
else $this->withfckeditor=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$doleditor=new DolEditor('message',$defaultmessage,'',280,$this->ckeditortoolbar,'In',true,true,$this->withfckeditor,8,72);
|
$doleditor=new DolEditor('message',$defaultmessage,'',280,$this->ckeditortoolbar,'In',true,true,$this->withfckeditor,8,'95%');
|
||||||
$out.= $doleditor->Create(1);
|
$out.= $doleditor->Create(1);
|
||||||
}
|
}
|
||||||
$out.= "</td></tr>\n";
|
$out.= "</td></tr>\n";
|
||||||
|
|||||||
@ -2338,13 +2338,13 @@ else
|
|||||||
$formmail->withto=GETPOST("sendto")?GETPOST("sendto"):$liste;
|
$formmail->withto=GETPOST("sendto")?GETPOST("sendto"):$liste;
|
||||||
$formmail->withtocc=$liste;
|
$formmail->withtocc=$liste;
|
||||||
$formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC;
|
$formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC;
|
||||||
$formmail->withtopic=$outputlangs->trans('SendBillRef','__FACREF__');
|
$formmail->withtopic=$outputlangs->trans('SendBillRef','__REF__');
|
||||||
$formmail->withfile=2;
|
$formmail->withfile=2;
|
||||||
$formmail->withbody=1;
|
$formmail->withbody=1;
|
||||||
$formmail->withdeliveryreceipt=1;
|
$formmail->withdeliveryreceipt=1;
|
||||||
$formmail->withcancel=1;
|
$formmail->withcancel=1;
|
||||||
// Tableau des substitutions
|
// Tableau des substitutions
|
||||||
$formmail->substit['__FACREF__']=$object->ref;
|
$formmail->substit['__REF__']=$object->ref;
|
||||||
$formmail->substit['__SIGNATURE__']=$user->signature;
|
$formmail->substit['__SIGNATURE__']=$user->signature;
|
||||||
$formmail->substit['__PERSONALIZED__']='';
|
$formmail->substit['__PERSONALIZED__']='';
|
||||||
$formmail->substit['__CONTACTCIVNAME__']='';
|
$formmail->substit['__CONTACTCIVNAME__']='';
|
||||||
|
|||||||
@ -74,6 +74,7 @@ PaymentsAlreadyDone=Payments already done
|
|||||||
PaymentsBackAlreadyDone=Payments back already done
|
PaymentsBackAlreadyDone=Payments back already done
|
||||||
PaymentRule=Payment rule
|
PaymentRule=Payment rule
|
||||||
PaymentMode=Payment type
|
PaymentMode=Payment type
|
||||||
|
PaymentModeShort=Payment type
|
||||||
PaymentTerm=Payment term
|
PaymentTerm=Payment term
|
||||||
PaymentConditions=Payment terms
|
PaymentConditions=Payment terms
|
||||||
PaymentConditionsShort=Payment terms
|
PaymentConditionsShort=Payment terms
|
||||||
|
|||||||
@ -84,9 +84,12 @@ EachInvoiceWillBeAttachedToEmail=A document using default invoice document templ
|
|||||||
MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s)
|
MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s)
|
||||||
SendRemind=Send reminder by EMails
|
SendRemind=Send reminder by EMails
|
||||||
RemindSent=%s reminder(s) sent
|
RemindSent=%s reminder(s) sent
|
||||||
AllRecipientSelectedForRemind=All thirdparties selected and if an email is set.
|
AllRecipientSelected=All thirdparties selected and if an email is set.
|
||||||
NoRemindSent=No EMail reminder sent
|
NoRemindSent=No EMail reminder sent
|
||||||
ResultOfMassSending=Result of mass EMail reminders sending
|
ResultOfMailSending=Result of mass EMail sending
|
||||||
|
NbSelected=Nb selected
|
||||||
|
NbIgnored=Nb ignored
|
||||||
|
NbSent=Nb sent
|
||||||
|
|
||||||
# Libelle des modules de liste de destinataires mailing
|
# Libelle des modules de liste de destinataires mailing
|
||||||
MailingModuleDescContactCompanies=Contacts/addresses of all third parties (customer, prospect, supplier, ...)
|
MailingModuleDescContactCompanies=Contacts/addresses of all third parties (customer, prospect, supplier, ...)
|
||||||
|
|||||||
@ -698,6 +698,7 @@ Deductible=Deductible
|
|||||||
from=from
|
from=from
|
||||||
toward=toward
|
toward=toward
|
||||||
Access=Access
|
Access=Access
|
||||||
|
SelectAction=Select action
|
||||||
HelpCopyToClipboard=Use Ctrl+C to copy to clipboard
|
HelpCopyToClipboard=Use Ctrl+C to copy to clipboard
|
||||||
SaveUploadedFileWithMask=Save file on server with name "<strong>%s</strong>" (otherwise "%s")
|
SaveUploadedFileWithMask=Save file on server with name "<strong>%s</strong>" (otherwise "%s")
|
||||||
OriginFileName=Original filename
|
OriginFileName=Original filename
|
||||||
|
|||||||
@ -58,13 +58,13 @@ Miscellaneous=Miscellaneous
|
|||||||
NbOfActiveNotifications=Number of notifications (nb of recipient emails)
|
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.\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__
|
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 __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__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 __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\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__
|
||||||
PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
||||||
PredefinedMailContentSendSupplierProposal=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
PredefinedMailContentSendSupplierProposal=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
||||||
PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
||||||
PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
||||||
PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __REF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
||||||
PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
||||||
PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
|
||||||
PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__
|
PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user