31require
"../main.inc.php";
32require_once DOL_DOCUMENT_ROOT.
'/core/lib/contact.lib.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
35require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/contact/class/contact.class.php';
38$optioncss =
GETPOST(
'optioncss',
'aZ');
39$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') : str_replace(
'_',
'', basename(dirname(__FILE__)).basename(__FILE__,
'.php'));
47if (empty(
$object->thirdparty)) {
50$socid = !empty(
$object->thirdparty->id) ?
$object->thirdparty->id :
null;
54$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
55$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
57if (empty($page) || $page < 0 ||
GETPOST(
'button_search',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
61$offset = $limit * $page;
68 $sortfield =
'dateprint';
73$sprod_fulldescr =
GETPOST(
"sprod_fulldescr");
78if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
80 $sprod_fulldescr =
'';
85$thirdTypeSelect =
GETPOST(
"third_select_id");
86$type_element = GETPOSTISSET(
'type_element') ?
GETPOST(
'type_element') :
'';
89$langs->loadLangs(array(
"companies",
"bills",
"orders",
"suppliers",
"propal",
"interventions",
"contracts",
"products"));
92$hookmanager->initHooks(array(
'consumptioncontact'));
101$parameters = array(
'id' => $id);
102$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
111$form =
new Form($db);
113$productstatic =
new Product($db);
116$title = $langs->trans(
"ContactRelatedItems");
117$help_url =
'EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas';
119llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'mod-societe page-contact-card_consumption');
127print
dol_get_fiche_head($head,
'consumption', $langs->trans(
"ContactsAddresses"), -1,
'contact');
129$linkback =
'<a href="'.DOL_URL_ROOT.
'/contact/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
131$morehtmlref =
'<a href="'.DOL_URL_ROOT.
'/contact/vcard.php?id='.
$object->id.
'" class="refid">';
132$morehtmlref .=
img_picto($langs->trans(
"Download").
' '.$langs->trans(
"VCard"),
'vcard.png',
'class="valignmiddle marginleftonly paddingrightonly"');
133$morehtmlref .=
'</a>';
135$morehtmlref .=
'<div class="refidno">';
137 $objsoc->fetch($socid);
139 if ($objsoc->id > 0) {
140 $morehtmlref .= $objsoc->getNomUrl(1,
'contact');
142 $morehtmlref .=
'<span class="opacitymedium">'.$langs->trans(
"ContactNotLinkedToCompany").
'</span>';
145$morehtmlref .=
'</div>';
147dol_banner_tab($object,
'id', $linkback, ($user->socid ? 0 : 1),
'rowid',
'nom', $morehtmlref);
149print
'<div class="fichecenter">';
151print
'<div class="underbanner clearboth"></div>';
152print
'<table class="border centpercent tableforfield">';
155print
'<tr><td class="titlefield">'.$langs->trans(
"UserTitle").
'</td><td>';
156print
$object->getCivilityLabel();
159$thirdTypeArray = array();
160$elementTypeArray = array();
162if (!empty(
$object->thirdparty->client)) {
163 $thirdTypeArray[
'customer'] = $langs->trans(
"customer");
164 if (isModEnabled(
"propal") && $user->hasRight(
'propal',
'lire')) {
165 $elementTypeArray[
'propal'] = $langs->transnoentitiesnoconv(
'Proposals');
167 if (isModEnabled(
'order') && $user->hasRight(
'commande',
'lire')) {
168 $elementTypeArray[
'order'] = $langs->transnoentitiesnoconv(
'Orders');
170 if (isModEnabled(
'invoice') && $user->hasRight(
'facture',
'lire')) {
171 $elementTypeArray[
'invoice'] = $langs->transnoentitiesnoconv(
'Invoices');
173 if (isModEnabled(
'contract') && $user->hasRight(
'contrat',
'lire')) {
174 $elementTypeArray[
'contract'] = $langs->transnoentitiesnoconv(
'Contracts');
178if (isModEnabled(
'intervention') && $user->hasRight(
'ficheinter',
'lire')) {
179 $elementTypeArray[
'fichinter'] = $langs->transnoentitiesnoconv(
'Interventions');
182if (!empty(
$object->thirdparty->fournisseur)) {
183 $thirdTypeArray[
'supplier'] = $langs->trans(
"supplier");
184 if ((isModEnabled(
"fournisseur") && !
getDolGlobalString(
'MAIN_USE_NEW_SUPPLIERMOD') && $user->hasRight(
'fournisseur',
'facture',
'lire')) || (isModEnabled(
"supplier_invoice") && $user->hasRight(
'supplier_invoice',
'lire'))) {
185 $elementTypeArray[
'supplier_invoice'] = $langs->transnoentitiesnoconv(
'SuppliersInvoices');
187 if ((isModEnabled(
"fournisseur") && !
getDolGlobalString(
'MAIN_USE_NEW_SUPPLIERMOD') && $user->hasRight(
'fournisseur',
'commande',
'lire')) || (isModEnabled(
"supplier_order") && $user->hasRight(
'supplier_order',
'lire'))) {
188 $elementTypeArray[
'supplier_order'] = $langs->transnoentitiesnoconv(
'SuppliersOrders');
203print
'<form method="POST" action="'.$_SERVER[
'PHP_SELF'].
'?id='.
$id.
'">';
204print
'<input type="hidden" name="token" value="'.newToken().
'">';
207if ($type_element ==
'fichinter') {
208 require_once DOL_DOCUMENT_ROOT.
'/fichinter/class/fichinter.class.php';
210 $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, ';
211 $tables_from = MAIN_DB_PREFIX.
'fichinterdet d';
212 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'fichinter as f ON d.fk_fichinter=f.rowid';
213 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=f.rowid AND ec.fk_socpeople = '.((int)
$object->id);
214 $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)";
215 $where =
' WHERE f.entity IN ('.getEntity(
'intervention').
')';
216 $dateprint =
'f.datec';
217 $doc_number =
'f.ref';
218} elseif ($type_element ==
'invoice') {
219 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
220 $documentstatic =
new Facture($db);
221 $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, ';
222 $tables_from = MAIN_DB_PREFIX.
'facturedet d';
223 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'facture as f ON d.fk_facture=f.rowid';
224 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product p ON d.fk_product=p.rowid';
225 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=f.rowid AND ec.fk_socpeople = '.((int)
$object->id);
226 $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)";
227 $where =
" WHERE f.entity IN (".getEntity(
'invoice').
")";
228 $dateprint =
'f.datef';
229 $doc_number =
'f.ref';
230 $thirdTypeSelect =
'customer';
231} elseif ($type_element ==
'propal') {
232 require_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
233 $documentstatic =
new Propal($db);
234 $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, ';
235 $tables_from = MAIN_DB_PREFIX.
'propaldet d';
236 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'propal as c ON d.fk_propal=c.rowid';
237 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product p ON d.fk_product=p.rowid';
238 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int)
$object->id);
239 $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)";
240 $where =
' WHERE c.entity IN ('.getEntity(
'propal').
')';
241 $dateprint =
'c.datep';
242 $doc_number =
'c.ref';
243 $thirdTypeSelect =
'customer';
244} elseif ($type_element ==
'order') {
245 require_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
246 $documentstatic =
new Commande($db);
247 $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, ';
248 $tables_from = MAIN_DB_PREFIX.
'commandedet d';
249 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'commande as c ON d.fk_commande=c.rowid';
250 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product p ON d.fk_product=p.rowid';
251 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int)
$object->id);
252 $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)";
253 $where =
' WHERE c.entity IN ('.getEntity(
'order').
')';
254 $dateprint =
'c.date_commande';
255 $doc_number =
'c.ref';
256 $thirdTypeSelect =
'customer';
257} elseif ($type_element ==
'supplier_invoice') {
258 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
260 $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, ';
261 $tables_from = MAIN_DB_PREFIX.
'facture_fourn_det d';
262 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'facture_fourn as f ON d.fk_facture_fourn=f.rowid';
263 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product p ON d.fk_product=p.rowid';
264 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=f.rowid AND ec.fk_socpeople = '.((int)
$object->id);
265 $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)";
266 $where =
' WHERE f.entity IN ('.getEntity($documentstatic->element).
')';
267 $dateprint =
'f.datef';
268 $doc_number =
'f.ref';
269 $thirdTypeSelect =
'supplier';
282} elseif ($type_element ==
'supplier_order') {
283 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
285 $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, ';
286 $tables_from = MAIN_DB_PREFIX.
'commande_fournisseurdet d';
287 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'commande_fournisseur as c ON d.fk_commande=c.rowid';
288 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product p ON d.fk_product=p.rowid';
289 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int)
$object->id);
290 $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)";
291 $where =
' WHERE c.entity IN ('.getEntity($documentstatic->element).
')';
292 $dateprint =
'c.date_valid';
293 $doc_number =
'c.ref';
294 $thirdTypeSelect =
'supplier';
295} elseif ($type_element ==
'contract') {
296 require_once DOL_DOCUMENT_ROOT.
'/contrat/class/contrat.class.php';
297 $documentstatic =
new Contrat($db);
299 $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, ';
300 $tables_from = MAIN_DB_PREFIX.
'contratdet d';
301 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'contrat as c ON d.fk_contrat=c.rowid';
302 $tables_from .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'product p ON d.fk_product=p.rowid';
303 $tables_from .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int)
$object->id);
304 $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)";
305 $where =
' WHERE c.entity IN ('.getEntity(
'contrat').
')';
306 $dateprint =
'c.date_valid';
307 $doc_number =
'c.ref';
308 $thirdTypeSelect =
'customer';
311$parameters = array();
312$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters);
314if (!empty($sql_select)) {
316 $sql .=
' d.description as description';
317 if ($type_element !=
'fichinter' && $type_element !=
'contract' && $type_element !=
'supplier_proposal') {
318 $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, ';
320 if ($type_element ==
'supplier_proposal') {
321 $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, ';
323 if ($type_element ==
'contract') {
324 $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, ';
326 if ($type_element !=
'fichinter') {
327 $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';
330 if ($type_element !=
'fichinter') {
331 $sql .=
", p.ref as prod_ref, p.label as product_label";
333 $sql .=
" FROM ".$tables_from;
338 $sql .=
" AND ".$doc_number.
" LIKE '%".$db->escape($sref).
"%'";
340 if ($sprod_fulldescr) {
341 $sql .=
" AND (d.description LIKE '%".$db->escape($sprod_fulldescr).
"%'";
342 if (
GETPOST(
'type_element') !=
'fichinter') {
343 $sql .=
" OR p.ref LIKE '%".$db->escape($sprod_fulldescr).
"%'";
345 if (
GETPOST(
'type_element') !=
'fichinter') {
346 $sql .=
" OR p.label LIKE '%".$db->escape($sprod_fulldescr).
"%'";
350 $sql .= $db->order($sortfield, $sortorder);
351 $resql = $db->query($sql);
352 $totalnboflines = $db->num_rows($resql);
354 $sql .= $db->plimit($limit + 1, $offset);
359if (empty($elementTypeArray) && !
$object->thirdparty->client && !
$object->thirdparty->fournisseur) {
360 $showempty = $langs->trans(
"ThirdpartyNotCustomerNotSupplierSoNoRef");
365$typeElementString = $form->selectarray(
"type_element", $elementTypeArray,
GETPOST(
'type_element'), $showempty, 0, 0,
'', 0, 0, $disabled,
'',
'maxwidth150onsmartphone');
366$button =
'<input type="submit" class="button small" name="button_third" value="'.dol_escape_htmltag($langs->trans(
"Search")).
'" title="'.
dol_escape_htmltag($langs->trans(
"Search")).
'">';
369$param .=
"&sref=".urlencode($sref);
370$param .=
"&month=".urlencode($month);
371$param .=
"&year=".urlencode($year);
372$param .=
"&sprod_fulldescr=".urlencode($sprod_fulldescr);
374 $param .=
"&socid=".urlencode((
string) ($socid));
376$param .=
"&type_element=".urlencode($type_element);
381 $resql = $db->query($sql);
386 $num = $db->num_rows($resql);
388 $param = (!empty($socid) ?
"&socid=".urlencode((
string) ($socid)) :
"").
"&type_element=".urlencode((
string) ($type_element)).
"&id=".urlencode((
string) ($id));
389 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
390 $param .=
'&contextpage='.urlencode($contextpage);
392 if ($limit > 0 && $limit != $conf->liste_limit) {
393 $param .=
'&limit='.((int) $limit);
395 if ($sprod_fulldescr) {
396 $param .=
"&sprod_fulldescr=".urlencode($sprod_fulldescr);
399 $param .=
"&sref=".urlencode($sref);
402 $param .=
"&month=".urlencode((
string) ($month));
405 $param .=
"&year=".urlencode((
string) ($year));
407 if ($optioncss !=
'') {
408 $param .=
'&optioncss='.urlencode($optioncss);
411 print_barre_liste($langs->trans(
'ProductsIntoElements').
' '.$typeElementString.
' '.$button, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num, $totalnboflines,
'', 0,
'',
'', $limit);
413 print
'<div class="div-table-responsive-no-min">';
414 print
'<table class="liste centpercent">'.
"\n";
417 print
'<tr class="liste_titre">';
418 print
'<td class="liste_titre left">';
419 print
'<input class="flat" type="text" name="sref" size="8" value="'.$sref.
'">';
421 print
'<td class="liste_titre nowrap center">';
422 print $formother->select_month($month ? $month : -1,
'month', 1, 0,
'valignmiddle');
423 print $formother->selectyear($year ? $year : -1,
'year', 1, 20, 1);
425 print
'<td class="liste_titre center">';
427 print
'<td class="liste_titre left">';
428 print
'<input class="flat" type="text" name="sprod_fulldescr" size="15" value="'.dol_escape_htmltag($sprod_fulldescr).
'">';
430 print
'<td class="liste_titre center">';
432 print
'<td class="liste_titre center">';
434 print
'<td class="liste_titre center">';
436 print
'<td class="liste_titre maxwidthsearch">';
437 $searchpicto = $form->showFilterAndCheckAddButtons(0);
443 print
'<tr class="liste_titre">';
444 print_liste_field_titre(
'Ref', $_SERVER[
'PHP_SELF'],
'doc_number',
'', $param,
'', $sortfield, $sortorder,
'left ');
445 print_liste_field_titre(
'Date', $_SERVER[
'PHP_SELF'],
'dateprint',
'', $param,
'width="150"', $sortfield, $sortorder,
'center ');
446 print_liste_field_titre(
'Status', $_SERVER[
'PHP_SELF'],
'fk_statut',
'', $param,
'', $sortfield, $sortorder,
'center ');
448 print_liste_field_titre(
'ContactType', $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'left ');
449 print_liste_field_titre(
'Quantity', $_SERVER[
'PHP_SELF'],
'prod_qty',
'', $param,
'', $sortfield, $sortorder,
'right ');
450 print_liste_field_titre(
'TotalHT', $_SERVER[
'PHP_SELF'],
'total_ht',
'', $param,
'', $sortfield, $sortorder,
'right ');
451 print_liste_field_titre(
'UnitPrice', $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
458 while (($objp = $db->fetch_object($resql)) && $i < min($num, $limit)) {
459 $documentstatic->id = $objp->doc_id;
460 $documentstatic->ref = $objp->doc_number;
461 $documentstatic->type = $objp->doc_type;
463 $documentstatic->fk_statut = $objp->status;
464 $documentstatic->statut = $objp->status;
465 $documentstatic->status = $objp->status;
467 $documentstatic->paye = $objp->paid;
468 $documentstatic->paid = $objp->paid;
470 if (is_object($documentstaticline)) {
471 $documentstaticline->statut = $objp->status;
474 print
'<tr class="oddeven">';
475 print
'<td class="nobordernopadding nowrap" width="100">';
476 print $documentstatic->getNomUrl(1);
478 print
'<td class="center" width="80">'.dol_print_date($db->jdate($objp->dateprint),
'day').
'</td>';
481 print
'<td class="center">';
482 if ($type_element ==
'contract') {
483 print $documentstaticline->getLibStatut(2);
485 print $documentstatic->getLibStatut(2);
497 if ($objp->fk_product > 0) {
498 $product_static =
new Product($db);
500 $product_static->type = $objp->fk_product_type;
501 $product_static->id = $objp->fk_product;
502 $product_static->ref = $objp->ref;
503 $product_static->entity = $objp->pentity;
504 $text = $product_static->getNomUrl(1);
508 if ($objp->fk_product > 0) {
512 $prod->fetch($objp->fk_product);
514 $outputlangs = $langs;
516 if (empty($newlang) &&
GETPOST(
'lang_id',
'aZ09')) {
517 $newlang =
GETPOST(
'lang_id',
'aZ09');
519 if (empty($newlang)) {
520 $newlang =
$object->default_lang;
522 if (!empty($newlang)) {
524 $outputlangs->setDefaultLang($newlang);
527 $label = (!empty($prod->multilangs[$outputlangs->defaultlang][
"label"])) ? $prod->multilangs[$outputlangs->defaultlang][
"label"] : $objp->product_label;
529 $label = $objp->product_label;
532 $text .=
' - '.(!empty($objp->label) ? $objp->label : $label);
536 if (($objp->info_bits & 2) == 2) {
537 print
'<a href="'.DOL_URL_ROOT.
'/comm/remx.php?id='.
$object->id.
'">';
539 print
img_object($langs->trans(
"ShowReduc"),
'reduc').
' ';
540 if ($objp->description ==
'(DEPOSIT)') {
541 $txt = $langs->trans(
"Deposit");
542 } elseif ($objp->description ==
'(EXCESS RECEIVED)') {
543 $txt = $langs->trans(
"ExcessReceived");
544 } elseif ($objp->description ==
'(EXCESS PAID)') {
545 $txt = $langs->trans(
"ExcessPaid");
550 if ($objp->description) {
551 if ($objp->description ==
'(CREDIT_NOTE)' && $objp->fk_remise_except > 0) {
553 $discount->fetch($objp->fk_remise_except);
554 echo($txt ?
' - ' :
'').$langs->transnoentities(
"DiscountFromCreditNote", $discount->getNomUrl(0));
556 if ($objp->description ==
'(EXCESS RECEIVED)' && $objp->fk_remise_except > 0) {
558 $discount->fetch($objp->fk_remise_except);
559 echo($txt ?
' - ' :
'').$langs->transnoentities(
"DiscountFromExcessReceived", $discount->getNomUrl(0));
560 } elseif ($objp->description ==
'(EXCESS PAID)' && $objp->fk_remise_except > 0) {
562 $discount->fetch($objp->fk_remise_except);
563 echo($txt ?
' - ' :
'').$langs->transnoentities(
"DiscountFromExcessPaid", $discount->getNomUrl(0));
564 } elseif ($objp->description ==
'(DEPOSIT)' && $objp->fk_remise_except > 0) {
566 $discount->fetch($objp->fk_remise_except);
567 echo($txt ?
' - ' :
'').$langs->transnoentities(
"DiscountFromDeposit", $discount->getNomUrl(0));
570 echo
' ('.dol_print_date($discount->datec).
')';
577 if ($objp->fk_product > 0) {
578 echo $form->textwithtooltip($text, $description, 3,
'',
'', $i, 0,
'');
585 print (!empty($objp->description) && $objp->description != $objp->product_label) ?
'<br>'.dol_htmlentitiesbr($objp->description) :
'';
588 if (!empty($objp->label) || !empty($objp->description)) {
590 $text =
img_object($langs->trans(
'Service'),
'service');
592 $text =
img_object($langs->trans(
'Product'),
'product');
595 if (!empty($objp->label)) {
596 $text .=
' <strong>'.$objp->label.
'</strong>';
597 echo $form->textwithtooltip($text,
dol_htmlentitiesbr($objp->description), 3,
'',
'', $i, 0,
'');
628 print
'<td>'.$objp->type_contact_label.
'</td>';
630 print
'<td class="right">'.$objp->prod_qty.
'</td>';
631 $total_qty += $objp->prod_qty;
633 print
'<td class="right">'.price($objp->total_ht).
'</td>';
634 $total_ht += $objp->total_ht;
636 print
'<td class="right">'.price($objp->total_ht / (empty($objp->prod_qty) ? 1 : $objp->prod_qty)).
'</td>';
642 print
'<tr class="liste_total">';
643 print
'<td>'.$langs->trans(
'Total').
'</td>';
644 print
'<td colspan="3"></td>';
646 print
'<td class="right">'.$total_qty.
'</td>';
647 print
'<td class="right">'.price($total_ht).
'</td>';
648 print
'<td class="right">'.price($total_ht / (empty($total_qty) ? 1 : $total_qty)).
'</td>';
653 print_barre_liste(
'', $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num);
656} elseif (empty($type_element) || $type_element == -1) {
657 print_barre_liste($langs->trans(
'ProductsIntoElements').
' '.$typeElementString.
' '.$button, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num,
'',
'');
659 print
'<table class="liste centpercent">'.
"\n";
661 print
'<tr class="liste_titre">';
662 print_liste_field_titre(
'Ref', $_SERVER[
'PHP_SELF'],
'doc_number',
'', $param,
'', $sortfield, $sortorder,
'left ');
663 print_liste_field_titre(
'Date', $_SERVER[
'PHP_SELF'],
'dateprint',
'', $param,
'width="150"', $sortfield, $sortorder,
'center ');
664 print_liste_field_titre(
'Status', $_SERVER[
'PHP_SELF'],
'fk_status',
'', $param,
'', $sortfield, $sortorder,
'center ');
666 print_liste_field_titre(
'Quantity', $_SERVER[
'PHP_SELF'],
'prod_qty',
'', $param,
'', $sortfield, $sortorder,
'right ');
669 print
'<tr class="oddeven"><td colspan="5"><span class="opacitymedium">'.$langs->trans(
"SelectElementAndClick", $langs->transnoentitiesnoconv(
"Search")).
'</span></td></tr>';
673 print_barre_liste($langs->trans(
'ProductsIntoElements').
' '.$typeElementString.
' '.$button, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num,
'',
'');
675 print
'<table class="liste centpercent">'.
"\n";
677 print
'<tr class="oddeven"><td colspan="5"><span class="opacitymedium">'.$langs->trans(
"FeatureNotYetAvailable").
'</span></td></tr>';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
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.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
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)
Show picto whatever it's its name (generic function)
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_get_fiche_end($notab=0)
Return tab footer of a card.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
get_date_range($date_start, $date_end, $format='', $outputlangs=null, $withparenthesis=1)
Format output for start and end date.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
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.
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.