diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index cda3a461027..1aad39954fc 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -2462,7 +2462,7 @@ class Adherent extends CommonObject // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore - /** + /** * Initialise tableau info (tableau des attributs LDAP) * * @return array Tableau info des attributs diff --git a/htdocs/admin/ticket.php b/htdocs/admin/ticket.php index 331d7e992ba..8cb1e85afe4 100644 --- a/htdocs/admin/ticket.php +++ b/htdocs/admin/ticket.php @@ -190,7 +190,7 @@ $head = ticketAdminPrepareHead(); dol_fiche_head($head, 'settings', $langs->trans("Module56000Name"), -1, "ticket"); -print ''.$langs->trans("TicketSetupDictionaries") . ' : ' . dol_buildpath('/admin/dict.php', 2) . '
'; +print ''.$langs->trans("TicketSetupDictionaries") . ' : '.$langs->trans("ClickHereToGoTo", $langs->transnoentitiesnoconv("DictionarySetup")).'
'; dol_fiche_end(); diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 0f2669014a8..10de9581dfe 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -3444,6 +3444,7 @@ elseif ($id > 0 || ! empty($ref)) elseif($object->type == Facture::TYPE_CREDIT_NOTE) $type_fac = 'CreditNote'; elseif($object->type == Facture::TYPE_DEPOSIT) $type_fac = 'Deposit'; $text = $langs->trans('ConfirmConvertToReduc', strtolower($langs->transnoentities($type_fac))); + $text.='
'.$langs->trans('ConfirmConvertToReduc2'); $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $langs->trans('ConvertToReduc'), $text, 'confirm_converttoreduc', '', "yes", 2); } @@ -4746,7 +4747,7 @@ elseif ($id > 0 || ! empty($ref)) } // For credit note if ($object->type == Facture::TYPE_CREDIT_NOTE && $object->statut == 1 && $object->paye == 0 && $usercancreate && $object->getSommePaiement() == 0) { - print '
' . $langs->trans('ConvertToReduc') . '
'; + print '
' . $langs->trans('ConvertToReduc') . '
'; } // For deposit invoice if ($object->type == Facture::TYPE_DEPOSIT && $usercancreate && $object->statut > 0 && empty($discount->id)) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index b6beba5e12e..6c325c865a9 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -1075,7 +1075,7 @@ if ($resql) // Town if (! empty($arrayfields['s.town']['checked'])) { - print ''; + print ''; print $obj->town; print ''; if (! $i) $totalarray['nbfield']++; @@ -1083,7 +1083,7 @@ if ($resql) // Zip if (! empty($arrayfields['s.zip']['checked'])) { - print ''; + print ''; print $obj->zip; print ''; if (! $i) $totalarray['nbfield']++; diff --git a/htdocs/core/class/dolgraph.class.php b/htdocs/core/class/dolgraph.class.php index d70a63293c5..5cec0232603 100644 --- a/htdocs/core/class/dolgraph.class.php +++ b/htdocs/core/class/dolgraph.class.php @@ -229,7 +229,7 @@ class DolGraph /** * Set width * - * @param int $w Width + * @param int|string $w Width (Example: 320 or '100%') * @return boolean|null True */ public function SetWidth($w) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 8e0cf0946dc..eeb653aec8a 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -972,7 +972,10 @@ class ExtraFields $out=''; - $keyprefix = $keyprefix.'options_'; // Because we work on extrafields + if (! preg_match('/options_$/', $keyprefix)) // Because we work on extrafields, we add 'options_' to prefix if not already added + { + $keyprefix = $keyprefix.'options_'; + } if (! empty($extrafieldsobjectkey)) { diff --git a/htdocs/core/lib/geturl.lib.php b/htdocs/core/lib/geturl.lib.php index 714bc26b7da..83e483b3e97 100644 --- a/htdocs/core/lib/geturl.lib.php +++ b/htdocs/core/lib/geturl.lib.php @@ -172,14 +172,21 @@ function getURLContent($url, $postorget = 'GET', $param = '', $followlocation = * For example: https://www.abc.mydomain.com/dir/page.html return 'mydomain' * * @param string $url Full URL. - * @param int $mode 0=return 'mydomain', 1=return 'mydomain.com' + * @param int $mode 0=return 'mydomain', 1=return 'mydomain.com', 2=return 'abc.mydomain.com' * @return string Returns domaine name */ function getDomainFromURL($url, $mode = 0) { $tmpdomain = preg_replace('/^https?:\/\//i', '', $url); // Remove http(s):// $tmpdomain = preg_replace('/\/.*$/i', '', $tmpdomain); // Remove part after domain - $tmpdomain = preg_replace('/^.*\.([^\.]+)\.([^\.]+)$/', '\1.\2', $tmpdomain); // Remove part www.abc before domain name + if ($mode == 2) + { + $tmpdomain = preg_replace('/^.*\.([^\.]+)\.([^\.]+)\.([^\.]+)$/', '\1.\2.\3', $tmpdomain); // Remove part 'www.' before 'abc.mydomain.com' + } + else + { + $tmpdomain = preg_replace('/^.*\.([^\.]+)\.([^\.]+)$/', '\1.\2', $tmpdomain); // Remove part 'www.abc.' before 'mydomain.com' + } if (empty($mode)) { $tmpdomain = preg_replace('/\.[^\.]+$/', '', $tmpdomain); // Remove first level domain (.com, .net, ...) diff --git a/htdocs/core/modules/modTicket.class.php b/htdocs/core/modules/modTicket.class.php index 9436bfa84e8..e16b6e87fd0 100644 --- a/htdocs/core/modules/modTicket.class.php +++ b/htdocs/core/modules/modTicket.class.php @@ -99,6 +99,7 @@ class modTicket extends DolibarrModules $this->conflictwith = array(); // List of module class names as string this module is in conflict with $this->phpmin = array(5,4); // Minimum version of PHP required by module $this->langfiles = array("ticket"); + // Constants // List of particular constants to add when module is enabled // (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 1eb38cec66c..c25b0afa15b 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -2221,6 +2221,7 @@ else elseif($object->type == FactureFournisseur::TYPE_CREDIT_NOTE) $type_fac = 'CreditNote'; elseif($object->type == FactureFournisseur::TYPE_DEPOSIT) $type_fac = 'Deposit'; $text = $langs->trans('ConfirmConvertToReducSupplier', strtolower($langs->transnoentities($type_fac))); + $text .= '
'.$langs->trans('ConfirmConvertToReducSupplier2'); $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $langs->trans('ConvertToReduc'), $text, 'confirm_converttoreduc', '', "yes", 2); } @@ -3107,7 +3108,7 @@ else } // For credit note if ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE && $object->statut == 1 && $object->paye == 0 && $user->rights->fournisseur->facture->creer && $object->getSommePaiement() == 0) { - print '
' . $langs->trans('ConvertToReduc') . '
'; + print '
' . $langs->trans('ConvertToReduc') . '
'; } // For deposit invoice if ($object->type == FactureFournisseur::TYPE_DEPOSIT && $object->paye == 1 && $resteapayer == 0 && $user->rights->fournisseur->facture->creer && empty($discount->id)) diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 449a30acbbb..7797fdef7b1 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -291,7 +291,7 @@ Modelcsv_cogilog=Export for Cogilog Modelcsv_agiris=Export for Agiris Modelcsv_openconcerto=Export for OpenConcerto (Test) Modelcsv_configurable=Export CSV Configurable -Modelcsv_FEC=Export FEC (Art. L47 A) +Modelcsv_FEC=Export FEC Modelcsv_Sage50_Swiss=Export for Sage 50 Switzerland ChartofaccountsId=Chart of accounts Id @@ -336,7 +336,7 @@ UseMenuToSetBindindManualy=Lines not yet bound, use menu %s to ## Import ImportAccountingEntries=Accounting entries - +DateExport=Date export WarningReportNotReliable=Warning, this report is not based on the Ledger, so does not contains transaction modified manually in the Ledger. If your journalization is up to date, the bookkeeping view is more accurate. ExpenseReportJournal=Expense Report Journal InventoryJournal=Inventory Journal diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index 17882b3b270..9a86e941035 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -66,8 +66,10 @@ paymentInInvoiceCurrency=in invoices currency PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount?
The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount?
The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. +ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. +ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount? +ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. SupplierPayments=Vendor payments ReceivedPayments=Received payments ReceivedCustomersPayments=Payments received from customers diff --git a/htdocs/langs/en_US/ticket.lang b/htdocs/langs/en_US/ticket.lang index 6a2d7e89cb7..70bd8220af0 100644 --- a/htdocs/langs/en_US/ticket.lang +++ b/htdocs/langs/en_US/ticket.lang @@ -133,6 +133,7 @@ TicketsIndex=Ticket - home TicketList=List of tickets TicketAssignedToMeInfos=This page display ticket list created by or assigned to current user NoTicketsFound=No ticket found +NoUnreadTicketsFound=No unread ticket found TicketViewAllTickets=View all tickets TicketViewNonClosedOnly=View only open tickets TicketStatByStatus=Tickets by status diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 7677e82e1b4..5e348c2fe70 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -56,6 +56,7 @@ $search_barcode=GETPOST("search_barcode", 'alpha'); $search_label=GETPOST("search_label", 'alpha'); $search_type = GETPOST("search_type", 'int'); $search_sale = GETPOST("search_sale", 'int'); +$search_vatrate=GETPOST("search_vatrate", 'alpha'); $search_categ = GETPOST("search_categ", 'int'); $search_tosell = GETPOST("search_tosell", 'int'); $search_tobuy = GETPOST("search_tobuy", 'int'); @@ -174,7 +175,8 @@ $arrayfields=array( 'p.sellprice'=>array('label'=>$langs->trans("SellingPrice"), 'checked'=>1, 'enabled'=>empty($conf->global->PRODUIT_MULTIPRICES)), 'p.minbuyprice'=>array('label'=>$langs->trans("BuyingPriceMinShort"), 'checked'=>1, 'enabled'=>(! empty($user->rights->fournisseur->lire))), 'p.numbuyprice'=>array('label'=>$langs->trans("BuyingPriceNumShort"), 'checked'=>0, 'enabled'=>(! empty($user->rights->fournisseur->lire))), - 'p.pmp'=>array('label'=>$langs->trans("PMPValueShort"), 'checked'=>0, 'enabled'=>(! empty($user->rights->fournisseur->lire))), + 'p.tva_tx'=>array('label'=>$langs->trans("VATRate"), 'checked'=>0, 'enabled'=>(! empty($user->rights->fournisseur->lire))), + 'p.pmp'=>array('label'=>$langs->trans("PMPValueShort"), 'checked'=>0, 'enabled'=>(! empty($user->rights->fournisseur->lire))), 'p.seuil_stock_alerte'=>array('label'=>$langs->trans("StockLimit"), 'checked'=>0, 'enabled'=>(! empty($conf->stock->enabled) && $user->rights->stock->lire && $contextpage != 'service')), 'p.desiredstock'=>array('label'=>$langs->trans("DesiredStock"), 'checked'=>1, 'enabled'=>(! empty($conf->stock->enabled) && $user->rights->stock->lire && $contextpage != 'service')), 'p.stock'=>array('label'=>$langs->trans("PhysicalStock"), 'checked'=>1, 'enabled'=>(! empty($conf->stock->enabled) && $user->rights->stock->lire && $contextpage != 'service')), @@ -229,6 +231,7 @@ if (empty($reshook)) $search_categ=0; $search_tosell=""; $search_tobuy=""; + $search_vatrate=""; $search_tobatch=''; //$search_type=''; // There is 2 types of list: a list of product and a list of services. No list with both. So when we clear search criteria, we must keep the filter on type. @@ -276,7 +279,7 @@ else $texte = $langs->trans("ProductsAndServices"); } -$sql = 'SELECT DISTINCT p.rowid, p.ref, p.label, p.fk_product_type, p.barcode, p.price, p.price_ttc, p.price_base_type, p.entity,'; +$sql = 'SELECT DISTINCT p.rowid, p.ref, p.label, p.fk_product_type, p.barcode, p.price, p.tva_tx, p.price_ttc, p.price_base_type, p.entity,'; $sql.= ' p.fk_product_type, p.duration, p.tosell, p.tobuy, p.seuil_stock_alerte, p.desiredstock,'; $sql.= ' p.tobatch, p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export, p.accountancy_code_buy,'; $sql.= ' p.datec as date_creation, p.tms as date_update, p.pmp, p.stock,'; @@ -323,6 +326,7 @@ if ($search_label) $sql .= natural_search('p.label', $search_label); if ($search_barcode) $sql .= natural_search('p.barcode', $search_barcode); if (isset($search_tosell) && dol_strlen($search_tosell) > 0 && $search_tosell!=-1) $sql.= " AND p.tosell = ".$db->escape($search_tosell); if (isset($search_tobuy) && dol_strlen($search_tobuy) > 0 && $search_tobuy!=-1) $sql.= " AND p.tobuy = ".$db->escape($search_tobuy); +if ($search_vatrate) $sql .= natural_search('p.tva_tx', $search_vatrate); if (dol_strlen($canvas) > 0) $sql.= " AND p.canvas = '".$db->escape($canvas)."'"; if ($catid > 0) $sql.= " AND cp.fk_categorie = ".$catid; if ($catid == -2) $sql.= " AND cp.fk_categorie IS NULL"; @@ -341,7 +345,7 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook $sql.=$hookmanager->resPrint; -$sql.= " GROUP BY p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,"; +$sql.= " GROUP BY p.rowid, p.ref, p.label, p.barcode, p.price, p.tva_tx, p.price_ttc, p.price_base_type,"; $sql.= " p.fk_product_type, p.duration, p.tosell, p.tobuy, p.seuil_stock_alerte, p.desiredstock,"; $sql.= ' p.datec, p.tms, p.entity, p.tobatch, p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export, p.accountancy_code_buy, p.pmp, p.stock,'; $sql.= ' p.weight, p.weight_units, p.length, p.length_units, p.surface, p.surface_units, p.volume, p.volume_units, p.width, p.width_units, p.height, p.height_units'; @@ -421,6 +425,7 @@ if ($resql) if ($search_label) $param.="&search_label=".urlencode($search_label); if ($search_tosell != '') $param.="&search_tosell=".urlencode($search_tosell); if ($search_tobuy != '') $param.="&search_tobuy=".urlencode($search_tobuy); + if ($search_vatrate) $sql .= natural_search('p.tva_tx', $search_vatrate); if ($fourn_id > 0) $param.=($fourn_id?"&fourn_id=".$fourn_id:""); if ($seach_categ) $param.=($search_categ?"&search_categ=".urlencode($search_categ):""); if ($show_childproducts) $param.=($show_childproducts?"&search_show_childproducts=".urlencode($show_childproducts):""); @@ -613,6 +618,13 @@ if ($resql) print ' '; print ''; } + // Sell price + if (! empty($arrayfields['p.tva_tx']['checked'])) + { + print ''; + print ''; + print ''; + } // WAP if (! empty($arrayfields['p.pmp']['checked'])) { @@ -715,6 +727,9 @@ if ($resql) if (! empty($arrayfields['p.numbuyprice']['checked'])) { print_liste_field_titre($arrayfields['p.numbuyprice']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right '); } + if (! empty($arrayfields['p.tva_tx']['checked'])) { + print_liste_field_titre($arrayfields['p.tva_tx']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right '); + } if (! empty($arrayfields['p.pmp']['checked'])) { print_liste_field_titre($arrayfields['p.pmp']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right '); } @@ -983,6 +998,15 @@ if ($resql) print ''; } + // Sell Tax Rate + if (! empty($arrayfields['p.tva_tx']['checked'])) + { + print ''; + print vatrate($obj->tva_tx,true); + print ''; + if (! $i) $totalarray['nbfield']++; + } + // WAP if (! empty($arrayfields['p.pmp']['checked'])) { diff --git a/htdocs/public/ticket/index.php b/htdocs/public/ticket/index.php index 05b992b3e40..a3e4d63a4bc 100644 --- a/htdocs/public/ticket/index.php +++ b/htdocs/public/ticket/index.php @@ -1,5 +1,6 @@ +/* Copyright (C) - 2013-2016 Jean-François FERRY + * Copyright (C) - 2019 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,7 +19,7 @@ /** * \file htdocs/public/ticket/index.php * \ingroup ticket - * \brief Public file to add and manage ticket + * \brief Public page to add and manage ticket */ if (!defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1'); @@ -56,21 +57,24 @@ $formticket = new FormTicket($db); $arrayofjs = array(); $arrayofcss = array('/ticket/css/styles.css.php'); + +if (empty($conf->global->TICKET_ENABLE_PUBLIC_INTERFACE)) +{ + print $langs->trans('TicketPublicInterfaceForbidden'); + exit; +} + llxHeaderTicket($langs->trans("Tickets"), "", 0, 0, $arrayofjs, $arrayofcss); -if (!$conf->global->TICKET_ENABLE_PUBLIC_INTERFACE) { - print '
' . $langs->trans('TicketPublicInterfaceForbidden') . '
'; -} else { - print '
'; - print '

' . ($conf->global->TICKET_PUBLIC_TEXT_HOME ? $conf->global->TICKET_PUBLIC_TEXT_HOME : $langs->trans("TicketPublicDesc")) . '

'; - print ''; - print '
'; -} +print '
'; +print '

' . ($conf->global->TICKET_PUBLIC_TEXT_HOME ? $conf->global->TICKET_PUBLIC_TEXT_HOME : $langs->trans("TicketPublicDesc")) . '

'; +print ''; +print '
'; // End of page htmlPrintOnlinePaymentFooter($mysoc, $langs, 1, $suffix, $object); diff --git a/htdocs/stripe/class/stripe.class.php b/htdocs/stripe/class/stripe.class.php index d754b8d3962..27346a15f5e 100644 --- a/htdocs/stripe/class/stripe.class.php +++ b/htdocs/stripe/class/stripe.class.php @@ -536,7 +536,7 @@ class Stripe extends CommonObject //$a = \Stripe\Stripe::getApiKey(); //var_dump($a);var_dump($stripeacc);exit; - dol_syslog("Try to create card dataforcard = ".dol_json_encode($dataforcard)); + dol_syslog("Try to create card dataforcard = ".json_encode($dataforcard)); try { if (empty($stripeacc)) { // If the Stripe connect account not set, we use common API usage $card = $cu->sources->create($dataforcard); diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 132cce1e52b..69708e06516 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -2374,7 +2374,7 @@ class Ticket extends CommonObject if (file_exists($dir_osencoded)) { $handle = opendir($dir_osencoded); if (is_resource($handle)) { - while (($file = readdir($handle)) != false) { + while (($file = readdir($handle)) !== false) { if (!utf8_check($file)) { $file = utf8_encode($file); } diff --git a/htdocs/ticket/index.php b/htdocs/ticket/index.php index 09b8a208c3c..d3466f40dc3 100644 --- a/htdocs/ticket/index.php +++ b/htdocs/ticket/index.php @@ -25,6 +25,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT . '/ticket/class/actions_ticket.class.php'; require_once DOL_DOCUMENT_ROOT . '/ticket/class/ticketstats.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/dolgraph.class.php'; +require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php'; $hookmanager = new HookManager($db); @@ -108,8 +109,8 @@ if (empty($endyear)) { } $startyear = $endyear - 1; -$WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ? '256' : '320'; -$HEIGHT = '192'; +$WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ? '100%' : '80%'; +$HEIGHT = '228'; print '
'; @@ -126,16 +127,14 @@ $tick = array( 'closed' => 0, 'deleted' => 0, ); -$total = 0; + $sql = "SELECT t.fk_statut, COUNT(t.fk_statut) as nb"; $sql .= " FROM " . MAIN_DB_PREFIX . "ticket as t"; if (!$user->rights->societe->client->voir && !$socid) { $sql .= ", " . MAIN_DB_PREFIX . "societe_commerciaux as sc"; } - -$sql .= ' WHERE t.entity IN (' . getEntity('ticket', 1) . ')'; -$sql .= " AND t.fk_statut IS NOT NULL"; -$sql .= " AND date_format(datec,'%Y') = '" . $endyear . "'"; +$sql .= ' WHERE t.entity IN (' . getEntity('ticket') . ')'; +$sql .= dolSqlDateFilter('datec', 0, 0, $endyear); if (!$user->rights->societe->client->voir && !$socid) { $sql .= " AND t.fk_soc = sc.fk_soc AND sc.fk_user = " . $user->id; } @@ -155,44 +154,41 @@ $result = $db->query($sql); if ($result) { while ($objp = $db->fetch_object($result)) { $found = 0; - if ($objp->fk_statut == 0) { + if ($objp->fk_statut == Ticket::STATUS_NOT_READ) { $tick['unread'] = $objp->nb; } - if ($objp->fk_statut == 1) { + if ($objp->fk_statut == Ticket::STATUS_READ) { $tick['read'] = $objp->nb; } - if ($objp->fk_statut == 3) { - $tick['answered'] = $objp->nb; + if ($objp->fk_statut == Ticket::STATUS_NEED_MORE_INFO) { + $tick['needmoreinfo'] = $objp->nb; } - if ($objp->fk_statut == 4) { + if ($objp->fk_statut == Ticket::STATUS_ASSIGNED) { $tick['assigned'] = $objp->nb; } - if ($objp->fk_statut == 5) { + if ($objp->fk_statut == Ticket::STATUS_IN_PROGRESS) { $tick['inprogress'] = $objp->nb; } - if ($objp->fk_statut == 6) { + if ($objp->fk_statut == Ticket::STATUS_WAITING) { $tick['waiting'] = $objp->nb; } - if ($objp->fk_statut == 8) { + if ($objp->fk_statut == Ticket::STATUS_CLOSED) { $tick['closed'] = $objp->nb; } - if ($objp->fk_statut == 9) { - $tick['deleted'] = $objp->nb; + if ($objp->fk_statut == Ticket::STATUS_CANCELED) { + $tick['canceled'] = $objp->nb; } } - if ((round($tick['unread']) ? 1 : 0) +(round($tick['read']) ? 1 : 0) +(round($tick['answered']) ? 1 : 0) +(round($tick['assigned']) ? 1 : 0) +(round($tick['inprogress']) ? 1 : 0) +(round($tick['waiting']) ? 1 : 0) +(round($tick['closed']) ? 1 : 0) +(round($tick['deleted']) ? 1 : 0) >= 2 - ) { - $dataseries = array(); - $dataseries[] = array('label' => $langs->trans("Unread"), 'data' => round($tick['unread'])); - $dataseries[] = array('label' => $langs->trans("Read"), 'data' => round($tick['read'])); - $dataseries[] = array('label' => $langs->trans("Answered"), 'data' => round($tick['answered'])); - $dataseries[] = array('label' => $langs->trans("Assigned"), 'data' => round($tick['assigned'])); - $dataseries[] = array('label' => $langs->trans("InProgress"), 'data' => round($tick['inprogress'])); - $dataseries[] = array('label' => $langs->trans("Waiting"), 'data' => round($tick['waiting'])); - $dataseries[] = array('label' => $langs->trans("Closed"), 'data' => round($tick['closed'])); - $dataseries[] = array('label' => $langs->trans("Deleted"), 'data' => round($tick['deleted'])); - } + $dataseries = array(); + $dataseries[] = array('label' => $langs->trans("Unread"), 'data' => round($tick['unread'])); + $dataseries[] = array('label' => $langs->trans("Read"), 'data' => round($tick['read'])); + $dataseries[] = array('label' => $langs->trans("NeedMoreInformation"), 'data' => round($tick['needmoreinfo'])); + $dataseries[] = array('label' => $langs->trans("Assigned"), 'data' => round($tick['assigned'])); + $dataseries[] = array('label' => $langs->trans("InProgress"), 'data' => round($tick['inprogress'])); + $dataseries[] = array('label' => $langs->trans("Waiting"), 'data' => round($tick['waiting'])); + $dataseries[] = array('label' => $langs->trans("Closed"), 'data' => round($tick['closed'])); + $dataseries[] = array('label' => $langs->trans("Canceled"), 'data' => round($tick['canceled'])); } else { dol_print_error($db); } @@ -216,11 +212,17 @@ $stringtoshow .= '
'; print ''; print ''; -print ''; print '
' . $langs->trans("Statistics") . ' ' . img_picto('', 'filter.png', 'id="idsubimgDOLUSERCOOKIE_ticket_by_status" class="linkobject"') . '
'; +print '
'; +print $stringtoshow; // don't display graph if no series if (! empty($dataseries) && count($dataseries) > 1) { - $data = array(); + $totalnb=0; + foreach ($dataseries as $key => $value) { + $totalnb += $value['data']; + } + + $data = array(); foreach ($dataseries as $key => $value) { $data[] = array($value['label'], $value['data']); } @@ -250,10 +252,9 @@ if (! empty($dataseries) && count($dataseries) > 1) { //$px1->SetTitle($langs->trans("TicketStatByStatus")); $px1->draw($filenamenb, $fileurlnb); - print $px1->show(); + print $px1->show($totalnb?0:1); } } -print $stringtoshow; print '
'; @@ -309,7 +310,7 @@ if ($result) { print '
'; print ''; print ''; - print ''; + print ''; print ''; if ($num > 0) { @@ -365,7 +366,7 @@ if ($result) { $db->free(); } else { - print ''; + print ''; } print "
' . $transRecordedType . ''.$langs->trans("FullList").''.$langs->trans("FullList").'
' . $langs->trans('NoTicketsFound') . '
' . $langs->trans('NoUnreadTicketsFound') . '
"; diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index a151fdb5574..8e52ba3028b 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -520,8 +520,8 @@ class User extends CommonObject * Add a right to the user * * @param int $rid Id of permission to add or 0 to add several permissions - * @param string $allmodule Add all permissions of module $allmodule - * @param string $allperms Add all permissions of module $allmodule, subperms $allperms only + * @param string $allmodule Add all permissions of module $allmodule or 'allmodules' to include all modules. + * @param string $allperms Add all permissions of module $allmodule, subperms $allperms only or '' to include all permissions. * @param int $entity Entity to use * @param int $notrigger 1=Does not execute triggers, 0=Execute triggers * @return int > 0 if OK, < 0 if KO