36require
'../main.inc.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
40require_once DOL_DOCUMENT_ROOT.
'/societe/class/client.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/contact/class/contact.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
44require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
45if (isModEnabled(
'facture')) {
46 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
47 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture-rec.class.php';
49if (isModEnabled(
"propal")) {
50 require_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
52if (isModEnabled(
'commande')) {
53 require_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
55if (isModEnabled(
"expedition")) {
56 require_once DOL_DOCUMENT_ROOT.
'/expedition/class/expedition.class.php';
58if (isModEnabled(
'contrat')) {
59 require_once DOL_DOCUMENT_ROOT.
'/contrat/class/contrat.class.php';
61if (isModEnabled(
'adherent')) {
62 require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
64if (isModEnabled(
'ficheinter')) {
65 require_once DOL_DOCUMENT_ROOT.
'/fichinter/class/fichinter.class.php';
69$langs->loadLangs(array(
'companies',
'banks'));
71if (isModEnabled(
'contrat')) {
72 $langs->load(
"contracts");
74if (isModEnabled(
'commande')) {
75 $langs->load(
"orders");
77if (isModEnabled(
"expedition")) {
78 $langs->load(
"sendings");
80if (isModEnabled(
'facture')) {
81 $langs->load(
"bills");
83if (isModEnabled(
'project')) {
84 $langs->load(
"projects");
86if (isModEnabled(
'ficheinter')) {
87 $langs->load(
"interventions");
89if (isModEnabled(
'notification')) {
90 $langs->load(
"mails");
93$action =
GETPOST(
'action',
'aZ09');
97$limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : $conf->liste_limit;
98$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
99$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
100$page = GETPOSTISSET(
'pageplusone') ? (
GETPOST(
'pageplusone') - 1) :
GETPOST(
"page",
'int');
101if (empty($page) || $page == -1) {
104$offset = $limit * $page;
105$pageprev = $page - 1;
106$pagenext = $page + 1;
113$cancel =
GETPOST(
'cancel',
'alpha');
120$extrafields->fetch_name_optionals_label($object->table_element);
123$hookmanager->initHooks(array(
'thirdpartycomm',
'globalcard'));
127if ($id > 0 && empty($object->id)) {
129 $res = $object->fetch($id);
130 if ($object->id < 0) {
134if ($object->id > 0) {
135 if (!($object->client > 0) || !$user->hasRight(
'societe',
'lire')) {
141if ($user->socid > 0) {
144$result =
restrictedArea($user,
'societe', $object->id,
'&societe',
'',
'fk_soc',
'rowid', 0);
151$parameters = array(
'id' => $id,
'socid' => $id);
152$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
157if (empty($reshook)) {
163 if ($action ==
'setcustomeraccountancycode') {
164 $result = $object->fetch($id);
165 $object->code_compta_client =
GETPOST(
"customeraccountancycode");
166 $object->code_compta = $object->code_compta_client;
167 $result = $object->update($object->id, $user, 1, 1, 0);
170 $action =
'editcustomeraccountancycode';
175 if ($action ==
'setconditions' && $user->hasRight(
'societe',
'creer')) {
177 $result = $object->setPaymentTerms(
GETPOST(
'cond_reglement_id',
'int'),
GETPOST(
'cond_reglement_id_deposit_percent',
'alpha'));
184 if ($action ==
'setmode' && $user->hasRight(
'societe',
'creer')) {
186 $result = $object->setPaymentMethods(
GETPOST(
'mode_reglement_id',
'int'));
193 if ($action ==
'settransportmode' && $user->hasRight(
'societe',
'creer')) {
195 $result = $object->setTransportMode(
GETPOST(
'transport_mode_id',
'alpha'));
202 if ($action ==
'setbankaccount' && $user->hasRight(
'societe',
'creer')) {
204 $result = $object->setBankAccount(
GETPOST(
'fk_account',
'int'));
211 if ($action ==
'setshippingmethod' && $user->hasRight(
'societe',
'creer')) {
213 $result = $object->setShippingMethod(
GETPOST(
'shipping_method_id',
'int'));
220 if ($action ==
'setassujtva' && $user->hasRight(
'societe',
'creer')) {
222 $object->tva_assuj =
GETPOST(
'assujtva_value');
223 $result = $object->update($object->id, $user);
230 if ($action ==
'setprospectlevel' && $user->hasRight(
'societe',
'creer')) {
232 $object->fk_prospectlevel =
GETPOST(
'prospect_level_id',
'alpha');
233 $result = $object->update($object->id, $user);
240 if ($action ==
'setstcomm') {
243 $result = $object->update($object->id, $user);
247 $result = $object->fetch($object->id);
252 if ($action ==
'setoutstanding_limit') {
254 $object->outstanding_limit =
GETPOST(
'outstanding_limit');
255 $result = $object->update($object->id, $user);
262 if ($action ==
'setorder_min_amount') {
264 $object->order_min_amount =
price2num(
GETPOST(
'order_min_amount',
'alpha'));
265 $result = $object->update($object->id, $user);
272 if ($action ==
'set_salesrepresentatives' && $user->hasRight(
'societe',
'creer')) {
274 $result = $object->setSalesRep(
GETPOST(
'commercial',
'array'));
277 if ($action ==
'update_extras') {
280 $object->oldcopy =
dol_clone($object, 2);
283 $ret = $extrafields->setOptionalsFromPost(
null, $object,
GETPOST(
'attribute',
'restricthtml'));
288 $result = $object->insertExtraFields(
'COMPANY_MODIFY');
295 $action =
'edit_extras';
300 if ($action ==
'setwarehouse' && $user->hasRight(
'societe',
'creer')) {
301 $result = $object->setWarehouse(
GETPOST(
'fk_warehouse',
'int'));
310$contactstatic =
new Contact($db);
311$userstatic =
new User($db);
312$form =
new Form($db);
315$title = $langs->trans(
"ThirdParty").
" - ".$langs->trans(
'Customer');
316if (
getDolGlobalString(
'MAIN_HTML_TITLE') && preg_match(
'/thirdpartynameonly/', $conf->global->MAIN_HTML_TITLE) && $object->name) {
317 $title = $object->name.
" - ".$langs->trans(
'Customer');
320$help_url =
'EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas|DE:Modul_Geschäftspartner';
325if ($object->id > 0) {
328 print
dol_get_fiche_head($head,
'customer', $langs->trans(
"ThirdParty"), -1,
'company');
330 $linkback =
'<a href="'.DOL_URL_ROOT.
'/societe/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
332 dol_banner_tab($object,
'socid', $linkback, ($user->socid ? 0 : 1),
'rowid',
'nom');
334 print
'<div class="fichecenter"><div class="fichehalfleft">';
336 print
'<div class="underbanner clearboth"></div>';
337 print
'<table class="border centpercent tableforfield">';
340 print
'<tr><td class="titlefield">'.$langs->trans(
'NatureOfThirdParty').
'</td><td>';
341 print $object->getTypeUrl(1);
346 print
'<tr><td>'.$langs->trans(
"Prefix").
'</td><td>';
347 print($object->prefix_comm ? $object->prefix_comm :
' ');
351 if ($object->client) {
352 $langs->load(
"compta");
355 print $langs->trans(
'CustomerCode').
'</td><td>';
357 $tmpcheck = $object->check_codeclient();
358 if ($tmpcheck != 0 && $tmpcheck != -5) {
359 print
' <span class="error">('.$langs->trans(
"WrongCustomerCode").
')</span>';
365 print $form->editfieldkey(
"CustomerAccountancyCode",
'customeraccountancycode', $object->code_compta_client, $object, $user->hasRight(
'societe',
'creer'));
367 print $form->editfieldval(
"CustomerAccountancyCode",
'customeraccountancycode', $object->code_compta_client, $object, $user->hasRight(
'societe',
'creer'));
388 if ($mysoc->country_code ==
'ES') {
390 if ($mysoc->localtax1_assuj ==
"1") {
391 print
'<tr><td class="nowrap">'.$langs->transcountry(
"LocalTax1IsUsed", $mysoc->country_code).
'</td><td>';
392 print
yn($object->localtax1_assuj);
395 if ($mysoc->localtax1_assuj ==
"1") {
396 print
'<tr><td class="nowrap">'.$langs->transcountry(
"LocalTax2IsUsed", $mysoc->country_code).
'</td><td>';
397 print
yn($object->localtax2_assuj);
403 print
'<tr><td class="nowrap">'.$langs->trans(
'VATIntra').
'</td><td>';
408 $langs->load(
'bills');
410 print
'<table width="100%" class="nobordernopadding"><tr><td>';
411 print $langs->trans(
'PaymentConditions');
413 if (($action !=
'editconditions') && $user->hasRight(
'societe',
'creer')) {
414 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>';
416 print
'</tr></table>';
418 if ($action ==
'editconditions') {
419 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->cond_reglement_id,
'cond_reglement_id', 1,
'', 1, $object->deposit_percent);
421 $form->form_conditions_reglement($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->cond_reglement_id,
'none', 0,
'', 1, $object->deposit_percent);
427 print
'<tr><td class="nowrap">';
428 print
'<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
429 print $langs->trans(
'PaymentMode');
431 if (($action !=
'editmode') && $user->hasRight(
'societe',
'creer')) {
432 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>';
434 print
'</tr></table>';
436 if ($action ==
'editmode') {
437 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->mode_reglement_id,
'mode_reglement_id',
'CRDT', 1, 1);
439 $form->form_modes_reglement($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->mode_reglement_id,
'none');
444 if (isModEnabled(
"banque")) {
446 print
'<tr><td class="nowrap">';
447 print
'<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
448 print $langs->trans(
'PaymentBankAccount');
450 if (($action !=
'editbankaccount') && $user->hasRight(
'societe',
'creer')) {
451 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>';
453 print
'</tr></table>';
455 if ($action ==
'editbankaccount') {
456 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->fk_account,
'fk_account', 1);
458 $form->formSelectAccount($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->fk_account,
'none');
464 $isCustomer = ($object->client == 1 || $object->client == 3);
468 print
'<tr><td class="nowrap">';
469 print
'<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
470 print $langs->trans(
"CustomerRelativeDiscountShort");
471 print
'<td><td class="right">';
472 if ($user->hasRight(
'societe',
'creer') && !$user->socid > 0) {
473 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>';
475 print
'</td></tr></table>';
476 print
'</td><td>'.($object->remise_percent ?
'<a href="'.DOL_URL_ROOT.
'/comm/remise.php?id='.$object->id.
'">'.$object->remise_percent.
'%</a>' :
'').
'</td>';
480 print
'<tr><td class="nowrap">';
481 print
'<table width="100%" class="nobordernopadding">';
482 print
'<tr><td class="nowrap">';
483 print $langs->trans(
"CustomerAbsoluteDiscountShort");
484 print
'<td><td class="right">';
485 if ($user->hasRight(
'societe',
'creer') && !$user->socid > 0) {
486 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>';
488 print
'</td></tr></table>';
491 $amount_discount = $object->getAvailableDiscounts();
492 if ($amount_discount < 0) {
495 if ($amount_discount > 0) {
496 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>';
504 if ($object->client) {
505 print
'<tr class="nowrap">';
507 print $form->editfieldkey(
"OutstandingBill",
'outstanding_limit', $object->outstanding_limit, $object, $user->hasRight(
'societe',
'creer'));
509 $limit_field_type = (
getDolGlobalString(
'MAIN_USE_JQUERY_JEDITABLE')) ?
'numeric' :
'amount';
510 print $form->editfieldval(
"OutstandingBill",
'outstanding_limit', $object->outstanding_limit, $object, $user->hasRight(
'societe',
'creer'), $limit_field_type, ($object->outstanding_limit !=
'' ?
price($object->outstanding_limit) :
''));
515 if ($object->client) {
517 print
'<!-- Minimim amount for orders -->'.
"\n";
518 print
'<tr class="nowrap">';
520 print $form->editfieldkey(
"OrderMinAmount",
'order_min_amount', $object->order_min_amount, $object, $user->hasRight(
'societe',
'creer'));
522 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) :
''));
531 print
'<tr><td class="nowrap">';
532 print
'<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
533 print $langs->trans(
"PriceLevel");
534 print
'<td><td class="right">';
535 if ($user->hasRight(
'societe',
'creer')) {
536 print
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/comm/multiprix.php?id='.$object->id.
'">'.
img_edit($langs->trans(
"Modify")).
'</a>';
538 print
'</td></tr></table>';
540 print $object->price_level;
541 $keyforlabel =
'PRODUIT_MULTIPRICES_LABEL'.$object->price_level;
551 $langs->load(
'stocks');
552 require_once DOL_DOCUMENT_ROOT.
'/product/class/html.formproduct.class.php';
554 print
'<tr class="nowrap">';
556 print $form->editfieldkey(
"Warehouse",
'warehouse',
'', $object, $user->hasRight(
'societe',
'creer'));
558 if ($action ==
'editwarehouse') {
559 $formproduct->formSelectWarehouses($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->fk_warehouse,
'fk_warehouse', 1);
561 if ($object->fk_warehouse > 0) {
562 print
img_picto(
'',
'stock',
'class="paddingrightonly"');
564 $formproduct->formSelectWarehouses($_SERVER[
'PHP_SELF'].
'?id='.$object->id, $object->fk_warehouse,
'none');
572 print
'<tr><td class="nowrap">';
573 print
'<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
574 print $langs->trans(
'SendingMethod');
576 if (($action !=
'editshipping') && $user->hasRight(
'societe',
'creer')) {
577 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>';
579 print
'</tr></table>';
581 if ($action ==
'editshipping') {
582 $form->formSelectShippingMethod($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->shipping_method_id,
'shipping_method_id', 1);
584 $form->formSelectShippingMethod($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->shipping_method_id,
'none');
590 if (isModEnabled(
'intracommreport')) {
592 print
'<tr><td class="nowrap">';
593 print
'<table class="centpercent nobordernopadding"><tr><td class="nowrap">';
594 print $langs->trans(
'IntracommReportTransportMode');
596 if (($action !=
'edittransportmode') && $user->hasRight(
'societe',
'creer')) {
597 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>';
599 print
'</tr></table>';
601 if ($action ==
'edittransportmode') {
602 $form->formSelectTransportMode($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, (!empty($object->transport_mode_id) ? $object->transport_mode_id :
''),
'transport_mode_id', 1);
604 $form->formSelectTransportMode($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, (!empty($object->transport_mode_id) ? $object->transport_mode_id :
''),
'none');
611 if (isModEnabled(
'categorie') && $user->hasRight(
'categorie',
'lire')) {
612 $langs->load(
"categories");
613 print
'<tr><td>'.$langs->trans(
"CustomersCategoriesShort").
'</td>';
615 print $form->showCategories($object->id, Categorie::TYPE_CUSTOMER, 1);
620 $parameters = array(
'socid'=>$object->id);
621 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
624 include DOL_DOCUMENT_ROOT.
'/societe/tpl/linesalesrepresentative.tpl.php';
627 if (isModEnabled(
'adherent')) {
628 $langs->load(
"members");
629 $langs->load(
"users");
631 print
'<tr><td class="titlefield">'.$langs->trans(
"LinkedToDolibarrMember").
'</td>';
634 $result = $adh->fetch(
'',
'', $object->id);
636 $adh->ref = $adh->getFullName($langs);
637 print $adh->getNomUrl(-1);
639 print
'<span class="opacitymedium">'.$langs->trans(
"ThirdpartyNotLinkedToMember").
'</span>';
647 print
'</div><div class="fichehalfright">';
650 if ($object->client == 2 || $object->client == 3) {
651 print
'<div class="underbanner clearboth"></div>';
652 print
'<table class="border centpercent tableforfield">';
655 print
'<tr><td class="titlefield nowrap">';
656 print
'<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
657 print $langs->trans(
'ProspectLevel');
659 if ($action !=
'editlevel' && $user->hasRight(
'societe',
'creer')) {
660 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>';
662 print
'</tr></table>';
664 if ($action ==
'editlevel') {
665 $formcompany->form_prospect_level($_SERVER[
'PHP_SELF'].
'?socid='.$object->id, $object->fk_prospectlevel,
'prospect_level_id', 1);
667 print $object->getLibProspLevel();
673 $object->loadCacheOfProspStatus();
674 print
'<tr><td>'.$langs->trans(
"StatusProsp").
'</td><td>'.$object->getLibProspCommStatut(4, $object->cacheprospectstatus[$object->stcomm_id][
'label']);
675 print
' ';
676 print
'<div class="floatright">';
677 foreach ($object->cacheprospectstatus as $key => $val) {
678 $titlealt =
'default';
679 if (!empty($val[
'code']) && !in_array($val[
'code'], array(
'ST_NO',
'ST_NEVER',
'ST_TODO',
'ST_PEND',
'ST_DONE'))) {
680 $titlealt = $val[
'label'];
682 if ($object->stcomm_id != $val[
'id']) {
683 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>';
686 print
'</div></td></tr>';
691 print
'<div class="underbanner underbanner-before-box clearboth"></div><br>';
697 $MAXLIST = $conf->global->MAIN_SIZE_SHORTLIST_LIMIT;
700 $boxstat .=
'<div class="box divboxtable box-halfright">';
701 $boxstat .=
'<table summary="'.dol_escape_htmltag($langs->trans(
"DolibarrStateBoard")).
'" class="border boxtable boxtablenobottom boxtablenotop boxtablenomarginbottom centpercent">';
702 $boxstat .=
'<tr class="impair nohover"><td colspan="2" class="tdboxstats nohover">';
704 if (isModEnabled(
"propal") && $user->hasRight(
'propal',
'lire')) {
706 $tmp = $object->getOutstandingProposals();
707 $outstandingOpened = $tmp[
'opened'];
708 $outstandingTotal = $tmp[
'total_ht'];
709 $outstandingTotalIncTax = $tmp[
'total_ttc'];
710 $text = $langs->trans(
"OverAllProposals");
711 $link = DOL_URL_ROOT.
'/comm/propal/list.php?socid='.$object->id;
714 $boxstat .=
'<a href="'.$link.
'" class="boxstatsindicator thumbstat nobold nounderline">';
716 $boxstat .=
'<div class="boxstats" title="'.dol_escape_htmltag($text).
'">';
717 $boxstat .=
'<span class="boxstatstext">'.img_object(
"", $icon).
' <span>'.$text.
'</span></span><br>';
718 $boxstat .=
'<span class="boxstatsindicator">'.price($outstandingTotal, 1, $langs, 1, -1, -1, $conf->currency).
'</span>';
719 $boxstat .=
'</div>';
725 if (isModEnabled(
'commande') && $user->hasRight(
'commande',
'lire')) {
727 $tmp = $object->getOutstandingOrders();
728 $outstandingOpened = $tmp[
'opened'];
729 $outstandingTotal = $tmp[
'total_ht'];
730 $outstandingTotalIncTax = $tmp[
'total_ttc'];
731 $text = $langs->trans(
"OverAllOrders");
732 $link = DOL_URL_ROOT.
'/commande/list.php?socid='.$object->id;
735 $boxstat .=
'<a href="'.$link.
'" class="boxstatsindicator thumbstat nobold nounderline">';
737 $boxstat .=
'<div class="boxstats" title="'.dol_escape_htmltag($text).
'">';
738 $boxstat .=
'<span class="boxstatstext">'.img_object(
"", $icon).
' <span>'.$text.
'</span></span><br>';
739 $boxstat .=
'<span class="boxstatsindicator">'.price($outstandingTotal, 1, $langs, 1, -1, -1, $conf->currency).
'</span>';
740 $boxstat .=
'</div>';
746 if (isModEnabled(
'facture') && $user->hasRight(
'facture',
'lire')) {
748 $tmp = $object->getOutstandingBills(
'customer', 0);
749 $outstandingOpened = $tmp[
'opened'];
750 $outstandingTotal = $tmp[
'total_ht'];
751 $outstandingTotalIncTax = $tmp[
'total_ttc'];
753 $text = $langs->trans(
"OverAllInvoices");
754 $link = DOL_URL_ROOT.
'/compta/facture/list.php?socid='.$object->id;
757 $boxstat .=
'<a href="'.$link.
'" class="boxstatsindicator thumbstat nobold nounderline">';
759 $boxstat .=
'<div class="boxstats" title="'.dol_escape_htmltag($text).
'">';
760 $boxstat .=
'<span class="boxstatstext">'.img_object(
"", $icon).
' <span>'.$text.
'</span></span><br>';
761 $boxstat .=
'<span class="boxstatsindicator">'.price($outstandingTotal, 1, $langs, 1, -1, -1, $conf->currency).
'</span>';
762 $boxstat .=
'</div>';
769 if ($object->outstanding_limit !=
'' && $object->outstanding_limit < $outstandingOpened) {
770 $warn =
' '.img_warning($langs->trans(
"OutstandingBillReached"));
772 $text = $langs->trans(
"CurrentOutstandingBill");
773 $link = DOL_URL_ROOT.
'/compta/recap-compta.php?socid='.$object->id;
776 $boxstat .=
'<a href="'.$link.
'" class="boxstatsindicator thumbstat nobold nounderline">';
778 $boxstat .=
'<div class="boxstats" title="'.dol_escape_htmltag($text).
'">';
779 $boxstat .=
'<span class="boxstatstext">'.img_object(
"", $icon).
' <span>'.$text.
'</span></span><br>';
780 $boxstat .=
'<span class="boxstatsindicator'.($outstandingOpened > 0 ?
' amountremaintopay' :
'').
'">'.
price($outstandingOpened, 1, $langs, 1, -1, -1, $conf->currency).$warn.
'</span>';
781 $boxstat .=
'</div>';
786 $tmp = $object->getOutstandingBills(
'customer', 1);
787 $outstandingOpenedLate = $tmp[
'opened'];
788 if ($outstandingOpened != $outstandingOpenedLate && !empty($outstandingOpenedLate)) {
790 if ($object->outstanding_limit !=
'' && $object->outstanding_limit < $outstandingOpenedLate) {
791 $warn =
' '.img_warning($langs->trans(
"OutstandingBillReached"));
793 $text = $langs->trans(
"CurrentOutstandingBillLate");
794 $link = DOL_URL_ROOT.
'/compta/recap-compta.php?socid='.$object->id;
797 $boxstat .=
'<a href="'.$link.
'" class="boxstatsindicator thumbstat nobold nounderline">';
799 $boxstat .=
'<div class="boxstats" title="'.dol_escape_htmltag($text).
'">';
800 $boxstat .=
'<span class="boxstatstext">'.img_object(
"", $icon).
' <span>'.$text.
'</span></span><br>';
801 $boxstat .=
'<span class="boxstatsindicator'.($outstandingOpenedLate > 0 ?
' amountremaintopay' :
'').
'">'.
price($outstandingOpenedLate, 1, $langs, 1, -1, -1, $conf->currency).$warn.
'</span>';
802 $boxstat .=
'</div>';
809 $parameters = array();
810 $reshook = $hookmanager->executeHooks(
'addMoreBoxStatsCustomer', $parameters, $object, $action);
811 if (empty($reshook)) {
812 $boxstat .= $hookmanager->resPrint;
815 $boxstat .=
'</td></tr>';
816 $boxstat .=
'</table>';
817 $boxstat .=
'</div>';
825 if (isModEnabled(
"propal") && $user->hasRight(
'propal',
'lire')) {
826 $langs->load(
"propal");
828 $sql =
"SELECT s.nom, s.rowid, p.rowid as propalid, p.fk_statut, p.total_ht";
829 $sql .=
", p.total_tva";
830 $sql .=
", p.total_ttc";
831 $sql .=
", p.ref, p.ref_client, p.remise";
832 $sql .=
", p.datep as dp, p.fin_validite as date_limit, p.entity";
833 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"propal as p, ".MAIN_DB_PREFIX.
"c_propalst as c";
834 $sql .=
" WHERE p.fk_soc = s.rowid AND p.fk_statut = c.id";
835 $sql .=
" AND s.rowid = ".((int) $object->id);
836 $sql .=
" AND p.entity IN (".getEntity(
'propal').
")";
837 $sql .=
" ORDER BY p.datep DESC";
839 $resql = $db->query($sql);
841 $propal_static =
new Propal($db);
843 $num = $db->num_rows($resql);
845 print
'<div class="div-table-responsive-no-min">';
846 print
'<table class="noborder centpercent lastrecordtable">';
848 print
'<tr class="liste_titre">';
849 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.
'"><span class="hideonsmartphone">'.$langs->trans(
"AllPropals").
'</span><span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
850 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>';
851 print
'</tr></table></td>';
856 while ($i < $num && $i < $MAXLIST) {
857 $objp = $db->fetch_object($resql);
859 print
'<tr class="oddeven">';
860 print
'<td class="nowraponall">';
861 $propal_static->id = $objp->propalid;
862 $propal_static->ref = $objp->ref;
863 $propal_static->ref_client = $objp->ref_client;
864 $propal_static->ref_customer = $objp->ref_client;
865 $propal_static->total_ht = $objp->total_ht;
866 $propal_static->total_tva = $objp->total_tva;
867 $propal_static->total_ttc = $objp->total_ttc;
868 print $propal_static->getNomUrl(1);
873 if (!empty($filedir)) {
874 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
876 if (is_array($file_list)) {
880 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
881 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
888 if (!empty($sortfield) && !empty($sortorder)) {
893 print $formfile->showPreview($file_list, $propal_static->element, $relativepath, 0);
899 if (($db->jdate($objp->date_limit) < ($now - $conf->propal->cloture->warning_delay)) && $objp->fk_statut == $propal_static::STATUS_VALIDATED) {
900 print
" ".img_warning();
902 print
'</td><td class="right" width="80px">'.dol_print_date($db->jdate($objp->dp),
'day').
"</td>\n";
903 print
'<td class="right nowraponall">'.price($objp->total_ht).
'</td>';
904 print
'<td class="right" style="min-width: 60px" class="nowrap">'.$propal_static->LibStatut($objp->fk_statut, 5).
'</td></tr>';
921 if (isModEnabled(
'commande') && $user->hasRight(
'commande',
'lire')) {
924 $sql =
"SELECT s.nom, s.rowid";
925 $sql .=
", c.rowid as cid, c.entity, c.total_ht";
926 $sql .=
", c.total_tva";
927 $sql .=
", c.total_ttc";
928 $sql .=
", c.ref, c.ref_client, c.fk_statut, c.facture";
929 $sql .=
", c.date_commande as dc";
930 $sql .=
", c.facture as billed";
931 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"commande as c";
932 $sql .=
" WHERE c.fk_soc = s.rowid ";
933 $sql .=
" AND s.rowid = ".((int) $object->id);
934 $sql .=
" AND c.entity IN (".getEntity(
'commande').
')';
935 $sql .=
" ORDER BY c.date_commande DESC";
937 $resql = $db->query($sql);
939 $commande_static =
new Commande($db);
941 $num = $db->num_rows($resql);
944 $sql2 =
'SELECT s.nom, s.rowid as socid, s.client, c.rowid, c.ref, c.total_ht, c.ref_client,';
945 $sql2 .=
' c.date_valid, c.date_commande, c.date_livraison, c.fk_statut, c.facture as billed';
946 $sql2 .=
' FROM '.MAIN_DB_PREFIX.
'societe as s';
947 $sql2 .=
', '.MAIN_DB_PREFIX.
'commande as c';
948 $sql2 .=
' WHERE c.fk_soc = s.rowid';
949 $sql2 .=
' AND s.rowid = '.((int) $object->id);
951 $sql2 .=
" AND ((c.fk_statut IN (1,2)) OR (c.fk_statut = 3 AND c.facture = 0))";
953 $resql2 = $db->query($sql2);
954 $orders2invoice = $db->num_rows($resql2);
957 print
'<div class="div-table-responsive-no-min">';
958 print
'<table class="noborder centpercent lastrecordtable">';
960 print
'<tr class="liste_titre">';
961 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.
'"><span class="hideonsmartphone">'.$langs->trans(
"AllOrders").
'</span><span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
962 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>';
963 print
'</tr></table></td>';
968 while ($i < $num && $i < $MAXLIST) {
969 $objp = $db->fetch_object($resql);
971 $commande_static->id = $objp->cid;
972 $commande_static->ref = $objp->ref;
973 $commande_static->ref_client = $objp->ref_client;
974 $commande_static->total_ht = $objp->total_ht;
975 $commande_static->total_tva = $objp->total_tva;
976 $commande_static->total_ttc = $objp->total_ttc;
977 $commande_static->billed = $objp->billed;
979 print
'<tr class="oddeven">';
980 print
'<td class="nowraponall">';
981 print $commande_static->getNomUrl(1);
983 $filedir = $conf->commande->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
985 if (!empty($filedir)) {
986 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
988 if (is_array($file_list)) {
992 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
993 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1000 if (!empty($sortfield) && !empty($sortorder)) {
1005 print $formfile->showPreview($file_list, $commande_static->element, $relativepath, 0, $param);
1013 print
'<td class="right" width="80px">'.dol_print_date($db->jdate($objp->dc),
'day').
"</td>\n";
1014 print
'<td class="right nowraponall">'.price($objp->total_ht).
'</td>';
1015 print
'<td class="right" style="min-width: 60px" class="nowrap">'.$commande_static->LibStatut($objp->fk_statut, $objp->facture, 5).
'</td></tr>';
1032 if (isModEnabled(
"expedition") && $user->hasRight(
'expedition',
'lire')) {
1033 $sql =
'SELECT e.rowid as id';
1034 $sql .=
', e.ref, e.entity';
1035 $sql .=
', e.date_creation';
1036 $sql .=
', e.fk_statut as statut';
1038 $sql .=
', s.rowid as socid';
1039 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"expedition as e";
1040 $sql .=
" WHERE e.fk_soc = s.rowid AND s.rowid = ".((int) $object->id);
1041 $sql .=
" AND e.entity IN (".getEntity(
'expedition').
")";
1042 $sql .=
' GROUP BY e.rowid';
1043 $sql .=
', e.ref, e.entity';
1044 $sql .=
', e.date_creation';
1045 $sql .=
', e.fk_statut';
1047 $sql .=
', s.rowid';
1048 $sql .=
" ORDER BY e.date_creation DESC";
1050 $resql = $db->query($sql);
1054 $num = $db->num_rows($resql);
1056 print
'<div class="div-table-responsive-no-min">';
1057 print
'<table class="noborder centpercent lastrecordtable">';
1059 print
'<tr class="liste_titre">';
1060 print
'<td colspan="4"><table class="centpercent 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.
'"><span class="hideonsmartphone">'.$langs->trans(
"AllSendings").
'</span><span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
1061 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>';
1062 print
'</tr></table></td>';
1067 while ($i < $num && $i < $MAXLIST) {
1068 $objp = $db->fetch_object($resql);
1070 $sendingstatic->id = $objp->id;
1071 $sendingstatic->ref = $objp->ref;
1073 print
'<tr class="oddeven">';
1074 print
'<td class="nowraponall">';
1075 print $sendingstatic->getNomUrl(1);
1077 $filedir = $conf->expedition->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
1079 if (!empty($filedir)) {
1080 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
1082 if (is_array($file_list)) {
1086 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
1087 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1094 if (!empty($sortfield) && !empty($sortorder)) {
1099 print $formfile->showPreview($file_list, $sendingstatic->table_element, $relativepath, 0, $param);
1106 if ($objp->date_creation > 0) {
1107 print
'<td class="right" width="80px">'.dol_print_date($db->jdate($objp->date_creation),
'day').
'</td>';
1109 print
'<td class="right"><b>!!!</b></td>';
1112 print
'<td class="nowrap right centpercent">'.$sendingstatic->LibStatut($objp->statut, 5).
'</td>';
1130 if (isModEnabled(
'contrat') && $user->hasRight(
'contrat',
'lire')) {
1131 $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,";
1132 $sql .=
" c.last_main_doc, c.model_pdf";
1133 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"contrat as c";
1134 $sql .=
" WHERE c.fk_soc = s.rowid ";
1135 $sql .=
" AND s.rowid = ".((int) $object->id);
1136 $sql .=
" AND c.entity IN (".getEntity(
'contract').
")";
1137 $sql .=
" ORDER BY c.datec DESC";
1139 $resql = $db->query($sql);
1143 $num = $db->num_rows($resql);
1145 print
'<div class="div-table-responsive-no-min">';
1146 print
'<table class="noborder centpercent lastrecordtable">';
1148 print
'<tr class="liste_titre">';
1149 print
'<td colspan="5"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans(
"LastContracts", ($num <= $MAXLIST ?
"" : $MAXLIST)).
'</td>';
1150 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>';
1152 print
'</tr></table></td>';
1157 while ($i < $num && $i < $MAXLIST) {
1158 $objp = $db->fetch_object($resql);
1160 $contrat->id = $objp->id;
1161 $contrat->ref = $objp->ref ? $objp->ref : $objp->id;
1162 $contrat->ref_customer = $objp->refcus;
1163 $contrat->ref_supplier = $objp->refsup;
1164 $contrat->statut = $objp->contract_status;
1165 $contrat->last_main_doc = $objp->last_main_doc;
1166 $contrat->model_pdf = $objp->model_pdf;
1167 $contrat->fetch_lines();
1170 foreach ($contrat->lines as $line) {
1171 if ($contrat->statut == Contrat::STATUS_VALIDATED && $line->statut == ContratLigne::STATUS_OPEN) {
1172 if (((!empty($line->date_end) ? $line->date_end : 0) + $conf->contrat->services->expires->warning_delay) < $now) {
1178 print
'<tr class="oddeven">';
1179 print
'<td class="nowraponall">';
1180 print $contrat->getNomUrl(1, 12);
1181 if (!empty($contrat->model_pdf)) {
1183 $filedir = $conf->contrat->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
1185 if (!empty($filedir)) {
1186 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
1188 if (is_array($file_list)) {
1192 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
1193 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1200 if (!empty($sortfield) && !empty($sortorder)) {
1205 print $formfile->showPreview($file_list, $contrat->element, $relativepath, 0);
1214 print
'<td class="nowrap">'.dol_trunc($objp->refsup, 12).
"</td>\n";
1216 print
'<td class="right" width="80px"><span title="'.$langs->trans(
"DateContract").
'">'.
dol_print_date($db->jdate($objp->dcon),
'day').
"</span></td>\n";
1217 print
'<td width="20"> </td>';
1218 print
'<td class="nowraponall right">';
1219 print $contrat->getLibStatut(4);
1238 if (isModEnabled(
'ficheinter') && $user->hasRight(
'ficheinter',
'lire')) {
1239 $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";
1240 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"fichinter as f";
1241 $sql .=
" WHERE f.fk_soc = s.rowid";
1242 $sql .=
" AND s.rowid = ".((int) $object->id);
1243 $sql .=
" AND f.entity IN (".getEntity(
'intervention').
")";
1244 $sql .=
" ORDER BY f.tms DESC";
1246 $resql = $db->query($sql);
1250 $num = $db->num_rows($resql);
1252 print
'<div class="div-table-responsive-no-min">';
1253 print
'<table class="noborder centpercent lastrecordtable">';
1255 print
'<tr class="liste_titre">';
1256 print
'<td colspan="3"><table class="centpercent 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.
'"><span class="hideonsmartphone">'.$langs->trans(
"AllInterventions").
'</span><span class="badge marginleftonlyshort">'.$num.
'</span></td>';
1257 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>';
1258 print
'</tr></table></td>';
1263 while ($i < $num && $i < $MAXLIST) {
1264 $objp = $db->fetch_object($resql);
1266 $fichinter_static->id = $objp->id;
1267 $fichinter_static->ref = $objp->ref;
1268 $fichinter_static->statut = $objp->fk_statut;
1270 print
'<tr class="oddeven">';
1271 print
'<td class="nowraponall">';
1272 print $fichinter_static->getNomUrl(1);
1274 $filedir = $conf->ficheinter->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
1276 if (!empty($filedir)) {
1277 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
1279 if (is_array($file_list)) {
1283 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
1284 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1291 if (!empty($sortfield) && !empty($sortorder)) {
1296 print $formfile->showPreview($file_list, $fichinter_static->element, $relativepath, 0);
1304 print
'<td class="right" style="min-width: 60px">'.convertSecondToTime($objp->duration).
'</td>'.
"\n";
1305 print
'<td class="nowrap right" style="min-width: 60px">'.$fichinter_static->getLibStatut(5).
'</td>'.
"\n";
1324 if (isModEnabled(
'facture') && $user->hasRight(
'facture',
'lire')) {
1325 $sql =
'SELECT f.rowid as id, f.titre as ref';
1326 $sql .=
', f.total_ht';
1327 $sql .=
', f.total_tva';
1328 $sql .=
', f.total_ttc';
1329 $sql .=
', f.datec as dc';
1330 $sql .=
', f.date_last_gen, f.date_when';
1331 $sql .=
', f.frequency';
1332 $sql .=
', f.unit_frequency';
1333 $sql .=
', f.suspended as suspended';
1334 $sql .=
', s.nom, s.rowid as socid';
1335 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s,".MAIN_DB_PREFIX.
"facture_rec as f";
1336 $sql .=
" WHERE f.fk_soc = s.rowid AND s.rowid = ".((int) $object->id);
1337 $sql .=
" AND f.entity IN (".getEntity(
'invoice').
")";
1338 $sql .=
' GROUP BY f.rowid, f.titre, f.total_ht, f.total_tva, f.total_ttc,';
1339 $sql .=
' f.date_last_gen, f.datec, f.frequency, f.unit_frequency,';
1340 $sql .=
' f.suspended, f.date_when,';
1341 $sql .=
' s.nom, s.rowid';
1342 $sql .=
" ORDER BY f.date_last_gen, f.datec DESC";
1344 $resql = $db->query($sql);
1348 $num = $db->num_rows($resql);
1350 print
'<div class="div-table-responsive-no-min">';
1351 print
'<table class="noborder centpercent lastrecordtable">';
1352 print
'<tr class="liste_titre">';
1357 print
'<td colspan="'.$colspan.
'">';
1358 print
'<table class="centpercent nobordernopadding"><tr>';
1359 print
'<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.
'"><span class="hideonsmartphone">'.$langs->trans(
"AllCustomerTemplateInvoices").
'</span><span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
1360 print
'</tr></table>';
1366 while ($i < $num && $i < $MAXLIST) {
1367 $objp = $db->fetch_object($resql);
1369 $invoicetemplate->id = $objp->id;
1370 $invoicetemplate->ref = $objp->ref;
1371 $invoicetemplate->suspended = $objp->suspended;
1372 $invoicetemplate->frequency = $objp->frequency;
1373 $invoicetemplate->unit_frequency = $objp->unit_frequency;
1374 $invoicetemplate->total_ht = $objp->total_ht;
1375 $invoicetemplate->total_tva = $objp->total_tva;
1376 $invoicetemplate->total_ttc = $objp->total_ttc;
1377 $invoicetemplate->date_last_gen = $objp->date_last_gen;
1378 $invoicetemplate->date_when = $objp->date_when;
1380 print
'<tr class="oddeven">';
1381 print
'<td class="tdoverflowmax250">';
1382 print $invoicetemplate->getNomUrl(1);
1385 if ($objp->frequency && $objp->date_last_gen > 0) {
1386 print
'<td class="right" width="80px">'.dol_print_date($db->jdate($objp->date_last_gen),
'day').
'</td>';
1388 if ($objp->dc > 0) {
1389 print
'<td class="right" width="80px">'.dol_print_date($db->jdate($objp->dc),
'day').
'</td>';
1391 print
'<td class="right"><b>!!!</b></td>';
1394 print
'<td class="right nowraponall">';
1395 print
price($objp->total_ht);
1399 print
'<td class="right nowraponall">';
1400 print
price($objp->total_ttc);
1404 print
'<td class="nowrap right" style="min-width: 60px">';
1405 print $langs->trans(
'FrequencyPer_'.$invoicetemplate->unit_frequency, $invoicetemplate->frequency).
' - ';
1406 print($invoicetemplate->LibStatut($invoicetemplate->frequency, $invoicetemplate->suspended, 5, 0));
1425 if (isModEnabled(
'facture') && $user->hasRight(
'facture',
'lire')) {
1426 $sql =
'SELECT f.rowid as facid, f.ref, f.type';
1427 $sql .=
', f.total_ht';
1428 $sql .=
', f.total_tva';
1429 $sql .=
', f.total_ttc';
1430 $sql .=
', f.entity';
1431 $sql .=
', f.datef as df, f.date_lim_reglement as dl, f.datec as dc, f.paye as paye, f.fk_statut as status';
1432 $sql .=
', s.nom, s.rowid as socid';
1433 $sql .=
', SUM(pf.amount) as am';
1434 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s,".MAIN_DB_PREFIX.
"facture as f";
1435 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'paiement_facture as pf ON f.rowid=pf.fk_facture';
1436 $sql .=
" WHERE f.fk_soc = s.rowid AND s.rowid = ".((int) $object->id);
1437 $sql .=
" AND f.entity IN (".getEntity(
'invoice').
")";
1438 $sql .=
' GROUP BY f.rowid, f.ref, f.type, f.total_ht, f.total_tva, f.total_ttc,';
1439 $sql .=
' f.entity, f.datef, f.date_lim_reglement, f.datec, f.paye, f.fk_statut,';
1440 $sql .=
' s.nom, s.rowid';
1441 $sql .=
" ORDER BY f.datef DESC, f.datec DESC";
1443 $resql = $db->query($sql);
1445 $facturestatic =
new Facture($db);
1447 $num = $db->num_rows($resql);
1449 print
'<div class="div-table-responsive-no-min">';
1450 print
'<table class="noborder centpercent lastrecordtable">';
1451 print
'<tr class="liste_titre">';
1456 print
'<td colspan="'.$colspan.
'">';
1457 print
'<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.
'"><span class="hideonsmartphone">'.$langs->trans(
"AllBills").
'</span><span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
1458 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>';
1459 print
'</tr></table>';
1465 while ($i < $num && $i < $MAXLIST) {
1466 $objp = $db->fetch_object($resql);
1468 $facturestatic->id = $objp->facid;
1469 $facturestatic->ref = $objp->ref;
1470 $facturestatic->type = $objp->type;
1471 $facturestatic->total_ht = $objp->total_ht;
1472 $facturestatic->total_tva = $objp->total_tva;
1473 $facturestatic->total_ttc = $objp->total_ttc;
1474 $facturestatic->statut = $objp->status;
1475 $facturestatic->status = $objp->status;
1476 $facturestatic->paye = $objp->paye;
1477 $facturestatic->alreadypaid = $objp->am;
1478 $facturestatic->totalpaid = $objp->am;
1479 $facturestatic->date = $db->jdate($objp->df);
1480 $facturestatic->date_lim_reglement = $db->jdate($objp->dl);
1482 print
'<tr class="oddeven">';
1483 print
'<td class="nowraponall">';
1484 print $facturestatic->getNomUrl(1);
1486 $filedir = $conf->facture->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
1488 if (!empty($filedir)) {
1489 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
1491 if (is_array($file_list)) {
1495 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
1496 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1503 if (!empty($sortfield) && !empty($sortorder)) {
1508 print $formfile->showPreview($file_list, $facturestatic->element, $relativepath, 0);
1515 if ($objp->df > 0) {
1516 print
'<td width="80px" title="'.dol_escape_htmltag($langs->trans(
'DateInvoice')).
'">'.
dol_print_date($db->jdate($objp->df),
'day').
'</td>';
1518 print
'<td><b>!!!</b></td>';
1520 if ($objp->dl > 0) {
1521 print
'<td width="80px" title="'.dol_escape_htmltag($langs->trans(
'DateMaxPayment')).
'">'.
dol_print_date($db->jdate($objp->dl),
'day').
'</td>';
1523 print
'<td><b>!!!</b></td>';
1525 print
'<td class="right nowraponall">';
1526 print
price($objp->total_ht);
1530 print
'<td class="right nowraponall">';
1531 print
price($objp->total_ttc);
1535 print
'<td class="nowrap right" style="min-width: 60px">'.($facturestatic->LibStatut($objp->paye, $objp->status, 5, $objp->am)).
'</td>';
1551 $parameters = array();
1552 $reshook = $hookmanager->executeHooks(
'addMoreRecentObjects', $parameters, $object, $action);
1556 print $hookmanager->resPrint;
1559 print
'</div></div>';
1560 print
'<div class="clearboth"></div>';
1568 print
'<div class="tabsAction">';
1570 $parameters = array();
1571 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
1573 if (empty($reshook)) {
1574 if ($object->status != 1) {
1575 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"ThirdPartyIsClosed")).
'" href="#">'.$langs->trans(
"ThirdPartyIsClosed").
'</a></div>';
1578 if (isModEnabled(
"propal") && $user->hasRight(
'propal',
'creer') && $object->status == 1) {
1579 $langs->load(
"propal");
1580 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>';
1583 if (isModEnabled(
'commande') && $user->hasRight(
'commande',
'creer') && $object->status == 1) {
1584 $langs->load(
"orders");
1585 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>';
1588 if ($user->hasRight(
'contrat',
'creer') && $object->status == 1) {
1589 $langs->load(
"contracts");
1590 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>';
1593 if (isModEnabled(
'ficheinter') && $user->hasRight(
'ficheinter',
'creer') && $object->status == 1) {
1594 $langs->load(
"fichinter");
1595 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>';
1599 if ($user->socid == 0) {
1600 if (isModEnabled(
'deplacement') && $object->status == 1) {
1601 $langs->load(
"trips");
1602 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>';
1605 if (isModEnabled(
'facture') && $object->status == 1) {
1606 if (!$user->hasRight(
'facture',
'creer')) {
1607 $langs->load(
"bills");
1608 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"NotAllowed")).
'" href="#">'.$langs->trans(
"AddBill").
'</a></div>';
1610 $langs->loadLangs(array(
"orders",
"bills"));
1612 if (isModEnabled(
'commande')) {
1613 if ($object->client != 0 && $object->client != 2) {
1614 if (!empty($orders2invoice) && $orders2invoice > 0) {
1615 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>';
1617 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"NoOrdersToInvoice")).
'" href="#">'.$langs->trans(
"CreateInvoiceForThisCustomer").
'</a></div>';
1620 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"ThirdPartyMustBeEditAsCustomer")).
'" href="#">'.$langs->trans(
"CreateInvoiceForThisCustomer").
'</a></div>';
1624 if ($object->client != 0 && $object->client != 2) {
1625 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>';
1627 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"ThirdPartyMustBeEditAsCustomer")).
'" href="#">'.$langs->trans(
"AddBill").
'</a></div>';
1634 if (isModEnabled(
'agenda') &&
getDolGlobalString(
'MAIN_REPEATTASKONEACHTAB') && $object->status == 1) {
1635 if ($user->hasRight(
'agenda',
'myactions',
'create')) {
1636 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>';
1638 print
'<div class="inline-block divButAction"><a class="butAction" title="'.dol_escape_js($langs->trans(
"NotAllowed")).
'" href="#">'.$langs->trans(
"AddAction").
'</a></div>';
1647 show_contacts($conf, $langs, $db, $object, $_SERVER[
"PHP_SELF"].
'?socid='.$object->id);
1660 $langs->load(
"errors");
1661 print $langs->trans(
'ErrorRecordNotFound');
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.
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...
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.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
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.