dolibarr 18.0.7
mo_agenda.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
3 * Copyright (C) ---Put here your own copyright and developer email---
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
18
25// Load Dolibarr environment
26require '../main.inc.php';
27
28require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
29require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
30require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
31require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
32require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
33dol_include_once('/mrp/class/mo.class.php');
34dol_include_once('/mrp/lib/mrp_mo.lib.php');
35
36
37// Load translation files required by the page
38$langs->loadLangs(array("mrp", "other"));
39
40// Get parameters
41$id = GETPOST('id', 'int');
42$ref = GETPOST('ref', 'alpha');
43$action = GETPOST('action', 'aZ09');
44$cancel = GETPOST('cancel', 'aZ09');
45$backtopage = GETPOST('backtopage', 'alpha');
46
47// Protection
48$socid = 0;
49if ($user->socid > 0) {
50 $socid = $user->socid;
51}
52
53if (GETPOST('actioncode', 'array')) {
54 $actioncode = GETPOST('actioncode', 'array', 3);
55 if (!count($actioncode)) {
56 $actioncode = '0';
57 }
58} else {
59 $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : getDolGlobalString('AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT'));
60}
61$search_rowid = GETPOST('search_rowid');
62$search_agenda_label = GETPOST('search_agenda_label');
63
64$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
65$sortfield = GETPOST('sortfield', 'aZ09comma');
66$sortorder = GETPOST('sortorder', 'aZ09comma');
67$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
68if (empty($page) || $page == -1) {
69 $page = 0;
70} // If $page is not defined, or '' or -1
71$offset = $limit * $page;
72$pageprev = $page - 1;
73$pagenext = $page + 1;
74if (!$sortfield) {
75 $sortfield = 'a.datep,a.id';
76}
77if (!$sortorder) {
78 $sortorder = 'DESC';
79}
80
81// Initialize technical objects
82$object = new Mo($db);
83$extrafields = new ExtraFields($db);
84$diroutputmassaction = $conf->mrp->dir_output.'/temp/massgeneration/'.$user->id;
85$hookmanager->initHooks(array('moagenda', 'globalcard')); // Note that conf->hooks_modules contains array
86
87// Fetch optionals attributes and labels
88$extrafields->fetch_name_optionals_label($object->table_element);
89
90// Load object
91include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals
92if ($id > 0 || !empty($ref)) {
93 $upload_dir = (empty($conf->mrp->multidir_output[$object->entity]) ? $conf->mrp->dir_output : $conf->mrp->multidir_output[$object->entity])."/".$object->id;
94}
95
96// Security check - Protection if external user
97//if ($user->socid > 0) accessforbidden();
98//if ($user->socid > 0) $socid = $user->socid;
99$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0);
100$result = restrictedArea($user, 'mrp', $object->id, 'mrp_mo', '', 'fk_soc', 'rowid', $isdraft);
101
102
103/*
104 * Actions
105 */
106
107$parameters = array('id'=>$socid);
108$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
109if ($reshook < 0) {
110 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
111}
112
113if (empty($reshook)) {
114 // Cancel
115 if (GETPOST('cancel', 'alpha') && !empty($backtopage)) {
116 header("Location: ".$backtopage);
117 exit;
118 }
119
120 // Purge search criteria
121 if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
122 $actioncode = '';
123 $search_agenda_label = '';
124 }
125}
126
127
128
129/*
130 * View
131 */
132
133$contactstatic = new Contact($db);
134
135$form = new Form($db);
136$formproject = new FormProjets($db);
137
138if ($object->id > 0) {
139 $title = $langs->trans("Agenda");
140 //if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name." - ".$title;
141 $help_url = 'EN:Module_Agenda_En|FR:Module_Agenda|ES:Módulo_Agenda|DE:|DE:Modul_Terminplanung';
142 llxHeader('', $title, $help_url);
143
144 if (isModEnabled('notification')) {
145 $langs->load("mails");
146 }
147 $head = moPrepareHead($object);
148
149
150 print dol_get_fiche_head($head, 'agenda', $langs->trans("ManufacturingOrder"), -1, $object->picto);
151
152 // Object card
153 // ------------------------------------------------------------
154 $linkback = '<a href="'.dol_buildpath('/mrp/mo_list.php', 1).'?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
155
156 $morehtmlref = '<div class="refidno">';
157 // Ref customer
158 //$morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1);
159 //$morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1);
160 // Thirdparty
161 if (is_object($object->thirdparty)) {
162 $morehtmlref .= $object->thirdparty->getNomUrl(1, 'customer');
163 if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) {
164 $morehtmlref .= ' (<a href="'.DOL_URL_ROOT.'/commande/list.php?socid='.$object->thirdparty->id.'&search_societe='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherOrders").'</a>)';
165 }
166 }
167 // Project
168 if (isModEnabled('project')) {
169 $langs->load("projects");
170 if (is_object($object->thirdparty)) {
171 $morehtmlref .= '<br>';
172 }
173 if (0) {
174 $morehtmlref .= img_picto($langs->trans("Project"), 'project', 'class="pictofixedwidth"');
175 if ($action != 'classify') {
176 $morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> ';
177 }
178 $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, ($action == 'classify' ? 'projectid' : 'none'), 0, 0, 0, 1, '', 'maxwidth300');
179 } else {
180 if (!empty($object->fk_project)) {
181 $proj = new Project($db);
182 $proj->fetch($object->fk_project);
183 $morehtmlref .= $proj->getNomUrl(1);
184 if ($proj->title) {
185 $morehtmlref .= '<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).'</span>';
186 }
187 }
188 }
189 }
190 $morehtmlref .= '</div>';
191
192 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
193
194 print '<div class="fichecenter">';
195 print '<div class="underbanner clearboth"></div>';
196
197 $object->info($object->id);
198 dol_print_object_info($object, 1);
199
200 print '</div>';
201
202 print dol_get_fiche_end();
203
204
205
206 // Actions buttons
207
208 $objthirdparty = $object;
209 $objcon = new stdClass();
210
211 $out = '&origin='.$object->element.'&originid='.$object->id;
212 $permok = $user->hasRight('agenda', 'myactions', 'create');
213 if ((!empty($objthirdparty->id) || !empty($objcon->id)) && $permok) {
214 //$out.='<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create';
215 if (get_class($objthirdparty) == 'Societe') {
216 $out .= '&amp;socid='.$objthirdparty->id;
217 }
218 $out .= (!empty($objcon->id) ? '&amp;contactid='.$objcon->id : '').'&amp;backtopage='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id);
219 //$out.=$langs->trans("AddAnAction").' ';
220 //$out.=img_picto($langs->trans("AddAnAction"),'filenew');
221 //$out.="</a>";
222 }
223
224
225 print '<div class="tabsAction">';
226
227 if (isModEnabled('agenda')) {
228 if ($user->hasRight('agenda', 'myactions', 'create') || $user->hasRight('agenda', 'allactions', 'create')) {
229 print '<a class="butAction" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out.'">'.$langs->trans("AddAction").'</a>';
230 } else {
231 print '<a class="butActionRefused classfortooltip" href="#">'.$langs->trans("AddAction").'</a>';
232 }
233 }
234
235 print '</div>';
236
237 if (isModEnabled('agenda') && ($user->hasRight('agenda', 'myactions', 'read') || $user->hasRight('agenda', 'allactions', 'read'))) {
238 $param = '&id='.$object->id;
239 if (!empty($socid)) {
240 $param .= '&socid='.$socid;
241 }
242 if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
243 $param .= '&contextpage='.urlencode($contextpage);
244 }
245 if ($limit > 0 && $limit != $conf->liste_limit) {
246 $param .= '&limit='.((int) $limit);
247 }
248
249
250 //print load_fiche_titre($langs->trans("ActionsOnMo"), '', '');
251
252 // List of all actions
253 $filters = array();
254 $filters['search_agenda_label'] = $search_agenda_label;
255 $filters['search_rowid'] = $search_rowid;
256
257 // TODO Replace this with same code than into list.php
258 show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder);
259 }
260}
261
262// End of page
263llxFooter();
264$db->close();
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Definition wrapper.php:56
llxFooter()
Empty footer.
Definition wrapper.php:70
Class to manage contact/addresses.
Class to manage standard extra fields.
Class to manage generation of HTML components Only common components must be here.
Class to manage building of HTML components.
Class for Mo.
Definition mo.class.php:34
Class to manage projects.
show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint=0, $actioncode='', $donetodo='done', $filters=array(), $sortfield='a.datep, a.id', $sortorder='DESC', $module='')
Show html area with actions (done or not, ignore the name of function).
dol_print_object_info($object, $usetable=0)
Show informations on an object TODO Move this into html.formother.
dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlstatus='', $onlybanner=0, $morehtmlright='')
Show tab footer of a card.
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.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
if(!function_exists( 'dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
img_edit($titlealt='default', $float=0, $other='')
Show logo editer/modifier fiche.
moPrepareHead($object)
Prepare array of tabs for Mo.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.