forked from Wavyzz/dolibarr
Work on expense report module
This commit is contained in:
@@ -210,19 +210,17 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$langs->load("other");
|
$langs->load("other");
|
||||||
$mesg='<div class="error">';
|
|
||||||
if ($mailfile->error)
|
if ($mailfile->error)
|
||||||
{
|
{
|
||||||
|
$mesg='';
|
||||||
$mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto);
|
$mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto);
|
||||||
$mesg.='<br>'.$mailfile->error;
|
$mesg.='<br>'.$mailfile->error;
|
||||||
|
setEventMessage($mesg,'errors');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$mesg.='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS';
|
setEventMessage('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', 'warnings');
|
||||||
}
|
}
|
||||||
$mesg.='</div>';
|
|
||||||
|
|
||||||
setEventMessage($mesg,'warnings');
|
|
||||||
$action = 'presend';
|
$action = 'presend';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4189,15 +4189,15 @@ function get_date_range($date_start,$date_end,$format = '',$outputlangs='', $wit
|
|||||||
|
|
||||||
if ($date_start && $date_end)
|
if ($date_start && $date_end)
|
||||||
{
|
{
|
||||||
$out.= ($withparenthesis?' (':'').$outputlangs->trans('DateFromTo',dol_print_date($date_start, $format, false, $outputlangs),dol_print_date($date_end, $format, false, $outputlangs)).($withparenthesis?')':'');
|
$out.= ($withparenthesis?' (':'').$outputlangs->transnoentitiesnoconv('DateFromTo',dol_print_date($date_start, $format, false, $outputlangs),dol_print_date($date_end, $format, false, $outputlangs)).($withparenthesis?')':'');
|
||||||
}
|
}
|
||||||
if ($date_start && ! $date_end)
|
if ($date_start && ! $date_end)
|
||||||
{
|
{
|
||||||
$out.= ($withparenthesis?' (':'').$outputlangs->trans('DateFrom',dol_print_date($date_start, $format, false, $outputlangs)).($withparenthesis?')':'');
|
$out.= ($withparenthesis?' (':'').$outputlangs->transnoentitiesnoconv('DateFrom',dol_print_date($date_start, $format, false, $outputlangs)).($withparenthesis?')':'');
|
||||||
}
|
}
|
||||||
if (! $date_start && $date_end)
|
if (! $date_start && $date_end)
|
||||||
{
|
{
|
||||||
$out.= ($withparenthesis?' (':'').$outputlangs->trans('DateUntil',dol_print_date($date_end, $format, false, $outputlangs)).($withparenthesis?')':'');
|
$out.= ($withparenthesis?' (':'').$outputlangs->transnoentitiesnoconv('DateUntil',dol_print_date($date_end, $format, false, $outputlangs)).($withparenthesis?')':'');
|
||||||
}
|
}
|
||||||
|
|
||||||
return $out;
|
return $out;
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ class modExpenseReport extends DolibarrModules
|
|||||||
$this->rights[6][1] = 'Approve expense reports';
|
$this->rights[6][1] = 'Approve expense reports';
|
||||||
$this->rights[6][2] = 'w';
|
$this->rights[6][2] = 'w';
|
||||||
$this->rights[6][3] = 0;
|
$this->rights[6][3] = 0;
|
||||||
$this->rights[6][4] = 'to_validate';
|
$this->rights[6][4] = 'approve';
|
||||||
|
|
||||||
$this->rights[7][0] = 776;
|
$this->rights[7][0] = 776;
|
||||||
$this->rights[7][1] = 'Pay expense reports';
|
$this->rights[7][1] = 'Pay expense reports';
|
||||||
@@ -267,7 +267,7 @@ class modExpenseReport extends DolibarrModules
|
|||||||
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
'position'=>100,
|
'position'=>100,
|
||||||
'enabled'=>'$conf->expensereport->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
'enabled'=>'$conf->expensereport->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled.
|
||||||
'perms'=>'$user->rights->expensereport->lire', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
'perms'=>'$user->rights->expensereport->approve', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
|
||||||
'target'=>'',
|
'target'=>'',
|
||||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||||
$r++;
|
$r++;
|
||||||
|
|||||||
@@ -70,6 +70,11 @@ if (! empty($conf->multicompany->enabled) && ! empty($conf->entity) && $conf->en
|
|||||||
$conf->expensereport->dir_output = $rootfordata.'/expensereport';
|
$conf->expensereport->dir_output = $rootfordata.'/expensereport';
|
||||||
$conf->expensereport->dir_output = $rootfordata.'/expensereport';
|
$conf->expensereport->dir_output = $rootfordata.'/expensereport';
|
||||||
|
|
||||||
|
// Define $urlwithroot
|
||||||
|
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
|
||||||
|
$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
|
||||||
|
//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -166,12 +171,9 @@ if ($action == "confirm_save" && GETPOST("confirm") == "yes" && $id > 0 && $user
|
|||||||
$object = new ExpenseReport($db);
|
$object = new ExpenseReport($db);
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
$result = $object->setValidate($user);
|
$result = $object->setValidate($user);
|
||||||
if ($result > 0)
|
if ($result > 0 && $object->fk_user_validator > 0)
|
||||||
{
|
{
|
||||||
// Send mail
|
$langs->load("mails");
|
||||||
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
|
||||||
{
|
|
||||||
// Send mail
|
|
||||||
|
|
||||||
// TO
|
// TO
|
||||||
$destinataire = new User($db);
|
$destinataire = new User($db);
|
||||||
@@ -184,17 +186,14 @@ if ($action == "confirm_save" && GETPOST("confirm") == "yes" && $id > 0 && $user
|
|||||||
$emailFrom = $expediteur->email;
|
$emailFrom = $expediteur->email;
|
||||||
|
|
||||||
// SUBJECT
|
// SUBJECT
|
||||||
$subject = "' ERP - Note de frais à valider";
|
$subject = $langs->trans("ExpenseReportWaitingForApproval");
|
||||||
|
|
||||||
// CONTENT
|
// CONTENT
|
||||||
$message = "Bonjour {$destinataire->firstname},\n\n";
|
$link = $urlwithroot.'/expenserecord/card.php?id='.$object->id;
|
||||||
$message.= "Veuillez trouver en pièce jointe une nouvelle note de frais à valider.\n";
|
$message = $langs->trans("ExpenseReportWaitingForApprovalMessage", $expediteur->getFullName($langs), get_date_range($object->date_debut,$object->date_fin,'',$langs), $link);
|
||||||
$message.= "- Déclarant : {$expediteur->firstname} {$expediteur->lastname}\n";
|
|
||||||
$message.= "- Période : du {$object->date_debut} au {$object->date_fin}\n";
|
|
||||||
$message.= "- Lien : {$dolibarr_main_url_root}/expensereport/card.php?id={$object->id}\n\n";
|
|
||||||
$message.= "Bien cordialement,\n' SI";
|
|
||||||
|
|
||||||
// Génération du pdf avant attachement
|
// Rebuild pdf
|
||||||
|
/*
|
||||||
$object->setDocModel($user,"");
|
$object->setDocModel($user,"");
|
||||||
$resultPDF = expensereport_pdf_create($db,$id,'',"",$langs);
|
$resultPDF = expensereport_pdf_create($db,$id,'',"",$langs);
|
||||||
|
|
||||||
@@ -204,29 +203,42 @@ if ($action == "confirm_save" && GETPOST("confirm") == "yes" && $id > 0 && $user
|
|||||||
array_push($filename,dol_sanitizeFileName($object->ref).".pdf");
|
array_push($filename,dol_sanitizeFileName($object->ref).".pdf");
|
||||||
array_push($filedir,$conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref) . "/" . dol_sanitizeFileName($object->ref).".pdf");
|
array_push($filedir,$conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref) . "/" . dol_sanitizeFileName($object->ref).".pdf");
|
||||||
array_push($mimetype,"application/pdf");
|
array_push($mimetype,"application/pdf");
|
||||||
|
*/
|
||||||
|
|
||||||
// PREPARE SEND
|
// PREPARE SEND
|
||||||
$mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message,$filedir,$mimetype,$filename);
|
$mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message,$filedir,$mimetype,$filename);
|
||||||
|
|
||||||
if(!$mailfile->error):
|
if ($mailfile)
|
||||||
|
{
|
||||||
// SEND
|
// SEND
|
||||||
$result=$mailfile->sendfile();
|
$result=$mailfile->sendfile();
|
||||||
if ($result):
|
if ($result)
|
||||||
Header("Location: ".$_SEVER["PHP_SELF"]."?id=".$id);
|
{
|
||||||
|
$mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($emailFrom,2),$mailfile->getValidAddress($emailTo,2));
|
||||||
|
setEventMessage($mesg);
|
||||||
|
header("Location: ".$_SEVER["PHP_SELF"]."?id=".$id);
|
||||||
exit;
|
exit;
|
||||||
endif;
|
}
|
||||||
|
else
|
||||||
else:
|
{
|
||||||
|
$langs->load("other");
|
||||||
$mesg="Impossible d'envoyer l'email.";
|
if ($mailfile->error)
|
||||||
|
{
|
||||||
endif;
|
$mesg='';
|
||||||
// END - Send mail
|
$mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto);
|
||||||
else:
|
$mesg.='<br>'.$mailfile->error;
|
||||||
dol_print_error($db,$resultPDF);
|
setEventMessage($mesg,'errors');
|
||||||
exit;
|
}
|
||||||
endif;
|
else
|
||||||
|
{
|
||||||
|
setEventMessage('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', 'warnings');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setEventMessages($mailfile->error,$mailfile->errors,'errors');
|
||||||
|
$action='';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -311,7 +323,7 @@ if ($action == "confirm_save_from_refuse" && GETPOST("confirm") == "yes" && $id
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Approve
|
// Approve
|
||||||
if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->to_validate)
|
if ($action == "confirm_approve" && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->approve)
|
||||||
{
|
{
|
||||||
$object = new ExpenseReport($db);
|
$object = new ExpenseReport($db);
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
@@ -394,7 +406,7 @@ if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == "confirm_refuse" && GETPOST('confirm')=="yes" && $id > 0 && $user->rights->expensereport->to_validate)
|
if ($action == "confirm_refuse" && GETPOST('confirm')=="yes" && $id > 0 && $user->rights->expensereport->approve)
|
||||||
{
|
{
|
||||||
$object = new ExpenseReport($db);
|
$object = new ExpenseReport($db);
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
@@ -1120,7 +1132,7 @@ else
|
|||||||
endif;
|
endif;
|
||||||
|
|
||||||
if ($action == 'validate'):
|
if ($action == 'validate'):
|
||||||
$ret=$form->form_confirm($_SEVER["PHP_SELF"]."?id=".$id,$langs->trans("ValideTrip"),$langs->trans("ConfirmValideTrip"),"confirm_validate","","",1);
|
$ret=$form->form_confirm($_SEVER["PHP_SELF"]."?id=".$id,$langs->trans("ValideTrip"),$langs->trans("ConfirmValideTrip"),"confirm_approve","","",1);
|
||||||
if ($ret == 'html') print '<br>';
|
if ($ret == 'html') print '<br>';
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
@@ -1633,7 +1645,7 @@ if ($action != 'create' && $action != 'edit')
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Si l'état est "En attente d'approbation"
|
/* Si l'état est "En attente d'approbation"
|
||||||
* ET user à droit de "to_validate"
|
* ET user à droit de "approve"
|
||||||
* ET fk_user_validator == user courant
|
* ET fk_user_validator == user courant
|
||||||
* Afficher : "Valider" / "Refuser" / "Supprimer"
|
* Afficher : "Valider" / "Refuser" / "Supprimer"
|
||||||
*/
|
*/
|
||||||
@@ -1646,7 +1658,7 @@ if ($action != 'create' && $action != 'edit')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($user->rights->expensereport->to_validate && $object->fk_c_expensereport_statuts == 2)
|
if ($user->rights->expensereport->approve && $object->fk_c_expensereport_statuts == 2)
|
||||||
{
|
{
|
||||||
//if($object->fk_user_validator==$user->id)
|
//if($object->fk_user_validator==$user->id)
|
||||||
//{
|
//{
|
||||||
@@ -1692,11 +1704,11 @@ if ($action != 'create' && $action != 'edit')
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Si l'état est "Payée"
|
/* Si l'état est "Payée"
|
||||||
* ET user à droit "to_validate"
|
* ET user à droit "approve"
|
||||||
* ET user à droit "to_paid"
|
* ET user à droit "to_paid"
|
||||||
* Afficher : "Annuler"
|
* Afficher : "Annuler"
|
||||||
*/
|
*/
|
||||||
if ($user->rights->expensereport->to_validate && $user->rights->expensereport->to_paid && $object->fk_c_expensereport_statuts==6)
|
if ($user->rights->expensereport->approve && $user->rights->expensereport->to_paid && $object->fk_c_expensereport_statuts==6)
|
||||||
{
|
{
|
||||||
// Annuler
|
// Annuler
|
||||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$id.'">'.$langs->trans('Cancel').'</a>';
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$id.'">'.$langs->trans('Cancel').'</a>';
|
||||||
|
|||||||
@@ -790,7 +790,7 @@ class ExpenseReport extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* set_to_validate
|
* set_save_from_refuse
|
||||||
*
|
*
|
||||||
* @param User $user User
|
* @param User $user User
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
@@ -971,38 +971,6 @@ class ExpenseReport extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* set_to_validate
|
|
||||||
*
|
|
||||||
* @param User $user User
|
|
||||||
* @return int <0 if KO, >0 if OK
|
|
||||||
*/
|
|
||||||
function set_to_valide($user)
|
|
||||||
{
|
|
||||||
if ($this->fk_c_expensereport_statuts != 2)
|
|
||||||
{
|
|
||||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
|
|
||||||
$sql.= " SET fk_c_expensereport_statuts = 2, fk_user_validator = ".$this->fk_user_validator;
|
|
||||||
$sql.= ' WHERE rowid = '.$this->id;
|
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::set_to_valide sql=".$sql, LOG_DEBUG);
|
|
||||||
|
|
||||||
if ($this->db->query($sql))
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->error=$this->db->error();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dol_syslog(get_class($this)."::set_to_valide expensereport already with to-valide status", LOG_WARNING);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* set_cancel
|
* set_cancel
|
||||||
*
|
*
|
||||||
@@ -1312,7 +1280,7 @@ class ExpenseReport extends CommonObject
|
|||||||
|
|
||||||
$sql = "SELECT fk_user";
|
$sql = "SELECT fk_user";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."user_rights as ur, ".MAIN_DB_PREFIX."rights_def as rd";
|
$sql.= " FROM ".MAIN_DB_PREFIX."user_rights as ur, ".MAIN_DB_PREFIX."rights_def as rd";
|
||||||
$sql.= " WHERE ur.fk_id = rd.id and module = 'expensereport' AND perms = 'to_validate'"; // Permission 'Approve';
|
$sql.= " WHERE ur.fk_id = rd.id and module = 'expensereport' AND perms = 'approve'"; // Permission 'Approve';
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::fetch_users_approver_expensereport sql=".$sql);
|
dol_syslog(get_class($this)."::fetch_users_approver_expensereport sql=".$sql);
|
||||||
$result = $this->db->query($sql);
|
$result = $this->db->query($sql);
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class ExpenseReportStats extends Stats
|
|||||||
*/
|
*/
|
||||||
function __construct($db, $socid=0, $userid=0)
|
function __construct($db, $socid=0, $userid=0)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf, $user;
|
||||||
|
|
||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
$this->socid = $socid;
|
$this->socid = $socid;
|
||||||
@@ -65,6 +65,15 @@ class ExpenseReportStats extends Stats
|
|||||||
{
|
{
|
||||||
$this->where.=" AND fk_soc = ".$this->socid;
|
$this->where.=" AND fk_soc = ".$this->socid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Only me and subordinates
|
||||||
|
if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous))
|
||||||
|
{
|
||||||
|
$childids = $user->getAllChildIds();
|
||||||
|
$childids[]=$user->id;
|
||||||
|
$this->where.=" AND fk_user_author IN (".(join(',',$childids)).")";
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->userid > 0) $this->where.=' AND fk_user_author = '.$this->userid;
|
if ($this->userid > 0) $this->where.=' AND fk_user_author = '.$this->userid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,13 @@ $totalnb=$totalsum=0;
|
|||||||
$sql = "SELECT tf.code, tf.label, count(de.rowid) as nb, sum(de.total_ht) as km";
|
$sql = "SELECT tf.code, tf.label, count(de.rowid) as nb, sum(de.total_ht) as km";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d, ".MAIN_DB_PREFIX."expensereport_det as de, ".MAIN_DB_PREFIX."c_type_fees as tf";
|
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d, ".MAIN_DB_PREFIX."expensereport_det as de, ".MAIN_DB_PREFIX."c_type_fees as tf";
|
||||||
$sql.= " WHERE de.fk_expensereport = d.rowid AND de.fk_c_type_fees = tf.id";
|
$sql.= " WHERE de.fk_expensereport = d.rowid AND de.fk_c_type_fees = tf.id";
|
||||||
if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous)) $sql.=' AND d.fk_user_author IN ('.join(',',$childids).')';
|
|
||||||
|
// RESTRICT RIGHTS
|
||||||
|
if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous))
|
||||||
|
{
|
||||||
|
$sql.= " AND d.fk_user_author IN (".join(',',$childids).")\n";
|
||||||
|
}
|
||||||
|
|
||||||
$sql.= " GROUP BY tf.code, tf.label";
|
$sql.= " GROUP BY tf.code, tf.label";
|
||||||
|
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ $html = new Form($db);
|
|||||||
$formother = new FormOther($db);
|
$formother = new FormOther($db);
|
||||||
$expensereporttmp=new ExpenseReport($db);
|
$expensereporttmp=new ExpenseReport($db);
|
||||||
|
|
||||||
llxHeader();
|
llxHeader('', $langs->trans("ListOfExpenseReports"));
|
||||||
|
|
||||||
$max_year = 5;
|
$max_year = 5;
|
||||||
$min_year = 5;
|
$min_year = 5;
|
||||||
@@ -84,13 +84,14 @@ $sql.= " u.rowid as id_user, u.firstname, u.lastname";
|
|||||||
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport d\n";
|
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport d\n";
|
||||||
$sql.= " INNER JOIN ".MAIN_DB_PREFIX."user u ON d.fk_user_author = u.rowid\n";
|
$sql.= " INNER JOIN ".MAIN_DB_PREFIX."user u ON d.fk_user_author = u.rowid\n";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// WHERE
|
// WHERE
|
||||||
if(!empty($search_ref)){
|
if(!empty($search_ref)){
|
||||||
$sql.= " WHERE d.ref LIKE '%".$db->escape($search_ref)."%'\n";
|
$sql.= " WHERE d.ref LIKE '%".$db->escape($search_ref)."%'\n";
|
||||||
}else{
|
}else{
|
||||||
$sql.= " WHERE 1 = 1\n";
|
$sql.= " WHERE 1 = 1\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
// DATE START
|
// DATE START
|
||||||
if ($month_start > 0) {
|
if ($month_start > 0) {
|
||||||
if ($year_start > 0) {
|
if ($year_start > 0) {
|
||||||
@@ -148,13 +149,15 @@ if ($month_start > 0) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!empty($search_user) && $search_user > 0) $sql.= " AND d.fk_user_author = ".$search_user."\n";
|
||||||
if (!empty($search_user) && $search_user != -1) $sql.= " AND d.fk_user_author = '$search_user'\n";
|
|
||||||
if($search_state != '') $sql.= " AND d.fk_c_expensereport_statuts = '$search_state'\n";
|
if($search_state != '') $sql.= " AND d.fk_c_expensereport_statuts = '$search_state'\n";
|
||||||
|
|
||||||
// RESTRICT RIGHTS
|
// RESTRICT RIGHTS
|
||||||
if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous)){
|
if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous))
|
||||||
$sql.= " AND d.fk_user_author = '{$user->id}'\n";
|
{
|
||||||
|
$childids = $user->getAllChildIds();
|
||||||
|
$childids[]=$user->id;
|
||||||
|
$sql.= " AND d.fk_user_author IN (".join(',',$childids).")\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql.= $db->order($sortfield,$sortorder);
|
$sql.= $db->order($sortfield,$sortorder);
|
||||||
|
|||||||
@@ -222,7 +222,9 @@ print '</td></tr>';
|
|||||||
*/
|
*/
|
||||||
// User
|
// User
|
||||||
print '<tr><td>'.$langs->trans("User").'</td><td>';
|
print '<tr><td>'.$langs->trans("User").'</td><td>';
|
||||||
print $form->select_dolusers($userid,'userid',1);
|
$include='';
|
||||||
|
if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous)) $include='hierarchy';
|
||||||
|
print $form->select_dolusers($userid,'userid',1,'',0,$include);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
// Year
|
// Year
|
||||||
print '<tr><td>'.$langs->trans("Year").'</td><td>';
|
print '<tr><td>'.$langs->trans("Year").'</td><td>';
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ ListToApprove=Waiting for approval
|
|||||||
ExpensesArea=Expense reports area
|
ExpensesArea=Expense reports area
|
||||||
SearchATripAndExpense=Search an expense report
|
SearchATripAndExpense=Search an expense report
|
||||||
ClassifyRefunded=Classify 'Refunded'
|
ClassifyRefunded=Classify 'Refunded'
|
||||||
|
ExpenseReportWaitingForApproval=A new expense report has been submitted for approval
|
||||||
|
ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s
|
||||||
TripId=Id expense report
|
TripId=Id expense report
|
||||||
AnyOtherInThisListCanValidate=Person to inform for validation.
|
AnyOtherInThisListCanValidate=Person to inform for validation.
|
||||||
TripSociete=Information company
|
TripSociete=Information company
|
||||||
|
|||||||
@@ -2211,7 +2211,7 @@ class User extends CommonObject
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return and array with all instanciated children users of current user
|
* Return and array with all instanciated first level children users of current user
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
@@ -2365,7 +2365,7 @@ class User extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return list of all childs users in herarchy.
|
* Return list of all child users id in herarchy (all sublevels).
|
||||||
*
|
*
|
||||||
* @return array Array of user id lower than user. This overwrite this->users.
|
* @return array Array of user id lower than user. This overwrite this->users.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user