altocompta/include/class_fiche.php
2005-02-01 20:56:14 +00:00

218 lines
No EOL
5.5 KiB
PHP

<?
/*
* 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.fr
include_once("class_attribut.php");
class fiche_def {
var $cn; // database connection
var $id; // id (fiche_def.fd_id
var $label; // fiche_def.fd_label
var $class_base; // fiche_def.fd_class_base
var $fiche_def; // fiche_def.frd_id = fiche_def_ref.frd_id
var $create_account; // fd_create_account: flag
var $all;
var $attribut; // get from attr_xxx tables
function fiche_def($p_cn,$p_id = 0) {
$this->cn=$p_cn;
$this->id=$p_id;
}
/* function GetAttribut
**************************************************
* Purpose : Get attribut of a fiche_def
*
* parm :
* - none
* gen :
* - none
* return:
* none
*/
function GetAttribut() {
$sql="select * from jnt_fic_attr ".
" natural join attr_def where fd_id=".$this->id.
" order by ad_id";
$Ret=ExecSql($this->cn,$sql);
if ( ($Max=pg_NumRows($Ret)) == 0 )
return ;
for ($i=0;$i < $Max;$i++) {
$row=pg_fetch_array($Ret,$i);
$t = new Attribut($row['ad_id']);
$t->ad_text=$row['ad_text'];
$this->attribut[$i]=$t;
}
}
/* function Get
**************************************************
* Purpose : Get attribut of the fiche_def
*
* parm :
* - none
* gen :
* - none
* return:
* none
*/
function Get() {
if ( $this->id == 0 )
return 0;
$sql="select * from fiche_def ".
" where fd_id=".$this->id;
$Ret=ExecSql($this->cn,$sql);
if ( ($Max=pg_NumRows($Ret)) == 0 )
return ;
$row=pg_fetch_array($Ret,0);
$this->label=$row['fd_label'];
$this->class_base=$row['fd_class_base'];
$this->fiche_def=$row['frd_id'];
$this->create_account=$row['fd_create_account'];
}
/* function GetAll
**************************************************
* Purpose : Get all the fiche_def
*
* parm :
* - none
* gen :
* - none
* return: an array of fiche_def object
*/
function GetAll() {
$sql="select * from fiche_def ";
$Ret=ExecSql($this->cn,$sql);
if ( ($Max=pg_NumRows($Ret)) == 0 )
return ;
for ( $i = 0; $i < $Max;$i++) {
$row=pg_fetch_array($Ret,$i);
$this->all[$i]=new fiche_def($this->cn,$row['fd_id']);
$this->all[$i]->label=$row['fd_label'];
$this->all[$i]->class_base=$row['fd_class_base'];
$this->all[$i]->fiche_def=$row['frd_id'];
$this->all[$i]->create_account=$row['fd_create_account'];
}
}
}
////////////////////////////////////////////////////////////////////////////////
// class fiche
////////////////////////////////////////////////////////////////////////////////
class fiche {
var $cn;// database connection
var $id; // fiche.f_id
var $fiche_def; // fd_id
var $attribut; // array of attribut object
function fiche($p_cn,$p_id=0) {
$this->cn=$p_cn;
$this->id=$p_id;
}
function getAttribut() {
if ( $this->id == 0){
return;
}
$sql="select *
from jnt_fic_att_value
natural join fiche
natural join attr_value
left join attr_def using (ad_id) where f_id=".$this->id.
" order by ad_id";
$Ret=ExecSql($this->cn,$sql);
if ( ($Max=pg_NumRows($Ret)) == 0 )
return ;
for ($i=0;$i<$Max;$i++) {
$row=pg_fetch_array($Ret,$i);
$this->fiche_def=$row['fd_id'];
$t=new Attribut ($row['ad_id']);
$t->ad_text=$row['ad_text'];
$t->av_text=$row['av_text'];
$this->attribut[$i]=$t;
}
$e=new Fiche_def($this->cn,$this->fiche_def);
$e->GetAttribut();
if ( sizeof($this->attribut) != sizeof($e->attribut ) ) {
// !!! Missing attribute
foreach ($e->attribut as $f ) {
$flag=0;
foreach ($this->attribut as $g ) {
if ( $g->ad_id == $f->ad_id )
$flag=1;
}
if ( $flag == 0 ) {
// there's a missing one, we insert it
$t=new Attribut ($f->ad_id);
$t->av_text="";
$t->ad_text=$f->ad_text;
$this->attribut[$Max]=$t;
$Max++;
} // if flag == 0
}// foreach
$this->attribut=SortAttributeById($this->attribut);
}//missing attribut
}
function size() {
if ( isset ($this->ad_id))
return sizeof($this->ad_id);
else
return 0;
}
function GetByType($p_fd_id) {
$sql="select *
from
fiche
where fd_id=".$p_fd_id;
$Ret=ExecSql($this->cn,$sql);
if ( ($Max=pg_NumRows($Ret)) == 0 )
return ;
$all[0]=new fiche($this->cn);
for ($i=0;$i<$Max;$i++) {
$row=pg_fetch_array($Ret,$i);
$t=new fiche($this->cn,$row['f_id']);
$t->getAttribut();
$all[$i]=$t;
}
return $all;
}
function ShowTable() {
echo "<TR><TD> ".
$this->id."</TD>".
"<TR> <TD>".
$this->attribut_value."</TD>".
"<TR> <TD>".
$this->attribut_def."</TD></TR>";
}
}
?>