dolibarr 21.0.0-beta
document.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2004-2016 Laurent Destailleur <eldy@users.sourceforge.net>
4 * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
5 * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
6 * Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
7 * Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
8 * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
9 * Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program. If not, see <https://www.gnu.org/licenses/>.
23 */
24
31// Load Dolibarr environment
32require '../main.inc.php';
33require_once DOL_DOCUMENT_ROOT.'/core/lib/order.lib.php';
34require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
35require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
36require_once DOL_DOCUMENT_ROOT.'/core/lib/reception.lib.php';
37require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
38require_once DOL_DOCUMENT_ROOT.'/reception/class/reception.class.php';
39if (isModEnabled('project')) {
40 require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
41}
42require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
43require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.dispatch.class.php';
44
53// Load translation files required by the page
54$langs->loadLangs(array('receptions', 'companies', 'other'));
55
56$action = GETPOST('action', 'aZ09');
57$confirm = GETPOST('confirm');
58$id = GETPOSTINT('id');
59$ref = GETPOST('ref');
60
61// Get parameters
62$limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit;
63$sortfield = GETPOST('sortfield', 'aZ09comma');
64$sortorder = GETPOST('sortorder', 'aZ09comma');
65$page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page");
66if (empty($page) || $page == -1) {
67 $page = 0;
68} // If $page is not defined, or '' or -1
69$offset = $limit * $page;
70$pageprev = $page - 1;
71$pagenext = $page + 1;
72if (!$sortorder) {
73 $sortorder = "ASC";
74}
75if (!$sortfield) {
76 $sortfield = "name";
77}
78
79$object = new Reception($db);
80if ($id > 0 || !empty($ref)) {
81 $object->fetch($id, $ref);
82 $object->fetch_thirdparty();
83
84 if (!empty($object->origin)) {
85 $origin = $object->origin;
86 $typeobject = $object->origin;
87
88 $object->fetch_origin();
89 }
90
91 // Linked documents
92 if ($origin == 'order_supplier' && $object->origin_object->id && isModEnabled("supplier_order")) {
93 $objectsrc = new CommandeFournisseur($db);
94 $objectsrc->fetch($object->origin_object->id);
95 }
96
97 $upload_dir = $conf->reception->dir_output."/".dol_sanitizeFileName($object->ref);
98}
99
100// Initialize a technical object to manage hooks of page. Note that conf->hooks_modules contains an array of hook context
101$hookmanager->initHooks(array('receptiondocument'));
102
103// Security check
104if ($user->socid > 0) {
105 $socid = $user->socid;
106}
107$result = restrictedArea($user, 'reception', $object->id, '');
108
109if (isModEnabled("reception")) {
110 $permissiontoread = $user->hasRight('reception', 'lire');
111 $permissiontoadd = $user->hasRight('reception', 'creer');
112 $permissiondellink = $user->hasRight('reception', 'creer'); // Used by the include of actions_dellink.inc.php
113 $permissiontovalidate = ((!getDolGlobalString('MAIN_USE_ADVANCED_PERMS') && $user->hasRight('reception', 'creer')) || (getDolGlobalString('MAIN_USE_ADVANCED_PERMS') && $user->hasRight('reception', 'reception_advance', 'validate')));
114 $permissiontodelete = $user->hasRight('reception', 'supprimer');
115} else {
116 $permissiontoread = $user->hasRight('fournisseur', 'commande', 'receptionner');
117 $permissiontoadd = $user->hasRight('fournisseur', 'commande', 'receptionner');
118 $permissiondellink = $user->hasRight('fournisseur', 'commande', 'receptionner'); // Used by the include of actions_dellink.inc.php
119 $permissiontovalidate = ((!getDolGlobalString('MAIN_USE_ADVANCED_PERMS') && $user->hasRight('fournisseur', 'commande', 'receptionner')) || (getDolGlobalString('MAIN_USE_ADVANCED_PERMS') && $user->hasRight('fournisseur', 'commande_advance', 'check')));
120 $permissiontodelete = $user->hasRight('fournisseur', 'commande', 'receptionner');
121}
122
123
124/*
125 * Actions
126 */
127
128include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php';
129
130
131/*
132 * View
133 */
134
135llxHeader('', $langs->trans('Reception'), '', '', 0, 0, '', '', '', 'mod-reception page-card_documents');
136
137$form = new Form($db);
138
139if ($id > 0 || !empty($ref)) {
140 if ($object->fetch($id, $ref)) {
141 $object->fetch_thirdparty();
142
143 $upload_dir = $conf->reception->dir_output.'/'.dol_sanitizeFileName($object->ref);
144
145 $head = reception_prepare_head($object);
146 print dol_get_fiche_head($head, 'documents', $langs->trans("Shipment"), -1, $object->picto);
147
148
149 // Build file list
150 $filearray = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview.*\.png)$', $sortfield, (strtolower($sortorder) == 'desc' ? SORT_DESC : SORT_ASC), 1);
151 $totalsize = 0;
152 foreach ($filearray as $key => $file) {
153 $totalsize += $file['size'];
154 }
155
156 // Shipment card
157 $linkback = '<a href="'.DOL_URL_ROOT.'/reception/list.php?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
158
159
160 $morehtmlref = '<div class="refidno">';
161 // Ref customer reception
162 $morehtmlref .= $form->editfieldkey("RefSupplier", '', $object->ref_supplier, $object, $user->hasRight('reception', 'creer'), 'string', '', 0, 1);
163 $morehtmlref .= $form->editfieldval("RefSupplier", '', $object->ref_supplier, $object, $user->hasRight('reception', 'creer'), 'string', '', null, null, '', 1);
164 // Thirdparty
165 $morehtmlref .= '<br>'.$object->thirdparty->getNomUrl(1);
166
167 // Project
168 if (isModEnabled('project')) {
169 $langs->load("projects");
170 $morehtmlref .= '<br>';
171 if (0) { // Do not change on reception
172 $morehtmlref .= img_picto($langs->trans("Project"), 'project', 'class="pictofixedwidth"');
173 if ($action != 'classify' && $permissiontoadd) {
174 $morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> ';
175 }
176 $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, (!getDolGlobalString('PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS') ? $object->socid : -1), $object->fk_project, ($action == 'classify' ? 'projectid' : 'none'), 0, 0, 0, 1, '', 'maxwidth300');
177 } else {
178 if (!empty($objectsrc) && !empty($objectsrc->fk_project)) {
179 $proj = new Project($db);
180 $proj->fetch($objectsrc->fk_project);
181 $morehtmlref .= $proj->getNomUrl(1);
182 if ($proj->title) {
183 $morehtmlref .= '<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).'</span>';
184 }
185 }
186 }
187 }
188 $morehtmlref .= '</div>';
189
190 // Order card
191
192 $linkback = '<a href="'.DOL_URL_ROOT.'/reception/list.php'.(!empty($socid) ? '?socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
193
194 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
195
196 print '<div class="fichecenter">';
197 print '<div class="underbanner clearboth"></div>';
198
199 print '<table class="border tableforfield centpercent">';
200
201 print '<tr><td class="titlefield">'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>';
202 print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.dol_print_size($totalsize, 1, 1).'</td></tr>';
203
204 print "</table>\n";
205
206 print "</div>\n";
207
208 print dol_get_fiche_end();
209
210 $modulepart = 'reception';
211 $permissiontoadd = $user->hasRight('reception', 'creer');
212 $permtoedit = $user->hasRight('reception', 'creer');
213 $param = '&id='.$object->id;
214 include DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php';
215 } else {
216 dol_print_error($db);
217 }
218} else {
219 header('Location: index.php');
220 exit;
221}
222
223// End of page
224llxFooter();
225$db->close();
$id
Definition account.php:48
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:66
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:71
Class to manage predefined suppliers products.
Class to manage generation of HTML components Only common components must be here.
Class to manage projects.
Class to manage receptions.
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
dol_print_size($size, $shortvalue=0, $shortunit=0)
Return string with formatted size.
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.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify fiche.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
Definition member.php:79
reception_prepare_head(Reception $object)
Prepare array with list of tabs.
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.