dolibarr 18.0.6
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
47if (GETPOST('actioncode', 'array')) {
48 $actioncode = GETPOST('actioncode', 'array', 3);
49 if (!count($actioncode)) {
50 $actioncode = '0';
51 }
52} else {
53 $actioncode = GETPOST("actioncode", "alpha", 3) ?GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : getDolGlobalString('AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT'));
54}
55$search_rowid = GETPOST('search_rowid');
56$search_agenda_label = GETPOST('search_agenda_label');
57
58$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
59$sortfield = GETPOST('sortfield', 'aZ09comma');
60$sortorder = GETPOST('sortorder', 'aZ09comma');
61$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
62if (empty($page) || $page == -1) {
63 $page = 0;
64} // If $page is not defined, or '' or -1
65$offset = $limit * $page;
66$pageprev = $page - 1;
67$pagenext = $page + 1;
68if (!$sortfield) {
69 $sortfield = 'a.datep,a.id';
70}
71if (!$sortorder) {
72 $sortorder = 'DESC';
73}
74
75// Initialize technical objects
76$object = new Mo($db);
77$extrafields = new ExtraFields($db);
78$diroutputmassaction = $conf->mrp->dir_output.'/temp/massgeneration/'.$user->id;
79$hookmanager->initHooks(array('moagenda', 'globalcard')); // Note that conf->hooks_modules contains array
80
81// Fetch optionals attributes and labels
82$extrafields->fetch_name_optionals_label($object->table_element);
83
84// Load object
85include 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
86if ($id > 0 || !empty($ref)) {
87 $upload_dir = $conf->mrp->multidir_output[$object->entity]."/".$object->id;
88}
89
90// Security check - Protection if external user
91//if ($user->socid > 0) accessforbidden();
92//if ($user->socid > 0) $socid = $user->socid;
93$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0);
94$result = restrictedArea($user, 'mrp', $object->id, 'mrp_mo', '', 'fk_soc', 'rowid', $isdraft);
95
96
97/*
98 * Actions
99 */
100
101$parameters = array('id'=>$socid);
102$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
103if ($reshook < 0) {
104 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
105}
106
107if (empty($reshook)) {
108 // Cancel
109 if (GETPOST('cancel', 'alpha') && !empty($backtopage)) {
110 header("Location: ".$backtopage);
111 exit;
112 }
113
114 // Purge search criteria
115 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
116 $actioncode = '';
117 $search_agenda_label = '';
118 }
119}
120
121
122
123/*
124 * View
125 */
126
127$contactstatic = new Contact($db);
128
129$form = new Form($db);
130$formproject = new FormProjets($db);
131
132if ($object->id > 0) {
133 $title = $langs->trans("Agenda");
134 //if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name." - ".$title;
135 $help_url = 'EN:Module_Agenda_En|FR:Module_Agenda|ES:Módulo_Agenda|DE:|DE:Modul_Terminplanung';
136 llxHeader('', $title, $help_url);
137
138 if (isModEnabled('notification')) {
139 $langs->load("mails");
140 }
141 $head = moPrepareHead($object);
142
143
144 print dol_get_fiche_head($head, 'agenda', $langs->trans("ManufacturingOrder"), -1, $object->picto);
145
146 // Object card
147 // ------------------------------------------------------------
148 $linkback = '<a href="'.dol_buildpath('/mrp/mo_list.php', 1).'?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
149
150 $morehtmlref = '<div class="refidno">';
151 // Ref customer
152 //$morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1);
153 //$morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1);
154 // Thirdparty
155 if (is_object($object->thirdparty)) {
156 $morehtmlref .= $object->thirdparty->getNomUrl(1, 'customer');
157 if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) {
158 $morehtmlref .= ' (<a href="'.DOL_URL_ROOT.'/commande/list.php?socid='.$object->thirdparty->id.'&search_societe='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherOrders").'</a>)';
159 }
160 }
161 // Project
162 if (isModEnabled('project')) {
163 $langs->load("projects");
164 if (is_object($object->thirdparty)) {
165 $morehtmlref .= '<br>';
166 }
167 if (0) {
168 $morehtmlref .= img_picto($langs->trans("Project"), 'project', 'class="pictofixedwidth"');
169 if ($action != 'classify') {
170 $morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> ';
171 }
172 $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, ($action == 'classify' ? 'projectid' : 'none'), 0, 0, 0, 1, '', 'maxwidth300');
173 } else {
174 if (!empty($object->fk_project)) {
175 $proj = new Project($db);
176 $proj->fetch($object->fk_project);
177 $morehtmlref .= $proj->getNomUrl(1);
178 if ($proj->title) {
179 $morehtmlref .= '<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).'</span>';
180 }
181 }
182 }
183 }
184 $morehtmlref .= '</div>';
185
186 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
187
188 print '<div class="fichecenter">';
189 print '<div class="underbanner clearboth"></div>';
190
191 $object->info($object->id);
192 dol_print_object_info($object, 1);
193
194 print '</div>';
195
196 print dol_get_fiche_end();
197
198
199
200 // Actions buttons
201
202 $objthirdparty = $object;
203 $objcon = new stdClass();
204
205 $out = '&origin='.$object->element.'&originid='.$object->id;
206 $permok = $user->hasRight('agenda', 'myactions', 'create');
207 if ((!empty($objthirdparty->id) || !empty($objcon->id)) && $permok) {
208 //$out.='<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create';
209 if (get_class($objthirdparty) == 'Societe') {
210 $out .= '&amp;socid='.$objthirdparty->id;
211 }
212 $out .= (!empty($objcon->id) ? '&amp;contactid='.$objcon->id : '').'&amp;backtopage='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id);
213 //$out.=$langs->trans("AddAnAction").' ';
214 //$out.=img_picto($langs->trans("AddAnAction"),'filenew');
215 //$out.="</a>";
216 }
217
218
219 print '<div class="tabsAction">';
220
221 if (isModEnabled('agenda')) {
222 if ($user->hasRight('agenda', 'myactions', 'create') || $user->hasRight('agenda', 'allactions', 'create')) {
223 print '<a class="butAction" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out.'">'.$langs->trans("AddAction").'</a>';
224 } else {
225 print '<a class="butActionRefused classfortooltip" href="#">'.$langs->trans("AddAction").'</a>';
226 }
227 }
228
229 print '</div>';
230
231 if (isModEnabled('agenda') && ($user->hasRight('agenda', 'myactions', 'read') || $user->hasRight('agenda', 'allactions', 'read'))) {
232 $param = '&id='.$object->id.'&socid='.$socid;
233 if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
234 $param .= '&contextpage='.urlencode($contextpage);
235 }
236 if ($limit > 0 && $limit != $conf->liste_limit) {
237 $param .= '&limit='.((int) $limit);
238 }
239
240
241 //print load_fiche_titre($langs->trans("ActionsOnMo"), '', '');
242
243 // List of all actions
244 $filters = array();
245 $filters['search_agenda_label'] = $search_agenda_label;
246 $filters['search_rowid'] = $search_rowid;
247
248 // TODO Replace this with same code than into list.php
249 show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder);
250 }
251}
252
253// End of page
254llxFooter();
255$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.