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');