/** * 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.commande.class.php'; $text = $langs->trans("BoxSuppliersOrdersPerMonth", $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->commande->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 . '/commande/class/commandestats.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 { include_once DOL_DOCUMENT_ROOT . '/core/lib/json.lib.php'; $tmparray = dol_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'; $userid = 0; $WIDTH = $shownb && $showtot || !empty($conf->dol_optimize_smallscreen) ? '256' : '320'; $HEIGHT = '192'; $stats = new CommandeStats($this->db, 0, $mode, $userid > 0 ? $userid : 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 . "orderssuppliernbinyear-" . $endyear . ".png"; if ($mode == 'customer') { $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=orderstats&file=ordersnbinyear-' . $endyear . '.png'; } if ($mode == 'supplier') { $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=orderstatssupplier&file=orderssuppliernbinyear-' . $endyear . '.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("NumberOfOrders")); $px1->SetShading(3); $px1->SetHorizTickIncrement(1); $px1->SetPrecisionY(0); $px1->SetCssPrefix("cssboxes"); $px1->mode = 'depth'; $px1->SetTitle($langs->trans("NumberOfOrdersByMonth")); $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 . "orderssupplieramountinyear-" . $endyear . ".png"; if ($mode == 'customer') { $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=orderstats&file=ordersamountinyear-' . $endyear . '.png'; } if ($mode == 'supplier') { $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=orderstatssupplier&file=orderssupplieramountinyear-' . $endyear . '.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("AmountOfOrdersHT")); $px2->SetShading(3); $px2->SetHorizTickIncrement(1); $px2->SetPrecisionY(0); $px2->SetCssPrefix("cssboxes"); $px2->mode = 'depth'; $px2->SetTitle($langs->trans("AmountOfOrdersByMonthHT")); $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="true"' : '') . '"> ' . $langs->trans("NumberOfOrdersByMonth"); $stringtoshow .= ' '; $stringtoshow .= '<input type="checkbox" name="' . $param_showtot . '"' . ($showtot ? ' checked="true"' : '') . '"> ' . $langs->trans("AmountOfOrdersByMonthHT"); $stringtoshow .= '<br>'; $stringtoshow .= $langs->trans("Year") . ' <input class="flat" size="4" type="text" name="' . $param_year . '" value="' . $endyear . '">'; $stringtoshow .= '<input type="image" 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")); } }
/** * Implement json_decode for PHP that does not support it * * @param string $json Json encoded to PHP Object or Array * @param bool $assoc False return an object, true return an array * @return mixed Object or Array */ function json_decode($json, $assoc = false) { return dol_json_decode($json, $assoc); }
$qty = GETPOST('qty'); $idline = GETPOST('idline'); $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOST('page', 'int'); if (!$sortfield) { $sortfield = 'p.ref'; } if (!$sortorder) { $sortorder = 'ASC'; } $limit = $conf->liste_limit; $offset = $limit * $page; $listofdata = array(); if (!empty($_SESSION['massstockmove'])) { $listofdata = dol_json_decode($_SESSION['massstockmove'], true); } /* * Actions */ if ($action == 'addline') { if (!($id_product > 0)) { $error++; setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Product")), 'errors'); } if (!$qty) { $error++; setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Qty")), 'errors'); } if (!($id_sw > 0)) { $error++;
/** * Return amount of elements by month for several years * * @param int $endyear * @param int $startyear * @param int $cachedelay accept for cache file (0=No read, no save of cache, -1=No read but save) * @return array of values */ function getTransformRateByMonthWithPrevYear($endyear, $startyear, $cachedelay = 0) { global $conf, $user, $langs; if ($startyear > $endyear) { return -1; } $datay = array(); // Search into cache if (!empty($cachedelay)) { include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/json.lib.php'; } $newpathofdestfile = $conf->user->dir_temp . '/' . get_class($this) . '_' . __FUNCTION__ . '_' . (empty($this->cachefilesuffix) ? '' : $this->cachefilesuffix . '_') . $langs->defaultlang . '_user' . $user->id . '.cache'; $newmask = '0644'; $nowgmt = dol_now(); $foundintocache = 0; if ($cachedelay > 0) { $filedate = dol_filemtime($newpathofdestfile); if ($filedate >= $nowgmt - $cachedelay) { $foundintocache = 1; $this->_lastfetchdate[get_class($this) . '_' . __FUNCTION__] = $filedate; } else { dol_syslog(get_class($this) . '::' . __FUNCTION__ . " cache file " . $newpathofdestfile . " is not found or older than now - cachedelay (" . $nowgmt . " - " . $cachedelay . ") so we can't use it."); } } // Load file into $data if ($foundintocache) { dol_syslog(get_class($this) . '::' . __FUNCTION__ . " read data from cache file " . $newpathofdestfile . " " . $filedate . "."); $data = dol_json_decode(file_get_contents($newpathofdestfile), true); } else { $year = $startyear; while ($year <= $endyear) { $datay[$year] = $this->getTransformRateByMonth($year); $year++; } $data = array(); // $data = array('xval'=>array(0=>xlabel,1=>yval1,2=>yval2...),...) for ($i = 0; $i < 12; $i++) { $data[$i][] = $datay[$endyear][$i][0]; // set label $year = $startyear; while ($year <= $endyear) { $data[$i][] = $datay[$year][$i][1]; // set yval for x=i $year++; } } } // Save cache file if (empty($foundintocache) && ($cachedelay > 0 || $cachedelay == -1)) { dol_syslog(get_class($this) . '::' . __FUNCTION__ . " save cache file " . $newpathofdestfile . " onto disk."); if (!dol_is_dir($conf->user->dir_temp)) { dol_mkdir($conf->user->dir_temp); } $fp = fopen($newpathofdestfile, 'w'); fwrite($fp, dol_json_encode($data)); fclose($fp); if (!empty($conf->global->MAIN_UMASK)) { $newmask = $conf->global->MAIN_UMASK; } @chmod($newpathofdestfile, octdec($newmask)); $this->_lastfetchdate[get_class($this) . '_' . __FUNCTION__] = $nowgmt; } return $data; }
/** * testJsonencode * * @return void */ public function testJsonEncode() { //$this->sharedFixture global $conf,$user,$langs,$db; $this->savconf=$conf; $this->savuser=$user; $this->savlangs=$langs; $this->savdb=$db; $arraytotest=array(0=>array('key'=>1,'value'=>'PRODREF','label'=>'Product ref with é and special chars \\ \' "')); $encoded=json_encode($arraytotest); //var_dump($encoded); $this->assertEquals('[{"key":1,"value":"PRODREF","label":"Product ref with \u00e9 and special chars \\\\ \' \""}]',$encoded); $decoded=json_decode($encoded,true); //var_dump($decoded); $this->assertEquals($arraytotest,$decoded); $encoded=dol_json_encode($arraytotest); //var_dump($encoded); $this->assertEquals('[{"key":1,"value":"PRODREF","label":"Product ref with \u00e9 and special chars \\\\ \' \""}]',$encoded); $decoded=dol_json_decode($encoded,true); //var_dump($decoded); $this->assertEquals($arraytotest,$decoded); }
/** * Return select list of users. Selected users are stored into session. * List of users are provided into $_SESSION['assignedtouser']. * * @param string $action Value for $action * @param string $htmlname Field name in form * @param int $show_empty 0=liste sans valeur nulle, 1=ajoute valeur inconnue * @param array $exclude Array list of users id to exclude * @param int $disabled If select list must be disabled * @param array $include Array list of users id to include or 'hierarchy' to have only supervised users * @param array $enableonly Array list of users id to be enabled. All other must be disabled * @param int $force_entity 0 or Id of environment to force * @param int $maxlength Maximum length of string into list (0=no limit) * @param int $showstatus 0=show user status only if status is disabled, 1=always show user status into label, -1=never show user status * @param string $morefilter Add more filters into sql request * @return string HTML select string * @see select_dolgroups */ function select_dolusers_forevent($action = '', $htmlname = 'userid', $show_empty = 0, $exclude = '', $disabled = 0, $include = '', $enableonly = '', $force_entity = 0, $maxlength = 0, $showstatus = 0, $morefilter = '') { global $conf, $user, $langs; $userstatic = new User($this->db); $out = ''; // Method with no ajax //$out.='<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; if ($action == 'view') { $out .= ''; } else { $out .= '<input type="hidden" class="removedassignedhidden" name="removedassigned" value="">'; $out .= '<script type="text/javascript" language="javascript">jQuery(document).ready(function () { jQuery(".removedassigned").click(function() { jQuery(".removedassignedhidden").val(jQuery(this).val()); });})</script>'; $out .= $this->select_dolusers('', $htmlname, $show_empty, $exclude, $disabled, $include, $enableonly, $force_entity, $maxlength, $showstatus, $morefilter); $out .= '<input type="submit" class="button" name="' . $action . 'assignedtouser" value="' . dol_escape_htmltag($langs->trans("Add")) . '">'; } $assignedtouser = array(); if (!empty($_SESSION['assignedtouser'])) { $assignedtouser = dol_json_decode($_SESSION['assignedtouser'], true); } $nbassignetouser = count($assignedtouser); if ($nbassignetouser && $action != 'view') { $out .= '<br>'; } $i = 0; $ownerid = 0; foreach ($assignedtouser as $key => $value) { if ($value['id'] == $ownerid) { continue; } $userstatic->fetch($value['id']); $out .= $userstatic->getNomUrl(1); if ($i == 0) { $ownerid = $value['id']; $out .= ' (' . $langs->trans("Owner") . ')'; } if ($nbassignetouser > 1 && $action != 'view') { $out .= ' <input type="image" style="border: 0px;" src="' . img_picto($langs->trans("Remove"), 'delete', '', 0, 1) . '" value="' . $userstatic->id . '" class="removedassigned" id="removedassigned_' . $userstatic->id . '" name="removedassigned_' . $userstatic->id . '">'; } //$out.=' '.($value['mandatory']?$langs->trans("Mandatory"):$langs->trans("Optional")); //$out.=' '.($value['transparency']?$langs->trans("Busy"):$langs->trans("NotBusy")); $out .= '<br>'; $i++; } //$out.='</form>'; return $out; }
/** * testJsonEncode * * @return void */ public function testJsonEncode() { //$this->sharedFixture global $conf, $user, $langs, $db; $this->savconf = $conf; $this->savuser = $user; $this->savlangs = $langs; $this->savdb = $db; // Do a test with an array starting with 0 $arraytotest = array(0 => array('key' => 1, 'value' => 'PRODREF', 'label' => 'Product ref with é and special chars \\ \' "')); $arrayencodedexpected = '[{"key":1,"value":"PRODREF","label":"Product ref with \\u00e9 and special chars \\\\ \' \\""}]'; $encoded = json_encode($arraytotest); $this->assertEquals($arrayencodedexpected, $encoded); $decoded = json_decode($encoded, true); $this->assertEquals($arraytotest, $decoded, 'test for json_xxx'); $encoded = dol_json_encode($arraytotest); $this->assertEquals($arrayencodedexpected, $encoded); $decoded = dol_json_decode($encoded, true); $this->assertEquals($arraytotest, $decoded, 'test for dol_json_xxx'); // Same test but array start with 2 instead of 0 $arraytotest = array(2 => array('key' => 1, 'value' => 'PRODREF', 'label' => 'Product ref with é and special chars \\ \' "')); $arrayencodedexpected = '{"2":{"key":1,"value":"PRODREF","label":"Product ref with \\u00e9 and special chars \\\\ \' \\""}}'; $encoded = json_encode($arraytotest); $this->assertEquals($arrayencodedexpected, $encoded); $decoded = json_decode($encoded, true); $this->assertEquals($arraytotest, $decoded, 'test for json_xxx'); $encoded = dol_json_encode($arraytotest); $this->assertEquals($arrayencodedexpected, $encoded); $decoded = dol_json_decode($encoded, true); $this->assertEquals($arraytotest, $decoded, 'test for dol_json_xxx'); // Test with object $now = gmmktime(12, 0, 0, 1, 1, 1970); $objecttotest = new stdClass(); $objecttotest->property1 = 'abc'; $objecttotest->property2 = 1234; $objecttotest->property3 = $now; $encoded = dol_json_encode($objecttotest); $this->assertEquals('{"property1":"abc","property2":1234,"property3":43200}', $encoded); }
/** * 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 { include_once DOL_DOCUMENT_ROOT . '/core/lib/json.lib.php'; $tmparray = dol_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&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&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&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 .= ' '; } if (!empty($conf->propal->enabled) || !empty($user->rights->propal->lire)) { $stringtoshow .= '<input type="checkbox" name="' . $param_showpropalnb . '"' . ($showpropalnb ? ' checked="true"' : '') . '> ' . $langs->trans("ForProposals"); $stringtoshow .= ' '; } 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" src="' . img_picto($langs->trans("Refresh"), '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); } }
} // Owner first if (!empty($object->userassigned)) { // Restore array with key with same value than param 'id' $tmplist1 = $object->userassigned; $tmplist2 = array(); foreach ($tmplist1 as $key => $val) { if ($val['id'] && $val['id'] != $object->userownerid) { $listofuserid[$val['id']] = $val; } } } $_SESSION['assignedtouser'] = dol_json_encode($listofuserid); } else { if (!empty($_SESSION['assignedtouser'])) { $listofuserid = dol_json_decode($_SESSION['assignedtouser'], true); } } print $form->select_dolusers_forevent('view', 'assignedtouser', 1); if (in_array($user->id, array_keys($listofuserid))) { print $langs->trans("MyAvailability") . ': ' . ($object->userassigned[$user->id]['transparency'] > 0 ? $langs->trans("Busy") : $langs->trans("Available")); } // We show nothing if event is assigned to nobody print ' </td></tr>'; print '</table><br><br><table class="border" width="100%">'; // Third party - Contact print '<tr><td width="30%">' . $langs->trans("ActionOnCompany") . '</td><td>' . ($object->thirdparty->id ? $object->thirdparty->getNomUrl(1) : $langs->trans("None")); if (is_object($object->thirdparty) && $object->thirdparty->id > 0 && $object->type_code == 'AC_TEL') { if ($object->thirdparty->fetch($object->thirdparty->id)) { print "<br>" . dol_print_phone($object->thirdparty->phone); }