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) 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.'/core/lib/contract.lib.php';
29 require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
30 require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
32 if (! empty($conf->projet->enabled)) {
33  require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
34 }
35 
36 
37 $langs->load("contracts");
38 $langs->load("companies");
39 
40 $action=GETPOST('action','alpha');
41 $confirm=GETPOST('confirm','alpha');
42 $socid = GETPOST('socid','int');
43 $id = GETPOST('id','int');
44 $ref=GETPOST('ref','alpha');
45 
46 // Security check
47 if ($user->societe_id) $socid=$user->societe_id;
48 $result=restrictedArea($user,'contrat',$id);
49 
50 $object = new Contrat($db);
51 
52 
53 // Add new contact
54 
55 if ($action == 'addcontact' && $user->rights->contrat->creer)
56 {
57  $result = $object->fetch($id);
58 
59  if ($result > 0 && $id > 0)
60  {
61  $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
62  $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
63  }
64 
65  if ($result >= 0)
66  {
67  header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
68  exit;
69  }
70  else
71  {
72  if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
73  $langs->load("errors");
74  $msg = $langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType");
75  } else {
76  $mesg = $object->error;
77  }
78 
79  setEventMessages($mesg, null, 'errors');
80  }
81 }
82 
83 // bascule du statut d'un contact
84 if ($action == 'swapstatut' && $user->rights->contrat->creer)
85 {
86  if ($object->fetch($id))
87  {
88  $result=$object->swapContactStatus(GETPOST('ligne'));
89  }
90  else
91  {
92  dol_print_error($db,$object->error);
93  }
94 }
95 
96 // Delete contact
97 if ($action == 'deletecontact' && $user->rights->contrat->creer)
98 {
99  $object->fetch($id);
100  $result = $object->delete_contact($_GET["lineid"]);
101 
102  if ($result >= 0)
103  {
104  header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
105  exit;
106  }
107 }
108 
109 
110 /*
111  * View
112  */
113 
114 llxHeader('',$langs->trans("Contract"),"");
115 
116 $form = new Form($db);
117 $formcompany= new FormCompany($db);
118 $contactstatic=new Contact($db);
119 $userstatic=new User($db);
120 
121 /* *************************************************************************** */
122 /* */
123 /* Mode vue et edition */
124 /* */
125 /* *************************************************************************** */
126 
127 if ($id > 0 || ! empty($ref))
128 {
129  if ($object->fetch($id, $ref) > 0)
130  {
131  $object->fetch_thirdparty();
132 
133  $head = contract_prepare_head($object);
134 
135  $hselected=1;
136 
137  dol_fiche_head($head, $hselected, $langs->trans("Contract"), -1, 'contract');
138 
139  // Contract card
140 
141  $linkback = '<a href="'.DOL_URL_ROOT.'/contrat/list.php?restore_lastsearch_values=1'.(! empty($socid)?'&socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
142 
143 
144  $morehtmlref='';
145  //if (! empty($modCodeContract->code_auto)) {
146  $morehtmlref.=$object->ref;
147  /*} else {
148  $morehtmlref.=$form->editfieldkey("",'ref',$object->ref,0,'string','',0,3);
149  $morehtmlref.=$form->editfieldval("",'ref',$object->ref,0,'string','',0,2);
150  }*/
151 
152  $morehtmlref.='<div class="refidno">';
153  // Ref customer
154  $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_customer', $object->ref_customer, $object, 0, 'string', '', 0, 1);
155  $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_customer', $object->ref_customer, $object, 0, 'string', '', null, null, '', 1);
156  // Ref supplier
157  $morehtmlref.='<br>';
158  $morehtmlref.=$form->editfieldkey("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, 0, 'string', '', 0, 1);
159  $morehtmlref.=$form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, 0, 'string', '', null, null, '', 1);
160  // Thirdparty
161  $morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1);
162  // Project
163  if (! empty($conf->projet->enabled))
164  {
165  $langs->load("projects");
166  $morehtmlref.='<br>'.$langs->trans('Project') . ' ';
167  if ($user->rights->contrat->creer)
168  {
169  if ($action != 'classify')
170  //$morehtmlref.='<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
171  $morehtmlref.=' : ';
172  if ($action == 'classify') {
173  //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
174  $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
175  $morehtmlref.='<input type="hidden" name="action" value="classin">';
176  $morehtmlref.='<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
177  $morehtmlref.=$formproject->select_projects($object->thirdparty->id, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1);
178  $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
179  $morehtmlref.='</form>';
180  } else {
181  $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->thirdparty->id, $object->fk_project, 'none', 0, 0, 0, 1);
182  }
183  } else {
184  if (! empty($object->fk_project)) {
185  $proj = new Project($db);
186  $proj->fetch($object->fk_project);
187  $morehtmlref.='<a href="'.DOL_URL_ROOT.'/projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">';
188  $morehtmlref.=$proj->ref;
189  $morehtmlref.='</a>';
190  } else {
191  $morehtmlref.='';
192  }
193  }
194  }
195  $morehtmlref.='</div>';
196 
197 
198  dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'none', $morehtmlref);
199 
200 
201  print '<div class="fichecenter">';
202  print '<div class="underbanner clearboth"></div>';
203 
204  print '<table class="border" width="100%">';
205 
206 
207  // Ligne info remises tiers
208  print '<tr><td class="titlefield">'.$langs->trans('Discount').'</td><td colspan="3">';
209  if ($object->thirdparty->remise_percent) print $langs->trans("CompanyHasRelativeDiscount",$object->thirdparty->remise_percent);
210  else print $langs->trans("CompanyHasNoRelativeDiscount");
211  $absolute_discount=$object->thirdparty->getAvailableDiscounts();
212  print '. ';
213  if ($absolute_discount) print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->trans("Currency".$conf->currency));
214  else print $langs->trans("CompanyHasNoAbsoluteDiscount");
215  print '.';
216  print '</td></tr>';
217 
218  // Date
219  print '<tr>';
220  print '<td class="titlefield">';
221  print $form->editfieldkey("Date",'date_contrat',$object->date_contrat,$object,0);
222  print '</td><td>';
223  print $form->editfieldval("Date",'date_contrat',$object->date_contrat,$object,0,'datehourpicker');
224  print '</td>';
225  print '</tr>';
226 
227  print "</table>";
228 
229  print '</div>';
230 
231  dol_fiche_end();
232 
233  print '<br>';
234 
235  // Contacts lines
236  include DOL_DOCUMENT_ROOT.'/core/tpl/contacts.tpl.php';
237 
238  }
239  else
240  {
241  print "ErrorRecordNotFound";
242  }
243 }
244 
245 
246 llxFooter();
247 $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
Class to manage contracts.
contract_prepare_head(Contrat $object)
Prepare array with list of tabs.
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
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.
dol_fiche_end($notab=0)
Show tab footer of a card.
llxHeader()
Empty header.
Definition: wrapper.php:46
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...
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.