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',
'commercial'));
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)) {
876 if (is_array($file_list) && !empty($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,
'entity=' . $objp->entity);
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)) {
988 if (is_array($file_list) && !empty($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,
'entity=' . $objp->entity);
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 $param =
'entity=' . ((int) $objp->entity);
1035 $sql =
'SELECT e.rowid as id';
1036 $sql .=
', e.ref, e.entity';
1037 $sql .=
', e.date_creation';
1038 $sql .=
', e.fk_statut as statut';
1040 $sql .=
', s.rowid as socid';
1041 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"expedition as e";
1042 $sql .=
" WHERE e.fk_soc = s.rowid AND s.rowid = ".((int) $object->id);
1043 $sql .=
" AND e.entity IN (".getEntity(
'expedition').
")";
1044 $sql .=
' GROUP BY e.rowid';
1045 $sql .=
', e.ref, e.entity';
1046 $sql .=
', e.date_creation';
1047 $sql .=
', e.fk_statut';
1049 $sql .=
', s.rowid';
1050 $sql .=
" ORDER BY e.date_creation DESC";
1052 $resql = $db->query($sql);
1056 $num = $db->num_rows($resql);
1058 print
'<div class="div-table-responsive-no-min">';
1059 print
'<table class="noborder centpercent lastrecordtable">';
1061 print
'<tr class="liste_titre">';
1062 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>';
1063 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>';
1064 print
'</tr></table></td>';
1069 while ($i < $num && $i < $MAXLIST) {
1070 $objp = $db->fetch_object($resql);
1072 $sendingstatic->id = $objp->id;
1073 $sendingstatic->ref = $objp->ref;
1075 print
'<tr class="oddeven">';
1076 print
'<td class="nowraponall">';
1077 print $sendingstatic->getNomUrl(1);
1079 $filedir = $conf->expedition->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
1081 if (!empty($filedir)) {
1084 if (is_array($file_list) && !empty($file_list)) {
1088 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
1089 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1096 if (!empty($sortfield) && !empty($sortorder)) {
1102 print $formfile->showPreview($file_list, $sendingstatic->element, $relativepath, 0, $param);
1109 if ($objp->date_creation > 0) {
1110 print
'<td class="right" width="80px">'.dol_print_date($db->jdate($objp->date_creation),
'day').
'</td>';
1112 print
'<td class="right"><b>!!!</b></td>';
1115 print
'<td class="nowrap right centpercent">'.$sendingstatic->LibStatut($objp->statut, 5).
'</td>';
1133 if (isModEnabled(
'contrat') && $user->hasRight(
'contrat',
'lire')) {
1134 $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,";
1135 $sql .=
" c.last_main_doc, c.model_pdf";
1136 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"contrat as c";
1137 $sql .=
" WHERE c.fk_soc = s.rowid ";
1138 $sql .=
" AND s.rowid = ".((int) $object->id);
1139 $sql .=
" AND c.entity IN (".getEntity(
'contract').
")";
1140 $sql .=
" ORDER BY c.datec DESC";
1142 $resql = $db->query($sql);
1146 $num = $db->num_rows($resql);
1148 print
'<div class="div-table-responsive-no-min">';
1149 print
'<table class="noborder centpercent lastrecordtable">';
1151 print
'<tr class="liste_titre">';
1152 print
'<td colspan="5"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans(
"LastContracts", ($num <= $MAXLIST ?
"" : $MAXLIST)).
'</td>';
1153 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>';
1155 print
'</tr></table></td>';
1160 while ($i < $num && $i < $MAXLIST) {
1161 $objp = $db->fetch_object($resql);
1163 $contrat->id = $objp->id;
1164 $contrat->ref = $objp->ref ? $objp->ref : $objp->id;
1165 $contrat->ref_customer = $objp->refcus;
1166 $contrat->ref_supplier = $objp->refsup;
1167 $contrat->statut = $objp->contract_status;
1168 $contrat->last_main_doc = $objp->last_main_doc;
1169 $contrat->model_pdf = $objp->model_pdf;
1170 $contrat->fetch_lines();
1173 foreach ($contrat->lines as $line) {
1174 if ($contrat->statut == Contrat::STATUS_VALIDATED && $line->statut == ContratLigne::STATUS_OPEN) {
1175 if (((!empty($line->date_end) ? $line->date_end : 0) + $conf->contrat->services->expires->warning_delay) < $now) {
1181 print
'<tr class="oddeven">';
1182 print
'<td class="nowraponall">';
1183 print $contrat->getNomUrl(1, 12);
1184 if (!empty($contrat->model_pdf)) {
1186 $filedir = $conf->contrat->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
1188 if (!empty($filedir)) {
1191 if (is_array($file_list) && !empty($file_list)) {
1195 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
1196 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1203 if (!empty($sortfield) && !empty($sortorder)) {
1208 print $formfile->showPreview($file_list, $contrat->element, $relativepath, 0,
'entity=' . $objp->entity);
1217 print
'<td class="nowrap">'.dol_trunc($objp->refsup, 12).
"</td>\n";
1219 print
'<td class="right" width="80px"><span title="'.$langs->trans(
"DateContract").
'">'.
dol_print_date($db->jdate($objp->dcon),
'day').
"</span></td>\n";
1220 print
'<td width="20"> </td>';
1221 print
'<td class="nowraponall right">';
1222 print $contrat->getLibStatut(4);
1241 if (isModEnabled(
'ficheinter') && $user->hasRight(
'ficheinter',
'lire')) {
1242 $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";
1243 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s, ".MAIN_DB_PREFIX.
"fichinter as f";
1244 $sql .=
" WHERE f.fk_soc = s.rowid";
1245 $sql .=
" AND s.rowid = ".((int) $object->id);
1246 $sql .=
" AND f.entity IN (".getEntity(
'intervention').
")";
1247 $sql .=
" ORDER BY f.tms DESC";
1249 $resql = $db->query($sql);
1253 $num = $db->num_rows($resql);
1255 print
'<div class="div-table-responsive-no-min">';
1256 print
'<table class="noborder centpercent lastrecordtable">';
1258 print
'<tr class="liste_titre">';
1259 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>';
1260 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>';
1261 print
'</tr></table></td>';
1266 while ($i < $num && $i < $MAXLIST) {
1267 $objp = $db->fetch_object($resql);
1269 $fichinter_static->id = $objp->id;
1270 $fichinter_static->ref = $objp->ref;
1271 $fichinter_static->statut = $objp->fk_statut;
1273 print
'<tr class="oddeven">';
1274 print
'<td class="nowraponall">';
1275 print $fichinter_static->getNomUrl(1);
1277 $filedir = $conf->ficheinter->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
1279 if (!empty($filedir)) {
1282 if (is_array($file_list) && !empty($file_list)) {
1286 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
1287 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1294 if (!empty($sortfield) && !empty($sortorder)) {
1299 print $formfile->showPreview($file_list, $fichinter_static->element, $relativepath, 0,
'entity=' . $objp->entity);
1307 print
'<td class="right" style="min-width: 60px">'.convertSecondToTime($objp->duration).
'</td>'.
"\n";
1308 print
'<td class="nowrap right" style="min-width: 60px">'.$fichinter_static->getLibStatut(5).
'</td>'.
"\n";
1327 if (isModEnabled(
'facture') && $user->hasRight(
'facture',
'lire')) {
1328 $sql =
'SELECT f.rowid as id, f.titre as ref';
1329 $sql .=
', f.total_ht';
1330 $sql .=
', f.total_tva';
1331 $sql .=
', f.total_ttc';
1332 $sql .=
', f.datec as dc';
1333 $sql .=
', f.date_last_gen, f.date_when';
1334 $sql .=
', f.frequency';
1335 $sql .=
', f.unit_frequency';
1336 $sql .=
', f.suspended as suspended';
1337 $sql .=
', s.nom, s.rowid as socid';
1338 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s,".MAIN_DB_PREFIX.
"facture_rec as f";
1339 $sql .=
" WHERE f.fk_soc = s.rowid AND s.rowid = ".((int) $object->id);
1340 $sql .=
" AND f.entity IN (".getEntity(
'invoice').
")";
1341 $sql .=
' GROUP BY f.rowid, f.titre, f.total_ht, f.total_tva, f.total_ttc,';
1342 $sql .=
' f.date_last_gen, f.datec, f.frequency, f.unit_frequency,';
1343 $sql .=
' f.suspended, f.date_when,';
1344 $sql .=
' s.nom, s.rowid';
1345 $sql .=
" ORDER BY f.date_last_gen, f.datec DESC";
1347 $resql = $db->query($sql);
1351 $num = $db->num_rows($resql);
1353 print
'<div class="div-table-responsive-no-min">';
1354 print
'<table class="noborder centpercent lastrecordtable">';
1355 print
'<tr class="liste_titre">';
1360 print
'<td colspan="'.$colspan.
'">';
1361 print
'<table class="centpercent nobordernopadding"><tr>';
1362 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>';
1363 print
'</tr></table>';
1369 while ($i < $num && $i < $MAXLIST) {
1370 $objp = $db->fetch_object($resql);
1372 $invoicetemplate->id = $objp->id;
1373 $invoicetemplate->ref = $objp->ref;
1374 $invoicetemplate->suspended = $objp->suspended;
1375 $invoicetemplate->frequency = $objp->frequency;
1376 $invoicetemplate->unit_frequency = $objp->unit_frequency;
1377 $invoicetemplate->total_ht = $objp->total_ht;
1378 $invoicetemplate->total_tva = $objp->total_tva;
1379 $invoicetemplate->total_ttc = $objp->total_ttc;
1380 $invoicetemplate->date_last_gen = $objp->date_last_gen;
1381 $invoicetemplate->date_when = $objp->date_when;
1383 print
'<tr class="oddeven">';
1384 print
'<td class="tdoverflowmax250">';
1385 print $invoicetemplate->getNomUrl(1);
1388 if ($objp->frequency && $objp->date_last_gen > 0) {
1389 print
'<td class="right" width="80px">'.dol_print_date($db->jdate($objp->date_last_gen),
'day').
'</td>';
1391 if ($objp->dc > 0) {
1392 print
'<td class="right" width="80px">'.dol_print_date($db->jdate($objp->dc),
'day').
'</td>';
1394 print
'<td class="right"><b>!!!</b></td>';
1397 print
'<td class="right nowraponall">';
1398 print
price($objp->total_ht);
1402 print
'<td class="right nowraponall">';
1403 print
price($objp->total_ttc);
1407 print
'<td class="nowrap right" style="min-width: 60px">';
1408 print $langs->trans(
'FrequencyPer_'.$invoicetemplate->unit_frequency, $invoicetemplate->frequency).
' - ';
1409 print($invoicetemplate->LibStatut($invoicetemplate->frequency, $invoicetemplate->suspended, 5, 0));
1428 if (isModEnabled(
'facture') && $user->hasRight(
'facture',
'lire')) {
1429 $sql =
'SELECT f.rowid as facid, f.ref, f.type';
1430 $sql .=
', f.total_ht';
1431 $sql .=
', f.total_tva';
1432 $sql .=
', f.total_ttc';
1433 $sql .=
', f.entity';
1434 $sql .=
', f.datef as df, f.date_lim_reglement as dl, f.datec as dc, f.paye as paye, f.fk_statut as status';
1435 $sql .=
', s.nom, s.rowid as socid';
1436 $sql .=
', SUM(pf.amount) as am';
1437 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s,".MAIN_DB_PREFIX.
"facture as f";
1438 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'paiement_facture as pf ON f.rowid=pf.fk_facture';
1439 $sql .=
" WHERE f.fk_soc = s.rowid AND s.rowid = ".((int) $object->id);
1440 $sql .=
" AND f.entity IN (".getEntity(
'invoice').
")";
1441 $sql .=
' GROUP BY f.rowid, f.ref, f.type, f.total_ht, f.total_tva, f.total_ttc,';
1442 $sql .=
' f.entity, f.datef, f.date_lim_reglement, f.datec, f.paye, f.fk_statut,';
1443 $sql .=
' s.nom, s.rowid';
1444 $sql .=
" ORDER BY f.datef DESC, f.datec DESC";
1446 $resql = $db->query($sql);
1448 $facturestatic =
new Facture($db);
1450 $num = $db->num_rows($resql);
1452 print
'<div class="div-table-responsive-no-min">';
1453 print
'<table class="noborder centpercent lastrecordtable">';
1454 print
'<tr class="liste_titre">';
1459 print
'<td colspan="'.$colspan.
'">';
1460 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>';
1461 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>';
1462 print
'</tr></table>';
1468 while ($i < $num && $i < $MAXLIST) {
1469 $objp = $db->fetch_object($resql);
1471 $facturestatic->id = $objp->facid;
1472 $facturestatic->ref = $objp->ref;
1473 $facturestatic->type = $objp->type;
1474 $facturestatic->total_ht = $objp->total_ht;
1475 $facturestatic->total_tva = $objp->total_tva;
1476 $facturestatic->total_ttc = $objp->total_ttc;
1477 $facturestatic->statut = $objp->status;
1478 $facturestatic->status = $objp->status;
1479 $facturestatic->paye = $objp->paye;
1480 $facturestatic->alreadypaid = $objp->am;
1481 $facturestatic->totalpaid = $objp->am;
1482 $facturestatic->date = $db->jdate($objp->df);
1483 $facturestatic->date_lim_reglement = $db->jdate($objp->dl);
1485 print
'<tr class="oddeven">';
1486 print
'<td class="nowraponall">';
1487 print $facturestatic->getNomUrl(1);
1489 $filedir = $conf->facture->multidir_output[$objp->entity].
'/'.
dol_sanitizeFileName($objp->ref);
1491 if (!empty($filedir)) {
1494 if (is_array($file_list) && !empty($file_list)) {
1498 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
1499 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1506 if (!empty($sortfield) && !empty($sortorder)) {
1511 print $formfile->showPreview($file_list, $facturestatic->element, $relativepath, 0,
'entity=' . $objp->entity);
1518 if ($objp->df > 0) {
1519 print
'<td width="80px" title="'.dol_escape_htmltag($langs->trans(
'DateInvoice')).
'">'.
dol_print_date($db->jdate($objp->df),
'day').
'</td>';
1521 print
'<td><b>!!!</b></td>';
1523 if ($objp->dl > 0) {
1524 print
'<td width="80px" title="'.dol_escape_htmltag($langs->trans(
'DateMaxPayment')).
'">'.
dol_print_date($db->jdate($objp->dl),
'day').
'</td>';
1526 print
'<td><b>!!!</b></td>';
1528 print
'<td class="right nowraponall">';
1529 print
price($objp->total_ht);
1533 print
'<td class="right nowraponall">';
1534 print
price($objp->total_ttc);
1538 print
'<td class="nowrap right" style="min-width: 60px">'.($facturestatic->LibStatut($objp->paye, $objp->status, 5, $objp->am)).
'</td>';
1554 $parameters = array();
1555 $reshook = $hookmanager->executeHooks(
'addMoreRecentObjects', $parameters, $object, $action);
1559 print $hookmanager->resPrint;
1562 print
'</div></div>';
1563 print
'<div class="clearboth"></div>';
1571 print
'<div class="tabsAction">';
1573 $parameters = array();
1574 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
1576 if (empty($reshook)) {
1577 if ($object->status != 1) {
1578 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"ThirdPartyIsClosed")).
'" href="#">'.$langs->trans(
"ThirdPartyIsClosed").
'</a></div>';
1581 if (isModEnabled(
"propal") && $user->hasRight(
'propal',
'creer') && $object->status == 1) {
1582 $langs->load(
"propal");
1583 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>';
1586 if (isModEnabled(
'commande') && $user->hasRight(
'commande',
'creer') && $object->status == 1) {
1587 $langs->load(
"orders");
1588 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>';
1591 if ($user->hasRight(
'contrat',
'creer') && $object->status == 1) {
1592 $langs->load(
"contracts");
1593 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>';
1596 if (isModEnabled(
'ficheinter') && $user->hasRight(
'ficheinter',
'creer') && $object->status == 1) {
1597 $langs->load(
"fichinter");
1598 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>';
1602 if ($user->socid == 0) {
1603 if (isModEnabled(
'deplacement') && $object->status == 1) {
1604 $langs->load(
"trips");
1605 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>';
1608 if (isModEnabled(
'facture') && $object->status == 1) {
1609 if (!$user->hasRight(
'facture',
'creer')) {
1610 $langs->load(
"bills");
1611 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"NotAllowed")).
'" href="#">'.$langs->trans(
"AddBill").
'</a></div>';
1613 $langs->loadLangs(array(
"orders",
"bills"));
1615 if (isModEnabled(
'commande')) {
1616 if ($object->client != 0 && $object->client != 2) {
1617 if (!empty($orders2invoice) && $orders2invoice > 0) {
1618 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>';
1620 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"NoOrdersToInvoice")).
'" href="#">'.$langs->trans(
"CreateInvoiceForThisCustomer").
'</a></div>';
1623 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"ThirdPartyMustBeEditAsCustomer")).
'" href="#">'.$langs->trans(
"CreateInvoiceForThisCustomer").
'</a></div>';
1627 if ($object->client != 0 && $object->client != 2) {
1628 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>';
1630 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" title="'.dol_escape_js($langs->trans(
"ThirdPartyMustBeEditAsCustomer")).
'" href="#">'.$langs->trans(
"AddBill").
'</a></div>';
1637 if (isModEnabled(
'agenda') &&
getDolGlobalString(
'MAIN_REPEATTASKONEACHTAB') && $object->status == 1) {
1638 if ($user->hasRight(
'agenda',
'myactions',
'create')) {
1639 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>';
1641 print
'<div class="inline-block divButAction"><a class="butAction" title="'.dol_escape_js($langs->trans(
"NotAllowed")).
'" href="#">'.$langs->trans(
"AddAction").
'</a></div>';
1650 show_contacts($conf, $langs, $db, $object, $_SERVER[
"PHP_SELF"].
'?socid='.$object->id);
1663 $langs->load(
"errors");
1664 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.
completeFileArrayWithDatabaseInfo(&$filearray, $relativedir, $noCreateEcmFile=0)
Complete $filearray with data from database.
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.
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.
dol_getIdFromCode($db, $key, $tablename, $fieldkey='code', $fieldid='id', $entityfilter=0, $filters='', $useCache=true)
Return an id or code from a code or id.
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_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.