diff --git a/include/class_operation.php b/include/class_operation.php
deleted file mode 100644
index e0aebd099..000000000
--- a/include/class_operation.php
+++ /dev/null
@@ -1,579 +0,0 @@
-db=$p_cn;
- $this->id=$p_id;
- }
- /*!\brief add a row to the table operation_analytique
- * \note if $this->oa_group if 0 then a sequence id will be computed for
- * the oa_group, if $this->j_id=0 then it will be null
- *
- */
- function add($p_seq=0) {
-
- if ( $this->oa_group == 0) {
- $this->oa_group=NextSequence($this->db,'s_oa_group');
- }
-
- if ( $this->j_id == 0 ) {
- $this->j_id="null";
- }
-
-
- // we don't save null operations
- if ( $this->oa_amount == 0 || $this->po_id==-1)
- return;
-
- $oa_row=(isset($this->oa_row))?$this->oa_row:"NULL";
- $sql='insert into operation_analytique (
- po_id,
- pa_id,
- oa_amount,
- oa_description,
- oa_debit,
- oa_group,
- j_id,
- oa_date,
- oa_row
- ) values ('.
- $this->po_id.",".
- $this->pa_id.",".
- $this->oa_amount.",".
- "' ".pg_escape_string($this->oa_description)."',".
- "'".$this->oa_debit."',".
- $this->oa_group.",".
- $this->j_id.",".
- "to_date('".$this->oa_date."','DD.MM.YYYY'),".$oa_row.")";
-
-
- ExecSql($this->db,$sql);
-
- }
- /*!\brief delete a row from the table operation_analytique
- * \note be carefull : do not delete a row when we have a group
- */
- function delete() {
- $sql="delete from operation_analytique where oa_id=".$this->oa_id;
-
- ExecSql($this->db,$sql);
- }
-
- /*!\brief update a row in the table operation_analytique
- * \todo update
- */
- function update() {
- if ( $this->po_id == -1) { $this->delete();return;}
-
- $sql="update operation_analytique set po_id=".$this->po_id." where oa_id=".$this->oa_id;
- ExecSql($this->db,$sql);
- }
-
- /*!\brief get a list of row from a certain periode
- * \todo to be done
- */
- function get_list($p_from,$p_to,$p_from_poste="",$p_to_poste="") {
- $cond="";
- $cond_poste="";
-
- if ($p_from!="")
- $cond="and oa_date >= to_date('$p_from','DD.MM.YYYY') ";
- if ( $p_to!="" )
- $cond.="and oa_date <=to_date('$p_to','DD.MM.YYYY')";
-
- if ($p_from_poste != "" )
- $cond_poste=" and upper(po_name) >= upper('".$p_from_poste."')";
- if ($p_to_poste != "" )
- $cond_poste.=" and upper(po_name) <= upper('".$p_to_poste."')";
- $pa_id_cond="";
- if ( isset ( $this->pa_id) && $this->pa_id !='')
- $pa_id_cond= "B.pa_id=".$this->pa_id." and";
-
- $sql="select oa_id,po_name,oa_description,".
- "oa_debit,to_char(oa_date,'DD.MM.YYYY') as oa_date,oa_amount,oa_group,j_id ".
- " from operation_analytique as B".
- " join poste_analytique using(po_id) ".
- "where $pa_id_cond oa_amount <> 0.0 $cond $cond_poste".
- " order by oa_date ,oa_group,oa_debit desc,oa_id";
- $RetSql=ExecSql($this->db,$sql);
-
-
- $array=pg_fetch_all($RetSql);
- return $array;
- }
-
- /*\brief show the HTML table for the operation
- */
- function html_table($p_from){
-
-
- if ($p_from=="")
- { $from="";$to="";}
- else
- list($from,$to)=GetPeriode($this->db,$p_from);
-
-
- $array=$this->get_list($from,$to);
- if ( empty($array) )
- return "Pas d'enregistrement trouvé";
-
- // jrn_navigation_bar
- $step=$_SESSION['g_pagesize'];
- $page=(isset($_GET['offset']))?$_GET['page']:1;
- $offset=(isset($_GET['offset']))?$_GET['offset']:0;
- $bar=jrn_navigation_bar($offset+1,count($array),$step,$page);
-
- $view=array_splice($array,$offset,$step);
- $gDossier=dossier::id();
- $ret="";
- $ret.=$bar;
- $ret.=JS_VIEW_JRN_MODIFY;
- $count=0;
- $group=0;
- $oldgroup=0;
- $oldjrid=0;
- foreach ($view as $row) {
- $group=$row['oa_group'];
- if ( $group !=$oldgroup ) {
- if ( $oldgroup!=0 )
- {
-
- $efface=new widget('button');
- $efface->javascript="op_remove('".$_REQUEST['PHPSESSID']."',".$gDossier.",".$oldgroup.")";
- $efface->name="Efface";
- $efface->label="Efface";
- $ret.="
".$efface->IOValue()." | ";
-
- $this->oa_group=$oldgroup;
- $jr_id=$this->get_jrid();
-
- if ( $jr_id != 0) {
- // get the old jr_id
- $detail=new widget('button');
- $detail->javascript="viewOperation($jr_id,'".$_REQUEST['PHPSESSID']."',$gDossier)";
- $detail->name="Detail";
- $detail->label="Detail";
- $ret.="".$detail->IOValue()." | ";
- }
- $ret.='';
-
- }
- $ret.='';
-
- $ret.="| ".
- $row['oa_date'].
- " | ".
- "".
- $row['oa_description'].
- " | ";
-
- $ret.="".
- "Groupe id : ".$row['oa_group'].
- " | ";
-
-
- $oldgroup=$group;
-
- }
-
- $class=($count%2==0)?"odd":"";
- $count++;
- $cred= ( $row['oa_debit'] == 'f')?"CREDIT":"DEBIT";
- $ret.="";
- if ( $cred=='CREDIT')
- $ret.=' | ';
- $ret.= "".
- $row['po_name'].
- " | ";
- if ( $cred=='DEBIT')
- $ret.=' | ';
-
- $ret.=''. $row['oa_amount'].
- " | ".
- "".
- $cred.
- " | ".
-
- "
";
- }
-
-
- $efface=new widget('button');
- $efface->javascript="op_remove('".$_REQUEST['PHPSESSID']."',$gDossier,".$oldgroup.")";
- $efface->name="Efface";
- $efface->label="Efface";
- $ret.="".$efface->IOValue()." | ";
- // get the old jr_id
- $this->oa_group=$oldgroup;
- $jr_id=$this->get_jrid();
- if ( $jr_id != 0 ){
- $detail=new widget('button');
- $detail->javascript="viewOperation($jr_id,'".$_REQUEST['PHPSESSID']."',$gDossier)";
- $detail->name="Detail";
- $detail->label="Detail";
- $ret.="".$detail->IOValue()." | ";
- }
- $ret.='
';
- $ret.=$bar;
- return $ret;
- }
- /*!\brief retrieve an operation thanks a jrnx.j_id
- * \param the jrnx.j_id
- * \return false if nothing is found other true
- */
- function get_by_jid($p_jid) {
- $sql="select distinct oa_id,
- po_id,
- oa_amount,
- oa_description,
- oa_debit,
- j_id,
- oa_group,
- oa_date,
- pa_id,
- oa_row
- from operation_analytique
- where
- j_id=$p_jid order by j_id,oa_row";
- $ret=ExecSql($this->db,$sql);
- $res=pg_fetch_all($ret);
- echo_debug(__FILE__.":".__LINE__."count res is ",count($res));
- echo_debug(__FILE__.":".__LINE__," res =",$res);
- if ( $res== false) return null;
-
- foreach ($res as $row) {
- $a=new operation($this->db);
- foreach ( $row as $attr=>$value )
- {
- $a->$attr=$row[$attr];
- }
- $array[]=clone $a;
- }
- return $array;
- }
- /*!\brief modify an op from modify_op.php
- *
- */
- function update_from_jrnx($p_po_id){
- $a=$this->get_by_jid($this->j_id);
- if ( $a == null ) {
- // retrieve data from jrnx
- $sql="select jr_date,j_montant,j_debit from jrnx ".
- " join jrn on (jr_grpt_id = j_grpt) ".
- "where j_id=".$this->j_id;
- $res=ExecSql($this->db,$sql);
- if (pg_NumRows($res) == 0 ) return;
- $row=pg_fetch_array($res,0);
- $this->oa_amount=$row['j_amount'];
- $this->oa_date=$row['jr_date'];
- $this->oa_debit=$row['j_debit'];
- $this->oa_description=$row['jr_comment'];
- $this->add();
- } else {
- foreach ($a as $row ) {
- if ( $row->pa_id == $this->pa_id ) {
- $row->po_id=$p_po_id;
- $row->update();
- }
- }
- }
- }
- /*!\brief retrieve the jr_id thanks the oa_group */
- function get_jrid() {
- $sql="select distinct jr_id from jrn join jrnx on (j_grpt=jr_grpt_id) join operation_analytique using (j_id) where j_id is not null and oa_group=".$this->oa_group;
- $res=ExecSql($this->db,$sql);
- if ( pg_NumRows($res) == 0 ) return 0;
- $ret=pg_fetch_all($res);
- return $ret[0]['jr_id'];
- }
- /*\brief this function get the balance for a certain period
- *\param $p_from from date (accountancy period)
- *\param $p_to to dat (accountancy period)
- *\param $p_plan_id the plan id
- */
-function get_balance($p_from,$p_to,$p_plan_id)
- {
- // for the operation connected to jrnx
- $cond=sql_filter_per($this->db,$p_from,$p_to,'p_id','j_date');
- $sql="select oa_id, po_id, oa_amount, oa_debit, j_date from jrnx join operation_analytique using (j_id)
- join poste_analytique using (pa_id)
- where
- $cond and j_id is not null and pa_id=$p_plan_id";
-
- // OD
- $cond=sql_filter_per($this->db,$p_from,$p_to,'p_id','oa_date');
- $sql="union select oa_id, po_id, oa_amount, oa_debit,oa_date from
- operation_analytique
- join poste_analytique using (pa_id)
- where j_id is null and
- $cond and pa_id=$p_plan_id ";
- try {
- $res=ExecSql($this->db,$sql);
- $array=pg_fetch_all($res);
- echo_debug(__FILE__.":".__LINE__," array =",$array);
- } catch (Exception $e) {
- var_dump($e);
- }
- }
- /*!\brief display the form for PA
- * \param $p_null = 1 if PA optional otherwise 0 mandatory
- * \param $p_mode == form 1 ==> read/write otherwise 0==>readonly
- * \param $p_seq number of the row
- * \param $p_amount amount
- * \see save_form_plan
- */
- function display_form_plan($p_array,$p_null,$p_mode,$p_seq,$p_amount) {
- echo_debug(__FILE__.':'.__LINE__,' display_form_plan($p_array,$p_null,$p_doc,$p_seq,$p_amount) '," $p_array,$p_null,$p_mode,$p_seq,$p_amount) ");
- if ( $p_array != null)
- extract ($p_array);
- $result="";
- $plan=new PlanAnalytic($this->db);
- $a_plan=$plan->get_list();
-
- $table_id="t".$p_seq;
-
- $hidden=new widget("hidden");
-
-
- $result.=$hidden->IOValue('amount_'.$table_id,$p_amount);
- if ( $p_mode==1 )
- $result.='';
- else
- $result.='';
- $result.="".$plan->header()."| montant |
";
-
-
-
- $nb_row=(!isset(${'nb_'.$table_id}))?1:${'nb_'.$table_id};
- $result.=$hidden->IOValue('nb_'.$table_id,$nb_row);
-
- for ( $i=1; $i <= $nb_row;$i++) {
- $result.='';
- $count=0;
- foreach ($a_plan as $r_plan)
- {
- $count++;
-
- $array=make_array($this->db,
- "select pa_id||'_'||po_id as value,".
- " po_name as label from poste_analytique ".
- " where pa_id = ".$r_plan['id'].
- " order by po_name",$p_null);
- $select = new widget("select","","ta_".$p_seq."o".$count."row_".$i,$array);
- $select->table=0;
- // view only or editable
- if ( $p_mode==1 ) {
- // editable
- $select->readonly=false;
- $select->selected=(isset(${"ta_".$p_seq."o".$count."row_".$i}))?${"ta_".$p_seq."o".$count."row_".$i}:0;
- } else {
- // view only
- $select->readonly=true;
- $select->selected=(isset(${"ta_".$p_seq."o".$count."row_".$i}))?${"ta_".$p_seq."o".$count."row_".$i}:0;
- }
- if ($p_mode==1)
- $result.='| '.$select->IOValue().' | ';
- else
- $result.=''.$select->IOValue().' | ';
-
-
- }
- $value=new widget("text");
- $value->name="val".$p_seq."l$i";
- $value->size=6;
- $value->value=(isset(${"val".$p_seq."l$i"}))?round(${"val".$p_seq."l$i"},2):$p_amount;
- // $value->value=($p_doc=="form")?$p_amount:round(${"val".$p_seq."l$i"},2);
- $value->readonly=($p_mode==1)?false:true;
-
- $result.=''.$value->IOValue().' | ';
-
- $result.="
";
- }
-
- $result.="
";
- // add a button to add a row
- $button=new widget("button");
- $button->javascript="onChange=add_row('$table_id',$p_seq,$count);";
- $button->name="js".$p_seq;
- $button->label="Nouvelle ligne";
- if ( $p_mode == 1 )
- $result.=$button->IOValue();
- return $result;
- }
- /*!\brief it called for each item, the data are taken from $p_array
- * data and set before in this.
- * \param $p_item if the item nb for each item (purchase or selling
- * merchandise)
- * \param $p_array structure
- * \verbatim
- nb_tA A is the number of the item contains the number of
- rows of CA for this card
- valAlR amount for the CA (item A row R)
- ta_AoCrow_R contains the value of the pa_id and po_id for this
- row with the form pa_id_po_id %d_%d
- *\endverbatim
- * \attention The idea is one j_id matches several oa_id,
- * serveral data are set before the call :
- * -j_id
- * -oa_debit
- * -oa_group
- * -oa_date
- * -oa_description
- *
- */
- function save_form_plan($p_array,$p_item) {
- echo_debug(__FILE__.':'.__LINE__,"p_array is ",$p_array);
- extract($p_array);
- if ( !isset (${"nb_t".$p_item}) ) {
- echo __FILE__.':'.__LINE."nb_t".$p_item." n'est pas defini !!!";
- exit();
- }
- $max=${"nb_t".$p_item};
- echo_debug(__FILE__.':'.__LINE__.'- ', "max of row for CA = ".$max);
- // get all the PA
- $plan=new PlanAnalytic($this->db);
- $cplan=$plan->count();
- echo_debug(__FILE__.':'.__LINE__," nb of PA $cplan");
- // foreach row
- for ($i=1;$i<=$max;$i++) {
- echo_debug(__FILE__.':'.__LINE__." loop i $i");
- // foreach col PA
- for ($e=1;$e<=$cplan+1;$e++)
- {
- echo_debug(__FILE__.':'.__LINE__."loop e $e");
- echo_debug(__FILE__.':'.__LINE__," Checking ta_".$p_item."o".$e."row_".$i);
- if ( isset(${"ta_".$p_item."o".$e."row_".$i}) && ${"ta_".$p_item."o".$e."row_".$i}!=-1)
- {
- echo_debug(__FILE__.':'.__LINE__,"Value is ".${"ta_".$p_item."o".$e."row_".$i});
- $op=new operation($this->db);
- $val=${"ta_".$p_item."o".$e."row_".$i};
- list($op->pa_id,$op->po_id)=sscanf($val,"%d_%d");
- $op->oa_group=$this->oa_group;
- $op->j_id=$this->j_id;
- $op->oa_amount=${"val".$p_item."l".$i};
- $op->oa_debit=$this->oa_debit;
- $op->oa_date=$this->oa_date;
-
- $op->oa_description=$this->oa_description;
- $op->oa_row=$i;
- $op->add();
- }
- }
- }
-
- }
- /*\brief transform a array of operation into a array usage by
- *display_form_plan & save_form_plan
- *\param $p_array array of operation
- *\param $p_line line
- *\return an array complying with \see save_form_plan
- */
- function to_request ($p_array,$p_line){
- if ( count($p_array) == 0 ) {
- echo_debug(__FILE__.':'.__LINE__,"p_array est vide",$p_array);
- return null;
- }
- $result=array();
- $table="nb_t".$p_line;
-
- $col=1;
- $line=1;
- $first=true;
- $last_pa_id=0;
- foreach ( $p_array as $row) {
- $val="val".$p_line."l".$row->oa_row;
- $result[$val]=$row->oa_amount;
- if ( $first ) {
- $first_pa_id=$row->pa_id;
- $first=false;
- }
-
- if ( $first_pa_id != $row->pa_id )
- $col++;
- else {
- $col=1;
- $line++;
- }
- $po="ta_".$p_line."o".$col."row_".$row->oa_row;
- $result[$po]=$row->pa_id."_".$row->po_id;
- // $last_pa_id=$row->pa_id;
- }
- $result[$table]=$line-1;
- return $result;
- }
-/*!
- * \brief delete from operation_analytique
- * \param $p_jid the operation_analytique.j_id field
- *
- * \return none
- */
- function delete_by_jid($p_jid) {
- $sql="delete from operation_analytique where j_id=$p_jid";
- ExecSql($this->db,$sql);
- }
-
- /*\brief test the class
- *\param
- *\param
- *\return
- */
- function test_me() {
- $array=$this->get_by_jid(442);
- echo_debug(__FILE__.':'.__LINE__,"resultat get_by_jid",$array);
-
- $a=$this->to_request($array,1);
- echo_debug(__FILE__.':'.__LINE__,"resultat to_request ligne 1",$a);
-
-
- }
-}