Merge branch '13.0' of git@github.com:Dolibarr/dolibarr.git into 14.0
Conflicts: ChangeLog htdocs/adherents/card.php htdocs/filefunc.inc.php htdocs/install/repair.php
This commit is contained in:
commit
b9540c3eb6
31
ChangeLog
31
ChangeLog
@ -358,6 +358,37 @@ Following changes may create regressions for some external modules, but were nec
|
|||||||
* v14 seems to work correctly on PHP v8 but it generates a lot of verbose warnings. Currently, v14 i snot yet officialy supported with PHP 8.
|
* v14 seems to work correctly on PHP v8 but it generates a lot of verbose warnings. Currently, v14 i snot yet officialy supported with PHP 8.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 13.0.5 compared to 13.0.4 *****
|
||||||
|
|
||||||
|
FIX: 13.0: class CommandeFournisseurDispatch provides trigger for UPDATE but not for CREATE / DELETE
|
||||||
|
FIX: #18389 Accountancy - Bug on LDcompta10 export for supplier invoice
|
||||||
|
FIX: #18591 : Remove double quotes of SQL Queries for postgresql compatibility
|
||||||
|
FIX: Accountancy - Debug Export Sage50 / CIEL Compta / CIEL Compta Evo (Format XIMPORT)
|
||||||
|
FIX: Accountancy - Some problems of length with general & subledger account
|
||||||
|
FIX: add DISTINCT
|
||||||
|
FIX: an approved holiday can be canceled by an admin.
|
||||||
|
FIX: autocalculation of the supplier price in main currency.
|
||||||
|
FIX: better sql request
|
||||||
|
FIX: cannot add time spend when column ref is not displayed
|
||||||
|
FIX: compatibility postgre sql
|
||||||
|
FIX: holiday card: hooks uninitialized
|
||||||
|
FIX: Invoice - Missing button to reopen an abandoned situation invoice
|
||||||
|
FIX: invoice validation: when checking if any VAT rate has a negative amount, prevent false positives with -1.0E-14 amounts
|
||||||
|
FIX: list of categories in stats of supplier invoices
|
||||||
|
FIX: Manage credit note on situation invoice for calculate margin
|
||||||
|
FIX: method_exists needs object at first param
|
||||||
|
FIX: move fetch_optionnal into $ac_static->fetch()
|
||||||
|
FIX: multicompany transverse mode compatibility
|
||||||
|
FIX: on supplier order, JOIN with product fourn price table must be done with fk_soc too to avoid display several times a same line (because of same supplier product ref)
|
||||||
|
FIX: postgre filter select search extrafield
|
||||||
|
FIX: products/services card: hidden extrafields were overridden
|
||||||
|
FIX: shipping validation workflow: 'ORDER_NEW' trigger called from wrong object
|
||||||
|
FIX: task time: can't filter by user with pgsql + show error message
|
||||||
|
FIX: task time: keep on using natural_search
|
||||||
|
FIX: wrong users count in multicompany transverse mode
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 13.0.4 compared to 13.0.3 *****
|
***** ChangeLog for 13.0.4 compared to 13.0.3 *****
|
||||||
|
|
||||||
FIX: Allow disabling of a module (not a dangerous action) even if there is problem with token (due to bugged modules).
|
FIX: Allow disabling of a module (not a dangerous action) even if there is problem with token (due to bugged modules).
|
||||||
|
|||||||
@ -913,7 +913,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
$object->state_id = GETPOST('state_id', 'int');
|
$object->state_id = GETPOST('state_id', 'int');
|
||||||
|
|
||||||
// We set country_id, country_code and country for the selected country
|
// We set country_id, country_code and country for the selected country
|
||||||
$object->country_id = GETPOST('country_id', 'int') ?GETPOST('country_id', 'int') : $mysoc->country_id;
|
$object->country_id = GETPOST('country_id', 'int') ? GETPOST('country_id', 'int') : $mysoc->country_id;
|
||||||
if ($object->country_id) {
|
if ($object->country_id) {
|
||||||
$tmparray = getCountry($object->country_id, 'all');
|
$tmparray = getCountry($object->country_id, 'all');
|
||||||
$object->country_code = $tmparray['code'];
|
$object->country_code = $tmparray['code'];
|
||||||
@ -921,12 +921,12 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($socid)) {
|
if (!empty($socid)) {
|
||||||
$object = new Societe($db);
|
$soc = new Societe($db);
|
||||||
if ($socid > 0) {
|
if ($socid > 0) {
|
||||||
$object->fetch($socid);
|
$soc->fetch($socid);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!($object->id > 0)) {
|
if (!($soc->id > 0)) {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
print($langs->trans('ErrorRecordNotFound'));
|
print($langs->trans('ErrorRecordNotFound'));
|
||||||
exit;
|
exit;
|
||||||
@ -1009,7 +1009,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
|
|
||||||
// Company
|
// Company
|
||||||
print '<tr><td id="tdcompany">'.$langs->trans("Company").'</td><td><input type="text" name="societe" class="minwidth300" maxlength="128" value="'.(GETPOSTISSET('societe') ? GETPOST('societe', 'alphanohtml') : $object->company).'"></td></tr>';
|
print '<tr><td id="tdcompany">'.$langs->trans("Company").'</td><td><input type="text" name="societe" class="minwidth300" maxlength="128" value="'.(GETPOSTISSET('societe') ? GETPOST('societe', 'alphanohtml') : $soc->name).'"></td></tr>';
|
||||||
|
|
||||||
// Civility
|
// Civility
|
||||||
print '<tr><td>'.$langs->trans("UserTitle").'</td><td>';
|
print '<tr><td>'.$langs->trans("UserTitle").'</td><td>';
|
||||||
@ -1033,7 +1033,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
|
|
||||||
// EMail
|
// EMail
|
||||||
print '<tr><td>'.($conf->global->ADHERENT_MAIL_REQUIRED ? '<span class="fieldrequired">' : '').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED ? '</span>' : '').'</td>';
|
print '<tr><td>'.($conf->global->ADHERENT_MAIL_REQUIRED ? '<span class="fieldrequired">' : '').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED ? '</span>' : '').'</td>';
|
||||||
print '<td>'.img_picto('', 'object_email').' <input type="text" name="member_email" class="minwidth300" maxlength="255" value="'.(GETPOSTISSET('member_email') ? GETPOST('member_email', 'alpha') : $object->email).'"></td></tr>';
|
print '<td>'.img_picto('', 'object_email').' <input type="text" name="member_email" class="minwidth300" maxlength="255" value="'.(GETPOSTISSET('member_email') ? GETPOST('member_email', 'alpha') : $soc->email).'"></td></tr>';
|
||||||
|
|
||||||
// Website
|
// Website
|
||||||
print '<tr><td>'.$form->editfieldkey('Web', 'member_url', '', $object, 0).'</td>';
|
print '<tr><td>'.$form->editfieldkey('Web', 'member_url', '', $object, 0).'</td>';
|
||||||
@ -1041,21 +1041,25 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
|
|
||||||
// Address
|
// Address
|
||||||
print '<tr><td class="tdtop">'.$langs->trans("Address").'</td><td>';
|
print '<tr><td class="tdtop">'.$langs->trans("Address").'</td><td>';
|
||||||
print '<textarea name="address" wrap="soft" class="quatrevingtpercent" rows="2">'.(GETPOSTISSET('address') ?GETPOST('address', 'alphanohtml') : $object->address).'</textarea>';
|
print '<textarea name="address" wrap="soft" class="quatrevingtpercent" rows="2">'.(GETPOSTISSET('address') ?GETPOST('address', 'alphanohtml') : $soc->address).'</textarea>';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Zip / Town
|
// Zip / Town
|
||||||
print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td>';
|
print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td>';
|
||||||
print $formcompany->select_ziptown((GETPOSTISSET('zipcode') ? GETPOST('zipcode', 'alphanohtml') : $object->zip), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6);
|
print $formcompany->select_ziptown((GETPOSTISSET('zipcode') ? GETPOST('zipcode', 'alphanohtml') : $soc->zip), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6);
|
||||||
print ' ';
|
print ' ';
|
||||||
print $formcompany->select_ziptown((GETPOSTISSET('town') ? GETPOST('town', 'alphanohtml') : $object->town), 'town', array('zipcode', 'selectcountry_id', 'state_id'));
|
print $formcompany->select_ziptown((GETPOSTISSET('town') ? GETPOST('town', 'alphanohtml') : $soc->town), 'town', array('zipcode', 'selectcountry_id', 'state_id'));
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Country
|
// Country
|
||||||
$object->country_id = $object->country_id ? $object->country_id : $mysoc->country_id;
|
if (empty($soc->country_id)) {
|
||||||
print '<tr><td width="25%">'.$langs->trans('Country').'</td><td>';
|
$soc->country_id = $mysoc->country_id;
|
||||||
|
$soc->country_code = $mysoc->country_code;
|
||||||
|
$soc->state_id = $mysoc->state_id;
|
||||||
|
}
|
||||||
|
print '<tr><td>'.$langs->trans('Country').'</td><td>';
|
||||||
print img_picto('', 'country', 'class="pictofixedwidth"');
|
print img_picto('', 'country', 'class="pictofixedwidth"');
|
||||||
print $form->select_country(GETPOSTISSET('country_id') ? GETPOST('country_id', 'alpha') : $object->country_id, 'country_id');
|
print $form->select_country(GETPOSTISSET('country_id') ? GETPOST('country_id', 'alpha') : $soc->country_id, 'country_id');
|
||||||
if ($user->admin) {
|
if ($user->admin) {
|
||||||
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
||||||
}
|
}
|
||||||
@ -1064,9 +1068,9 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
// State
|
// State
|
||||||
if (empty($conf->global->MEMBER_DISABLE_STATE)) {
|
if (empty($conf->global->MEMBER_DISABLE_STATE)) {
|
||||||
print '<tr><td>'.$langs->trans('State').'</td><td>';
|
print '<tr><td>'.$langs->trans('State').'</td><td>';
|
||||||
if ($object->country_id) {
|
if ($soc->country_id) {
|
||||||
print img_picto('', 'state', 'class="pictofixedwidth"');
|
print img_picto('', 'state', 'class="pictofixedwidth"');
|
||||||
print $formcompany->select_state(GETPOSTISSET('state_id') ? GETPOST('state_id', 'int') : $object->state_id, $object->country_code);
|
print $formcompany->select_state(GETPOSTISSET('state_id') ? GETPOST('state_id', 'int') : $soc->state_id, $soc->country_code);
|
||||||
} else {
|
} else {
|
||||||
print $countrynotdefined;
|
print $countrynotdefined;
|
||||||
}
|
}
|
||||||
@ -1075,7 +1079,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
|
|
||||||
// Pro phone
|
// Pro phone
|
||||||
print '<tr><td>'.$langs->trans("PhonePro").'</td>';
|
print '<tr><td>'.$langs->trans("PhonePro").'</td>';
|
||||||
print '<td>'.img_picto('', 'object_phoning').' <input type="text" name="phone" size="20" value="'.(GETPOSTISSET('phone') ? GETPOST('phone', 'alpha') : $object->phone).'"></td></tr>';
|
print '<td>'.img_picto('', 'object_phoning').' <input type="text" name="phone" size="20" value="'.(GETPOSTISSET('phone') ? GETPOST('phone', 'alpha') : $soc->phone).'"></td></tr>';
|
||||||
|
|
||||||
// Personal phone
|
// Personal phone
|
||||||
print '<tr><td>'.$langs->trans("PhonePerso").'</td>';
|
print '<tr><td>'.$langs->trans("PhonePerso").'</td>';
|
||||||
|
|||||||
@ -133,7 +133,7 @@ class ActionsDatapolicy
|
|||||||
header('Content-Disposition: attachment; filename=datapolicy_portabilite.csv');
|
header('Content-Disposition: attachment; filename=datapolicy_portabilite.csv');
|
||||||
header('Pragma: no-cache');
|
header('Pragma: no-cache');
|
||||||
$object->fetch(GETPOST('socid'));
|
$object->fetch(GETPOST('socid'));
|
||||||
echo 'Name;Fistname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;'.PHP_EOL;
|
echo 'Name;Firstname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;'.PHP_EOL;
|
||||||
echo $object->name.';';
|
echo $object->name.';';
|
||||||
echo ';';
|
echo ';';
|
||||||
echo ';';
|
echo ';';
|
||||||
@ -157,7 +157,7 @@ class ActionsDatapolicy
|
|||||||
header('Pragma: no-cache');
|
header('Pragma: no-cache');
|
||||||
$soc = $object->fetch_thirdparty();
|
$soc = $object->fetch_thirdparty();
|
||||||
|
|
||||||
echo 'Name;Fistname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;'.PHP_EOL;
|
echo 'Name;Firstname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;'.PHP_EOL;
|
||||||
echo $object->lastname.';';
|
echo $object->lastname.';';
|
||||||
echo $object->firstname.';';
|
echo $object->firstname.';';
|
||||||
echo $object->getCivilityLabel().';';
|
echo $object->getCivilityLabel().';';
|
||||||
@ -181,7 +181,7 @@ class ActionsDatapolicy
|
|||||||
header('Content-Disposition: attachment; filename=datapolicy_portabilite.csv');
|
header('Content-Disposition: attachment; filename=datapolicy_portabilite.csv');
|
||||||
header('Pragma: no-cache');
|
header('Pragma: no-cache');
|
||||||
$soc = $object->fetch_thirdparty();
|
$soc = $object->fetch_thirdparty();
|
||||||
echo 'Name;Fistname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;'.PHP_EOL;
|
echo 'Name;Firstname;Civility;Thirdparty;Function;Address;ZipCode;City;Department;Country;Email;Pro Phone;Perso Phone;Mobile Phone;Instant Mail;Birthday;'.PHP_EOL;
|
||||||
echo $object->lastname.';';
|
echo $object->lastname.';';
|
||||||
echo $object->firstname.';';
|
echo $object->firstname.';';
|
||||||
echo $object->getCivilityLabel().';';
|
echo $object->getCivilityLabel().';';
|
||||||
|
|||||||
@ -565,7 +565,7 @@ if ($ok && GETPOST('restore_user_pictures', 'alpha')) {
|
|||||||
$filetotestsmall = $dolibarr_main_data_root.'/users/'.substr(sprintf('%08d', $obj->rowid), -1, 1).'/'.substr(sprintf('%08d', $obj->rowid), -2, 1).'/thumbs/'.$name.'_small'.$ext;
|
$filetotestsmall = $dolibarr_main_data_root.'/users/'.substr(sprintf('%08d', $obj->rowid), -1, 1).'/'.substr(sprintf('%08d', $obj->rowid), -2, 1).'/thumbs/'.$name.'_small'.$ext;
|
||||||
$filetotestmini = $dolibarr_main_data_root.'/users/'.substr(sprintf('%08d', $obj->rowid), -1, 1).'/'.substr(sprintf('%08d', $obj->rowid), -2, 1).'/thumbs/'.$name.'_mini'.$ext;
|
$filetotestmini = $dolibarr_main_data_root.'/users/'.substr(sprintf('%08d', $obj->rowid), -1, 1).'/'.substr(sprintf('%08d', $obj->rowid), -2, 1).'/thumbs/'.$name.'_mini'.$ext;
|
||||||
$exists = dol_is_file($filetotest);
|
$exists = dol_is_file($filetotest);
|
||||||
print 'Check user '.$obj->rowid.' lastname='.$obj->lastname.' fistname='.$obj->firstname.' photo='.$obj->photo.' file '.$filetotest." exists=".$exists."<br>\n";
|
print 'Check user '.$obj->rowid.' lastname='.$obj->lastname.' firstname='.$obj->firstname.' photo='.$obj->photo.' file '.$filetotest." exists=".$exists."<br>\n";
|
||||||
if ($exists) {
|
if ($exists) {
|
||||||
$filetarget = $dolibarr_main_data_root.'/users/'.$obj->rowid.'/'.$name.$ext;
|
$filetarget = $dolibarr_main_data_root.'/users/'.$obj->rowid.'/'.$name.$ext;
|
||||||
$filetargetsmall = $dolibarr_main_data_root.'/users/'.$obj->rowid.'/thumbs/'.$name.'_small'.$ext;
|
$filetargetsmall = $dolibarr_main_data_root.'/users/'.$obj->rowid.'/thumbs/'.$name.'_small'.$ext;
|
||||||
|
|||||||
@ -1671,7 +1671,7 @@ class Ticket extends CommonObject
|
|||||||
$actioncomm->userassigned = array($user->id);
|
$actioncomm->userassigned = array($user->id);
|
||||||
$actioncomm->userownerid = $user->id;
|
$actioncomm->userownerid = $user->id;
|
||||||
$actioncomm->datep = $now;
|
$actioncomm->datep = $now;
|
||||||
$actioncomm->percentage = 100;
|
$actioncomm->percentage = -1; // percentage is not relevant for punctual events
|
||||||
$actioncomm->elementtype = 'ticket';
|
$actioncomm->elementtype = 'ticket';
|
||||||
$actioncomm->fk_element = $this->id;
|
$actioncomm->fk_element = $this->id;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user