* View */ $form = new Form($db); $formpropal = new FormPropal($db); $langs->load('propal'); $langs->load('other'); llxHeader('', $langs->trans("ProposalsStatistics")); print load_fiche_titre($langs->trans("ProposalsStatistics"), '', 'title_commercial.png'); $dir = $conf->propal->dir_temp; dol_mkdir($dir); $stats = new PropaleStats($db, $socid, $userid > 0 ? $userid : 0); if ($object_statut != '' && $object_statut >= 0) { $stats->where .= ' AND p.fk_statut IN (' . $object_statut . ')'; } // Build graphic number of object $data = $stats->getNbByMonthWithPrevYear($endyear, $startyear); // $data = array(array('Lib',val1,val2,val3),...) if (!$user->rights->societe->client->voir || $user->societe_id) { $filenamenb = $dir . '/proposalsnbinyear-' . $user->id . '-' . $year . '.png'; $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=propalstats&file=proposalsnbinyear-' . $user->id . '-' . $year . '.png'; } else { $filenamenb = $dir . '/proposalsnbinyear-' . $year . '.png'; $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=propalstats&file=proposalsnbinyear-' . $year . '.png'; } $px1 = new DolGraph(); $mesg = $px1->isGraphKo(); if (!$mesg) { $px1->SetData($data); $px1->SetPrecisionY(0); $i = $startyear; $legend = array();
/** * 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.'/comm/propal/class/propal.class.php'; //$propalstatic=new Propal($db); $text = $langs->trans("BoxProposalsPerMonth", $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->propal->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 . '/comm/propal/class/propalestats.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; $WIDTH = $shownb && $showtot || !empty($conf->dol_optimize_smallscreen) ? '256' : '320'; $HEIGHT = '192'; $stats = new PropaleStats($this->db, $socid, 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); $datatype1 = array_pad(array(), $endyear - $startyear + 1, 'bars'); $filenamenb = $dir . "/" . $prefix . "propalsnbinyear-" . $endyear . ".png"; $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=propalstats&file=propalsnbinyear-' . $endyear . '.png'; $px1 = new DolGraph(); $mesg = $px1->isGraphKo(); if (!$mesg) { $px1->SetType($datatype1); $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("NumberOfProposals")); $px1->SetShading(3); $px1->SetHorizTickIncrement(1); $px1->SetPrecisionY(0); $px1->SetCssPrefix("cssboxes"); $px1->mode = 'depth'; $px1->SetTitle($langs->trans("NumberOfProposalsByMonth")); $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); $datatype2 = array_pad(array(), $endyear - $startyear + 1, 'bars'); //$datatype2 = array('lines','bars'); $filenamenb = $dir . "/" . $prefix . "propalsamountinyear-" . $endyear . ".png"; if ($mode == 'customer') { $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=propalstats&file=propalsamountinyear-' . $endyear . '.png'; } if ($mode == 'supplier') { $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=propalstatssupplier&file=propalsamountinyear-' . $endyear . '.png'; } $px2 = new DolGraph(); $mesg = $px2->isGraphKo(); if (!$mesg) { $px2->SetType($datatype2); $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("AmountOfProposalsHT")); $px2->SetShading(3); $px2->SetHorizTickIncrement(1); $px2->SetPrecisionY(0); $px2->SetCssPrefix("cssboxes"); $px2->mode = 'depth'; $px2->SetTitle($langs->trans("AmountOfProposalsByMonthHT")); $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 divboxfilter" 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="true"' : '') . '> ' . $langs->trans("NumberOfProposalsByMonth"); $stringtoshow .= ' '; $stringtoshow .= '<input type="checkbox" name="' . $param_showtot . '"' . ($showtot ? ' checked="true"' : '') . '> ' . $langs->trans("AmountOfProposalsByMonthHT"); $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")); } }