30require 
'../main.inc.php';
 
   31require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
 
   32require_once DOL_DOCUMENT_ROOT.
'/core/lib/expensereport.lib.php';
 
   33require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
 
   34require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport_rule.class.php';
 
   45$langs->loadLangs(array(
"admin", 
"other", 
"trips", 
"errors", 
"dict"));
 
   48$hookmanager->initHooks(array(
'admin', 
'dictionaryadmin',
'expensereport_rules'));
 
   64$tab_rules_type = array();
 
   65$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action); 
 
   74  $action = 
GETPOST(
'action', 
'aZ09');
 
   77  $apply_to = 
GETPOST(
'apply_to');
 
   81  $fk_c_type_fees = 
GETPOSTINT(
'fk_c_type_fees');
 
   82  $code_expense_rules_type = 
GETPOST(
'code_expense_rules_type');
 
   94  if ($action == 
'save') {
 
   98    if (empty($apply_to)) {
 
  100      setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ExpenseReportApplyTo")), 
null, 
'errors');
 
  102    if (empty($fk_c_type_fees)) {
 
  104      setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ExpenseReportDomain")), 
null, 
'errors');
 
  106    if (empty($code_expense_rules_type)) {
 
  108      setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ExpenseReportLimitOn")), 
null, 
'errors');
 
  112      setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ExpenseReportDateStart")), 
null, 
'errors');
 
  116      setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ExpenseReportDateEnd")), 
null, 
'errors');
 
  118    if (empty($amount)) {
 
  120      setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"ExpenseReportLimitAmount")), 
null, 
'errors');
 
  124      if ($apply_to == 
'U') {
 
  125        $object->fk_user = (int) $fk_user;
 
  128      } elseif ($apply_to == 
'G') {
 
  129        $object->fk_usergroup = (int) $fk_usergroup;
 
  132      } elseif ($apply_to == 
'A') {
 
  140      $object->restrictive = $restrictive;
 
  141      $object->fk_c_type_fees = $fk_c_type_fees;
 
  142      $object->code_expense_rules_type = $code_expense_rules_type;
 
  159        header(
'Location: ' . $_SERVER[
'PHP_SELF']);
 
  165  } elseif ($action == 
'delete') {
 
  173    header(
'Location: ' . $_SERVER[
'PHP_SELF']);
 
  177  $rules = 
$object->getAllRule();
 
  180    'A' => $langs->trans(
'All'),
 
  181    'G' => $langs->trans(
'UserGroup'),
 
  182    'U' => $langs->trans(
'User')
 
  184  $tab_rules_type = array(
 
  185    'EX_DAY' => $langs->trans(
'Day'),
 
  186    'EX_MON' => $langs->trans(
'Month'),
 
  187    'EX_YEA' => $langs->trans(
'Year'),
 
  188    'EX_EXP' => $langs->trans(
'OnExpense')
 
  197llxHeader(
'', $langs->trans(
"ExpenseReportsSetup"), 
'', 
'', 0, 0, 
'', 
'', 
'', 
'mod-admin page-expensereport_rules');
 
  199$form = 
new Form($db);
 
  201$linkback = 
'<a href="' . DOL_URL_ROOT . 
'/admin/modules.php?restore_lastsearch_values=1">' . $langs->trans(
"BackToModuleList") . 
'</a>';
 
  202print 
load_fiche_titre($langs->trans(
"ExpenseReportsSetup"), $linkback, 
'title_setup');
 
  205print 
dol_get_fiche_head($head, 
'expenserules', $langs->trans(
"ExpenseReportsRules"), -1, 
'trip');
 
  207echo 
'<span class="opacitymedium">' . $langs->trans(
'ExpenseReportRulesDesc') . 
'</span>';
 
  210if ($action != 
'edit') {
 
  211  echo 
'<form action="' . $_SERVER[
'PHP_SELF'] . 
'" method="post">';
 
  212  echo 
'<input type="hidden" name="token" value="' . 
newToken() . 
'" />';
 
  213  echo 
'<input type="hidden" name="action" value="save" />';
 
  215  echo 
'<table class="noborder centpercent">';
 
  217  echo 
'<tr class="liste_titre headerexpensereportrules">';
 
  218  echo 
'<th class="linecolapplyto">' . $langs->trans(
'ExpenseReportApplyTo') . 
'</th>';
 
  219  echo 
'<th class="linecoltype">' . $langs->trans(
'Type') . 
'</th>';
 
  220  echo 
'<th class="linecollimiton">' . $langs->trans(
'ExpenseReportLimitOn') . 
'</th>';
 
  221  echo 
'<th class="linecoldatestart">' . $langs->trans(
'ExpenseReportDateStart') . 
'</th>';
 
  222  echo 
'<th class="linecoldateend">' . $langs->trans(
'ExpenseReportDateEnd') . 
'</th>';
 
  223  echo 
'<th class="linecollimitamount">' . $langs->trans(
'ExpenseReportLimitAmount') . 
'</th>';
 
  224  echo 
'<th class="linecolrestrictive">' . $langs->trans(
'ExpenseReportRestrictive') . 
'</th>';
 
  225  echo 
'<th> </th>';
 
  228  echo 
'<tr class="oddeven">';
 
  230  echo 
'<div class="float linecolapplyto">' . $form->selectarray(
'apply_to', $tab_apply, 
'', 0) . 
'</div>';
 
  231  echo 
'<div id="user" class="float linecoluser">' . $form->select_dolusers(
'', 
'fk_user') . 
'</div>';
 
  232  echo 
'<div id="group" class="float linecolgroup">' . $form->select_dolgroups(0, 
'fk_usergroup') . 
'</div>';
 
  235  echo 
'<td class="linecoltype">' . $form->selectExpense(
'', 
'fk_c_type_fees', 0, 1, 1) . 
'</td>';
 
  236  echo 
'<td class="linecoltyperule">' . $form->selectarray(
'code_expense_rules_type', $tab_rules_type, 
'', 0) . 
'</td>';
 
  237  echo 
'<td class="linecoldatestart">' . $form->selectDate(strtotime(date(
'Y-m-01', 
dol_now())), 
'start', 0, 0, 0, 
'', 1, 0) . 
'</td>';
 
  238  echo 
'<td class="linecoldateend">' . $form->selectDate(strtotime(date(
'Y-m-t', 
dol_now())), 
'end', 0, 0, 0, 
'', 1, 0) . 
'</td>';
 
  239  echo 
'<td class="linecolamount"><input type="text" value="" class="maxwidth100" name="amount" class="amount right" /></td>';
 
  240  echo 
'<td class="linecolrestrictive">' . $form->selectyesno(
'restrictive', 0, 1) . 
'</td>';
 
  241  echo 
'<td class="right linecolbutton"><input type="submit" class="button button-add" value="' . $langs->trans(
'Add') . 
'" /></td>';
 
  249echo 
'<form action="' . $_SERVER[
'PHP_SELF'] . 
'" method="post">';
 
  250echo 
'<input type="hidden" name="token" value="' . 
newToken() . 
'" />';
 
  252if ($action == 
'edit') {
 
  253  echo 
'<input type="hidden" name="id" value="' . 
$object->id . 
'" />';
 
  254  echo 
'<input type="hidden" name="action" value="save" />';
 
  260echo 
'<table class="noborder centpercent">';
 
  262echo 
'<tr class="liste_titre expensereportrules">';
 
  263echo 
'<th class="linecolapplyto">' . $langs->trans(
'ExpenseReportApplyTo') . 
'</th>';
 
  264echo 
'<th class="linecoltype">' . $langs->trans(
'Type') . 
'</th>';
 
  265echo 
'<th class="linecollimiton">' . $langs->trans(
'ExpenseReportLimitOn') . 
'</th>';
 
  266echo 
'<th class="linecoldatestart">' . $langs->trans(
'ExpenseReportDateStart') . 
'</th>';
 
  267echo 
'<th class="linecoldateend">' . $langs->trans(
'ExpenseReportDateEnd') . 
'</th>';
 
  268echo 
'<th class="linecollimitamount">' . $langs->trans(
'ExpenseReportLimitAmount') . 
'</th>';
 
  269echo 
'<th class="linecolrestrictive">' . $langs->trans(
'ExpenseReportRestrictive') . 
'</th>';
 
  270echo 
'<th> </th>';
 
  273foreach ($rules as $rule) {
 
  274  echo 
'<tr class="oddeven linetrdata" id="'.$rule->id.
'">';
 
  276  echo 
'<td class="linecolusergroup">';
 
  277  if ($action == 
'edit' && 
$object->id == $rule->id) {
 
  278    $selected = (
$object->is_for_all > 0) ? 
'A' : (
$object->fk_usergroup > 0 ? 
'G' : 
'U');
 
  279    echo 
'<div class="float">' . $form->selectarray(
'apply_to', $tab_apply, $selected, 0) . 
'</div>';
 
  280    echo 
'<div id="user" class="float">' . $form->select_dolusers(
$object->fk_user, 
'fk_user') . 
'</div>';
 
  281    echo 
'<div id="group" class="float">' . $form->select_dolgroups(
$object->fk_usergroup, 
'fk_usergroup') . 
'</div>';
 
  283    if ($rule->is_for_all > 0) {
 
  284      echo $tab_apply[
'A'];
 
  285    } elseif ($rule->fk_usergroup > 0) {
 
  286      echo $tab_apply[
'G'] . 
' (' . $rule->getGroupLabel() . 
')';
 
  287    } elseif ($rule->fk_user > 0) {
 
  288      echo $tab_apply[
'U'] . 
' (' . $rule->getUserName() . 
')';
 
  293  echo 
'<td class="linecoltype">';
 
  294  if ($action == 
'edit' && 
$object->id == $rule->id) {
 
  295    echo $form->selectExpense(
$object->fk_c_type_fees, 
'fk_c_type_fees', 0, 1, 1);
 
  297    if ($rule->fk_c_type_fees == -1) {
 
  298      echo $langs->trans(
'AllExpenseReport');
 
  301      if ($key && $key != $langs->trans($key)) {
 
  302        echo $langs->trans($key);
 
  304        $value = 
getDictionaryValue(
'c_type_fees', 
'label', $rule->fk_c_type_fees, 
false, 
'id');
 
  305        echo $langs->trans($value ? $value : 
'Undefined'); 
 
  312  echo 
'<td class="linecoltyperule">';
 
  313  if ($action == 
'edit' && 
$object->id == $rule->id) {
 
  314    echo $form->selectarray(
'code_expense_rules_type', $tab_rules_type, 
$object->code_expense_rules_type, 0);
 
  316    echo $tab_rules_type[$rule->code_expense_rules_type];
 
  321  echo 
'<td class="linecoldatestart">';
 
  322  if ($action == 
'edit' && 
$object->id == $rule->id) {
 
  323    print $form->selectDate(strtotime(date(
'Y-m-d', 
$object->dates)), 
'start', 0, 0, 0, 
'', 1, 0);
 
  330  echo 
'<td class="linecoldateend">';
 
  331  if ($action == 
'edit' && 
$object->id == $rule->id) {
 
  332    print $form->selectDate(strtotime(date(
'Y-m-d', 
$object->datee)), 
'end', 0, 0, 0, 
'', 1, 0);
 
  339  echo 
'<td class="linecolamount">';
 
  340  if ($action == 
'edit' && 
$object->id == $rule->id) {
 
  341    echo 
'<input type="text" value="' . 
price2num(
$object->amount) . 
'" name="amount" class="amount width50 right" />';
 
  343    echo 
price($rule->amount, 0, $langs, 1, -1, -1, 
$conf->currency);
 
  348  echo 
'<td class="linecolrestrictive">';
 
  349  if ($action == 
'edit' && 
$object->id == $rule->id) {
 
  350    echo $form->selectyesno(
'restrictive', 
$object->restrictive, 1);
 
  352    echo 
yn($rule->restrictive, 1, 1);
 
  357  echo 
'<td class="center">';
 
  358  if (
$object->id != $rule->id) {
 
  359    echo 
'<a class="editfielda paddingright paddingleft" href="' . $_SERVER[
'PHP_SELF'] . 
'?action=edit&token=' . 
newToken() . 
'&id=' . $rule->id . 
'">' . 
img_edit() . 
'</a> ';
 
  360    echo 
'<a class="paddingright paddingleft" href="' . $_SERVER[
'PHP_SELF'] . 
'?action=delete&token=' . 
newToken() . 
'&id=' . $rule->id . 
'">' . 
img_delete() . 
'</a>';
 
  362    echo 
'<input type="submit" class="button button-edit" value="' . $langs->trans(
'Update') . 
'" /> ';
 
  363    echo 
'<a href="' . $_SERVER[
'PHP_SELF'] . 
'" class="button button-cancel">' . $langs->trans(
"Cancel") . 
'</a>';
 
  370if (!is_array($rules) || count($rules) == 0) {
 
  371  print 
'<tr class="none"><td colspan="8"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></td></tr>';
 
  377echo 
'<script type="text/javascript"> $(function() { 
  378  $("#apply_to").change(function() { 
  379    var value = $(this).val(); 
  381      $("#group").hide(); $("#user").hide(); 
  382    } else if (value == "U") { 
  385    } else if (value == "G") { 
  391  $("#apply_to").change(); 
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
 
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
 
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
 
Class to manage inventories.
 
expensereport_admin_prepare_head()
Return array head with list of tabs to view object information.
 
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
 
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
 
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
 
img_delete($titlealt='default', $other='class="pictodelete"', $morecss='')
Show delete logo.
 
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
 
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
 
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
 
dol_get_fiche_end($notab=0)
Return tab footer of a card.
 
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
 
dol_now($mode='auto')
Return date for now.
 
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
 
newToken()
Return the value of token currently saved into session with name 'newtoken'.
 
yn($yesno, $format=1, $color=0)
Return yes or no in current language.
 
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
 
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
 
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify fiche.
 
getDictionaryValue($tablename, $field, $id, $checkentity=false, $rowidfield='rowid')
Return the value of a filed into a dictionary for the record $id.
 
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
 
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.