Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into develop
This commit is contained in:
commit
fbdf438351
17
ChangeLog
17
ChangeLog
@ -25,6 +25,7 @@ For users:
|
||||
- New: [ task #748 ] Add a link "Dolibarr" into left menu
|
||||
- New: Script email_unpaid_invoices_to_representative accepts now a parameter test
|
||||
and a delay.
|
||||
- First change to prepare feature click to print for PDF.
|
||||
|
||||
For translators:
|
||||
- Update language files.
|
||||
@ -43,8 +44,10 @@ For developers:
|
||||
into conf->liste_limit).
|
||||
- New: Add option dol_hide_topmenu and dol_hide_leftmenu onto login page.
|
||||
- New: dol_syslog method accept a suffix to use different log files for log.
|
||||
- New: Type of fields are received by export format handlers
|
||||
- New: Type of fields are received by export format handlers.
|
||||
- New: when adding an action, we can define a free code to tag it for a specific need.
|
||||
- New: Enhance Dolibarr migration process to include migration script of external
|
||||
modules.
|
||||
|
||||
WARNING: If you used external modules, some of them may need to be upgraded due to:
|
||||
- fields of classes were renamed to be normalized (nom, prenom, cp, ville, adresse were
|
||||
@ -61,17 +64,7 @@ WARNING: If you used external modules, some of them may need to be upgraded due
|
||||
- Fix: Package for launchpad
|
||||
- Fix: [ bug #736 ] Missing column in llx_c_chargesociales
|
||||
- Fix: Localtax2 for Spain must be based into buyer
|
||||
|
||||
|
||||
|
||||
|
||||
***** ChangeLog for 3.3.1 compared to 3.3 *****
|
||||
|
||||
- Fix: [ bug #733 ] Mass emailing tools do not support <style HTML tag
|
||||
- Fix: Package for launchpad
|
||||
- Fix: [ bug #736 ] Missing column in llx_c_chargesociales
|
||||
- Fix: Localtax2 for Spain must be based into buyer
|
||||
|
||||
- Fix: [ bug #762 ] Bad profit calculation in Reporting
|
||||
|
||||
|
||||
|
||||
|
||||
@ -134,13 +134,14 @@ $linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToM
|
||||
print_fiche_titre($langs->trans("AgendaSetup"),$linkback,'setup');
|
||||
print "<br>\n";
|
||||
|
||||
print $langs->trans("AgendaAutoActionDesc")."<br>\n";
|
||||
print "<br>\n";
|
||||
|
||||
$head=agenda_prepare_head();
|
||||
|
||||
dol_fiche_head($head, 'autoactions', $langs->trans("Agenda"));
|
||||
|
||||
print $langs->trans("AgendaAutoActionDesc")."<br>\n";
|
||||
print $langs->trans("OnlyActiveElementsAreShown").'<br>';
|
||||
print "<br>\n";
|
||||
|
||||
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
@ -179,8 +180,6 @@ print '</table>';
|
||||
|
||||
print '<br><center>';
|
||||
print '<input type="submit" name="save" class="button" value="'.$langs->trans("Save").'">';
|
||||
print ' ';
|
||||
print '<input type="submit" name="cancel" class="button" value="'.$langs->trans("Cancel").'">';
|
||||
print "</center>";
|
||||
|
||||
print "</form>\n";
|
||||
@ -226,12 +225,13 @@ else
|
||||
}
|
||||
print '</td></tr>'."\n";
|
||||
|
||||
print '</table>';
|
||||
|
||||
print "<br>";
|
||||
|
||||
dol_htmloutput_mesg($mesg);
|
||||
|
||||
$db->close();
|
||||
|
||||
llxFooter();
|
||||
|
||||
$db->close();
|
||||
?>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
|
||||
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2012 Florian Henry <florian.henry@open-concept.pro>
|
||||
*
|
||||
@ -70,8 +70,6 @@ $linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToM
|
||||
print_fiche_titre($langs->trans("AgendaSetup"),$linkback,'setup');
|
||||
print "<br>\n";
|
||||
|
||||
print "<br>\n";
|
||||
|
||||
$head=agenda_prepare_head();
|
||||
|
||||
dol_fiche_head($head, 'attributes', $langs->trans("Agenda"));
|
||||
|
||||
@ -54,8 +54,7 @@ if ($actionsave)
|
||||
$db->begin();
|
||||
|
||||
$disableext=GETPOST('AGENDA_DISABLE_EXT','alpha');
|
||||
if ($disableext) $disableext=0; else $disableext=1;
|
||||
$res=dolibarr_set_const($db,'AGENDA_DISABLE_EXT',$disableext,'chaine',0);
|
||||
$res=dolibarr_set_const($db,'AGENDA_DISABLE_EXT',$disableext,'chaine',0,'',$conf->entity);
|
||||
|
||||
$i=1; $errorsaved=0;
|
||||
$error=0;
|
||||
@ -67,7 +66,7 @@ if ($actionsave)
|
||||
$src=trim(GETPOST('agenda_ext_src'.$i,'alpha'));
|
||||
$color=trim(GETPOST('agenda_ext_color'.$i,'alpha'));
|
||||
if ($color=='-1') $color='';
|
||||
|
||||
|
||||
if (! empty($src) && ! preg_match('/^(http\s*|ftp\s*):/', $src))
|
||||
{
|
||||
setEventMessage($langs->trans("ErrorParamMustBeAnUrl"),'errors');
|
||||
@ -75,26 +74,26 @@ if ($actionsave)
|
||||
$errorsaved++;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
//print 'color='.$color;
|
||||
$res=dolibarr_set_const($db,'AGENDA_EXT_NAME'.$i,$name,'chaine',0);
|
||||
$res=dolibarr_set_const($db,'AGENDA_EXT_NAME'.$i,$name,'chaine',0,'',$conf->entity);
|
||||
if (! $res > 0) $error++;
|
||||
$res=dolibarr_set_const($db,'AGENDA_EXT_SRC'.$i,$src,'chaine',0);
|
||||
$res=dolibarr_set_const($db,'AGENDA_EXT_SRC'.$i,$src,'chaine',0,'',$conf->entity);
|
||||
if (! $res > 0) $error++;
|
||||
$res=dolibarr_set_const($db,'AGENDA_EXT_COLOR'.$i,$color,'chaine',0);
|
||||
$res=dolibarr_set_const($db,'AGENDA_EXT_COLOR'.$i,$color,'chaine',0,'',$conf->entity);
|
||||
if (! $res > 0) $error++;
|
||||
$i++;
|
||||
}
|
||||
|
||||
|
||||
// Save nb of agenda
|
||||
if (! $error)
|
||||
{
|
||||
$res=dolibarr_set_const($db,'AGENDA_EXT_NB',trim(GETPOST('AGENDA_EXT_NB','alpha')),'chaine',0);
|
||||
$res=dolibarr_set_const($db,'AGENDA_EXT_NB',trim(GETPOST('AGENDA_EXT_NB','alpha')),'chaine',0,'',$conf->entity);
|
||||
if (! $res > 0) $error++;
|
||||
if (empty($conf->global->AGENDA_EXT_NB)) $conf->global->AGENDA_EXT_NB=5;
|
||||
$MAXAGENDA=empty($conf->global->AGENDA_EXT_NB)?5:$conf->global->AGENDA_EXT_NB;
|
||||
}
|
||||
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
$db->commit();
|
||||
@ -124,34 +123,57 @@ $linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToM
|
||||
print_fiche_titre($langs->trans("AgendaSetup"),$linkback,'setup');
|
||||
print '<br>';
|
||||
|
||||
print $langs->trans("AgendaExtSitesDesc")."<br>\n";
|
||||
print "<br>\n";
|
||||
|
||||
$head=agenda_prepare_head();
|
||||
|
||||
dol_fiche_head($head, 'extsites', $langs->trans("Agenda"));
|
||||
|
||||
print $langs->trans("AgendaExtSitesDesc")."<br>\n";
|
||||
print "<br>\n";
|
||||
|
||||
print '<form name="extsitesconfig" action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
||||
|
||||
$selectedvalue=(GETPOST('AGENDA_DISABLE_AGENDA','alpha'))?GETPOST('AGENDA_DISABLE_EXT','alpha'):$conf->global->AGENDA_DISABLE_EXT;
|
||||
$selectedvalue=$conf->global->AGENDA_DISABLE_EXT;
|
||||
if ($selectedvalue==1) $selectedvalue=0; else $selectedvalue=1;
|
||||
print $langs->trans("ExtSitesEnableThisTool").' '.$form->selectyesno("AGENDA_DISABLE_EXT",$selectedvalue,1).'<br><br>';
|
||||
|
||||
$var=false;
|
||||
$var=true;
|
||||
print "<table class=\"noborder\" width=\"100%\">";
|
||||
|
||||
print "<tr class=\"liste_titre\">";
|
||||
print '<td width="180">'.$langs->trans("Parameter")."</td>";
|
||||
print "<td>".$langs->trans("Value")."</td>";
|
||||
print '<td>'.$langs->trans("Parameter")."</td>";
|
||||
print '<td align="center">'.$langs->trans("Value")."</td>";
|
||||
print "</tr>";
|
||||
|
||||
// Show external agenda
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var].">";
|
||||
print "<td>".$langs->trans("ExtSitesEnableThisTool")."</td>";
|
||||
print '<td align="center">';
|
||||
if ($conf->use_javascript_ajax)
|
||||
{
|
||||
print ajax_constantonoff('AGENDA_DISABLE_EXT',array('enabled'=>array(0=>'.hideifnotset')),null,1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if($conf->global->AGENDA_DISABLE_EXT == 0)
|
||||
{
|
||||
print '<a href="'.$_SERVER['PHP_SELF'].'?save=1&AGENDA_DISABLE_EXT=1">'.img_picto($langs->trans("Enabled"),'on').'</a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<a href="'.$_SERVER['PHP_SELF'].'?save=1&AGENDA_DISABLE_EXT=0">'.img_picto($langs->trans("Disabled"),'off').'</a>';
|
||||
}
|
||||
}
|
||||
print "</td>";
|
||||
print "</tr>";
|
||||
|
||||
// Nb of agenda
|
||||
print "<tr ".$bc[$var].">";
|
||||
print "<td>".$langs->trans("ExtSitesNbOfAgenda")."</td>";
|
||||
print "<td>";
|
||||
print '<input class="flat" type="text" size="2" name="AGENDA_EXT_NB" value="'.$conf->global->AGENDA_EXT_NB.'">';
|
||||
print "</td>";
|
||||
print "</tr>";
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var].">";
|
||||
print "<td>".$langs->trans("ExtSitesNbOfAgenda")."</td>";
|
||||
print '<td align="center">';
|
||||
print '<input class="flat hideifnotset" type="text" size="2" id="AGENDA_EXT_NB" name="AGENDA_EXT_NB" value="'.$conf->global->AGENDA_EXT_NB.'">';
|
||||
print "</td>";
|
||||
print "</tr>";
|
||||
|
||||
print "</table>";
|
||||
print "<br>";
|
||||
@ -162,7 +184,7 @@ print "<tr class=\"liste_titre\">";
|
||||
print "<td>".$langs->trans("Parameter")."</td>";
|
||||
print "<td>".$langs->trans("Name")."</td>";
|
||||
print "<td>".$langs->trans("ExtSiteUrlAgenda")." (".$langs->trans("Example").': http://yoursite/agenda/agenda.ics)</td>';
|
||||
print '<td align="center">'.$langs->trans("Color").'</td>';
|
||||
print '<td align="right">'.$langs->trans("Color").'</td>';
|
||||
print "</tr>";
|
||||
|
||||
$i=1;
|
||||
@ -173,19 +195,19 @@ while ($i <= $MAXAGENDA)
|
||||
$name='AGENDA_EXT_NAME'.$key;
|
||||
$src='AGENDA_EXT_SRC'.$key;
|
||||
$color='AGENDA_EXT_COLOR'.$key;
|
||||
|
||||
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var].">";
|
||||
// Nb
|
||||
print '<td width="180" nowrap="nowrap">'.$langs->trans("AgendaExtNb",$key)."</td>";
|
||||
// Name
|
||||
print '<td><input type="text" class="flat" name="agenda_ext_name'.$key.'" value="'. (GETPOST('agenda_ext_name'.$key)?GETPOST('agenda_ext_name'.$key):$conf->global->$name) . '" size="28"></td>';
|
||||
print '<td><input type="text" class="flat hideifnotset" name="agenda_ext_name'.$key.'" value="'. (GETPOST('agenda_ext_name'.$key)?GETPOST('agenda_ext_name'.$key):$conf->global->$name) . '" size="28"></td>';
|
||||
// URL
|
||||
print '<td><input type="url" class="flat" name="agenda_ext_src'.$key.'" value="'. (GETPOST('agenda_ext_src'.$key)?GETPOST('agenda_ext_src'.$key):$conf->global->$src) . '" size="60"></td>';
|
||||
print '<td><input type="url" class="flat hideifnotset" name="agenda_ext_src'.$key.'" value="'. (GETPOST('agenda_ext_src'.$key)?GETPOST('agenda_ext_src'.$key):$conf->global->$src) . '" size="60"></td>';
|
||||
// Color (Possible colors are limited by Google)
|
||||
print '<td nowrap="nowrap" align="center">';
|
||||
//print $formadmin->select_colors($conf->global->$color, "google_agenda_color".$key, $colorlist);
|
||||
print $formother->select_color((GETPOST("agenda_ext_color".$key)?GETPOST("agenda_ext_color".$key):$conf->global->$color), "agenda_ext_color".$key, 'extsitesconfig', 1, '');
|
||||
print '<td nowrap="nowrap" align="right">';
|
||||
//print $formadmin->selectColor($conf->global->$color, "google_agenda_color".$key, $colorlist);
|
||||
print $formother->selectColor((GETPOST("agenda_ext_color".$key)?GETPOST("agenda_ext_color".$key):$conf->global->$color), "agenda_ext_color".$key, 'extsitesconfig', 1, '', 'hideifnotset');
|
||||
print '</td>';
|
||||
print "</tr>";
|
||||
$i++;
|
||||
|
||||
@ -75,13 +75,13 @@ $linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToM
|
||||
print_fiche_titre($langs->trans("AgendaSetup"),$linkback,'setup');
|
||||
print '<br>';
|
||||
|
||||
print $langs->trans("AgendaSetupOtherDesc")."<br>\n";
|
||||
print "<br>\n";
|
||||
|
||||
$head=agenda_prepare_head();
|
||||
|
||||
dol_fiche_head($head, 'xcal', $langs->trans("Agenda"));
|
||||
|
||||
print $langs->trans("AgendaSetupOtherDesc")."<br>\n";
|
||||
print "<br>\n";
|
||||
|
||||
print '<form name="agendasetupform" action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
|
||||
@ -500,7 +500,7 @@ dol_fiche_end();
|
||||
|
||||
|
||||
// Show warning about external users
|
||||
print showModulesExludedForExternal($modules).'<br>'."\n";
|
||||
if ($mode != 'marketplace') print showModulesExludedForExternal($modules).'<br>'."\n";
|
||||
|
||||
|
||||
llxFooter();
|
||||
|
||||
@ -195,7 +195,7 @@ print $langs->trans("BackupDescY").'<br><br>';
|
||||
|
||||
<div class="formelementrow"><input type="checkbox" name="disable_fk"
|
||||
value="yes" id="checkbox_disable_fk" checked="checked" /> <label
|
||||
for="checkbox_disable_fk"> <?php echo $langs->trans("CommandsToDisableForeignKeysForImport"); ?></label>
|
||||
for="checkbox_disable_fk"> <?php echo $langs->trans("CommandsToDisableForeignKeysForImport"); ?> <?php print img_info($langs->trans('CommandsToDisableForeignKeysForImportWarning')); ?></label>
|
||||
</div>
|
||||
<label for="select_sql_compat"> <?php echo $langs->trans("ExportCompatibility"); ?></label>
|
||||
|
||||
|
||||
@ -676,7 +676,7 @@ if ($action == 'create')
|
||||
print '<table class="border" width="100%">';
|
||||
print '<tr><td width="25%" class="fieldrequired">'.$langs->trans("MailTopic").'</td><td><input class="flat" name="sujet" size="60" value="'.$_POST['sujet'].'"></td></tr>';
|
||||
print '<tr><td width="25%">'.$langs->trans("BackgroundColorByDefault").'</td><td colspan="3">';
|
||||
$htmlother->select_color($_POST['bgcolor'],'bgcolor','new_mailing',0);
|
||||
print $htmlother->selectColor($_POST['bgcolor'],'bgcolor','new_mailing',0);
|
||||
print '</td></tr>';
|
||||
print '<tr><td width="25%" class="fieldrequired" valign="top">'.$langs->trans("MailMessage").'<br>';
|
||||
print '<br><i>'.$langs->trans("CommonSubstitutions").':<br>';
|
||||
@ -1001,7 +1001,7 @@ else
|
||||
|
||||
// Background color
|
||||
/*print '<tr><td width="15%">'.$langs->trans("BackgroundColorByDefault").'</td><td colspan="3">';
|
||||
$htmlother->select_color($object->bgcolor,'bgcolor','edit_mailing',0);
|
||||
print $htmlother->selectColor($object->bgcolor,'bgcolor','edit_mailing',0);
|
||||
print '</td></tr>';*/
|
||||
|
||||
// Message
|
||||
@ -1124,7 +1124,7 @@ else
|
||||
|
||||
// Background color
|
||||
print '<tr><td width="25%">'.$langs->trans("BackgroundColorByDefault").'</td><td colspan="3">';
|
||||
$htmlother->select_color($object->bgcolor,'bgcolor','edit_mailing',0);
|
||||
print $htmlother->selectColor($object->bgcolor,'bgcolor','edit_mailing',0);
|
||||
print '</td></tr>';
|
||||
|
||||
// Message
|
||||
|
||||
@ -80,8 +80,8 @@ else if ($type == "o")
|
||||
$titre.=' ('.$langs->trans("OthersNotLinkedToThirdParty").')';
|
||||
$urlfiche="";
|
||||
}
|
||||
if ($view == 'phone') { $text=" (Vue Telephones)"; }
|
||||
if ($view == 'mail') { $text=" (Vue EMail)"; }
|
||||
if ($view == 'phone') { $text=" <b>(Vue Telephones)</b> <a href='".$_SERVER["PHP_SELF"]."?view=mail".($type?'&type='.$type:"")."'>(Vue EMail)</a>"; }
|
||||
if ($view == '' || $view == 'mail') { $text=" <a href='".$_SERVER["PHP_SELF"]."?view=phone".($type?'&type='.$type:"")."'>(Vue Telephones)</a> <b>(Vue EMail)</b>"; }
|
||||
if ($view == 'recent') { $text=" (Recents)"; }
|
||||
if (! empty($text)) $titre.= " $text";
|
||||
|
||||
|
||||
@ -106,9 +106,9 @@ class CMailFile
|
||||
|
||||
// We define end of line (RFC 821).
|
||||
$this->eol="\r\n";
|
||||
// We define end of line for header fields (RFC 822bis section 2.3 says header must contains \r\n).
|
||||
// We define end of line for header fields (RFC 822bis section 2.3 says header must contains \r\n).
|
||||
$this->eol2="\r\n";
|
||||
if (! empty($conf->global->MAIN_FIX_FOR_BUGGED_MTA))
|
||||
if (! empty($conf->global->MAIN_FIX_FOR_BUGGED_MTA))
|
||||
{
|
||||
$this->eol="\n";
|
||||
$this->eol2="\n";
|
||||
@ -551,7 +551,7 @@ class CMailFile
|
||||
/**
|
||||
* Write content of a SMTP request into a dump file (mode = all)
|
||||
* Used for debugging.
|
||||
* Note that to see full SMTP protocol, you can use tcpdump -w /tmp/smtp -s 2000 port 25"
|
||||
* Note that to see full SMTP protocol, you can use tcpdump -w /tmp/smtp -s 2000 port 25"
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
@ -572,7 +572,7 @@ class CMailFile
|
||||
}
|
||||
elseif ($conf->global->MAIN_MAIL_SENDMODE == 'smtps')
|
||||
{
|
||||
fputs($fp, $this->smtps->log);
|
||||
fputs($fp, $this->smtps->log); // this->smtps->log is filled only if MAIN_MAIL_DEBUG was set to on
|
||||
}
|
||||
|
||||
fclose($fp);
|
||||
@ -751,7 +751,7 @@ class CMailFile
|
||||
{
|
||||
$strContent = preg_replace("/\r\n/si", "\n", $strContent);
|
||||
}
|
||||
|
||||
|
||||
//$strContent = rtrim(chunk_split($strContent)); // Function chunck_split seems bugged
|
||||
$strContent = rtrim(wordwrap($strContent));
|
||||
|
||||
|
||||
@ -188,10 +188,15 @@ class FormActions
|
||||
print '<td>'.$ref.'</td>';
|
||||
print '<td>'.$label.'</td>';
|
||||
print '<td>'.dol_print_date($action->datep,'day').'</td>';
|
||||
$userstatic->id = $action->author->id;
|
||||
$userstatic->firstname = $action->author->firstname;
|
||||
$userstatic->lastname = $action->author->lastname;
|
||||
print '<td>'.$userstatic->getNomUrl(1).'</td>';
|
||||
print '<td>';
|
||||
if (! empty($action->author->id))
|
||||
{
|
||||
$userstatic->id = $action->author->id;
|
||||
$userstatic->firstname = $action->author->firstname;
|
||||
$userstatic->lastname = $action->author->lastname;
|
||||
print $userstatic->getNomUrl(1);
|
||||
}
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
}
|
||||
print '</table>';
|
||||
|
||||
@ -465,6 +465,7 @@ class FormOther
|
||||
* @param int $showcolorbox 1=Show color code and color box, 0=Show only color code
|
||||
* @param array $arrayofcolors Array of colors. Example: array('29527A','5229A3','A32929','7A367A','B1365F','0D7813')
|
||||
* @return void
|
||||
* @deprecated
|
||||
*/
|
||||
function select_color($set_color='', $prefix='f_color', $form_name='objForm', $showcolorbox=1, $arrayofcolors='')
|
||||
{
|
||||
@ -479,9 +480,10 @@ class FormOther
|
||||
* @param string $form_name Name of form
|
||||
* @param int $showcolorbox 1=Show color code and color box, 0=Show only color code
|
||||
* @param array $arrayofcolors Array of colors. Example: array('29527A','5229A3','A32929','7A367A','B1365F','0D7813')
|
||||
* @param string $morecss Add css style into input field
|
||||
* @return void
|
||||
*/
|
||||
function selectColor($set_color='', $prefix='f_color', $form_name='objForm', $showcolorbox=1, $arrayofcolors='')
|
||||
function selectColor($set_color='', $prefix='f_color', $form_name='objForm', $showcolorbox=1, $arrayofcolors='', $morecss='')
|
||||
{
|
||||
global $langs;
|
||||
|
||||
@ -529,7 +531,7 @@ class FormOther
|
||||
}
|
||||
} ); });
|
||||
</script>';
|
||||
$out.= '<input id="colorpicker'.$prefix.'" name="'.$prefix.'" size="6" maxlength="7" class="flat" type="text" value="'.$set_color.'" />';
|
||||
$out.= '<input id="colorpicker'.$prefix.'" name="'.$prefix.'" size="6" maxlength="7" class="flat'.($morecss?' '.$morecss:'').'" type="text" value="'.$set_color.'" />';
|
||||
}
|
||||
else // In most cases, this is not used. We used instead function with no specific list of colors
|
||||
{
|
||||
@ -545,7 +547,7 @@ class FormOther
|
||||
});
|
||||
</script>';
|
||||
|
||||
$out.= '<select id="colorpicker'.$prefix.'" class="flat" name="'.$prefix.'">';
|
||||
$out.= '<select id="colorpicker'.$prefix.'" class="flat'.($morecss?' '.$morecss:'').'" name="'.$prefix.'">';
|
||||
//print '<option value="-1"> </option>';
|
||||
foreach ($arrayofcolors as $val)
|
||||
{
|
||||
|
||||
@ -643,16 +643,27 @@ function setConstant(url, code, input, entity) {
|
||||
// Enable another element
|
||||
if (type == "disabled") {
|
||||
$.each(data, function(key, value) {
|
||||
$("#" + value).removeAttr("disabled");
|
||||
if ($("#" + value).hasClass("butActionRefused") == true) {
|
||||
$("#" + value).removeClass("butActionRefused");
|
||||
$("#" + value).addClass("butAction");
|
||||
var newvalue=((value.search("^#") < 0 && value.search("^\.") < 0) ? "#" : "") + value;
|
||||
$(newvalue).removeAttr("disabled");
|
||||
if ($(newvalue).hasClass("butActionRefused") == true) {
|
||||
$(newvalue).removeClass("butActionRefused");
|
||||
$(newvalue).addClass("butAction");
|
||||
}
|
||||
});
|
||||
} else if (type == "enabled") {
|
||||
$.each(data, function(key, value) {
|
||||
var newvalue=((value.search("^#") < 0 && value.search("^\.") < 0) ? "#" : "") + value;
|
||||
$(newvalue).attr("disabled", true);
|
||||
if ($(newvalue).hasClass("butAction") == true) {
|
||||
$(newvalue).removeClass("butAction");
|
||||
$(newvalue).addClass("butActionRefused");
|
||||
}
|
||||
});
|
||||
// Show another element
|
||||
} else if (type == "showhide" || type == "show") {
|
||||
$.each(data, function(key, value) {
|
||||
$("#" + value).show();
|
||||
var newvalue=((value.search("^#") < 0 && value.search("^\.") < 0) ? "#" : "") + value;
|
||||
$(newvalue).show();
|
||||
});
|
||||
// Set another constant
|
||||
} else if (type == "set") {
|
||||
@ -687,16 +698,27 @@ function delConstant(url, code, input, entity) {
|
||||
// Disable another element
|
||||
if (type == "disabled") {
|
||||
$.each(data, function(key, value) {
|
||||
$("#" + value).attr("disabled", true);
|
||||
if ($("#" + value).hasClass("butAction") == true) {
|
||||
$("#" + value).removeClass("butAction");
|
||||
$("#" + value).addClass("butActionRefused");
|
||||
var newvalue=((value.search("^#") < 0 && value.search("^\.") < 0) ? "#" : "") + value;
|
||||
$(newvalue).attr("disabled", true);
|
||||
if ($(newvalue).hasClass("butAction") == true) {
|
||||
$(newvalue).removeClass("butAction");
|
||||
$(newvalue).addClass("butActionRefused");
|
||||
}
|
||||
});
|
||||
} else if (type == "enabled") {
|
||||
$.each(data, function(key, value) {
|
||||
var newvalue=((value.search("^#") < 0 && value.search("^\.") < 0) ? "#" : "") + value;
|
||||
$(newvalue).removeAttr("disabled");
|
||||
if ($(newvalue).hasClass("butActionRefused") == true) {
|
||||
$(newvalue).removeClass("butActionRefused");
|
||||
$(newvalue).addClass("butAction");
|
||||
}
|
||||
});
|
||||
// Hide another element
|
||||
} else if (type == "showhide" || type == "hide") {
|
||||
$.each(data, function(key, value) {
|
||||
$("#" + value).hide();
|
||||
var newvalue=((value.search("^#") < 0 && value.search("^\.") < 0) ? "#" : "") + value;
|
||||
$(newvalue).hide();
|
||||
});
|
||||
// Delete another constant
|
||||
} else if (type == "del") {
|
||||
|
||||
@ -250,7 +250,7 @@ function run_sql($sqlfile,$silent=1,$entity='',$usesavepoint=1,$handler='',$oker
|
||||
$newsql=preg_replace('/__ENTITY__/i',(!empty($entity)?$entity:$conf->entity),$sql);
|
||||
|
||||
// Ajout trace sur requete (eventuellement a commenter si beaucoup de requetes)
|
||||
if (! $silent) print '<tr><td valign="top">'.$langs->trans("Request").' '.($i+1)." sql='".$newsql."'</td></tr>\n";
|
||||
if (! $silent) print '<tr><td valign="top">'.$langs->trans("Request").' '.($i+1)." sql='".dol_htmlentities($newsql,ENT_NOQUOTES)."'</td></tr>\n";
|
||||
dol_syslog('Admin.lib::run_sql Request '.($i+1).' sql='.$newsql, LOG_DEBUG);
|
||||
|
||||
// Replace for encrypt data
|
||||
@ -1153,10 +1153,10 @@ function showModulesExludedForExternal($modules)
|
||||
$moduleconst=$module->const_name;
|
||||
$modulename=strtolower($module->name);
|
||||
//print 'modulename='.$modulename;
|
||||
|
||||
|
||||
//if (empty($conf->global->$moduleconst)) continue;
|
||||
if (! in_array($modulename,$listofmodules)) continue;
|
||||
|
||||
|
||||
if ($i > 0) $text.=', ';
|
||||
else $text.=' ';
|
||||
$i++;
|
||||
|
||||
@ -353,12 +353,13 @@ function ajax_combobox($htmlname, $event=array(), $minLengthToAutocomplete=0)
|
||||
/**
|
||||
* On/off button for constant
|
||||
*
|
||||
* @param string $code Name of constant
|
||||
* @param array $input Input element (enable/disable or show/hide another element, set/del another constant)
|
||||
* @param int $entity Entity to set
|
||||
* @param string $code Name of constant
|
||||
* @param array $input Array of type->list of CSS element to switch. Example: array('disabled'=>array(0=>'cssid'))
|
||||
* @param int $entity Entity to set
|
||||
* @param int $revertonoff Revert on/off
|
||||
* @return void
|
||||
*/
|
||||
function ajax_constantonoff($code, $input=array(), $entity=false)
|
||||
function ajax_constantonoff($code, $input=array(), $entity=null, $revertonoff=0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
@ -399,8 +400,8 @@ function ajax_constantonoff($code, $input=array(), $entity=false)
|
||||
</script>'."\n";
|
||||
|
||||
$out.= '<div id="confirm_'.$code.'" title="" style="display: none;"></div>';
|
||||
$out.= '<span id="set_'.$code.'" class="linkobject '.(! empty($conf->global->$code)?'hideobject':'').'">'.img_picto($langs->trans("Disabled"),'switch_off').'</span>';
|
||||
$out.= '<span id="del_'.$code.'" class="linkobject '.(! empty($conf->global->$code)?'':'hideobject').'">'.img_picto($langs->trans("Enabled"),'switch_on').'</span>';
|
||||
$out.= '<span id="set_'.$code.'" class="linkobject '.(! empty($conf->global->$code)?'hideobject':'').'">'.($revertonoff?img_picto($langs->trans("Enabled"),'switch_on'):img_picto($langs->trans("Disabled"),'switch_off')).'</span>';
|
||||
$out.= '<span id="del_'.$code.'" class="linkobject '.(! empty($conf->global->$code)?'':'hideobject').'">'.($revertonoff?img_picto($langs->trans("Disabled"),'switch_off'):img_picto($langs->trans("Enabled"),'switch_on')).'</span>';
|
||||
$out.="\n";
|
||||
|
||||
return $out;
|
||||
|
||||
124
htdocs/core/modules/modCron.class.php
Normal file
124
htdocs/core/modules/modCron.class.php
Normal file
@ -0,0 +1,124 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
*
|
||||
* 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
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \defgroup webservices Module webservices
|
||||
* \brief Module to enable the Dolibarr server of web services
|
||||
* \file htdocs/core/modules/modCron.class.php
|
||||
* \ingroup cron
|
||||
* \brief File to describe cron module
|
||||
*/
|
||||
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
|
||||
|
||||
/**
|
||||
* Class to describe a Cron module
|
||||
*/
|
||||
class modCron extends DolibarrModules
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor. Define names, constants, directories, boxes, permissions
|
||||
*
|
||||
* @param DoliDB $db Database handler
|
||||
*/
|
||||
function __construct($db)
|
||||
{
|
||||
$this->db = $db;
|
||||
$this->numero = 2300;
|
||||
|
||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||
// It is used to group modules in module setup page
|
||||
$this->family = "technic";
|
||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||
$this->description = "Enable the Dolibarr cron service";
|
||||
$this->version = 'experimental'; // 'experimental' or 'dolibarr' or version
|
||||
// Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase)
|
||||
$this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
|
||||
// Where to store the module in setup page (0=common,1=interface,2=others,3=very specific)
|
||||
$this->special = 2;
|
||||
// Name of image file used for this module.
|
||||
$this->picto='technic';
|
||||
|
||||
// Data directories to create when module is enabled
|
||||
$this->dirs = array();
|
||||
|
||||
// Config pages
|
||||
//-------------
|
||||
$this->config_page_url = array("cron.php@cron");
|
||||
|
||||
// Dependancies
|
||||
//-------------
|
||||
$this->depends = array();
|
||||
$this->requiredby = array();
|
||||
$this->langfiles = array("cron");
|
||||
|
||||
// Constantes
|
||||
//-----------
|
||||
$this->const = array();
|
||||
|
||||
// New pages on tabs
|
||||
// -----------------
|
||||
$this->tabs = array();
|
||||
|
||||
// Boxes
|
||||
//------
|
||||
$this->boxes = array();
|
||||
|
||||
// Permissions
|
||||
//------------
|
||||
$this->rights = array();
|
||||
$this->rights_class = 'cron';
|
||||
$r=0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function called when module is enabled.
|
||||
* The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
|
||||
* It also creates data directories
|
||||
*
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function init($options='')
|
||||
{
|
||||
// Prevent pb of modules not correctly disabled
|
||||
//$this->remove($options);
|
||||
|
||||
$sql = array();
|
||||
|
||||
return $this->_init($sql,$options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function called when module is disabled.
|
||||
* Remove from database constants, boxes and permissions from Dolibarr database.
|
||||
* Data directories are not deleted
|
||||
*
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function remove($options='')
|
||||
{
|
||||
$sql = array();
|
||||
|
||||
return $this->_remove($sql,$options);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
132
htdocs/cron/admin/cron.php
Normal file
132
htdocs/cron/admin/cron.php
Normal file
@ -0,0 +1,132 @@
|
||||
<?php
|
||||
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.org>
|
||||
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
*
|
||||
* 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
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/cron/admin/cron.php
|
||||
* \ingroup cron
|
||||
* \brief Page to setup cron module
|
||||
*/
|
||||
|
||||
require '../../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||
|
||||
$langs->load("admin");
|
||||
$langs->load("cron");
|
||||
|
||||
if (! $user->admin)
|
||||
accessforbidden();
|
||||
|
||||
$actionsave=GETPOST("save");
|
||||
|
||||
// Sauvegardes parametres
|
||||
if ($actionsave)
|
||||
{
|
||||
$i=0;
|
||||
|
||||
$db->begin();
|
||||
|
||||
$i+=dolibarr_set_const($db,'CRON_KEY',trim(GETPOST("CRON_KEY")),'chaine',0,'',$conf->entity);
|
||||
|
||||
if ($i >= 1)
|
||||
{
|
||||
$db->commit();
|
||||
setEventMessage($langs->trans("SetupSaved"));
|
||||
}
|
||||
else
|
||||
{
|
||||
$db->rollback();
|
||||
setEventMessage($langs->trans("Error"), 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
|
||||
llxHeader();
|
||||
|
||||
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
||||
print_fiche_titre($langs->trans("CronSetup"),$linkback,'setup');
|
||||
|
||||
print $langs->trans("CronDesc")."<br>\n";
|
||||
print "<br>\n";
|
||||
|
||||
print '<form name="agendasetupform" action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<table class="noborder" width="100%">';
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
print "<td>".$langs->trans("Parameter")."</td>";
|
||||
print "<td>".$langs->trans("Value")."</td>";
|
||||
//print "<td>".$langs->trans("Examples")."</td>";
|
||||
print "<td> </td>";
|
||||
print "</tr>";
|
||||
|
||||
print '<tr class="impair">';
|
||||
print '<td class="fieldrequired">'.$langs->trans("KeyForCronAccess").'</td>';
|
||||
print '<td><input type="text" class="flat" id="CRON_KEY" name="CRON_KEY" value="'. (GETPOST('CRON_KEY')?GETPOST('CRON_KEY'):(! empty($conf->global->CRON_KEY)?$conf->global->CRON_KEY:'')) . '" size="40">';
|
||||
if (! empty($conf->use_javascript_ajax))
|
||||
print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"');
|
||||
print '</td>';
|
||||
print '<td> </td>';
|
||||
print '</tr>';
|
||||
|
||||
print '</table>';
|
||||
|
||||
print '<br><center>';
|
||||
print '<input type="submit" name="save" class="button" value="'.$langs->trans("Save").'">';
|
||||
print '</center>';
|
||||
|
||||
print '</form>';
|
||||
|
||||
print '<br><br>';
|
||||
|
||||
|
||||
// Cron launch
|
||||
print '<u>'.$langs->trans("URLToLaunchCronJobs").':</u><br>';
|
||||
$url=DOL_MAIN_URL_ROOT.'/cron/cron_run_jobs.php'.(empty($conf->global->CRON_KEY)?'':'?securitykey='.$conf->global->CRON_KEY);
|
||||
print img_picto('','object_globe.png').' <a href="'.$url.'" target="_blank">'.$url."</a><br>\n";
|
||||
print '<br>';
|
||||
|
||||
|
||||
print '<br>';
|
||||
|
||||
if (! empty($conf->use_javascript_ajax))
|
||||
{
|
||||
print "\n".'<script type="text/javascript">';
|
||||
print '$(document).ready(function () {
|
||||
$("#generate_token").click(function() {
|
||||
$.get( "'.DOL_URL_ROOT.'/core/ajax/security.php", {
|
||||
action: \'getrandompassword\',
|
||||
generic: true
|
||||
},
|
||||
function(token) {
|
||||
$("#CRON_KEY").val(token);
|
||||
});
|
||||
});
|
||||
});';
|
||||
print '</script>';
|
||||
}
|
||||
|
||||
|
||||
llxFooter();
|
||||
$db->close();
|
||||
?>
|
||||
@ -326,7 +326,7 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action')))
|
||||
$dir = "mysql/migration/"; // We use mysql migration scripts whatever is database driver
|
||||
if (! empty($versionmodule)) $dir=dol_buildpath('/'.$versionmodule.'/sql/',0);
|
||||
|
||||
// For minor version
|
||||
// Clean last part to exclude minor version x.y.z -> x.y
|
||||
$newversionfrom=preg_replace('/(\.[0-9]+)$/i','.0',$versionfrom);
|
||||
$newversionto=preg_replace('/(\.[0-9]+)$/i','.0',$versionto);
|
||||
|
||||
@ -368,13 +368,43 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action')))
|
||||
// Loop on each migrate files
|
||||
foreach($filelist as $file)
|
||||
{
|
||||
print '<tr><td nowrap>';
|
||||
print $langs->trans("ChoosedMigrateScript").'</td><td align="right">'.$file.'</td></tr>'."\n";
|
||||
|
||||
$name = substr($file, 0, dol_strlen($file) - 4);
|
||||
print '<tr><td colspan="2"><hr></td></tr>';
|
||||
print '<tr><td nowrap>'.$langs->trans("ChoosedMigrateScript").'</td><td align="right">'.$file.'</td></tr>'."\n";
|
||||
|
||||
// Run sql script
|
||||
$ok=run_sql($dir.$file, 0, '', 1);
|
||||
|
||||
// Scan if there is migration scripts for modules htdocs/module/sql or htdocs/custom/module/sql
|
||||
$modulesfile = array();
|
||||
foreach ($conf->file->dol_document_root as $type => $dirroot)
|
||||
{
|
||||
$handlemodule=@opendir($dirroot);
|
||||
if (is_resource($handlemodule))
|
||||
{
|
||||
while (($filemodule = readdir($handlemodule))!==false)
|
||||
{
|
||||
if (is_dir($dirroot.'/'.$filemodule.'/sql'))
|
||||
{
|
||||
//print "Scan for ".$dirroot . '/' . $filemodule . '/sql/'.$file;
|
||||
if (is_file($dirroot . '/' . $filemodule . '/sql/'.$file))
|
||||
{
|
||||
$modulesfile[$dirroot . '/' . $filemodule . '/sql/'.$file] = '/' . $filemodule . '/sql/'.$file;
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($handlemodule);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($modulesfile as $modulefilelong => $modulefileshort)
|
||||
{
|
||||
print '<tr><td colspan="2"><hr></td></tr>';
|
||||
print '<tr><td nowrap>'.$langs->trans("ChoosedMigrateScript").' (external modules)</td><td align="right">'.$modulefileshort.'</td></tr>'."\n";
|
||||
|
||||
// Run sql script
|
||||
$okmodule=run_sql($modulefilelong, 0, '', 1); // Note: Result of migration of external module should not decide if we continue migration of Dolibarr or not.
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -333,10 +333,6 @@ Module1400Name=المحاسبة
|
||||
Module1400Desc=المحاسبة الإدارية (ضعف الأحزاب)
|
||||
Module1780Name=الفئات
|
||||
Module1780Desc=الفئات إدارة المنتجات والموردين والزبائن)
|
||||
Module2200Name=الإقراض الإنسان
|
||||
Module2200Desc=الإقراض لإدارة الحقوق
|
||||
Module2300Name=القوائم
|
||||
Module2300Desc=القوائم إدارة
|
||||
Module2400Name=جدول الأعمال
|
||||
Module2400Desc=الأعمال / الإدارة المهام وجدول الأعمال
|
||||
Module2500Name=إدارة المحتوى الإلكتروني
|
||||
|
||||
@ -438,10 +438,6 @@ Module1780Name=Категории
|
||||
Module1780Desc=Категория управление (продукти, доставчици и клиенти)
|
||||
Module2000Name=WYSIWYG редактор
|
||||
Module2000Desc=Оставя се да редактирате някакъв текст, чрез използване на усъвършенствана редактор
|
||||
Module2200Name=Кредити права
|
||||
Module2200Desc=Заеми за управление на права
|
||||
Module2300Name=Менюта
|
||||
Module2300Desc=Меню управление
|
||||
Module2400Name=Дневен ред
|
||||
Module2400Desc=Събития / задачи и управление на дневен ред
|
||||
Module2500Name=Управление на електронно съдържание
|
||||
|
||||
@ -450,10 +450,6 @@ Module1780Name=Categories
|
||||
Module1780Desc=Gestió de categories (productes, proveïdors i clients)
|
||||
Module2000Name=Editor WYSIWYG
|
||||
Module2000Desc=Permet l'edició de certes zones de text mitjançant un editor avançat
|
||||
Module2200Name=Dret de préstecs
|
||||
Module2200Desc=Gestió dels drets de préstecs
|
||||
Module2300Name=Menús
|
||||
Module2300Desc=Administració dels menús per base de dades
|
||||
Module2400Name=Agenda
|
||||
Module2400Desc=Gestió de l'agenda i de les accions
|
||||
Module2500Name=Gestió Electrònica de Documents
|
||||
|
||||
@ -305,10 +305,6 @@ Module1400Name=Regnskabsmæssig ekspert
|
||||
Module1400Desc=Regnskabsmæssig forvaltning for eksperter (dobbelt parterne)
|
||||
Module1780Name=Kategorier
|
||||
Module1780Desc=Kategorier 'forvaltning (produkter, leverandører og kunder)
|
||||
Module2200Name=Udlånsrettighederne
|
||||
Module2200Desc=Udlånsrettighederne forvaltning
|
||||
Module2300Name=Menuer
|
||||
Module2300Desc=Menuer 'ledelse
|
||||
Module2400Name=Agenda
|
||||
Module2400Desc=Handlinger / opgaver og dagsorden forvaltning
|
||||
Module2500Name=Elektronisk Content Management
|
||||
|
||||
@ -300,10 +300,6 @@ Module1400Name=Buchhaltung
|
||||
Module1400Desc=Buchhaltung für Experten (doppelte Buchhaltung)
|
||||
Module1780Name=Kategorien
|
||||
Module1780Desc=Kategorienverwaltung (Produkte, Lieferanten und Kunden)
|
||||
Module2200Name=Verleihrechte
|
||||
Module2200Desc=Verleihrechteverwaltung
|
||||
Module2300Name=Menüs
|
||||
Module2300Desc=Menüverwaltung
|
||||
Module2400Name=Agenda
|
||||
Module2400Desc=Maßnahmen/Aufgaben und Agendaverwaltung
|
||||
Module2500Name=Inhaltsverwaltung(ECM)
|
||||
|
||||
@ -421,10 +421,6 @@ Module1780Name=Kategorien
|
||||
Module1780Desc=Kategorienverwaltung (Produkte, Lieferanten und Kunden)
|
||||
Module2000Name=FCKeditor
|
||||
Module2000Desc=WYSIWYG-Editor
|
||||
Module2200Name=Verleihrechte
|
||||
Module2200Desc=Verleihrechteverwaltung
|
||||
Module2300Name=Menüs
|
||||
Module2300Desc=Menüverwaltung
|
||||
Module2400Name=Agenda
|
||||
Module2400Desc=Maßnahmen/Aufgaben und Agendaverwaltung
|
||||
Module2500Name=Inhaltsverwaltung(ECM)
|
||||
|
||||
@ -181,7 +181,6 @@ Module330Name=Σελιδοδείκτες
|
||||
Module400Name=Έργα
|
||||
Module700Name=Δωρεές
|
||||
Module1780Name=Κατηγορίες
|
||||
Module2300Name=Μενού
|
||||
Module2400Name=Ατζέντα
|
||||
Module50100Name=Σημείο Πωλήσεων
|
||||
Permission19=Διαγραφή τιμολογίων
|
||||
|
||||
@ -454,10 +454,8 @@ Module1780Name=Categories
|
||||
Module1780Desc=Category management (products, suppliers and customers)
|
||||
Module2000Name=WYSIWYG editor
|
||||
Module2000Desc=Allow to edit some text area using an advanced editor
|
||||
Module2200Name=Lending rights
|
||||
Module2200Desc=Lending rights management
|
||||
Module2300Name=Menus
|
||||
Module2300Desc=Menu management
|
||||
Module2300Name=Cron
|
||||
Module2300Desc=Scheduled task management
|
||||
Module2400Name=Agenda
|
||||
Module2400Desc=Events/tasks and agenda management
|
||||
Module2500Name=Electronic Content Management
|
||||
|
||||
@ -389,6 +389,7 @@ ClosePaidCreditNotesAutomatically=Classify "Payed" all credit notes entierely pa
|
||||
AllCompletelyPayedInvoiceWillBeClosed=All invoice with no remain to pay will be automatically closed to status "Payed".
|
||||
ToMakePayment=Pay
|
||||
ToMakePaymentBack=Pay back
|
||||
ListOfYourUnpaidInvoices=List of unpaid invoices
|
||||
##### Types de contacts #####
|
||||
TypeContact_facture_internal_SALESREPFOLL=Representative following-up customer invoice
|
||||
TypeContact_facture_external_BILLING=Customer invoice contact
|
||||
|
||||
6
htdocs/langs/en_US/cron.lang
Normal file
6
htdocs/langs/en_US/cron.lang
Normal file
@ -0,0 +1,6 @@
|
||||
# Dolibarr language file - en_US - cron
|
||||
CHARSET=UTF-8
|
||||
CronSetup=Cron scheduler setup
|
||||
CronDesc=This page can be used to setup options of the scheduler manager
|
||||
URLToLaunchCronJobs=URL to launch cron jobs
|
||||
KeyForCronAccess=Security key for URL to launch cron jobs
|
||||
@ -451,10 +451,6 @@ Module1780Name=Categorías
|
||||
Module1780Desc=Gestión de categorías (productos, proveedores y clientes)
|
||||
Module2000Name=Editor WYSIWYG
|
||||
Module2000Desc=Permite la edición de ciertas zonas de texto mediante un editor avanzado
|
||||
Module2200Name=Derecho de préstamos
|
||||
Module2200Desc=Gestión de los derechos de préstamos
|
||||
Module2300Name=Menús
|
||||
Module2300Desc=Administración de los menús por base de datos
|
||||
Module2400Name=Agenda
|
||||
Module2400Desc=Gestión de la agenda y de las acciones
|
||||
Module2500Name=Gestión Electrónica de Documentos
|
||||
|
||||
@ -418,10 +418,6 @@ Module1780Name=Kategooriad
|
||||
Module1780Desc=Kategoorias juhtkond (toodete, tarnijate ja tarbijate)
|
||||
Module2000Name=WYSIWYG editor
|
||||
Module2000Desc=Võimaldavad muuta natuke teksti ala, kasutades täiustatud toimetaja
|
||||
Module2200Name=Laenutusõigust
|
||||
Module2200Desc=Laenutusõigust juhtimine
|
||||
Module2300Name=Menüüd
|
||||
Module2300Desc=Menüü juhtkond
|
||||
Module2400Name=Päevakord
|
||||
Module2400Desc=Events / ülesanded ja kava haldamise
|
||||
Module2500Name=Electronic Content Management
|
||||
|
||||
@ -341,10 +341,6 @@ Module1400Name=المحاسبة
|
||||
Module1400Desc=المحاسبة الإدارية (ضعف الأحزاب)
|
||||
Module1780Name=الفئات
|
||||
Module1780Desc=الفئات إدارة المنتجات والموردين والزبائن)
|
||||
Module2200Name=الإقراض الإنسان
|
||||
Module2200Desc=الإقراض لإدارة الحقوق
|
||||
Module2300Name=القوائم
|
||||
Module2300Desc=القوائم إدارة
|
||||
Module2400Name=جدول الأعمال
|
||||
Module2400Desc=الأعمال / الإدارة المهام وجدول الأعمال
|
||||
Module2500Name=إدارة المحتوى الإلكتروني
|
||||
|
||||
@ -303,10 +303,6 @@ Module1400Name=Kirjanpidon asiantuntija
|
||||
Module1400Desc=Kirjanpidon hallinta asiantuntijoille (double osapuolet)
|
||||
Module1780Name=Kategoriat
|
||||
Module1780Desc=Kategoriat hallintaa (tuotteet, tavarantoimittajat ja asiakkaat)
|
||||
Module2200Name=Lainausoikeuksia
|
||||
Module2200Desc=Luotonanto oikeuksien hallinta
|
||||
Module2300Name=Menut
|
||||
Module2300Desc=Valikot hallinto
|
||||
Module2400Name=Agenda
|
||||
Module2400Desc=Toimet / tehtävät ja esityslistan hallinta
|
||||
Module2500Name=Sähköinen Content Management
|
||||
|
||||
@ -25,7 +25,7 @@ HTMLCharset= Charset des pages HTML générées
|
||||
DBStoringCharset= Charset base pour stockage données
|
||||
DBSortingCharset= Charset base pour tri données
|
||||
WarningModuleNotActive= Module <b>%s</b> non actif
|
||||
WarningOnlyPermissionOfActivatedModules= Attention, seules les permissions en rapport avec les modules activés sont affichées ici. Vous pouvez activer les autres modules sur la page Accueil->Configuration->Modules
|
||||
WarningOnlyPermissionOfActivatedModules= Attention, seules les permissions en rapport avec les modules activés sont affichées ici. Vous pouvez activer d'autres modules sur la page Accueil->Configuration->Modules
|
||||
DolibarrSetup= Installation ou mise à jour de Dolibarr
|
||||
DolibarrUser= Utilisateur Dolibarr
|
||||
InternalUser= Utilisateur interne
|
||||
@ -452,10 +452,8 @@ Module1780Name= Catégories
|
||||
Module1780Desc= Gestion des catégories (produits, fournisseurs, clients et adhérents)
|
||||
Module2000Name= Editeur WYSIWYG
|
||||
Module2000Desc= Permet la saisie de certaines zones de textes grace à un éditeur avancé
|
||||
Module2200Name= Droit de prêts
|
||||
Module2200Desc= Gestion du droit de prêts
|
||||
Module2300Name= Menus
|
||||
Module2300Desc= Administration des menus par base de données
|
||||
Module2300Name= Cron
|
||||
Module2300Desc= Gestionnaire de taches programmées
|
||||
Module2400Name= Agenda
|
||||
Module2400Desc= Gestion des actions (événements et tâches) et de l'agenda
|
||||
Module2500Name= Gestion Electronique de Documents
|
||||
@ -1351,7 +1349,7 @@ AccountancyCodeBuy=Code compta achat
|
||||
AgendaSetup= Configuration du module actions et agenda
|
||||
PasswordTogetVCalExport= Clé pour autoriser lien export
|
||||
PastDelayVCalExport=Ne pas exporter les événements de plus de
|
||||
AGENDA_USE_EVENT_TYPE=Utilisez les type des évenements (administrable dans Configuration->Dictionnary->llx_c_actioncomm)
|
||||
AGENDA_USE_EVENT_TYPE=Utilisez les types des évenements (administrable dans Configuration -> Dictionnaires -> Liste des types d'évenements de l'agenda)
|
||||
##### ClickToDial #####
|
||||
ClickToDialDesc= Ce module permet d'ajouter un petit picto à côté des numéros de téléphones. Un clic sur ce picto provoque l'appel de l'URL définie dans ce paramétrage. Ceci permet de provoquer des appels à un serveur de téléphonie depuis Dolibarr qui peut alors composer le numéro sur un système SIP par exemple.
|
||||
##### Point Of Sales (CashDesk) #####
|
||||
|
||||
@ -386,6 +386,7 @@ ClosePaidCreditNotesAutomatically=Classer automatiquement à "Payé" les facture
|
||||
AllCompletelyPayedInvoiceWillBeClosed=Toutes les factures avec un reste à payer nul seront automatiquement fermées au statut "Payé".
|
||||
ToMakePayment=Payer
|
||||
ToMakePaymentBack=Rembourser
|
||||
ListOfYourUnpaidInvoices=Liste des factures impayées
|
||||
##### Types de contacts #####
|
||||
TypeContact_facture_internal_SALESREPFOLL=Responsable suivi facture client
|
||||
TypeContact_facture_external_BILLING=Contact client facturation
|
||||
|
||||
6
htdocs/langs/fr_FR/cron.lang
Normal file
6
htdocs/langs/fr_FR/cron.lang
Normal file
@ -0,0 +1,6 @@
|
||||
# Dolibarr language file - fr_FR - cron
|
||||
CHARSET=UTF-8
|
||||
CronSetup=Configuration du séquenceur de taches
|
||||
CronDesc=Cette page permet de configurer certaines options du séquenceur de taches
|
||||
URLToLaunchCronJobs=URL pour lancer les taches automatiques
|
||||
KeyForCronAccess=Clé de sécurité pour l'URL de lancement des taches automatiques
|
||||
@ -418,10 +418,6 @@ Module1780Name=קטגוריות
|
||||
Module1780Desc=Categorie ההנהלה (מוצרים, ספקים ולקוחות)
|
||||
Module2000Name=עורך WYSIWYG
|
||||
Module2000Desc=אפשר לערוך כמה אזור הטקסט באמצעות עורך מתקדם
|
||||
Module2200Name=ההלוואות זכויות
|
||||
Module2200Desc=זכויות ההלוואות וניהול
|
||||
Module2300Name=תפריטים
|
||||
Module2300Desc=תפריט של ההנהלה
|
||||
Module2400Name=סדר היום
|
||||
Module2400Desc=אירועים / משימות וניהול סדר היום
|
||||
Module2500Name=תוכן אלקטרוני ניהול
|
||||
|
||||
@ -418,10 +418,6 @@ Module1780Name=Kategóriák
|
||||
Module1780Desc=Kategóriában vezetősége (termékek, szállítók és vevők)
|
||||
Module2000Name=WYSIWYG szerkesztő
|
||||
Module2000Desc=Hagyjuk szerkeszteni egy szöveget terület egy fejlett szerkesztő
|
||||
Module2200Name=Haszonkölcsönzési jogait
|
||||
Module2200Desc=Hitelezési jogkezelés
|
||||
Module2300Name=Menük
|
||||
Module2300Desc=Menü vezetése
|
||||
Module2400Name=Napirend
|
||||
Module2400Desc=Események / feladatok és napirend menedzsment
|
||||
Module2500Name=Elektronikus Content Management
|
||||
|
||||
@ -369,10 +369,6 @@ Module1780Name=Flokkar
|
||||
Module1780Desc=Stjórn Flokkur's (vörur, birgja og viðskiptavina)
|
||||
Module2000Name=Fckeditor
|
||||
Module2000Desc=WYSIWYG Editor
|
||||
Module2200Name=Útlán réttindi
|
||||
Module2200Desc=Útlán réttindi
|
||||
Module2300Name=Matseðlar
|
||||
Module2300Desc=Valmynd's stjórnun
|
||||
Module2400Name=Dagskrá
|
||||
Module2400Desc=Aðgerðir / verkefni og dagskrá stjórnun
|
||||
Module2500Name=Rafræn Innihald Stjórnun
|
||||
|
||||
@ -641,8 +641,6 @@ Module2200Desc =Gestione dei diritti di prestito
|
||||
Module2200Name =Diritti di prestito
|
||||
Module22Desc =Gestione posta massiva
|
||||
Module22Name =Posta massiva
|
||||
Module2300Desc =Gestione dei Menu
|
||||
Module2300Name =Menu
|
||||
Module23Desc =Monitoraggio del consumo energetico
|
||||
Module23Name =Energia
|
||||
Module2400Desc =Gestione eventi/compiti e ordine del giorno
|
||||
|
||||
@ -418,10 +418,6 @@ Module1780Name=カテゴリー
|
||||
Module1780Desc=Categorieの管理(製品、サプライヤー、顧客)
|
||||
Module2000Name=WYSIWYGエディタ
|
||||
Module2000Desc=高度なエディタを使用して、いくつかのテキストエリアを編集することができます
|
||||
Module2200Name=融資の権限
|
||||
Module2200Desc=貸出権限の管理
|
||||
Module2300Name=メニュー
|
||||
Module2300Desc=メニューの管理
|
||||
Module2400Name=議題
|
||||
Module2400Desc=イベント/タスクと議題の管理
|
||||
Module2500Name=電子コンテンツ管理
|
||||
|
||||
@ -299,10 +299,6 @@ Module1400Name=Regnskapsekspert
|
||||
Module1400Desc=Behandling av regnskapssopplysninger for eksperter (double parties)
|
||||
Module1780Name=Kategorier
|
||||
Module1780Desc=Behandling av kategorier (varer, leverandører og kunder)
|
||||
Module2200Name=Utlånsrettigheter
|
||||
Module2200Desc=Behandling av utlånsrettigheter
|
||||
Module2300Name=Menyer
|
||||
Module2300Desc=Menybehandling
|
||||
Module2400Name=Agenda
|
||||
Module2400Desc=Handlinger/oppgaver og agendabehandling
|
||||
Module2500Name=Electronic Content Management
|
||||
|
||||
@ -413,10 +413,6 @@ Module1780Name = Categorieën
|
||||
Module1780Desc = Categorie' beheer (producten, leveranciers en klanten)
|
||||
Module2000Name =
|
||||
Module2000Desc =
|
||||
Module2200Name = Uitleenrechten
|
||||
Module2200Desc = Uitleenrechten beheer
|
||||
Module2300Name = Menu's
|
||||
Module2300Desc = Menu's beheer
|
||||
Module2400Name = Agenda
|
||||
Module2400Desc = Acties / taken en agenda beheer
|
||||
Module2500Name = Electronic Content Management
|
||||
|
||||
@ -383,10 +383,6 @@ Module1780Name = Categorieën
|
||||
Module1780Desc = Categoriebeheer (producten, leveranciers en afnemers)
|
||||
Module2000Name = Fckeditor
|
||||
Module2000Desc = Een WYSIWYG editor
|
||||
Module2200Name = Uitleenrechten
|
||||
Module2200Desc = Uitleenrechtenbeheer
|
||||
Module2300Name = Menu's
|
||||
Module2300Desc = Menubeheer
|
||||
Module2400Name = Agenda
|
||||
Module2400Desc = Acties-, taken- en agendabeheer
|
||||
Module2500Name = Electronic Content Management
|
||||
|
||||
@ -306,10 +306,6 @@ Module1400Name=Księgowość ekspertów
|
||||
Module1400Desc=Księgowość zarządzania dla ekspertów (double stron)
|
||||
Module1780Name=Kategorie
|
||||
Module1780Desc=Kategorie zarządzania (produktów, dostawców i klientów)
|
||||
Module2200Name=Użyczanie
|
||||
Module2200Desc=Kredyty zarządzania prawami
|
||||
Module2300Name=Menu
|
||||
Module2300Desc=Menu zarządzania
|
||||
Module2400Name=Porządek obrad
|
||||
Module2400Desc=Działania / zadania i porządku zarządzania
|
||||
Module2500Name=Electronic Content Management
|
||||
|
||||
@ -320,10 +320,6 @@ Module1200Name=Mantis
|
||||
Module1200Desc=Interface com o sistema de seguimento de incidências Mantis
|
||||
Module1780Name=Categorias
|
||||
Module1780Desc=Administração de categorias (produtos, Fornecedores e clientes)
|
||||
Module2200Name=Direito de emprétimos
|
||||
Module2200Desc=Administração dos direitos de emprétimos
|
||||
Module2300Name=Menus
|
||||
Module2300Desc=Administração dos menus por base de dados
|
||||
Module2400Name=Agenda
|
||||
Module2400Desc=Administração da agenda e das ações
|
||||
Module2500Name=Administração Eletrônica de Documentos
|
||||
|
||||
@ -562,8 +562,6 @@ Module2200Desc = Gestão dos direitos de empréstimos
|
||||
Module2200Name = Direito de empréstimos
|
||||
Module22Desc = Administração e envío de E-Mails massivos
|
||||
Module22Name = E-Mailings
|
||||
Module2300Desc = Administração dos menus por base de dados
|
||||
Module2300Name = Menus
|
||||
Module23Desc = Acompanhamento do consumo de energia
|
||||
Module23Name = Energia
|
||||
Module2400Desc = Gestão da agenda e das acções
|
||||
|
||||
@ -304,10 +304,6 @@ Module1400Name=Expert contabil
|
||||
Module1400Desc=Contabilitate de gestiune pentru experţi (dublu părţi)
|
||||
Module1780Name=Categorii
|
||||
Module1780Desc=Categorii de "management (produse, furnizori şi clienţi)
|
||||
Module2200Name=Credite drepturile
|
||||
Module2200Desc=Credite de gestionare a drepturilor
|
||||
Module2300Name=Meniuri
|
||||
Module2300Desc=Meniuri de gestionare
|
||||
Module2400Name=Ordinea de zi
|
||||
Module2400Desc=Acţiuni / activităţi de ordine de zi şi de gestionare a
|
||||
Module2500Name=Electronic Content Management
|
||||
|
||||
@ -303,10 +303,6 @@ Module1400Name=Бухгалтерия эксперт
|
||||
Module1400Desc=Бухгалтерия управления для экспертов (двойная сторон)
|
||||
Module1780Name=Категории
|
||||
Module1780Desc=Категории управления (продукции, поставщиков и заказчиков)
|
||||
Module2200Name=Кредитование человека
|
||||
Module2200Desc=Кредитование права управления
|
||||
Module2300Name=Меню
|
||||
Module2300Desc=Меню управления
|
||||
Module2400Name=Повестка дня
|
||||
Module2400Desc=Деятельность / задачи и программы управления
|
||||
Module2500Name=Электронное управление
|
||||
|
||||
@ -399,10 +399,6 @@ Module1780Name = Kategorije
|
||||
Module1780Desc = Upravljanje kategorij (proizvodi, dobavitelji in kupci)
|
||||
Module2000Name = Fck urejevalnik
|
||||
Module2000Desc = WYSIWYG urejevalnik
|
||||
Module2200Name = Kreditne pravice
|
||||
Module2200Desc = Upravljanje kreditnih pravic
|
||||
Module2300Name = Meniji
|
||||
Module2300Desc = Upravljanje menijev
|
||||
Module2400Name = Dnevni red
|
||||
Module2400Desc = Upravljanje aktivnosti/nalog in dnevnih redov
|
||||
Module2500Name = Upravljanje elektronskih vsebin
|
||||
|
||||
@ -372,10 +372,6 @@ Module1780Name=Kategorier
|
||||
Module1780Desc=Categorie ledning (produkter, leverantörer och kunder)
|
||||
Module2000Name=FCKeditor
|
||||
Module2000Desc=WYSIWYG Editor
|
||||
Module2200Name=Utlåning rättigheter
|
||||
Module2200Desc=Utlåning förvaltning av rättigheter
|
||||
Module2300Name=Menyer
|
||||
Module2300Desc=Meny ledning
|
||||
Module2400Name=Agenda
|
||||
Module2400Desc=Åtgärder / uppgifter och dagordning förvaltning
|
||||
Module2500Name=Electronic Content Management
|
||||
|
||||
@ -456,10 +456,6 @@ Module1780Name=Kategoriler
|
||||
Module1780Desc=Kategorilerin yönetimi (ürünler, tedarikçiler ve müşteriler)
|
||||
Module2000Name=WYSIWYG düzenleyici
|
||||
Module2000Desc=Gelişmiş editör kullanarak bazı metin alanlarının düzenlenmesini sağlar
|
||||
Module2200Name=Kiralama hakları
|
||||
Module2200Desc=Kiralama hakları yönetimi
|
||||
Module2300Name=Menüler
|
||||
Module2300Desc=Menü yönetimi
|
||||
Module2400Name=Gündem
|
||||
Module2400Desc=Etkinlikler/görevler ve gündem yönetimi
|
||||
Module2500Name=Elektronik İçerik Yönetimi
|
||||
|
||||
@ -366,10 +366,6 @@ Module1780Name=分类
|
||||
Module1780Desc=的类别:管理层(产品,供应商和客户)
|
||||
Module2000Name=fckeditor的
|
||||
Module2000Desc=所见即所得的编辑器
|
||||
Module2200Name=贷款的权利
|
||||
Module2200Desc=贷款权限管理
|
||||
Module2300Name=菜单
|
||||
Module2300Desc=菜单的管理
|
||||
Module2400Name=议程
|
||||
Module2400Desc=行动/任务和议程管理
|
||||
Module2500Name=电子内容管理
|
||||
|
||||
@ -371,10 +371,6 @@ Module1780Name=分類
|
||||
Module1780Desc=分類的管理(產品,供應商和客戶)
|
||||
Module2000Name=fckeditor的
|
||||
Module2000Desc=所見即所得的編輯器
|
||||
Module2200Name=貸款的權利
|
||||
Module2200Desc=貸款權限管理
|
||||
Module2300Name=選單
|
||||
Module2300Desc=選單的管理
|
||||
Module2400Name=議程
|
||||
Module2400Desc=行動/任務和議程管理
|
||||
Module2500Name=電子內容管理
|
||||
|
||||
@ -35,7 +35,7 @@ if (substr($sapi_type, 0, 3) == 'cgi') {
|
||||
exit;
|
||||
}
|
||||
|
||||
if (! isset($argv[1]) || ! $argv[1] || ! in_array($argv[1],array('test','confirm')))
|
||||
if (! isset($argv[1]) || ! $argv[1] || ! in_array($argv[1],array('test','confirm')))
|
||||
{
|
||||
print "Usage: $script_file [test|confirm] [delay]\n";
|
||||
print "\n";
|
||||
@ -51,6 +51,7 @@ require($path."../../htdocs/master.inc.php");
|
||||
require_once (DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php");
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Main
|
||||
*/
|
||||
@ -84,7 +85,7 @@ if ($resql)
|
||||
print "We found ".$num." couples (unpayed validated invoice/sale representative) qualified\n";
|
||||
dol_syslog("We found ".$num." couples (unpayed validated invoice/sale representative) qualified");
|
||||
$message='';
|
||||
|
||||
|
||||
if ($num)
|
||||
{
|
||||
while ($i < $num)
|
||||
@ -141,20 +142,23 @@ else
|
||||
/**
|
||||
* Send email
|
||||
*
|
||||
* @param string $oldemail Old email
|
||||
* @param string $mode Mode (test | confirm)
|
||||
* @param string $oldemail Old email
|
||||
* @param string $message Message to send
|
||||
* @param string $total Total amount of unpayed invoices
|
||||
* @param string $userlang Code lang to use for email output.
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function envoi_mail($mode,$oldemail,$message,$total,$userlang)
|
||||
{
|
||||
global $conf,$langs;
|
||||
global $db;
|
||||
|
||||
$newlangs=new Translate($db,$conf);
|
||||
$newlangs=new Translate('',$conf);
|
||||
$newlangs->setDefaultLang($userlang);
|
||||
|
||||
$subject = "[".($conf->global->MAIN_APPLICATION_TITLE)."] ".$newlangs->trans("ListOfYourUnpaidInvoices");
|
||||
$newlangs->load("main");
|
||||
$newlangs->load("bills");
|
||||
|
||||
$subject = "[".(empty($conf->global->MAIN_APPLICATION_TITLE)?'Dolibarr':$conf->global->MAIN_APPLICATION_TITLE)."] ".$newlangs->trans("ListOfYourUnpaidInvoices");
|
||||
$sendto = $oldemail;
|
||||
$from = $conf->global->MAIN_EMAIL_FROM;
|
||||
$errorsto = $conf->global->MAIN_MAIL_ERRORS_TO;
|
||||
@ -163,12 +167,28 @@ function envoi_mail($mode,$oldemail,$message,$total,$userlang)
|
||||
print "Send email for ".$oldemail.", total: ".$total."\n";
|
||||
dol_syslog("email_unpaid_invoices_to_representatives.php: send mail to ".$oldemail);
|
||||
|
||||
$allmessage = "List of unpaid invoices\n";
|
||||
$allmessage.= "This list contains only invoices for third parties you are linked to as a sales representative.\n";
|
||||
$allmessage.= "\n";
|
||||
$allmessage.= $message;
|
||||
$allmessage.= "\n";
|
||||
$allmessage.= $langs->trans("Total")." = ".price($total)."\n";
|
||||
$usehtml=0;
|
||||
if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_FOOTER)) $usehtml+=1;
|
||||
if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_HEADER)) $usehtml+=1;
|
||||
|
||||
$allmessage='';
|
||||
if (! empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_HEADER))
|
||||
{
|
||||
$allmessage.=$conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_HEADER;
|
||||
}
|
||||
else
|
||||
{
|
||||
$allmessage.= "List of unpaid invoices\n\n";
|
||||
$allmessage.= "This list contains only invoices for third parties you are linked to as a sales representative.\n";
|
||||
$allmessage.= "\n";
|
||||
}
|
||||
$allmessage.= $message.($usehtml?"<br>\n":"\n");
|
||||
$allmessage.= $langs->trans("Total")." = ".price($total).($usehtml?"<br>\n":"\n");
|
||||
if (! empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_FOOTER))
|
||||
{
|
||||
$allmessage.=$conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_FOOTER;
|
||||
if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_FOOTER)) $usehtml+=1;
|
||||
}
|
||||
|
||||
$mail = new CMailFile(
|
||||
$subject,
|
||||
@ -186,12 +206,17 @@ function envoi_mail($mode,$oldemail,$message,$total,$userlang)
|
||||
|
||||
$mail->errors_to = $errorsto;
|
||||
|
||||
// Send or not email
|
||||
if ($mode == 'confirm')
|
||||
{
|
||||
$result=$mail->sendfile();
|
||||
}
|
||||
else $result=1;
|
||||
|
||||
else
|
||||
{
|
||||
$mail->dump_mail();
|
||||
$result=1;
|
||||
}
|
||||
|
||||
if ($result)
|
||||
{
|
||||
return 1;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user