dolibarr  13.0.2
delais.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3  * Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
4  * Copyright (C) 2005 Simon Tosser <simon@kornog-computing.com>
5  * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
6  * Copyright (C) 2016 RaphaĆ«l Doursenaud <rdoursenaud@gpcsolutions.fr>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <https://www.gnu.org/licenses/>.
20  */
21 
27 require '../main.inc.php';
28 require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
29 
30 // Load translation files required by the page
31 $langs->load("admin");
32 
33 if (!$user->admin) accessforbidden();
34 
35 $action = GETPOST('action', 'aZ09');
36 if (empty($action)) $action = 'edit';
37 
38 // Define list of managed delays
39 $modules = array(
40  'agenda' => array(
41  array(
42  'code' => 'MAIN_DELAY_ACTIONS_TODO',
43  'img' => 'action'
44  )
45  ),
46  'projet' => array(
47  array(
48  'code' => 'MAIN_DELAY_PROJECT_TO_CLOSE',
49  'img' => 'project'
50  ),
51  array(
52  'code' => 'MAIN_DELAY_TASKS_TODO',
53  'img' => 'projecttask'
54  )
55  ),
56  'propal' => array(
57  array(
58  'code' => 'MAIN_DELAY_PROPALS_TO_CLOSE',
59  'img' => 'propal'
60  ),
61  array(
62  'code' => 'MAIN_DELAY_PROPALS_TO_BILL',
63  'img' => 'propal'
64  )
65  ),
66  'commande' => array(
67  array(
68  'code' => 'MAIN_DELAY_ORDERS_TO_PROCESS',
69  'img' => 'order'
70  )
71  ),
72  'facture' => array(
73  array(
74  'code' => 'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',
75  'img' => 'bill'
76  )
77  ),
78  'fournisseur' => array(
79  array(
80  'code' => 'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',
81  'img' => 'order'
82  ),
83  array(
84  'code' => 'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',
85  'img' => 'bill'
86  )
87  ),
88  'service' => array(
89  array(
90  'code' => 'MAIN_DELAY_NOT_ACTIVATED_SERVICES',
91  'img' => 'service'
92  ),
93  array(
94  'code' => 'MAIN_DELAY_RUNNING_SERVICES',
95  'img' => 'service'
96  )
97  ),
98  'banque' => array(
99  array(
100  'code' => 'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',
101  'img' => 'account'
102  ),
103  array(
104  'code' => 'MAIN_DELAY_CHEQUES_TO_DEPOSIT',
105  'img' => 'account'
106  )
107  ),
108  'adherent' => array(
109  array(
110  'code' => 'MAIN_DELAY_MEMBERS',
111  'img' => 'user'
112  )
113  ),
114  'expensereport' => array(
115  array(
116  'code' => 'MAIN_DELAY_EXPENSEREPORTS',
117  'img' => 'trip'
118  ),
119  /* TODO Enable this
120  array(
121  'code' => 'MAIN_DELAY_EXPENSEREPORTS_TO_PAY',
122  'img' => 'trip'
123  )*/
124  ),
125  'holiday' => array(
126  array(
127  'code' => 'MAIN_DELAY_HOLIDAYS',
128  'img' => 'holiday'
129  ),
130  ),
131 );
132 
133 $labelmeteo = array(0=>$langs->trans("No"), 1=>$langs->trans("Yes"), 2=>$langs->trans("OnMobileOnly"));
134 
135 if (!isset($conf->global->MAIN_DELAY_PROJECT_TO_CLOSE)) {
136  $conf->global->MAIN_DELAY_PROJECT_TO_CLOSE = 7; // Must be same value than into conf.class.php
137 }
138 if (!isset($conf->global->MAIN_DELAY_TASKS_TODO)) {
139  $conf->global->MAIN_DELAY_TASKS_TODO = 7; // Must be same value than into conf.class.php
140 }
141 if (!isset($conf->global->MAIN_DELAY_MEMBERS)) {
142  $conf->global->MAIN_DELAY_MEMBERS = 0; // Must be same value than into conf.class.php
143 }
144 if (!isset($conf->global->MAIN_DELAY_ACTIONS_TODO)) {
145  $conf->global->MAIN_DELAY_ACTIONS_TODO = 7; // Must be same value than into conf.class.php
146 }
147 if (!isset($conf->global->MAIN_DELAY_ORDERS_TO_PROCESS)) {
148  $conf->global->MAIN_DELAY_ORDERS_TO_PROCESS = 2;
149 }
150 if (!isset($conf->global->MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS)) {
151  $conf->global->MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS = 7;
152 }
153 if (!isset($conf->global->MAIN_DELAY_ORDERS_TO_PROCESS)) {
154  $conf->global->MAIN_DELAY_ORDERS_TO_PROCESS = 2;
155 }
156 if (!isset($conf->global->MAIN_DELAY_ORDERS_TO_PROCESS)) {
157  $conf->global->MAIN_DELAY_ORDERS_TO_PROCESS = 2;
158 }
159 if (!isset($conf->global->MAIN_DELAY_ORDERS_TO_PROCESS)) {
160  $conf->global->MAIN_DELAY_ORDERS_TO_PROCESS = 2;
161 }
162 
163 
164 
165 /*
166  * Actions
167  */
168 
169 if ($action == 'update')
170 {
171  foreach ($modules as $module => $delays)
172  {
173  if (!empty($conf->$module->enabled))
174  {
175  foreach ($delays as $delay)
176  {
177  if (GETPOST($delay['code']) != '')
178  {
179  dolibarr_set_const($db, $delay['code'], GETPOST($delay['code']), 'chaine', 0, '', $conf->entity);
180  }
181  }
182  }
183  }
184 
185  dolibarr_set_const($db, "MAIN_DISABLE_METEO", $_POST["MAIN_DISABLE_METEO"], 'chaine', 0, '', $conf->entity);
186  dolibarr_set_const($db, "MAIN_USE_METEO_WITH_PERCENTAGE", GETPOST("MAIN_USE_METEO_WITH_PERCENTAGE"), 'chaine', 0, '', $conf->entity);
187 
188  // For update value with percentage
189  $plus = '';
190  if (!empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE)) $plus = '_PERCENTAGE';
191  // Update values
192  for ($i = 0; $i < 4; $i++) {
193  if (GETPOSTISSET('MAIN_METEO'.$plus.'_LEVEL'.$i)) dolibarr_set_const($db, 'MAIN_METEO'.$plus.'_LEVEL'.$i, GETPOST('MAIN_METEO'.$plus.'_LEVEL'.$i, 'int'), 'chaine', 0, '', $conf->entity);
194  }
195 
196  setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
197 
198  $action = 'edit';
199 }
200 
201 
202 /*
203  * View
204  */
205 
206 $form = new Form($db);
207 
208 llxHeader();
209 
210 print load_fiche_titre($langs->trans("DelaysOfToleranceBeforeWarning"), '', 'title_setup');
211 
212 print '<span class="opacitymedium">'.$langs->transnoentities("DelaysOfToleranceDesc", img_warning('default', '', 'pictowarning nopaddingleft'));
213 print " ".$langs->trans("OnlyActiveElementsAreShown", DOL_URL_ROOT.'/admin/modules.php')."</span><br>\n";
214 print "<br>\n";
215 
216 if ($action == 'edit')
217 {
218  print '<form method="post" action="'.$_SERVER['PHP_SELF'].'" name="form_index">';
219  print '<input type="hidden" name="token" value="'.newToken().'">';
220  print '<input type="hidden" name="action" value="update">';
221 
222  print '<table class="noborder centpercent">';
223  print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("DelaysOfToleranceBeforeWarning").'</td><td class="center" width="120px">'.$langs->trans("Value").'</td></tr>';
224 
225  foreach ($modules as $module => $delays)
226  {
227  if (!empty($conf->$module->enabled))
228  {
229  foreach ($delays as $delay)
230  {
231  $value = (!empty($conf->global->{$delay['code']}) ? $conf->global->{$delay['code']}:0);
232  print '<tr class="oddeven">';
233  print '<td width="20px">'.img_object('', $delay['img']).'</td>';
234  print '<td>'.$langs->trans('Delays_'.$delay['code']).'</td><td class="nowraponall">';
235  print '<input class="right maxwidth75" type="number" name="'.$delay['code'].'" value="'.$value.'"> '.$langs->trans("days").'</td></tr>';
236  }
237  }
238  }
239 
240  print '</table>';
241 
242  print '<br>';
243 
244  // Show if meteo is enabled
245  print '<table class="noborder centpercent">';
246  print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td class="center" width="120px">'.$langs->trans("Value").'</td></tr>';
247 
248  print '<tr class="oddeven">';
249  print '<td>'.$langs->trans("MAIN_DISABLE_METEO").'</td><td class="center">';
250  print $form->selectarray('MAIN_DISABLE_METEO', $labelmeteo, (empty($conf->global->MAIN_DISABLE_METEO) ? 0 : $conf->global->MAIN_DISABLE_METEO));
251  print '</td></tr>';
252 
253  print '</table>';
254 } else {
255  /*
256  * Show parameters
257  */
258 
259  print '<table class="noborder centpercent">';
260  print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("DelaysOfToleranceBeforeWarning").'</td><td class="center" width="120px">'.$langs->trans("Value").'</td></tr>';
261 
262  foreach ($modules as $module => $delays)
263  {
264  if (!empty($conf->$module->enabled))
265  {
266  foreach ($delays as $delay)
267  {
268  $value = (!empty($conf->global->{$delay['code']}) ? $conf->global->{$delay['code']}:0);
269  print '<tr class="oddeven">';
270  print '<td width="20px">'.img_object('', $delay['img']).'</td>';
271  print '<td>'.$langs->trans('Delays_'.$delay['code']).'</td>';
272  print '<td class="right">'.$value.' '.$langs->trans("days").'</td></tr>';
273  }
274  }
275  }
276 
277  print '</table>';
278 
279  print '<br>';
280 
281  // Show if meteo is enabled
282  print '<table class="noborder centpercent">';
283  print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td class="center" width="120px">'.$langs->trans("Value").'</td></tr>';
284 
285  print '<tr class="oddeven">';
286  print '<td>'.$langs->trans("MAIN_DISABLE_METEO").'</td><td class="center">';
287  print $labelmeteo[$conf->global->MAIN_DISABLE_METEO];
288  print '</td></tr>';
289 
290  print '</table>';
291 }
292 
293 print '<br>';
294 
295 
296 if ($conf->global->MAIN_DISABLE_METEO != 1) {
297  // Show logo for weather
298  print '<span class="opacitymedium">'.$langs->trans("DescWeather").'</span> ';
299 
300  if ($action == 'edit') {
301  $str_mode_std = $langs->trans('MeteoStdModEnabled').' : '.$langs->trans('MeteoUseMod', $langs->transnoentitiesnoconv('MeteoPercentageMod'));
302  $str_mode_percentage = $langs->trans('MeteoPercentageModEnabled').' : '.$langs->trans('MeteoUseMod', $langs->transnoentitiesnoconv('MeteoStdMod'));
303  if (empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE)) $str_mode_enabled = $str_mode_std;
304  else $str_mode_enabled = $str_mode_percentage;
305  print '<a href="#" onclick="return false;" id="change_mode">'.$str_mode_enabled.'</a>';
306  print '<input type="hidden" id="MAIN_USE_METEO_WITH_PERCENTAGE" name="MAIN_USE_METEO_WITH_PERCENTAGE" value="'.$conf->global->MAIN_USE_METEO_WITH_PERCENTAGE.'" />';
307 
308  print '<br><br>';
309  } else {
310  if (empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE)) print $langs->trans('MeteoStdModEnabled');
311  else print $langs->trans('MeteoPercentageModEnabled');
312  print '<br><br>';
313  }
314 
315  $offset = 0;
316  $cursor = 10; // By default
317  //if (! empty($conf->global->MAIN_METEO_OFFSET)) $offset=$conf->global->MAIN_METEO_OFFSET;
318  //if (! empty($conf->global->MAIN_METEO_GAP)) $cursor=$conf->global->MAIN_METEO_GAP;
319  $level0 = $offset; if (!empty($conf->global->MAIN_METEO_LEVEL0)) $level0 = $conf->global->MAIN_METEO_LEVEL0;
320  $level1 = $offset + 1 * $cursor; if (!empty($conf->global->MAIN_METEO_LEVEL1)) $level1 = $conf->global->MAIN_METEO_LEVEL1;
321  $level2 = $offset + 2 * $cursor; if (!empty($conf->global->MAIN_METEO_LEVEL2)) $level2 = $conf->global->MAIN_METEO_LEVEL2;
322  $level3 = $offset + 3 * $cursor; if (!empty($conf->global->MAIN_METEO_LEVEL3)) $level3 = $conf->global->MAIN_METEO_LEVEL3;
323  $text = ''; $options = 'class="valignmiddle" height="60px"';
324 
325 
326  if ($action == 'edit') {
327  print '<div id="standard" '.(empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE) ? '' : 'style="display:none;"').'>';
328 
329  print '<div>';
330  print '<div class="inline-block" style="padding-right: 20px">';
331  print img_weather($text, 0, $options);
332  print ' &lt;= <input type="text" size="2" name="MAIN_METEO_LEVEL0" value="'.$level0.'"/></td>';
333  print '</div><div class="inline-block" style="padding-right: 20px">';
334  print img_weather($text, 1, $options);
335  print ' &lt;= <input type="text" size="2" name="MAIN_METEO_LEVEL1" value="'.$level1.'"/></td>';
336  print '</div><div class="inline-block" style="padding-right: 20px">';
337  print img_weather($text, 2, $options);
338  print ' &lt;= <input type="text" size="2" name="MAIN_METEO_LEVEL2" value="'.$level2.'"/></td>';
339  print '</div><div class="inline-block" style="padding-right: 20px">';
340  print img_weather($text, 3, $options);
341  print ' &lt;= <input type="text" size="2" name="MAIN_METEO_LEVEL3" value="'.$level3.'"/></td>';
342  print '</div>';
343  print '</div>';
344 
345  print '</div>';
346 
347  print '<div id="percentage" '.(empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE) ? 'style="display:none;"' : '').'>';
348 
349  print '<div>';
350  print '<div class="inline-block" style="padding-right: 20px">';
351  print img_weather($text, 0, $options);
352  print ' &lt;= <input type="text" size="2" name="MAIN_METEO_PERCENTAGE_LEVEL0" value="'.$conf->global->MAIN_METEO_PERCENTAGE_LEVEL0.'"/>&nbsp;%</td>';
353  print '</div><div class="inline-block" style="padding-right: 20px">';
354  print img_weather($text, 1, $options);
355  print ' &lt;= <input type="text" size="2" name="MAIN_METEO_PERCENTAGE_LEVEL1" value="'.$conf->global->MAIN_METEO_PERCENTAGE_LEVEL1.'"/>&nbsp;%</td>';
356  print '</div><div class="inline-block" style="padding-right: 20px">';
357  print img_weather($text, 2, $options);
358  print ' &lt;= <input type="text" size="2" name="MAIN_METEO_PERCENTAGE_LEVEL2" value="'.$conf->global->MAIN_METEO_PERCENTAGE_LEVEL2.'"/>&nbsp;%</td>';
359  print '</div><div class="inline-block" style="padding-right: 20px">';
360  print img_weather($text, 3, $options);
361  print ' &lt;= <input type="text" size="2" name="MAIN_METEO_PERCENTAGE_LEVEL3" value="'.$conf->global->MAIN_METEO_PERCENTAGE_LEVEL3.'"/>&nbsp;%</td>';
362  print '</div>';
363  print '</div>';
364 
365  print '</div>';
366 
367  ?>
368 
369  <script type="text/javascript">
370 
371  $(document).ready(function() {
372 
373  $("#change_mode").click(function() {
374  var use_percent = $("#MAIN_USE_METEO_WITH_PERCENTAGE");
375  var str_mode_std = "<?php print $str_mode_std; ?>";
376  var str_mode_percentage = "<?php print $str_mode_percentage; ?>";
377 
378  if(use_percent.val() == 1) {
379  use_percent.val(0);
380  $("#standard").show();
381  $("#percentage").hide();
382  $(this).html(str_mode_std);
383  } else {
384  use_percent.val(1);
385  $("#standard").hide();
386  $("#percentage").show();
387  $(this).html(str_mode_percentage);
388  }
389  });
390 
391  });
392 
393  </script>
394 
395  <?php
396  } else {
397  if (!empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE)) {
398  print '<div>';
399  print '<div class="inline-block" style="padding-right: 20px">';
400  print img_weather($text, 0, $options);
401  print ' &lt;= '.$conf->global->MAIN_METEO_PERCENTAGE_LEVEL0.'&nbsp;%</td>';
402  print '</div><div class="inline-block" style="padding-right: 20px">';
403  print img_weather($text, 1, $options);
404  print ' &lt;= '.$conf->global->MAIN_METEO_PERCENTAGE_LEVEL1.'&nbsp;%</td>';
405  print '</div><div class="inline-block" style="padding-right: 20px">';
406  print img_weather($text, 2, $options);
407  print ' &lt;= '.$conf->global->MAIN_METEO_PERCENTAGE_LEVEL2.'&nbsp;%</td>';
408  print '</div><div class="inline-block" style="padding-right: 20px">';
409  print img_weather($text, 3, $options);
410  print ' &lt;= '.$conf->global->MAIN_METEO_PERCENTAGE_LEVEL3.'&nbsp;%</td>';
411  print '</div><div class="inline-block" style="padding-right: 20px">';
412  print img_weather($text, 4, $options);
413  print ' &gt; '.$conf->global->MAIN_METEO_PERCENTAGE_LEVEL3.'&nbsp;%</td>';
414  print '</div>';
415  print '</div>';
416  } else {
417  print '<div>';
418  print '<div class="inline-block" style="padding-right: 20px">';
419  print img_weather($text, 0, $options);
420  print ' &lt;= '.$level0;
421  print '</div><div class="inline-block" style="padding-right: 20px">';
422  print img_weather($text, 1, $options);
423  print ' &lt;= '.$level1;
424  print '</div><div class="inline-block" style="padding-right: 20px">';
425  print img_weather($text, 2, $options);
426  print ' &lt;= '.$level2;
427  print '</div><div class="inline-block" style="padding-right: 20px">';
428  print img_weather($text, 3, $options);
429  print ' &lt;= '.$level3;
430  print '</div><div class="inline-block" style="padding-right: 20px">';
431  print img_weather($text, 4, $options);
432  print ' &gt; '.$level3;
433  print '</div>';
434  print '</div>';
435  }
436  }
437 }
438 
439 
440 if ($action == 'edit') {
441  print '<br><div class="center"><input type="submit" class="button button-save" value="'.$langs->trans("Save").'"></div>';
442  print '<br></form>';
443 } else {
444  print '<br><div class="tabsAction">';
445  print '<a class="butAction" href="delais.php?action=edit">'.$langs->trans("Modify").'</a></div>';
446 }
447 
448 // End of page
449 llxFooter();
450 $db->close();
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
img_weather($titlealt, $picto, $moreatt= '', $pictoisfullpath=0, $morecss= '')
Show weather picto.
dolibarr_set_const($db, $name, $value, $type= 'chaine', $visible=0, $note= '', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
Definition: admin.lib.php:575
img_warning($titlealt= 'default', $moreatt= '', $morecss= 'pictowarning')
Show warning logo.
llxHeader()
Empty header.
Definition: wrapper.php:45
setEventMessages($mesg, $mesgs, $style= 'mesgs', $messagekey= '')
Set event messages in dol_events session object.
Class to manage generation of HTML components Only common components must be here.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname.
load_fiche_titre($titre, $morehtmlright= '', $picto= 'generic', $pictoisfullpath=0, $id= '', $morecssontable= '', $morehtmlcenter= '')
Load a title with picto.
accessforbidden($message= '', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program Calling this function terminate execution ...
print
Draft customers invoices.
Definition: index.php:89
llxFooter()
Empty footer.
Definition: wrapper.php:59
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
Definition: repair.php:105