dolibarr  7.0.0-beta
contact.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2005 Patrick Rouillon <patrick@rouillon.net>
3  * Copyright (C) 2005-2015 Laurent Destailleur <eldy@users.sourceforge.net>
4  * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
5  * Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  */
20 
27 require '../../main.inc.php';
28 require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
29 require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
30 require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/core/lib/fourn.lib.php';
32 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
33 if (! empty($conf->projet->enabled)) {
34  require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
35 }
36 
37 $langs->load("bills");
38 $langs->load('other');
39 $langs->load("companies");
40 
41 $id = (GETPOST('id','int') ? GETPOST('id','int') : GETPOST('facid','int'));
42 $ref = GETPOST('ref','alpha');
43 $action = GETPOST('action','alpha');
44 
45 // Security check
46 if ($user->societe_id) $socid=$user->societe_id;
47 $result = restrictedArea($user, 'fournisseur', $id, 'facture_fourn', 'facture');
48 
49 $object = new FactureFournisseur($db);
50 
51 
52 /*
53  * Ajout d'un nouveau contact
54  */
55 
56 if ($action == 'addcontact' && $user->rights->fournisseur->facture->creer)
57 {
58  $result = $object->fetch($id, $ref);
59 
60  if ($result > 0 && $id > 0)
61  {
62  $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
63  $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
64  }
65 
66  if ($result >= 0)
67  {
68  header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
69  exit;
70  }
71  else
72  {
73  if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
74  {
75  $langs->load("errors");
76  setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors');
77  }
78  else
79  {
80  setEventMessages($object->error, $object->errors, 'errors');
81  }
82  }
83 }
84 
85 // bascule du statut d'un contact
86 else if ($action == 'swapstatut' && $user->rights->fournisseur->facture->creer)
87 {
88  if ($object->fetch($id))
89  {
90  $result=$object->swapContactStatus(GETPOST('ligne'));
91  }
92  else
93  {
94  dol_print_error($db);
95  }
96 }
97 
98 // Efface un contact
99 else if ($action == 'deletecontact' && $user->rights->fournisseur->facture->creer)
100 {
101  $object->fetch($id);
102  $result = $object->delete_contact($_GET["lineid"]);
103 
104  if ($result >= 0)
105  {
106  header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
107  exit;
108  }
109  else {
110  dol_print_error($db);
111  }
112 }
113 
114 
115 /*
116  * View
117  */
118 
119 $title = $langs->trans('SupplierInvoice') . " - " . $langs->trans('ContactsAddresses');
120 $helpurl = "EN:Module_Suppliers_Invoices|FR:Module_Fournisseurs_Factures|ES:Módulo_Facturas_de_proveedores";
121 llxHeader('', $title, $helpurl);
122 
123 $form = new Form($db);
124 $formcompany = new FormCompany($db);
125 $contactstatic=new Contact($db);
126 $userstatic=new User($db);
127 
128 
129 /* *************************************************************************** */
130 /* */
131 /* Mode vue et edition */
132 /* */
133 /* *************************************************************************** */
134 
135 if ($id > 0 || ! empty($ref))
136 {
137  if ($object->fetch($id, $ref) > 0)
138  {
139  $object->fetch_thirdparty();
140 
141  $alreadypaid=$object->getSommePaiement();
142 
143  $head = facturefourn_prepare_head($object);
144 
145  dol_fiche_head($head, 'contact', $langs->trans('SupplierInvoice'), -1, 'bill');
146 
147  $linkback = '<a href="' . DOL_URL_ROOT . '/compta/facture/list.php?restore_lastsearch_values=1' . (! empty($socid) ? '&socid=' . $socid : '') . '">' . $langs->trans("BackToList") . '</a>';
148 
149  $morehtmlref='<div class="refidno">';
150  // Ref supplier
151  $morehtmlref.=$form->editfieldkey("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, 0, 'string', '', 0, 1);
152  $morehtmlref.=$form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, 0, 'string', '', null, null, '', 1);
153  // Thirdparty
154  $morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1);
155  // Project
156  if (! empty($conf->projet->enabled))
157  {
158  $langs->load("projects");
159  $morehtmlref.='<br>'.$langs->trans('Project') . ' ';
160  if ($user->rights->facture->creer)
161  {
162  if ($action != 'classify')
163  //$morehtmlref.='<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
164  $morehtmlref.=' : ';
165  if ($action == 'classify') {
166  //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
167  $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
168  $morehtmlref.='<input type="hidden" name="action" value="classin">';
169  $morehtmlref.='<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
170  $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1);
171  $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
172  $morehtmlref.='</form>';
173  } else {
174  $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1);
175  }
176  } else {
177  if (! empty($object->fk_project)) {
178  $proj = new Project($db);
179  $proj->fetch($object->fk_project);
180  $morehtmlref.='<a href="'.DOL_URL_ROOT.'/projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">';
181  $morehtmlref.=$proj->ref;
182  $morehtmlref.='</a>';
183  } else {
184  $morehtmlref.='';
185  }
186  }
187  }
188  $morehtmlref.='</div>';
189 
190  $object->totalpaye = $alreadypaid; // To give a chance to dol_banner_tab to use already paid amount to show correct status
191 
192  dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
193 
194  print '<div class="fichecenter">';
195  print '<div class="underbanner clearboth"></div>';
196 
197  print '<table class="border" width="100%">';
198 
199  // Type
200  print '<tr><td class="titlefield">'.$langs->trans('Type').'</td><td colspan="4">';
201  print $object->getLibType();
202  if ($object->type == FactureFournisseur::TYPE_REPLACEMENT)
203  {
204  $facreplaced=new FactureFournisseur($db);
205  $facreplaced->fetch($object->fk_facture_source);
206  print ' ('.$langs->transnoentities("ReplaceInvoice",$facreplaced->getNomUrl(1)).')';
207  }
208  if ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE)
209  {
210  $facusing=new FactureFournisseur($db);
211  $facusing->fetch($object->fk_facture_source);
212  print ' ('.$langs->transnoentities("CorrectInvoice",$facusing->getNomUrl(1)).')';
213  }
214 
215  $facidavoir=$object->getListIdAvoirFromInvoice();
216  if (count($facidavoir) > 0)
217  {
218  print ' ('.$langs->transnoentities("InvoiceHasAvoir");
219  $i=0;
220  foreach($facidavoir as $fid)
221  {
222  if ($i==0) print ' ';
223  else print ',';
224  $facavoir=new FactureFournisseur($db);
225  $facavoir->fetch($fid);
226  print $facavoir->getNomUrl(1);
227  }
228  print ')';
229  }
230  if ($facidnext > 0)
231  {
232  $facthatreplace=new FactureFournisseur($db);
233  $facthatreplace->fetch($facidnext);
234  print ' ('.$langs->transnoentities("ReplacedByInvoice",$facthatreplace->getNomUrl(1)).')';
235  }
236  print '</td></tr>';
237 
238  // Label
239  print '<tr><td>'.$form->editfieldkey("Label",'label',$object->label,$object,0).'</td><td>';
240  print $form->editfieldval("Label",'label',$object->label,$object,0);
241  print '</td></tr>';
242 
243  // Amount
244  print '<tr><td>'.$langs->trans('AmountHT').'</td><td>'.price($object->total_ht,1,$langs,0,-1,-1,$conf->currency).'</td></tr>';
245  print '<tr><td>'.$langs->trans('AmountVAT').'</td><td>'.price($object->total_tva,1,$langs,0,-1,-1,$conf->currency).'</td></tr>';
246 
247  // Amount Local Taxes
248  //TODO: Place into a function to control showing by country or study better option
249  if ($societe->localtax1_assuj=="1") //Localtax1
250  {
251  print '<tr><td>'.$langs->transcountry("AmountLT1",$societe->country_code).'</td>';
252  print '<td>'.price($object->total_localtax1,1,$langs,0,-1,-1,$conf->currency).'</td>';
253  print '</tr>';
254  }
255  if ($societe->localtax2_assuj=="1") //Localtax2
256  {
257  print '<tr><td>'.$langs->transcountry("AmountLT2",$societe->country_code).'</td>';
258  print '<td>'.price($object->total_localtax2,1,$langs,0,-1,-1,$conf->currency).'</td>';
259  print '</tr>';
260  }
261  print '<tr><td>'.$langs->trans('AmountTTC').'</td><td>'.price($object->total_ttc,1,$langs,0,-1,-1,$conf->currency).'</td></tr>';
262 
263  print "</table>";
264 
265  dol_fiche_end();
266 
267  print '<br>';
268 
269  // Contacts lines
270  include DOL_DOCUMENT_ROOT.'/core/tpl/contacts.tpl.php';
271 
272  }
273  else
274  {
275  print "ErrorRecordNotFound";
276  }
277 }
278 
279 
280 llxFooter();
281 $db->close();
llxFooter()
Empty footer.
Definition: wrapper.php:58
setEventMessages($mesg, $mesgs, $style='mesgs')
Set event messages in dol_events session object.
dol_fiche_head($links=array(), $active='0', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='')
Show tab header of a card.
Class to manage contact/addresses.
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.
Class to manage Dolibarr users.
Definition: user.class.php:39
const TYPE_REPLACEMENT
Replacement invoice.
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 suppliers invoices.
if(empty($reshook)) $form
View.
Definition: perms.php:103
GETPOST($paramname, $check='none', $method=0, $filter=NULL, $options=NULL, $noreplace=0)
Return value of a param into GET or POST supervariable.
Class to build HTML component for third parties management Only common components are here...
Class to manage generation of HTML components Only common components must be here.
Class to manage projects.
if($_POST["cancel"]==$langs->trans("Cancel")&&!$id) if($action== 'setdatev'&&$user->rights->tax->charges->creer) if($action== 'add'&&$_POST["cancel"]<> $langs->trans("Cancel")) if($action== 'delete') $title
Actions.
Definition: card.php:183
dol_fiche_end($notab=0)
Show tab footer of a card.
llxHeader()
Empty header.
Definition: wrapper.php:46
facturefourn_prepare_head($object)
Prepare array with list of tabs.
Definition: fourn.lib.php:34
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages...
const TYPE_CREDIT_NOTE
Credit note invoice.
print
Draft customers invoices.
Definition: index.php:91
restrictedArea($user, $features, $objectid=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $objcanvas=null)
Check permissions of a user to show a page and an object.