dolibarr 21.0.0-beta
productlot_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-2010 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) 2005 Simon TOSSER <simon@kornog-computing.com>
7 * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
8 * Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
9 * Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
10 * Copyright (C) 2018 All-3kcis <contact@all-3kcis.fr>
11 * Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
12 *
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 3 of the License, or
16 * (at your option) any later version.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program. If not, see <https://www.gnu.org/licenses/>.
25 */
26
33// Load Dolibarr environment
34require '../../main.inc.php';
35require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php';
36require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
37require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
38require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
39require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
40require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productlot.class.php';
41
50// Load translation files required by the page
51$langs->loadLangs(array('other', 'products'));
52
53$id = GETPOSTINT('id');
54$ref = GETPOST('ref', 'alpha');
55$action = GETPOST('action', 'aZ09');
56$confirm = GETPOST('confirm', 'alpha');
57
58// Security check
59$fieldvalue = (!empty($id) ? $id : '');
60$fieldtype = 'rowid';
61if ($user->socid) {
62 $socid = $user->socid;
63}
64
65// Initialize a technical object to manage hooks of page. Note that conf->hooks_modules contains an array of hook context
66$hookmanager->initHooks(array('productlotdocuments'));
67
68$result = restrictedArea($user, 'produit|service');
69
70// Get parameters
71$limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit;
72$sortfield = GETPOST('sortfield', 'aZ09comma');
73$sortorder = GETPOST('sortorder', 'aZ09comma');
74$page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page");
75if (empty($page) || $page == -1) {
76 $page = 0;
77} // If $page is not defined, or '' or -1
78$offset = $limit * $page;
79$pageprev = $page - 1;
80$pagenext = $page + 1;
81if (!$sortorder) {
82 $sortorder = "ASC";
83}
84if (!$sortfield) {
85 $sortfield = "position_name";
86}
87
88$modulepart = 'product_batch';
89$object = new Productlot($db);
90if ($id || $ref) {
91 $productid = 0;
92 $batch = '';
93 if ($ref) {
94 $tmp = explode('_', $ref);
95 $productid = $tmp[0];
96 $batch = $tmp[1];
97 }
98 $object->fetch($id, $productid, $batch);
99
100 if (isModEnabled('productbatch')) {
101 $upload_dir = $conf->productbatch->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 1, $object, $modulepart);
102 $filearray = dol_dir_list($upload_dir, "files");
103 }
104}
105
106$usercanread = $user->hasRight('produit', 'lire');
107$usercancreate = $user->hasRight('produit', 'creer');
108$usercandelete = $user->hasRight('produit', 'supprimer');
109
110if (empty($upload_dir)) {
111 $upload_dir = $conf->productbatch->multidir_output[$conf->entity];
112}
113
114$permissiontoread = $usercanread;
115$permissiontoadd = $usercancreate;
116$permtoedit = $user->hasRight('produit', 'creer');
117//$permissiontodelete = $usercandelete;
118
119// Security check
120if (!isModEnabled('productbatch')) {
121 accessforbidden('Module not enabled');
122}
123$socid = 0;
124if ($user->socid > 0) { // Protection if external user
125 //$socid = $user->socid;
127}
128//$result = restrictedArea($user, 'productbatch');
129if (!$permissiontoread) {
131}
132
133
134/*
135 * Actions
136 */
137
138$parameters = array('id'=>$id);
139$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
140if ($reshook < 0) {
141 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
142}
143
144if (empty($reshook)) {
145 // Action submit/delete file/link
146 include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php';
147}
148
149
150/*
151 * View
152 */
153
154$form = new Form($db);
155
156llxHeader('', $langs->trans('ProductLot'), '', '', 0, 0, '', '', '', 'mod-product page-stock_productlot_document');
157
158
159if ($object->id) {
160 $head = productlot_prepare_head($object);
161 print dol_get_fiche_head($head, 'documents', $langs->trans("Batch"), -1, 'barcode');
162
163
164 $parameters = array();
165 $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
166 print $hookmanager->resPrint;
167 if ($reshook < 0) {
168 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
169 }
170
171 // Build file list
172 $filearray = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview.*\.png)$', $sortfield, (strtolower($sortorder) == 'desc' ? SORT_DESC : SORT_ASC), 1);
173
174 $totalsize = 0;
175 foreach ($filearray as $key => $file) {
176 $totalsize += $file['size'];
177 }
178
179
180 $linkback = '<a href="'.DOL_URL_ROOT.'/product/stock/productlot_list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
181
182 $shownav = 1;
183 if ($user->socid && !in_array('batch', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
184 $shownav = 0;
185 }
186
187 dol_banner_tab($object, 'id', $linkback, $shownav, 'rowid', 'batch');
188
189 print '<div class="fichecenter">';
190
191 print '<div class="underbanner clearboth"></div>';
192 print '<table class="border tableforfield" width="100%">';
193
194 // Product
195 print '<tr><td class="titlefield">'.$langs->trans("Product").'</td><td>';
196 $producttmp = new Product($db);
197 $producttmp->fetch($object->fk_product);
198 print $producttmp->getNomUrl(1, 'stock')." - ".$producttmp->label;
199 print '</td></tr>';
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 print '</table>';
204
205 print '</div>';
206 print '<div class="clearboth"></div>';
207
208 print dol_get_fiche_end();
209
210 $param = '&id='.$object->id;
211 include DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php';
212} else {
213 print $langs->trans("ErrorUnknown");
214}
215
216
217llxFooter();
218$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 generation of HTML components Only common components must be here.
Class to manage products or services.
Class with list of lots and properties.
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.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
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.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
Definition member.php:79
productlot_prepare_head($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.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.