Location: PHPKode > projects > Progetto e3g > e3g_0.19.2/objects/esporta_dati.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 esporta_dati extends P4A_Mask
{
	function esporta_dati()
	{
		$this->p4a_mask();
		$this->addCss(E3G_TEMPLATE_DIR . 'css/style.css');
		$p4a =& p4a::singleton();
		$db =& p4a_db::singleton();
		
		$this->setTitle('Esportazione Dati Archivio');
 
				// ------------------------------------------------------------- Toolbar
		$this->build("p4a_quit_toolbar", "toolbar");
		//$this->toolbar->setMask($this);

		
		// --------------------------------------------------- Label spiegazione
		$this->build("p4a_label", "lbl_campi");
		$this->lbl_campi->setValue("");
		$this->lbl_campi->setWidth("600");
		
		$this->build("p4a_db_source", "ds_campi");
		$this->ds_campi->setTable($p4a->e3g_prefix."articoli");
		$this->ds_campi->setPk("idarticolo");		
		$this->ds_campi->addOrder("codice");		
		$this->ds_campi->load();
		$this->ds_campi->firstRow();
		

		$values = array(); 
		while ($field =& $this->ds_campi->fields->nextItem()) {
			$values[] = array("col" => $field->getName(), "desc" => $field->getName());
		}
		
		$array_source =& $this->build("p4a_array_source", "array_source"); 
		$array_source->load($values); 
		$array_source->setPk("col"); 
		
		$this->build("p4a_field", "fld_campi");
		$this->fld_campi->setLabel('Campi');
		$this->fld_campi->label->setWidth(100);
		$this->fld_campi->setWidth(300);
		$this->fld_campi->setType('select');
		$this->fld_campi->setSourceValueField('col');
		$this->fld_campi->setSourceDescriptionField('desc');
		$this->fld_campi->setSource($array_source);
		

		$values_tab = array(); 
		$values_tab[] = array("val" => "ART", "desc" => "Articoli");
		$values_tab[] = array("val" => "CLI", "desc" => "Clienti");
		$values_tab[] = array("val" => "FOR", "desc" => "Fornitori");
		
		$array_tabelle =& $this->build("p4a_array_source", "array_tabelle"); 
		$array_tabelle->load($values_tab); 
		$array_tabelle->setPk("val"); 
		
		$this->build("p4a_field", "fld_tabelle");
		$this->fld_tabelle->setLabel('Tabella');
		$this->fld_tabelle->label->setWidth(100);
		$this->fld_tabelle->setWidth(300);
		$this->fld_tabelle->setType('select');
		$this->fld_tabelle->setSourceValueField('val');
		$this->fld_tabelle->setSourceDescriptionField('desc');
		$this->fld_tabelle->setSource($array_tabelle);
		$this->fld_tabelle->addAction("OnChange");
		$this->intercept($this->fld_tabelle, "onChange","fld_tabelle_change");		


		$this->build("p4a_button", "stampacsv");
		$this->stampacsv->setLabel("Esporta dati (CSV)");
		$this->stampacsv->setIcon( "spreadsheet" );
		$this->stampacsv->setWidth( "150" );
		$this->stampacsv->addAction("onClick");
		$this->intercept($this->stampacsv, "onClick", "stampacsv_click");

		$this->build("p4a_button", "bu_aggiungi");
		$this->bu_aggiungi->setLabel("Aggiungi Campo");
		$this->bu_aggiungi->addAction("onClick");
		$this->intercept($this->bu_aggiungi, "onClick", "aggiungiclick");

		$this->build("p4a_button", "bu_rimuovi");
		$this->bu_rimuovi->setLabel("Rimuovi Campo");
		$this->bu_rimuovi->addAction("onClick");
		$this->intercept($this->bu_rimuovi, "onClick", "rimuoviclick");

		$sh_campi =& $this->build("p4a_sheet", "sh_campi");
        $this->sh_campi->defineGrid(4, 2);
        $this->sh_campi->setWidth(700);

		$this->sh_campi->anchor($this->fld_tabelle,1,1);
		$this->sh_campi->anchor($this->fld_campi,2,1);
		$this->sh_campi->anchor($this->bu_aggiungi,2,2);
		$this->sh_campi->anchor($this->bu_rimuovi,3,2);
		$this->sh_campi->anchor($this->stampacsv,4,1);

	
		// --------------------------------------------------------- Ancoraggio		
		$frm=& $this->build("p4a_frame", "frm");
		$frm->setWidth(730);
		$frm->anchor($this->sh_campi);
		$frm->anchor($this->lbl_campi);
				
		e3g_scrivi_footer( $this, $frm );

  		// Display
		$this->display("main", $frm);
		$this->display("menu", $p4a->menu);
		$this->display("top", $this->toolbar);
	}


	function main()
	{
		parent::main();
	}

	
			

	function fld_tabelle_change()
	{
		$p4a =& p4a::singleton();
		
		
		$this->build("p4a_db_source", "ds_campi");
		
		switch ( $this->fld_tabelle->getNewValue()) {
			case "ART":
				$this->ds_campi->setTable($p4a->e3g_prefix."articoli");
				$this->ds_campi->setPk("idarticolo");		
				break;
			  
			case "CLI":  
				$this->ds_campi->setTable($p4a->e3g_prefix."anagrafiche");
				$this->ds_campi->setPk("idanag");		
				$this->ds_campi->setWhere("tipocfa='C'");		
				break;

			case "FOR":  
				$this->ds_campi->setTable($p4a->e3g_prefix."anagrafiche");
				$this->ds_campi->setPk("idanag");		
				$this->ds_campi->setWhere("tipocfa='F'");		
				break;
		}
		
		
		$this->ds_campi->load();
		$this->ds_campi->firstRow();
		
		$values = array(); 
		while ($field =& $this->ds_campi->fields->nextItem()) {
			$values[] = array("col" => $field->getName(), "desc" => $field->getName());
		}
		
		$array_source =& $this->build("p4a_array_source", "array_source"); 
		$array_source->load($values); 
		$array_source->setPk("col"); 
		
		$this->fld_campi->setSource($array_source);
		
		$this->lbl_campi->setValue("");
		
	
	}

	function aggiungiclick()
	{
		$tmp = $this->lbl_campi->getValue();
		$this->lbl_campi->setValue($tmp.$this->fld_campi->getNewValue().", ");
		 	
	}
	
	function rimuoviclick()
	{
		$tmp = str_replace($this->fld_campi->getNewValue().", ", "", $this->lbl_campi->getValue());
		$this->lbl_campi->setValue($tmp);
	}

	function stampacsv_click()
	{
		$p4a =& p4a::singleton();
		$db =& p4a_db::singleton();

		$campi = substr($this->lbl_campi->getValue(), 0, strlen($this->lbl_campi->getValue())-2); 
		$this->build("p4a_db_source", "ds_art");
		
		switch ( $this->fld_tabelle->getNewValue()) {
			case "ART":
				$this->ds_art->setTable($p4a->e3g_prefix."articoli");
				$this->ds_art->setPk("idarticolo");		
				break;
			  
			case "CLI":  
				$this->ds_art->setTable($p4a->e3g_prefix."anagrafiche");
				$this->ds_art->setPk("idanag");		
				$this->ds_art->setWhere("tipocfa='C'");		
				break;

			case "FOR":  
				$this->ds_art->setTable($p4a->e3g_prefix."anagrafiche");
				$this->ds_art->setPk("idanag");		
				$this->ds_art->setWhere("tipocfa='F'");		
				break;
		}
		
		
		$this->ds_art->setSelect($campi);
		$this->ds_art->load();
		$this->ds_art->firstRow();

		$colonne = explode(", ", $this->lbl_campi->getValue());
		
        $nome_file = P4A_Get_Valid_File_Name( "Dati_" . $p4a->e3g_azienda_rag_soc . ".csv" );

    	$this->ds_art->exportToCsv( $nome_file, ";", $colonne );
	}

	
}


?>
Return current item: Progetto e3g