Example #1
0
    if ($mode == 'customer') {
        $fileurl_avg = DOL_URL_ROOT . '/viewimage.php?modulepart=orderstats&file=ordersaverage-' . $user->id . '-' . $year . '.png';
    }
    if ($mode == 'supplier') {
        $fileurl_avg = DOL_URL_ROOT . '/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-' . $user->id . '-' . $year . '.png';
    }
} else {
    $filename_avg = $dir . '/ordersaverage-' . $year . '.png';
    if ($mode == 'customer') {
        $fileurl_avg = DOL_URL_ROOT . '/viewimage.php?modulepart=orderstats&file=ordersaverage-' . $year . '.png';
    }
    if ($mode == 'supplier') {
        $fileurl_avg = DOL_URL_ROOT . '/viewimage.php?modulepart=orderstatssupplier&file=ordersaverage-' . $year . '.png';
    }
}
$px3 = new DolGraph();
$mesg = $px3->isGraphKo();
if (!$mesg) {
    $px3->SetData($data);
    $i = $startyear;
    $legend = array();
    while ($i <= $endyear) {
        $legend[] = $i;
        $i++;
    }
    $px3->SetLegend($legend);
    $px3->SetYLabel($langs->trans("AmountAverage"));
    $px3->SetMaxValue($px3->GetCeilMaxValue());
    $px3->SetMinValue($px3->GetFloorMinValue());
    $px3->SetWidth($WIDTH);
    $px3->SetHeight($HEIGHT);
    /**
     *  Load data into info_box_contents array to show array later.
     *
     *  @param	int		$max        Maximum number of records to load
     *  @return	void
     */
    function loadBox($max = 5)
    {
        global $conf, $user, $langs, $db;
        $this->max = $max;
        $refreshaction = 'refresh_' . $this->boxcode;
        include_once DOL_DOCUMENT_ROOT . '/fourn/class/fournisseur.facture.class.php';
        $text = $langs->trans("BoxSuppliersInvoicesPerMonth", $max);
        $this->info_box_head = array('text' => $text, 'limit' => dol_strlen($text), 'graph' => 1, 'sublink' => '', 'subtext' => $langs->trans("Filter"), 'subpicto' => 'filter.png', 'subclass' => 'linkobject', 'target' => 'none');
        $dir = '';
        // We don't need a path because image file will not be saved into disk
        $prefix = '';
        $socid = 0;
        if ($user->societe_id) {
            $socid = $user->societe_id;
        }
        if (!$user->rights->societe->client->voir || $socid) {
            $prefix .= 'private-' . $user->id . '-';
        }
        // If user has no permission to see all, output dir is specific to user
        if ($user->rights->fournisseur->facture->lire) {
            $param_year = 'DOLUSERCOOKIE_box_' . $this->boxcode . '_year';
            $param_shownb = 'DOLUSERCOOKIE_box_' . $this->boxcode . '_shownb';
            $param_showtot = 'DOLUSERCOOKIE_box_' . $this->boxcode . '_showtot';
            include_once DOL_DOCUMENT_ROOT . '/core/class/dolgraph.class.php';
            include_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facturestats.class.php';
            $autosetarray = preg_split("/[,;:]+/", GETPOST('DOL_AUTOSET_COOKIE'));
            if (in_array('DOLUSERCOOKIE_box_' . $this->boxcode, $autosetarray)) {
                $endyear = GETPOST($param_year, 'int');
                $shownb = GETPOST($param_shownb, 'alpha');
                $showtot = GETPOST($param_showtot, 'alpha');
            } else {
                $tmparray = json_decode($_COOKIE['DOLUSERCOOKIE_box_' . $this->boxcode], true);
                $endyear = $tmparray['year'];
                $shownb = $tmparray['shownb'];
                $showtot = $tmparray['showtot'];
            }
            if (empty($shownb) && empty($showtot)) {
                $showtot = 1;
            }
            $nowarray = dol_getdate(dol_now(), true);
            if (empty($endyear)) {
                $endyear = $nowarray['year'];
            }
            $startyear = $endyear - 1;
            $mode = 'supplier';
            $WIDTH = $shownb && $showtot || !empty($conf->dol_optimize_smallscreen) ? '256' : '320';
            $HEIGHT = '192';
            $stats = new FactureStats($this->db, $socid, $mode, 0);
            // Build graphic number of object. $data = array(array('Lib',val1,val2,val3),...)
            if ($shownb) {
                $data1 = $stats->getNbByMonthWithPrevYear($endyear, $startyear, GETPOST('action') == $refreshaction ? -1 : 3600 * 24);
                $filenamenb = $dir . "/" . $prefix . "invoicessuppliernbinyear-" . $year . ".png";
                if ($mode == 'customer') {
                    $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=billstats&amp;file=invoicesnbinyear-' . $year . '.png';
                }
                if ($mode == 'supplier') {
                    $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=billstatssupplier&amp;file=invoicessuppliernbinyear-' . $year . '.png';
                }
                $px1 = new DolGraph();
                $mesg = $px1->isGraphKo();
                if (!$mesg) {
                    $px1->SetData($data1);
                    unset($data1);
                    $px1->SetPrecisionY(0);
                    $i = $startyear;
                    $legend = array();
                    while ($i <= $endyear) {
                        $legend[] = $i;
                        $i++;
                    }
                    $px1->SetLegend($legend);
                    $px1->SetMaxValue($px1->GetCeilMaxValue());
                    $px1->SetWidth($WIDTH);
                    $px1->SetHeight($HEIGHT);
                    $px1->SetYLabel($langs->trans("NumberOfBills"));
                    $px1->SetShading(3);
                    $px1->SetHorizTickIncrement(1);
                    $px1->SetPrecisionY(0);
                    $px1->SetCssPrefix("cssboxes");
                    $px1->mode = 'depth';
                    $px1->SetTitle($langs->trans("NumberOfBillsByMonth"));
                    $px1->draw($filenamenb, $fileurlnb);
                }
            }
            // Build graphic number of object. $data = array(array('Lib',val1,val2,val3),...)
            if ($showtot) {
                $data2 = $stats->getAmountByMonthWithPrevYear($endyear, $startyear, GETPOST('action') == $refreshaction ? -1 : 3600 * 24);
                $filenamenb = $dir . "/" . $prefix . "invoicessupplieramountinyear-" . $year . ".png";
                if ($mode == 'customer') {
                    $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=billstats&amp;file=invoicesamountinyear-' . $year . '.png';
                }
                if ($mode == 'supplier') {
                    $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=billstatssupplier&amp;file=invoicessupplieramountinyear-' . $year . '.png';
                }
                $px2 = new DolGraph();
                $mesg = $px2->isGraphKo();
                if (!$mesg) {
                    $px2->SetData($data2);
                    unset($data2);
                    $px2->SetPrecisionY(0);
                    $i = $startyear;
                    $legend = array();
                    while ($i <= $endyear) {
                        $legend[] = $i;
                        $i++;
                    }
                    $px2->SetLegend($legend);
                    $px2->SetMaxValue($px2->GetCeilMaxValue());
                    $px2->SetWidth($WIDTH);
                    $px2->SetHeight($HEIGHT);
                    $px2->SetYLabel($langs->trans("AmountOfBillsHT"));
                    $px2->SetShading(3);
                    $px2->SetHorizTickIncrement(1);
                    $px2->SetPrecisionY(0);
                    $px2->SetCssPrefix("cssboxes");
                    $px2->mode = 'depth';
                    $px2->SetTitle($langs->trans("AmountOfBillsByMonthHT"));
                    $px2->draw($filenamenb, $fileurlnb);
                }
            }
            if (empty($conf->use_javascript_ajax)) {
                $langs->load("errors");
                $mesg = $langs->trans("WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs");
            }
            if (!$mesg) {
                $stringtoshow = '';
                $stringtoshow .= '<script type="text/javascript" language="javascript">
					jQuery(document).ready(function() {
						jQuery("#idsubimg' . $this->boxcode . '").click(function() {
							jQuery("#idfilter' . $this->boxcode . '").toggle();
						});
					});
					</script>';
                $stringtoshow .= '<div class="center hideobject" id="idfilter' . $this->boxcode . '">';
                // hideobject is to start hidden
                $stringtoshow .= '<form class="flat formboxfilter" method="POST" action="' . $_SERVER["PHP_SELF"] . '">';
                $stringtoshow .= '<input type="hidden" name="action" value="' . $refreshaction . '">';
                $stringtoshow .= '<input type="hidden" name="DOL_AUTOSET_COOKIE" value="DOLUSERCOOKIE_box_' . $this->boxcode . ':year,shownb,showtot">';
                $stringtoshow .= '<input type="checkbox" name="' . $param_shownb . '"' . ($shownb ? ' checked' : '') . '> ' . $langs->trans("NumberOfBillsByMonth");
                $stringtoshow .= ' &nbsp; ';
                $stringtoshow .= '<input type="checkbox" name="' . $param_showtot . '"' . ($showtot ? ' checked' : '') . '> ' . $langs->trans("AmountOfBillsByMonthHT");
                $stringtoshow .= '<br>';
                $stringtoshow .= $langs->trans("Year") . ' <input class="flat" size="4" type="text" name="' . $param_year . '" value="' . $endyear . '">';
                $stringtoshow .= '<input type="image" alt="' . $langs->trans("Refresh") . '" src="' . img_picto($langs->trans("Refresh"), 'refresh.png', '', '', 1) . '">';
                $stringtoshow .= '</form>';
                $stringtoshow .= '</div>';
                if ($shownb && $showtot) {
                    $stringtoshow .= '<div class="fichecenter">';
                    $stringtoshow .= '<div class="fichehalfleft">';
                }
                if ($shownb) {
                    $stringtoshow .= $px1->show();
                }
                if ($shownb && $showtot) {
                    $stringtoshow .= '</div>';
                    $stringtoshow .= '<div class="fichehalfright">';
                }
                if ($showtot) {
                    $stringtoshow .= $px2->show();
                }
                if ($shownb && $showtot) {
                    $stringtoshow .= '</div>';
                    $stringtoshow .= '</div>';
                }
                $this->info_box_contents[0][0] = array('td' => 'align="center" class="nohover"', 'textnoformat' => $stringtoshow);
            } else {
                $this->info_box_contents[0][0] = array('td' => 'align="left" class="nohover"', 'maxlength' => 500, 'text' => $mesg);
            }
        } else {
            $this->info_box_contents[0][0] = array('td' => 'align="left"', 'text' => $langs->trans("ReadPermissionNotAllowed"));
        }
    }
Example #3
0
 $data_debit = array();
 for ($i = 0; $i < 12; $i++) {
     $data_credit[$i] = isset($credits[substr("0" . ($i + 1), -2)]) ? $credits[substr("0" . ($i + 1), -2)] : 0;
     $data_debit[$i] = isset($debits[substr("0" . ($i + 1), -2)]) ? $debits[substr("0" . ($i + 1), -2)] : 0;
     $labels[$i] = dol_print_date(dol_mktime(12, 0, 0, $i + 1, 1, 2000), "%b");
     $datamin[$i] = $acct->min_desired;
 }
 // Fabrication tableau 4b
 $file = $conf->banque->dir_temp . "/movement" . $account . "-" . $year . ".png";
 $fileurl = DOL_URL_ROOT . '/viewimage.php?modulepart=banque_temp&file=' . "/movement" . $account . "-" . $year . ".png";
 $title = $langs->transnoentities("BankMovements") . ' - ' . $langs->transnoentities("Year") . ': ' . $year;
 $graph_datas = array();
 foreach ($data_credit as $i => $val) {
     $graph_datas[$i] = array($labels[$i], $data_credit[$i], $data_debit[$i]);
 }
 $px5 = new DolGraph();
 $px5->SetData($graph_datas);
 $px5->SetLegend(array($langs->transnoentities("Credit"), $langs->transnoentities("Debit")));
 $px5->SetLegendWidthMin(180);
 $px5->SetMaxValue($px5->GetCeilMaxValue() < 0 ? 0 : $px5->GetCeilMaxValue());
 $px5->SetMinValue($px5->GetFloorMinValue() > 0 ? 0 : $px5->GetFloorMinValue());
 $px5->SetTitle($title);
 $px5->SetWidth($WIDTH);
 $px5->SetHeight($HEIGHT);
 $px5->SetType(array('bars', 'bars'));
 $px5->SetShading(3);
 $px5->setBgColor('onglet');
 $px5->setBgColorGrid(array(255, 255, 255));
 $px5->SetHorizTickIncrement(1);
 $px5->SetPrecisionY(0);
 $px5->draw($file, $fileurl);
Example #4
0
require_once DOL_DOCUMENT_ROOT . "/expedition/class/expeditionstats.class.php";
require_once DOL_DOCUMENT_ROOT . "/core/class/dolgraph.class.php";
/*
 * View
 */
llxHeader();
$WIDTH = 500;
$HEIGHT = 200;
$mesg = '';
print_fiche_titre($langs->trans("StatisticsOfSendings") . ' ' . $_GET["year"], $mesg);
$stats = new ExpeditionStats($db);
$data = $stats->getNbExpeditionByMonth($_GET["year"]);
dol_mkdir($conf->expedition->dir_temp);
$filename = $conf->expedition->dir_temp . "/expedition" . $year . ".png";
$fileurl = DOL_URL_ROOT . '/viewimage.php?modulepart=expeditionstats&file=expedition' . $year . '.png';
$px = new DolGraph();
$mesg = $px->isGraphKo();
if (!$mesg) {
    $px->SetData($data);
    $px->SetMaxValue($px->GetCeilMaxValue());
    $px->SetWidth($WIDTH);
    $px->SetHeight($HEIGHT);
    $px->SetYLabel($langs->trans("NbOfOrders"));
    $px->SetShading(3);
    $px->SetHorizTickIncrement(1);
    $px->SetPrecisionY(0);
    $px->draw($filename, $fileurl);
}
print '<table class="border" width="100%">';
print '<tr><td align="center">Nombre d expedition par mois</td>';
print '<td align="center">';
Example #5
0
    if ($mode == 'customer') {
        $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=shipmentstats&file=shipmentsnbinyear-' . $user->id . '-' . $year . '.png';
    }
    if ($mode == 'supplier') {
        $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=shipmentstatssupplier&file=shipmentsnbinyear-' . $user->id . '-' . $year . '.png';
    }
} else {
    $filenamenb = $dir . '/shipmentsnbinyear-' . $year . '.png';
    if ($mode == 'customer') {
        $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=shipmentstats&file=shipmentsnbinyear-' . $year . '.png';
    }
    if ($mode == 'supplier') {
        $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=shipmentstatssupplier&file=shipmentsnbinyear-' . $year . '.png';
    }
}
$px1 = new DolGraph();
$mesg = $px1->isGraphKo();
if (!$mesg) {
    $px1->SetData($data);
    $px1->SetPrecisionY(0);
    $i = $startyear;
    $legend = array();
    while ($i <= $endyear) {
        $legend[] = $i;
        $i++;
    }
    $px1->SetLegend($legend);
    $px1->SetMaxValue($px1->GetCeilMaxValue());
    $px1->SetMinValue(min(0, $px1->GetFloorMinValue()));
    $px1->SetWidth($WIDTH);
    $px1->SetHeight($HEIGHT);
Example #6
0
 $data_year_2 = array();
 for ($i = 0; $i < 12; $i++) {
     $data_year_0[$i] = isset($tblyear[0][substr("0" . ($i + 1), -2)]) ? $tblyear[0][substr("0" . ($i + 1), -2)] : 0;
     $data_year_1[$i] = isset($tblyear[1][substr("0" . ($i + 1), -2)]) ? $tblyear[1][substr("0" . ($i + 1), -2)] : 0;
     $data_year_2[$i] = isset($tblyear[2][substr("0" . ($i + 1), -2)]) ? $tblyear[2][substr("0" . ($i + 1), -2)] : 0;
     $labels[$i] = dol_print_date(dol_mktime(12, 0, 0, $i + 1, 1, 2000), "%b");
     $datamin[$i] = 0;
 }
 $file = $conf->banque->dir_temp . "/debmovement" . $id . "-" . $year . ".png";
 $fileurl = DOL_URL_ROOT . '/viewimage.php?modulepart=banque_temp&file=' . "/debmovement" . $id . "-" . $year . ".png";
 $title = $langs->transnoentities("Debit") . ' - ' . $langs->transnoentities("Year") . ': ' . ($year - 2) . ' - ' . ($year - 1) . " - " . $year;
 $graph_datas = array();
 for ($i = 0; $i < 12; $i++) {
     $graph_datas[$i] = array($labels[$i], $data_year_0[$i], $data_year_1[$i], $data_year_2[$i]);
 }
 $px2 = new DolGraph();
 $px2->SetData($graph_datas);
 $px2->SetLegend(array($year, $year - 1, $year - 2));
 $px2->SetLegendWidthMin(180);
 $px2->SetMaxValue($px2->GetCeilMaxValue() < 0 ? 0 : $px2->GetCeilMaxValue());
 $px2->SetMinValue($px2->GetFloorMinValue() > 0 ? 0 : $px2->GetFloorMinValue());
 $px2->SetTitle($title);
 $px2->SetWidth($width);
 $px2->SetHeight($height);
 $px2->SetType(array('line', 'line', 'line'));
 $px2->SetShading(3);
 $px2->setBgColor('onglet');
 $px2->setBgColorGrid(array(255, 255, 255));
 $px2->SetHorizTickIncrement(1);
 $px2->SetPrecisionY(0);
 $px2->draw($file, $fileurl);
Example #7
0
File: index.php Project: BebZ/lead
    $px2->SetHeight($HEIGHT);
    $px2->SetYLabel($langs->trans("LeadAmountOfLead"));
    $px2->SetShading(3);
    $px2->SetHorizTickIncrement(1);
    $px2->SetPrecisionY(0);
    $px2->mode = 'depth';
    $px2->SetTitle($langs->trans("LeadAmountOfLeadsByMonth"));
    $px2->draw($filenamenb, $fileurlnb);
}
// Build graphic with transformation rate
$data = $stats_lead->getTransformRateByMonthWithPrevYear($endyear, $startyear);
//var_dump($data);
// $data = array(array('Lib',val1,val2,val3),...)
$filenamenb = $conf->lead->dir_output . "/stats/leadtransrateprevyear-" . $year . ".png";
$fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=leadstats&amp;file=leadtransrateprevyear-' . $year . '.png';
$px3 = new DolGraph();
$mesg = $px3->isGraphKo();
if (!$mesg) {
    $px3->SetData($data);
    $i = $startyear;
    $legend = array();
    while ($i <= $endyear) {
        $legend[] = $i;
        $i++;
    }
    $px3->SetLegend($legend);
    $px3->SetMaxValue($px3->GetCeilMaxValue());
    $px3->SetMinValue(min(0, $px3->GetFloorMinValue()));
    $px3->SetWidth($WIDTH);
    $px3->SetHeight($HEIGHT);
    $px3->SetYLabel($langs->trans("LeadTransRateOfLead"));
Example #8
0
     print '<br>';
 }
 print '<br>';
 //print '<table width="100%">';
 // Generation des graphs
 if ($object->id > 0) {
     $dir = !empty($conf->product->multidir_temp[$object->entity]) ? $conf->product->multidir_temp[$object->entity] : $conf->service->multidir_temp[$object->entity];
     if (!file_exists($dir . '/' . $object->id)) {
         if (dol_mkdir($dir . '/' . $object->id) < 0) {
             $mesg = $langs->trans("ErrorCanNotCreateDir", $dir);
             $error++;
         }
     }
 }
 $graphfiles = array('propal' => array('modulepart' => 'productstats_proposals', 'file' => $object->id . '/propal12m' . ((string) $type != '' ? '_type' . $type : '') . '_' . $mode . '.png', 'label' => $mode == 'byunit' ? $langs->transnoentitiesnoconv("NumberOfUnitsProposals") : $langs->transnoentitiesnoconv("NumberOfProposals")), 'orders' => array('modulepart' => 'productstats_orders', 'file' => $object->id . '/orders12m' . ((string) $type != '' ? '_type' . $type : '') . '_' . $mode . '.png', 'label' => $mode == 'byunit' ? $langs->transnoentitiesnoconv("NumberOfUnitsCustomerOrders") : $langs->transnoentitiesnoconv("NumberOfCustomerOrders")), 'invoices' => array('modulepart' => 'productstats_invoices', 'file' => $object->id . '/invoices12m' . ((string) $type != '' ? '_type' . $type : '') . '_' . $mode . '.png', 'label' => $mode == 'byunit' ? $langs->transnoentitiesnoconv("NumberOfUnitsCustomerInvoices") : $langs->transnoentitiesnoconv("NumberOfCustomerInvoices")), 'orderssuppliers' => array('modulepart' => 'productstats_orderssuppliers', 'file' => $object->id . '/orderssuppliers12m' . ((string) $type != '' ? '_type' . $type : '') . '_' . $mode . '.png', 'label' => $mode == 'byunit' ? $langs->transnoentitiesnoconv("NumberOfUnitsSupplierOrders") : $langs->transnoentitiesnoconv("NumberOfSupplierOrders")), 'invoicessuppliers' => array('modulepart' => 'productstats_invoicessuppliers', 'file' => $object->id . '/invoicessuppliers12m' . ((string) $type != '' ? '_type' . $type : '') . '_' . $mode . '.png', 'label' => $mode == 'byunit' ? $langs->transnoentitiesnoconv("NumberOfUnitsSupplierInvoices") : $langs->transnoentitiesnoconv("NumberOfSupplierInvoices")));
 $px = new DolGraph();
 if (!$error) {
     $mesg = $px->isGraphKo();
     if (!$mesg) {
         foreach ($graphfiles as $key => $val) {
             if (!$graphfiles[$key]['file']) {
                 continue;
             }
             $graph_data = array();
             if (dol_is_file($dir . '/' . $graphfiles[$key]['file'])) {
                 // TODO Load cachefile $graphfiles[$key]['file']
             } else {
                 if ($key == 'propal') {
                     $graph_data = $object->get_nb_propal($socid, $mode, (string) $type != '' ? $type : -1);
                 }
                 if ($key == 'orders') {
    $px1->SetHeight($HEIGHT);
    $px1->SetYLabel($langs->trans("NbOfSubscriptions"));
    $px1->SetShading(3);
    $px1->SetHorizTickIncrement(1);
    $px1->SetPrecisionY(0);
    $px1->mode = 'depth';
    $px1->SetTitle($langs->trans("NbOfSubscriptions"));
    $px1->draw($filenamenb, $fileurlnb);
}
// Build graphic amount of object
$data = $stats->getAmountByMonthWithPrevYear($endyear, $startyear);
//var_dump($data);
// $data = array(array('Lib',val1,val2,val3),...)
$filenameamount = $dir . '/subscriptionsamountinyear-' . $year . '.png';
$fileurlamount = DOL_URL_ROOT . '/viewimage.php?modulepart=memberstats&file=subscriptionsamountinyear-' . $year . '.png';
$px2 = new DolGraph();
$mesg = $px2->isGraphKo();
if (!$mesg) {
    $px2->SetData($data);
    $px2->SetPrecisionY(0);
    $i = $startyear;
    while ($i <= $endyear) {
        $legend[] = $i;
        $i++;
    }
    $px2->SetLegend($legend);
    $px2->SetMaxValue($px2->GetCeilMaxValue());
    $px2->SetMinValue(min(0, $px2->GetFloorMinValue()));
    $px2->SetWidth($WIDTH);
    $px2->SetHeight($HEIGHT);
    $px2->SetYLabel($langs->trans("AmountOfSubscriptions"));
Example #10
0
$data = $stats->getAmountByMonthWithPrevYear($endyear,$startyear);
//var_dump($data);
// $data = array(array('Lib',val1,val2,val3),...)

if (!$user->rights->societe->client->voir || $user->societe_id)
{
    $filenameamount = $dir.'/proposalsamountinyear-'.$user->id.'-'.$year.'.png';
    $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsamountinyear-'.$user->id.'-'.$year.'.png';
}
else
{
    $filenameamount = $dir.'/proposalsamountinyear-'.$year.'.png';
    $fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=propalstats&file=proposalsamountinyear-'.$year.'.png';
}

$px = new DolGraph();
$mesg = $px->isGraphKo();
if (! $mesg)
{
    $px->SetData($data);
    $px->SetPrecisionY(0);
    $i=$startyear;
    while ($i <= $endyear)
    {
        $legend[]=$i;
        $i++;
    }
    $px->SetLegend($legend);
    $px->SetMaxValue($px->GetCeilMaxValue());
    $px->SetMinValue(min(0,$px->GetFloorMinValue()));
    $px->SetWidth($WIDTH);
Example #11
0
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
/**
 *	    \file       htdocs/adherents/stats/geo.php
 *      \ingroup    member
 *		\brief      Page with geographical statistics on members
 */
require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT . '/core/lib/member.lib.php';
require_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php';
require_once DOL_DOCUMENT_ROOT . '/core/class/dolgraph.class.php';
$graphwidth = DolGraph::getDefaultGraphSizeForStats('width', 700);
$mapratio = 0.5;
$graphheight = round($graphwidth * $mapratio);
$mode = GETPOST('mode') ? GETPOST('mode') : '';
// Security check
if ($user->societe_id > 0) {
    $action = '';
    $socid = $user->societe_id;
}
$result = restrictedArea($user, 'adherent', '', '', 'cotisation');
$year = strftime("%Y", time());
$startyear = $year - 2;
$endyear = $year;
$langs->load("members");
$langs->load("companies");
/*
Example #12
0
		'orders'           =>array('modulepart'=>'productstats_orders',
		'file' => $product->id.'/orders12m.png',
		'label' => ($mode=='byunit'?$langs->trans("NumberOfUnitsCustomerOrders"):$langs->trans("NumberOfCustomerOrders"))),
		'invoices'         =>array('modulepart'=>'productstats_invoices',
		'file' => $product->id.'/invoices12m.png',
		'label' => ($mode=='byunit'?$langs->trans("NumberOfUnitsCustomerInvoices"):$langs->trans("NumberOfCustomerInvoices"))),
		'invoicessuppliers'=>array('modulepart'=>'productstats_invoicessuppliers',
		'file' => $product->id.'/invoicessuppliers12m.png',
		'label' => ($mode=='byunit'?$langs->trans("NumberOfUnitsSupplierInvoices"):$langs->trans("NumberOfSupplierInvoices"))),

		//			'orderssuppliers'  =>array('modulepart'=>'productstats_orderssuppliers', 'file' => $product->id.'/orderssuppliers12m.png', 'label' => $langs->trans("Nombre commande fournisseurs sur les 12 derniers mois")),
		//			'contracts'        =>array('modulepart'=>'productstats_contracts', 'file' => $product->id.'/contracts12m.png', 'label' => $langs->trans("Nombre contrats sur les 12 derniers mois")),

		);

		$px = new DolGraph();

		if (! $error)
		{
			$mesg = $px->isGraphKo();
			if (! $mesg)
			{
				foreach($graphfiles as $key => $val)
				{
					if (! $graphfiles[$key]['file']) continue;

					$graph_data = array();

					// TODO Test si deja existant et recent, on ne genere pas
					if ($key == 'propal')            $graph_data = $product->get_nb_propal($socid,$mode);
					if ($key == 'orders')            $graph_data = $product->get_nb_order($socid,$mode);
Example #13
0


$res = $stats->getAverageByMonth($year);

$data = array();

for ($i = 1 ; $i < 13 ; $i++)
{
  $data[$i-1] = array(ucfirst(substr(dol_print_date(dol_mktime(12,0,0,$i,1,$year),"%b"),0,3)), $res[$i]);
}

$filename_avg = $dir."/tripsexpensesaverage-".$year.".png";
$fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=tripsexpensesstats&file=tripsexpensesaverage-'.$year.'.png';

$px = new DolGraph();
$mesg = $px->isGraphKo();
if (! $mesg)
{
    $px->SetData($data);
    $px->SetYLabel($langs->trans("AmountAverage"));
    $px->SetMaxValue($px->GetCeilMaxValue());
    $px->SetMinValue($px->GetFloorMinValue());
    $px->SetWidth($GRAPHWIDTH);
    $px->SetHeight($GRAPHHEIGHT);
    $px->SetShading(3);
	$px->SetHorizTickIncrement(1);
	$px->SetPrecisionY(0);
    $px->draw($filename_avg);
}
    for ($i = 0 ; $i < 12 ; $i++)
    {
        $data_credit[$i] = isset($credits[substr("0".($i+1),-2)]) ? $credits[substr("0".($i+1),-2)] : 0;
        $data_debit[$i] = isset($debits[substr("0".($i+1),-2)]) ? $debits[substr("0".($i+1),-2)] : 0;
        $labels[$i] = $i+1;
    }

    // Fabrication tableau 4
    $file= $conf->banque->dir_temp."/mouvement.$account.$year.png";
    $title=$langs->trans("Movements").' '.$langs->trans("Year").': '.$year;
    $graph_datas=array();
    foreach($data_credit as $i => $val)
    {
        $graph_datas[$i]=array($labels[$i],$data_credit[$i],$data_debit[$i]);
    }
    $px = new DolGraph();
    $px->SetData($graph_datas);
    $px->SetLegend(array($langs->trans("Debit"),$langs->trans("Credit")));
    $px->SetMaxValue($px->GetCeilMaxValue());
    $px->SetMinValue($px->GetFloorMinValue());
    $px->SetTitle($title);
    $px->SetWidth($width);
    $px->SetHeight($height);
    $px->SetType('bars');
    $px->SetShading(3);
    $px->draw($file);
}

$db->close();

print 'Graph files generated into directory '.$conf->banque->dir_temp."\n";
    /**
     *  Load data into info_box_contents array to show array later.
     *
     *  @param	int		$max        Maximum number of records to load
     *  @return	void
     */
    function loadBox($max = 5)
    {
        global $conf, $user, $langs, $db;
        $this->max = $max;
        $refreshaction = 'refresh_' . $this->boxcode;
        include_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php';
        include_once DOL_DOCUMENT_ROOT . '/comm/propal/class/propal.class.php';
        include_once DOL_DOCUMENT_ROOT . '/commande/class/commande.class.php';
        $text = $langs->trans("BoxProductDistribution", $max);
        $this->info_box_head = array('text' => $text, 'limit' => dol_strlen($text), 'graph' => 1, 'sublink' => '', 'subtext' => $langs->trans("Filter"), 'subpicto' => 'filter.png', 'subclass' => 'linkobject', 'target' => 'none');
        $param_year = 'DOLUSERCOOKIE_box_' . $this->boxcode . '_year';
        $param_showinvoicenb = 'DOLUSERCOOKIE_box_' . $this->boxcode . '_showinvoicenb';
        $param_showpropalnb = 'DOLUSERCOOKIE_box_' . $this->boxcode . '_showpropalnb';
        $param_showordernb = 'DOLUSERCOOKIE_box_' . $this->boxcode . '_showordernb';
        $autosetarray = preg_split("/[,;:]+/", GETPOST('DOL_AUTOSET_COOKIE'));
        if (in_array('DOLUSERCOOKIE_box_' . $this->boxcode, $autosetarray)) {
            $year = GETPOST($param_year, 'int');
            $showinvoicenb = GETPOST($param_showinvoicenb, 'alpha');
            $showpropalnb = GETPOST($param_showpropalnb, 'alpha');
            $showordernb = GETPOST($param_showordernb, 'alpha');
        } else {
            $tmparray = json_decode($_COOKIE['DOLUSERCOOKIE_box_' . $this->boxcode], true);
            $year = $tmparray['year'];
            $showinvoicenb = $tmparray['showinvoicenb'];
            $showpropalnb = $tmparray['showpropalnb'];
            $showordernb = $tmparray['showordernb'];
        }
        if (empty($showinvoicenb) && empty($showpropalnb) && empty($showordernb)) {
            $showpropalnb = 1;
            $showinvoicenb = 1;
            $showordernb = 1;
        }
        if (empty($conf->facture->enabled) || empty($user->rights->facture->lire)) {
            $showinvoicenb = 0;
        }
        if (empty($conf->propal->enabled) || empty($user->rights->propal->lire)) {
            $showpropalnb = 0;
        }
        if (empty($conf->commande->enabled) || empty($user->rights->commande->lire)) {
            $showordernb = 0;
        }
        $nowarray = dol_getdate(dol_now(), true);
        if (empty($year)) {
            $year = $nowarray['year'];
        }
        $nbofgraph = 0;
        if ($showinvoicenb) {
            $nbofgraph++;
        }
        if ($showpropalnb) {
            $nbofgraph++;
        }
        if ($showordernb) {
            $nbofgraph++;
        }
        $paramtitle = $langs->transnoentitiesnoconv("Products") . '/' . $langs->transnoentitiesnoconv("Services");
        if (empty($conf->produit->enabled)) {
            $paramtitle = $langs->transnoentitiesnoconv("Services");
        }
        if (empty($conf->service->enabled)) {
            $paramtitle = $langs->transnoentitiesnoconv("Products");
        }
        $socid = empty($user->societe_id) ? 0 : $user->societe_id;
        $userid = 0;
        // No filter on user creation
        $WIDTH = $nbofgraph >= 2 || !empty($conf->dol_optimize_smallscreen) ? '160' : '320';
        $HEIGHT = '192';
        if (!empty($conf->facture->enabled) && !empty($user->rights->facture->lire)) {
            // Build graphic number of object. $data = array(array('Lib',val1,val2,val3),...)
            if ($showinvoicenb) {
                include_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facturestats.class.php';
                $showpointvalue = 1;
                $nocolor = 0;
                $mode = 'customer';
                $stats_invoice = new FactureStats($this->db, $socid, $mode, $userid > 0 ? $userid : 0);
                $data1 = $stats_invoice->getAllByProductEntry($year, GETPOST('action') == $refreshaction ? -1 : 3600 * 24);
                if (empty($data1)) {
                    $showpointvalue = 0;
                    $nocolor = 1;
                    $data1 = array(array(0 => $langs->trans("None"), 1 => 1));
                }
                $filenamenb = $dir . "/prodserforinvoice-" . $year . ".png";
                $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=productstats&amp;file=prodserforinvoice-' . $year . '.png';
                $px1 = new DolGraph();
                $mesg = $px1->isGraphKo();
                if (!$mesg) {
                    $i = 0;
                    $tot = count($data1);
                    $legend = array();
                    while ($i <= $tot) {
                        $data1[$i][0] = dol_trunc($data1[$i][0], 5);
                        // Required to avoid error "Could not draw pie with labels contained inside canvas"
                        $legend[] = $data1[$i][0];
                        $i++;
                    }
                    $px1->SetData($data1);
                    unset($data1);
                    if ($nocolor) {
                        $px1->SetDataColor(array(array(220, 220, 220)));
                    }
                    $px1->SetPrecisionY(0);
                    $px1->SetLegend($legend);
                    $px1->setShowLegend(0);
                    $px1->setShowPointValue($showpointvalue);
                    $px1->setShowPercent(0);
                    $px1->SetMaxValue($px1->GetCeilMaxValue());
                    $px1->SetWidth($WIDTH);
                    $px1->SetHeight($HEIGHT);
                    //$px1->SetYLabel($langs->trans("NumberOfBills"));
                    $px1->SetShading(3);
                    $px1->SetHorizTickIncrement(1);
                    $px1->SetPrecisionY(0);
                    $px1->SetCssPrefix("cssboxes");
                    //$px1->mode='depth';
                    $px1->SetType(array('pie'));
                    $px1->SetTitle($langs->trans("BoxProductDistributionFor", $paramtitle, $langs->transnoentitiesnoconv("Invoices")));
                    $px1->draw($filenamenb, $fileurlnb);
                }
            }
        }
        if (!empty($conf->propal->enabled) && !empty($user->rights->propal->lire)) {
            // Build graphic number of object. $data = array(array('Lib',val1,val2,val3),...)
            if ($showpropalnb) {
                include_once DOL_DOCUMENT_ROOT . '/comm/propal/class/propalestats.class.php';
                $showpointvalue = 1;
                $nocolor = 0;
                $stats_proposal = new PropaleStats($this->db, $socid, $userid > 0 ? $userid : 0);
                $data2 = $stats_proposal->getAllByProductEntry($year, GETPOST('action') == $refreshaction ? -1 : 3600 * 24);
                if (empty($data2)) {
                    $showpointvalue = 0;
                    $nocolor = 1;
                    $data2 = array(array(0 => $langs->trans("None"), 1 => 1));
                }
                $filenamenb = $dir . "/prodserforpropal-" . $year . ".png";
                $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=proposalstats&amp;file=prodserforpropal-' . $year . '.png';
                $px2 = new DolGraph();
                $mesg = $px2->isGraphKo();
                if (!$mesg) {
                    $i = 0;
                    $tot = count($data2);
                    $legend = array();
                    while ($i <= $tot) {
                        $data2[$i][0] = dol_trunc($data2[$i][0], 5);
                        // Required to avoid error "Could not draw pie with labels contained inside canvas"
                        $legend[] = $data2[$i][0];
                        $i++;
                    }
                    $px2->SetData($data2);
                    unset($data2);
                    if ($nocolor) {
                        $px2->SetDataColor(array(array(220, 220, 220)));
                    }
                    $px2->SetPrecisionY(0);
                    $px2->SetLegend($legend);
                    $px2->setShowLegend(0);
                    $px2->setShowPointValue($showpointvalue);
                    $px2->setShowPercent(0);
                    $px2->SetMaxValue($px2->GetCeilMaxValue());
                    $px2->SetWidth($WIDTH);
                    $px2->SetHeight($HEIGHT);
                    //$px2->SetYLabel($langs->trans("AmountOfBillsHT"));
                    $px2->SetShading(3);
                    $px2->SetHorizTickIncrement(1);
                    $px2->SetPrecisionY(0);
                    $px2->SetCssPrefix("cssboxes");
                    //$px2->mode='depth';
                    $px2->SetType(array('pie'));
                    $px2->SetTitle($langs->trans("BoxProductDistributionFor", $paramtitle, $langs->transnoentitiesnoconv("Proposals")));
                    $px2->draw($filenamenb, $fileurlnb);
                }
            }
        }
        if (!empty($conf->commande->enabled) && !empty($user->rights->commande->lire)) {
            // Build graphic number of object. $data = array(array('Lib',val1,val2,val3),...)
            if ($showordernb) {
                include_once DOL_DOCUMENT_ROOT . '/commande/class/commandestats.class.php';
                $showpointvalue = 1;
                $nocolor = 0;
                $mode = 'customer';
                $stats_order = new CommandeStats($this->db, $socid, $mode, $userid > 0 ? $userid : 0);
                $data3 = $stats_order->getAllByProductEntry($year, GETPOST('action') == $refreshaction ? -1 : 3600 * 24);
                if (empty($data3)) {
                    $showpointvalue = 0;
                    $nocolor = 1;
                    $data3 = array(array(0 => $langs->trans("None"), 1 => 1));
                }
                $filenamenb = $dir . "/prodserfororder-" . $year . ".png";
                $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=orderstats&amp;file=prodserfororder-' . $year . '.png';
                $px3 = new DolGraph();
                $mesg = $px3->isGraphKo();
                if (!$mesg) {
                    $i = 0;
                    $tot = count($data3);
                    $legend = array();
                    while ($i <= $tot) {
                        $data3[$i][0] = dol_trunc($data3[$i][0], 5);
                        // Required to avoid error "Could not draw pie with labels contained inside canvas"
                        $legend[] = $data3[$i][0];
                        $i++;
                    }
                    $px3->SetData($data3);
                    unset($data3);
                    if ($nocolor) {
                        $px3->SetDataColor(array(array(220, 220, 220)));
                    }
                    $px3->SetPrecisionY(0);
                    $px3->SetLegend($legend);
                    $px3->setShowLegend(0);
                    $px3->setShowPointValue($showpointvalue);
                    $px3->setShowPercent(0);
                    $px3->SetMaxValue($px3->GetCeilMaxValue());
                    $px3->SetWidth($WIDTH);
                    $px3->SetHeight($HEIGHT);
                    //$px3->SetYLabel($langs->trans("AmountOfBillsHT"));
                    $px3->SetShading(3);
                    $px3->SetHorizTickIncrement(1);
                    $px3->SetPrecisionY(0);
                    $px3->SetCssPrefix("cssboxes");
                    //$px3->mode='depth';
                    $px3->SetType(array('pie'));
                    $px3->SetTitle($langs->trans("BoxProductDistributionFor", $paramtitle, $langs->transnoentitiesnoconv("Orders")));
                    $px3->draw($filenamenb, $fileurlnb);
                }
            }
        }
        if (empty($conf->use_javascript_ajax)) {
            $langs->load("errors");
            $mesg = $langs->trans("WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs");
        }
        if (!$mesg) {
            $stringtoshow = '';
            $stringtoshow .= '<script type="text/javascript" language="javascript">
				jQuery(document).ready(function() {
					jQuery("#idsubimg' . $this->boxcode . '").click(function() {
						jQuery("#idfilter' . $this->boxcode . '").toggle();
					});
				});
			</script>';
            $stringtoshow .= '<div class="center hideobject" id="idfilter' . $this->boxcode . '">';
            // hideobject is to start hidden
            $stringtoshow .= '<form class="flat formboxfilter" method="POST" action="' . $_SERVER["PHP_SELF"] . '">';
            $stringtoshow .= '<input type="hidden" name="action" value="' . $refreshaction . '">';
            $stringtoshow .= '<input type="hidden" name="DOL_AUTOSET_COOKIE" value="DOLUSERCOOKIE_box_' . $this->boxcode . ':year,showinvoicenb,showpropalnb,showordernb">';
            if (!empty($conf->facture->enabled) || !empty($user->rights->facture->lire)) {
                $stringtoshow .= '<input type="checkbox" name="' . $param_showinvoicenb . '"' . ($showinvoicenb ? ' checked="true"' : '') . '> ' . $langs->trans("ForCustomersInvoices");
                $stringtoshow .= ' &nbsp; ';
            }
            if (!empty($conf->propal->enabled) || !empty($user->rights->propal->lire)) {
                $stringtoshow .= '<input type="checkbox" name="' . $param_showpropalnb . '"' . ($showpropalnb ? ' checked="true"' : '') . '> ' . $langs->trans("ForProposals");
                $stringtoshow .= '&nbsp;';
            }
            if (!empty($conf->commande->enabled) || !empty($user->rights->commande->lire)) {
                $stringtoshow .= '<input type="checkbox" name="' . $param_showordernb . '"' . ($showordernb ? ' checked="true"' : '') . '> ' . $langs->trans("ForCustomersOrders");
            }
            $stringtoshow .= '<br>';
            $stringtoshow .= $langs->trans("Year") . ' <input class="flat" size="4" type="text" name="' . $param_year . '" value="' . $year . '">';
            $stringtoshow .= '<input type="image" alt="' . $langs->trans("Refresh") . '" src="' . img_picto('', 'refresh.png', '', '', 1) . '">';
            $stringtoshow .= '</form>';
            $stringtoshow .= '</div>';
            if ($nbofgraph == 1) {
                if ($showinvoicenb) {
                    $stringtoshow .= $px1->show();
                } else {
                    if ($showpropalnb) {
                        $stringtoshow .= $px2->show();
                    } else {
                        $stringtoshow .= $px3->show();
                    }
                }
            }
            if ($nbofgraph == 2) {
                $stringtoshow .= '<div class="fichecenter"><div class="containercenter"><div class="fichehalfleft">';
                if ($showinvoicenb) {
                    $stringtoshow .= $px1->show();
                } else {
                    if ($showpropalnb) {
                        $stringtoshow .= $px2->show();
                    }
                }
                $stringtoshow .= '</div><div class="fichehalfright">';
                if ($showordernb) {
                    $stringtoshow .= $px3->show();
                } else {
                    if ($showpropalnb) {
                        $stringtoshow .= $px2->show();
                    }
                }
                $stringtoshow .= '</div></div></div>';
            }
            if ($nbofgraph == 3) {
                $stringtoshow .= '<div class="fichecenter"><div class="containercenter"><div class="fichehalfleft">';
                $stringtoshow .= $px1->show();
                $stringtoshow .= '</div><div class="fichehalfright">';
                $stringtoshow .= $px2->show();
                $stringtoshow .= '</div></div></div>';
                $stringtoshow .= '<div class="fichecenter"><div class="containercenter">';
                $stringtoshow .= $px3->show();
                $stringtoshow .= '</div></div>';
            }
            $this->info_box_contents[0][0] = array('td' => 'align="center" class="nohover"', 'textnoformat' => $stringtoshow);
        } else {
            $this->info_box_contents[0][0] = array('td' => 'align="left" class="nohover"', 'maxlength' => 500, 'text' => $mesg);
        }
    }