';
-print getCustomerInvoicePieChart($socid);
+//print getCustomerInvoicePieChart($socid);
+print getNumberInvoicesPieChart('customers');
print '
';
-print getPurchaseInvoicePieChart($socid);
+print getNumberInvoicesPieChart('fourn');
+//print getPurchaseInvoicePieChart($socid);
print '
';
print getCustomerInvoiceDraftTable($max, $socid);
print '
';
diff --git a/htdocs/core/lib/invoice.lib.php b/htdocs/core/lib/invoice.lib.php
index ece491d2c69..4a1d71de540 100644
--- a/htdocs/core/lib/invoice.lib.php
+++ b/htdocs/core/lib/invoice.lib.php
@@ -456,6 +456,105 @@ function getPurchaseInvoicePieChart($socid = 0)
return $result;
}
+/**
+ * Return an HTML table that contains a pie chart of the number of customers or supplier invoices
+ * @param string $mode Can be customer or fourn
+ * @return string A HTML table that contains a pie chart of customers or supplier invoices
+ */
+function getNumberInvoicesPieChart($mode)
+{
+ global $conf, $db, $langs, $user;
+ if (!empty($conf->facture->enabled) && !empty($user->rights->facture->lire)) {
+ include DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/theme_vars.inc.php';
+
+ $now = date_create(date('Y-m-d', dol_now()));
+ $datenowsub30 = date_create(date('Y-m-d', dol_now()));
+ $datenowsub15 = date_create(date('Y-m-d', dol_now()));
+ $datenowadd30 = date_create(date('Y-m-d', dol_now()));
+ $datenowadd15 = date_create(date('Y-m-d', dol_now()));
+ $interval30days = date_interval_create_from_date_string('30 days');
+ $interval15days = date_interval_create_from_date_string('15 days');
+ date_sub($datenowsub30, $interval30days);
+ date_sub($datenowsub15, $interval15days);
+ date_add($datenowadd30, $interval30days);
+ date_add($datenowadd15, $interval15days);
+
+ $sql = "SELECT sum(".$db->ifsql("f.date_lim_reglement < '".date_format($datenowsub30, 'Y-m-d')."'", 1, 0).") as nblate30";
+ $sql .= ", sum(".$db->ifsql("f.date_lim_reglement < '".date_format($datenowsub15, 'Y-m-d')."'", 1, 0).") as nblate15";
+ $sql .= ", sum(".$db->ifsql("f.date_lim_reglement < '".date_format($now, 'Y-m-d')."'", 1, 0).") as nblatenow";
+ $sql .= ", sum(".$db->ifsql("f.date_lim_reglement > '".date_format($datenowadd30, 'Y-m-d')."'", 1, 0).") as nbnotlate30";
+ $sql .= ", sum(".$db->ifsql("f.date_lim_reglement > '".date_format($datenowadd15, 'Y-m-d')."'", 1, 0).") as nbnotlate15";
+ $sql .= ", sum(".$db->ifsql("f.date_lim_reglement >= '".date_format($now, 'Y-m-d')."'", 1, 0).") as nbnotlatenow";
+ if ($mode == 'customers') {
+ $sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
+ } elseif ($mode == 'fourn') {
+ $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
+ } else {
+ return '';
+ }
+ $sql .= " WHERE f.type <> 2";
+ $sql .= " AND f.fk_statut = 1";
+ $resql = $db->query($sql);
+ if ($resql) {
+ $num = $db->num_rows($resql);
+ $i = 0;
+ $total = 0;
+ $dataseries = array();
+ while ($i < $num) {
+ $obj = $db->fetch_object($resql);
+ $dataseries = array(array($langs->trans('InvoiceLate30Days'),$obj->nblate30)
+ ,array($langs->trans('InvoiceLate15Days'),$obj->nblate15-$obj->nblate30)
+ ,array($langs->trans('InvoiceLateMinus15Days'),$obj->nblatenow-$obj->nblate15)
+ ,array($langs->trans('InvoiceNotLate'),$obj->nbnotlatenow-$obj->nbnotlate15)
+ ,array($langs->trans('InvoiceNotLate15Days'),$obj->nbnotlate15-$obj->nbnotlate30)
+ ,array($langs->trans('InvoiceNotLate30Days'),$obj->nbnotlate30));
+ $i++;
+ }
+ foreach ($dataseries as $key=>$value) {
+ $total+=$value[1];
+ }
+ $colorseries = array($badgeStatus8,$badgeStatus1,$badgeStatus3,$badgeStatus2,$badgeStatus4,$badgeStatus0);
+ if ($conf->use_javascript_ajax) {
+ $result = '
';
+ $result .= '
';
+ $result .= '';
+ $result .= '| '.$langs->trans("Statistics").' - ';
+ if ($mode == 'customers') {
+ $result .= $langs->trans("CustomerInvoice").' | ';
+ } elseif ($mode == 'fourn') {
+ $result .= $langs->trans("SupplierInvoice").'';
+ } else {
+ return '';
+ }
+ $result .= '
';
+
+ $dolgraph = new DolGraph();
+ $dolgraph->SetData($dataseries);
+ $dolgraph->SetDataColor(array_values($colorseries));
+ $dolgraph->setShowLegend(2);
+ $dolgraph->setShowPercent(1);
+ $dolgraph->SetType(['pie']);
+ $dolgraph->setHeight('150');
+ $dolgraph->setWidth('300');
+ if ($mode == 'customers') {
+ $dolgraph->draw('idgraphcustomerinvoices');
+ } elseif ($mode == 'fourn') {
+ $dolgraph->draw('idgraphfourninvoices');
+ } else {
+ return '';
+ }
+ $result .= '';
+ $result .= '| '.$dolgraph->show($total ? 0 : 1).' | ';
+ $result .= '
';
+ $result .= '
';
+ $result .= '
';
+ }
+ return $result;
+ } else {
+ dol_print_error($db);
+ }
+ }
+}
/**
* Return a HTML table that contains a list with customer invoice drafts
*
diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang
index 7cae82e6ac7..405689a57e5 100644
--- a/htdocs/langs/en_US/compta.lang
+++ b/htdocs/langs/en_US/compta.lang
@@ -286,3 +286,9 @@ ReportPurchaseTurnover=Purchase turnover invoiced
ReportPurchaseTurnoverCollected=Purchase turnover collected
IncludeVarpaysInResults = Include various payments in reports
IncludeLoansInResults = Include loans in reports
+InvoiceLate30Days = Invoices late 30 days
+InvoiceLate15Days = Invoices late 15 days
+InvoiceLateMinus15Days = Invoices late
+InvoiceNotLate = To pay < 15 days
+InvoiceNotLate15Days = To pay > 15 days
+InvoiceNotLate30Days = To pay in > 30 days