/**
     *  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&amp;file=ordersamountinyear-' . $endyear . '.png';
                }
                if ($mode == 'supplier') {
                    $fileurlnb = DOL_URL_ROOT . '/viewimage.php?modulepart=orderstatssupplier&amp;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 .= ' &nbsp; ';
                $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"));
        }
    }
Example #2
0
 /**
  * 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++;
Example #4
0
 /**
  * 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;
 }
Example #5
0
    /**
     * 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);
    }
Example #6
0
 /**
  *	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;
 }
Example #7
0
 /**
  * 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&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" 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);
        }
    }
Example #9
0
     }
     // 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);
     }