diff --git a/include/class_jrn.php b/include/class_acc_ledger.php
similarity index 93%
rename from include/class_jrn.php
rename to include/class_acc_ledger.php
index 484896fe0..b8f00a63f 100644
--- a/include/class_jrn.php
+++ b/include/class_acc_ledger.php
@@ -91,7 +91,7 @@ class jrn {
*/
function GetRow($p_from,$p_to,$cent='off',$p_limit=-1,$p_offset=-1) {
- echo_debug('class_jrn.php',__LINE__,"GetRow ( $p_from,$p_to,$cent,$p_limit,$p_offset)");
+ echo_debug('class_acc_ledger.php',__LINE__,"GetRow ( $p_from,$p_to,$cent,$p_limit,$p_offset)");
$periode=sql_filter_per($this->db,$p_from,$p_to,'p_id','jr_tech_per');
@@ -102,7 +102,7 @@ class jrn {
if ( $this->id != 0 ) {
if ( $cent=='off' ) {
- echo_debug('class_jrn.php',__LINE__,"journaux non centralisé");
+ echo_debug('class_acc_ledger.php',__LINE__,"journaux non centralisé");
// Journaux non centralisés
$Res=ExecSql($this->db,"select j_id,j_id as int_j_id,to_char(j_date,'DD.MM.YYYY') as j_date,
jr_internal,
@@ -120,7 +120,7 @@ class jrn {
$cond_limite);
}else {
// Journaux centralisés
- // echo'class_jrn.php',__LINE__,"journaux centralisé";
+ // echo'class_acc_ledger.php',__LINE__,"journaux centralisé";
$Sql="select jr_opid as j_id,
c_order as int_j_id,
to_char (c_date,'DD.MM.YYYY') as j_date ,
@@ -149,7 +149,7 @@ class jrn {
} else {
// Grand Livre
if ( $cent == 'off') {
- echo_debug('class_jrn.php',__LINE__,"Grand livre non centralisé");
+ echo_debug('class_acc_ledger.php',__LINE__,"Grand livre non centralisé");
// Non centralisé
$Res=ExecSql($this->db,"select j_id,j_id as int_j_id,to_char(j_date,'DD.MM.YYYY') as j_date,
jr_internal,
@@ -166,7 +166,7 @@ class jrn {
$cond_limite);
} else {
- echo_debug('class_jrn.php',__LINE__,"Grand livre centralisé");
+ echo_debug('class_acc_ledger.php',__LINE__,"Grand livre centralisé");
// Centralisé
$Sql="select jr_c_opid as j_id,
c_order as int_j_id,
@@ -211,8 +211,8 @@ class jrn {
$tot_deb+=$line['deb_montant'];
$tot_cred+=$line['cred_montant'];
$tot_op=$line['jr_montant'];
- echo_debug('class_jrn.php',__LINE__," GetRow : mont_Deb ".$mont_deb);
- echo_debug('class_jrn.php',__LINE__," GetRow : mont_cred ".$mont_cred);
+ echo_debug('class_acc_ledger.php',__LINE__," GetRow : mont_Deb ".$mont_deb);
+ echo_debug('class_acc_ledger.php',__LINE__," GetRow : mont_cred ".$mont_cred);
/* Check first if there is a quickcode */
if ( strlen(trim($line['j_qcode'])) != 0 )
@@ -285,7 +285,7 @@ class jrn {
}
- echo_debug('class_jrn.php',__LINE__,"Total debit $tot_deb,credit $tot_cred");
+ echo_debug('class_acc_ledger.php',__LINE__,"Total debit $tot_deb,credit $tot_cred");
$this->row=$array;
$a=array($array,$tot_deb,$tot_cred);
return $a;
@@ -446,14 +446,14 @@ class jrn {
// Parse data from jrnx and fill diff. field
foreach ( $data_jrnx as $code ) {
$idx_tva=0;
- echo_debug('class_jrn',__LINE__,'Code is');
- echo_debug('class_jrn',__LINE__,$code);
+ echo_debug('class_acc_ledger',__LINE__,'Code is');
+ echo_debug('class_acc_ledger',__LINE__,$code);
$poste=new poste($this->db,$code['j_poste']);
// if card retrieve name if the account is not a VAT account
if ( strlen(trim($code['j_qcode'] )) != 0 && $poste->isTva() == 0 )
{
- echo_debug('class_jrn',__LINE__,'fiche_def = '.$code['j_qcode']);
+ echo_debug('class_acc_ledger',__LINE__,'fiche_def = '.$code['j_qcode']);
$fiche=new fiche($this->db);
$fiche->GetByQCode(trim($code['j_qcode']),false);
$fiche_def_id=$fiche->get_fiche_def_ref_id();
@@ -461,7 +461,7 @@ class jrn {
if ( $fiche_def_id == FICHE_TYPE_CLIENT ||
$fiche_def_id == FICHE_TYPE_FOURNISSEUR )
{
- echo_debug('class_jrn',__LINE__,$code['j_qcode'].'est F ou C');
+ echo_debug('class_acc_ledger',__LINE__,$code['j_qcode'].'est F ou C');
$p_array['TVAC']=$code['j_montant'];
$p_array['client']=($trunc==0)?$fiche->GetName():substr($fiche->GetName(),0,20);
@@ -484,7 +484,7 @@ class jrn {
if ( $fiche_def_id != FICHE_TYPE_VENTE &&
$fiche_def_id != FICHE_TYPE_ACH_MAR &&
$fiche_def_id != FICHE_TYPE_ACH_SER ) {
- echo_debug('class_jrn',__LINE__,$code['j_qcode']."n 'est PAS F ou C");
+ echo_debug('class_acc_ledger',__LINE__,$code['j_qcode']."n 'est PAS F ou C");
$p_array['TVAC']=$code['j_montant'];
$p_array['client']= ($trunc==0)?$fiche->GetName():substr($fiche->GetName(),0,20);
@@ -507,12 +507,12 @@ class jrn {
}
}
}
- echo_debug('class_jrn',__LINE__,$a_TVA);
+ echo_debug('class_acc_ledger',__LINE__,$a_TVA);
// if TVA, load amount, tva id and rate in array
foreach ( $a_TVA as $line_tva)
{
- echo_debug('class_jrn',__LINE__,'ICI');
- echo_debug('class_jrn',__LINE__,'Montant TVA = '.$p_array['AMOUNT_TVA']);
+ echo_debug('class_acc_ledger',__LINE__,'ICI');
+ echo_debug('class_acc_ledger',__LINE__,'Montant TVA = '.$p_array['AMOUNT_TVA']);
list($tva_deb,$tva_cred)=split(',',$line_tva['tva_poste']);
if ( $code['j_poste'] == $tva_deb ||
$code['j_poste'] == $tva_cred )
@@ -531,7 +531,7 @@ class jrn {
$p_array['AMOUNT_TVA']+=$code['j_montant'];
$p_array['TVA'][$c]=array($idx_tva,array($line_tva['tva_id'],$line_tva['tva_label'],$code['j_montant']));
- echo_debug('class_jrn',__LINE__,'Montant TVA = '.$p_array['AMOUNT_TVA']);
+ echo_debug('class_acc_ledger',__LINE__,'Montant TVA = '.$p_array['AMOUNT_TVA']);
$c++;
$idx_tva++;
@@ -591,7 +591,7 @@ class jrn {
$sql="select jrn_deb_max_line as value from jrn_def where jrn_def_id=".$this->id;
$r=ExecSql($this->db,$sql);
$Res=pg_fetch_all($r);
- echo_debug('class_jrn',__LINE__,$Res);
+ echo_debug('class_acc_ledger',__LINE__,$Res);
if ( sizeof($Res) == 0 ) return 1;
return $Res[0]['value'];
}
diff --git a/include/class_anc_operation.php b/include/class_anc_operation.php
new file mode 100644
index 000000000..01d655baa
--- /dev/null
+++ b/include/class_anc_operation.php
@@ -0,0 +1,580 @@
+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 Anc_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 Anc_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);
+
+
+ }
+}