diff --git a/ChangeLog b/ChangeLog index 70144f80733..e75961c24f3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -14,7 +14,7 @@ WARNING: Following changes may create regressions for some external modules, but were necessary to make Dolibarr better: * Properties ->libelle_incoterms were renamed into ->label_incoterms - +* Removed the method liste_array() of project class. It was not used by core code. ***** ChangeLog for 10.0.0 compared to 9.0.0 ***** @@ -499,6 +499,41 @@ Following changes may create regressions for some external modules, but were nec * Remove the no more used and deprecated dol_print_graph function +***** ChangeLog for 8.0.6 compared to 8.0.5 ***** +FIX: #11244 +FIX: #11316 +FIX: Add missing end date of subscription in export +FIX: A user may read holiday and expense report without permissions +FIX: better syntax +FIX: condition +FIX: confirmation of mass email sending + option MAILING_NO_USING_PHPMAIL +FIX: crabe pdf: bad detailed VAT for situation invoices, in situations S2 and above +FIX: default value for duration of validity can be set from generic +FIX: do not include tpl from disabled modules +FIX: Error management when MAILING_NO_USING_PHPMAIL is set +FIX: Even with permission, can't validate leave once validator defined. +FIX: extrafield list search: SQL error when field is multiselect +FIX: if last char of customercode is accent making the truncate of first +FIX: in edit mode, dictionary inputs do not escape the string inside the 'value' attribute, causing errors if there are any double quotes +FIX: invalid link on user.fk_user +FIX: invoice class: bad SQL request if product type not set +FIX: mail presend: can overwrite a file previously uploaded +FIX: mail presend: can overwrite a file previously uploaded (Issue #11056) +FIX: mass send mail +FIX: missing compatibility with multicompany transverse mode +FIX: modulebuilder: hardcoded llx_ +FIX: Not showing Contract and Project columns on ficheinter list +FIX: remove isolated transaction commit +FIX: security (a user can read leave or holiday of other without perm. +FIX: situation invoices: bad detailed VAT in situations following the first one +FIX: situation invoices: block progress percentage change for discount lines +FIX: syntax error +FIX: try to use WHERE EXISTS instead DISTINCT +FIX: use dol_sanitizeFileName() function to remove double spaces in filenames, as well as done on document.php when we want to download pdf +FIX: var name +FIX: we need to fetch fourn invoice with ref in current entity +FIX: Wrong stock movement on supplier credit notes + ***** ChangeLog for 8.0.5 compared to 8.0.4 ***** FIX: #10381 FIX: #10460 compatibility with MariaDB 10.4 diff --git a/README.md b/README.md index a59e3e8d8f3..5d4de0af909 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@  [](https://houndci.com) -|6|7|8|9|develop| +|7|8|9|10|develop| |----------|----------|----------|----------|----------| -|||||| +|||||| Dolibarr ERP & CRM is a modern software package to manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda…). diff --git a/build/exe/doliwamp/Languages/MyEnglish.isl b/build/exe/doliwamp/Languages/MyEnglish.isl index 18068087804..b066a5f87f6 100644 --- a/build/exe/doliwamp/Languages/MyEnglish.isl +++ b/build/exe/doliwamp/Languages/MyEnglish.isl @@ -11,7 +11,7 @@ LaunchProgram=Launch %1 AssocFileExtension=&Associate %1 with the %2 file extension AssocingFileExtension=Associating %1 with the %2 file extension... -YouWillInstallDoliWamp=You will install or upgrade DoliWamp (so Dolibarr + all required third party softwares like Apache, Mysql and PHP) on your computer. +YouWillInstallDoliWamp=You will install or upgrade DoliWamp (so Dolibarr + all required third party software like Apache, Mysql and PHP) on your computer. ThisAssistantInstallOrUpgrade=WARNING: Using an ERP CRM installed on a local computer can be dangerous: if your computer break down, you can lose all your data. Do this if you are ready to manage backup yourself seriously. If not, use an installation in Saas instead (see https://saas.dolibarr.org). IfYouHaveTechnicalKnowledge=Moreover, if you have technical knowledges and want to manage your Apache, Mysql and PHP yourself, you should not use this assistant and make a manual installation of Dolibarr on your existing server with Apache, Mysql and PHP. ButIfYouLook=But if you look for an automatic setup on your local computer, you''re on the good way... diff --git a/build/exe/doliwamp/README.md b/build/exe/doliwamp/README.md index ca3aaa6aece..8e6f4744438 100644 --- a/build/exe/doliwamp/README.md +++ b/build/exe/doliwamp/README.md @@ -1,7 +1,7 @@ # DOLIWAMP, THE DOLIBARR INSTALLER FOR WINDOWS DoliWamp is a special all in one package installer for Windows (Dolibarr+Mysql+Apache+PHP). -It's a dedicated Dolibarr version for Windows newbies with no technical knowledge. This package will install or upgrade Dolibarr but also and all prerequisites like the web server, and the database in one autoinstall process. +It's a dedicated Dolibarr version for Windows newbies with no technical knowledge. This package will install or upgrade Dolibarr but also all prerequisites like the web server, and the database in one auto-install process. If you have technical knowledge in web administration and plan to share your server instance (Apache, Mysql or PHP) with other projects than Dolibarr or want to use Dolibarr other components (PostgreSQL), you should not use this assistant and make a manual installation of Dolibarr on your existing server by downloading the standard package (.tgz or .zip file). diff --git a/build/exe/doliwamp/doliwamp.iss b/build/exe/doliwamp/doliwamp.iss index 587f2584dbe..93f515d3440 100644 --- a/build/exe/doliwamp/doliwamp.iss +++ b/build/exe/doliwamp/doliwamp.iss @@ -31,7 +31,7 @@ AppPublisher=NLTechno AppPublisherURL=https://www.nltechno.com AppSupportURL=https://www.dolibarr.org AppUpdatesURL=https://www.dolibarr.org -AppComments=DoliWamp includes Dolibarr, Apache, PHP and Mysql softwares. +AppComments=DoliWamp includes Dolibarr, Apache, PHP and Mysql software. AppCopyright=Copyright (C) 2008-2019 Laurent Destailleur (NLTechno), Fabian Rodriguez (Le Goût du Libre) DefaultDirName=c:\dolibarr DefaultGroupName=Dolibarr diff --git a/build/exe/doliwamp/httpd.conf.install b/build/exe/doliwamp/httpd.conf.install index b2b3a9a8118..40cc9a2f5c6 100644 --- a/build/exe/doliwamp/httpd.conf.install +++ b/build/exe/doliwamp/httpd.conf.install @@ -150,7 +150,7 @@ Require local # e-mailed. This address appears on some server-generated pages, such # as error documents. e.g. admin@your-domain.com # -ServerAdmin webmaster@localhost +ServerAdmin doliwamp@localhost # # ServerName gives the name and port that the server uses to identify itself. @@ -772,5 +772,5 @@ SSLCertificateKeyFile "WAMPROOT/myserver.key" # -# Declare alias for Dolibarr, PHPMyAdmin and other softwares +# Declare alias for Dolibarr, PHPMyAdmin and other software Include "WAMPROOT/alias/*.conf" diff --git a/build/exe/doliwamp/install.forced.php.install b/build/exe/doliwamp/install.forced.php.install index 5b186c17268..c59b373a7a0 100644 --- a/build/exe/doliwamp/install.forced.php.install +++ b/build/exe/doliwamp/install.forced.php.install @@ -5,6 +5,7 @@ // during install process to be used. // // +$force_install_type='doliwamp'; $force_install_noedit=2; // 1=To block vars specific to distrib, 2 to block all technical parameters $force_install_message='KeepDefaultValuesWamp'; $force_install_main_data_root='WAMPROOT/dolibarr_documents'; diff --git a/build/exe/doliwamp/php.ini.install b/build/exe/doliwamp/php.ini.install index 46e4dc685b7..04191a71f5a 100644 --- a/build/exe/doliwamp/php.ini.install +++ b/build/exe/doliwamp/php.ini.install @@ -653,6 +653,8 @@ default_socket_timeout = 60 ; extension folders as well as the separate PECL DLL download (PHP 5). ; Be sure to appropriately set the extension_dir directive. +; If an extension does not load, run "deplister.exe php_xxx.dll" to get list of dependency dll missing. + extension=php_bz2.dll extension=php_curl.dll ;extension=php_dba.dll @@ -665,6 +667,7 @@ extension=php_gd2.dll ;extension=php_ifx.dll ;extension=php_imap.dll ;extension=php_interbase.dll +extension=php_intl.dll extension=php_ldap.dll extension=php_mbstring.dll ;extension=php_mcrypt.dll diff --git a/build/exe/doliwamp/rundoliadmin.bat.install b/build/exe/doliwamp/rundoliadmin.bat.install index dcd113f4ab5..c5186c7d1e7 100644 --- a/build/exe/doliwamp/rundoliadmin.bat.install +++ b/build/exe/doliwamp/rundoliadmin.bat.install @@ -4,3 +4,4 @@ REM ---------------------------- REM Go to admin center page start "WAMPBROWSER" http://localhost:WAMPAPACHEPORT/ +REM FOR EDGE start microsoft-edge:"http://localhost:WAMPAPACHEPORT/" \ No newline at end of file diff --git a/build/exe/doliwamp/rundolihelp.bat.install b/build/exe/doliwamp/rundolihelp.bat.install index eed5346de9f..c1c4a7c3d27 100644 --- a/build/exe/doliwamp/rundolihelp.bat.install +++ b/build/exe/doliwamp/rundolihelp.bat.install @@ -5,3 +5,4 @@ REM --------------------------- REM Go to help center page echo Please wait... start "WAMPBROWSER" http://localhost:WAMPAPACHEPORT/dolibarr/support/ +REM FOR EDGE start microsoft-edge:"http://localhost:WAMPAPACHEPORT/dolibarr/support/" \ No newline at end of file diff --git a/build/exe/doliwamp/rundoliwamp.bat.install b/build/exe/doliwamp/rundoliwamp.bat.install index c576c5d240b..9470717d661 100644 --- a/build/exe/doliwamp/rundoliwamp.bat.install +++ b/build/exe/doliwamp/rundoliwamp.bat.install @@ -4,6 +4,8 @@ REM --------------- REM If no lock file, we call install process IF NOT EXIST dolibarr_documents\install.lock start "WAMPBROWSER" http://localhost:WAMPAPACHEPORT/dolibarr/install/ +REM FOR EDGE IF NOT EXIST dolibarr_documents\install.lock start microsoft-edge:"http://localhost:WAMPAPACHEPORT/dolibarr/install/" REM If lock file exists, we call home page IF EXIST dolibarr_documents\install.lock start "WAMPBROWSER" http://localhost:WAMPAPACHEPORT/dolibarr/ +REM FOR EDGE IF EXIST dolibarr_documents\install.lock start microsoft-edge:"http://localhost:WAMPAPACHEPORT/dolibarr/" diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index b787d439243..8e296163a46 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -367,7 +367,6 @@ if ($nboftargetok) { { #print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\'| sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa'; print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. | grep -v "Merge branch" | grep -v "Merge pull" | grep "^ " | sed -e "s/^[0-9a-z]* *//" | grep -e \'^FIX\|NEW\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa'; - } print "\n"; if (! $ret) @@ -382,11 +381,15 @@ if ($nboftargetok) { } } } - + # Build xml check file #----------------------- if ($CHOOSEDTARGET{'-CHKSUM'}) { + print "Go to directory $SOURCE\n"; + $olddir=getcwd(); + chdir("$SOURCE"); + $ret=`git ls-files . --exclude-standard --others`; if ($ret) { diff --git a/dev/dolibarr_changes.txt b/dev/dolibarr_changes.txt index 5bad55fd4d2..e87b082dd06 100644 --- a/dev/dolibarr_changes.txt +++ b/dev/dolibarr_changes.txt @@ -27,6 +27,15 @@ With +ESCPOS: +------- +Replace + private $connector; +With + protected $connector; + + + NUSOAP: ------- * In file nusoap.php, to avoid a warning, diff --git a/htdocs/accountancy/admin/journals_list.php b/htdocs/accountancy/admin/journals_list.php index cac81bfbcae..78cd92f90e0 100644 --- a/htdocs/accountancy/admin/journals_list.php +++ b/htdocs/accountancy/admin/journals_list.php @@ -162,7 +162,7 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha')) { if ($fieldnamekey == 'libelle' || ($fieldnamekey == 'label')) $fieldnamekey='Label'; if ($fieldnamekey == 'code') $fieldnamekey = 'Code'; - if ($fieldnamekey == 'nature') $fieldnamekey = 'Nature'; + if ($fieldnamekey == 'nature') $fieldnamekey = 'NatureOfJournal'; } // Other checks if (isset($_POST["code"])) @@ -437,7 +437,7 @@ if ($id) $valuetoshow=$langs->trans("Label"); } if ($fieldlist[$field]=='nature') { - $valuetoshow=$langs->trans("Nature"); + $valuetoshow=$langs->trans("NatureOfJournal"); } if ($valuetoshow != '') { @@ -516,7 +516,7 @@ if ($id) } // Title line with search boxes - print '
| '; } + + +// Fields from hook +$parameters=array('arrayfields'=>$arrayfields); +$reshook=$hookmanager->executeHooks('printFieldListOption', $parameters); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; + // Date creation if (! empty($arrayfields['t.date_creation']['checked'])) { @@ -695,6 +716,10 @@ if (! empty($arrayfields['t.debit']['checked'])) print_liste_field_titre($arr if (! empty($arrayfields['t.credit']['checked'])) print_liste_field_titre($arrayfields['t.credit']['label'], $_SERVER['PHP_SELF'], "t.credit", "", $param, '', $sortfield, $sortorder, 'right '); if (! empty($arrayfields['t.lettering_code']['checked'])) print_liste_field_titre($arrayfields['t.lettering_code']['label'], $_SERVER['PHP_SELF'], "t.lettering_code", "", $param, '', $sortfield, $sortorder, 'center '); if (! empty($arrayfields['t.code_journal']['checked'])) print_liste_field_titre($arrayfields['t.code_journal']['label'], $_SERVER['PHP_SELF'], "t.code_journal", "", $param, '', $sortfield, $sortorder, 'center '); +// Hook fields +$parameters=array('arrayfields'=>$arrayfields,'param'=>$param,'sortfield'=>$sortfield,'sortorder'=>$sortorder); +$reshook=$hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; if (! empty($arrayfields['t.date_creation']['checked'])) print_liste_field_titre($arrayfields['t.date_creation']['label'], $_SERVER['PHP_SELF'], "t.date_creation", "", $param, '', $sortfield, $sortorder, 'center '); if (! empty($arrayfields['t.tms']['checked'])) print_liste_field_titre($arrayfields['t.tms']['label'], $_SERVER['PHP_SELF'], "t.tms", "", $param, '', $sortfield, $sortorder, 'center '); if (! empty($arrayfields['t.date_export']['checked'])) print_liste_field_titre($arrayfields['t.date_export']['label'], $_SERVER['PHP_SELF'], "t.date_export", "", $param, '', $sortfield, $sortorder, 'center '); @@ -796,6 +821,11 @@ if ($num > 0) if (! $i) $totalarray['nbfield']++; } + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $reshook=$hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Creation operation date if (! empty($arrayfields['t.date_creation']['checked'])) { @@ -853,10 +883,15 @@ if ($num > 0) elseif ($totalarray['totalcreditfield'] == $i) print ' | '.price($totalarray['totalcredit']).' | '; else print ''; } + $parameters=array('arrayfields'=>$arrayfields, 'sql'=>$sql); + $reshook=$hookmanager->executeHooks('printFieldListFooter', $parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print ''; } } + print " |
| '; diff --git a/htdocs/admin/boxes.php b/htdocs/admin/boxes.php index 70672f9b6fb..2e81a2c6dad 100644 --- a/htdocs/admin/boxes.php +++ b/htdocs/admin/boxes.php @@ -169,7 +169,7 @@ if ($action == 'delete') if ($action == 'switch') { - // On permute les valeur du champ box_order des 2 lignes de la table boxes + // We switch values of field box_order for the 2 lines of table boxes $db->begin(); $objfrom=new ModeleBoxes($db); diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index c3d92edefda..87e072b8d7e 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -1622,7 +1622,11 @@ if ($id) elseif ($obj->code == 'RECEP') { $iserasable = 0; $canbedisabled = 0; } elseif ($obj->code == 'EF0') { $iserasable = 0; $canbedisabled = 0; } } - + if ($id == 25 && in_array($obj->code, array('banner', 'blogpost', 'other', 'page'))) + { + $iserasable = 0; $canbedisabled = 0; + if (in_array($obj->code, array('banner'))) $canbedisabled = 1; + } if (isset($obj->type) && in_array($obj->type, array('system', 'systemauto'))) { $iserasable=0; } if (in_array($obj->code, array('AC_OTH','AC_OTH_AUTO')) || in_array($obj->type, array('systemauto'))) { $canbedisabled=0; $canbedisabled = 0; } $canbemodified=$iserasable; @@ -1903,6 +1907,9 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') { print ''; } + else{ + print ''; + } print ' | '; } elseif ($fieldlist[$field] == 'price' || preg_match('/^amount/i', $fieldlist[$field])) { @@ -1965,7 +1972,13 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') } else { - if ($fieldlist[$field]=='sortorder') $fieldlist[$field]='position'; + + $fieldValue = isset($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''; + + if ($fieldlist[$field]=='sortorder') + { + $fieldlist[$field]='position'; + } $classtd=''; $class=''; if ($fieldlist[$field]=='code') $classtd='width100'; @@ -1982,7 +1995,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') } if ($tabname == MAIN_DB_PREFIX.'c_payment_term') { $langs->load("bills"); - $transkey="PaymentCondition".strtoupper($obj->code); + $transkey="PaymentConditionShort".strtoupper($obj->code); } if ($transkey && $langs->trans($transkey) != $transkey) { @@ -1992,8 +2005,11 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') } if (! $transfound) { - print ''; + print ''; } + else{ + print ''; + } print ''; } } diff --git a/htdocs/admin/holiday.php b/htdocs/admin/holiday.php index e3571fdb253..27dddf8668a 100644 --- a/htdocs/admin/holiday.php +++ b/htdocs/admin/holiday.php @@ -201,6 +201,7 @@ dol_fiche_head($head, 'holiday', $langs->trans("Holidays"), -1, 'holiday'); print load_fiche_titre($langs->trans("HolidaysNumberingModules"), '', ''); +print '
| '.$langs->trans("Name").' | '; @@ -294,8 +295,10 @@ foreach ($dirmodels as $reldir) } } -print '
| '.$langs->trans("Name").' | '; @@ -457,6 +461,7 @@ foreach ($dirmodels as $reldir) } print '
| '.$langs->trans("Parameter").' | '; @@ -506,6 +513,8 @@ print '