Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into develop

This commit is contained in:
Laurent Destailleur 2013-03-14 17:01:44 +01:00
commit fbdf438351
55 changed files with 1369 additions and 273 deletions

View File

@ -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

View File

@ -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 ' &nbsp; &nbsp; ';
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();
?>

View File

@ -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"));

View File

@ -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++;

View File

@ -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'].'">';

View File

@ -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();

View File

@ -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>

View File

@ -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

View File

@ -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";

View File

@ -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));

View File

@ -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>';

View File

@ -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">&nbsp;</option>';
foreach ($arrayofcolors as $val)
{

View File

@ -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") {

View File

@ -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++;

View File

@ -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;

View 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
View 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>&nbsp;</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 '&nbsp;'.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"');
print '</td>';
print '<td>&nbsp;</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();
?>

View File

@ -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.
}
}
}

View File

@ -333,10 +333,6 @@ Module1400Name=المحاسبة
Module1400Desc=المحاسبة الإدارية (ضعف الأحزاب)
Module1780Name=الفئات
Module1780Desc=الفئات إدارة المنتجات والموردين والزبائن)
Module2200Name=الإقراض الإنسان
Module2200Desc=الإقراض لإدارة الحقوق
Module2300Name=القوائم
Module2300Desc=القوائم إدارة
Module2400Name=جدول الأعمال
Module2400Desc=الأعمال / الإدارة المهام وجدول الأعمال
Module2500Name=إدارة المحتوى الإلكتروني

View File

@ -438,10 +438,6 @@ Module1780Name=Категории
Module1780Desc=Категория управление (продукти, доставчици и клиенти)
Module2000Name=WYSIWYG редактор
Module2000Desc=Оставя се да редактирате някакъв текст, чрез използване на усъвършенствана редактор
Module2200Name=Кредити права
Module2200Desc=Заеми за управление на права
Module2300Name=Менюта
Module2300Desc=Меню управление
Module2400Name=Дневен ред
Module2400Desc=Събития / задачи и управление на дневен ред
Module2500Name=Управление на електронно съдържание

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -181,7 +181,6 @@ Module330Name=Σελιδοδείκτες
Module400Name=Έργα
Module700Name=Δωρεές
Module1780Name=Κατηγορίες
Module2300Name=Μενού
Module2400Name=Ατζέντα
Module50100Name=Σημείο Πωλήσεων
Permission19=Διαγραφή τιμολογίων

View File

@ -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

View File

@ -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

View 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

View File

@ -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

View File

@ -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

View File

@ -341,10 +341,6 @@ Module1400Name=المحاسبة
Module1400Desc=المحاسبة الإدارية (ضعف الأحزاب)
Module1780Name=الفئات
Module1780Desc=الفئات إدارة المنتجات والموردين والزبائن)
Module2200Name=الإقراض الإنسان
Module2200Desc=الإقراض لإدارة الحقوق
Module2300Name=القوائم
Module2300Desc=القوائم إدارة
Module2400Name=جدول الأعمال
Module2400Desc=الأعمال / الإدارة المهام وجدول الأعمال
Module2500Name=إدارة المحتوى الإلكتروني

View File

@ -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

View File

@ -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) #####

View File

@ -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

View 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

View File

@ -418,10 +418,6 @@ Module1780Name=קטגוריות
Module1780Desc=Categorie ההנהלה (מוצרים, ספקים ולקוחות)
Module2000Name=עורך WYSIWYG
Module2000Desc=אפשר לערוך כמה אזור הטקסט באמצעות עורך מתקדם
Module2200Name=ההלוואות זכויות
Module2200Desc=זכויות ההלוואות וניהול
Module2300Name=תפריטים
Module2300Desc=תפריט של ההנהלה
Module2400Name=סדר היום
Module2400Desc=אירועים / משימות וניהול סדר היום
Module2500Name=תוכן אלקטרוני ניהול

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -418,10 +418,6 @@ Module1780Name=カテゴリー
Module1780Desc=Categorieの管理製品、サプライヤー、顧客
Module2000Name=WYSIWYGエディタ
Module2000Desc=高度なエディタを使用して、いくつかのテキストエリアを編集することができます
Module2200Name=融資の権限
Module2200Desc=貸出権限の管理
Module2300Name=メニュー
Module2300Desc=メニューの管理
Module2400Name=議題
Module2400Desc=イベント/タスクと議題の管理
Module2500Name=電子コンテンツ管理

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -303,10 +303,6 @@ Module1400Name=Бухгалтерия эксперт
Module1400Desc=Бухгалтерия управления для экспертов (двойная сторон)
Module1780Name=Категории
Module1780Desc=Категории управления (продукции, поставщиков и заказчиков)
Module2200Name=Кредитование человека
Module2200Desc=Кредитование права управления
Module2300Name=Меню
Module2300Desc=Меню управления
Module2400Name=Повестка дня
Module2400Desc=Деятельность / задачи и программы управления
Module2500Name=Электронное управление

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -366,10 +366,6 @@ Module1780Name=分类
Module1780Desc=的类别:管理层(产品,供应商和客户)
Module2000Name=fckeditor的
Module2000Desc=所见即所得的编辑器
Module2200Name=贷款的权利
Module2200Desc=贷款权限管理
Module2300Name=菜单
Module2300Desc=菜单的管理
Module2400Name=议程
Module2400Desc=行动/任务和议程管理
Module2500Name=电子内容管理

View File

@ -371,10 +371,6 @@ Module1780Name=分類
Module1780Desc=分類的管理(產品,供應商和客戶)
Module2000Name=fckeditor的
Module2000Desc=所見即所得的編輯器
Module2200Name=貸款的權利
Module2200Desc=貸款權限管理
Module2300Name=選單
Module2300Desc=選單的管理
Module2400Name=議程
Module2400Desc=行動/任務和議程管理
Module2500Name=電子內容管理

View File

@ -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