dolibarr 21.0.0-alpha
societecontact.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-2015 Philippe Grand <philippe.grand@atoo-net.com>
6 * Copyright (C) 2014 Charles-Fr Benke <charles.fr@benke.fr>
7 * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 3 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 */
22
31// Load Dolibarr environment
32require '../main.inc.php';
33require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
34require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
35require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
36require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
37
38// Load translation files required by the page
39$langs->loadLangs(array('companies', 'orders'));
40
41// Get parameters
42$id = GETPOSTINT('id') ? GETPOSTINT('id') : GETPOSTINT('socid');
43$ref = GETPOST('ref', 'alpha');
44$action = GETPOST('action', 'aZ09');
45$massaction = GETPOST('massaction', 'alpha');
46
47$limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit;
48$sortfield = GETPOST('sortfield', 'aZ09comma');
49$sortorder = GETPOST('sortorder', 'aZ09comma');
50$page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page");
51if (!$sortorder) {
52 $sortorder = "ASC";
53}
54if (!$sortfield) {
55 $sortfield = "s.nom";
56}
57if (empty($page) || $page == -1 || !empty($search_btn) || !empty($search_remove_btn) || (empty($toselect) && $massaction === '0')) {
58 $page = 0;
59}
60$offset = $limit * $page;
61$pageprev = $page - 1;
62$pagenext = $page + 1;
63
64// Security check
65if ($user->socid) {
66 $socid = $user->socid;
67}
68$result = restrictedArea($user, 'societe', $id, '');
69
70
71// Initialize objects
72$object = new Societe($db);
73
74// Initialize a technical object to manage hooks of page. Note that conf->hooks_modules contains an array of hook context
75$hookmanager->initHooks(array('contactthirdparty', 'globalcard'));
76
77
78/*
79 * Actions
80 */
81
82if ($action == 'addcontact' && $user->hasRight('societe', 'creer')) {
83 $result = $object->fetch($id);
84
85 if ($result > 0 && $id > 0) {
86 $contactid = (GETPOSTINT('userid') ? GETPOSTINT('userid') : GETPOSTINT('contactid'));
87 $typeid = (GETPOST('typecontact') ? GETPOST('typecontact') : GETPOST('type'));
88 $result = $object->add_contact($contactid, $typeid, GETPOST("source", 'aZ09'));
89 }
90
91 if ($result >= 0) {
92 header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
93 exit;
94 } else {
95 if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
96 $langs->load("errors");
97 $mesg = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>';
98 } else {
99 $mesg = '<div class="error">'.$object->error.'</div>';
100 }
101 }
102} elseif ($action == 'swapstatut' && $user->hasRight('societe', 'creer')) {
103 // bascule du statut d'un contact
104 if ($object->fetch($id)) {
105 $result = $object->swapContactStatus(GETPOSTINT('ligne'));
106 } else {
107 dol_print_error($db);
108 }
109} elseif ($action == 'deletecontact' && $user->hasRight('societe', 'creer')) {
110 // Efface un contact
111 $object->fetch($id);
112 $result = $object->delete_contact(GETPOSTINT("lineid"));
113
114 if ($result >= 0) {
115 header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
116 exit;
117 } else {
118 dol_print_error($db);
119 }
120}
121
122
123/*
124 * View
125 */
126
127$help_url = 'EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas';
128llxHeader('', $langs->trans("ThirdParty"), $help_url);
129
130
131$form = new Form($db);
132$formcompany = new FormCompany($db);
133$formother = new FormOther($db);
134$contactstatic = new Contact($db);
135$userstatic = new User($db);
136
137
138// View and edit
139
140if ($id > 0 || !empty($ref)) {
141 if ($object->fetch($id, $ref) > 0) {
142 $head = societe_prepare_head($object);
143 print dol_get_fiche_head($head, 'contactext', $langs->trans("ThirdParty"), -1, 'company');
144
145 print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';
146 print '<input type="hidden" name="token" value="'.newToken().'">';
147
148 $linkback = '<a href="'.DOL_URL_ROOT.'/societe/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
149
150 dol_banner_tab($object, 'socid', $linkback, ($user->socid ? 0 : 1), 'rowid', 'nom');
151
152 print '<div class="fichecenter">';
153
154 print '<div class="underbanner clearboth"></div>';
155 print '<table class="border centpercent">';
156
157 // Prospect/Customer
158 /*print '<tr><td class="titlefield">'.$langs->trans('ProspectCustomer').'</td><td>';
159 print $object->getLibCustProspStatut();
160 print '</td></tr>';
161
162 // Supplier
163 print '<tr><td>'.$langs->trans('Supplier').'</td><td>';
164 print yn($object->fournisseur);
165 print '</td></tr>';*/
166
167 if (getDolGlobalString('SOCIETE_USEPREFIX')) { // Old not used prefix field
168 print '<tr><td>'.$langs->trans('Prefix').'</td><td colspan="3">'.$object->prefix_comm.'</td></tr>';
169 }
170
171 if ($object->client) {
172 print '<tr><td class="titlefield">';
173 print $langs->trans('CustomerCode').'</td><td colspan="3">';
174 print $object->code_client;
175 $tmpcheck = $object->check_codeclient();
176 if ($tmpcheck != 0 && $tmpcheck != -5) {
177 print ' <span class="error">('.$langs->trans("WrongCustomerCode").')</span>';
178 }
179 print '</td></tr>';
180 }
181
182 if ($object->fournisseur) {
183 print '<tr><td class="titlefield">';
184 print $langs->trans('SupplierCode').'</td><td colspan="3">';
185 print $object->code_fournisseur;
186 $tmpcheck = $object->check_codefournisseur();
187 if ($tmpcheck != 0 && $tmpcheck != -5) {
188 print ' <span class="error">('.$langs->trans("WrongSupplierCode").')</span>';
189 }
190 print '</td></tr>';
191 }
192 print '</table>';
193
194 print '</div>';
195
196 print '</form>';
197 print '<br>';
198
199 // Contacts lines (modules that overwrite templates must declare this into descriptor)
200 $dirtpls = array_merge($conf->modules_parts['tpl'], array('/core/tpl'));
201 foreach ($dirtpls as $reldir) {
202 $res = @include dol_buildpath($reldir.'/contacts.tpl.php');
203 if ($res) {
204 break;
205 }
206 }
207
208 // additional list with adherents of company
209 if (isModEnabled('member') && $user->hasRight('adherent', 'lire')) {
210 require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
211 require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php';
212
213 $membertypestatic = new AdherentType($db);
214 $memberstatic = new Adherent($db);
215
216 $langs->load("members");
217 $sql = "SELECT d.rowid, d.login, d.lastname, d.firstname, d.societe as company, d.fk_soc,";
218 $sql .= " d.datefin,";
219 $sql .= " d.email, d.fk_adherent_type as type_id, d.morphy, d.statut,";
220 $sql .= " t.libelle as type_label, t.subscription";
221 $sql .= " FROM ".MAIN_DB_PREFIX."adherent as d";
222 $sql .= ", ".MAIN_DB_PREFIX."adherent_type as t";
223 $sql .= " WHERE d.fk_soc = ".((int) $id);
224 $sql .= " AND d.fk_adherent_type = t.rowid";
225
226 dol_syslog("get list sql=".$sql);
227 $resql = $db->query($sql);
228 if ($resql) {
229 $num = $db->num_rows($resql);
230
231 if ($num > 0) {
232 $param = '';
233
234 $titre = $langs->trans("MembersListOfTiers");
235 print '<br>';
236
237 print_barre_liste($titre, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, 0, '');
238
239 print "<table class=\"noborder\" width=\"100%\">";
240 print '<tr class="liste_titre">';
241 print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "d.rowid", $param, "", "", $sortfield, $sortorder);
242 print_liste_field_titre("NameSlashCompany", $_SERVER["PHP_SELF"], "d.lastname", $param, "", "", $sortfield, $sortorder);
243 print_liste_field_titre("Login", $_SERVER["PHP_SELF"], "d.login", $param, "", "", $sortfield, $sortorder);
244 print_liste_field_titre("Type", $_SERVER["PHP_SELF"], "t.libelle", $param, "", "", $sortfield, $sortorder);
245 print_liste_field_titre("Person", $_SERVER["PHP_SELF"], "d.morphy", $param, "", "", $sortfield, $sortorder);
246 print_liste_field_titre("EMail", $_SERVER["PHP_SELF"], "d.email", $param, "", "", $sortfield, $sortorder);
247 print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "d.statut,d.datefin", $param, "", "", $sortfield, $sortorder);
248 print_liste_field_titre("EndSubscription", $_SERVER["PHP_SELF"], "d.datefin", $param, "", '', $sortfield, $sortorder, 'center ');
249 print "</tr>\n";
250
251 $i = 0;
252 while ($i < $num && $i < $conf->liste_limit) {
253 $objp = $db->fetch_object($resql);
254
255 $datefin = $db->jdate($objp->datefin);
256 $memberstatic->id = $objp->rowid;
257 $memberstatic->ref = $objp->rowid;
258 $memberstatic->lastname = $objp->lastname;
259 $memberstatic->firstname = $objp->firstname;
260 $memberstatic->statut = $objp->statut;
261 $memberstatic->datefin = $db->jdate($objp->datefin);
262
263 $companyname = $objp->company;
264
265 print '<tr class="oddeven">';
266
267 // Ref
268 print "<td>";
269 print $memberstatic->getNomUrl(1);
270 print "</td>\n";
271
272 // Lastname
273 print "<td><a href=\"card.php?rowid=$objp->rowid\">";
274 print((!empty($objp->lastname) || !empty($objp->firstname)) ? dol_trunc($memberstatic->getFullName($langs)) : '');
275 print(((!empty($objp->lastname) || !empty($objp->firstname)) && !empty($companyname)) ? ' / ' : '');
276 print(!empty($companyname) ? dol_trunc($companyname, 32) : '');
277 print "</a></td>\n";
278
279 // Login
280 print "<td>".$objp->login."</td>\n";
281
282 // Type
283 $membertypestatic->id = $objp->type_id;
284 $membertypestatic->libelle = $objp->type_label; // deprecated
285 $membertypestatic->label = $objp->type_label;
286
287 print '<td class="nowrap">';
288 print $membertypestatic->getNomUrl(1, 32);
289 print '</td>';
290
291 // Moral/Physique
292 print "<td>".$memberstatic->getmorphylib($objp->morphy)."</td>\n";
293
294 // EMail
295 print "<td>".dol_print_email($objp->email, 0, 0, 1)."</td>\n";
296
297 // Statut
298 print '<td class="nowrap">';
299 print $memberstatic->LibStatut($objp->statut, $objp->subscription, $datefin, 2);
300 print "</td>";
301
302 // End of subscription date
303 if ($datefin) {
304 print '<td class="center nowrap">';
305 print dol_print_date($datefin, 'day');
306 if ($memberstatic->hasDelay()) {
307 print " ".img_warning($langs->trans("SubscriptionLate"));
308 }
309 print '</td>';
310 } else {
311 print '<td class="left nowrap">';
312 if (!empty($objp->subscription)) {
313 print $langs->trans("SubscriptionNotReceived");
314 if ($objp->statut > 0) {
315 print " ".img_warning();
316 }
317 } else {
318 print '&nbsp;';
319 }
320 print '</td>';
321 }
322
323 print "</tr>\n";
324 $i++;
325 }
326 print "</table>\n";
327 }
328 }
329 }
330 } else {
331 // Contrat non trouve
332 print "ErrorRecordNotFound";
333 }
334}
335
336// End of page
337llxFooter();
338$db->close();
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:58
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Definition wrapper.php:70
Class to manage members of a foundation.
Class to manage members type.
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.
Class permettant la generation de composants html autre Only common components are here.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage Dolibarr users.
societe_prepare_head(Societe $object)
Return array of tabs to used on pages for third parties cards.
llxFooter()
Footer empty.
Definition document.php:107
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
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_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
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.