1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/noalyss_ynh.git synced 2024-09-03 19:46:20 +02:00
noalyss_ynh/sources/include/class_follow_up_detail.php
2015-09-27 00:54:25 +02:00

248 lines
8.7 KiB
PHP

<?php
/*
* This file is part of NOALYSS.
*
* NOALYSS 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.
*
* NOALYSS 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 NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
require_once NOALYSS_INCLUDE.'/class_fiche.php';
require_once NOALYSS_INCLUDE.'/class_database.php';
// Copyright Author Dany De Bontridder danydb@aevalys.eu
/*!\file
* \brief Follow_Up details are the details for a actions
*/
/*!\brief Follow_Up Details are the details for an actions, it means
* the details of an order, delivery order, submit a quote...
* this class is linked to the table action_detail
* - "id"=>"ad_id", primary key
* - "qcode"=>"f_id", quick_code
* - "text"=>"ad_text", description lines
* - "price_unit"=>"ad_pu", price by unit
* - "quantity"=>"ad_quant", quantity
* - "tva_id"=>"ad_tva_id", tva_od
* - "tva_amount"=>"ad_tva_amount", vat amount
* - "total"=>"ad_total_amount", total amount including vat
* - "ag_id"=>"ag_id" => foreign key to action_gestion
* - db is the database connection
*/
class Follow_Up_Detail
{
private static $variable=array(
"id"=>"ad_id",
"qcode"=>"f_id",
"text"=>"ad_text",
"price_unit"=>"ad_pu",
"quantity"=>"ad_quant",
"tva_id"=>"ad_tva_id",
"tva_amount"=>"ad_tva_amount",
"total"=>"ad_total_amount",
"ag_id"=>"ag_id"
);
function __construct ($p_cn,$p_id=0)
{
$this->db=$p_cn;
$this->ad_id=$p_id;
}
public function get_parameter($p_string)
{
if ( array_key_exists($p_string,self::$variable) )
{
$idx=self::$variable[$p_string];
return $this->$idx;
}
else
throw new Exception("Attribut inexistant $p_string");
}
public function set_parameter($p_string,$p_value)
{
if ( array_key_exists($p_string,self::$variable) )
{
$idx=self::$variable[$p_string];
$this->$idx=$p_value;
}
else
throw new Exception("Attribut inexistant $p_string");
}
public function get_info()
{
return var_export(self::$variable,true);
}
public function verify()
{
// Verify that the elt we want to add is correct
return 0;
}
public function save()
{
if ( $this->ad_id == 0 )
$this->insert();
else
$this->update();
}
public function insert()
{
if ( $this->verify() != 0 ) return;
$sql='INSERT INTO action_detail('.
' f_id, ad_text, ad_pu, ad_quant, ad_tva_id, ad_tva_amount,'.
' ad_total_amount, ag_id)'.
' VALUES ($1, $2, $3, $4,$5,$6,$7,$8) returning ad_id';
$this->ad_id=$this->db->get_value($sql,array(
$this->f_id,
$this->ad_text,
$this->ad_pu,
$this->ad_quant,
$this->ad_tva_id,
$this->ad_tva_amount,
$this->ad_total_amount,
$this->ag_id
)
);
}
public function update()
{
if ( $this->verify() != 0 ) return;
$sql='UPDATE action_detail '.
' SET f_id=$1, ad_text=$2, ad_pu=$3, ad_quant=$4, ad_tva_id=$5,'.
' ad_tva_amount=$6, ad_total_amount=$7, ag_id=$8'.
' WHERE ad_id=$9';
$this->id=$this->db->exec_sql($sql,array(
$this->f_id,
$this->ad_text,
$this->ad_pu,
$this->ad_quant,
$this->ad_tva_id,
$this->ad_tva_amount,
$this->ad_total_amount,
$this->ag_id,
$this->ad_id
)
);
}
/*!\brief retrieve all the details of an Follow_Up
*\return array of Action_Detail
*\see Follow_Up::get
*/
public function load_all()
{
$sql="SELECT ad_id, f_id, ad_text, ad_pu, ad_quant, ad_tva_id, ad_tva_amount,
ad_total_amount, ag_id FROM action_detail ".
" where ag_id=$1 order by ad_id";
$res=$this->db->get_array(
$sql,
array($this->ag_id)
);
if ( $this->db->count() == 0 ) return;
$aRet=array();
for($i=0;$i<count($res);$i++)
{
$a=new Follow_Up_Detail($this->db);
$row=$res[$i];
foreach ($row as $idx=>$value)
{
$a->$idx=$value;
}
$aRet[$i]=clone $a;
}
return $aRet;
}
public function load()
{
$sql="SELECT ad_id, f_id, ad_text, ad_pu, ad_quant, ad_tva_id, ad_tva_amount,
ad_total_amount, ag_id FROM action_detail".
" where ad_id=$1";
$res=$this->db->get_array($this->db,
$sql,
array($this->ad_id)
);
if ( $this->db->count() == 0 ) return;
$row=$res[0];
foreach ($row as $idx=>$value)
{
$this->$idx=$value;
}
}
public function delete()
{
$sql="delete from action_detail where ad_id=$1";
$this->db->exec_sql($sql,array($this->ad_id));
}
/*!\brief Fill an Action_Detail Object with the data contained in an array
*\param $array
- [ad_id7] => ad_id
- [e_march7] => f_id
- [e_march7_label] => ad_text
- [e_march7_price] => ad_pu
- [e_quant7] => ad_quant
- [e_march7_tva_id] => ad_tva_id
- [e_march7_tva_amount] => ad_tva_amount
- [tvac_march7] => ad_total_amount
- [ag_id] => ag_id
*\param $idx is the idx (example 7)
*\note */
public function from_array($array,$idx)
{
$row=$array;
$this->ad_id=(isset($row['ad_id'.$idx]))?$row['ad_id'.$idx]:0;
$qcode=(isset($row['e_march'.$idx]))?$row['e_march'.$idx]:"";
if (trim($qcode)=='')
{
$this->f_id=0;
}
else
{
$tmp=new Fiche($this->db);
$tmp->get_by_qcode($qcode,false);
$this->f_id=$tmp->id;
}
$this->ad_text=(isset($row['e_march'.$idx.'_label']))?$row['e_march'.$idx.'_label']:"";
$this->ad_pu=(isset($row['e_march'.$idx.'_price']))?$row['e_march'.$idx.'_price']:0;
$this->ad_quant=(isset($row['e_quant'.$idx]))?$row['e_quant'.$idx]:0;
$this->ad_tva_id=(isset($row['e_march'.$idx.'_tva_id']))?$row['e_march'.$idx.'_tva_id']:0;
$this->ad_tva_amount=(isset($row['e_march'.$idx.'_tva_amount']))?$row['e_march'.$idx.'_tva_amount']:0;
$this->ad_total_amount=(isset($row['tvac_march'.$idx]))?$row['tvac_march'.$idx]:0;
$this->ag_id=(isset($array['ag_id']))?$array['ag_id']:0;
/* protect numeric */
if (trim($this->ad_pu)=="" || isNumber($this->ad_pu)==0) $this->ad_pu=0;
if (trim($this->ad_quant)=="" || isNumber($this->ad_quant)==0) $this->ad_quant=0;
if (trim($this->ad_tva_amount)==""||isNumber($this->ad_tva_amount)==0) $this->ad_tva_amount=0;
if (trim($this->ad_total_amount)==""||isNumber($this->ad_total_amount)==0) $this->ad_total_amount=0;
if (trim($this->ad_tva_id)=="" || isNumber($this->ad_tva_id)==0) $this->ad_tva_id=0;
}
/*!\brief
*\param
*\return
*\note
*\see
*/
static function test_me()
{}
}
/* test::test_me(); */