Location: PHPKode > projects > Progetto e3g > e3g_0.19.2/objects/about_admin.php
<?php
/**
 * Progetto e3g - Equogest/GestiGAS
 *   Software gestionali per l'economia solidale
 *   <http://www.progettoe3g.org>
 *
 * Copyright (C) 2003-2009
 *   Andrea Piazza <http://www.andreapiazza.it>
 *   Marco Munari  <http://www.marcomunari.it>
 *
 * @package Progetto e3g - Equogest/GestiGAS
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
 * 
 * Questo  programma e' software  libero; e' lecito redistribuirlo  o
 * modificarlo secondo i termini  della Licenza Pubblica Generica GNU
 * come  pubblicata dalla Free  Software  Foundation; o la versione 2
 * della licenza o (a propria scelta) una versione successiva.
 * 
 * Questo programma e' distribuito nella  speranza che sia  utile, ma
 * SENZA  ALCUNA GARANZIA;  senza  neppure la  garanzia implicita  di
 * NEGOZIABILITA' o di APPLICABILITA' PER  UN PARTICOLARE  SCOPO.  Si
 * veda la Licenza Pubblica Generica GNU per avere maggiori dettagli.
 * 
 * Questo  programma deve  essere  distribuito assieme  ad una  copia
 * della Licenza Pubblica Generica GNU.
*/


require_once( dirname(__FILE__) . '/../libraries/e3g_utils.php' );


class about_admin extends P4A_Mask
{
	function about_admin()
	{
		// MASCHERA ABOUT AVANZATA PER AMMINISTRATORI, REFERENTI, ... 

 		$this->p4a_mask();
		$this->addCss(E3G_TEMPLATE_DIR . 'css/style.css');
 		$p4a =& p4a::singleton();
		$db =& p4a_db::singleton();

        $this->setTitle("");


    // Colonna SINISTRA con bottoni vari ---------------------------------------

        $button_width = 180;
        
		// Pulsante Aggiorna database (tabelle specifiche)
		$this->build("p4a_button", "bu_aggiorna_db_multi");
		$this->bu_aggiorna_db_multi->setLabel("Aggiorna database...");
		$this->bu_aggiorna_db_multi->setIcon( "warning" );
        $this->bu_aggiorna_db_multi->setWidth( $button_width );
		$this->bu_aggiorna_db_multi->setInvisible();
        $this->bu_aggiorna_db_multi->addAction("onClick");
		$this->bu_aggiorna_db_multi->requireConfirmation( "onClick", "Confermi l'operazione di aggiornamento del database ?" );
        $this->intercept($this->bu_aggiorna_db_multi, "onClick", "aggiorna_db_multi_click");

		// Pulsante Aggiorna database (tabelle condivise)
		$this->build("p4a_button", "bu_aggiorna_db_cond");
		$this->bu_aggiorna_db_cond->setLabel("Aggiorna database (tab. condivise)...");
		$this->bu_aggiorna_db_cond->setIcon( "warning" );
        $this->bu_aggiorna_db_cond->setWidth( $button_width );
		$this->bu_aggiorna_db_cond->setInvisible();
        $this->bu_aggiorna_db_cond->addAction("onClick");
		$this->bu_aggiorna_db_cond->requireConfirmation( "onClick", "Confermi l'operazione di aggiornamento del database (tabelle condivise) ?" );
        $this->intercept($this->bu_aggiorna_db_cond, "onClick", "aggiorna_db_cond_click");

        
        $bu_home =& $this->build("p4a_button", "bu_home");
        $bu_home->setLabel("HOME");
        $bu_home->setIcon( "home" );
        $bu_home->setWidth( $button_width );
        $this->bu_home->addAction("onClick");
        $this->intercept($this->bu_home, "onClick", "bu_homeClick");


        $bu_articoli =& $this->build("p4a_button", "bu_articoli");
        $bu_articoli->setLabel("Listino articoli");
        $bu_articoli->setIcon( "articoli" );
        $bu_articoli->setWidth( $button_width );
        $this->bu_articoli->addAction("onClick");
        $this->intercept($this->bu_articoli, "onClick", "bu_articoliClick");

        $bu_fornitori =& $this->build("p4a_button", "bu_fornitori");
        $bu_fornitori->setLabel("Anagrafica Fornitori");
        $bu_fornitori->setIcon( "users" );
        $bu_fornitori->setWidth( $button_width );
        $this->bu_fornitori->addAction("onClick");
        $this->intercept($this->bu_fornitori, "onClick", "bu_fornitoriClick");
         
        $bu_anag_utenti =& $this->build("p4a_button", "bu_anag_utenti");
        $bu_anag_utenti->setLabel( E3G_TIPO_GESTIONE == 'G' ? "Anagrafica Utenti" : "Anagrafica Clienti");
        $bu_anag_utenti->setIcon( "users" );
        $bu_anag_utenti->setWidth( $button_width );
        $this->bu_anag_utenti->addAction("onClick");
        $this->intercept($this->bu_anag_utenti, "onClick", "bu_anag_utentiClick");


        $bu_ordine_globale =& $this->build("p4a_button", "bu_ordine_globale");
        $bu_ordine_globale->setLabel("Ordine globale");
        $bu_ordine_globale->setIcon( "kwrite" );
        $bu_ordine_globale->setWidth( $button_width );
        $this->bu_ordine_globale->addAction("onClick");
        $this->intercept($this->bu_ordine_globale, "onClick", "bu_ordine_globaleClick");

        $bu_estrai_ordine_for =& $this->build("p4a_button", "bu_estrai_ordine_for");
        $bu_estrai_ordine_for->setLabel("Estrai ordine fornitore");
        $bu_estrai_ordine_for->setIcon( "execute" );
        $bu_estrai_ordine_for->setWidth( $button_width );
        $this->bu_estrai_ordine_for->addAction("onClick");
        $this->intercept($this->bu_estrai_ordine_for, "onClick", "bu_estrai_ordine_forClick");

        $this->build("p4a_button", "bu_modifica_prezzi_articoli");
        $this->bu_modifica_prezzi_articoli->setLabel("Modifica prezzi articoli");
        $this->bu_modifica_prezzi_articoli->setIcon( "execute" );
        $this->bu_modifica_prezzi_articoli->setWidth( $button_width );
        $this->bu_modifica_prezzi_articoli->addAction("onClick");
        $this->intercept($this->bu_modifica_prezzi_articoli, "onClick", "bu_modifica_prezzi_articoliClick");

		$bu_consegna_utente =& $this->build("p4a_button", "bu_consegna_utente");
		$bu_consegna_utente->setLabel("Consegna all'utente");
        $bu_consegna_utente->setIcon( "execute" );
		$bu_consegna_utente->setWidth( $button_width );
		$this->bu_consegna_utente->addAction("onClick");
		$this->intercept($this->bu_consegna_utente, "onClick", "bu_consegna_utenteClick");
		

    // Colonna DESTRA con logo e info varie ------------------------------------

        // Immagine logo (come box HTML anzichè p4a_image altrimenti non si centra)
        if ( E3G_TIPO_GESTIONE == 'G' )
            $src_logo = 'images/gestigas_01.jpg';
        else
            $src_logo = 'images/equogest_01.jpg';
        $this->build("p4a_box", "box_logo");
        $this->box_logo->setValue( '<div align="center"><img src="' . $src_logo .
            '" alt="Progetto e3g - Equogest/GestiGAS" /></div>' );

        $lbl_info =& $this->build("p4a_label", "lbl_info");
        $lbl_info->setWidth( E3G_MAIN_FRAME_WIDTH-$button_width-25 );
        

		// Eventuale aggiornamento database ------------------------------------
		
		$dbver = $db->queryOne( "SELECT dbver FROM _aziende WHERE prefix = '" . $p4a->e3g_prefix . "'" );	
		if ( $dbver < E3G_DB_MULTI_VERSIONE_ATTESA ) 
			$this->bu_aggiorna_db_multi->setVisible();
			
		$dbver = $db->queryOne( "SELECT dbver FROM _config" );	
		if ( $dbver < E3G_DB_COND_VERSIONE_ATTESA ) 
			$this->bu_aggiorna_db_cond->setVisible();
			
		// Ancoraggi -----------------------------------------------------------
        
        // Sheet pulsanti colonna sinistra        
        $sh_pulsanti =& $this->build("p4a_sheet", "sh_pulsanti", 13);
        $this->sh_pulsanti->anchor($this->bu_aggiorna_db_multi, 1);
        $this->sh_pulsanti->anchor($this->bu_aggiorna_db_cond, 2);
        // 3: spazio
        if ( E3G_TIPO_GESTIONE == 'G' ) {
            $this->sh_pulsanti->anchor( $this->bu_home, 4 );
            // 5: spazio
            $this->sh_pulsanti->anchor( $this->bu_articoli, 6 );
            $this->sh_pulsanti->anchor( $this->bu_fornitori, 7 );
            $this->sh_pulsanti->anchor( $this->bu_anag_utenti, 8 );
            // 9: spazio
            $this->sh_pulsanti->anchor( $this->bu_ordine_globale, 10 );
            $this->sh_pulsanti->anchor( $this->bu_estrai_ordine_for, 11 );
            $this->sh_pulsanti->anchor( $this->bu_modifica_prezzi_articoli, 12 );
            $this->sh_pulsanti->anchor( $this->bu_consegna_utente, 13 );
        }       
        
        // Sheet principale (con logo, info e sheet pulsanti)
        $sh_pulsanti =& $this->build("p4a_sheet", "sh_main");
        $this->sh_main->defineGrid(2, 2);
        $this->sh_main->anchor($this->box_logo, 1, 2);
        $this->sh_main->anchor($this->lbl_info, 2, 2);
        $this->sh_main->anchor($this->sh_pulsanti, 1, 1, 2, 1);


		// Message
		$message =& $this->build("p4a_message", "message");
		$message->setWidth("500");


		if ( E3G_TIPO_GESTIONE == 'E' ) {
			// Controllo la coerenza delle date e segnalo eventuali stranezze
			$last_login = $db->queryOne( "SELECT YEAR(last_login) FROM ".$p4a->e3g_prefix ."anagrafiche WHERE idanag = '" . $p4a->e3g_utente_idanag. "'" );	
				
			if (intval($last_login) != intval(date("Y")))
				$message->setValue("ATTENZIONE! Dall'ultimo Login e' cambiato l'anno. Verificare l'Anno Contabile impostato.");
			
			if (intval($p4a->e3g_azienda_anno_contabile) != intval(date("Y")))
				$message->setValue("ATTENZIONE! L'Anno Contabile impostato non corrisponde alla data di sistema. Verificare le impostazioni del programma.");
		}
		
		
		// Frame
		$frm=& $this->build("p4a_frame", "frm");
		$frm->setWidth(E3G_MAIN_FRAME_WIDTH);

		$frm->anchor($this->message);
		$frm->anchor($this->sh_main);
		
		e3g_scrivi_footer( $this, $frm );
		
  		// Display
		$this->display("main", $frm);
		$this->display("menu", $p4a->menu);
	}


	function main()
	{
        // testo pagina intro (compilato solo per Gestigas)
		if ( E3G_TIPO_GESTIONE == 'G' )
		{
			$this->aggiorna_intro_text();
		}
		
        
		parent::main();
	}

	
    // -------------------------------------------------------------------------
    function aggiorna_db_multi_click()
    // -------------------------------------------------------------------------
    {
        $p4a =& p4a::singleton();
        
        $result = (array)e3g_aggiorna_database( $p4a->e3g_prefix );
        $this->message->setIcon( $result[0] ? "info" : "warning" );
        $this->message->setValue( $result[1] );
        
        $this->bu_aggiorna_db_multi->setInvisible();
    }


    // -------------------------------------------------------------------------
    function aggiorna_db_cond_click()
    // -------------------------------------------------------------------------
    {
        $result = (array)e3g_aggiorna_database( "#COND#" );
        $this->message->setIcon( $result[0] ? "info" : "warning" );
        $this->message->setValue( $result[1] );
        
        $this->bu_aggiorna_db_cond->setInvisible();
    }

    function bu_homeClick()
    {
        $p4a =& p4a::singleton();
        $p4a->openMask("about_user");
    }                   


	function bu_articoliClick()
	{
		$p4a =& p4a::singleton();
		$p4a->openMask('anagarticoli');
	}


    function bu_fornitoriClick()
    {
        $p4a =& p4a::singleton();
        $p4a->openMask('anagfornitori');
    }


    function bu_anag_utentiClick()
    {
        $p4a =& p4a::singleton();
        $p4a->openMask('anag_utentigg_clientieg');
    }


	function bu_ordine_globaleClick()
	{
		$p4a =& p4a::singleton();
		if ( E3G_TIPO_GESTIONE == 'G' )
			$p4a->openMask('cassa_gg_globale');
		else
			$p4a->openMask('cassa_eg');
	}


    function bu_estrai_ordine_forClick()
    {
        $p4a =& p4a::singleton();
        $p4a->openMask('doc_estrazione_gg');
    }


    function bu_modifica_prezzi_articoliClick()
    {
        $p4a =& p4a::singleton();
        $p4a->openMask('modifica_prezzi_articoli');
    }

	function bu_consegna_utenteClick()
	{
		$p4a =& p4a::singleton();
		$p4a->openMask('consegna_utente');
	}


    // -------------------------------------------------------------------------
    function aggiorna_intro_text()
    // -------------------------------------------------------------------------
    {
        $p4a =& p4a::singleton();
        $db =& p4a_db::singleton();

        $testo = "";
        
        // -------------------------------------------- Info sull'ordine globale

        // Vengono comunque esclusi dal conteggio gli admin globali
        $query_txt = "SELECT COUNT(*) FROM " . $p4a->e3g_prefix . "anagrafiche WHERE tipocfa = 'C' AND tipoutente <> 'A' AND ";

        $ute_attesa = $db->queryOne( $query_txt . "stato = 0" );
        $ute_attivi = $db->queryOne( $query_txt . "stato = 1" );
        $ute_disabi = $db->queryOne( $query_txt . "stato = 2" );

        $ute_admin  = $db->queryOne( $query_txt . "tipoutente = 'AS'" );
        $ute_ref    = $db->queryOne( $query_txt . "tipoutente = 'R'" );
        $ute_normal = $db->queryOne( $query_txt . "tipoutente = 'U'" );

        $testo .= "<p><strong>" . ($ute_attesa+$ute_attivi+$ute_disabi) . " utenti</strong> = ( " .
            ( $ute_attesa>0 ? $ute_attesa . " in attesa di abilitazione + " : "" ) . 
            $ute_attivi . " attivi + " . $ute_disabi . " disabilitati ) = ( " .
            $ute_admin . " amministratori + " . $ute_ref . " referenti + " . $ute_normal . " normali utenti )</p>";

        // --------------------------------------------- Ultimi utenti collegati        
        $this->build( "p4a_db_source", "ds_utenti" );
        $this->ds_utenti->setSelect( "descrizione, last_login, DATE_FORMAT( last_login, 'il %d/%m/%Y alle %H:%i' ) AS desc_last_login" );
        $this->ds_utenti->setTable( $p4a->e3g_prefix . "anagrafiche" );
        $this->ds_utenti->setWhere( "idanag <> " . $p4a->e3g_utente_idanag );
        $this->ds_utenti->addOrder( "last_login", "DESC" );
        $this->ds_utenti->load();
        $this->ds_utenti->firstRow();

        if ( $this->ds_utenti->getAll(0, 5) ) {
            $testo .= "<p><strong>Ultimi utenti</strong> che si sono collegati: ";
            for( $riga=1; $riga<=5; $riga++ ) {       
                $testo .= $this->ds_utenti->fields->descrizione->getnewValue() . 
                    " (" . $this->ds_utenti->fields->desc_last_login->getNewValue() . "), ";
                $this->ds_utenti->nextRow();
            }
            $testo = rtrim( $testo, ", " ) . ".</p>";
        }
            
        // -------------------------------------------- Info sull'ordine globale

        $ordine = $db->queryRow( 
            "SELECT COUNT( DISTINCT(c.codutente) )    AS n_utenti, " .
            "       COUNT( DISTINCT(c.codfornitore) ) AS n_fornitori, " .
            "       COUNT( DISTINCT(c.codarticolo) )  AS articoli_diversi, " .
            "       SUM( c.qta ) AS pezzi, " .
            "       ROUND( SUM(c.prezzoven * (c.qta+c.qta_agg)), $p4a->e3g_azienda_n_decimali_prezzi) AS importo " .
            "  FROM " . $p4a->e3g_prefix . "carrello c " );

        $pezzi = (integer) $ordine[ "pezzi" ];

        if ( $pezzi == 0 )
            $testo .= "<p>L'ordine globale e' vuoto.</p>";
        else 
            $testo .= 
                "<p><strong>Ordine globale</strong>: " . $ordine['n_utenti'] . " utent" . ( $ordine['n_utenti']==1 ? "e ha" : "i hanno" ) .
                " ordinato " . $ordine['articoli_diversi'] . " articoli diversi in quantita' di $pezzi pezzi " .
                "(da " . $ordine['n_fornitori'] . " fornitor" . ( $ordine['n_fornitori']==1 ? "e" : "i" ) .   
                ") per un importo totale di " . $ordine['importo'] . " euro.</p>";

        // ----------------------------------------------------- Visualizzazione
        $this->lbl_info->setValue( $testo );
    }
    
}

?>
Return current item: Progetto e3g