db=$p_cn; $this->qcode=""; $this->user=$_SESSION['g_user']; $user=new User($this->db); $this->periode=$user->get_periode(); $this->jr_id=0; } /* ************************************************** *\brief Insert into the table Jrn * * * \return nothing * */ function insert_jrnx() { if ( $this->poste == "") return true; $debit=($this->type=='c')?'false':'true'; $sql=sprintf("select insert_jrnx ('%s',abs(%.2f),%d,%d,%d,%s,'%s',%d,upper('%s'))", $this->date,round($this->amount,2), $this->poste,$this->grpt,$this->jrn, $debit,$this->user,$this->periode,$this->qcode); $Res=ExecSql($this->db,$sql); if ( $Res==false) return $Res; $this->jrnx_id=GetSequence($this->db,'s_jrn_op'); return $this->jrnx_id; } /*! ************************************************** *\brief Insert into the table Jrn, the amount is computed from jrnx thanks the * group id ($p_grpt) * * \return sequence * */ function insert_jrn() { $p_comment=FormatString($this->desc); // retrieve the value from jrnx // $montant_deb=getDBValue($this->db,"select sum(j_montant) from jrnx where j_debit='t' and j_grpt=".$this->grpt); $montant_cred=getDBValue($this->db,"select sum(j_montant) from jrnx where j_debit='f' and j_grpt=".$this->grpt); echo_debug('InsertJrn',__LINE__,"debit = $montant_deb credit = $montant_cred "); $amount=-1.0000; if ( $montant_deb == $montant_cred ) { $amount=$montant_deb; } else { echo "Erreur : balance incorrecte : débit = $montant_deb crédit = $montant_cred"; return false; } // if amount == -1then the triggers will throw an error // $sql=sprintf("insert into jrn (jr_def_id,jr_montant,jr_comment,jr_date,jr_ech,jr_grpt_id,jr_tech_per) values ( %d,abs(%.2f),'%s',to_date('%s','DD.MM.YYYY'),null,%d,%d)", $this->jrn, $amount,$p_comment,$this->date,$this->grpt,$this->periode); $Res=ExecSql($this->db,$sql); if ( $Res == false) return false; $this->jr_id=GetSequence($this->db,'s_jrn'); return $this->jr_id; } /*! * \brief Return the internal value, the property jr_id must be set before * * \return null si aucune valeur de trouv * */ function get_internal() { if ( ! isset($this->jr_id) ) throw new Exception('jr_id is not set',1); $Res=ExecSql($this->db,"select jr_internal from jrn where jr_id=".$this->jr_id); if ( pg_NumRows($Res) == 0 ) return null; $l_line=pg_fetch_array($Res); $this->jr_internal= $l_line['jr_internal']; return $this->jr_internal; } /*!\brief search an operation thankx it internal code * \param internal code * \return 0 ok -1 nok */ function seek_internal($p_internal) { $res=ExecSqlParam($this->db,'select j_id from jrn where jr_internal=$1', array($p_internal)); if ( pg_NumRows($Res) == 0 ) return -1; $this->jr_id=pg_fetch_result($Res,0,0); return 0; } /*!\brief retrieve data from jrnx * \return an array */ function get_jrnx_detail() { if ( $this->jr_id==0 ) return; $sql=" select j_date,j_qcode,j_poste,j_montant,jr_internal,case when j_debit = 'f' then 'C' else 'D' end as debit, vw_name,pcm_lib from jrnx join jrn on (jr_grpt_id=j_grpt) join tmp_pcmn on (j_poste=pcm_val) left join vw_fiche_attr on (j_qcode=quick_code) where jr_id=$1"; $res=ExecSqlParam($this->db,$sql,array($this->jr_id)); if ( pg_NumRows ($res) == 0 ) return array(); $all=pg_fetch_all($res); return $all; } /*!\brief display_jrnx_detail : get the data from get_jrnx_data and return a string with HTML code * \param table(=0 no code for table,1 code for table,2 code for CSV) */ function display_jrnx_detail($p_table) { $show=$this->get_jrnx_detail(); $r=''; $r_notable=''; $csv=""; foreach ($show as $l) { if ( $l['j_poste'] == $this->poste) $r.=''; else $r.=''; $r.=''; $a=$l['j_qcode'];; $r_notable.=$a; $r.=$a; $csv.='"'.$a.'";'; $r.=''; $r.=''; $a=$l['j_poste']; $r_notable.=$a; $r.=$a; $csv.='"'.$a.'";'; $r.=''; $r.=''; $a=($l['vw_name']=="")?$l['j_qcode']:$l['pcm_lib']; $r_notable.=$a; $r.=$a; $csv.='"'.$a.'";'; $r.=''; $r.=''; $a=$l['j_montant']; $r_notable.=$a; $r.=$a; $csv.=$a.';'; $r.=''; $r.=''; $a=$l['debit']; $r_notable.=$a; $r.=$a; $csv.='"'.$a.'"'; $csv.="\n\r"; $r.=''; $r.=''; } switch ($p_table) { case 1: return $r; break; case 0: return $r_notable; break; case 2: return $csv; } return "ERROR PARAMETRE"; } }