dolibarr 20.0.0
mo_document.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2007-2017 Laurent Destailleur <eldy@users.sourceforge.net>
3 * Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
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.'/core/lib/company.lib.php';
30require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
31require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
32require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
33require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
34require_once DOL_DOCUMENT_ROOT.'/mrp/class/mo.class.php';
35require_once DOL_DOCUMENT_ROOT.'/mrp/lib/mrp_mo.lib.php';
36
37// Load translation files required by the page
38$langs->loadLangs(array("mrp", "companies", "other", "mails"));
39
40
41$action = GETPOST('action', 'aZ09');
42$confirm = GETPOST('confirm');
43$id = (GETPOSTINT('socid') ? GETPOSTINT('socid') : GETPOSTINT('id'));
44$ref = GETPOST('ref', 'alpha');
45
46// Get parameters
47$limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit;
48$sortfield = GETPOST('sortfield', 'aZ09comma');
49$sortorder = GETPOST('sortorder', 'aZ09comma');
50$page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page");
51if (empty($page) || $page == -1) {
52 $page = 0;
53} // If $page is not defined, or '' or -1
54$offset = $limit * $page;
55$pageprev = $page - 1;
56$pagenext = $page + 1;
57if (!$sortorder) {
58 $sortorder = "ASC";
59}
60if (!$sortfield) {
61 $sortfield = "name";
62}
63//if (! $sortfield) $sortfield="position_name";
64
65// Initialize technical objects
66$object = new Mo($db);
67$extrafields = new ExtraFields($db);
68$diroutputmassaction = $conf->mrp->dir_output.'/temp/massgeneration/'.$user->id;
69$hookmanager->initHooks(array('modocument', 'globalcard')); // Note that conf->hooks_modules contains array
70
71// Fetch optionals attributes and labels
72$extrafields->fetch_name_optionals_label($object->table_element);
73
74// Load object
75include 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
76
77if ($id > 0 || !empty($ref)) {
78 $upload_dir = $conf->mrp->multidir_output[$object->entity ? $object->entity : $conf->entity]."/".get_exdir(0, 0, 0, 1, $object);
79}
80
81// Security check - Protection if external user
82//if ($user->socid > 0) accessforbidden();
83//if ($user->socid > 0) $socid = $user->socid;
84$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0);
85$result = restrictedArea($user, 'mrp', $object->id, 'mrp_mo', '', 'fk_soc', 'rowid', $isdraft);
86
87$permissiontoadd = $user->hasRight('mrp', 'write'); // Used by the include of actions_addupdatedelete.inc.php and actions_linkedfiles.inc.php
88
89
90/*
91 * Actions
92 */
93
94include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; // Used by the include of actions_addupdatedelete.inc.php and actions_linkedfiles.inc.php
95
96
97/*
98 * View
99 */
100
101$form = new Form($db);
102$formproject = new FormProjets($db);
103
104$title = $langs->trans("Mo").' - '.$langs->trans("Files");
105$help_url = '';
106//$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas';
107llxHeader('', $title, $help_url);
108
109if ($object->id) {
110 /*
111 * Show tabs
112 */
113 $head = moPrepareHead($object);
114
115 print dol_get_fiche_head($head, 'document', $langs->trans("ManufacturingOrder"), -1, $object->picto);
116
117 // Build file list
118 $filearray = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview.*\.png)$', $sortfield, (strtolower($sortorder) == 'desc' ? SORT_DESC : SORT_ASC), 1);
119 $totalsize = 0;
120 foreach ($filearray as $key => $file) {
121 $totalsize += $file['size'];
122 }
123
124 // Object card
125 // ------------------------------------------------------------
126 $linkback = '<a href="'.dol_buildpath('/mrp/mo_list.php', 1).'?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
127
128 $morehtmlref = '<div class="refidno">';
129 // Ref customer
130 //$morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1);
131 //$morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1);
132 // Thirdparty
133 if (is_object($object->thirdparty)) {
134 $morehtmlref .= $object->thirdparty->getNomUrl(1, 'customer');
135 if (!getDolGlobalString('MAIN_DISABLE_OTHER_LINK') && $object->thirdparty->id > 0) {
136 $morehtmlref .= ' (<a href="'.DOL_URL_ROOT.'/commande/list.php?socid='.$object->thirdparty->id.'&search_societe='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherOrders").'</a>)';
137 }
138 }
139 // Project
140 if (isModEnabled('project')) {
141 $langs->load("projects");
142 if (is_object($object->thirdparty)) {
143 $morehtmlref .= '<br>';
144 }
145 if (0) {
146 $morehtmlref .= img_picto($langs->trans("Project"), 'project', 'class="pictofixedwidth"');
147 if ($action != 'classify') {
148 $morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> ';
149 }
150 $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, ($action == 'classify' ? 'projectid' : 'none'), 0, 0, 0, 1, '', 'maxwidth300');
151 } else {
152 if (!empty($object->fk_project)) {
153 $proj = new Project($db);
154 $proj->fetch($object->fk_project);
155 $morehtmlref .= $proj->getNomUrl(1);
156 if ($proj->title) {
157 $morehtmlref .= '<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).'</span>';
158 }
159 }
160 }
161 }
162 $morehtmlref .= '</div>';
163
164 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
165
166 print '<div class="fichecenter">';
167
168 print '<div class="underbanner clearboth"></div>';
169 print '<table class="border centpercent tableforfield">';
170
171 // Number of files
172 print '<tr><td class="titlefield">'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>';
173
174 // Total size
175 print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>';
176
177 print '</table>';
178
179 print '</div>';
180
181 print dol_get_fiche_end();
182
183 $modulepart = 'mrp';
184 $permissiontoadd = $user->hasRight('mrp', 'write');
185 $permtoedit = $user->hasRight('mrp', 'write');
186 $param = '&id='.$object->id;
187
188 //$relativepathwithnofile='mo/' . dol_sanitizeFileName($object->id).'/';
189 $relativepathwithnofile = dol_sanitizeFileName($object->ref).'/';
190
191 include DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php';
192} else {
193 accessforbidden('', 0, 1);
194}
195
196// End of page
197llxFooter();
198$db->close();
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:58
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Definition wrapper.php:55
llxFooter()
Empty footer.
Definition wrapper.php:69
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:36
Class to manage projects.
dol_dir_list($utf8_path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0, $nbsecondsold=0)
Scan a directory and return a list of files/directories.
Definition files.lib.php:63
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
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.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify fiche.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
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.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.