Merge branch '15.0' of git@github.com:Dolibarr/dolibarr.git into develop

This commit is contained in:
Laurent Destailleur 2022-01-25 15:43:42 +01:00
commit c3a58ae303
15 changed files with 55 additions and 49 deletions

View File

@ -163,7 +163,7 @@ class box_produits_alerte_stock extends ModeleBoxes
);
$this->info_box_contents[$line][] = array(
'td' => 'class="tdoverflowmax150 maxwidth150onsmartphone"',
'td' => 'class="tdoverflowmax100 maxwidth150onsmartphone"',
'text' => $objp->label,
);
@ -186,18 +186,13 @@ class box_produits_alerte_stock extends ModeleBoxes
}
}
$this->info_box_contents[$line][] = array(
/*$this->info_box_contents[$line][] = array(
'td' => 'class="nowraponall right amount"',
'text' => $price,
);
'text' => $price.' '.$price_base_type,
);*/
$this->info_box_contents[$line][] = array(
'td' => 'class="right"',
'text' => $price_base_type,
);
$this->info_box_contents[$line][] = array(
'td' => 'class="center"',
'td' => 'class="center nowraponall"',
'text' => price2num($objp->total_stock, 'MS').' / '.$objp->seuil_stock_alerte,
'text2'=>img_warning($langs->transnoentitiesnoconv("StockLowerThanLimit", $objp->seuil_stock_alerte)),
);

View File

@ -180,7 +180,7 @@ function delivery_prepare_head($object)
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php';
$upload_dir = $conf->commande->dir_output."/".dol_sanitizeFileName($tmpobject->ref);
$upload_dir = $conf->expedition->dir_output."/sending/".dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$'));
$nbLinks = Link::count($db, $tmpobject->element, $tmpobject->id);
$head[$h][0] = DOL_URL_ROOT.'/expedition/document.php?id='.$tmpobject->id;

View File

@ -110,11 +110,9 @@ print '</table>';
// We close div and reopen for second column
print '</div>';
print '<div class="fichehalfright">';
print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent tableforfield">';
$rightpart = '';
$alreadyoutput = 1;
foreach ($object->fields as $key => $val) {
if ($alreadyoutput) {
@ -139,38 +137,46 @@ foreach ($object->fields as $key => $val) {
$value = $object->$key;
print '<tr><td';
print ' class="'.(empty($val['tdcss']) ? 'titlefield' : $val['tdcss']).' fieldname_'.$key;
//if ($val['notnull'] > 0) print ' fieldrequired'; // No fieldrequired inthe view output
$rightpart .= '<tr><td';
$rightpart .= ' class="'.(empty($val['tdcss']) ? 'titlefield' : $val['tdcss']).' fieldname_'.$key;
//if ($val['notnull'] > 0) $rightpart .= ' fieldrequired'; // No fieldrequired inthe view output
if ($val['type'] == 'text' || $val['type'] == 'html') {
print ' tdtop';
$rightpart .= ' tdtop';
}
print '">';
$rightpart.= '">';
if (!empty($val['help'])) {
print $form->textwithpicto($langs->trans($val['label']), $langs->trans($val['help']));
$rightpart .= $form->textwithpicto($langs->trans($val['label']), $langs->trans($val['help']));
} else {
print $langs->trans($val['label']);
$rightpart .= $langs->trans($val['label']);
}
print '</td>';
print '<td class="valuefield fieldname_'.$key;
$rightpart .= '</td>';
$rightpart .= '<td class="valuefield fieldname_'.$key;
if ($val['type'] == 'text') {
print ' wordbreak';
$rightpart .= ' wordbreak';
}
if (!empty($val['cssview'])) {
print ' '.$val['cssview'];
$rightpart .= ' '.$val['cssview'];
}
print '">';
$rightpart .= '">';
if (in_array($val['type'], array('text', 'html'))) {
print '<div class="longmessagecut">';
$rightpart .= '<div class="longmessagecut">';
}
print $object->showOutputField($val, $key, $value, '', '', '', 0);
//print dol_escape_htmltag($object->$key, 1, 1);
$rightpart .= $object->showOutputField($val, $key, $value, '', '', '', 0);
//$rightpart .= dol_escape_htmltag($object->$key, 1, 1);
if (in_array($val['type'], array('text', 'html'))) {
print '</div>';
$rightpart .= '</div>';
}
print '</td>';
print '</tr>';
$rightpart .= '</td>';
$rightpart .= '</tr>';
}
print '<div class="fichehalfright">';
print '<div class="underbanner clearboth"></div>';
print '<table class="border centpercent tableforfield">';
print $rightpart;
?>
<!-- END PHP TEMPLATE commonfields_view.tpl.php -->

View File

@ -101,7 +101,7 @@ if ($action == 'add') {
$object->fk_incoterms = GETPOST('incoterm_id', 'int');
if (!$conf->expedition_bon->enabled && !empty($conf->stock->enabled)) {
$expedition->entrepot_id = GETPOST('entrepot_id');
$expedition->entrepot_id = GETPOST('entrepot_id', 'int');
}
// We loop on each line of order to complete object delivery with qty to delivery
@ -282,7 +282,7 @@ if ($action == 'create') { // Create. Seems to no be used
print '<input type="hidden" name="id" value="'.$object->id.'">';
print '<input type="hidden" name="ref" value="'.$object->ref.'">';
print dol_get_fiche_head($head, 'delivery', $langs->trans("Shipment"), -1, 'sending');
print dol_get_fiche_head($head, 'delivery', $langs->trans("Shipment"), -1, 'dolly');
/*
* Confirmation de la suppression

View File

@ -109,7 +109,7 @@ class Position extends CommonObject
'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2,),
'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>'1', 'position'=>501, 'notnull'=>0, 'visible'=>-2,),
'fk_contrat' => array('type'=>'integer:Contrat:contrat/class/contrat.class.php', 'label'=>'fk_contrat', 'enabled'=>'1', 'position'=>50, 'notnull'=>0, 'visible'=>0,),
'fk_user' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Employee', 'enabled'=>'1', 'position'=>55, 'notnull'=>1, 'visible'=>1,),
'fk_user' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Employee', 'enabled'=>'1', 'position'=>55, 'notnull'=>0, 'visible'=>1,),
'fk_job' => array('type'=>'integer:Job:/hrm/class/job.class.php', 'label'=>'Job', 'enabled'=>'1', 'position'=>56, 'notnull'=>1, 'visible'=>1,),
'date_start' => array('type'=>'date', 'label'=>'DateStart', 'enabled'=>'1', 'position'=>51, 'notnull'=>1, 'visible'=>1,),
'date_end' => array('type'=>'date', 'label'=>'DateEnd', 'enabled'=>'1', 'position'=>52, 'notnull'=>0, 'visible'=>1,),

View File

@ -264,7 +264,7 @@ if (($id || $ref) && $action == 'edit') {
if (is_array($SkilldetRecords) && count($SkilldetRecords) > 0) {
print '<table>';
foreach ($SkilldetRecords as $sk) {
if ($sk->rank > $MaxNumberSkill) {
if ($sk->rankorder > $MaxNumberSkill) {
continue;
}
@ -291,7 +291,7 @@ if (($id || $ref) && $action == 'edit') {
// if (!empty($val['help'])) {
// print $form->textwithpicto($langs->trans($val['label']), $langs->trans($val['help']));
// } else {
print $langs->trans($val['label']).'&nbsp;'.$langs->trans('rank').'&nbsp;'.$sk->rank;
print $langs->trans($val['label']).'&nbsp;'.$langs->trans('rank').'&nbsp;'.$sk->rankorder;
// }
print '</td>';
print '<td class="valuefieldcreate">';
@ -696,7 +696,7 @@ if ($action != "create" && $action != "edit") {
break; // Should not happen
}
if ($obj->rank > $MaxNumberSkill) {
if ($obj->rankorder > $MaxNumberSkill) {
continue;
}

View File

@ -292,7 +292,7 @@ CREATE TABLE llx_hrm_job_user(
date_creation datetime NOT NULL,
tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
fk_contrat integer,
fk_user integer NOT NULL,
fk_user integer,
fk_job integer NOT NULL,
date_start date,
date_end date,

View File

@ -23,7 +23,7 @@ CREATE TABLE llx_hrm_job_user(
date_creation datetime NOT NULL,
tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
fk_contrat integer,
fk_user integer NOT NULL,
fk_user integer,
fk_job integer NOT NULL,
date_start datetime,
date_end datetime,

View File

@ -2216,4 +2216,5 @@ NativeModules=Native modules
NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria
API_DISABLE_COMPRESSION=Disable compression of API responses
EachTerminalHasItsOwnCounter=Each terminal use its own counter.
FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first
FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first
PreviousHash=Previous hash

View File

@ -800,9 +800,10 @@ class Task extends CommonObject
* @param array $extrafields Show additional column from project or task
* @param int $includebilltime Calculate also the time to bill and billed
* @param array $search_array_options Array of search
* @param int $loadextras Fetch all Extrafields on each task
* @return array Array of tasks
*/
public function getTasksArray($usert = null, $userp = null, $projectid = 0, $socid = 0, $mode = 0, $filteronproj = '', $filteronprojstatus = '-1', $morewherefilter = '', $filteronprojuser = 0, $filterontaskuser = 0, $extrafields = array(), $includebilltime = 0, $search_array_options = array())
public function getTasksArray($usert = null, $userp = null, $projectid = 0, $socid = 0, $mode = 0, $filteronproj = '', $filteronprojstatus = '-1', $morewherefilter = '', $filteronprojuser = 0, $filterontaskuser = 0, $extrafields = array(), $includebilltime = 0, $search_array_options = array(), $loadextras = 0)
{
global $conf, $hookmanager;
@ -1022,6 +1023,10 @@ class Task extends CommonObject
}
}
}
if ($loadextras) {
$tasks[$i]->fetch_optionals();
}
}
$i++;

View File

@ -80,7 +80,6 @@ if (!$action) {
// Security check
$id = GETPOST("id", 'int');
$socid = 0;
if ($user->socid > 0) $socid = $user->socid;
$result = restrictedArea($user, 'ticket', $id, '');

View File

@ -115,7 +115,6 @@ if ($id || $track_id || $ref) {
$url_page_current = DOL_URL_ROOT.'/ticket/card.php';
// Security check - Protection if external user
$socid = 0;
if ($user->socid > 0) $socid = $user->socid;
$result = restrictedArea($user, 'ticket', $object->id);

View File

@ -61,7 +61,6 @@ $permissiontoadd = $user->rights->ticket->write;
// Security check
$id = GETPOST("id", 'int');
$socid = 0;
if ($user->socid > 0) $socid = $user->socid;
$result = restrictedArea($user, 'ticket', $object->id, '');

View File

@ -80,7 +80,6 @@ $permissiontoadd = $user->rights->ticket->write;
// Security check
$id = GETPOST("id", 'int');
$socid = 0;
if ($user->socid > 0) $socid = $user->socid;
$result = restrictedArea($user, 'ticket', $object->id, '');

View File

@ -1149,9 +1149,12 @@ class User extends CommonObject
$sql .= " AND r.entity = ".((int) $conf->entity);
}
} else {
$sql .= " AND gr.entity = ".((int) $conf->entity);
$sql .= " AND gu.entity = ".((int) $conf->entity);
$sql .= " AND r.entity = ".((int) $conf->entity);
$sql .= " AND gr.entity = ".((int) $conf->entity); // Only groups created in current entity
// The entity on the table usergroup_user should be useless and shoumd never be used because it is alreay into gr and r.
// but when using MULTICOMPANY_TRANSVERSE_MODE, we may insert record that make rubbish result due to duplicate record of
// other entities, so we are forced to add a filter here
$sql .= " AND gu.entity IN (0,".$conf->entity.")";
$sql .= " AND r.entity = ".((int) $conf->entity); // Only permission of modules enabled in current entity
}
$sql .= " AND gr.fk_usergroup = gu.fk_usergroup";
$sql .= " AND gu.fk_user = ".((int) $this->id);