33require
"../main.inc.php";
41require_once DOL_DOCUMENT_ROOT.
'/core/lib/contact.lib.php';
42require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
44require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/contact/class/contact.class.php';
47$optioncss =
GETPOST(
'optioncss',
'aZ');
48$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') : str_replace(
'_',
'', basename(dirname(__FILE__)).basename(__FILE__,
'.php'));
50$action =
GETPOST(
'action',
'aZ');
57if (empty(
$object->thirdparty)) {
60$socid = !empty(
$object->thirdparty->id) ?
$object->thirdparty->id :
null;
64$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
65$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
67if (empty($page) || $page < 0 ||
GETPOST(
'button_search',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
71$offset = $limit * $page;
78 $sortfield =
'dateprint';
83$sprod_fulldescr =
GETPOST(
"sprod_fulldescr");
88if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
90 $sprod_fulldescr =
'';
95$thirdTypeSelect =
GETPOST(
"third_select_id");
96$type_element = GETPOSTISSET(
'type_element') ?
GETPOST(
'type_element') :
'';
99$langs->loadLangs(array(
"companies",
"bills",
"orders",
"suppliers",
"propal",
"interventions",
"contracts",
"products"));
102$hookmanager->initHooks(array(
'consumptioncontact'));
111$parameters = array(
'id' => $id);
112$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
126$title = $langs->trans(
"ContactRelatedItems");
127$help_url =
'EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas';
129llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'mod-societe page-contact-card_consumption');
137print
dol_get_fiche_head($head,
'consumption', $langs->trans(
"ContactsAddresses"), -1,
'contact');
139$linkback =
'<a href="'.DOL_URL_ROOT.
'/contact/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
141$morehtmlref =
'<a href="'.DOL_URL_ROOT.
'/contact/vcard.php?id='.
$object->id.
'" class="refid">';
142$morehtmlref .=
img_picto($langs->trans(
"Download").
' '.$langs->trans(
"VCard"),
'vcard',
'class="valignmiddle marginleftonly paddingrightonly"');
143$morehtmlref .=
'</a>';
145$morehtmlref .=
'<div class="refidno">';
147 $objsoc->fetch($socid);
149 if ($objsoc->id > 0) {
150 $morehtmlref .= $objsoc->getNomUrl(1,
'contact');
152 $morehtmlref .=
'<span class="opacitymedium">'.$langs->trans(
"ContactNotLinkedToCompany").
'</span>';
155$morehtmlref .=
'</div>';
157dol_banner_tab($object,
'id', $linkback, ($user->socid ? 0 : 1),
'rowid',
'nom', $morehtmlref);
159print
'<div class="fichecenter">';
161print
'<div class="underbanner clearboth"></div>';
162print
'<table class="border centpercent tableforfield">';
166 print
'<tr><td class="titlefield">'.$langs->trans(
"UserTitle").
'</td><td>';
167 print
$object->getCivilityLabel();
171$thirdTypeArray = array();
172$elementTypeArray = array();
174if (!empty(
$object->thirdparty->client)) {
175 $thirdTypeArray[
'customer'] = $langs->trans(
"customer");
176 if (
isModEnabled(
"propal") && $user->hasRight(
'propal',
'lire')) {
177 $elementTypeArray[
'propal'] = $langs->transnoentitiesnoconv(
'Proposals');
179 if (
isModEnabled(
'order') && $user->hasRight(
'commande',
'lire')) {
180 $elementTypeArray[
'order'] = $langs->transnoentitiesnoconv(
'Orders');
182 if (
isModEnabled(
'invoice') && $user->hasRight(
'facture',
'lire')) {
183 $elementTypeArray[
'invoice'] = $langs->transnoentitiesnoconv(
'Invoices');
185 if (
isModEnabled(
'contract') && $user->hasRight(
'contrat',
'lire')) {
186 $elementTypeArray[
'contract'] = $langs->transnoentitiesnoconv(
'Contracts');
190if (
isModEnabled(
'intervention') && $user->hasRight(
'ficheinter',
'lire')) {
191 $elementTypeArray[
'fichinter'] = $langs->transnoentitiesnoconv(
'Interventions');
194if (!empty(
$object->thirdparty->fournisseur)) {
195 $thirdTypeArray[
'supplier'] = $langs->trans(
"supplier");
196 if ((
isModEnabled(
"fournisseur") && !
getDolGlobalString(
'MAIN_USE_NEW_SUPPLIERMOD') && $user->hasRight(
'fournisseur',
'facture',
'lire')) || (
isModEnabled(
"supplier_invoice") && $user->hasRight(
'supplier_invoice',
'lire'))) {
197 $elementTypeArray[
'supplier_invoice'] = $langs->transnoentitiesnoconv(
'SuppliersInvoices');
199 if ((
isModEnabled(
"fournisseur") && !
getDolGlobalString(
'MAIN_USE_NEW_SUPPLIERMOD') && $user->hasRight(
'fournisseur',
'commande',
'lire')) || (
isModEnabled(
"supplier_order") && $user->hasRight(
'supplier_order',
'lire'))) {
200 $elementTypeArray[
'supplier_order'] = $langs->transnoentitiesnoconv(
'SuppliersOrders');
215print
'<form method="POST" action="'.$_SERVER[
'PHP_SELF'].
'?id='.
$id.
'">';
216print
'<input type="hidden" name="token" value="'.newToken().
'">';
218$documentstatic =
null;
219$documentstaticline =
null;
225if ($type_element ==
'fichinter') {
226 require_once DOL_DOCUMENT_ROOT.
'/fichinter/class/fichinter.class.php';
228 $sql_select =
'SELECT f.rowid as doc_id, f.ref as doc_number, \'1\' as doc_type, f.datec as dateprint, f.fk_statut as status, tc.libelle as type_contact_label, ';
229 $tables_from = MAIN_DB_PREFIX.
'fichinterdet d';
230 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'fichinter as f ON d.fk_fichinter=f.rowid';
231 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=f.rowid AND ec.fk_socpeople = '.((int)
$object->id);
232 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
"c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='fichinter' and tc.source='external' and tc.active=1)";
233 $where =
' WHERE f.entity IN ('.getEntity(
'intervention').
')';
234 $dateprint =
'f.datec';
235 $doc_number =
'f.ref';
236} elseif ($type_element ==
'invoice') {
237 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
239 $sql_select =
'SELECT f.rowid as doc_id, f.ref as doc_number, f.type as doc_type, f.datef as dateprint, f.fk_statut as status, f.paye as paid, tc.libelle as type_contact_label, ';
240 $tables_from = MAIN_DB_PREFIX.
'facturedet d';
241 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'facture as f ON d.fk_facture=f.rowid';
242 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product p ON d.fk_product=p.rowid';
243 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=f.rowid AND ec.fk_socpeople = '.((int)
$object->id);
244 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
"c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='facture' and tc.source='external' and tc.active=1)";
245 $where =
" WHERE f.entity IN (".getEntity(
'invoice').
")";
246 $dateprint =
'f.datef';
247 $doc_number =
'f.ref';
248 $thirdTypeSelect =
'customer';
249} elseif ($type_element ==
'propal') {
250 require_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
252 $sql_select =
'SELECT c.rowid as doc_id, c.ref as doc_number, \'1\' as doc_type, c.datep as dateprint, c.fk_statut as status, tc.libelle as type_contact_label, ';
253 $tables_from = MAIN_DB_PREFIX.
'propaldet d';
254 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'propal as c ON d.fk_propal=c.rowid';
255 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product p ON d.fk_product=p.rowid';
256 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int)
$object->id);
257 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
"c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='propal' and tc.source='external' and tc.active=1)";
258 $where =
' WHERE c.entity IN ('.getEntity(
'propal').
')';
259 $dateprint =
'c.datep';
260 $doc_number =
'c.ref';
261 $thirdTypeSelect =
'customer';
262} elseif ($type_element ==
'order') {
263 require_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
265 $sql_select =
'SELECT c.rowid as doc_id, c.ref as doc_number, \'1\' as doc_type, c.date_commande as dateprint, c.fk_statut as status, tc.libelle as type_contact_label, ';
266 $tables_from = MAIN_DB_PREFIX.
'commandedet d';
267 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'commande as c ON d.fk_commande=c.rowid';
268 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product p ON d.fk_product=p.rowid';
269 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int)
$object->id);
270 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
"c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='commande' and tc.source='external' and tc.active=1)";
271 $where =
' WHERE c.entity IN ('.getEntity(
'order').
')';
272 $dateprint =
'c.date_commande';
273 $doc_number =
'c.ref';
274 $thirdTypeSelect =
'customer';
275} elseif ($type_element ==
'supplier_invoice') {
276 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
278 $sql_select =
'SELECT f.rowid as doc_id, f.ref as doc_number, \'1\' as doc_type, f.datef as dateprint, f.fk_statut as status, f.paye as paid, tc.libelle as type_contact_label, ';
279 $tables_from = MAIN_DB_PREFIX.
'facture_fourn_det d';
280 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'facture_fourn as f ON d.fk_facture_fourn=f.rowid';
281 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product p ON d.fk_product=p.rowid';
282 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=f.rowid AND ec.fk_socpeople = '.((int)
$object->id);
283 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
"c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='invoice_supplier' and tc.source='external' and tc.active=1)";
284 $where =
' WHERE f.entity IN ('.getEntity($documentstatic->element).
')';
285 $dateprint =
'f.datef';
286 $doc_number =
'f.ref';
287 $thirdTypeSelect =
'supplier';
300} elseif ($type_element ==
'supplier_order') {
301 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
303 $sql_select =
'SELECT c.rowid as doc_id, c.ref as doc_number, \'1\' as doc_type, c.date_valid as dateprint, c.fk_statut as status, tc.libelle as type_contact_label, ';
304 $tables_from = MAIN_DB_PREFIX.
'commande_fournisseurdet d';
305 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'commande_fournisseur as c ON d.fk_commande=c.rowid';
306 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product p ON d.fk_product=p.rowid';
307 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int)
$object->id);
308 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
"c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='order_supplier' and tc.source='external' and tc.active=1)";
309 $where =
' WHERE c.entity IN ('.getEntity($documentstatic->element).
')';
310 $dateprint =
'c.date_valid';
311 $doc_number =
'c.ref';
312 $thirdTypeSelect =
'supplier';
313} elseif ($type_element ==
'contract') {
314 require_once DOL_DOCUMENT_ROOT.
'/contrat/class/contrat.class.php';
317 $sql_select =
'SELECT c.rowid as doc_id, c.ref as doc_number, \'1\' as doc_type, c.date_contrat as dateprint, d.statut as status, tc.libelle as type_contact_label, ';
318 $tables_from = MAIN_DB_PREFIX.
'contratdet d';
319 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'contrat as c ON d.fk_contrat=c.rowid';
320 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product p ON d.fk_product=p.rowid';
321 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int)
$object->id);
322 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
"c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='contrat' and tc.source='external' and tc.active=1)";
323 $where =
' WHERE c.entity IN ('.getEntity(
'contrat').
')';
324 $dateprint =
'c.date_valid';
325 $doc_number =
'c.ref';
326 $thirdTypeSelect =
'customer';
329$parameters = array();
332$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters);
334if (!empty($sql_select)) {
336 $sql .=
' d.description as description';
337 if ($type_element !=
'fichinter' && $type_element !=
'contract' && $type_element !=
'supplier_proposal') {
338 $sql .=
', d.label, d.fk_product as product_id, d.fk_product as fk_product, d.info_bits, d.date_start, d.date_end, d.qty, d.qty as prod_qty, d.total_ht as total_ht, ';
340 if ($type_element ==
'supplier_proposal') {
341 $sql .=
', d.label, d.fk_product as product_id, d.fk_product as fk_product, d.info_bits, d.qty, d.qty as prod_qty, d.total_ht as total_ht, ';
343 if ($type_element ==
'contract') {
344 $sql .=
', d.label, d.fk_product as product_id, d.fk_product as fk_product, d.info_bits, d.date_ouverture as date_start, d.date_cloture as date_end, d.qty, d.qty as prod_qty, d.total_ht as total_ht, ';
346 if ($type_element !=
'fichinter') {
347 $sql .=
' p.ref as ref, p.rowid as prod_id, p.rowid as fk_product, p.fk_product_type as prod_type, p.fk_product_type as fk_product_type, p.entity as pentity';
350 if ($type_element !=
'fichinter') {
351 $sql .=
", p.ref as prod_ref, p.label as product_label";
353 $sanitizedtablefrom = $tables_from;
354 $sql .=
" FROM ".$sanitizedtablefrom;
355 $sanitizedwhere = $where;
356 $sql .= $sanitizedwhere;
358 if ($sref && !empty($doc_number)) {
359 $sql .=
" AND ".$db->sanitize($doc_number).
" LIKE '%".
$db->escape($sref).
"%'";
361 if ($sprod_fulldescr) {
362 $sql .=
" AND (d.description LIKE '%".$db->escape($sprod_fulldescr).
"%'";
363 if (
GETPOST(
'type_element') !=
'fichinter') {
364 $sql .=
" OR p.ref LIKE '%".$db->escape($sprod_fulldescr).
"%'";
366 if (
GETPOST(
'type_element') !=
'fichinter') {
367 $sql .=
" OR p.label LIKE '%".$db->escape($sprod_fulldescr).
"%'";
371 $parameters = array(
'type_element' => $type_element);
372 $reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters, $object, $action);
373 $sql .= $hookmanager->resPrint;
374 $sql .=
$db->order($sortfield, $sortorder);
376 $resql =
$db->query($sql);
380 $totalnboflines =
$db->num_rows($resql);
382 $sql .=
$db->plimit($limit + 1, $offset);
387if (empty($elementTypeArray) && !
$object->thirdparty->client && !
$object->thirdparty->fournisseur) {
388 $showempty = $langs->trans(
"ThirdpartyNotCustomerNotSupplierSoNoRef");
393$typeElementString = $form->selectarray(
"type_element", $elementTypeArray,
GETPOST(
'type_element'), $showempty, 0, 0,
'', 0, 0, $disabled,
'',
'maxwidth150onsmartphone');
394$button =
'<input type="submit" class="button small" name="button_third" value="'.dol_escape_htmltag($langs->trans(
"Search")).
'" title="'.
dol_escape_htmltag($langs->trans(
"Search")).
'">';
397$param .=
"&sref=".urlencode($sref);
398$param .=
"&month=".urlencode($month);
399$param .=
"&year=".urlencode($year);
400$param .=
"&sprod_fulldescr=".urlencode($sprod_fulldescr);
402 $param .=
"&socid=".urlencode((
string) ($socid));
404$param .=
"&type_element=".urlencode($type_element);
408if ($sql_select && $documentstatic !==
null) {
409 $resql =
$db->query($sql);
414 $num =
$db->num_rows($resql);
416 $param = (!empty($socid) ?
"&socid=".urlencode((
string) ($socid)) :
"").
"&type_element=".urlencode((
string) ($type_element)).
"&id=".urlencode((
string) ($id));
417 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
418 $param .=
'&contextpage='.urlencode($contextpage);
420 if ($limit > 0 && $limit !=
$conf->liste_limit) {
421 $param .=
'&limit='.((int) $limit);
423 if ($sprod_fulldescr) {
424 $param .=
"&sprod_fulldescr=".urlencode($sprod_fulldescr);
427 $param .=
"&sref=".urlencode($sref);
430 $param .=
"&month=".urlencode((
string) ($month));
433 $param .=
"&year=".urlencode((
string) ($year));
435 if ($optioncss !=
'') {
436 $param .=
'&optioncss='.urlencode($optioncss);
439 print_barre_liste($langs->trans(
'ProductsIntoElements').
' '.$typeElementString.
' '.$button, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num, $totalnboflines,
'', 0,
'',
'nogreyscale', $limit);
441 print
'<div class="div-table-responsive-no-min">';
442 print
'<table class="liste centpercent">'.
"\n";
445 print
'<tr class="liste_titre">';
446 print
'<td class="liste_titre left">';
447 print
'<input class="flat" type="text" name="sref" size="8" value="'.$sref.
'">';
449 print
'<td class="liste_titre nowrap center">';
450 print $formother->select_month($month ? (
string) $month :
'-1',
'month', 1, 0,
'valignmiddle');
451 print $formother->selectyear($year ? (
string) $year :
'-1',
'year', 1, 20, 1);
453 print
'<td class="liste_titre center">';
455 print
'<td class="liste_titre left">';
456 print
'<input class="flat" type="text" name="sprod_fulldescr" size="15" value="'.dol_escape_htmltag($sprod_fulldescr).
'">';
458 print
'<td class="liste_titre center">';
460 print
'<td class="liste_titre center">';
462 print
'<td class="liste_titre center">';
464 print
'<td class="liste_titre maxwidthsearch">';
465 $searchpicto = $form->showFilterAndCheckAddButtons(0);
471 print
'<tr class="liste_titre">';
472 print_liste_field_titre(
'Ref', $_SERVER[
'PHP_SELF'],
'doc_number',
'', $param,
'', $sortfield, $sortorder,
'left ');
473 print_liste_field_titre(
'Date', $_SERVER[
'PHP_SELF'],
'dateprint',
'', $param,
'width="150"', $sortfield, $sortorder,
'center ');
474 print_liste_field_titre(
'Status', $_SERVER[
'PHP_SELF'],
'fk_statut',
'', $param,
'', $sortfield, $sortorder,
'center ');
476 print_liste_field_titre(
'ContactType', $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'left ');
477 print_liste_field_titre(
'Quantity', $_SERVER[
'PHP_SELF'],
'prod_qty',
'', $param,
'', $sortfield, $sortorder,
'right ');
478 print_liste_field_titre(
'TotalHT', $_SERVER[
'PHP_SELF'],
'total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
479 print_liste_field_titre(
'UnitPrice', $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
486 while (($objp =
$db->fetch_object($resql)) && $i < min($num, $limit)) {
487 $documentstatic->id = $objp->doc_id;
488 $documentstatic->ref = $objp->doc_number;
489 $documentstatic->type = $objp->doc_type;
491 $documentstatic->fk_statut = $objp->status;
492 $documentstatic->statut = $objp->status;
493 $documentstatic->status = $objp->status;
494 if ($type_element ==
'invoice' || $type_element ==
'supplier_invoice') {
495 $documentstatic->paye = $objp->paid;
496 $documentstatic->paid = $objp->paid;
499 if (is_object($documentstaticline)) {
500 $documentstaticline->statut = $objp->status;
503 print
'<tr class="oddeven">';
504 print
'<td class="nobordernopadding nowrap" width="100">';
505 print $documentstatic->getNomUrl(1);
507 print
'<td class="center" width="80">'.dol_print_date(
$db->jdate($objp->dateprint),
'day').
'</td>';
510 print
'<td class="center">';
511 if ($type_element ==
'contract') {
512 print $documentstaticline->getLibStatut(2);
514 print $documentstatic->getLibStatut(2);
526 if ($objp->fk_product > 0) {
529 $product_static->type = $objp->fk_product_type;
530 $product_static->id = $objp->fk_product;
531 $product_static->ref = $objp->ref;
532 $product_static->entity = $objp->pentity;
533 $text = $product_static->getNomUrl(1);
537 if ($objp->fk_product > 0) {
541 $prod->fetch($objp->fk_product);
543 $outputlangs = $langs;
545 if (empty($newlang) &&
GETPOST(
'lang_id',
'aZ09')) {
546 $newlang =
GETPOST(
'lang_id',
'aZ09');
548 if (empty($newlang)) {
549 $newlang =
$object->default_lang;
551 if (!empty($newlang)) {
553 $outputlangs->setDefaultLang($newlang);
556 $label = (!empty(
$prod->multilangs[$outputlangs->defaultlang][
"label"])) ?
$prod->multilangs[$outputlangs->defaultlang][
"label"] : $objp->product_label;
558 $label = $objp->product_label;
561 $text .=
' - '.(!empty($objp->label) ? $objp->label : $label);
565 if (($objp->info_bits & 2) == 2) {
566 print
'<a href="'.DOL_URL_ROOT.
'/comm/remx.php?id='.
$object->id.
'">';
568 print
img_object($langs->trans(
"ShowReduc"),
'reduc').
' ';
569 if ($objp->description ==
'(DEPOSIT)') {
570 $txt = $langs->trans(
"Deposit");
571 } elseif ($objp->description ==
'(EXCESS RECEIVED)') {
572 $txt = $langs->trans(
"ExcessReceived");
573 } elseif ($objp->description ==
'(EXCESS PAID)') {
574 $txt = $langs->trans(
"ExcessPaid");
579 if ($objp->description) {
580 if ($objp->description ==
'(CREDIT_NOTE)' && $objp->fk_remise_except > 0) {
582 $discount->fetch($objp->fk_remise_except);
583 echo($txt ?
' - ' :
'').$langs->transnoentities(
"DiscountFromCreditNote", $discount->getNomUrl(0));
585 if ($objp->description ==
'(EXCESS RECEIVED)' && $objp->fk_remise_except > 0) {
587 $discount->fetch($objp->fk_remise_except);
588 echo($txt ?
' - ' :
'').$langs->transnoentities(
"DiscountFromExcessReceived", $discount->getNomUrl(0));
589 } elseif ($objp->description ==
'(EXCESS PAID)' && $objp->fk_remise_except > 0) {
591 $discount->fetch($objp->fk_remise_except);
592 echo($txt ?
' - ' :
'').$langs->transnoentities(
"DiscountFromExcessPaid", $discount->getNomUrl(0));
593 } elseif ($objp->description ==
'(DEPOSIT)' && $objp->fk_remise_except > 0) {
595 $discount->fetch($objp->fk_remise_except);
596 echo($txt ?
' - ' :
'').$langs->transnoentities(
"DiscountFromDeposit", $discount->getNomUrl(0));
599 echo
' ('.dol_print_date($discount->datec).
')';
606 if ($objp->fk_product > 0) {
607 echo $form->textwithtooltip($text, $description, 3, 0,
'', (
string) $i, 0,
'');
614 print (!empty($objp->description) && $objp->description != $objp->product_label) ?
'<br>'.dol_htmlentitiesbr($objp->description) :
'';
617 if (!empty($objp->label) || !empty($objp->description)) {
619 $text =
img_object($langs->trans(
'Service'),
'service');
621 $text =
img_object($langs->trans(
'Product'),
'product');
624 if (!empty($objp->label)) {
625 $text .=
' <strong>'.$objp->label.
'</strong>';
626 echo $form->textwithtooltip($text,
dol_htmlentitiesbr($objp->description), 3, 0,
'', (
string) $i, 0,
'');
657 print
'<td>'.$objp->type_contact_label.
'</td>';
659 print
'<td class="right">'.$objp->prod_qty.
'</td>';
660 $total_qty += $objp->prod_qty;
662 print
'<td class="right">'.price($objp->total_ht).
'</td>';
663 $total_ht += $objp->total_ht;
665 print
'<td class="right">'.price($objp->total_ht / (empty($objp->prod_qty) ? 1 : $objp->prod_qty)).
'</td>';
671 print
'<tr class="liste_total">';
672 print
'<td>'.$langs->trans(
'Total').
'</td>';
673 print
'<td colspan="3"></td>';
675 print
'<td class="right">'.$total_qty.
'</td>';
676 print
'<td class="right">'.price($total_ht).
'</td>';
677 print
'<td class="right">'.price($total_ht / (empty($total_qty) ? 1 : $total_qty)).
'</td>';
682 print_barre_liste(
'', $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num);
685} elseif (empty($type_element) || $type_element == -1) {
686 print_barre_liste($langs->trans(
'ProductsIntoElements').
' '.$typeElementString.
' '.$button, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num,
'',
'', 0,
'',
'nogreyscale', $limit);
688 print
'<table class="liste centpercent">'.
"\n";
690 print
'<tr class="liste_titre">';
691 print_liste_field_titre(
'Ref', $_SERVER[
'PHP_SELF'],
'doc_number',
'', $param,
'', $sortfield, $sortorder,
'left ');
692 print_liste_field_titre(
'Date', $_SERVER[
'PHP_SELF'],
'dateprint',
'', $param,
'width="150"', $sortfield, $sortorder,
'center ');
693 print_liste_field_titre(
'Status', $_SERVER[
'PHP_SELF'],
'fk_status',
'', $param,
'', $sortfield, $sortorder,
'center ');
695 print_liste_field_titre(
'Quantity', $_SERVER[
'PHP_SELF'],
'prod_qty',
'', $param,
'', $sortfield, $sortorder,
'right ');
698 print
'<tr class="oddeven"><td colspan="5"><span class="opacitymedium">'.$langs->trans(
"SelectElementAndClick", $langs->transnoentitiesnoconv(
"Search")).
'</span></td></tr>';
702 print_barre_liste($langs->trans(
'ProductsIntoElements').
' '.$typeElementString.
' '.$button, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num,
'',
'', 0,
'',
'nogreyscale', $limit);
704 print
'<table class="liste centpercent">'.
"\n";
706 print
'<tr class="oddeven"><td colspan="5"><span class="opacitymedium">'.$langs->trans(
"FeatureNotYetAvailable").
'</span></td></tr>';
$id
Support class for third parties, contacts, members, users or resources.
if(! $sortfield) if(! $sortorder) $object
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
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.
Class to manage predefined suppliers products.
Class to manage customers orders.
Class to manage lines of contracts.
Class to manage absolute discounts.
Class to manage suppliers invoices.
Class to manage invoices.
Class to manage products or services.
Class to manage proposals.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage translations.
dolSqlDateFilter($datefield, $day_date, $month_date, $year_date, $excludefirstand=0, $gm=false)
Generate a SQL string to make a filter into a range (for second of date until last second of date).
print $script_file $mode $langs defaultlang(is_numeric($duration_value) ? " delay=". $duration_value :"").(is_numeric($duration_value2) ? " after cd cd cd description as description
Only used if Module[ID]Desc translation string is not found.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0, $nodefault=0)
Return value of a param into GET or POST supervariable.
get_date_range($date_start, $date_end, $format='', $outputlangs=null, $withparenthesis=1)
Format output for start and end date.
GETPOSTINT($paramname, $method=0, $nodefault=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_htmlentitiesbr($stringtoencode, $nl2brmode=0, $pagecodefrom='UTF-8', $removelasteolbr=1)
This function is called to encode a string into a HTML string but differs from htmlentities because a...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $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, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $morecssdiv='')
Show tabs of a record.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $allowothertags=array())
Show a picto called object_picto (generic function)
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
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.