<?
/**
* 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_doc_routines.php' );
class consegna_utente extends P4A_Mask
{
var $codtipodoc ='';
var $numdoc = 0;
var $date = '';
var $codclifor = '';
var $iddoc = 0;
var $nuovariga = 0;
var $consegna_aperta = 0;
var $where_cod_fornitore = '';
// -------------------------------------------------------------------------
function consegna_utente()
// -------------------------------------------------------------------------
{
$this->p4a_mask();
$this->addCss(E3G_TEMPLATE_DIR . 'css/style.css');
$p4a =& p4a::singleton();
$this->SetTitle('Consegna articoli ad Utente');
// Toolbar
$this->build("p4a_quit_toolbar", "toolbar");
// Message
$message =& $this->build("p4a_message", "message");
$message->setWidth("300");
// Campi invisibili per stampa
$this->build("p4a_field", "fldcodtipo");
$this->fldcodtipo->setNewValue("");
$this->build("p4a_field", "fldfornitore");
$this->fldfornitore->setNewValue("");
$this->build("p4a_field", "fldiddoc");
$this->fldiddoc->setNewValue("");
$this->build("p4a_field", "fldnumdocum");
$this->fldnumdocum->setNewValue("");
//******************************************************************
// Widget parte alta (prima della griglia)
//******************************************************************
// Combo utenti
$this->build("p4a_db_source", "ds_fam");
$this->ds_fam->setSelect( "a.idanag, a.codice, a.descrizione" );
$this->ds_fam->setTable( $p4a->e3g_prefix . "anagrafiche a" );
$this->ds_fam->setPk( "a.idanag" );
$this->ds_fam->setWhere( "a.tipocfa = 'C' AND a.tipoutente <> 'A' AND a.stato = 1" );
$this->ds_fam->addJoin( $p4a->e3g_prefix . "docr d",
"d.codutente = a.codice AND " .
"d.visibile = 'N' AND d.codtipodoc = '" . $p4a->e3g_azienda_gg_cod_doc_ordine . "' AND " .
"( d.estratto<>'S' OR ISNULL(d.estratto) ) " );
$this->ds_fam->addGroup( "a.idanag, a.codice, a.descrizione" );
$this->ds_fam->addOrder( "a.descrizione" );
$this->ds_fam->load();
$this->ds_fam->firstRow();
$this->build("p4a_field", "fld_cod_utente");
$this->fld_cod_utente->setLabel('Utente');
$this->fld_cod_utente->setWidth("200");
$this->fld_cod_utente->label->setWidth("150");
$this->fld_cod_utente->setType('select');
$this->fld_cod_utente->setSource($this->ds_fam);
$this->fld_cod_utente->setSourceValueField('codice');
$this->fld_cod_utente->setSourceDescriptionField('descrizione');
$this->fld_cod_utente->addAction("onChange");
$this->intercept($this->fld_cod_utente, "onChange","fld_cod_utente_change");
// mi posiziono sul primo record (non avviene in automatico)
$this->fld_cod_utente->setNewValue( $this->ds_fam->fields->codice->getNewValue() );
// Data doc. (inizialmente invisibile)
$this->build("p4a_field", "fld_data_doc");
$this->fld_data_doc->setType("date");
$this->fld_data_doc->setLabel("Data doc. consegna");
$this->fld_data_doc->setWidth("200");
$this->fld_data_doc->label->setWidth("150");
$this->fld_data_doc->setNewValue(date("d/m/Y"));
$this->fld_data_doc->setInvisible();
// Filtro: combo Fornitori
$this->build("p4a_db_source", "ds_forn");
$this->ds_forn->setTable( $p4a->e3g_prefix."anagrafiche" );
$this->ds_forn->setPk( "codice" );
$this->ds_forn->setWhere( "tipocfa='F' OR idanag = 0 AND stato = 1 " );
$this->ds_forn->addOrder( "descrizione" );
$this->ds_forn->load();
$this->ds_forn->firstRow();
$this->build("p4a_field", "fld_fornitore");
$this->fld_fornitore->setLabel('Fornitore');
$this->fld_fornitore->setType('select');
$this->fld_fornitore->setSource($this->ds_forn);
$this->fld_fornitore->setSourceValueField('codice');
$this->fld_fornitore->setSourceDescriptionField('descrizione');
$this->fld_fornitore->addAction("onChange");
$this->intercept($this->fld_fornitore, "onChange","fld_fornitore_change");
$this->fld_fornitore->setNewValue("00");
// Bottone "Apri/Chiudi consegna"
$this->build("p4a_button", "cmd_apri_chiudi_consegna");
$this->cmd_apri_chiudi_consegna->setLabel("Apri Consegna...");
$this->cmd_apri_chiudi_consegna->setIcon("new");
$this->cmd_apri_chiudi_consegna->addAction("onClick");
$this->intercept($this->cmd_apri_chiudi_consegna, "onClick", "cmd_apri_chiudi_consegna_click");
$this->cmd_apri_chiudi_consegna->requireConfirmation( "onClick", "Confermi la creazione di un documento per la consegna ?" );
$this->cmd_apri_chiudi_consegna->setWidth(230);
$this->codclifor = $this->ds_fam->fields->codice->getNewValue();
// Bottone "Esporta Griglia Utenti / Fornitori"
$this->build("p4a_button", "cmd_exp_griglia");
$this->cmd_exp_griglia->setLabel("Esporta griglia Utenti/Fornitori");
// $this->cmd_exp_griglia->setIcon("spreadsheet"); // diventerà un'esportazione CSV
$this->cmd_exp_griglia->setIcon("pdf");
$this->cmd_exp_griglia->addAction("onClick");
$this->intercept($this->cmd_exp_griglia, "onClick", "cmd_exp_griglia_click");
$this->cmd_exp_griglia->setWidth(230);
// Bottone notifica consegna (inizialmente invisibile) (FM 09/01/2008)
$this->build("p4a_button", "cmd_notifica_consegna");
$this->cmd_notifica_consegna->setLabel("Notifica disponibilita' articoli...");
$this->cmd_notifica_consegna->setIcon("mail_send");
$this->cmd_notifica_consegna->addAction("onClick");
$this->intercept($this->cmd_notifica_consegna, "onClick", "cmd_notifica_consegna_click");
$this->cmd_notifica_consegna->requireConfirmation( "onClick", "Confermi l'invio di una mail di notifica della consegna all'utente selezionato?" );
$this->cmd_notifica_consegna->setWidth(230);
$this->cmd_notifica_consegna->setInvisible();
// Bottone "Consegna tutti gli articoli" (inizialmente invisibile)
$this->build("p4a_button", "cmd_consegna_art_tutti");
$this->cmd_consegna_art_tutti->setLabel("Consegna tutti gli articoli...");
$this->cmd_consegna_art_tutti->setIcon("execute");
$this->cmd_consegna_art_tutti->addAction("onClick");
$this->intercept($this->cmd_consegna_art_tutti, "onClick", "cmd_consegna_art_tutti_click");
$this->cmd_consegna_art_tutti->requireConfirmation( "onClick", "Confermi la consegna di tutti gli articoli in elenco senza modifiche delle quantita'?" );
$this->cmd_consegna_art_tutti->setWidth(230);
$this->cmd_consegna_art_tutti->setInvisible();
//******************************************************************
// Griglia centrale
//******************************************************************
$this->build("p4a_db_source", "ds_orig");
$this->ds_orig->setSelect( "idriga, " .
$p4a->e3g_prefix . "articoli.centrale AS centrale," .
$p4a->e3g_prefix . "docr.codice AS codice ,".
"CONCAT( " . $p4a->e3g_prefix . "docr.descrizione, ' [', um_qta, ' ', um, ']' ) AS descrizione, " .
"FORMAT( " . $p4a->e3g_prefix . "docr.prezzo + ".$p4a->e3g_prefix."docr.delta_prezzo, " . $p4a->e3g_azienda_n_decimali_prezzi . " ) AS prezzo, " .
"quantita, quantita2, " .
"FORMAT( (" . $p4a->e3g_prefix . "docr.prezzo + ".$p4a->e3g_prefix."docr.delta_prezzo)*quantita, " . $p4a->e3g_azienda_n_decimali_prezzi . " ) AS importo, " .
$p4a->e3g_prefix . "docr.codiva AS codiva, " .
$p4a->e3g_prefix . "docr.sconto AS sconto, data,iddocr, codutente, dataordine, FORMAT( " . $p4a->e3g_prefix . "docr.delta_prezzo, " . $p4a->e3g_azienda_n_decimali_prezzi . " ) AS delta_prezzo, FORMAT( " . $p4a->e3g_prefix . "docr.prezzo, " . $p4a->e3g_azienda_n_decimali_prezzi . " ) AS prezzo_originale" );
$this->ds_orig->setTable($p4a->e3g_prefix."docr");
$this->ds_orig->addJoin( $p4a->e3g_prefix . "articoli", $p4a->e3g_prefix . "docr.codice = " . $p4a->e3g_prefix . "articoli.codice" );
$this->ds_orig->setWhere(
"visibile = 'N' AND codtipodoc = '" . $p4a->e3g_azienda_gg_cod_doc_ordine . "' AND " .
"( estratto<>'S' OR ISNULL(estratto) ) AND " .
"codutente = '" . $this->fld_cod_utente->getNewValue() . "'" . $this->where_cod_fornitore );
$this->ds_orig->addOrder("data");
$this->ds_orig->setPk("idriga");
$this->ds_orig->setPageLimit(10);
$this->ds_orig->load();
$this->ds_orig->firstRow();
$this->setSource($this->ds_orig);
$tab_row =& $this->build("p4a_table", "tab_row");
$this->tab_row->setWidth(E3G_TABLE_WIDTH);
$this->tab_row->setTitle('Elenco articoli in ordine');
$this->tab_row->setSource($this->ds_orig);
$this->intercept( $this->tab_row->rows, "afterClick", "tab_row_click" );
$this->tab_row->setVisibleCols( array( "centrale", "codice", "descrizione", "quantita", "prezzo", "importo") );
$this->tab_row->cols->centrale->setLabel("Fornitore");
$this->tab_row->cols->centrale->setSourceValueField('codice');
$this->tab_row->cols->centrale->setSourceDescriptionField('descrizione');
$this->tab_row->cols->centrale->setSource($this->ds_forn);
$this->tab_row->cols->codice->setLabel('Codice');
$this->tab_row->cols->descrizione->setLabel('Descrizione');
$this->tab_row->cols->quantita->setLabel('Q.ta');
$this->tab_row->cols->prezzo->setLabel('Prezzo');
$this->tab_row->cols->importo->setLabel('Importo');
$this->tab_row->data->fields->prezzo->setType("float"); // Per l'allineamento a destra
$this->tab_row->data->fields->importo->setType("float");
//******************************************************************
// Sotto la griglia
//******************************************************************
$this->fields->quantita->setLabel('Quantita\' ordinata');
$this->fields->quantita->setWidth("40");
$this->fields->quantita->label->setWidth("150");
$this->build("p4a_field", "fld_qta_cons");
$this->fld_qta_cons->setLabel('Quantita\' in consegna');
$this->fld_qta_cons->setValue($this->fields->quantita->getValue());
$this->fld_qta_cons->setWidth("40");
$this->fld_qta_cons->label->setWidth("150");
$this->build("p4a_field", "fld_chiudi_riga");
$this->fld_chiudi_riga->setLabel('Chiudi riga');
$this->fld_chiudi_riga->setType('checkbox');
$this->fld_chiudi_riga->setValue(true);
$this->fld_chiudi_riga->label->setWidth("150");
$this->build("p4a_button", "cmd_consegna_art");
$this->cmd_consegna_art->setLabel("Consegna articolo selezionato");
$this->cmd_consegna_art->setIcon("execute");
$this->cmd_consegna_art->setSize( 16 );
$this->cmd_consegna_art->addAction("onClick");
$this->intercept($this->cmd_consegna_art, "onClick", "cmd_consegna_art_click");
$this->cmd_consegna_art->setWidth(230);
// Altri campi non visualizzati
$fldimponibile =& $this->build("p4a_field", "fldimponibile");
$fldimposta =& $this->build("p4a_field", "fldimposta");
$fldtotale =& $this->build("p4a_field", "fldtotale");
//******************************************************************
// Ancoraggio campi
//******************************************************************
// Fieldset utente (e data doc.)
$this->build("p4a_fieldset","fs_utente");
$this->fs_utente->setTitle("Intestazione");
$this->fs_utente->setWidth( 430 );
$this->fs_utente->anchor( $this->fld_cod_utente );
$this->fs_utente->anchor( $this->fld_data_doc );
// Fieldset filtro
$this->build("p4a_fieldset","fs_filtro");
$this->fs_filtro->setTitle("Filtro fornitore");
$this->fs_filtro->setWidth( 235 );
$this->fs_filtro->anchor( $this->fld_fornitore );
// Fascia sotto la griglia
$this->build( "p4a_sheet", "sh_det" );
$this->sh_det->defineGrid( 3, 2 );
$this->sh_det->setInvisible();
$this->sh_det->anchor( $this->fields->quantita, 1, 1 ); // Qta ordinata
$this->sh_det->anchor( $this->fld_qta_cons, 2, 1 ); // Qta in consegna
$this->sh_det->anchor( $this->fld_chiudi_riga, 3, 1 ); // Chiudi riga
$this->sh_det->anchor( $this->cmd_consegna_art, 3, 2 ); // Bottone "Consegna articolo"
$frm=& $this->build("p4a_frame", "frm");
$frm->setWidth( E3G_MAIN_FRAME_WIDTH );
$this->frm->anchor( $this->message );
$this->frm->anchor( $this->fs_utente );
$this->frm->anchorRight( $this->fs_filtro );
$this->frm->anchor( $this->cmd_apri_chiudi_consegna ); // Bottone "Apri/Chiudi consegna"
$this->frm->anchorLeft( $this->cmd_notifica_consegna ); // Bottone "Notifica consegna"
$this->frm->anchorLeft( $this->cmd_exp_griglia ); // Bottone "Esporta griglia"
$this->frm->anchorLeft( $this->cmd_consegna_art_tutti ); // Bottone "Consegni tutti"
$this->frm->anchor( $this->tab_row );
$this->frm->anchor( $this->sh_det );
e3g_scrivi_footer( $this, $frm );
// Display
$this->display("main", $frm);
$this->display("menu", $p4a->menu);
$this->display("top", $this->toolbar);
$this->fld_cod_utente_change();
$this->update_message();
$this->setFocus( $this->fld_qta_cons );
}
// -------------------------------------------------------------------------
function main()
// -------------------------------------------------------------------------
{
$p4a =& p4a::singleton();
parent::main();
$this->update_message();
}
// -------------------------------------------------------------------------
function fld_fornitore_change()
// -------------------------------------------------------------------------
{
$p4a =& p4a::singleton();
if ($this->fld_fornitore->getnewValue() == "00")
{
// non indicato
$this->where_cod_fornitore = "";
}
else
{
// indicato --> filtro per Fornitore
$this->where_cod_fornitore = " AND ".$p4a->e3g_prefix."articoli.centrale='".$this->fld_fornitore->getnewValue()."' ";
}
$this->ds_orig->setWhere("visibile='N' AND codtipodoc ='".$p4a->e3g_azienda_gg_cod_doc_ordine."' AND (estratto<>'S' OR ISNULL(estratto)) AND codutente='".$this->fld_cod_utente->getNewValue()."' ".$this->where_cod_fornitore);
$this->ds_orig->firstRow();
$this->fld_qta_cons->setValue($this->fields->quantita->getValue());
}
// -------------------------------------------------------------------------
function tab_row_click()
// -------------------------------------------------------------------------
{
$this->fld_qta_cons->setValue( $this->fields->quantita->getValue() );
}
// -------------------------------------------------------------------------
function cmd_consegna_art_tutti_click()
// -------------------------------------------------------------------------
{
$p4a =& p4a::singleton();
$db =& p4a_db::singleton();
// routine per consegna totale di tutte le righe del documento
while($this->tab_row->data->getNumRows() > 0 )
{
$this->tab_row->data->firstRow();
$this->fld_qta_cons->setValue($this->fields->quantita->getValue());
$this->cmd_consegna_art_click();
}
$this->cmd_apri_chiudi_consegna_click(); // Chiusura automatica del documento
//$this->fld_cod_utente_change();
// questa sezione è stata inserita per recuperare il codice del primo utente in lista
// dopo aver chiuso una estrazione
// con il vecchio sistema $this->fld_cod_utente_change(); non funzionava perchè
// manteneva il codice utente selezionato in precedenza
$this->ds_fam->setWhere( "a.tipocfa = 'C' AND a.tipoutente <> 'A' AND a.stato = 1" );
$this->ds_fam->firstRow();
$this->ds_orig->setWhere(
"visibile='N' AND codtipodoc ='" . $p4a->e3g_azienda_gg_cod_doc_ordine . "' AND " .
"( estratto<>'S' OR ISNULL(estratto) ) AND " .
"codutente = '" . $this->ds_fam->fields->codice->getNewValue() . "'" . $this->where_cod_fornitore );
if ( $this->ds_orig->getNumRows() == 0 )
{
$this->cmd_apri_chiudi_consegna->disable();
}
else
{
$this->cmd_apri_chiudi_consegna->enable();
$this->ds_orig->firstRow();
}
$this->update_message();
}
// -------------------------------------------------------------------------
function cmd_consegna_art_click()
// -------------------------------------------------------------------------
{
$p4a =& p4a::singleton();
$db =& p4a_db::singleton();
if ($this->fld_qta_cons->getUnformattedNewValue() <= $this->fields->quantita->getValue())
{
$idriga = $db->queryOne("SELECT idriga FROM ".$p4a->e3g_prefix."docr ORDER BY idriga DESC");
if ( is_numeric($idriga) )
$idriga++;
else
$idriga = 1;
$numriga = $db->queryOne("SELECT nriga FROM ".$p4a->e3g_prefix."docr WHERE iddocr= ".$this->iddoc." ORDER BY idriga DESC");
if ( is_numeric($numriga) )
$numriga++;
else
$numriga = 1 ;
$this->calcola_tot_riga();
$query = "INSERT INTO ".$p4a->e3g_prefix."docr (idriga, codice, descrizione, iddocr, anno, codtipodoc, data, numdocum, quantita, codiva, prezzo, nriga, rifidriga, rifiddoc, codutente, dataordine, imponibile, imposta, totale, delta_prezzo) VALUES (";
$query = $query.$idriga.", '".$this->ds_orig->fields->codice->getNewValue()."', '".str_replace("'", "''", $this->ds_orig->fields->descrizione->getNewValue())."', ".$this->iddoc.", '".$p4a->e3g_azienda_anno_contabile."', '".$this->codtipodoc."','".$this->date."','".$this->numdoc."',";
$query = $query.$this->fld_qta_cons->getUnformattedNewValue().", '".$this->ds_orig->fields->codiva->getNewValue()."',".$this->ds_orig->fields->prezzo_originale->getNewValue().", ".$numriga.", ".$this->fields->idriga->getNewValue().", ".$this->fields->iddocr->getNewValue().", '".$this->fields->codutente->getNewValue()."', '".$this->fields->dataordine->getNewValue()."'";
$query = $query.",".$this->fldimponibile->getValue().", ".$this->fldimposta->getValue().", ".$this->fldtotale->getValue().",".$this->ds_orig->fields->delta_prezzo->getNewValue().")";
$db->query($query);
if ($this->fld_qta_cons->getUnformattedNewValue() < $this->fields->quantita->getValue())
{
// estraz. Parziale
// da decidere cosa fare della quantita in ordine tenere invariata o aggiornare 07.12.06 AP
//$db->query("UPDATE ".$p4a->e3g_prefix."docr SET quantita=quantita-".$this->fld_qta_cons->getUnformattedNewValue()." WHERE idriga = ".$this->fields->idriga->getNewValue());
$db->query("UPDATE ".$p4a->e3g_prefix."docr SET quantita2=".$this->fld_qta_cons->getUnformattedNewValue()." WHERE idriga = ".$this->fields->idriga->getNewValue());
if ( $this->fld_chiudi_riga->getNewValue() == true )
{
$db->query("UPDATE ".$p4a->e3g_prefix."docr SET estratto='S' WHERE idriga = ".$this->fields->idriga->getValue());
}
}
else
{
// estratta tutta la qta
$db->query("UPDATE ".$p4a->e3g_prefix."docr SET estratto='S' WHERE idriga = ".$this->fields->idriga->getValue());
}
$this->ds_orig->setWhere("visibile='N' AND codtipodoc ='".$p4a->e3g_azienda_gg_cod_doc_ordine."' AND (estratto<>'S' OR ISNULL(estratto)) AND codutente='".$this->fld_cod_utente->getNewValue()."'".$this->where_cod_fornitore);
//$this->ds_orig->load();
$this->ds_orig->firstRow();
//$this->fld_qta_cons->setNewValue($this->fields->quantita->getNewValue());
$this->fld_qta_cons->setValue($this->fields->quantita->getValue());
// Aggiorno i totali sulla testata
$totimponibile = $db->queryOne("SELECT SUM(imponibile) FROM ".$p4a->e3g_prefix."docr WHERE iddocr=".$this->iddoc);
$totimposta = $db->queryOne("SELECT SUM(imposta) FROM ".$p4a->e3g_prefix."docr WHERE iddocr=".$this->iddoc);
$totdoc = $db->queryOne("SELECT SUM(totale) FROM ".$p4a->e3g_prefix."docr WHERE iddocr=".$this->iddoc);
$db->query("UPDATE ".$p4a->e3g_prefix."doct SET imponibile=".str_replace(",", ".",$totimponibile).", imposta=".str_replace(",", ".",$totimposta).", totdoc=".str_replace(",", ".",$totdoc)." WHERE iddoc=".$this->iddoc);
}
else
{
$this->message->setValue("Stai cercando di consegnare una quantita' maggiore di quella ordinata.");
}
}
// -------------------------------------------------------------------------
function carica_doct()
// -------------------------------------------------------------------------
{
$p4a =& p4a::singleton();
$this->iddoc = $p4a->masks->consegna_utente->iddoc;
$this->codtipodoc = $p4a->masks->consegna_utente->codtipodoc;
$this->numdoc = $p4a->masks->consegna_utente->numdoc;
$this->codclifor = $p4a->masks->consegna_utente->codclifor;
$this->date = $p4a->masks->consegna_utente->date;
return 0;
}
// -------------------------------------------------------------------------
function cmd_apri_chiudi_consegna_click()
// -------------------------------------------------------------------------
{
$p4a =& p4a::singleton();
$db =& p4a_db::singleton();
// Controllo se la consegna è aperta o no
if ( $this->consegna_aperta == 1 )
{
// Chiusura: si prepara lo schermo per un'altra apertura
$this->fld_cod_utente->enable();
$this->fld_data_doc->setInvisible();
$this->cmd_apri_chiudi_consegna->setLabel("Apri Consegna...");
$this->cmd_apri_chiudi_consegna->setIcon("new");
$this->cmd_apri_chiudi_consegna->requireConfirmation( "onClick", "Confermi la creazione di un documento per la consegna ?" );
$this->cmd_exp_griglia->setVisible();
$this->cmd_notifica_consegna->setInvisible(); //FM
$this->cmd_consegna_art_tutti->setInvisible();
$this->sh_det->setInvisible();
$this->consegna_aperta = 0;
// Per aggiornare le righe d'ordine dell'utente appena elaborato
$this->fld_cod_utente_change();
// quindi NON procedo a generare il documento
return 0;
}
else
{ // Apertura: si prepara lo schermo per una chiusura
$this->fld_cod_utente->disable();
$this->fld_data_doc->setVisible();
$this->cmd_apri_chiudi_consegna->setLabel("Chiudi Consegna...");
$this->cmd_apri_chiudi_consegna->setIcon("save");
$this->cmd_apri_chiudi_consegna->requireConfirmation( "onClick", "Confermi la chiusura della presente consegna ?" );
$this->cmd_exp_griglia->setInvisible();
$this->cmd_notifica_consegna->setVisible(); //FM
$this->cmd_consegna_art_tutti->setVisible();
$this->sh_det->setVisible();
$this->consegna_aperta = 1;
// quindi procedo a generare il documento
}
// estraggo le righe con il fornitore indicato
// genero l'ordine a fornitore
// setto le righe Stato = A --> Stato = L
$famiglia = $this->fld_cod_utente->getNewValue();
$numrighe = $db->queryOne("SELECT COUNT(*) FROM ".$p4a->e3g_prefix."docr WHERE visibile='N' AND codtipodoc ='".$p4a->e3g_azienda_gg_cod_doc_ordine."' AND (estratto<>'S' OR ISNULL(estratto)) AND codutente='".$famiglia."'");
$procedi = 1;
if (!is_numeric($numrighe))
{
$this->message->setValue( "Non ci sono ordini per questo utente" );
$procedi = 0;
}
else
{
if ($numrighe == 0)
{
$this->message->setValue("Non ci sono ordini per questo utente" );
$procedi = 0;
}
}
if ($procedi == 1)
{
$codtipodoc = $p4a->e3g_azienda_gg_cod_doc_ordine_fam;
$datadoc = e3g_format_data_to_mysql( $this->fld_data_doc->getNewValue() );
// DocT
// iddoc codclifor numdocum codtipodoc anno
// DocR
// idriga iddocr anno codtipodoc numdocum
$registro = $db->queryOne("SELECT codregdoc FROM ".$p4a->e3g_prefix."doctipidoc WHERE codice='".$codtipodoc."'");
$numdocum = $db->queryOne("SELECT MAX(seriale) FROM ".$p4a->e3g_prefix."docregistri WHERE codice='".$registro."'");
if (is_numeric($numdocum))
{
$numdocum++;
}
else
{
$numdocum = 1;
}
$query = "UPDATE ".$p4a->e3g_prefix."docregistri SET seriale=".$numdocum." WHERE codice='".$registro."'";
$db->query($query);
$iddoc = $db->queryOne("SELECT iddoc FROM ".$p4a->e3g_prefix."doct ORDER BY iddoc DESC");
$iddoc++;
$this->codtipodoc = $codtipodoc;
$this->numdoc = $numdocum;
$this->codclifor = $famiglia;
$this->date = $datadoc;
$this->iddoc = $iddoc;
// gestione maggiorazione fissa
if ($p4a->e3g_azienda_tipo_gestione_prezzi == 1)
{
$spesevarie = $p4a->e3g_azienda_prezzi_mag_fissa;
}
else
{
$spesevarie = 0;
}
// Inserisco la testa del documento
$db->query("INSERT INTO ".$p4a->e3g_prefix."doct (iddoc,codclifor,numdocum,codtipodoc,anno,data,spesevarie,data_ins,idanag) VALUES (".$iddoc.",'".$famiglia."',".$numdocum.",'".$codtipodoc."','".$p4a->e3g_azienda_anno_contabile."','".$datadoc."',".$spesevarie.",'".date ("Y-m-d H:i:s")."',".$p4a->e3g_utente_idanag.")");
}
}
// -------------------------------------------------------------------------
function fld_cod_utente_change()
// -------------------------------------------------------------------------
{
$p4a =& p4a::singleton();
$this->ds_orig->setWhere(
"visibile='N' AND codtipodoc ='" . $p4a->e3g_azienda_gg_cod_doc_ordine . "' AND " .
"( estratto<>'S' OR ISNULL(estratto) ) AND " .
"codutente = '" . $this->fld_cod_utente->getNewValue() . "'" . $this->where_cod_fornitore );
if ( $this->ds_orig->getNumRows() == 0 )
{
$this->cmd_apri_chiudi_consegna->disable();
}
else
{
$this->cmd_apri_chiudi_consegna->enable();
$this->ds_orig->firstRow();
}
}
// -------------------------------------------------------------------------
function cmd_exp_griglia_click()
// -------------------------------------------------------------------------
{
$p4a =& p4a::singleton();
tabella_pagamenti();
}
// -------------------------------------------------------------------------
function calcola_tot_riga()
// -------------------------------------------------------------------------
{
$p4a =& p4a::singleton();
$db =& p4a_db::singleton();
$iva = str_replace(",", ".",$db->queryOne("SELECT iva FROM ".$p4a->e3g_prefix."aliquoteiva WHERE codice='".$this->fields->codiva->getNewValue()."'"));
$quantita = $this->fld_qta_cons->getUnformattedNewValue();
if ( !is_numeric($quantita) ) $quantita = 0;
$prezzo = $this->fields->prezzo->getValue(); // questo prezzo è generato nella query come somma di prezzo + delta_prezzo
if ( !is_numeric($prezzo) ) $prezzo = 0;
$sconto = $this->fields->sconto->getValue();
if ( !is_numeric($sconto) ) $sconto = 0;
$imponibile = (($quantita * $prezzo) * (1 - $sconto / 100) / (100 + $iva)) * 100;
$imposta = (($quantita * $prezzo) * (1 - $sconto / 100)) - $imponibile;
$totriga = (($quantita * $prezzo) * (1 - $sconto / 100));
$this->fldimponibile->setValue(round($imponibile, 2));
$this->fldimposta->setValue(round($imposta,2));
$this->fldtotale->setValue(round($totriga,2));
return 0;
}
// -------------------------------------------------------------------------
function update_message()
// -------------------------------------------------------------------------
{
$p4a =& p4a::singleton();
$db =& p4a_db::singleton();
if ( $this->ds_fam->getNumRows() <> 0 ) {
$this->cmd_apri_chiudi_consegna->enable();
$this->message->setValue( "" );
}
else {
$this->cmd_apri_chiudi_consegna->disable();
$this->message->setIcon( "warning" );
$this->message->setValue( "Nessun articolo da consegnare" );
}
}
// FM 09/01/2008 AGGIUNTA FUNZ
// -------------------------------------------------------------------------
function cmd_notifica_consegna_click()
// -------------------------------------------------------------------------
{
$p4a =& p4a::singleton();
$db =& p4a_db::singleton();
// Dati mittente
$query = "SELECT * FROM ".$p4a->e3g_prefix."anagrafiche WHERE idanag='".$p4a->e3g_utente_idanag."'";
$result = $db->queryRow($query);
$indmail_mitt = $result[ "email" ];
$cognome_mitt = $result[ "cognome" ];
$nome_mitt = $result[ "nome" ];
$descrizione_mitt = $result[ "descrizione" ];
$tel1_mitt = $result[ "telefono" ];
$tel2_mitt = $result[ "telefono2" ];
$fax_mitt = $result[ "fax" ];
$this->fld_qta_cons->setValue($indmail_mitt." ".$cognome_mitt." ".$nome_mitt);
$query = "SELECT * FROM ".$p4a->e3g_prefix."anagrafiche WHERE codice='".$this->fld_cod_utente->getNewValue()."'";
$result = $db->queryRow($query);
if ( is_array($result) ) { // Famiglia trovata ---------
$indmail = $result[ "email" ];
$cognome = $result[ "cognome" ];
$nome = $result[ "nome" ];
// Invio della notifica per email
$corpo = "Salve $nome $cognome,\n\n";
$corpo .= "Degli articoli ordinati al GAS sono disponibili.\n\n";
$corpo .= "Questa mail ti e' stata inviata dall'applicazione $p4a->e3g_nome_sw per conto ";
$corpo .= "dell'utente $cognome_mitt $nome_mitt\n";
$corpo .= "($descrizione_mitt\ntel1: $tel1_mitt\ntel2: $tel2_mitt\nfax: $fax_mitt\nmail: $indmail_mitt).\n\n";
if ( !e3g_invia_email( "$p4a->e3g_nome_sw: notifica consegna",
$corpo, $indmail, $nome." ".$cognome ) ) {
$this->message->setIcon( "error" );
$this->message->setValue( "Si è verificato un errore durante la spedizione del tuo messaggio." );
exit;
}
else {
// Visualizzazione di un messaggio di conferma
$this->message->setIcon( "info" );
$this->message->setValue( "Il messaggio e-mail e' inviato con successo." );
}
}
else {
$this->message->setIcon( "error" );
$this->message->setValue("Famiglia non trovata");
}
}
}
?>