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-2009 Destailleur Laurent <eldy@users.sourceforge.net>
4  * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
5  * Copyright (C) 2011-2015 Philippe Grand <philippe.grand@atoo-net.com>
6  * Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <http://www.gnu.org/licenses/>.
20  */
21 
28 require '../../main.inc.php';
29 require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
30 require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php';
32 require_once DOL_DOCUMENT_ROOT.'/core/lib/invoice.lib.php';
33 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
34 if (! empty($conf->projet->enabled)) {
35  require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
36 }
37 
38 $langs->load("bills");
39 $langs->load("companies");
40 
41 $id = (GETPOST('id')?GETPOST('id','int'):GETPOST('facid','int')); // For backward compatibility
42 $ref = GETPOST('ref','alpha');
43 $lineid = GETPOST('lineid','int');
44 $socid = GETPOST('socid','int');
45 $action = GETPOST('action','alpha');
46 
47 // Security check
48 if ($user->societe_id) $socid=$user->societe_id;
49 $result = restrictedArea($user, 'facture', $id);
50 
51 $object = new Facture($db);
52 
53 
54 /*
55  * Add a new contact
56  */
57 
58 if ($action == 'addcontact' && $user->rights->facture->creer)
59 {
60  $result = $object->fetch($id);
61 
62  if ($result > 0 && $id > 0)
63  {
64  $contactid = (GETPOST('userid') ? GETPOST('userid','int') : GETPOST('contactid','int'));
65  $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
66  }
67 
68  if ($result >= 0)
69  {
70  header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
71  exit;
72  }
73  else
74  {
75  if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
76  {
77  $langs->load("errors");
78  setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors');
79  }
80  else
81  {
82  setEventMessages($object->error, $object->errors, 'errors');
83  }
84  }
85 }
86 
87 // Toggle the status of a contact
88 else if ($action == 'swapstatut' && $user->rights->facture->creer)
89 {
90  if ($object->fetch($id))
91  {
92  $result=$object->swapContactStatus(GETPOST('ligne'));
93  }
94  else
95  {
96  dol_print_error($db);
97  }
98 }
99 
100 // Deletes a contact
101 else if ($action == 'deletecontact' && $user->rights->facture->creer)
102 {
103  $object->fetch($id);
104  $result = $object->delete_contact($lineid);
105 
106  if ($result >= 0)
107  {
108  header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
109  exit;
110  }
111  else {
112  dol_print_error($db);
113  }
114 }
115 
116 
117 /*
118  * View
119  */
120 
121 $title = $langs->trans('InvoiceCustomer') . " - " . $langs->trans('ContactsAddresses');
122 $helpurl = "EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes";
123 llxHeader('', $title, $helpurl);
124 
125 $form = new Form($db);
126 $formcompany = new FormCompany($db);
127 $contactstatic=new Contact($db);
128 $userstatic=new User($db);
129 
130 
131 /* *************************************************************************** */
132 /* */
133 /* View and edit mode */
134 /* */
135 /* *************************************************************************** */
136 
137 if ($id > 0 || ! empty($ref))
138 {
139  if ($object->fetch($id, $ref) > 0)
140  {
141  $object->fetch_thirdparty();
142 
143  $head = facture_prepare_head($object);
144 
145  $totalpaye = $object->getSommePaiement();
146 
147  dol_fiche_head($head, 'contact', $langs->trans('InvoiceCustomer'), -1, 'bill');
148 
149  // Invoice content
150 
151  $linkback = '<a href="' . DOL_URL_ROOT . '/compta/facture/list.php?restore_lastsearch_values=1' . (! empty($socid) ? '&socid=' . $socid : '') . '">' . $langs->trans("BackToList") . '</a>';
152 
153  $morehtmlref='<div class="refidno">';
154  // Ref customer
155  $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1);
156  $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1);
157  // Thirdparty
158  $morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1);
159  // Project
160  if (! empty($conf->projet->enabled))
161  {
162  $langs->load("projects");
163  $morehtmlref.='<br>'.$langs->trans('Project') . ' ';
164  if ($user->rights->facture->creer)
165  {
166  if ($action != 'classify')
167  //$morehtmlref.='<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
168  $morehtmlref.=' : ';
169  if ($action == 'classify') {
170  //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
171  $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
172  $morehtmlref.='<input type="hidden" name="action" value="classin">';
173  $morehtmlref.='<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
174  $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1);
175  $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
176  $morehtmlref.='</form>';
177  } else {
178  $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1);
179  }
180  } else {
181  if (! empty($object->fk_project)) {
182  $proj = new Project($db);
183  $proj->fetch($object->fk_project);
184  $morehtmlref.='<a href="'.DOL_URL_ROOT.'/projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">';
185  $morehtmlref.=$proj->ref;
186  $morehtmlref.='</a>';
187  } else {
188  $morehtmlref.='';
189  }
190  }
191  }
192  $morehtmlref.='</div>';
193 
194  $object->totalpaye = $totalpaye; // To give a chance to dol_banner_tab to use already paid amount to show correct status
195 
196  dol_banner_tab($object, 'ref', $linkback, 1, 'facnumber', 'ref', $morehtmlref, '', 0, '', '', 1);
197 
198  dol_fiche_end();
199 
200  print '<br>';
201 
202  // Contacts lines (modules that overwrite templates must declare this into descriptor)
203  $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl'));
204  foreach($dirtpls as $reldir)
205  {
206  $res=@include dol_buildpath($reldir.'/contacts.tpl.php');
207  if ($res) break;
208  }
209 
210  }
211  else
212  {
213  // Record not found
214  print "ErrorRecordNotFound";
215  }
216 }
217 
218 
219 llxFooter();
220 $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
dol_print_error($db='', $error='', $errors=null)
Affiche message erreur system avec toutes les informations pour faciliter le diagnostic et la remonte...
if(empty($reshook)) $form
View.
Definition: perms.php:103
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
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
print
Draft customers invoices.
Definition: index.php:91
Class to manage invoices.
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.
facture_prepare_head($object)
Initialize the array of tabs for customer invoice.
Definition: invoice.lib.php:36