/* * This file is part of PhpCompta. * * PhpCompta is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * PhpCompta is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PhpCompta; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* $Revision$ */ // Copyright Author Dany De Bontridder ddebontridder@yahoo.f require_once("class_fiche.php"); require_once("class_document.php"); require_once("class_document_type.php"); require_once("user_common.php"); /*!\file * \brief class_action for manipulating actions * action can be : * - an invoice * - a meeting * - an order * - a letter * * The table document_type are the possible actions */ /*! * \brief class_action for manipulating actions * action can be : * - an invoice * - a meeting * - an order * - a letter * * The table document_type are the possible actions */ class action { /*! \enum $db database connexion * \enum $ag_comment description (ag_gestion.ag_comment) * \enum $ag_timestamp document date (ag_gestion.ag_timestamp) * \enum $dt_id type of the document (document_type.dt_id) * \enum $d_state stage of the document (printed, send to client...) * \enum $d_number number of the document * \enum $d_filename filename's document * \enum $d_mimetype document's filename * \enum $ag_title title document * \enum $f_id fiche id * \enum \todo replace attribut frmo document by an object document */ var $db; var $ag_comment; var $ag_timestamp; var $dt_id; var $d_state; var $d_number; var $d_filename; var $d_mimetype; var $ag_title; var $f_id; /*! constructor * \brief constructor * \param p_cn database connection */ function action ($p_cn) { $this->db=$p_cn; $this->f_id=0; } /*! Display * \brief Display the object * * \return string containing the html code */ function Display() { $r=""; // Compute the widget // Date $date=new widget("text"); $date->readonly=true; $date->name="ag_timestamp"; $date->value=$this->ag_timestamp; // Doc Type $doc_type=new widget("hidden"); $doc_type->name="dt_id"; $doc_type->value=$this->dt_id; $a=ExecSql($this->db,"select dt_value from document_type where dt_id=".$this->dt_id); $v=pg_fetch_array($a,0); $str_type=$v[0]; // state // Retrieve the value // Retrieve the value if there is an attached doc $doc_ref=""; if ( strlen ($this->d_state) > 0 ) { $a=ExecSql($this->db,"select s_value from document_state where s_id=".$this->d_state); $v=pg_fetch_array($a,0); $str_state=$v[0]; $state=new widget("hidden"); $state->name="d_state"; $state->value=$this->d_state; $doc=new Document($this->db,$this->d_id); $doc_ref="
Document ".$doc->a_ref().'
'; } else $str_state=""; // title $title=new widget("text"); $title->readonly=true; $title->name="ag_title"; $title->value=FormatString($this->ag_title); // ag_ref $ag_ref=new widget("text"); $ag_ref->readonly=true; $ag_ref->name="ag_ref"; $ag_ref->value=FormatString($this->ag_ref); // Description $desc=new widget('textarea'); $desc->name="ag_comment"; $desc->readonly=" disabled "; $desc->value=$this->ag_comment; // Propose to generate a document $gen=new widget ("checkbox"); $gen->name="p_gen"; $doc_gen=new widget("select"); $doc_gen->name="gen_doc"; $doc_gen->value=make_array($this->db, "select md_id,md_name from document_modele where md_type=".$this->dt_id); // f_id $tiers=new fiche($this->db); $tiers->GetByQCode($this->qcode); // Preparing the return string $r.="Date : ".$date->IOValue()."
"; if ( $str_type != "" ) $r.="Type du document $str_type".$doc_type->IOValue()."
"; $r.="Tiers : ".$this->qcode." ".$tiers->strAttribut(1).'
'; $r.="Titre : ".$title->IOValue().' Ref :'.$ag_ref->IOValue(); $r.=$doc_ref; $r.="
Description :".urldecode(urldecode($desc->IOValue()))."
"; return $r; } /*!\brief This function shows the detail of an action thanks the ag_id */ function get() { echo_debug('class_action',__LINE__,'Action::Get() '); $sql="select * from action_gestion left join document using (ag_id) where ag_id=".$this->ag_id; $r=ExecSql($this->db,$sql); $row=pg_fetch_all($r); if ( $row==false) return; $this->ag_comment=$row[0]['ag_comment']; $this->ag_timestamp=$row[0]['ag_timestamp']; $this->f_id=$row[0]['f_id']; $this->ag_title=$row[0]['ag_title']; $this->ag_type=$row[0]['ag_type']; $this->ag_ref=$row[0]['ag_ref']; $this->d_id=$row[0]['d_id']; echo_debug('class_action',__LINE__,' Document id = '.$this->d_id); // if there is no document set 0 to d_id if ( $this->d_id == "" ) $this->d_id=0; // if there is a document fill the object if ($this->d_id != 0 ) { $this->d_state=$row[0]['d_state']; } echo_debug('class_action',__LINE__,' After test Document id = '.$this->d_id); $this->dt_id=$this->ag_type; $a=new fiche($this->db,$this->f_id); $this->qcode=$a->strAttribut(ATTR_DEF_QUICKCODE); } /*! Confirm * \brief Display the encoded data and ask a confirmation * this correspond to the stage 1, before the generation * or the upload of document * * * \return string containing the form */ function Confirm() { /*! \todo add the hour */ if ( isDate($this->ag_timestamp) == NULL ) { // if the date is invalid, default date is today $this->ag_timestamp=date("d.m.Y"); } // Compute the widget // Date $date=new widget("text"); $date->readonly=true; $date->name="ag_timestamp"; $date->value=$this->ag_timestamp; // Doc Type $doc_type=new widget("hidden"); $doc_type->name="dt_id"; $doc_type->value=$this->dt_id; $a=ExecSql($this->db,"select dt_value from document_type where dt_id=".$this->dt_id); $v=pg_fetch_array($a,0); $str_type=$v[0]; if ( isset ($_REQUEST['url'])) { $retour=sprintf('',urldecode($_REQUEST['url'])); $h_url=sprintf('',urldecode($_REQUEST['url'])); } else { $retour=""; $h_url=""; } // state $a=ExecSql($this->db,"select s_value from document_state where s_id=".$this->d_state); $v=pg_fetch_array($a,0); $str_state=$v[0]; $state=new widget("hidden"); $state->name="d_state"; $state->value=$this->d_state; // title $title=new widget("text"); $title->readonly=true; $title->name="ag_title"; $title->value=FormatString($this->ag_title); // Description $desc=new widget('textarea'); $desc->name="ag_comment"; $desc->readonly=" disabled "; $desc->value=$this->ag_comment; // Propose to generate a document $gen=new widget ("checkbox"); $gen->name="p_gen"; $doc_gen=new widget("select"); $doc_gen->name="gen_doc"; $doc_gen->value=make_array($this->db, "select md_id,md_name from document_modele where md_type=".$this->dt_id); // f_id $tiers=new fiche($this->db); $tiers->GetByQCode($this->qcode); // Preparing the return string $r=$retour.""; return $r; } /*! SaveStage2 * \brief Save the document and propose to save the generated document or * to upload one, the data are included except the file. Temporary the generated * document is save * * \return */ function SaveStage2() { // Get The sequence id, $seq_name="seq_doc_type_".$this->dt_id; $str_file=""; $add_file=''; // f_id $tiers=new fiche($this->db); $tiers->GetByQCode($this->qcode); if ( trim($this->ag_title) == "") { $doc_mod=new document_type($this->db); $doc_mod->dt_id=$this->dt_id; $doc_mod->get(); $this->ag_title=$doc_mod->dt_value; } echo_debug('class_action',__LINE__," tiers->id ".$tiers->id); $this->ag_id=NextSequence($this->db,'action_gestion_ag_id_seq'); // Create the reference $ref=$this->dt_id.'/'.$this->ag_id; $this->ag_ref=$ref; $sql=sprintf("insert into action_gestion(ag_id,ag_type,ag_title,f_id,ag_comment,ag_ref) values (%d,'%s','%s',%d,'%s','%s')", $this->ag_id, $this->dt_id, FormatString($this->ag_title), $tiers->id, FormatString(urlencode($this->ag_comment)), $ref ); ExecSql($this->db,$sql); // the lob filename and the mimetype needed if we want to generate a doc. if ( $this->gen == 'on' ) { $doc=new Document($this->db); $doc->f_id=$tiers->id; $doc->md_id=$this->md_id; $doc->ag_id=$this->ag_id; $doc->d_state=$this->d_state; $str_file=$doc->Generate(); $d=''; } $r=$this->Display(); $r.="| Date | "; $r.="Société | "; $r.="Titre | "; $r.="type | "; $r.="Référence | "; $r.="Document | "; $r.="
|---|---|---|---|---|---|
| ".$row['my_date']." | "; $f=new fiche($this->db); $f->id=$row['f_id']; $q=$f->strAttribut(ATTR_DEF_QUICKCODE); $js=sprintf("javascript:showfiche('%s','%s')", $_REQUEST['PHPSESSID'],$q); $r.="".''.$q." : ".$f->getName().' | '; $r.=''. $row['ag_title']." | "; $r.="".$row['dt_value']." | "; $r.="".$row['ag_ref']." | "; $doc=new Document($this->db,$row['d_id']); $r.="".$doc->a_ref()." | "; $r.="