Merge remote-tracking branch 'origin/3.8' into develop

This commit is contained in:
Juanjo Menent 2015-08-10 20:46:35 +02:00
commit d39b6a6bfa
4 changed files with 43 additions and 21 deletions

View File

@ -499,6 +499,7 @@ Dolibarr better:
- Fix: [ bug #3074 ] Accruals accounting use payment date instead of commitment date in turnover reports for salaries - Fix: [ bug #3074 ] Accruals accounting use payment date instead of commitment date in turnover reports for salaries
- Fix: Not showing product supplier reference when page break - Fix: Not showing product supplier reference when page break
- Fix: [ bug #3341 ] Missing translation in /compta/paiement_charge.php - Fix: [ bug #3341 ] Missing translation in /compta/paiement_charge.php
- Fix: [ bug #3342 ] Taxes dictionary page does not accept localized decimals for localtax2 rate
***** ChangeLog for 3.6.2 compared to 3.6.1 ***** ***** ChangeLog for 3.6.2 compared to 3.6.1 *****
- Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice. - Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice.

View File

@ -1,7 +1,7 @@
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# \file dolibarr.pl # \file dolibarr.pl
# \brief Dolibarr script install for Virtualmin Pro # \brief Dolibarr script install for Virtualmin Pro
# \author (c)2009-2012 Regis Houssin <regis.houssin@capnetworks.com> # \author (c)2009-2015 Regis Houssin <regis.houssin@capnetworks.com>
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
@ -30,8 +30,7 @@ return "Regis Houssin";
# script_dolibarr_versions() # script_dolibarr_versions()
sub script_dolibarr_versions sub script_dolibarr_versions
{ {
# TODO Replace this with version of Dolibar we want to install return ( "3.7.2", "3.6.3", "3.5.6" );
return ( "x.y.z", "3.6.0");
} }
sub script_dolibarr_category sub script_dolibarr_category
@ -57,6 +56,26 @@ local ($d, $ver) = @_;
return ("mysql", "postgres"); return ("mysql", "postgres");
} }
# script_dolibarr_depends(&domain, version)
sub script_dolibarr_depends
{
local ($d, $ver, $sinfo, $phpver) = @_;
local @rv;
if ($ver >= 3.6) {
# Check for PHP 5.3+
local $phpv = &get_php_version($phpver || 5, $d);
if (!$phpv) {
push(@rv, "Could not work out exact PHP version");
}
elsif ($phpv < 5.3) {
push(@rv, "Dolibarr requires PHP version 5.3 or later");
}
}
return @rv;
}
# script_dolibarr_params(&domain, version, &upgrade-info) # script_dolibarr_params(&domain, version, &upgrade-info)
# Returns HTML for table rows for options for installing dolibarr # Returns HTML for table rows for options for installing dolibarr
sub script_dolibarr_params sub script_dolibarr_params
@ -78,8 +97,7 @@ else {
$rv .= &ui_table_row("Database for Dolibarr tables", $rv .= &ui_table_row("Database for Dolibarr tables",
&ui_database_select("db", undef, \@dbs, $d, "dolibarr")); &ui_database_select("db", undef, \@dbs, $d, "dolibarr"));
$rv .= &ui_table_row("Install sub-directory under <tt>$hdir</tt>", $rv .= &ui_table_row("Install sub-directory under <tt>$hdir</tt>",
&ui_opt_textbox("dir", "dolibarr", 30, &ui_opt_textbox("dir", &substitute_scriptname_template("dolibarr", $d), 30, "At top level"));
"At top level"));
if ($d->{'ssl'} && $ver >= 3.0) { if ($d->{'ssl'} && $ver >= 3.0) {
$rv .= &ui_table_row("Force https connection?", $rv .= &ui_table_row("Force https connection?",
&ui_yesno_radio("forcehttps", 0)); &ui_yesno_radio("forcehttps", 0));
@ -159,7 +177,8 @@ if ($opts->{'newdb'} && !$upgrade) {
local ($dbtype, $dbname) = split(/_/, $opts->{'db'}, 2); local ($dbtype, $dbname) = split(/_/, $opts->{'db'}, 2);
local $dbuser = $dbtype eq "mysql" ? &mysql_user($d) : &postgres_user($d); local $dbuser = $dbtype eq "mysql" ? &mysql_user($d) : &postgres_user($d);
local $dbpass = $dbtype eq "mysql" ? &mysql_pass($d) : &postgres_pass($d, 1); local $dbpass = $dbtype eq "mysql" ? &mysql_pass($d) : &postgres_pass($d, 1);
local $dbphptype = $dbtype eq "mysql" ? "mysqli" : "pgsql"; local $dbphptype = $dbtype eq "mysql" && $version >= 3.6 ? "mysql" :
$dbtype eq "mysql" ? "mysqli" : "pgsql";
local $dbhost = &get_database_host($dbtype); local $dbhost = &get_database_host($dbtype);
local $dberr = &check_script_db_connection($dbtype, $dbname, $dbuser, $dbpass); local $dberr = &check_script_db_connection($dbtype, $dbname, $dbuser, $dbpass);
return (0, "Database connection failed : $dberr") if ($dberr); return (0, "Database connection failed : $dberr") if ($dberr);
@ -201,12 +220,10 @@ if ($opts->{'path'} =~ /\w/) {
if (!$upgrade) { if (!$upgrade) {
local $cdef = "$opts->{'dir'}/conf/conf.php.example"; local $cdef = "$opts->{'dir'}/conf/conf.php.example";
&run_as_domain_user($d, "cp ".quotemeta($cdef)." ".quotemeta($cfile)); &run_as_domain_user($d, "cp ".quotemeta($cdef)." ".quotemeta($cfile));
&set_ownership_permissions(undef, undef, 0777, $cfiledir); &set_permissions_as_domain_user($d, 0777, $cfiledir);
&set_ownership_permissions(undef, undef, 0666, $cfile); &set_permissions_as_domain_user($d, 0666, $cfile);
&run_as_domain_user($d, "mkdir ".quotemeta($docdir)); &run_as_domain_user($d, "mkdir ".quotemeta($docdir));
&set_ownership_permissions(undef, undef, 0777, $docdir); &set_permissions_as_domain_user($d, 0777, $docdir);
&run_as_domain_user($d, "mkdir ".quotemeta($altdir));
&set_ownership_permissions(undef, undef, 0777, $altdir);
} }
else { else {
# Preserve old config file, documents and custom directory # Preserve old config file, documents and custom directory
@ -289,8 +306,8 @@ else {
local $dinstall = "$opts->{'dir'}/install"; local $dinstall = "$opts->{'dir'}/install";
$dinstall =~ s/\/$//; $dinstall =~ s/\/$//;
$out = &run_as_domain_user($d, "rm -rf ".quotemeta($dinstall)); $out = &run_as_domain_user($d, "rm -rf ".quotemeta($dinstall));
&set_ownership_permissions(undef, undef, 0644, $cfile); &set_permissions_as_domain_user($d, 0644, $cfile);
&set_ownership_permissions(undef, undef, 0755, $cfiledir); &set_permissions_as_domain_user($d, 0755, $cfiledir);
} }
# Return a URL for the user # Return a URL for the user
@ -309,6 +326,7 @@ local $ipage = $opts->{'path'}."/install/".$page.".php";
local ($iout, $ierror); local ($iout, $ierror);
&post_http_connection($d, $ipage, $params, \$iout, \$ierror); &post_http_connection($d, $ipage, $params, \$iout, \$ierror);
print STDERR $iout;
if ($ierror) { if ($ierror) {
return $ierror; return $ierror;
@ -329,10 +347,10 @@ local $derr = &delete_script_install_directory($d, $opts);
return (0, $derr) if ($derr); return (0, $derr) if ($derr);
# Remove all llx_ tables from the database # Remove all llx_ tables from the database
# 3 times because of constraints # 4 times because of constraints
&cleanup_script_database($d, $opts->{'db'}, "llx_"); for(my $i=0; $i<4; $i++) {
&cleanup_script_database($d, $opts->{'db'}, "llx_"); &cleanup_script_database($d, $opts->{'db'}, "llx_");
&cleanup_script_database($d, $opts->{'db'}, "llx_"); }
# Take out the DB # Take out the DB
if ($opts->{'newdb'}) { if ($opts->{'newdb'}) {

View File

@ -615,7 +615,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
$i=0; $i=0;
foreach ($listfieldinsert as $f => $value) foreach ($listfieldinsert as $f => $value)
{ {
if ($value == 'price' || preg_match('/^amount/i',$value)) { if ($value == 'price' || preg_match('/^amount/i',$value) || preg_match('/^localtax/i',$value) || $value == 'taux') {
$_POST[$listfieldvalue[$i]] = price2num($_POST[$listfieldvalue[$i]],'MU'); $_POST[$listfieldvalue[$i]] = price2num($_POST[$listfieldvalue[$i]],'MU');
} }
else if ($value == 'entity') { else if ($value == 'entity') {
@ -663,7 +663,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
$i = 0; $i = 0;
foreach ($listfieldmodify as $field) foreach ($listfieldmodify as $field)
{ {
if ($field == 'price' || preg_match('/^amount/i',$field)) { if ($field == 'price' || preg_match('/^amount/i',$field) || preg_match('/^localtax/i',$field) || $field == 'taux') {
$_POST[$listfieldvalue[$i]] = price2num($_POST[$listfieldvalue[$i]],'MU'); $_POST[$listfieldvalue[$i]] = price2num($_POST[$listfieldvalue[$i]],'MU');
} }
else if ($field == 'entity') { else if ($field == 'entity') {
@ -1274,17 +1274,20 @@ if ($id)
$align="center"; $align="center";
} }
else if ($fieldlist[$field]=='localtax1') { else if ($fieldlist[$field]=='localtax1') {
$valuetoshow = price($valuetoshow, 0, $langs, 0, 0);
if ($obj->localtax1 == 0) if ($obj->localtax1 == 0)
$valuetoshow = ''; $valuetoshow = '';
$align="right"; $align="right";
} }
else if ($fieldlist[$field]=='localtax2') { else if ($fieldlist[$field]=='localtax2') {
$valuetoshow = price($valuetoshow, 0, $langs, 0, 0);
if ($obj->localtax2 == 0) if ($obj->localtax2 == 0)
$valuetoshow = ''; $valuetoshow = '';
$align="right"; $align="right";
} }
else if (in_array($fieldlist[$field],array('taux','localtax1','localtax2'))) else if (in_array($fieldlist[$field],array('taux','localtax1','localtax2')))
{ {
$valuetoshow = price($valuetoshow, 0, $langs, 0, 0);
$align="right"; $align="right";
} }
else if (in_array($fieldlist[$field],array('recuperableonly'))) else if (in_array($fieldlist[$field],array('recuperableonly')))

View File

@ -264,7 +264,7 @@ if ($action == 'add' && $canadduser)
$langs->load("errors"); $langs->load("errors");
$db->rollback(); $db->rollback();
if (is_array($object->errors) && count($object->errors)) setEventMessage($object->errors,'errors'); if (is_array($object->errors) && count($object->errors)) setEventMessage($object->errors,'errors');
else setEventMessage($object->error); else setEventMessage($object->error, 'errors');
$action="create"; // Go back to create page $action="create"; // Go back to create page
} }
@ -329,7 +329,7 @@ if ($action == 'update' && ! $_POST["cancel"])
$result=$tmpuser->fetch(0, GETPOST("login")); $result=$tmpuser->fetch(0, GETPOST("login"));
if ($result > 0) if ($result > 0)
{ {
setEventMessage($langs->trans("ErrorLoginAlreadyExists"), 'errors'); setEventMessage($langs->trans("ErrorLoginAlreadyExists", GETPOST('login')), 'errors');
$action="edit"; // Go back to create page $action="edit"; // Go back to create page
$error++; $error++;
} }