dolibarr 21.0.0-alpha
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 * Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <https://www.gnu.org/licenses/>.
18 */
19
26// Load Dolibarr environment
27require '../main.inc.php';
28
29require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
30require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
31require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
32require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
33require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
34require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
35require_once DOL_DOCUMENT_ROOT.'/mrp/class/mo.class.php';
36require_once DOL_DOCUMENT_ROOT.'/mrp/lib/mrp_mo.lib.php';
37
38// Load translation files required by the page
39$langs->loadLangs(array("mrp", "companies", "other", "mails"));
40
41
42$action = GETPOST('action', 'aZ09');
43$confirm = GETPOST('confirm');
44$id = (GETPOSTINT('socid') ? GETPOSTINT('socid') : GETPOSTINT('id'));
45$ref = GETPOST('ref', 'alpha');
46
47// Get parameters
48$limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit;
49$sortfield = GETPOST('sortfield', 'aZ09comma');
50$sortorder = GETPOST('sortorder', 'aZ09comma');
51$page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page");
52if (empty($page) || $page == -1) {
53 $page = 0;
54} // If $page is not defined, or '' or -1
55$offset = $limit * $page;
56$pageprev = $page - 1;
57$pagenext = $page + 1;
58if (!$sortorder) {
59 $sortorder = "ASC";
60}
61if (!$sortfield) {
62 $sortfield = "name";
63}
64//if (! $sortfield) $sortfield="position_name";
65
66// Initialize a technical objects
67$object = new Mo($db);
68$extrafields = new ExtraFields($db);
69$diroutputmassaction = $conf->mrp->dir_output.'/temp/massgeneration/'.$user->id;
70$hookmanager->initHooks(array('modocument', 'globalcard')); // Note that conf->hooks_modules contains array
71
72// Fetch optionals attributes and labels
73$extrafields->fetch_name_optionals_label($object->table_element);
74
75// Load object
76include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be 'include', not 'include_once'. Include fetch and fetch_thirdparty but not fetch_optionals
77
78if ($id > 0 || !empty($ref)) {
79 $upload_dir = $conf->mrp->multidir_output[$object->entity ? $object->entity : $conf->entity]."/".get_exdir(0, 0, 0, 1, $object);
80}
81
82// Security check - Protection if external user
83//if ($user->socid > 0) accessforbidden();
84//if ($user->socid > 0) $socid = $user->socid;
85$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0);
86$result = restrictedArea($user, 'mrp', $object->id, 'mrp_mo', '', 'fk_soc', 'rowid', $isdraft);
87
88$permissiontoadd = $user->hasRight('mrp', 'write'); // Used by the include of actions_addupdatedelete.inc.php and actions_linkedfiles.inc.php
89
90
91/*
92 * Actions
93 */
94
95include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; // Used by the include of actions_addupdatedelete.inc.php and actions_linkedfiles.inc.php
96
97
98/*
99 * View
100 */
101
102$form = new Form($db);
103$formproject = new FormProjets($db);
104
105$title = $langs->trans("Mo").' - '.$langs->trans("Files");
106$help_url = 'EN:Module_Manufacturing_Orders|FR:Module_Ordres_de_Fabrication|DE:Modul_Fertigungsauftrag';
107
108llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-mrp page-card_documents');
109
110if ($object->id) {
111 /*
112 * Show tabs
113 */
114 $head = moPrepareHead($object);
115
116 print dol_get_fiche_head($head, 'document', $langs->trans("ManufacturingOrder"), -1, $object->picto);
117
118 // Build file list
119 $filearray = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview.*\.png)$', $sortfield, (strtolower($sortorder) == 'desc' ? SORT_DESC : SORT_ASC), 1);
120 $totalsize = 0;
121 foreach ($filearray as $key => $file) {
122 $totalsize += $file['size'];
123 }
124
125 // Object card
126 // ------------------------------------------------------------
127 $linkback = '<a href="'.dol_buildpath('/mrp/mo_list.php', 1).'?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
128
129 $morehtmlref = '<div class="refidno">';
130 // Ref customer
131 //$morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1);
132 //$morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1);
133 // Thirdparty
134 if (is_object($object->thirdparty)) {
135 $morehtmlref .= $object->thirdparty->getNomUrl(1, 'customer');
136 if (!getDolGlobalString('MAIN_DISABLE_OTHER_LINK') && $object->thirdparty->id > 0) {
137 $morehtmlref .= ' (<a href="'.DOL_URL_ROOT.'/commande/list.php?socid='.$object->thirdparty->id.'&search_societe='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherOrders").'</a>)';
138 }
139 }
140 // Project
141 if (isModEnabled('project')) {
142 $langs->load("projects");
143 if (is_object($object->thirdparty)) {
144 $morehtmlref .= '<br>';
145 }
146 if (0) {
147 $morehtmlref .= img_picto($langs->trans("Project"), 'project', 'class="pictofixedwidth"');
148 if ($action != 'classify') {
149 $morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> ';
150 }
151 $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, ($action == 'classify' ? 'projectid' : 'none'), 0, 0, 0, 1, '', 'maxwidth300');
152 } else {
153 if (!empty($object->fk_project)) {
154 $proj = new Project($db);
155 $proj->fetch($object->fk_project);
156 $morehtmlref .= $proj->getNomUrl(1);
157 if ($proj->title) {
158 $morehtmlref .= '<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).'</span>';
159 }
160 }
161 }
162 }
163 $morehtmlref .= '</div>';
164
165 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
166
167 print '<div class="fichecenter">';
168
169 print '<div class="underbanner clearboth"></div>';
170 print '<table class="border centpercent tableforfield">';
171
172 // Number of files
173 print '<tr><td class="titlefield">'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>';
174
175 // Total size
176 print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>';
177
178 print '</table>';
179
180 print '</div>';
181
182 print dol_get_fiche_end();
183
184 $modulepart = 'mrp';
185 $permissiontoadd = $user->hasRight('mrp', 'write');
186 $permtoedit = $user->hasRight('mrp', 'write');
187 $param = '&id='.$object->id;
188
189 //$relativepathwithnofile='mo/' . dol_sanitizeFileName($object->id).'/';
190 $relativepathwithnofile = dol_sanitizeFileName($object->ref).'/';
191
192 include DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php';
193} else {
194 accessforbidden('', 0, 1);
195}
196
197// End of page
198llxFooter();
199$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($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Definition wrapper.php:70
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.
llxFooter()
Footer empty.
Definition document.php:107
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.
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.