';
// TODO Avoid using js. We can use a direct link with $param
diff --git a/htdocs/accountancy/journal/expensereportsjournal.php b/htdocs/accountancy/journal/expensereportsjournal.php
index a767d469120..3147339601c 100644
--- a/htdocs/accountancy/journal/expensereportsjournal.php
+++ b/htdocs/accountancy/journal/expensereportsjournal.php
@@ -561,11 +561,11 @@ if (empty($action) || $action == 'view') {
}
print '
';
}
// Create event
/*if ($conf->agenda->enabled && ! empty($conf->global->MAIN_ADD_EVENT_ON_ELEMENT_CARD)) // Add hidden condition because this is not a "workflow" action so should appears somewhere else on page.
@@ -2404,7 +2486,7 @@ if ($action == 'create')
if ($usercansend) {
print '
';
$parameters = array();
- $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been
- // modified by hook
+ // Note that $action and $object may be modified by hook
+ $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action);
if (empty($reshook)) {
// Send
if ($object->statut > Commande::STATUS_DRAFT) {
if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send)) {
print '
';
}
// Create event
- /*if ($conf->agenda->enabled && ! empty($conf->global->MAIN_ADD_EVENT_ON_ELEMENT_CARD)) // Add hidden condition because this is not a
- // "workflow" action so should appears somewhere else on
- // page.
+ /*if ($conf->agenda->enabled && ! empty($conf->global->MAIN_ADD_EVENT_ON_ELEMENT_CARD))
{
+ // Add hidden condition because this is not a
+ // "workflow" action so should appears somewhere else on
+ // page.
print '' . $langs->trans("AddAction") . '';
}*/
@@ -2533,7 +2564,7 @@ if ($action == 'create' && $user->rights->commande->creer)
if ($user->rights->ficheinter->creer) {
print '
';
} else {
//if ($resteapayer == 0) { // Sometimes we can receive more, so we accept to enter more and will offer a button to convert into discount (but it is not a credit note, just a prepayment done)
- // print '
';
}
}
print '';
diff --git a/htdocs/compta/facture/class/api_invoices.class.php b/htdocs/compta/facture/class/api_invoices.class.php
index 5075d9d8cb7..1e6b1d35a8e 100644
--- a/htdocs/compta/facture/class/api_invoices.class.php
+++ b/htdocs/compta/facture/class/api_invoices.class.php
@@ -123,7 +123,7 @@ class Invoices extends DolibarrApi
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
- $sql.= ' WHERE t.entity IN ('.getEntity('facture').')';
+ $sql.= ' WHERE t.entity IN ('.getEntity('invoice').')';
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql.= " AND t.fk_soc = sc.fk_soc";
if ($socids) $sql.= " AND t.fk_soc IN (".$socids.")";
diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php
index 56f87d2eac3..5090132632e 100644
--- a/htdocs/compta/facture/class/facture-rec.class.php
+++ b/htdocs/compta/facture/class/facture-rec.class.php
@@ -340,7 +340,7 @@ class FactureRec extends CommonInvoice
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_payment_term as c ON f.fk_cond_reglement = c.rowid';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as p ON f.fk_mode_reglement = p.id';
//$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."element_element as el ON el.fk_target = f.rowid AND el.targettype = 'facture'";
- $sql.= ' WHERE f.entity IN ('.getEntity('facture').')';
+ $sql.= ' WHERE f.entity IN ('.getEntity('invoice').')';
if ($rowid) $sql.= ' AND f.rowid='.$rowid;
elseif ($ref) $sql.= " AND f.titre='".$this->db->escape($ref)."'";
/* This field are not used for template invoice
@@ -998,26 +998,25 @@ class FactureRec extends CommonInvoice
*
* WARNING: This method change temporarly context $conf->entity to be in correct context for each recurring invoice found.
*
- * @param int $restictoninvoiceid 0=All qualified template invoices found. > 0 = restrict action on invoice ID
+ * @param int $restrictioninvoiceid 0=All qualified template invoices found. > 0 = restrict action on invoice ID
* @param int $forcevalidation 1=Force validation of invoice whatever is template auto_validate flag.
* @return int 0 if OK, < 0 if KO (this function is used also by cron so only 0 is OK)
*/
- function createRecurringInvoices($restictoninvoiceid=0, $forcevalidation=0)
+ function createRecurringInvoices($restrictioninvoiceid=0, $forcevalidation=0)
{
- global $conf, $langs, $db, $user;
+ global $conf, $langs, $db, $user, $hookmanager;
$error=0;
+ $nb_create=0;
// Load translation files required by the page
- $langs->loadLangs(array("main","bills"));
-
- $nb_create=0;
+ $langs->loadLangs(array("main","bills"));
$now = dol_now();
$tmparray=dol_getdate($now);
$today = dol_mktime(23,59,59,$tmparray['mon'],$tmparray['mday'],$tmparray['year']); // Today is last second of current day
- dol_syslog("createRecurringInvoices restictoninvoiceid=".$restictoninvoiceid." forcevalidation=".$forcevalidation);
+ dol_syslog("createRecurringInvoices restrictioninvoiceid=".$restrictioninvoiceid." forcevalidation=".$forcevalidation);
$sql = 'SELECT rowid FROM '.MAIN_DB_PREFIX.'facture_rec';
$sql.= ' WHERE frequency > 0'; // A recurring invoice is an invoice with a frequency
@@ -1025,30 +1024,39 @@ class FactureRec extends CommonInvoice
$sql.= ' AND (nb_gen_done < nb_gen_max OR nb_gen_max = 0)';
$sql.= ' AND suspended = 0';
$sql.= ' AND entity = '.$conf->entity; // MUST STAY = $conf->entity here
- if ($restictoninvoiceid > 0) $sql.=' AND rowid = '.$restictoninvoiceid;
+ if ($restrictioninvoiceid > 0)
+ $sql.=' AND rowid = '.$restrictioninvoiceid;
$sql.= $db->order('entity', 'ASC');
//print $sql;exit;
+ $parameters = array(
+ 'restrictioninvoiceid' => $restrictioninvoiceid,
+ 'forcevalidation' => $forcevalidation,
+ );
+ $reshook = $hookmanager->executeHooks('beforeCreationOfRecurringInvoices', $parameters, $sql); // note that $sql might be modified by hooks
$resql = $db->query($sql);
if ($resql)
{
- $i=0;
- $num = $db->num_rows($resql);
+ $i=0;
+ $num = $db->num_rows($resql);
- if ($num) $this->output.=$langs->trans("FoundXQualifiedRecurringInvoiceTemplate", $num)."\n";
- else $this->output.=$langs->trans("NoQualifiedRecurringInvoiceTemplateFound");
+ if ($num)
+ $this->output.=$langs->trans("FoundXQualifiedRecurringInvoiceTemplate", $num)."\n";
+ else
+ $this->output.=$langs->trans("NoQualifiedRecurringInvoiceTemplateFound");
- $saventity = $conf->entity;
+ $saventity = $conf->entity;
- while ($i < $num) // Loop on each template invoice. If $num = 0, test is false at first pass.
+ while ($i < $num) // Loop on each template invoice. If $num = 0, test is false at first pass.
{
$line = $db->fetch_object($resql);
- $db->begin();
+ $db->begin();
- $invoiceidgenerated = 0;
+ $invoiceidgenerated = 0;
- $facturerec = new FactureRec($db);
+ $facture = null;
+ $facturerec = new FactureRec($db);
$facturerec->fetch($line->rowid);
if ($facturerec->id > 0)
@@ -1058,44 +1066,44 @@ class FactureRec extends CommonInvoice
dol_syslog("createRecurringInvoices Process invoice template id=".$facturerec->id.", ref=".$facturerec->ref.", entity=".$facturerec->entity);
- $facture = new Facture($db);
+ $facture = new Facture($db);
$facture->fac_rec = $facturerec->id; // We will create $facture from this recurring invoice
$facture->fk_fac_rec_source = $facturerec->id; // We will create $facture from this recurring invoice
- $facture->type = self::TYPE_STANDARD;
- $facture->brouillon = 1;
- $facture->date = (empty($facturerec->date_when)?$now:$facturerec->date_when); // We could also use dol_now here but we prefer date_when so invoice has real date when we would like even if we generate later.
- $facture->socid = $facturerec->socid;
+ $facture->type = self::TYPE_STANDARD;
+ $facture->brouillon = 1;
+ $facture->date = (empty($facturerec->date_when)?$now:$facturerec->date_when); // We could also use dol_now here but we prefer date_when so invoice has real date when we would like even if we generate later.
+ $facture->socid = $facturerec->socid;
- $invoiceidgenerated = $facture->create($user);
- if ($invoiceidgenerated <= 0)
- {
- $this->errors = $facture->errors;
- $this->error = $facture->error;
- $error++;
- }
- if (! $error && ($facturerec->auto_validate || $forcevalidation))
- {
- $result = $facture->validate($user);
- if ($result <= 0)
- {
- $this->errors = $facture->errors;
- $this->error = $facture->error;
- $error++;
- }
- }
- if (! $error && $facturerec->generate_pdf)
- {
- // We refresh the object in order to have all necessary data (like date_lim_reglement)
- $facture->fetch($facture->id);
- $result = $facture->generateDocument($facturerec->modelpdf, $langs);
- if ($result <= 0)
- {
- $this->errors = $facture->errors;
- $this->error = $facture->error;
- $error++;
- }
- }
+ $invoiceidgenerated = $facture->create($user);
+ if ($invoiceidgenerated <= 0)
+ {
+ $this->errors = $facture->errors;
+ $this->error = $facture->error;
+ $error++;
+ }
+ if (! $error && ($facturerec->auto_validate || $forcevalidation))
+ {
+ $result = $facture->validate($user);
+ if ($result <= 0)
+ {
+ $this->errors = $facture->errors;
+ $this->error = $facture->error;
+ $error++;
+ }
+ }
+ if (! $error && $facturerec->generate_pdf)
+ {
+ // We refresh the object in order to have all necessary data (like date_lim_reglement)
+ $facture->fetch($facture->id);
+ $result = $facture->generateDocument($facturerec->modelpdf, $langs);
+ if ($result <= 0)
+ {
+ $this->errors = $facture->errors;
+ $this->error = $facture->error;
+ $error++;
+ }
+ }
}
else
{
@@ -1114,9 +1122,19 @@ class FactureRec extends CommonInvoice
}
else
{
- $db->rollback("createRecurringInvoices Process invoice template id=".$facturerec->id.", ref=".$facturerec->ref);
+ $db->rollback("createRecurringInvoices Process invoice template id=".$facturerec->id.", ref=".$facturerec->ref);
}
+ $parameters = array(
+ 'cpt' => $i,
+ 'total' => $num,
+ 'errorCount' => $error,
+ 'invoiceidgenerated' => $invoiceidgenerated,
+ 'facturerec' => $facturerec, // it's an object which PHP passes by "reference", so modifiable by hooks.
+ 'this' => $this, // it's an object which PHP passes by "reference", so modifiable by hooks.
+ );
+ $reshook = $hookmanager->executeHooks('afterCreationOfRecurringInvoice', $parameters, $facture); // note: $facture can be modified by hooks (warning: $facture can be null)
+
$i++;
}
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index 1bd942cfa89..c81ea34bb24 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -1334,7 +1334,7 @@ class Facture extends CommonInvoice
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_incoterms as i ON f.fk_incoterms = i.rowid';
if ($rowid) $sql.= " WHERE f.rowid=".$rowid;
- else $sql.= ' WHERE f.entity IN ('.getEntity('facture').')'; // Dont't use entity if you use rowid
+ else $sql.= ' WHERE f.entity IN ('.getEntity('invoice').')'; // Dont't use entity if you use rowid
if ($ref) $sql.= " AND f.ref='".$this->db->escape($ref)."'";
if ($ref_ext) $sql.= " AND f.ref_ext='".$this->db->escape($ref_ext)."'";
@@ -4144,7 +4144,7 @@ class Facture extends CommonInvoice
function newCycle()
{
$sql = 'SELECT max(situation_cycle_ref) FROM ' . MAIN_DB_PREFIX . 'facture as f';
- $sql.= " WHERE f.entity in (".getEntity('facture', 0).")";
+ $sql.= " WHERE f.entity in (".getEntity('invoice', 0).")";
$resql = $this->db->query($sql);
if ($resql) {
if ($resql->num_rows > 0)
diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php
index 856433173ad..ab5dda7186f 100644
--- a/htdocs/compta/facture/fiche-rec.php
+++ b/htdocs/compta/facture/fiche-rec.php
@@ -1674,7 +1674,7 @@ else
{
if (! empty($object->frequency) && $object->nb_gen_max > 0 && ($object->nb_gen_done >= $object->nb_gen_max))
{
- print '
';
}
@@ -1293,9 +1298,20 @@ else
$parameters=array();
$reshook=$hookmanager->executeHooks('addMoreActionsButtons',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
- if (empty($reshook))
+ if (empty($reshook) && $action!='presend')
{
- if ($user->rights->societe->contact->creer)
+ if (! empty($object->email))
+ {
+ $langs->load("mails");
+ print '
';
}
}
diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php
index 056362bb2d2..07c18ad42f9 100644
--- a/htdocs/contrat/list.php
+++ b/htdocs/contrat/list.php
@@ -364,6 +364,7 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
// List of mass actions available
$arrayofmassactions = array(
+ 'generate_doc'=>$langs->trans("Generate"),
'presend'=>$langs->trans("SendByMail"),
'builddoc'=>$langs->trans("PDFMerge"),
);
diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php
index b56f40c269d..a71629e947d 100644
--- a/htdocs/core/actions_massactions.inc.php
+++ b/htdocs/core/actions_massactions.inc.php
@@ -1169,6 +1169,67 @@ if (! $error && ($massaction == 'delete' || ($action == 'delete' && $confirm ==
//var_dump($listofobjectthirdparties);exit;
}
+// Generate document foreach object according to model linked to object
+// @TODO : propose model selection
+if (! $error && $massaction == 'generate_doc' && $permtoread)
+{
+ $db->begin();
+
+ $objecttmp=new $objectclass($db);
+ $nbok = 0;
+ foreach($toselect as $toselectid)
+ {
+ $result=$objecttmp->fetch($toselectid);
+ if ($result > 0)
+ {
+ $outputlangs = $langs;
+ $newlang='';
+
+ if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','aZ09')) $newlang=GETPOST('lang_id','aZ09');
+ if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($objecttmp->thirdparty->default_lang)) $newlang=$objecttmp->thirdparty->default_lang; // for proposal, order, invoice, ...
+ if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($objecttmp->default_lang)) $newlang=$objecttmp->default_lang; // for thirdparty
+ if (! empty($newlang))
+ {
+ $outputlangs = new Translate("",$conf);
+ $outputlangs->setDefaultLang($newlang);
+ }
+
+ // To be sure vars is defined
+ if (empty($hidedetails)) $hidedetails=0;
+ if (empty($hidedesc)) $hidedesc=0;
+ if (empty($hideref)) $hideref=0;
+ if (empty($moreparams)) $moreparams=null;
+
+ $result= $objecttmp->generateDocument($objecttmp->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
+
+ if ($result <= 0)
+ {
+ setEventMessages($objecttmp->error, $objecttmp->errors, 'errors');
+ $error++;
+ break;
+ }
+ else $nbok++;
+ }
+ else
+ {
+ setEventMessages($objecttmp->error, $objecttmp->errors, 'errors');
+ $error++;
+ break;
+ }
+ }
+
+ if (! $error)
+ {
+ if ($nbok > 1) setEventMessages($langs->trans("RecordsGenerated", $nbok), null, 'mesgs');
+ else setEventMessages($langs->trans("RecordGenerated", $nbok), null, 'mesgs');
+ $db->commit();
+ }
+ else
+ {
+ $db->rollback();
+ }
+}
+
$parameters['toselect']=$toselect;
$parameters['uploaddir']=$uploaddir;
diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php
index 9ffaceadb26..429529a15ac 100644
--- a/htdocs/core/actions_sendmails.inc.php
+++ b/htdocs/core/actions_sendmails.inc.php
@@ -113,7 +113,7 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
$result=$object->fetch($id);
$sendtosocid=0; // Thirdparty on object
- if (method_exists($object,"fetch_thirdparty") && ! in_array($object->element, array('societe','member','user','expensereport')))
+ if (method_exists($object,"fetch_thirdparty") && ! in_array($object->element, array('societe','member','user','expensereport', 'contact')))
{
$result=$object->fetch_thirdparty();
if ($object->element == 'user' && $result == 0) $result=1; // Even if not found, we consider ok
@@ -130,6 +130,11 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
$thirdparty=$object;
if ($thirdparty->id > 0) $sendtosocid=$thirdparty->id;
}
+ else if ($object->element == 'contact')
+ {
+ $contact=$object;
+ if ($contact->id > 0) $sendtosocid=$contact->fetch_thirdparty()->id;
+ }
else dol_print_error('','Use actions_sendmails.in.php for an element/object that is not supported');
if (is_object($hookmanager))
@@ -171,6 +176,11 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
{
$tmparray[] = dol_string_nospecial($thirdparty->name, ' ', array(",")).' <'.$thirdparty->email.'>';
}
+ // Recipient was provided from combo list
+ elseif ($val == 'contact') // Id of contact
+ {
+ $tmparray[] = dol_string_nospecial($contact->name, ' ', array(",")).' <'.$contact->email.'>';
+ }
elseif ($val) // Id du contact
{
$tmparray[] = $thirdparty->contact_get_property((int) $val,'email');
@@ -215,6 +225,11 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
{
$tmparray[] = dol_string_nospecial($thirdparty->name, ' ', array(",")).' <'.$thirdparty->email.'>';
}
+ // Recipient was provided from combo list
+ elseif ($val == 'contact') // Id of contact
+ {
+ $tmparray[] = dol_string_nospecial($contact->name, ' ', array(",")).' <'.$contact->email.'>';
+ }
elseif ($val) // Id du contact
{
$tmparray[] = $thirdparty->contact_get_property((int) $val,'email');
diff --git a/htdocs/core/boxes/box_activity.php b/htdocs/core/boxes/box_activity.php
index bd3163268ac..413dc43d8b2 100644
--- a/htdocs/core/boxes/box_activity.php
+++ b/htdocs/core/boxes/box_activity.php
@@ -289,7 +289,7 @@ class box_activity extends ModeleBoxes
$sql.= " FROM (".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f";
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= ")";
- $sql.= " WHERE f.entity IN (".getEntity('facture').')';
+ $sql.= " WHERE f.entity IN (".getEntity('invoice').')';
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
if($user->societe_id) $sql.= " AND s.rowid = ".$user->societe_id;
$sql.= " AND f.fk_soc = s.rowid";
@@ -371,7 +371,7 @@ class box_activity extends ModeleBoxes
if ($refresh) {
$sql = "SELECT f.fk_statut, SUM(f.total_ttc) as Mnttot, COUNT(*) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f";
- $sql.= " WHERE f.entity IN (".getEntity('facture').')';
+ $sql.= " WHERE f.entity IN (".getEntity('invoice').')';
$sql.= " AND f.fk_soc = s.rowid";
$sql.= " AND f.datef >= '".$db->idate($tmpdate)."' AND f.paye=0";
$sql.= " GROUP BY f.fk_statut";
diff --git a/htdocs/core/class/comment.class.php b/htdocs/core/class/comment.class.php
index b731eb77169..332f7e115ef 100644
--- a/htdocs/core/class/comment.class.php
+++ b/htdocs/core/class/comment.class.php
@@ -357,7 +357,7 @@ class Comment extends CommonObject
}
$db->free($resql);
} else {
- $error++; $this->errors[]="Error ".$this->db->lasterror();
+ $this->errors[]="Error ".$this->db->lasterror();
return -1;
}
}
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 4f2d32292cf..b7b4f79300f 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -6118,13 +6118,13 @@ abstract class CommonObject
{
$value_arr=explode(',',$value);
$value='';
- if (is_array($value_arr))
+ if (is_array($value_arr) && count($value_arr)>0)
{
foreach ($value_arr as $keyval=>$valueval) {
$toprint[]='
'.$param['options'][$valueval].'
';
}
+ $value='
'.implode(' ', $toprint).'
';
}
- $value='
'.implode(' ', $toprint).'
';
}
elseif ($type == 'chkbxlst')
{
diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php
index a52a759f841..3fcc8532af6 100644
--- a/htdocs/core/class/extrafields.class.php
+++ b/htdocs/core/class/extrafields.class.php
@@ -1333,7 +1333,58 @@ class ExtraFields
// current object id can be use into filter
if (strpos($InfoFieldList[4], '$ID$')!==false && !empty($objectid)) {
$InfoFieldList[4]=str_replace('$ID$',$objectid,$InfoFieldList[4]);
- } else {
+ } else if (preg_match("#^.*list.php$#",$_SERVER["DOCUMENT_URI"])) {
+ // Pattern for word=$ID$
+ $word = '\b[a-zA-Z0-9-\.-_]+\b=\$ID\$';
+
+ // Removing space arount =, ( and )
+ $InfoFieldList[4]=preg_replace('# *(=|\(|\)) *#','$1', $InfoFieldList[4]);
+
+ $nbPreg = 1;
+ // While we have parenthesis
+ while ($nbPreg!=0) {
+ // Init des compteurs
+ $nbPregRepl = $nbPregSel = 0;
+ // On retire toutes les parenthèses sans = avant
+ $InfoFieldList[4]=preg_replace( '#([^=])(\([^)^(]*(' . $word . ')[^)^(]*\))#','$1 $3 ',$InfoFieldList[4],-1,$nbPregRepl);
+ // On retire les espaces autour des = et parenthèses
+ $InfoFieldList[4]=preg_replace('# *(=|\(|\)) *#','$1', $InfoFieldList[4]);
+ // On retire toutes les parenthèses avec = avant
+ $InfoFieldList[4]=preg_replace( '#\b[a-zA-Z0-9-\.-_]+\b=\([^)^(]*(' . $word . ')[^)^(]*\)#','$1 ',$InfoFieldList[4], -1, $nbPregSel);
+ // On retire les espaces autour des = et parenthèses
+ $InfoFieldList[4]=preg_replace('# *(=|\(|\)) *#','$1', $InfoFieldList[4]);
+
+ // Calcul du compteur général pour la boucle
+ $nbPreg = $nbPregRepl + $nbPregSel;
+ }
+
+ // Si l'on a un AND ou un OR, avant ou après
+ preg_match('#(AND|OR|) *('.$word.') *(AND|OR|)#',$InfoFieldList[4],$matchCondition);
+ while(!empty($matchCondition[0])) {
+ // If the two sides differ but are not empty
+ if (! empty($matchCondition[1]) && ! empty($matchCondition[3]) && $matchCondition[1] != $matchCondition[3] ) {
+ // Nobody sain would do that without parentheses
+ $InfoFieldList[4]=str_replace('$ID$','0',$InfoFieldList[4]);
+ }
+ else {
+ if (! empty($matchCondition[1])) {
+ $boolCond =(( $matchCondition[1] == "AND" )?' AND 1 ':' OR 0 ');
+ $InfoFieldList[4]=str_replace($matchCondition[0],$boolCond.$matchCondition[3],$InfoFieldList[4]);
+ }
+ else if (! empty($matchCondition[3])) {
+ $boolCond =(( $matchCondition[3] == "AND" )?' 1 AND ':' 0 OR');
+ $InfoFieldList[4]=str_replace($matchCondition[0],$boolCond,$InfoFieldList[4]);
+ }
+ else {
+ $InfoFieldList[4] = 1;
+ }
+ }
+
+ // Si l'on a un AND ou un OR, avant ou après
+ preg_match('#(AND|OR|) *('.$word.') *(AND|OR|)#',$InfoFieldList[4],$matchCondition);
+ }
+ }
+ else {
$InfoFieldList[4]=str_replace('$ID$','0',$InfoFieldList[4]);
}
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 98bfd2af726..8c17f189502 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -18,7 +18,8 @@
* Copyright (C) 2014 Alexandre Spangaro
* Copyright (C) 2018 Ferran Marcet
* Copyright (C) 2018 Frédéric France
- * Copyright (C) 2018 Nicolas ZABOURI
+ * Copyright (C) 2018 Nicolas ZABOURI
+ * Copyright (C) 2018 Christophe Battarel
* Copyright (C) 2018 Josep Lluis Amador
*
* This program is free software; you can redistribute it and/or modify
@@ -1391,6 +1392,8 @@ class Form
* Return HTML code of the SELECT of list of all contacts (for a third party or all).
* This also set the number of contacts found into $this->num
*
+ * @since 9.0 Add afterSelectContactOptions hook
+ *
* @param int $socid Id ot third party or 0 for all or -1 for empty list
* @param array|int $selected Array of ID of pre-selected contact id
* @param string $htmlname Name of HTML field ('none' for a not editable field)
@@ -1410,7 +1413,7 @@ class Form
*/
function selectcontacts($socid, $selected='', $htmlname='contactid', $showempty=0, $exclude='', $limitto='', $showfunction=0, $moreclass='', $options_only=false, $showsoc=0, $forcecombo=0, $events=array(), $moreparam='', $htmlid='', $multiple=false)
{
- global $conf,$langs;
+ global $conf,$langs,$hookmanager,$action;
$langs->load('companies');
@@ -1418,9 +1421,15 @@ class Form
if ($selected === '') $selected = array();
else if (!is_array($selected)) $selected = array($selected);
- $out='';
+ $out='';
- // On recherche les societes
+ if (! is_object($hookmanager))
+ {
+ include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
+ $hookmanager=new HookManager($this->db);
+ }
+
+ // We search third parties
$sql = "SELECT sp.rowid, sp.lastname, sp.statut, sp.firstname, sp.poste";
if ($showsoc > 0) $sql.= " , s.nom as company";
$sql.= " FROM ".MAIN_DB_PREFIX ."socpeople as sp";
@@ -1505,6 +1514,18 @@ class Form
$out.= ($socid != -1) ? ($langs->trans($socid?"NoContactDefinedForThirdParty":"NoContactDefined")) : $langs->trans('SelectAThirdPartyFirst');
$out.= '';
}
+
+ $parameters = array(
+ 'socid'=>$socid,
+ 'htmlname'=>$htmlname,
+ 'resql'=>$resql,
+ 'out'=>&$out,
+ 'showfunction'=>$showfunction,
+ 'showsoc'=>$showsoc,
+ );
+
+ $reshook = $hookmanager->executeHooks( 'afterSelectContactOptions', $parameters, $this, $action ); // Note that $action and $object may have been modified by some hooks
+
if ($htmlname != 'none' || $options_only)
{
$out.= '';
@@ -2037,20 +2058,20 @@ class Form
$selectFields = " p.rowid, p.label, p.ref, p.description, p.barcode, p.fk_product_type, p.price, p.price_ttc, p.price_base_type, p.tva_tx, p.duration, p.fk_price_expression";
(count($warehouseStatusArray)) ? $selectFieldsGrouped = ", sum(ps.reel) as stock" : $selectFieldsGrouped = ", p.stock";
-
+
$sql = "SELECT ";
$sql.= $selectFields . $selectFieldsGrouped;
-
+
if (! empty($conf->global->PRODUCT_SORT_BY_CATEGORY))
{
//Product category
$sql.= ", (SELECT ".MAIN_DB_PREFIX."categorie_product.fk_categorie
FROM ".MAIN_DB_PREFIX."categorie_product
- WHERE ".MAIN_DB_PREFIX."categorie_product.fk_product=p.rowid
+ WHERE ".MAIN_DB_PREFIX."categorie_product.fk_product=p.rowid
LIMIT 1
) AS categorie_product_id ";
}
-
+
//Price by customer
if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES) && !empty($socid))
{
@@ -2143,6 +2164,11 @@ class Form
if ($i > 0) $sql.=" AND ";
$sql.="(p.ref LIKE '".$db->escape($prefix.$crit)."%' OR p.label LIKE '".$db->escape($prefix.$crit)."%'";
if (! empty($conf->global->MAIN_MULTILANGS)) $sql.=" OR pl.label LIKE '".$db->escape($prefix.$crit)."%'";
+ if (!empty($conf->global->PRODUCT_AJAX_SEARCH_ON_DESCRIPTION))
+ {
+ $sql.=" OR p.description LIKE '".$db->escape($prefix.$crit)."%'";
+ if (! empty($conf->global->MAIN_MULTILANGS)) $sql.=" OR pl.description LIKE '".$db->escape($prefix.$crit)."%'";
+ }
if (! empty($conf->global->MAIN_SEARCH_PRODUCT_BY_FOURN_REF)) $sql.=" OR pfp.ref_fourn LIKE '".$db->escape($prefix.$crit)."%'";
$sql.=")";
$i++;
@@ -2155,7 +2181,7 @@ class Form
{
$sql.= ' GROUP BY'.$selectFields;
}
-
+
//Sort by category
if(! empty($conf->global->PRODUCT_SORT_BY_CATEGORY))
{
@@ -2169,7 +2195,7 @@ class Form
}
$sql.= $db->plimit($limit, 0);
-
+
// Build output string
dol_syslog(get_class($this)."::select_produits_list search product", LOG_DEBUG);
$result=$this->db->query($sql);
@@ -3559,7 +3585,7 @@ class Form
* @param int $useempty 1=Add an empty value in list, 2=Add an empty value in list only if there is more than 2 entries.
* @param string $moreattrib To add more attribute on select
* @param int $showcurrency Show currency in label
- * @return void
+ * @return int <0 if error, Num of bank account found if OK (0, 1, 2, ...)
*/
function select_comptes($selected='',$htmlname='accountid',$statut=0,$filtre='',$useempty=0,$moreattrib='',$showcurrency=0)
{
@@ -3567,6 +3593,7 @@ class Form
global $langs, $conf;
$langs->load("admin");
+ $num = 0;
$sql = "SELECT rowid, label, bank, clos as status, currency_code";
$sql.= " FROM ".MAIN_DB_PREFIX."bank_account";
@@ -3610,13 +3637,15 @@ class Form
}
else
{
- if ($statut == 0) print $langs->trans("NoActiveBankAccountDefined");
- else print $langs->trans("NoBankAccountFound");
+ if ($statut == 0) print ''.$langs->trans("NoActiveBankAccountDefined").'';
+ else print ''.$langs->trans("NoBankAccountFound").'';
}
}
else {
dol_print_error($this->db);
}
+
+ return $num;
}
/**
@@ -3635,8 +3664,8 @@ class Form
print '
';
} else {
@@ -6443,8 +6472,8 @@ class Form
$possiblelinks=array(
'propal'=>array('enabled'=>$conf->propal->enabled, 'perms'=>1, 'label'=>'LinkToProposal', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_client, t.total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."propal as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('propal').')'),
'order'=>array('enabled'=>$conf->commande->enabled, 'perms'=>1, 'label'=>'LinkToOrder', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_client, t.total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."commande as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('commande').')'),
- 'invoice'=>array('enabled'=>$conf->facture->enabled, 'perms'=>1, 'label'=>'LinkToInvoice', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref as ref, t.ref_client, t.total as total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('facture').')'),
- 'invoice_template'=>array('enabled'=>$conf->facture->enabled, 'perms'=>1, 'label'=>'LinkToTemplateInvoice', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.titre as ref, t.total as total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture_rec as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('facture').')'),
+ 'invoice'=>array('enabled'=>$conf->facture->enabled, 'perms'=>1, 'label'=>'LinkToInvoice', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_client, t.total as total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('invoice').')'),
+ 'invoice_template'=>array('enabled'=>$conf->facture->enabled, 'perms'=>1, 'label'=>'LinkToTemplateInvoice', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.titre as ref, t.total as total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture_rec as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('invoice').')'),
'contrat'=>array('enabled'=>$conf->contrat->enabled , 'perms'=>1, 'label'=>'LinkToContract', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_supplier, '' as total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('contract').')'),
'fichinter'=>array('enabled'=>$conf->ficheinter->enabled, 'perms'=>1, 'label'=>'LinkToIntervention', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."fichinter as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('intervention').')'),
'supplier_proposal'=>array('enabled'=>$conf->supplier_proposal->enabled , 'perms'=>1, 'label'=>'LinkToSupplierProposal', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, '' as ref_supplier, t.total_ht FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."supplier_proposal as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('supplier_proposal').')'),
@@ -6712,8 +6741,22 @@ class Form
// accesskey is for Windows or Linux: ALT + key for chrome, ALT + SHIFT + KEY for firefox
// accesskey is for Mac: CTRL + key for all browsers
- $previous_ref = $object->ref_previous?'':'';
- $next_ref = $object->ref_next?'':'';
+ $stringforfirstkey = $langs->trans("KeyboardShortcut");
+ if ($conf->browser->name == 'chrome')
+ {
+ $stringforfirstkey .= ' ALT +';
+ }
+ elseif ($conf->browser->name == 'firefox')
+ {
+ $stringforfirstkey .= ' ALT + SHIFT +';
+ }
+ else
+ {
+ $stringforfirstkey .= ' CTL +';
+ }
+
+ $previous_ref = $object->ref_previous?'':'';
+ $next_ref = $object->ref_next?'':'';
}
//print "xx".$previous_ref."x".$next_ref;
diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php
index 6dd2264bf8b..caed0fe9063 100644
--- a/htdocs/core/class/html.formmail.class.php
+++ b/htdocs/core/class/html.formmail.class.php
@@ -751,39 +751,8 @@ class FormMail extends Form
}
// CCC
- if (! empty($this->withtoccc) || is_array($this->withtoccc))
- {
- $out.= '
';
}
if (! empty($conf->global->FICHINTER_CLASSIFY_BILLED)) // Option deprecated. In a future, billed must be managed with a dedicated field to 0 or 1
diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php
index c26e642a651..85f92f55f85 100644
--- a/htdocs/fichinter/list.php
+++ b/htdocs/fichinter/list.php
@@ -269,6 +269,7 @@ if ($resql)
// List of mass actions available
$arrayofmassactions = array(
+ 'generate_doc'=>$langs->trans("Generate"),
//'presend'=>$langs->trans("SendByMail"),
'builddoc'=>$langs->trans("PDFMerge"),
);
diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php
index 235a3c85396..f017cce90ab 100644
--- a/htdocs/fourn/card.php
+++ b/htdocs/fourn/card.php
@@ -780,7 +780,7 @@ if ($object->id > 0)
{
if ($object->status != 1)
{
- print '
';
diff --git a/htdocs/langs/ar_SA/other.lang b/htdocs/langs/ar_SA/other.lang
index 55a27196753..f3338b68cdd 100644
--- a/htdocs/langs/ar_SA/other.lang
+++ b/htdocs/langs/ar_SA/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/bg_BG/other.lang b/htdocs/langs/bg_BG/other.lang
index 6558f3277a6..a49e2bdc2dc 100644
--- a/htdocs/langs/bg_BG/other.lang
+++ b/htdocs/langs/bg_BG/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/bn_BD/other.lang b/htdocs/langs/bn_BD/other.lang
index ec0315b94cd..021bfe65985 100644
--- a/htdocs/langs/bn_BD/other.lang
+++ b/htdocs/langs/bn_BD/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/bs_BA/other.lang b/htdocs/langs/bs_BA/other.lang
index 329e6b0ab2c..f8f63550fb2 100644
--- a/htdocs/langs/bs_BA/other.lang
+++ b/htdocs/langs/bs_BA/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/ca_ES/other.lang b/htdocs/langs/ca_ES/other.lang
index 5b044952637..2a9b21a0672 100644
--- a/htdocs/langs/ca_ES/other.lang
+++ b/htdocs/langs/ca_ES/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__ (Sincerely) __\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__ (Sincerely) __\n\n__USER_SIGNATURE__
PredefinedMailContentLink=Podeu fer clic a l'enllaç següent per fer el pagament si encara no està fet.\n\n%s\n\n
DemoDesc=Dolibarr és un ERP/CRM per a la gestió de negocis (professionals o associacions), compost de mòduls funcionals independents i opcionals. Una demostració que incloga tots aquests mòduls no té sentit perquè no utilitzarà tots els mòduls al mateix temps. Per això, hi han disponibles diferents tipus de perfils de demostració.
diff --git a/htdocs/langs/cs_CZ/other.lang b/htdocs/langs/cs_CZ/other.lang
index e2c32ee9e0f..fad89925f19 100644
--- a/htdocs/langs/cs_CZ/other.lang
+++ b/htdocs/langs/cs_CZ/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr je kompaktní ERP/CRM systém, který se skládá z více funkčních modulů. Demo, které obsahuje všechny moduly vám nepředstaví všechny možnosti, protože v reálné situaci všechny moduly najednou používat nebudete. Pro lepší a snadnější seznámení s celým systémem máte k dispozici několik demo profilů lépe vystihujících vaše požadavky.
diff --git a/htdocs/langs/da_DK/other.lang b/htdocs/langs/da_DK/other.lang
index a1753ae741a..e6c9d78ccd5 100644
--- a/htdocs/langs/da_DK/other.lang
+++ b/htdocs/langs/da_DK/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hej)__\n\nVenligst find vedlagte fak
PredefinedMailContentSendShipping=__(Hej)__\n\nSe venligst vedhæftet fragt __REF__\n\n\n__ (Sincerely) __\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hej)__\n\nVenligst find vedhæftet intervention __REF__\n\n\n__ (Sincerely) __\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hej)__\n\n\n__ (Sincerely) __\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hej)__\n\n\n__ (Sincerely) __\n\n__USER_SIGNATURE__
PredefinedMailContentLink=Du kan klikke på linket herunder for at foretage din betaling, hvis den ikke allerede er færdig.\n\n%s\n\n
DemoDesc=Dolibarr er en kompakt ERP / CRM, der understøtter flere forretningsmoduler. En demo, der viser alle moduler, giver ingen mening, da dette scenario aldrig forekommer (flere hundrede tilgængelige). Så flere demo profiler er tilgængelige.
diff --git a/htdocs/langs/de_DE/other.lang b/htdocs/langs/de_DE/other.lang
index a1cfc329ecd..d4cfa4feab6 100644
--- a/htdocs/langs/de_DE/other.lang
+++ b/htdocs/langs/de_DE/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=Sie können den folgenden Link anklicken um die Zahlung auszuführen, falls sie noch nicht getätigt wurde.\n\n%s\n\n
DemoDesc=Dolibarr ist eine Management-Software die mehrere Business-Module anbietet. Eine Demo, die alle Module beinhaltet ist nicht sinnvoll , weil der Fall nie existiert (Hunderte von verfügbaren Module). Es stehen auch einige Demo-Profile Typen zur Verfügung.
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index d2834c45760..838365d99fe 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -651,9 +651,9 @@ ValueIsValid=Value is valid
ValueIsNotValid=Value is not valid
RecordCreatedSuccessfully=Record created successfully
RecordModifiedSuccessfully=Record modified successfully
-RecordsModified=%s record(s) modified
-RecordsDeleted=%s record(s) deleted
-RecordsGenerated=%s record(s) generated
+RecordsModified=%s record modified
+RecordsDeleted=%s record deleted
+RecordsGenerated=%s record generated
AutomaticCode=Automatic code
FeatureDisabled=Feature disabled
MoveBox=Move widget
diff --git a/htdocs/langs/es_ES/other.lang b/htdocs/langs/es_ES/other.lang
index fd13746007a..d7579c98fc6 100644
--- a/htdocs/langs/es_ES/other.lang
+++ b/htdocs/langs/es_ES/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nNos ponemos en contacto
PredefinedMailContentSendShipping=__(Hello)__\n\nNos ponemos en contacto con usted para facilitarle el presupuesto __PREF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nNos ponemos en contacto con usted para facilitarle el presupuesto __PREF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hola)__\n\n\n__(Sinceramente)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hola)__\n\n\n__(Sinceramente)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=Puede hacer clic en el siguiente enlace para realizar su pago, si aún no lo ha hecho.\n\n%s\n\n
DemoDesc=Dolibarr es un ERP/CRM para la gestión de negocios (profesionales o asociaciones), compuesto de módulos funcionales independientes y opcionales. Una demostración que incluya todos estos módulos no tiene sentido porque no utilizará todos los módulos. Además, tiene disponibles varios tipos de perfiles de demostración.
diff --git a/htdocs/langs/et_EE/other.lang b/htdocs/langs/et_EE/other.lang
index 71ac2bca2a0..ae98e6e4940 100644
--- a/htdocs/langs/et_EE/other.lang
+++ b/htdocs/langs/et_EE/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/eu_ES/other.lang b/htdocs/langs/eu_ES/other.lang
index 1401e5f2d96..82abec228c5 100644
--- a/htdocs/langs/eu_ES/other.lang
+++ b/htdocs/langs/eu_ES/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/fi_FI/other.lang b/htdocs/langs/fi_FI/other.lang
index 027dedfb83e..bf459454ba0 100644
--- a/htdocs/langs/fi_FI/other.lang
+++ b/htdocs/langs/fi_FI/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/fr_FR/accountancy.lang b/htdocs/langs/fr_FR/accountancy.lang
index 62263b0597d..b6d065edfa9 100644
--- a/htdocs/langs/fr_FR/accountancy.lang
+++ b/htdocs/langs/fr_FR/accountancy.lang
@@ -235,6 +235,7 @@ ListOfProductsWithoutAccountingAccount=Liste des produits non liés à un compte
ChangeBinding=Changer les liens
Accounted=Comptabilisé
NotYetAccounted=Pas encore comptabilisé
+AccountantFiles = Justificatifs comptablilité
## Admin
ApplyMassCategories=Application en masse des catégories
diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang
index ebb13aca043..fb34215d9b2 100644
--- a/htdocs/langs/fr_FR/other.lang
+++ b/htdocs/langs/fr_FR/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nVeuillez trouver la fact
PredefinedMailContentSendShipping=__(Hello)__\n\nVeuillez trouver ci-joint l'expédition __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nVeuillez trouver l'intervention ci-jointe __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=Vous pouvez cliquer sur le lien ci-dessous pour effectuer votre paiement si ce n'est déjà fait.\n\n%s\n\n
DemoDesc=Dolibarr est un logiciel de gestion proposant plusieurs modules métiers. Une démonstration qui inclut tous ces modules n'a pas de sens car ce cas n'existe jamais (plusieurs centaines de modules disponibles). Aussi, quelques profils type de démo sont disponibles.
diff --git a/htdocs/langs/he_IL/other.lang b/htdocs/langs/he_IL/other.lang
index 5e993be5133..4a8162a8557 100644
--- a/htdocs/langs/he_IL/other.lang
+++ b/htdocs/langs/he_IL/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/hr_HR/other.lang b/htdocs/langs/hr_HR/other.lang
index f4ff3ea6d8e..419d7ff1c39 100644
--- a/htdocs/langs/hr_HR/other.lang
+++ b/htdocs/langs/hr_HR/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/hu_HU/other.lang b/htdocs/langs/hu_HU/other.lang
index d00f6b9f0c6..da4f9c1e000 100644
--- a/htdocs/langs/hu_HU/other.lang
+++ b/htdocs/langs/hu_HU/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/id_ID/other.lang b/htdocs/langs/id_ID/other.lang
index db3a88b9c1a..47f4a5e72d9 100644
--- a/htdocs/langs/id_ID/other.lang
+++ b/htdocs/langs/id_ID/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/is_IS/other.lang b/htdocs/langs/is_IS/other.lang
index 247ddedc5af..de8a3def77e 100644
--- a/htdocs/langs/is_IS/other.lang
+++ b/htdocs/langs/is_IS/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/it_IT/other.lang b/htdocs/langs/it_IT/other.lang
index 72b1331fba4..74b9e7a1cbf 100644
--- a/htdocs/langs/it_IT/other.lang
+++ b/htdocs/langs/it_IT/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr è un ERP/CRM compatto composto di diversi moduli funzionali. Un demo comprendente tutti i moduli non ha alcun senso, perché un caso simile non esiste nella realtà. Sono dunque disponibili diversi profili demo.
diff --git a/htdocs/langs/ja_JP/other.lang b/htdocs/langs/ja_JP/other.lang
index d9e958e64c3..88f729df532 100644
--- a/htdocs/langs/ja_JP/other.lang
+++ b/htdocs/langs/ja_JP/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/ka_GE/other.lang b/htdocs/langs/ka_GE/other.lang
index ec0315b94cd..021bfe65985 100644
--- a/htdocs/langs/ka_GE/other.lang
+++ b/htdocs/langs/ka_GE/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/kn_IN/other.lang b/htdocs/langs/kn_IN/other.lang
index 53af6c5beec..593eee74131 100644
--- a/htdocs/langs/kn_IN/other.lang
+++ b/htdocs/langs/kn_IN/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/ko_KR/other.lang b/htdocs/langs/ko_KR/other.lang
index 2c071cefa30..e2ab9513e39 100644
--- a/htdocs/langs/ko_KR/other.lang
+++ b/htdocs/langs/ko_KR/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/lo_LA/other.lang b/htdocs/langs/lo_LA/other.lang
index 363bfed21af..15ef5b3e164 100644
--- a/htdocs/langs/lo_LA/other.lang
+++ b/htdocs/langs/lo_LA/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/lt_LT/other.lang b/htdocs/langs/lt_LT/other.lang
index 1aecb06a3e0..ac3a2e397ef 100644
--- a/htdocs/langs/lt_LT/other.lang
+++ b/htdocs/langs/lt_LT/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/lv_LV/other.lang b/htdocs/langs/lv_LV/other.lang
index 9a735b24f8c..0e98d2bcba3 100644
--- a/htdocs/langs/lv_LV/other.lang
+++ b/htdocs/langs/lv_LV/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Labdien)__\n\nLūdzu, pievienojiet r
PredefinedMailContentSendShipping=__(Labdien)__\n\nLūdzu, pievienojiet piegādi __REF__\n\n\n__ (Ar cieņu) __\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Labdien)__\n\nLūdzu, pievienojiet intervenci __REF__\n\n\n__ (Ar cieņu) __\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Sveiki)__\n\n\n__ (Ar cieņu) __\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Labdien,)__\n\n\n__ (Ar cieņu) __\n\n__USER_SIGNATURE__
PredefinedMailContentLink=Jūs varat noklikšķināt uz zemāk esošās saites, lai veiktu maksājumu, ja tas vēl nav izdarīts.\n\n%s\n\n
DemoDesc=Dolibarr ir kompakts ERP / CRM, kas atbalsta vairākus biznesa moduļus. Demonstrācija, kas demonstrē visus moduļus, nav jēga, jo šis scenārijs nekad nenotiek (pieejami vairāki simti). Tātad, ir pieejami vairāki demo profili.
diff --git a/htdocs/langs/mk_MK/other.lang b/htdocs/langs/mk_MK/other.lang
index ec0315b94cd..021bfe65985 100644
--- a/htdocs/langs/mk_MK/other.lang
+++ b/htdocs/langs/mk_MK/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/mn_MN/other.lang b/htdocs/langs/mn_MN/other.lang
index ec0315b94cd..021bfe65985 100644
--- a/htdocs/langs/mn_MN/other.lang
+++ b/htdocs/langs/mn_MN/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/nb_NO/other.lang b/htdocs/langs/nb_NO/other.lang
index 36a55eeebfc..796a7678b61 100644
--- a/htdocs/langs/nb_NO/other.lang
+++ b/htdocs/langs/nb_NO/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hei)__\n\n\n__(Vennlig hilsen)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hei)__\n\n\n__(Vennlig hilsen)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=Du kan klikke på linken under for å utføre betalingen din, hvis det ikke allerede er gjort.\n\n%s\n\n
DemoDesc=Dolibarr er en kompakt ERP/CRM med støtte for flere forretningsmoduler. En demo som viser alle moduler gir ingen mening da dette scenariet aldri skjer (flere hundre tilgjengelig). Derforer flere demoprofiler er tilgjengelig.
diff --git a/htdocs/langs/nl_NL/other.lang b/htdocs/langs/nl_NL/other.lang
index 6f5ba9fb0e6..15a23f1cdbb 100644
--- a/htdocs/langs/nl_NL/other.lang
+++ b/htdocs/langs/nl_NL/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/pl_PL/other.lang b/htdocs/langs/pl_PL/other.lang
index 810e900d0f8..9dc9f35266f 100644
--- a/htdocs/langs/pl_PL/other.lang
+++ b/htdocs/langs/pl_PL/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/pt_PT/other.lang b/htdocs/langs/pt_PT/other.lang
index 742f34e0abc..c3fd507e4e9 100644
--- a/htdocs/langs/pt_PT/other.lang
+++ b/htdocs/langs/pt_PT/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Olá)__\n\nPor favor, encontre a fat
PredefinedMailContentSendShipping=__(Olá)__\n\nPor favor, encontrar o envio em anexo __REF__\n\n\n__(Atenciosamente)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Olá)__\n\nPor favor encontre a intervenção em anexo __REF__\n\n\n__(Atenciosamente)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Olá)__\n\n\n__(Atenciosamente)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Olá)__\n\n\n__(Atenciosamente)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=Você pode clicar no link abaixo para fazer seu pagamento, se ainda não estiver pronto.\n\n%s\n\n
DemoDesc=O Dolibarr é um ERP/CRM compacto que suporta vários módulos de negócios. Uma demonstração mostrando todos os módulos não faz sentido porque esse cenário nunca ocorre (várias centenas disponíveis). Assim, vários perfis de demonstração estão disponíveis.
diff --git a/htdocs/langs/ro_RO/other.lang b/htdocs/langs/ro_RO/other.lang
index d423e560227..f468b7d5d6e 100644
--- a/htdocs/langs/ro_RO/other.lang
+++ b/htdocs/langs/ro_RO/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/sk_SK/other.lang b/htdocs/langs/sk_SK/other.lang
index 88907452830..c8c42fc5c11 100644
--- a/htdocs/langs/sk_SK/other.lang
+++ b/htdocs/langs/sk_SK/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/sl_SI/other.lang b/htdocs/langs/sl_SI/other.lang
index c5549ded0a1..01b564a6d4d 100644
--- a/htdocs/langs/sl_SI/other.lang
+++ b/htdocs/langs/sl_SI/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/sq_AL/other.lang b/htdocs/langs/sq_AL/other.lang
index 4e628e0a3b3..c349aa6a2c6 100644
--- a/htdocs/langs/sq_AL/other.lang
+++ b/htdocs/langs/sq_AL/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/sr_RS/other.lang b/htdocs/langs/sr_RS/other.lang
index 417f29264f4..1f46e34c73d 100644
--- a/htdocs/langs/sr_RS/other.lang
+++ b/htdocs/langs/sr_RS/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/sv_SE/other.lang b/htdocs/langs/sv_SE/other.lang
index 7bb42882bab..d97e72ede13 100644
--- a/htdocs/langs/sv_SE/other.lang
+++ b/htdocs/langs/sv_SE/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/sw_SW/other.lang b/htdocs/langs/sw_SW/other.lang
index ec0315b94cd..021bfe65985 100644
--- a/htdocs/langs/sw_SW/other.lang
+++ b/htdocs/langs/sw_SW/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/th_TH/other.lang b/htdocs/langs/th_TH/other.lang
index f2ff406f446..b05d7b86655 100644
--- a/htdocs/langs/th_TH/other.lang
+++ b/htdocs/langs/th_TH/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/tr_TR/other.lang b/htdocs/langs/tr_TR/other.lang
index 2907be72ffa..a495eb02583 100644
--- a/htdocs/langs/tr_TR/other.lang
+++ b/htdocs/langs/tr_TR/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr, çeşitli iş modüllerini destekleyen kompakt bir ERP/CRM çözümüdür. Tüm modüllerin sergilendiği bir demonun mantığı yoktur, çünkü böyle bir senaryo asla gerçekleşmez (birkaç yüz adet mevcut). Bu nedenle birkaç demo profili vardır.
diff --git a/htdocs/langs/uk_UA/other.lang b/htdocs/langs/uk_UA/other.lang
index ec0315b94cd..021bfe65985 100644
--- a/htdocs/langs/uk_UA/other.lang
+++ b/htdocs/langs/uk_UA/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/uz_UZ/other.lang b/htdocs/langs/uz_UZ/other.lang
index ec0315b94cd..021bfe65985 100644
--- a/htdocs/langs/uz_UZ/other.lang
+++ b/htdocs/langs/uz_UZ/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/vi_VN/other.lang b/htdocs/langs/vi_VN/other.lang
index ba88771511a..aadf0444a54 100644
--- a/htdocs/langs/vi_VN/other.lang
+++ b/htdocs/langs/vi_VN/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/langs/zh_TW/other.lang b/htdocs/langs/zh_TW/other.lang
index 5a8219c5986..90c42c2ec4a 100644
--- a/htdocs/langs/zh_TW/other.lang
+++ b/htdocs/langs/zh_TW/other.lang
@@ -94,6 +94,7 @@ PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached inv
PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
+PredefinedMailContentContact=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
diff --git a/htdocs/loan/payment/card.php b/htdocs/loan/payment/card.php
index 0e9b3110a26..017f6a26254 100644
--- a/htdocs/loan/payment/card.php
+++ b/htdocs/loan/payment/card.php
@@ -289,7 +289,7 @@ if (empty($action) && ! empty($user->rights->loan->delete))
}
else
{
- print ''.$langs->trans('Delete').'';
+ print ''.$langs->trans('Delete').'';
}
}
diff --git a/htdocs/margin/agentMargins.php b/htdocs/margin/agentMargins.php
index 5c808051a06..71922b77aa2 100644
--- a/htdocs/margin/agentMargins.php
+++ b/htdocs/margin/agentMargins.php
@@ -139,7 +139,7 @@ $sql.= ", ".MAIN_DB_PREFIX."facturedet as d";
$sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= ", ".MAIN_DB_PREFIX."user as u";
$sql.= " WHERE f.fk_soc = s.rowid";
-$sql.= ' AND f.entity IN ('.getEntity('facture').')';
+$sql.= ' AND f.entity IN ('.getEntity('invoice').')';
$sql.= " AND sc.fk_soc = f.fk_soc";
$sql.= " AND (d.product_type = 0 OR d.product_type = 1)";
if (! empty($conf->global->AGENT_CONTACT_TYPE))
diff --git a/htdocs/margin/checkMargins.php b/htdocs/margin/checkMargins.php
index fcd5cd4102c..850b47cee17 100644
--- a/htdocs/margin/checkMargins.php
+++ b/htdocs/margin/checkMargins.php
@@ -191,7 +191,7 @@ $sql .= " FROM " . MAIN_DB_PREFIX . "facture as f ";
$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facturedet as d ON d.fk_facture = f.rowid";
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON d.fk_product = p.rowid";
$sql .= " WHERE f.fk_statut > 0";
-$sql .= " AND f.entity IN (" . getEntity('facture') . ") ";
+$sql .= " AND f.entity IN (" . getEntity('invoice') . ") ";
if (! empty($startdate)) $sql .= " AND f.datef >= '" . $db->idate($startdate) . "'";
if (! empty($enddate)) $sql .= " AND f.datef <= '" . $db->idate($enddate) . "'";
if ($search_ref) $sql.=natural_search('f.ref', $search_ref);
diff --git a/htdocs/margin/productMargins.php b/htdocs/margin/productMargins.php
index 22dec6dd277..ae79cc7957f 100644
--- a/htdocs/margin/productMargins.php
+++ b/htdocs/margin/productMargins.php
@@ -189,7 +189,7 @@ if (! empty($TSelectedCats)) {
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=p.rowid';
}
$sql.= " WHERE f.fk_soc = s.rowid";
-$sql.= ' AND f.entity IN ('.getEntity('facture').')';
+$sql.= ' AND f.entity IN ('.getEntity('invoice').')';
$sql.= " AND f.fk_statut > 0";
$sql.= " AND d.fk_facture = f.rowid";
if ($id > 0)
diff --git a/htdocs/modulebuilder/template/myobject_agenda.php b/htdocs/modulebuilder/template/myobject_agenda.php
index 9c6c9265592..b1da52ad4aa 100644
--- a/htdocs/modulebuilder/template/myobject_agenda.php
+++ b/htdocs/modulebuilder/template/myobject_agenda.php
@@ -232,7 +232,7 @@ if ($object->id > 0)
}
else
{
- print ''.$langs->trans("AddAction").'';
+ print ''.$langs->trans("AddAction").'';
}
}
diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php
index f9b3db7a99e..75754512c71 100644
--- a/htdocs/modulebuilder/template/myobject_card.php
+++ b/htdocs/modulebuilder/template/myobject_card.php
@@ -372,7 +372,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
}
else
{
- print ''.$langs->trans('Modify').''."\n";
+ print ''.$langs->trans('Modify').''."\n";
}
// Clone
@@ -401,7 +401,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
}
else
{
- print ''.$langs->trans('Delete').''."\n";
+ print ''.$langs->trans('Delete').''."\n";
}
}
print '
';
diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php
index cd923ee6dcd..3981731419e 100644
--- a/htdocs/societe/card.php
+++ b/htdocs/societe/card.php
@@ -12,6 +12,7 @@
* Copyright (C) 2015 Raphaël Doursenaud
* Copyright (C) 2018 Nicolas ZABOURI
* Copyright (C) 2018 Ferran Marcet
+ * Copyright (C) 2018 Frédéric France
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1148,7 +1149,7 @@ else
}
else
{
- print ''.fieldLabel('ThirdPartyName','name').'';
+ print ''.$form->editfieldkey('ThirdPartyName', 'name', '', $object, 0).'';
}
print '
'."\n";
$sortparam=(empty($conf->global->SOCIETE_SORT_ON_TYPEENT)?'ASC':$conf->global->SOCIETE_SORT_ON_TYPEENT); // NONE means we keep sort of original array, so we sort on position. ASC, means next function will sort on label.
print $form->selectarray("typent_id", $formcompany->typent_array(0), $object->typent_id, 0, 0, 0, '', 0, 0, 0, $sortparam);
if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
print '
';
- $userlist = $form->select_dolusers('', '', 0, null, 0, '', '', 0, 0, 0, '', 0, '', '', 0, 1);
- // Note: If user has no right to "see all thirdparties", we for selection of sale representative to him, so after creation he can see the record.
- print $form->multiselectarray('commercial', $userlist, (count(GETPOST('commercial', 'array')) > 0?GETPOST('commercial', 'array'):(empty($user->rights->societe->client->voir)?array($user->id):array())), null, null, null, null, "90%");
- print '
';
+ $userlist = $form->select_dolusers('', '', 0, null, 0, '', '', 0, 0, 0, '', 0, '', '', 0, 1);
+ // Note: If user has no right to "see all thirdparties", we for selection of sale representative to him, so after creation he can see the record.
+ print $form->multiselectarray('commercial', $userlist, (count(GETPOST('commercial', 'array')) > 0?GETPOST('commercial', 'array'):(empty($user->rights->societe->client->voir)?array($user->id):array())), null, null, null, null, "90%");
+ print '
';
// Alias names (commercial, trademark or alias names)
@@ -1746,7 +1753,7 @@ else
// Prefix
if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field
{
- print '
';
// It does not change the prefix mode using the auto numbering prefix
if (($prefixCustomerIsUsed || $prefixSupplierIsUsed) && $object->prefix_comm)
{
@@ -1761,14 +1768,14 @@ else
}
// Prospect/Customer
- print '
';
@@ -1952,7 +1955,7 @@ else
//TODO: Place into a function to control showing by country or study better option
if($mysoc->localtax1_assuj=="1" && $mysoc->localtax2_assuj=="1")
{
- print '