dolibarr  20.0.0-beta
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
32 require '../main.inc.php';
33 require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
34 require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
35 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
36 require_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");
51 if (!$sortorder) {
52  $sortorder = "ASC";
53 }
54 if (!$sortfield) {
55  $sortfield = "s.nom";
56 }
57 if (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
65 if ($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 technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
75 $hookmanager->initHooks(array('contactthirdparty', 'globalcard'));
76 
77 
78 /*
79  * Actions
80  */
81 
82 if ($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';
128 llxHeader('', $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 
140 if ($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
337 llxFooter();
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()
Empty header.
Definition: wrapper.php:55
llxFooter()
Empty footer.
Definition: wrapper.php:69
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.
Definition: user.class.php:50
societe_prepare_head(Societe $object)
Return array of tabs to used on pages for third parties cards.
Definition: company.lib.php:43
if(isModEnabled('invoice') && $user->hasRight('facture', 'lire')) if((isModEnabled('fournisseur') &&!getDolGlobalString('MAIN_USE_NEW_SUPPLIERMOD') && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') && $user->hasRight('don', 'lire')) if(isModEnabled('tax') && $user->hasRight('tax', 'charges', 'lire')) if(isModEnabled('invoice') &&isModEnabled('order') && $user->hasRight("commande", "lire") &&!getDolGlobalString('WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER')) $sql
Social contributions to pay.
Definition: index.php:745
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.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
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.