70 global $conf, $user, $langs;
74 $refreshaction =
'refresh_'.$this->boxcode;
76 include_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
78 $startmonth = $conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1;
79 if (empty($conf->global->GRAPH_USE_FISCAL_YEAR)) {
83 $text = $langs->trans(
"BoxSuppliersOrdersPerMonth", $max);
84 $this->info_box_head = array(
89 'subtext'=>$langs->trans(
"Filter"),
90 'subpicto'=>
'filter.png',
91 'subclass'=>
'linkobject boxfilter',
99 $socid = $user->socid;
101 if (empty($user->rights->societe->client->voir) || $socid) {
102 $prefix .=
'private-'.$user->id.
'-';
105 if ($user->rights->fournisseur->commande->lire) {
106 $langs->load(
"orders");
108 $param_year =
'DOLUSERCOOKIE_box_'.$this->boxcode.
'_year';
109 $param_shownb =
'DOLUSERCOOKIE_box_'.$this->boxcode.
'_shownb';
110 $param_showtot =
'DOLUSERCOOKIE_box_'.$this->boxcode.
'_showtot';
112 include_once DOL_DOCUMENT_ROOT.
'/core/class/dolgraph.class.php';
113 include_once DOL_DOCUMENT_ROOT.
'/commande/class/commandestats.class.php';
114 $autosetarray = preg_split(
"/[,;:]+/",
GETPOST(
'DOL_AUTOSET_COOKIE'));
115 if (in_array(
'DOLUSERCOOKIE_box_'.$this->boxcode, $autosetarray)) {
116 $endyear =
GETPOST($param_year,
'int');
117 $shownb =
GETPOST($param_shownb,
'alpha');
118 $showtot =
GETPOST($param_showtot,
'alpha');
120 $tmparray = (!empty($_COOKIE[
'DOLUSERCOOKIE_box_'.$this->boxcode]) ? json_decode($_COOKIE[
'DOLUSERCOOKIE_box_'.$this->boxcode],
true) : array());
121 $endyear = (!empty($tmparray[
'year']) ? $tmparray[
'year'] :
'');
122 $shownb = (!empty($tmparray[
'shownb']) ? $tmparray[
'shownb'] :
'');
123 $showtot = (!empty($tmparray[
'showtot']) ? $tmparray[
'showtot'] :
'');
125 if (empty($shownb) && empty($showtot)) {
130 if (empty($endyear)) {
131 $endyear = $nowarray[
'year'];
133 $startyear = $endyear - (empty($conf->global->MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH) ? 2 : ($conf->global->MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH - 1));
136 $WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ?
'256' :
'320';
143 $data1 = $stats->getNbByMonthWithPrevYear($endyear, $startyear, (
GETPOST(
'action',
'aZ09') == $refreshaction ?-1 : (3600 * 24)), ($WIDTH < 300 ? 2 : 0), $startmonth);
145 $filenamenb = $dir.
"/".$prefix.
"orderssuppliernbinyear-".$endyear.
".png";
147 $fileurlnb = DOL_URL_ROOT.
'/viewimage.php?modulepart=orderstats&file=ordersnbinyear-'.$endyear.
'.png';
148 if ($mode ==
'supplier') {
149 $fileurlnb = DOL_URL_ROOT.
'/viewimage.php?modulepart=orderstatssupplier&file=orderssuppliernbinyear-'.$endyear.
'.png';
153 $mesg = $px1->isGraphKo();
155 $px1->SetData($data1);
159 while ($i <= $endyear) {
160 if ($startmonth != 1) {
161 $legend[] = sprintf(
"%d/%d", $i - 2001, $i - 2000);
167 $px1->SetLegend($legend);
168 $px1->SetMaxValue($px1->GetCeilMaxValue());
169 $px1->SetWidth($WIDTH);
170 $px1->SetHeight($HEIGHT);
171 $px1->SetYLabel($langs->trans(
"NumberOfOrders"));
173 $px1->SetHorizTickIncrement(1);
174 $px1->SetCssPrefix(
"cssboxes");
175 $px1->mode =
'depth';
176 $px1->SetTitle($langs->trans(
"NumberOfOrdersByMonth"));
178 $px1->draw($filenamenb, $fileurlnb);
184 $data2 = $stats->getAmountByMonthWithPrevYear($endyear, $startyear, (
GETPOST(
'action',
'aZ09') == $refreshaction ?-1 : (3600 * 24)), ($WIDTH < 300 ? 2 : 0), $startmonth);
186 $filenamenb = $dir.
"/".$prefix.
"orderssupplieramountinyear-".$endyear.
".png";
188 $fileurlnb = DOL_URL_ROOT.
'/viewimage.php?modulepart=orderstats&file=ordersamountinyear-'.$endyear.
'.png';
189 if ($mode ==
'supplier') {
190 $fileurlnb = DOL_URL_ROOT.
'/viewimage.php?modulepart=orderstatssupplier&file=orderssupplieramountinyear-'.$endyear.
'.png';
194 $mesg = $px2->isGraphKo();
196 $px2->SetData($data2);
200 while ($i <= $endyear) {
201 if ($startmonth != 1) {
202 $legend[] = sprintf(
"%d/%d", $i - 2001, $i - 2000);
208 $px2->SetLegend($legend);
209 $px2->SetMaxValue($px2->GetCeilMaxValue());
210 $px2->SetWidth($WIDTH);
211 $px2->SetHeight($HEIGHT);
212 $px2->SetYLabel($langs->trans(
"AmountOfOrdersHT"));
214 $px2->SetHorizTickIncrement(1);
215 $px2->SetCssPrefix(
"cssboxes");
216 $px2->mode =
'depth';
217 $px2->SetTitle($langs->trans(
"AmountOfOrdersByMonthHT"));
219 $px2->draw($filenamenb, $fileurlnb);
223 if (empty($conf->use_javascript_ajax)) {
224 $langs->load(
"errors");
225 $mesg = $langs->trans(
"WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs");
230 $stringtoshow .=
'<script nonce="'.getNonce().
'" type="text/javascript">
231 jQuery(document).ready(function() {
232 jQuery("#idsubimg'.$this->boxcode.
'").click(function() {
233 jQuery("#idfilter'.$this->boxcode.
'").toggle();
237 $stringtoshow .=
'<div class="center hideobject" id="idfilter'.$this->boxcode.
'">';
238 $stringtoshow .=
'<form class="flat formboxfilter" method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
239 $stringtoshow .=
'<input type="hidden" name="token" value="'.newToken().
'">';
240 $stringtoshow .=
'<input type="hidden" name="action" value="'.$refreshaction.
'">';
241 $stringtoshow .=
'<input type="hidden" name="page_y" value="">';
242 $stringtoshow .=
'<input type="hidden" name="DOL_AUTOSET_COOKIE" value="DOLUSERCOOKIE_box_'.$this->boxcode.
':year,shownb,showtot">';
243 $stringtoshow .=
'<input type="checkbox" name="'.$param_shownb.
'"'.($shownb ?
' checked' :
'').
'> '.$langs->trans(
"NumberOfOrdersByMonth");
244 $stringtoshow .=
' ';
245 $stringtoshow .=
'<input type="checkbox" name="'.$param_showtot.
'"'.($showtot ?
' checked' :
'').
'> '.$langs->trans(
"AmountOfOrdersByMonthHT");
246 $stringtoshow .=
'<br>';
247 $stringtoshow .= $langs->trans(
"Year").
' <input class="flat" size="4" type="text" name="'.$param_year.
'" value="'.$endyear.
'">';
248 $stringtoshow .=
'<input type="image" class="reposition inline-block valigntextbottom" alt="'.$langs->trans(
"Refresh").
'" src="'.
img_picto($langs->trans(
"Refresh"),
'refresh.png',
'',
'', 1).
'">';
249 $stringtoshow .=
'</form>';
250 $stringtoshow .=
'</div>';
251 if ($shownb && $showtot) {
252 $stringtoshow .=
'<div class="fichecenter">';
253 $stringtoshow .=
'<div class="fichehalfleft">';
256 $stringtoshow .= $px1->show();
258 if ($shownb && $showtot) {
259 $stringtoshow .=
'</div>';
260 $stringtoshow .=
'<div class="fichehalfright">';
263 $stringtoshow .= $px2->show();
265 if ($shownb && $showtot) {
266 $stringtoshow .=
'</div>';
267 $stringtoshow .=
'</div>';
269 $this->info_box_contents[0][0] = array(
270 'tr'=>
'class="oddeven nohover"',
271 'td' =>
'class="nohover center"',
272 'textnoformat'=>$stringtoshow,
275 $this->info_box_contents[0][0] = array(
276 'tr'=>
'class="oddeven nohover"',
277 'td' =>
'class="nohover left"',
283 $this->info_box_contents[0][0] = array(
284 'td' =>
'class="nohover opacitymedium left"',
285 'text' => $langs->trans(
"ReadPermissionNotAllowed")