dolibarr  9.0.0
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-2011 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) 2017 Frédéric France <frederic.france@netlogic.fr>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  */
23 
30 require '../../main.inc.php';
31 require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
32 require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php';
33 require_once DOL_DOCUMENT_ROOT.'/core/lib/invoice.lib.php';
34 require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
35 require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
36 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
37 if (! empty($conf->projet->enabled)) {
38  include_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
39 }
40 
41 // Load translation files required by the page
42 $langs->loadLangs(array('propal', 'compta', 'other', 'bills', 'companies'));
43 
44 
45 $id=(GETPOST('id','int')?GETPOST('id','int'):GETPOST('facid','int')); // For backward compatibility
46 $ref=GETPOST('ref','alpha');
47 $socid=GETPOST('socid','int');
48 $action=GETPOST('action','alpha');
49 $confirm=GETPOST('confirm', 'alpha');
50 
51 // Security check
52 if ($user->societe_id)
53 {
54  $socid = $user->societe_id;
55 }
56 $result=restrictedArea($user,'facture',$id,'');
57 
58 // Get parameters
59 $sortfield = GETPOST("sortfield",'alpha');
60 $sortorder = GETPOST("sortorder",'alpha');
61 $page = GETPOST("page",'int');
62 if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
63 $offset = $conf->liste_limit * $page;
64 $pageprev = $page - 1;
65 $pagenext = $page + 1;
66 if (! $sortorder) $sortorder="ASC";
67 if (! $sortfield) $sortfield="name";
68 
69 $object = new Facture($db);
70 if ($object->fetch($id))
71 {
72  $object->fetch_thirdparty();
73  $upload_dir = $conf->facture->dir_output . "/" . dol_sanitizeFileName($object->ref);
74 }
75 
76 
77 /*
78  * Actions
79  */
80 
81 require_once DOL_DOCUMENT_ROOT . '/core/actions_linkedfiles.inc.php';
82 
83 
84 /*
85  * View
86  */
87 
88 $title = $langs->trans('InvoiceCustomer') . " - " . $langs->trans('Documents');
89 $helpurl = "EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes";
90 llxHeader('', $title, $helpurl);
91 
92 $form = new Form($db);
93 
94 if ($id > 0 || ! empty($ref))
95 {
96  if ($object->fetch($id,$ref) > 0)
97  {
98  $object->fetch_thirdparty();
99 
100  $upload_dir = $conf->facture->dir_output.'/'.dol_sanitizeFileName($object->ref);
101 
102  $head = facture_prepare_head($object);
103  dol_fiche_head($head, 'documents', $langs->trans('InvoiceCustomer'), -1, 'bill');
104 
105  $totalpaye = $object->getSommePaiement();
106 
107  // Build file list
108  $filearray=dol_dir_list($upload_dir,"files",0,'','(\.meta|_preview.*\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1);
109  $totalsize=0;
110  foreach($filearray as $key => $file)
111  {
112  $totalsize+=$file['size'];
113  }
114 
115 
116  // Invoice content
117 
118  $linkback = '<a href="' . DOL_URL_ROOT . '/compta/facture/list.php?restore_lastsearch_values=1' . (! empty($socid) ? '&socid=' . $socid : '') . '">' . $langs->trans("BackToList") . '</a>';
119 
120  $morehtmlref='<div class="refidno">';
121  // Ref customer
122  $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1);
123  $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1);
124  // Thirdparty
125  $morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1,'customer');
126  // Project
127  if (! empty($conf->projet->enabled))
128  {
129  $langs->load("projects");
130  $morehtmlref.='<br>'.$langs->trans('Project') . ' ';
131  if ($user->rights->facture->creer)
132  {
133  if ($action != 'classify')
134  //$morehtmlref.='<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
135  $morehtmlref.=' : ';
136  if ($action == 'classify') {
137  //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
138  $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
139  $morehtmlref.='<input type="hidden" name="action" value="classin">';
140  $morehtmlref.='<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
141  $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1);
142  $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
143  $morehtmlref.='</form>';
144  } else {
145  $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1);
146  }
147  } else {
148  if (! empty($object->fk_project)) {
149  $proj = new Project($db);
150  $proj->fetch($object->fk_project);
151  $morehtmlref.='<a href="'.DOL_URL_ROOT.'/projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">';
152  $morehtmlref.=$proj->ref;
153  $morehtmlref.='</a>';
154  } else {
155  $morehtmlref.='';
156  }
157  }
158  }
159  $morehtmlref.='</div>';
160 
161  $object->totalpaye = $totalpaye; // To give a chance to dol_banner_tab to use already paid amount to show correct status
162 
163  dol_banner_tab($object, 'ref', $linkback, 1, 'facnumber', 'ref', $morehtmlref, '', 0);
164 
165  print '<div class="fichecenter">';
166  print '<div class="underbanner clearboth"></div>';
167 
168  print '<table class="border" width="100%">';
169 
170  print '<tr><td class="titlefield">'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>';
171  print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.dol_print_size($totalsize,1,1).'</td></tr>';
172  print "</table>\n";
173 
174  print "</div>\n";
175 
176  dol_fiche_end();
177 
178  $modulepart = 'facture';
179  $permission = $user->rights->facture->creer;
180  $permtoedit = $user->rights->facture->creer;
181  $param = '&id=' . $object->id;
182  include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php';
183  }
184  else
185  {
186  dol_print_error($db);
187  }
188 }
189 else
190 {
191  print $langs->trans("ErrorUnknown");
192 }
193 
194 // End of page
195 llxFooter();
196 $db->close();
GETPOST($paramname, $check='none', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
print
Draft customers invoices.
Definition: index.php:91
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
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_print_error($db='', $error='', $errors=null)
Affiche message erreur system avec toutes les informations pour faciliter le diagnostic et la remonte...
Class to manage generation of HTML components Only common components must be here.
Class to manage projects.
dol_fiche_end($notab=0)
Show tab footer of a card.
dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0)
Scan a directory and return a list of files/directories.
Definition: files.lib.php:59
dol_print_size($size, $shortvalue=0, $shortunit=0)
Return string with formated size.
restrictedArea($user, $features, $objectid=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0)
Check permissions of a user to show a page and an object.
Class to manage invoices.
llxFooter()
Footer empty.
Definition: document.php:68
dol_fiche_head($links=array(), $active='0', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='')
Show tab header of a card.
if(isset($_GET["hashp"]) &&! defined("NOLOGIN")) if((isset($_GET["modulepart"]) && $_GET["modulepart"]=='medias')) llxHeader()
Header empty.
Definition: document.php:60
facture_prepare_head($object)
Initialize the array of tabs for customer invoice.
Definition: invoice.lib.php:36