dolibarr  19.0.0-dev
contact.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2005 Patrick Rouillon <patrick@rouillon.net>
3  * Copyright (C) 2005-2011 Laurent Destailleur <eldy@users.sourceforge.net>
4  * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
5  * Copyright (C) 2011-2022 Philippe Grand <philippe.grand@atoo-net.com>
6  * Copyright (C) 2021 Frédéric France <frederic.france@netlogic.fr>
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 <https://www.gnu.org/licenses/>.
20  */
21 
28 // Load Dolibarr environment
29 require '../main.inc.php';
30 require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
32 require_once DOL_DOCUMENT_ROOT.'/core/lib/order.lib.php';
33 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
34 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
35 require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
36 
37 // Load translation files required by the page
38 $langs->loadLangs(array('orders', 'sendings', 'companies', 'bills'));
39 
40 $id = GETPOST('id', 'int');
41 $ref = GETPOST('ref', 'alpha');
42 $action = GETPOST('action', 'aZ09');
43 
44 // Security check
45 if ($user->socid) {
46  $socid = $user->socid;
47 }
48 $result = restrictedArea($user, 'commande', $id, '');
49 
50 $usercancreate = $user->hasRight("commande", "creer");
51 
52 $object = new Commande($db);
53 
54 
55 /*
56  * Ajout d'un nouveau contact
57  */
58 
59 if ($action == 'addcontact' && $user->hasRight('commande', 'creer')) {
60  $result = $object->fetch($id);
61 
62  if ($result > 0 && $id > 0) {
63  $contactid = (GETPOST('userid', 'int') ? GETPOST('userid', 'int') : GETPOST('contactid', 'int'));
64  $typeid = (GETPOST('typecontact') ? GETPOST('typecontact') : GETPOST('type'));
65  $result = $object->add_contact($contactid, $typeid, GETPOST("source", 'aZ09'));
66  }
67 
68  if ($result >= 0) {
69  header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
70  exit;
71  } else {
72  if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
73  $langs->load("errors");
74  setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors');
75  } else {
76  setEventMessages($object->error, $object->errors, 'errors');
77  }
78  }
79 } elseif ($action == 'swapstatut' && $user->hasRight('commande', 'creer')) {
80  // bascule du statut d'un contact
81  if ($object->fetch($id)) {
82  $result = $object->swapContactStatus(GETPOST('ligne', 'int'));
83  } else {
84  dol_print_error($db);
85  }
86 } elseif ($action == 'deletecontact' && $user->hasRight('commande', 'creer')) {
87  // Efface un contact
88  $object->fetch($id);
89  $result = $object->delete_contact(GETPOST("lineid", 'int'));
90 
91  if ($result >= 0) {
92  header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
93  exit;
94  } else {
95  setEventMessages($object->error, $object->errors, 'errors');
96  }
97 }
98 
99 
100 /*
101  * View
102  */
103 $form = new Form($db);
104 $formcompany = new FormCompany($db);
105 $formother = new FormOther($db);
106 $contactstatic = new Contact($db);
107 $userstatic = new User($db);
108 
109 
110 /* *************************************************************************** */
111 /* */
112 /* Mode vue et edition */
113 /* */
114 /* *************************************************************************** */
115 
116 if ($id > 0 || !empty($ref)) {
117  if ($object->fetch($id, $ref) > 0) {
118  $object->fetch_thirdparty();
119 
120  $title = $object->ref." - ".$langs->trans('ContactsAddresses');
121  $help_url = 'EN:Customers_Orders|FR:Commandes_Clients|ES:Pedidos de clientes|DE:Modul_Kundenaufträge';
122  llxHeader('', $title, $help_url);
123 
124  $head = commande_prepare_head($object);
125  print dol_get_fiche_head($head, 'contact', $langs->trans("CustomerOrder"), -1, 'order');
126 
127  // Order card
128 
129  $linkback = '<a href="'.DOL_URL_ROOT.'/commande/list.php?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
130 
131  $morehtmlref = '<div class="refidno">';
132  // Ref customer
133  $morehtmlref .= $form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1);
134  $morehtmlref .= $form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1);
135  // Thirdparty
136  $morehtmlref .= '<br>'.$object->thirdparty->getNomUrl(1);
137  // Project
138  if (isModEnabled('project')) {
139  $langs->load("projects");
140  $morehtmlref .= '<br>';
141  if (0) {
142  $morehtmlref .= img_picto($langs->trans("Project"), 'project', 'class="pictofixedwidth"');
143  if ($action != 'classify') {
144  $morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> ';
145  }
146  $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, ($action == 'classify' ? 'projectid' : 'none'), 0, 0, 0, 1, '', 'maxwidth300');
147  } else {
148  if (!empty($object->fk_project)) {
149  $proj = new Project($db);
150  $proj->fetch($object->fk_project);
151  $morehtmlref .= $proj->getNomUrl(1);
152  if ($proj->title) {
153  $morehtmlref .= '<span class="opacitymedium"> - '.dol_escape_htmltag($proj->title).'</span>';
154  }
155  }
156  }
157  }
158  $morehtmlref .= '</div>';
159 
160  dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref, '', 0, '', '', 1);
161 
162  print dol_get_fiche_end();
163 
164  print '<br>';
165 
166  // Contacts lines (modules that overwrite templates must declare this into descriptor)
167  $dirtpls = array_merge($conf->modules_parts['tpl'], array('/core/tpl'));
168  foreach ($dirtpls as $reldir) {
169  $res = @include dol_buildpath($reldir.'/contacts.tpl.php');
170  if ($res) {
171  break;
172  }
173  }
174  } else {
175  // Contact not found
176  print "ErrorRecordNotFound";
177  }
178 }
179 
180 
181 // End of page
182 llxFooter();
183 $db->close();
if(GETPOST('button_removefilter_x', 'alpha')||GETPOST('button_removefilter.x', 'alpha')||GETPOST('button_removefilter', 'alpha')) if(GETPOST('button_search_x', 'alpha')||GETPOST('button_search.x', 'alpha')||GETPOST('button_search', 'alpha')) if($action=="save" &&empty($cancel)) $help_url
View.
Definition: agenda.php:118
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:56
llxFooter()
Empty footer.
Definition: wrapper.php:70
Class to manage customers orders.
Class to manage contact/addresses.
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.
Classe permettant la generation de composants html autre Only common components are here.
Class to manage projects.
Class to manage Dolibarr users.
Definition: user.class.php:48
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
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_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_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_get_fiche_end($notab=0)
Return tab footer of a card.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
newToken()
Return the value of token currently saved into session with name 'newtoken'.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
isModEnabled($module)
Is Dolibarr module enabled.
img_edit($titlealt='default', $float=0, $other='')
Show logo editer/modifier fiche.
commande_prepare_head(Commande $object)
Prepare array with list of tabs.
Definition: order.lib.php:34
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.