36 require
'../main.inc.php';
37 require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
39 require_once DOL_DOCUMENT_ROOT.
'/societe/class/client.class.php';
40 require_once DOL_DOCUMENT_ROOT.
'/contact/class/contact.class.php';
41 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
42 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
43 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
45 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
46 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture-rec.class.php';
49 require_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
52 require_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
55 require_once DOL_DOCUMENT_ROOT.
'/expedition/class/expedition.class.php';
58 require_once DOL_DOCUMENT_ROOT.
'/contrat/class/contrat.class.php';
61 require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
64 require_once DOL_DOCUMENT_ROOT.
'/fichinter/class/fichinter.class.php';
68 $langs->loadLangs(array(
'companies',
'banks'));
71 $langs->load(
"contracts");
74 $langs->load(
"orders");
77 $langs->load(
"sendings");
80 $langs->load(
"bills");
83 $langs->load(
"projects");
86 $langs->load(
"interventions");
89 $langs->load(
"mails");
92 $action =
GETPOST(
'action',
'aZ09');
96 $limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : $conf->liste_limit;
97 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
98 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
100 if (empty($page) || $page == -1) {
103 $offset = $limit * $page;
104 $pageprev = $page - 1;
105 $pagenext = $page + 1;
112 $cancel =
GETPOST(
'cancel',
'alpha');
114 $object =
new Client($db);
119 $extrafields->fetch_name_optionals_label($object->table_element);
122 $hookmanager->initHooks(array(
'thirdpartycomm',
'globalcard'));
126 if ($id > 0 && empty($object->id)) {
128 $res = $object->fetch($id);
129 if ($object->id < 0) {
133 if ($object->id > 0) {
134 if (!($object->client > 0) || !$user->hasRight(
'societe',
'lire')) {
140 if ($user->socid > 0) {
143 $result =
restrictedArea($user,
'societe', $object->id,
'&societe',
'',
'fk_soc',
'rowid', 0);
151 $reshook = $hookmanager->executeHooks(
'doActions',
$parameters, $object, $action);
156 if (empty($reshook)) {
162 if ($action ==
'setcustomeraccountancycode') {
163 $result = $object->fetch($id);
164 $object->code_compta_client =
GETPOST(
"customeraccountancycode");
165 $object->code_compta = $object->code_compta_client;
166 $result = $object->update($object->id, $user, 1, 1, 0);
173 if ($action ==
'setconditions' && $user->hasRight(
'societe',
'creer')) {
175 $result = $object->setPaymentTerms(
GETPOST(
'cond_reglement_id',
'int'),
GETPOST(
'cond_reglement_id_deposit_percent',
'alpha'));
182 if ($action ==
'setmode' && $user->hasRight(
'societe',
'creer')) {
184 $result = $object->setPaymentMethods(
GETPOST(
'mode_reglement_id',
'int'));
191 if ($action ==
'settransportmode' && $user->hasRight(
'societe',
'creer')) {
193 $result = $object->setTransportMode(
GETPOST(
'transport_mode_id',
'alpha'));
200 if ($action ==
'setbankaccount' && $user->hasRight(
'societe',
'creer')) {
202 $result = $object->setBankAccount(
GETPOST(
'fk_account',
'int'));
209 if ($action ==
'setshippingmethod' && $user->hasRight(
'societe',
'creer')) {
211 $result = $object->setShippingMethod(
GETPOST(
'shipping_method_id',
'int'));
218 if ($action ==
'setassujtva' && $user->hasRight(
'societe',
'creer')) {
220 $object->tva_assuj =
GETPOST(
'assujtva_value');
221 $result = $object->update($object->id);
228 if ($action ==
'setprospectlevel' && $user->hasRight(
'societe',
'creer')) {
230 $object->fk_prospectlevel =
GETPOST(
'prospect_level_id',
'alpha');
231 $result = $object->update($object->id, $user);
238 if ($action ==
'setstcomm') {
241 $result = $object->update($object->id, $user);
245 $result = $object->fetch($object->id);
250 if ($action ==
'setoutstanding_limit') {
252 $object->outstanding_limit =
GETPOST(
'outstanding_limit');
253 $result = $object->update($object->id, $user);
260 if ($action ==
'setorder_min_amount') {
262 $object->order_min_amount =
price2num(
GETPOST(
'order_min_amount',
'alpha'));
263 $result = $object->update($object->id, $user);
270 if ($action ==
'set_salesrepresentatives' && $user->hasRight(
'societe',
'creer')) {
272 $result = $object->setSalesRep(
GETPOST(
'commercial',
'array'));
275 if ($action ==
'update_extras') {
281 $ret = $extrafields->setOptionalsFromPost(
null, $object,
GETPOST(
'attribute',
'restricthtml'));
286 $result = $object->insertExtraFields(
'COMPANY_MODIFY');
293 $action =
'edit_extras';
298 if ($action ==
'setwarehouse' && $user->hasRight(
'societe',
'creer')) {
299 $result = $object->setWarehouse(
GETPOST(
'fk_warehouse',
'int'));
308 $contactstatic =
new Contact($db);
309 $userstatic =
new User($db);
313 $title = $langs->trans(
"ThirdParty").
" - ".$langs->trans(
'Customer');
314 if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match(
'/thirdpartynameonly/', $conf->global->MAIN_HTML_TITLE) && $object->name) {
315 $title = $object->name.
" - ".$langs->trans(
'Customer');
318 $help_url =
'EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas|DE:Modul_Geschäftspartner';
323 if ($object->id > 0) {
326 print
dol_get_fiche_head($head,
'customer', $langs->trans(
"ThirdParty"), -1,
'company');
328 $linkback =
'<a href="'.DOL_URL_ROOT.
'/societe/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
330 dol_banner_tab($object,
'socid', $linkback, ($user->socid ? 0 : 1),
'rowid',
'nom');
332 print
'<div class="fichecenter"><div class="fichehalfleft">';
334 print
'<div class="underbanner clearboth"></div>';
335 print
'<table class="border centpercent tableforfield">';
338 print
'<tr><td class="titlefield">'.$langs->trans(
'NatureOfThirdParty').
'</td><td>';
339 print $object->getTypeUrl(1);
343 if (!empty($conf->global->SOCIETE_USEPREFIX)) {
344 print
'<tr><td>'.$langs->trans(
"Prefix").
'</td><td>';
345 print ($object->prefix_comm ? $object->prefix_comm :
' ');
349 if ($object->client) {
350 $langs->load(
"compta");
353 print $langs->trans(
'CustomerCode').
'</td><td>';
355 $tmpcheck = $object->check_codeclient();
356 if ($tmpcheck != 0 && $tmpcheck != -5) {
357 print
' <span class="error">('.$langs->trans(
"WrongCustomerCode").
')</span>';
363 print
$form->editfieldkey(
"CustomerAccountancyCode",
'customeraccountancycode', $object->code_compta_client, $object, $user->hasRight(
'societe',
'creer'));
365 print
$form->editfieldval(
"CustomerAccountancyCode",
'customeraccountancycode', $object->code_compta_client, $object, $user->hasRight(
'societe',
'creer'));
386 if ($mysoc->country_code ==
'ES') {
388 if ($mysoc->localtax1_assuj ==
"1") {
389 print
'<tr><td class="nowrap">'.$langs->transcountry(
"LocalTax1IsUsed", $mysoc->country_code).
'</td><td>';
390 print
yn($object->localtax1_assuj);
393 if ($mysoc->localtax1_assuj ==
"1") {
394 print
'<tr><td class="nowrap">'.$langs->transcountry(
"LocalTax2IsUsed", $mysoc->country_code).
'</td><td>';
395 print
yn($object->localtax2_assuj);
401 print
'<tr><td class="nowrap">'.$langs->trans(
'VATIntra').
'</td><td>';
406 $langs->load(
'bills');
408 print
'<table width="100%" class="nobordernopadding"><tr><td>';
409 print $langs->trans(
'PaymentConditions');
411 if (($action !=
'editconditions') && $user->hasRight(
'societe',
'creer')) {
412 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editconditions&token='.
newToken().
'&socid='.$object->id.
'">'.
img_edit($langs->trans(
'SetConditions'), 1).
'</a></td>';
414 print
'</tr></table>';
416 if ($action ==
'editconditions') {
417 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->cond_reglement_id,
'cond_reglement_id', 1,
'', 1, $object->deposit_percent);
419 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->cond_reglement_id,
'none', 0,
'', 1, $object->deposit_percent);
425 print
'<tr><td class="nowrap">';
426 print
'<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
427 print $langs->trans(
'PaymentMode');
429 if (($action !=
'editmode') && $user->hasRight(
'societe',
'creer')) {
430 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editmode&token='.
newToken().
'&socid='.$object->id.
'">'.
img_edit($langs->trans(
'SetMode'), 1).
'</a></td>';
432 print
'</tr></table>';
434 if ($action ==
'editmode') {
435 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->mode_reglement_id,
'mode_reglement_id',
'CRDT', 1, 1);
437 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->mode_reglement_id,
'none');
444 print
'<tr><td class="nowrap">';
445 print
'<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
446 print $langs->trans(
'PaymentBankAccount');
448 if (($action !=
'editbankaccount') && $user->hasRight(
'societe',
'creer')) {
449 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editbankaccount&token='.
newToken().
'&socid='.$object->id.
'">'.
img_edit($langs->trans(
'SetBankAccount'), 1).
'</a></td>';
451 print
'</tr></table>';
453 if ($action ==
'editbankaccount') {
454 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->fk_account,
'fk_account', 1);
456 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->fk_account,
'none');
462 $isCustomer = ($object->client == 1 || $object->client == 3);
466 print
'<tr><td class="nowrap">';
467 print
'<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
468 print $langs->trans(
"CustomerRelativeDiscountShort");
469 print
'<td><td class="right">';
470 if ($user->hasRight(
'societe',
'creer') && !$user->socid > 0) {
471 print
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/comm/remise.php?id='.$object->id.
'&backtopage='.urlencode($_SERVER[
"PHP_SELF"].
'?socid='.$object->id).
'&action=create&token='.
newToken().
'">'.
img_edit($langs->trans(
"Modify")).
'</a>';
473 print
'</td></tr></table>';
474 print
'</td><td>'.($object->remise_percent ?
'<a href="'.DOL_URL_ROOT.
'/comm/remise.php?id='.$object->id.
'">'.$object->remise_percent.
'%</a>' :
'').
'</td>';
478 print
'<tr><td class="nowrap">';
479 print
'<table width="100%" class="nobordernopadding">';
480 print
'<tr><td class="nowrap">';
481 print $langs->trans(
"CustomerAbsoluteDiscountShort");
482 print
'<td><td class="right">';
483 if ($user->hasRight(
'societe',
'creer') && !$user->socid > 0) {
484 print
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/comm/remx.php?id='.$object->id.
'&backtopage='.urlencode($_SERVER[
"PHP_SELF"].
'?socid='.$object->id).
'&action=create&token='.
newToken().
'">'.
img_edit($langs->trans(
"Modify")).
'</a>';
486 print
'</td></tr></table>';
489 $amount_discount = $object->getAvailableDiscounts();
490 if ($amount_discount < 0) {
493 if ($amount_discount > 0) {
494 print
'<a href="'.DOL_URL_ROOT.
'/comm/remx.php?id='.$object->id.
'&backtopage='.urlencode($_SERVER[
"PHP_SELF"].
'?socid='.$object->id).
'&action=create&token='.
newToken().
'">'.
price($amount_discount, 1, $langs, 1, -1, -1, $conf->currency).
'</a>';
502 if ($object->client) {
503 print
'<tr class="nowrap">';
505 print
$form->editfieldkey(
"OutstandingBill",
'outstanding_limit', $object->outstanding_limit, $object, $user->hasRight(
'societe',
'creer'));
507 $limit_field_type = (!empty($conf->global->MAIN_USE_JQUERY_JEDITABLE)) ?
'numeric' :
'amount';
508 print
$form->editfieldval(
"OutstandingBill",
'outstanding_limit', $object->outstanding_limit, $object, $user->hasRight(
'societe',
'creer'), $limit_field_type, ($object->outstanding_limit !=
'' ?
price($object->outstanding_limit) :
''));
513 if ($object->client) {
514 if (
isModEnabled(
'commande') && !empty($conf->global->ORDER_MANAGE_MIN_AMOUNT)) {
515 print
'<!-- Minimim amount for orders -->'.
"\n";
516 print
'<tr class="nowrap">';
518 print
$form->editfieldkey(
"OrderMinAmount",
'order_min_amount', $object->order_min_amount, $object, $user->hasRight(
'societe',
'creer'));
520 print
$form->editfieldval(
"OrderMinAmount",
'order_min_amount', $object->order_min_amount, $object, $user->hasRight(
'societe',
'creer'), $limit_field_type, ($object->order_min_amount !=
'' ?
price($object->order_min_amount) :
''));
528 if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES)) {
529 print
'<tr><td class="nowrap">';
530 print
'<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
531 print $langs->trans(
"PriceLevel");
532 print
'<td><td class="right">';
533 if ($user->hasRight(
'societe',
'creer')) {
534 print
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/comm/multiprix.php?id='.$object->id.
'">'.
img_edit($langs->trans(
"Modify")).
'</a>';
536 print
'</td></tr></table>';
538 print $object->price_level;
539 $keyforlabel =
'PRODUIT_MULTIPRICES_LABEL'.$object->price_level;
540 if (!empty($conf->global->$keyforlabel)) {
541 print
' - '.$langs->trans($conf->global->$keyforlabel);
548 if (
isModEnabled(
'stock') && !empty($conf->global->SOCIETE_ASK_FOR_WAREHOUSE)) {
549 $langs->load(
'stocks');
550 require_once DOL_DOCUMENT_ROOT.
'/product/class/html.formproduct.class.php';
552 print
'<tr class="nowrap">';
554 print
$form->editfieldkey(
"Warehouse",
'warehouse',
'', $object, $user->hasRight(
'societe',
'creer'));
556 if ($action ==
'editwarehouse') {
557 $formproduct->formSelectWarehouses($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->fk_warehouse,
'fk_warehouse', 1);
559 if ($object->fk_warehouse > 0) {
560 print
img_picto(
'',
'stock',
'class="paddingrightonly"');
562 $formproduct->formSelectWarehouses($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->fk_warehouse,
'none');
569 if (!empty($conf->global->SOCIETE_ASK_FOR_SHIPPING_METHOD)) {
570 print
'<tr><td class="nowrap">';
571 print
'<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
572 print $langs->trans(
'SendingMethod');
574 if (($action !=
'editshipping') && $user->hasRight(
'societe',
'creer')) {
575 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editshipping&token='.
newToken().
'&socid='.$object->id.
'">'.
img_edit($langs->trans(
'SetMode'), 1).
'</a></td>';
577 print
'</tr></table>';
579 if ($action ==
'editshipping') {
580 $form->formSelectShippingMethod($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->shipping_method_id,
'shipping_method_id', 1);
582 $form->formSelectShippingMethod($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->shipping_method_id,
'none');
590 print
'<tr><td class="nowrap">';
591 print
'<table class="centpercent nobordernopadding"><tr><td class="nowrap">';
592 print $langs->trans(
'IntracommReportTransportMode');
594 if (($action !=
'edittransportmode') && $user->hasRight(
'societe',
'creer')) {
595 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=edittransportmode&token='.
newToken().
'&socid='.$object->id.
'">'.
img_edit($langs->trans(
'SetMode'), 1).
'</a></td>';
597 print
'</tr></table>';
599 if ($action ==
'edittransportmode') {
600 $form->formSelectTransportMode($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, (!empty($object->transport_mode_id) ? $object->transport_mode_id :
''),
'transport_mode_id', 1);
602 $form->formSelectTransportMode($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, (!empty($object->transport_mode_id) ? $object->transport_mode_id :
''),
'none');
609 if (
isModEnabled(
'categorie') && $user->hasRight(
'categorie',
'lire')) {
610 $langs->load(
"categories");
611 print
'<tr><td>'.$langs->trans(
"CustomersCategoriesShort").
'</td>';
613 print
$form->showCategories($object->id, Categorie::TYPE_CUSTOMER, 1);
619 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
622 include DOL_DOCUMENT_ROOT.
'/societe/tpl/linesalesrepresentative.tpl.php';
626 $langs->load(
"members");
627 $langs->load(
"users");
629 print
'<tr><td class="titlefield">'.$langs->trans(
"LinkedToDolibarrMember").
'</td>';
632 $result = $adh->fetch(
'',
'', $object->id);
634 $adh->ref = $adh->getFullName($langs);
635 print $adh->getNomUrl(-1);
637 print
'<span class="opacitymedium">'.$langs->trans(
"ThirdpartyNotLinkedToMember").
'</span>';
645 print
'</div><div class="fichehalfright">';
648 if ($object->client == 2 || $object->client == 3) {
649 print
'<div class="underbanner clearboth"></div>';
650 print
'<table class="border centpercent tableforfield">';
653 print
'<tr><td class="titlefield nowrap">';
654 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
655 print $langs->trans(
'ProspectLevel');
657 if ($action !=
'editlevel' && $user->hasRight(
'societe',
'creer')) {
658 print
'<td class="right"><a class="editfielda reposition" href="'.$_SERVER[
"PHP_SELF"].
'?action=editlevel&token='.
newToken().
'&socid='.$object->id.
'">'.
img_edit($langs->trans(
'Modify'), 1).
'</a></td>';
660 print
'</tr></table>';
662 if ($action ==
'editlevel') {
663 $formcompany->form_prospect_level($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->fk_prospectlevel,
'prospect_level_id', 1);
665 print $object->getLibProspLevel();
671 $object->loadCacheOfProspStatus();
672 print
'<tr><td>'.$langs->trans(
"StatusProsp").
'</td><td>'.$object->getLibProspCommStatut(4, $object->cacheprospectstatus[$object->stcomm_id][
'label']);
673 print
' ';
674 print
'<div class="floatright">';
675 foreach ($object->cacheprospectstatus as $key => $val) {
676 $titlealt =
'default';
677 if (!empty($val[
'code']) && !in_array($val[
'code'], array(
'ST_NO',
'ST_NEVER',
'ST_TODO',
'ST_PEND',
'ST_DONE'))) {
678 $titlealt = $val[
'label'];
680 if ($object->stcomm_id != $val[
'id']) {
681 print
'<a class="pictosubstatus reposition" href="'.$_SERVER[
"PHP_SELF"].
'?socid='.$object->id.
'&stcomm='.$val[
'code'].
'&action=setstcomm&token='.
newToken().
'">'.
img_action($titlealt, $val[
'code'], $val[
'picto']).
'</a>';
684 print
'</div></td></tr>';
689 print
'<div class="underbanner underbanner-before-box clearboth"></div><br>';
695 $MAXLIST = $conf->global->MAIN_SIZE_SHORTLIST_LIMIT;
698 $boxstat .=
'<div class="box divboxtable box-halfright">';
699 $boxstat .=
'<table summary="'.dol_escape_htmltag($langs->trans(
"DolibarrStateBoard")).
'" class="border boxtable boxtablenobottom boxtablenotop boxtablenomarginbottom centpercent">';
700 $boxstat .=
'<tr class="impair nohover"><td colspan="2" class="tdboxstats nohover">';
702 if (
isModEnabled(
"propal") && $user->hasRight(
'propal',
'lire')) {
704 $tmp = $object->getOutstandingProposals();
705 $outstandingOpened = $tmp[
'opened'];
706 $outstandingTotal = $tmp[
'total_ht'];
707 $outstandingTotalIncTax = $tmp[
'total_ttc'];
708 $text = $langs->trans(
"OverAllProposals");
709 $link = DOL_URL_ROOT.
'/comm/propal/list.php?socid='.$object->id;
712 $boxstat .=
'<a href="'.$link.
'" class="boxstatsindicator thumbstat nobold nounderline">';
714 $boxstat .=
'<div class="boxstats" title="'.dol_escape_htmltag($text).
'">';
715 $boxstat .=
'<span class="boxstatstext">'.img_object(
"", $icon).
' <span>'.$text.
'</span></span><br>';
716 $boxstat .=
'<span class="boxstatsindicator">'.price($outstandingTotal, 1, $langs, 1, -1, -1, $conf->currency).
'</span>';
717 $boxstat .=
'</div>';
723 if (
isModEnabled(
'commande') && $user->hasRight(
'commande',
'lire')) {
725 $tmp = $object->getOutstandingOrders();
726 $outstandingOpened = $tmp[
'opened'];
727 $outstandingTotal = $tmp[
'total_ht'];
728 $outstandingTotalIncTax = $tmp[
'total_ttc'];
729 $text = $langs->trans(
"OverAllOrders");
730 $link = DOL_URL_ROOT.
'/commande/list.php?socid='.$object->id;
733 $boxstat .=
'<a href="'.$link.
'" class="boxstatsindicator thumbstat nobold nounderline">';
735 $boxstat .=
'<div class="boxstats" title="'.dol_escape_htmltag($text).
'">';
736 $boxstat .=
'<span class="boxstatstext">'.img_object(
"", $icon).
' <span>'.$text.
'</span></span><br>';
737 $boxstat .=
'<span class="boxstatsindicator">'.price($outstandingTotal, 1, $langs, 1, -1, -1, $conf->currency).
'</span>';
738 $boxstat .=
'</div>';
744 if (
isModEnabled(
'facture') && $user->hasRight(
'facture',
'lire')) {
746 $tmp = $object->getOutstandingBills(
'customer', 0);
747 $outstandingOpened = $tmp[
'opened'];
748 $outstandingTotal = $tmp[
'total_ht'];
749 $outstandingTotalIncTax = $tmp[
'total_ttc'];
751 $text = $langs->trans(
"OverAllInvoices");
752 $link = DOL_URL_ROOT.
'/compta/facture/list.php?socid='.$object->id;
755 $boxstat .=
'<a href="'.$link.
'" class="boxstatsindicator thumbstat nobold nounderline">';
757 $boxstat .=
'<div class="boxstats" title="'.dol_escape_htmltag($text).
'">';
758 $boxstat .=
'<span class="boxstatstext">'.img_object(
"", $icon).
' <span>'.$text.
'</span></span><br>';
759 $boxstat .=
'<span class="boxstatsindicator">'.price($outstandingTotal, 1, $langs, 1, -1, -1, $conf->currency).
'</span>';
760 $boxstat .=
'</div>';
767 if ($object->outstanding_limit !=
'' && $object->outstanding_limit < $outstandingOpened) {
768 $warn =
' '.img_warning($langs->trans(
"OutstandingBillReached"));
770 $text = $langs->trans(
"CurrentOutstandingBill");
771 $link = DOL_URL_ROOT.
'/compta/recap-compta.php?socid='.$object->id;
774 $boxstat .=
'<a href="'.$link.
'" class="boxstatsindicator thumbstat nobold nounderline">';
776 $boxstat .=
'<div class="boxstats" title="'.dol_escape_htmltag($text).
'">';
777 $boxstat .=
'<span class="boxstatstext">'.img_object(
"", $icon).
' <span>'.$text.
'</span></span><br>';
778 $boxstat .=
'<span class="boxstatsindicator'.($outstandingOpened > 0 ?
' amountremaintopay' :
'').
'">'.
price($outstandingOpened, 1, $langs, 1, -1, -1, $conf->currency).$warn.
'</span>';
779 $boxstat .=
'</div>';
784 $tmp = $object->getOutstandingBills(
'customer', 1);
785 $outstandingOpenedLate = $tmp[
'opened'];
786 if ($outstandingOpened != $outstandingOpenedLate && !empty($outstandingOpenedLate)) {
788 if ($object->outstanding_limit !=
'' && $object->outstanding_limit < $outstandingOpenedLate) {
789 $warn =
' '.img_warning($langs->trans(
"OutstandingBillReached"));
791 $text = $langs->trans(
"CurrentOutstandingBillLate");
792 $link = DOL_URL_ROOT.
'/compta/recap-compta.php?socid='.$object->id;
795 $boxstat .=
'<a href="'.$link.
'" class="boxstatsindicator thumbstat nobold nounderline">';
797 $boxstat .=
'<div class="boxstats" title="'.dol_escape_htmltag($text).
'">';
798 $boxstat .=
'<span class="boxstatstext">'.img_object(
"", $icon).
' <span>'.$text.
'</span></span><br>';
799 $boxstat .=
'<span class="boxstatsindicator'.($outstandingOpenedLate > 0 ?
' amountremaintopay' :
'').
'">'.
price($outstandingOpenedLate, 1, $langs, 1, -1, -1, $conf->currency).$warn.
'</span>';
800 $boxstat .=
'</div>';
808 $reshook = $hookmanager->executeHooks(
'addMoreBoxStatsCustomer',
$parameters, $object, $action);
809 if (empty($reshook)) {
810 $boxstat .= $hookmanager->resPrint;
813 $boxstat .=
'</td></tr>';
814 $boxstat .=
'</table>';
815 $boxstat .=
'</div>';
823 if (
isModEnabled(
"propal") && $user->hasRight(
'propal',
'lire')) {
824 $langs->load(
"propal");
826 $sql =
"SELECT s.nom, s.rowid, p.rowid as propalid, p.fk_statut, p.total_ht";
827 $sql .=
", p.total_tva";
828 $sql .=
", p.total_ttc";
829 $sql .=
", p.ref, p.ref_client, p.remise";
830 $sql .=
", p.datep as dp, p.fin_validite as date_limit, p.entity";
831 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"propal as p, ".MAIN_DB_PREFIX.
"c_propalst as c";
832 $sql .=
" WHERE p.fk_soc = s.rowid AND p.fk_statut = c.id";
833 $sql .=
" AND s.rowid = ".((int) $object->id);
834 $sql .=
" AND p.entity IN (".getEntity(
'propal').
")";
835 $sql .=
" ORDER BY p.datep DESC";
837 $resql = $db->query(
$sql);
839 $propal_static =
new Propal($db);
841 $num = $db->num_rows($resql);
843 print
'<div class="div-table-responsive-no-min">';
844 print
'<table class="noborder centpercent lastrecordtable">';
846 print
'<tr class="liste_titre">';
847 print
'<td colspan="4"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans(
"LastPropals", ($num <= $MAXLIST ?
"" : $MAXLIST)).
'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.
'/comm/propal/list.php?socid='.$object->id.
'">'.$langs->trans(
"AllPropals").
'<span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
848 print
'<td width="20px" class="right"><a href="'.DOL_URL_ROOT.
'/comm/propal/stats/index.php?socid='.$object->id.
'">'.
img_picto($langs->trans(
"Statistics"),
'stats').
'</a></td>';
849 print
'</tr></table></td>';
854 while ($i < $num && $i < $MAXLIST) {
855 $objp = $db->fetch_object($resql);
857 print
'<tr class="oddeven">';
858 print
'<td class="nowraponall">';
859 $propal_static->id = $objp->propalid;
860 $propal_static->ref = $objp->ref;
861 $propal_static->ref_client = $objp->ref_client;
862 $propal_static->total_ht = $objp->total_ht;
863 $propal_static->total_tva = $objp->total_tva;
864 $propal_static->total_ttc = $objp->total_ttc;
865 print $propal_static->getNomUrl(1);
870 if (!empty($filedir)) {
871 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
873 if (is_array($file_list)) {
877 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
878 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
885 if (!empty($sortfield) && !empty($sortorder)) {
890 print $formfile->showPreview($file_list, $propal_static->element, $relativepath, 0);
896 if (($db->jdate($objp->date_limit) < ($now - $conf->propal->cloture->warning_delay)) && $objp->fk_statut == $propal_static::STATUS_VALIDATED) {
897 print
" ".img_warning();
899 print
'</td><td class="right" width="80px">'.dol_print_date($db->jdate($objp->dp),
'day').
"</td>\n";
900 print
'<td class="right" style="min-width: 60px">'.price($objp->total_ht).
'</td>';
901 print
'<td class="right" style="min-width: 60px" class="nowrap">'.$propal_static->LibStatut($objp->fk_statut, 5).
'</td></tr>';
918 if (
isModEnabled(
'commande') && $user->hasRight(
'commande',
'lire')) {
921 $sql =
"SELECT s.nom, s.rowid";
922 $sql .=
", c.rowid as cid, c.entity, c.total_ht";
923 $sql .=
", c.total_tva";
924 $sql .=
", c.total_ttc";
925 $sql .=
", c.ref, c.ref_client, c.fk_statut, c.facture";
926 $sql .=
", c.date_commande as dc";
927 $sql .=
", c.facture as billed";
928 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"commande as c";
929 $sql .=
" WHERE c.fk_soc = s.rowid ";
930 $sql .=
" AND s.rowid = ".((int) $object->id);
931 $sql .=
" AND c.entity IN (".getEntity(
'commande').
')';
932 $sql .=
" ORDER BY c.date_commande DESC";
934 $resql = $db->query(
$sql);
936 $commande_static =
new Commande($db);
938 $num = $db->num_rows($resql);
941 $sql2 =
'SELECT s.nom, s.rowid as socid, s.client, c.rowid, c.ref, c.total_ht, c.ref_client,';
942 $sql2 .=
' c.date_valid, c.date_commande, c.date_livraison, c.fk_statut, c.facture as billed';
943 $sql2 .=
' FROM '.MAIN_DB_PREFIX.
'societe as s';
944 $sql2 .=
', '.MAIN_DB_PREFIX.
'commande as c';
945 $sql2 .=
' WHERE c.fk_soc = s.rowid';
946 $sql2 .=
' AND s.rowid = '.((int) $object->id);
948 $sql2 .=
" AND ((c.fk_statut IN (1,2)) OR (c.fk_statut = 3 AND c.facture = 0))";
950 $resql2 = $db->query($sql2);
951 $orders2invoice = $db->num_rows($resql2);
954 print
'<div class="div-table-responsive-no-min">';
955 print
'<table class="noborder centpercent lastrecordtable">';
957 print
'<tr class="liste_titre">';
958 print
'<td colspan="4"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans(
"LastCustomerOrders", ($num <= $MAXLIST ?
"" : $MAXLIST)).
'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.
'/commande/list.php?socid='.$object->id.
'">'.$langs->trans(
"AllOrders").
'<span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
959 print
'<td width="20px" class="right"><a href="'.DOL_URL_ROOT.
'/commande/stats/index.php?socid='.$object->id.
'">'.
img_picto($langs->trans(
"Statistics"),
'stats').
'</a></td>';
960 print
'</tr></table></td>';
965 while ($i < $num && $i < $MAXLIST) {
966 $objp = $db->fetch_object($resql);
968 $commande_static->id = $objp->cid;
969 $commande_static->ref = $objp->ref;
970 $commande_static->ref_client = $objp->ref_client;
971 $commande_static->total_ht = $objp->total_ht;
972 $commande_static->total_tva = $objp->total_tva;
973 $commande_static->total_ttc = $objp->total_ttc;
974 $commande_static->billed = $objp->billed;
976 print
'<tr class="oddeven">';
977 print
'<td class="nowraponall">';
978 print $commande_static->getNomUrl(1);
980 $filedir = $conf->commande->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
982 if (!empty($filedir)) {
983 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
985 if (is_array($file_list)) {
989 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
990 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
997 if (!empty($sortfield) && !empty($sortorder)) {
1002 print $formfile->showPreview($file_list, $commande_static->element, $relativepath, 0, $param);
1010 print
'<td class="right" width="80px">'.dol_print_date($db->jdate($objp->dc),
'day').
"</td>\n";
1011 print
'<td class="right" style="min-width: 60px">'.price($objp->total_ht).
'</td>';
1012 print
'<td class="right" style="min-width: 60px" class="nowrap">'.$commande_static->LibStatut($objp->fk_statut, $objp->facture, 5).
'</td></tr>';
1029 if (
isModEnabled(
"expedition") && $user->hasRight(
'expedition',
'lire')) {
1030 $sql =
'SELECT e.rowid as id';
1031 $sql .=
', e.ref, e.entity';
1032 $sql .=
', e.date_creation';
1033 $sql .=
', e.fk_statut as statut';
1035 $sql .=
', s.rowid as socid';
1036 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"expedition as e";
1037 $sql .=
" WHERE e.fk_soc = s.rowid AND s.rowid = ".((int) $object->id);
1038 $sql .=
" AND e.entity IN (".getEntity(
'expedition').
")";
1039 $sql .=
' GROUP BY e.rowid';
1040 $sql .=
', e.ref, e.entity';
1041 $sql .=
', e.date_creation';
1042 $sql .=
', e.fk_statut';
1044 $sql .=
', s.rowid';
1045 $sql .=
" ORDER BY e.date_creation DESC";
1047 $resql = $db->query(
$sql);
1051 $num = $db->num_rows($resql);
1053 print
'<div class="div-table-responsive-no-min">';
1054 print
'<table class="noborder centpercent lastrecordtable">';
1056 print
'<tr class="liste_titre">';
1057 print
'<td colspan="4"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans(
"LastSendings", ($num <= $MAXLIST ?
"" : $MAXLIST)).
'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.
'/expedition/list.php?socid='.$object->id.
'">'.$langs->trans(
"AllSendings").
'<span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
1058 print
'<td width="20px" class="right"><a href="'.DOL_URL_ROOT.
'/expedition/stats/index.php?socid='.$object->id.
'">'.
img_picto($langs->trans(
"Statistics"),
'stats').
'</a></td>';
1059 print
'</tr></table></td>';
1064 while ($i < $num && $i < $MAXLIST) {
1065 $objp = $db->fetch_object($resql);
1067 $sendingstatic->id = $objp->id;
1068 $sendingstatic->ref = $objp->ref;
1070 print
'<tr class="oddeven">';
1071 print
'<td class="nowraponall">';
1072 print $sendingstatic->getNomUrl(1);
1074 $filedir = $conf->expedition->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
1076 if (!empty($filedir)) {
1077 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
1079 if (is_array($file_list)) {
1083 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
1084 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1091 if (!empty($sortfield) && !empty($sortorder)) {
1096 print $formfile->showPreview($file_list, $sendingstatic->element, $relativepath, 0, $param);
1103 if ($objp->date_creation > 0) {
1104 print
'<td class="right" width="80px">'.dol_print_date($db->jdate($objp->date_creation),
'day').
'</td>';
1106 print
'<td class="right"><b>!!!</b></td>';
1109 print
'<td class="nowrap right" width="100" >'.$sendingstatic->LibStatut($objp->statut, 5).
'</td>';
1127 if (
isModEnabled(
'contrat') && $user->hasRight(
'contrat',
'lire')) {
1128 $sql =
"SELECT s.nom, s.rowid, c.rowid as id, c.ref as ref, c.statut as contract_status, c.datec as dc, c.date_contrat as dcon, c.ref_customer as refcus, c.ref_supplier as refsup, c.entity,";
1129 $sql .=
" c.last_main_doc, c.model_pdf";
1130 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"contrat as c";
1131 $sql .=
" WHERE c.fk_soc = s.rowid ";
1132 $sql .=
" AND s.rowid = ".((int) $object->id);
1133 $sql .=
" AND c.entity IN (".getEntity(
'contract').
")";
1134 $sql .=
" ORDER BY c.datec DESC";
1136 $resql = $db->query(
$sql);
1140 $num = $db->num_rows($resql);
1142 print
'<div class="div-table-responsive-no-min">';
1143 print
'<table class="noborder centpercent lastrecordtable">';
1145 print
'<tr class="liste_titre">';
1146 print
'<td colspan="5"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans(
"LastContracts", ($num <= $MAXLIST ?
"" : $MAXLIST)).
'</td>';
1147 print
'<td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.
'/contrat/list.php?socid='.$object->id.
'">'.$langs->trans(
"AllContracts").
'<span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
1149 print
'</tr></table></td>';
1154 while ($i < $num && $i < $MAXLIST) {
1155 $objp = $db->fetch_object($resql);
1157 $contrat->id = $objp->id;
1158 $contrat->ref = $objp->ref ? $objp->ref : $objp->id;
1159 $contrat->ref_customer = $objp->refcus;
1160 $contrat->ref_supplier = $objp->refsup;
1161 $contrat->statut = $objp->contract_status;
1162 $contrat->last_main_doc = $objp->last_main_doc;
1163 $contrat->model_pdf = $objp->model_pdf;
1164 $contrat->fetch_lines();
1167 foreach ($contrat->lines as $line) {
1168 if ($contrat->statut == Contrat::STATUS_VALIDATED && $line->statut == ContratLigne::STATUS_OPEN) {
1169 if (((!empty($line->date_end) ? $line->date_end : 0) + $conf->contrat->services->expires->warning_delay) < $now) {
1175 print
'<tr class="oddeven">';
1176 print
'<td class="nowraponall">';
1177 print $contrat->getNomUrl(1, 12);
1178 if (!empty($contrat->model_pdf)) {
1180 $filedir = $conf->contrat->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
1182 if (!empty($filedir)) {
1183 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
1185 if (is_array($file_list)) {
1189 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
1190 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1197 if (!empty($sortfield) && !empty($sortorder)) {
1202 print $formfile->showPreview($file_list, $contrat->element, $relativepath, 0);
1211 print
'<td class="nowrap">'.dol_trunc($objp->refsup, 12).
"</td>\n";
1213 print
'<td class="right" width="80px"><span title="'.$langs->trans(
"DateContract").
'">'.
dol_print_date($db->jdate($objp->dcon),
'day').
"</span></td>\n";
1214 print
'<td width="20"> </td>';
1215 print
'<td class="nowraponall right">';
1216 print $contrat->getLibStatut(4);
1235 if (
isModEnabled(
'ficheinter') && $user->hasRight(
'ficheinter',
'lire')) {
1236 $sql =
"SELECT s.nom, s.rowid, f.rowid as id, f.ref, f.fk_statut, f.duree as duration, f.datei as startdate, f.entity";
1237 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"fichinter as f";
1238 $sql .=
" WHERE f.fk_soc = s.rowid";
1239 $sql .=
" AND s.rowid = ".((int) $object->id);
1240 $sql .=
" AND f.entity IN (".getEntity(
'intervention').
")";
1241 $sql .=
" ORDER BY f.tms DESC";
1243 $resql = $db->query(
$sql);
1247 $num = $db->num_rows($resql);
1249 print
'<div class="div-table-responsive-no-min">';
1250 print
'<table class="noborder centpercent lastrecordtable">';
1252 print
'<tr class="liste_titre">';
1253 print
'<td colspan="3"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans(
"LastInterventions", ($num <= $MAXLIST ?
"" : $MAXLIST)).
'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.
'/fichinter/list.php?socid='.$object->id.
'">'.$langs->trans(
"AllInterventions").
'<span class="badge marginleftonlyshort">'.$num.
'</span></td>';
1254 print
'<td width="20px" class="right"><a href="'.DOL_URL_ROOT.
'/fichinter/stats/index.php?socid='.$object->id.
'">'.
img_picto($langs->trans(
"Statistics"),
'stats').
'</a></td>';
1255 print
'</tr></table></td>';
1260 while ($i < $num && $i < $MAXLIST) {
1261 $objp = $db->fetch_object($resql);
1263 $fichinter_static->id = $objp->id;
1264 $fichinter_static->ref = $objp->ref;
1265 $fichinter_static->statut = $objp->fk_statut;
1267 print
'<tr class="oddeven">';
1268 print
'<td class="nowraponall">';
1269 print $fichinter_static->getNomUrl(1);
1271 $filedir = $conf->ficheinter->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
1273 if (!empty($filedir)) {
1274 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
1276 if (is_array($file_list)) {
1280 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
1281 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1288 if (!empty($sortfield) && !empty($sortorder)) {
1293 print $formfile->showPreview($file_list, $fichinter_static->element, $relativepath, 0);
1301 print
'<td class="right" style="min-width: 60px">'.convertSecondToTime($objp->duration).
'</td>'.
"\n";
1302 print
'<td class="nowrap right" style="min-width: 60px">'.$fichinter_static->getLibStatut(5).
'</td>'.
"\n";
1321 if (
isModEnabled(
'facture') && $user->hasRight(
'facture',
'lire')) {
1322 $sql =
'SELECT f.rowid as id, f.titre as ref';
1323 $sql .=
', f.total_ht';
1324 $sql .=
', f.total_tva';
1325 $sql .=
', f.total_ttc';
1326 $sql .=
', f.datec as dc';
1327 $sql .=
', f.date_last_gen, f.date_when';
1328 $sql .=
', f.frequency';
1329 $sql .=
', f.unit_frequency';
1330 $sql .=
', f.suspended as suspended';
1331 $sql .=
', s.nom, s.rowid as socid';
1332 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s,".MAIN_DB_PREFIX.
"facture_rec as f";
1333 $sql .=
" WHERE f.fk_soc = s.rowid AND s.rowid = ".((int) $object->id);
1334 $sql .=
" AND f.entity IN (".getEntity(
'invoice').
")";
1335 $sql .=
' GROUP BY f.rowid, f.titre, f.total_ht, f.total_tva, f.total_ttc,';
1336 $sql .=
' f.date_last_gen, f.datec, f.frequency, f.unit_frequency,';
1337 $sql .=
' f.suspended, f.date_when,';
1338 $sql .=
' s.nom, s.rowid';
1339 $sql .=
" ORDER BY f.date_last_gen, f.datec DESC";
1341 $resql = $db->query(
$sql);
1345 $num = $db->num_rows($resql);
1347 print
'<div class="div-table-responsive-no-min">';
1348 print
'<table class="noborder centpercent lastrecordtable">';
1350 print
'<tr class="liste_titre">';
1351 print
'<td colspan="4"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans(
"LatestCustomerTemplateInvoices", ($num <= $MAXLIST ?
"" : $MAXLIST)).
'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.
'/compta/facture/invoicetemplate_list.php?socid='.$object->id.
'">'.$langs->trans(
"AllCustomerTemplateInvoices").
'<span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
1352 print
'</tr></table></td>';
1357 while ($i < $num && $i < $MAXLIST) {
1358 $objp = $db->fetch_object($resql);
1360 $invoicetemplate->id = $objp->id;
1361 $invoicetemplate->ref = $objp->ref;
1362 $invoicetemplate->suspended = $objp->suspended;
1363 $invoicetemplate->frequency = $objp->frequency;
1364 $invoicetemplate->unit_frequency = $objp->unit_frequency;
1365 $invoicetemplate->total_ht = $objp->total_ht;
1366 $invoicetemplate->total_tva = $objp->total_tva;
1367 $invoicetemplate->total_ttc = $objp->total_ttc;
1368 $invoicetemplate->date_last_gen = $objp->date_last_gen;
1369 $invoicetemplate->date_when = $objp->date_when;
1371 print
'<tr class="oddeven">';
1372 print
'<td class="nowrap">';
1373 print $invoicetemplate->getNomUrl(1);
1376 if ($objp->frequency && $objp->date_last_gen > 0) {
1377 print
'<td class="right" width="80px">'.dol_print_date($db->jdate($objp->date_last_gen),
'day').
'</td>';
1379 if ($objp->dc > 0) {
1380 print
'<td class="right" width="80px">'.dol_print_date($db->jdate($objp->dc),
'day').
'</td>';
1382 print
'<td class="right"><b>!!!</b></td>';
1385 print
'<td class="right" style="min-width: 60px">';
1386 print
price($objp->total_ht);
1389 if (!empty($conf->global->MAIN_SHOW_PRICE_WITH_TAX_IN_SUMMARIES)) {
1390 print
'<td class="right" style="min-width: 60px">';
1391 print
price($objp->total_ttc);
1395 print
'<td class="nowrap right" style="min-width: 60px">';
1396 print $langs->trans(
'FrequencyPer_'.$invoicetemplate->unit_frequency, $invoicetemplate->frequency).
' - ';
1397 print ($invoicetemplate->LibStatut($invoicetemplate->frequency, $invoicetemplate->suspended, 5, 0));
1416 if (
isModEnabled(
'facture') && $user->hasRight(
'facture',
'lire')) {
1417 $sql =
'SELECT f.rowid as facid, f.ref, f.type';
1418 $sql .=
', f.total_ht';
1419 $sql .=
', f.total_tva';
1420 $sql .=
', f.total_ttc';
1421 $sql .=
', f.entity';
1422 $sql .=
', f.datef as df, f.date_lim_reglement as dl, f.datec as dc, f.paye as paye, f.fk_statut as status';
1423 $sql .=
', s.nom, s.rowid as socid';
1424 $sql .=
', SUM(pf.amount) as am';
1425 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s,".MAIN_DB_PREFIX.
"facture as f";
1426 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'paiement_facture as pf ON f.rowid=pf.fk_facture';
1427 $sql .=
" WHERE f.fk_soc = s.rowid AND s.rowid = ".((int) $object->id);
1428 $sql .=
" AND f.entity IN (".getEntity(
'invoice').
")";
1429 $sql .=
' GROUP BY f.rowid, f.ref, f.type, f.total_ht, f.total_tva, f.total_ttc,';
1430 $sql .=
' f.entity, f.datef, f.date_lim_reglement, f.datec, f.paye, f.fk_statut,';
1431 $sql .=
' s.nom, s.rowid';
1432 $sql .=
" ORDER BY f.datef DESC, f.datec DESC";
1434 $resql = $db->query(
$sql);
1436 $facturestatic =
new Facture($db);
1438 $num = $db->num_rows($resql);
1440 print
'<div class="div-table-responsive-no-min">';
1441 print
'<table class="noborder centpercent lastrecordtable">';
1443 print
'<tr class="liste_titre">';
1444 print
'<td colspan="5"><table class="centpercent nobordernopadding"><tr><td>'.$langs->trans(
"LastCustomersBills", ($num <= $MAXLIST ?
"" : $MAXLIST)).
'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.
'/compta/facture/list.php?socid='.$object->id.
'">'.$langs->trans(
"AllBills").
'<span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
1445 print
'<td width="20px" class="right"><a href="'.DOL_URL_ROOT.
'/compta/facture/stats/index.php?socid='.$object->id.
'">'.
img_picto($langs->trans(
"Statistics"),
'stats').
'</a></td>';
1446 print
'</tr></table></td>';
1451 while ($i < $num && $i < $MAXLIST) {
1452 $objp = $db->fetch_object($resql);
1454 $facturestatic->id = $objp->facid;
1455 $facturestatic->ref = $objp->ref;
1456 $facturestatic->type = $objp->type;
1457 $facturestatic->total_ht = $objp->total_ht;
1458 $facturestatic->total_tva = $objp->total_tva;
1459 $facturestatic->total_ttc = $objp->total_ttc;
1460 $facturestatic->statut = $objp->status;
1461 $facturestatic->alreadypaid = $objp->am;
1462 $facturestatic->date = $db->jdate($objp->df);
1463 $facturestatic->date_lim_reglement = $db->jdate($objp->dl);
1465 print
'<tr class="oddeven">';
1466 print
'<td class="nowraponall">';
1467 print $facturestatic->getNomUrl(1);
1469 $filedir = $conf->facture->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
1471 if (!empty($filedir)) {
1472 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
1474 if (is_array($file_list)) {
1478 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
1479 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1486 if (!empty($sortfield) && !empty($sortorder)) {
1491 print $formfile->showPreview($file_list, $facturestatic->element, $relativepath, 0);
1498 if ($objp->df > 0) {
1499 print
'<td width="80px" title="'.dol_escape_htmltag($langs->trans(
'DateInvoice')).
'">'.
dol_print_date($db->jdate($objp->df),
'day').
'</td>';
1501 print
'<td><b>!!!</b></td>';
1503 if ($objp->dl > 0) {
1504 print
'<td width="80px" title="'.dol_escape_htmltag($langs->trans(
'DateMaxPayment')).
'">'.
dol_print_date($db->jdate($objp->dl),
'day').
'</td>';
1506 print
'<td><b>!!!</b></td>';
1508 print
'<td class="right" style="min-width: 60px">';
1509 print
price($objp->total_ht);
1512 if (!empty($conf->global->MAIN_SHOW_PRICE_WITH_TAX_IN_SUMMARIES)) {
1513 print
'<td class="right" style="min-width: 60px">';
1514 print
price($objp->total_ttc);
1518 print
'<td class="nowrap right" style="min-width: 60px">'.($facturestatic->LibStatut($objp->paye, $objp->status, 5, $objp->am)).
'</td>';
1535 $reshook = $hookmanager->executeHooks(
'addMoreRecentObjects',
$parameters, $object, $action);
1539 print $hookmanager->resPrint;
1542 print
'</div></div>';
1543 print
'<div class="clearboth"></div>';
1551 print
'<div class="tabsAction">';
1554 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons',
$parameters, $object, $action);
1556 if (empty($reshook)) {
1557 if ($object->status != 1) {
1558 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"ThirdPartyIsClosed")).
'" href="#">'.$langs->trans(
"ThirdPartyIsClosed").
'</a></div>';
1561 if (
isModEnabled(
"propal") && $user->hasRight(
'propal',
'creer') && $object->status == 1) {
1562 $langs->load(
"propal");
1563 print
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/comm/propal/card.php?socid='.$object->id.
'&action=create">'.$langs->trans(
"AddProp").
'</a></div>';
1566 if (
isModEnabled(
'commande') && $user->hasRight(
'commande',
'creer') && $object->status == 1) {
1567 $langs->load(
"orders");
1568 print
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/commande/card.php?socid='.$object->id.
'&action=create">'.$langs->trans(
"AddOrder").
'</a></div>';
1571 if (!empty($user->rights->contrat->creer) && $object->status == 1) {
1572 $langs->load(
"contracts");
1573 print
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/contrat/card.php?socid='.$object->id.
'&action=create">'.$langs->trans(
"AddContract").
'</a></div>';
1576 if (
isModEnabled(
'ficheinter') && $user->hasRight(
'ficheinter',
'creer') && $object->status == 1) {
1577 $langs->load(
"fichinter");
1578 print
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/fichinter/card.php?socid='.$object->id.
'&action=create">'.$langs->trans(
"AddIntervention").
'</a></div>';
1582 if ($user->socid == 0) {
1583 if (
isModEnabled(
'deplacement') && $object->status == 1) {
1584 $langs->load(
"trips");
1585 print
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/compta/deplacement/card.php?socid='.$object->id.
'&action=create">'.$langs->trans(
"AddTrip").
'</a></div>';
1589 if (empty($user->rights->facture->creer)) {
1590 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"NotAllowed")).
'" href="#">'.$langs->trans(
"AddBill").
'</a></div>';
1592 $langs->loadLangs(array(
"orders",
"bills"));
1595 if ($object->client != 0 && $object->client != 2) {
1596 if (!empty($orders2invoice) && $orders2invoice > 0) {
1597 print
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/commande/list.php?socid='.$object->id.
'&search_billed=0&autoselectall=1">'.$langs->trans(
"CreateInvoiceForThisCustomer").
'</a></div>';
1599 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"NoOrdersToInvoice")).
'" href="#">'.$langs->trans(
"CreateInvoiceForThisCustomer").
'</a></div>';
1602 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"ThirdPartyMustBeEditAsCustomer")).
'" href="#">'.$langs->trans(
"AddBill").
'</a></div>';
1606 if ($object->client != 0 && $object->client != 2) {
1607 print
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/compta/facture/card.php?action=create&socid='.$object->id.
'">'.$langs->trans(
"AddBill").
'</a></div>';
1609 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"ThirdPartyMustBeEditAsCustomer")).
'" href="#">'.$langs->trans(
"AddBill").
'</a></div>';
1616 if (
isModEnabled(
'agenda') && !empty($conf->global->MAIN_REPEATTASKONEACHTAB) && $object->status == 1) {
1617 if ($user->rights->agenda->myactions->create) {
1618 print
'<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.
'/comm/action/card.php?action=create&socid='.$object->id.
'">'.$langs->trans(
"AddAction").
'</a></div>';
1620 print
'<div class="inline-block divButAction"><a class="butAction" title="'.dol_escape_js($langs->trans(
"NotAllowed")).
'" href="#">'.$langs->trans(
"AddAction").
'</a></div>';
1627 if (!empty($conf->global->MAIN_DUPLICATE_CONTACTS_TAB_ON_CUSTOMER_CARD)) {
1629 show_contacts($conf, $langs, $db, $object, $_SERVER[
"PHP_SELF"].
'?socid='.$object->id);
1632 if (!empty($conf->global->MAIN_REPEATTASKONEACHTAB)) {
1642 $langs->load(
"errors");
1643 print $langs->trans(
'ErrorRecordNotFound');
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.
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Class to manage members of a foundation.
Class to manage customers or prospects.
Class to manage customers orders.
Class to manage contracts.
Class to manage shipments.
Class to manage invoices.
Class to manage invoice templates.
Class to manage interventions.
Class to manage proposals.
Class to manage Dolibarr users.
show_contacts($conf, $langs, $db, $object, $backtopage='', $showuserlogin=0)
Show html area for list of contacts.
show_actions_todo($conf, $langs, $db, $filterobj, $objcon='', $noprint=0, $actioncode='')
Show html area with actions to do.
show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint=0, $actioncode='', $donetodo='done', $filters=array(), $sortfield='a.datep, a.id', $sortorder='DESC', $module='')
Show html area with actions (done or not, ignore the name of function).
societe_prepare_head(Societe $object)
Return array of tabs to used on pages for third parties cards.
if(isModEnabled('facture') && $user->hasRight('facture', 'lire')) if((isModEnabled('fournisseur') &&empty($conf->global->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') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $sql
Social contributions to pay.
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0, $nbsecondsold=0)
Scan a directory and return a list of files/directories.
completeFileArrayWithDatabaseInfo(&$filearray, $relativedir)
Complete $filearray with data from database.
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.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
showValueWithClipboardCPButton($valuetocopy, $showonlyonhover=1, $texttoshow='')
Create a button to copy $valuetocopy in the clipboard (for copy and paste feature).
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
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.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
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_action($titlealt, $numaction, $picto='', $moreatt='')
Show logo action.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_now($mode='auto')
Return date for now.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_getIdFromCode($db, $key, $tablename, $fieldkey='code', $fieldid='id', $entityfilter=0, $filters='')
Return an id or code from a code or id.
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by second index function, which produces ascending (default) or descending output...
newToken()
Return the value of token currently saved into session with name 'newtoken'.
dol_clone($object, $native=0)
Create a clone of instance of object (new instance with same value for each properties) With native =...
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_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
isModEnabled($module)
Is Dolibarr module enabled.
img_edit($titlealt='default', $float=0, $other='')
Show logo editer/modifier fiche.
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.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.