diff --git a/include/class_acc_ledger_fin.php b/include/class_acc_ledger_fin.php index 67c0ca2f0..2c32cd41e 100644 --- a/include/class_acc_ledger_fin.php +++ b/include/class_acc_ledger_fin.php @@ -1,4 +1,5 @@ type='FIN'; - } - /*!\brief verify that the data are correct before inserting or confirming - *\param an array (usually $_POST) - *\return String - *\throw Exception on error occurs - */ - public function verify($p_array) - { - global $g_user; - extract ($p_array); - /* check for a double reload */ - if ( isset($mt) && $this->db->count_sql('select jr_mt from jrn where jr_mt=$1',array($mt)) != 0 ) - throw new Exception (_('Double Encodage'),5); + function __construct($p_cn, $p_init) + { + parent::__construct($p_cn, $p_init); + $this->type = 'FIN'; + } - /* check if we can write into this ledger */ - if ( $g_user->check_jrn($p_jrn) != 'W' ) - throw new Exception (_('Accès interdit'),20); + /* !\brief verify that the data are correct before inserting or confirming + * \param an array (usually $_POST) + * \return String + * \throw Exception on error occurs + */ - /* check if there is a bank account linked to the ledger */ - $bank_id=$this->get_bank(); + public function verify($p_array) + { + global $g_user; + extract($p_array); + /* check for a double reload */ + if (isset($mt) && $this->db->count_sql('select jr_mt from jrn where jr_mt=$1', array($mt)) != 0) + throw new Exception(_('Double Encodage'), 5); - if ($this->db->count()==0 ) - throw new Exception("Ce journal n'a pas de compte en banque, allez dans paramètre->journal pour régler cela"); - /* check if the accounting of the bank is correct */ - $fBank=new Fiche($this->db,$bank_id); - $bank_accounting=$fBank->strAttribut(ATTR_DEF_ACCOUNT); - if ( trim($bank_accounting)=='' ) - throw new Exception ('Le poste comptable du compte en banque de ce journal est invalide'); + /* check if we can write into this ledger */ + if ($g_user->check_jrn($p_jrn) != 'W') + throw new Exception(_('Accès interdit'), 20); - /* check if the account exists */ - $poste=new Acc_Account_Ledger($this->db,$bank_accounting); - if ( $poste->load() == false ) - throw new Exception ('Le poste comptable du compte en banque de ce journal est invalide'); + /* check if there is a bank account linked to the ledger */ + $bank_id = $this->get_bank(); - /* check if the date is valid */ - if ( isDate($e_date) == null ) - { - throw new Exception('Date invalide', 2); - } - $oPeriode=new Periode($this->db); - if ($this->check_periode()==false) - { - $periode=$oPeriode->find_periode($e_date); - } - else - { - $oPeriode->p_id=$periode; - list ($min,$max)=$oPeriode->get_date_limit(); - if ( cmpDate($e_date,$min) < 0 || - cmpDate($e_date,$max) > 0) - throw new Exception(_('Date et periode ne correspondent pas'),6); - } + if ($this->db->count() == 0) + throw new Exception("Ce journal n'a pas de compte en banque, allez dans paramètre->journal pour régler cela"); + /* check if the accounting of the bank is correct */ + $fBank = new Fiche($this->db, $bank_id); + $bank_accounting = $fBank->strAttribut(ATTR_DEF_ACCOUNT); + if (trim($bank_accounting) == '') + throw new Exception('Le poste comptable du compte en banque de ce journal est invalide'); - /* check if the periode is closed */ - if ( $this->is_closed($periode)==1 ) - { - throw new Exception(_('Periode fermee'),6); - } + /* check if the account exists */ + $poste = new Acc_Account_Ledger($this->db, $bank_accounting); + if ($poste->load() == false) + throw new Exception('Le poste comptable du compte en banque de ce journal est invalide'); - /* check if we are using the strict mode */ - if( $this->check_strict() == true) - { - /* if we use the strict mode, we get the date of the last - operation */ - $last_date=$this->get_last_date(); - if ( $last_date != null && cmpDate($e_date,$last_date) < 0 ) - throw new Exception(_('Vous utilisez le mode strict la dernière operation est à la date du ') - .$last_date._(' vous ne pouvez pas encoder à une date antérieure'),15); - - } - - $acc_pay=new Acc_Operation($this->db); - - $nb=0; - $tot_amount=0; - //---------------------------------------- - // foreach item - //---------------------------------------- - for ($i=0;$i< $nb_item;$i++) - { - if ( strlen(trim(${'e_other'.$i}))== 0) continue; - /* check if amount are numeric and */ - if ( isNumber(${'e_other'.$i.'_amount'}) == 0 ) - throw new Exception('La fiche '.${'e_other'.$i}.'a un montant invalide ['.${'e_other'.$i.'_amount'}.']',6); - - /* compute the total */ - $tot_amount+=round(${'e_other'.$i.'_amount'},2); - /* check if all card has a ATTR_DEF_ACCOUNT*/ - $fiche=new Fiche($this->db); - $fiche->get_by_qcode(${'e_other'.$i}); - if ( $fiche->empty_attribute(ATTR_DEF_ACCOUNT) == true) - throw new Exception('La fiche '.${'e_other'.$i}.'n\'a pas de poste comptable',8); - - $sposte=$fiche->strAttribut(ATTR_DEF_ACCOUNT); - // if 2 accounts, take only the debit one for customer - if ( strpos($sposte,',') != 0 ) - { - $array=explode(',',$sposte); - $poste_val=$array[1]; - } - else - { - $poste_val=$sposte; - } - /* The account exists */ - $poste=new Acc_Account_Ledger($this->db,$poste_val); - if ( $poste->load() == false ) - { - throw new Exception('Pour la fiche '.${'e_other'.$i}.' le poste comptable ['.$poste->id.'n\'existe pas',9); - } - /* Check if the card belong to the ledger */ - $fiche=new Fiche ($this->db); - $fiche->get_by_qcode(${'e_other'.$i}); - if ( $fiche->belong_ledger($p_jrn,'deb') !=1 ) - throw new Exception('La fiche '.${'e_other'.$i}.'n\'est pas accessible à ce journal',10); - $nb++; - } - if ( $nb == 0 ) - throw new Exception('Il n\'y a aucune opération',12); - - /* Check if the last_saldo and first_saldo are correct */ - if ( strlen(trim($last_sold)) != 0 && isNumber($last_sold) && - strlen(trim($first_sold)) != 0 && isNumber($first_sold)) - { - $diff=$last_sold-$first_sold; - $diff=round($diff,2)-round($tot_amount,2); - if ( $first_sold != 0 && $last_sold !=0) - { - if ( $diff != 0 ) - throw new Exception('Le montant de l\'extrait est incorrect'. - $tot_amount.' extrait '.$diff,13); - } - } - - } - - - /*!\brief - *\param $p_array contains the value usually it is $_POST - *\return string with html code - *\note the form tag are not set here - */ - function input($p_array=null,$notused=0) - { - global $g_parameter,$g_user; - if ( $p_array != null) - extract ($p_array); - - $pview_only=false; - - $f_add_button=new IButton('add_card'); - $f_add_button->label=_('Créer une nouvelle fiche'); - $f_add_button->set_attribute('ipopup','ipop_newcard'); - $f_add_button->set_attribute('jrn',$this->id); - $f_add_button->javascript=" this.jrn=\$('p_jrn').value;select_card_type(this);"; - $str_add_button=($g_user->check_action(FICADD)==1)?$f_add_button->input():""; - - // The first day of the periode - $pPeriode=new Periode($this->db); - list ($l_date_start,$l_date_end)=$pPeriode->get_date_limit($g_user->get_periode()); - if ( $g_parameter->MY_DATE_SUGGEST=='Y' ) - $op_date=( ! isset($e_date) ) ?$l_date_start:$e_date; - else - $op_date=( ! isset($e_date) ) ?'':$e_date; - - $r=""; - - $r.=dossier::hidden(); - $f_legend='Banque, caisse'; - // Date - //-- - $Date=new IDate("e_date",$op_date); - $Date->setReadOnly($pview_only); - $f_date=$Date->input(); - $f_period=''; - if ($this->check_periode() == true) - { - // Periode - //-- - $l_user_per=(isset($periode))?$periode:$g_user->get_periode(); - $period=new IPeriod(); - $period->cn=$this->db; - $period->type=OPEN; - $period->value=$l_user_per; - $period->user=$g_user; - $period->name='periode'; - try - { - $l_form_per=$period->input(); - } - catch (Exception $e) - { - if ($e->getCode() == 1 ) - { - echo "Aucune période ouverte"; - exit(); - } - } - $label=HtmlInput::infobulle(3); - $f_period="Période comptable $label".$l_form_per; - } - - // Ledger (p_jrn) - //-- - - $add_js='onchange="update_pj();update_bank();get_last_date();ajax_saldo(\'first_sold\');update_name();"'; - - if ( $g_parameter->MY_DATE_SUGGEST == 'Y') - $add_js='onchange="update_pj();update_bank();get_last_date();ajax_saldo(\'first_sold\')";'; - - $wLedger=$this->select_ledger('FIN',2); - if ($wLedger == null ) exit ('Pas de journal disponible'); - - $wLedger->javascript=$add_js; - - $label=" Journal ".HtmlInput::infobulle(2) ; - $f_jrn=$label.$wLedger->input(); - - - // retrieve bank name, code and account from the jrn_def.jrn_def_bank - - $f_bank=''.$this->get_bank_name().''; - if ( $this->bank_id == "" ) + /* check if the date is valid */ + if (isDate($e_date) == null) { - echo h2("Journal de banque non configuré ".$this->get_name(),' class="error"'); - echo ' vous devez donner à ce journal un compte en banque (fiche), modifiez dans CFGLED'; - alert ("Journal de banque non configuré ".$this->get_name()); + throw new Exception('Date invalide', 2); + } + $oPeriode = new Periode($this->db); + if ($this->check_periode() == false) + { + $periode = $oPeriode->find_periode($e_date); + } + else + { + $oPeriode->p_id = $periode; + list ($min, $max) = $oPeriode->get_date_limit(); + if (cmpDate($e_date, $min) < 0 || + cmpDate($e_date, $max) > 0) + throw new Exception(_('Date et periode ne correspondent pas'), 6); } - $f_legend_detail='Opérations financières'; - //-------------------------------------------------- - // Saldo begin end - //------------------------------------------------- - // Extrait - $default_pj=''; - if ( $g_parameter->MY_PJ_SUGGEST=='Y') - { - $default_pj=$this->guess_pj(); - } - $wPJ=new IText('e_pj'); - $wPJ->readonly=false; - $wPJ->size=10; - $wPJ->value=(isset($e_pj))?$e_pj:$default_pj; + /* check if the periode is closed */ + if ($this->is_closed($periode) == 1) + { + throw new Exception(_('Periode fermee'), 6); + } - $f_extrait=$wPJ->input().HtmlInput::hidden('e_pj_suggest',$default_pj); - $label=HtmlInput::infobulle(7); + /* check if we are using the strict mode */ + if ($this->check_strict() == true) + { + /* if we use the strict mode, we get the date of the last + operation */ + $last_date = $this->get_last_date(); + if ($last_date != null && cmpDate($e_date, $last_date) < 0) + throw new Exception(_('Vous utilisez le mode strict la dernière operation est à la date du ') + . $last_date . _(' vous ne pouvez pas encoder à une date antérieure'), 15); + } - $first_sold=(isset($first_sold))?$first_sold:""; - $wFirst=new INum('first_sold',$first_sold); + $acc_pay = new Acc_Operation($this->db); - $last_sold= isset($last_sold)?$last_sold:""; - $wLast=new INum('last_sold',$last_sold); + $nb = 0; + $tot_amount = 0; + //---------------------------------------- + // foreach item + //---------------------------------------- + for ($i = 0; $i < $nb_item; $i++) + { + if (strlen(trim(${'e_other' . $i})) == 0) + continue; + /* check if amount are numeric and */ + if (isNumber(${'e_other' . $i . '_amount'}) == 0) + throw new Exception('La fiche ' . ${'e_other' . $i} . 'a un montant invalide [' . ${'e_other' . $i . '_amount'} . ']', 6); + + /* compute the total */ + $tot_amount+=round(${'e_other' . $i . '_amount'}, 2); + /* check if all card has a ATTR_DEF_ACCOUNT */ + $fiche = new Fiche($this->db); + $fiche->get_by_qcode(${'e_other' . $i}); + if ($fiche->empty_attribute(ATTR_DEF_ACCOUNT) == true) + throw new Exception('La fiche ' . ${'e_other' . $i} . 'n\'a pas de poste comptable', 8); + + $sposte = $fiche->strAttribut(ATTR_DEF_ACCOUNT); + // if 2 accounts, take only the debit one for customer + if (strpos($sposte, ',') != 0) + { + $array = explode(',', $sposte); + $poste_val = $array[1]; + } + else + { + $poste_val = $sposte; + } + /* The account exists */ + $poste = new Acc_Account_Ledger($this->db, $poste_val); + if ($poste->load() == false) + { + throw new Exception('Pour la fiche ' . ${'e_other' . $i} . ' le poste comptable [' . $poste->id . 'n\'existe pas', 9); + } + /* Check if the card belong to the ledger */ + $fiche = new Fiche($this->db); + $fiche->get_by_qcode(${'e_other' . $i}); + if ($fiche->belong_ledger($p_jrn, 'deb') != 1) + throw new Exception('La fiche ' . ${'e_other' . $i} . 'n\'est pas accessible à ce journal', 10); + $nb++; + } + if ($nb == 0) + throw new Exception('Il n\'y a aucune opération', 12); + + /* Check if the last_saldo and first_saldo are correct */ + if (strlen(trim($last_sold)) != 0 && isNumber($last_sold) && + strlen(trim($first_sold)) != 0 && isNumber($first_sold)) + { + $diff = $last_sold - $first_sold; + $diff = round($diff, 2) - round($tot_amount, 2); + if ($first_sold != 0 && $last_sold != 0) + { + if ($diff != 0) + throw new Exception('Le montant de l\'extrait est incorrect' . + $tot_amount . ' extrait ' . $diff, 13); + } + } + } + + /* !\brief + * \param $p_array contains the value usually it is $_POST + * \return string with html code + * \note the form tag are not set here + */ + + function input($p_array = null, $notused = 0) + { + global $g_parameter, $g_user; + if ($p_array != null) + extract($p_array); + + $pview_only = false; + + $f_add_button = new IButton('add_card'); + $f_add_button->label = _('Créer une nouvelle fiche'); + $f_add_button->set_attribute('ipopup', 'ipop_newcard'); + $f_add_button->set_attribute('jrn', $this->id); + $f_add_button->javascript = " this.jrn=\$('p_jrn').value;select_card_type(this);"; + $str_add_button = ($g_user->check_action(FICADD) == 1) ? $f_add_button->input() : ""; + + // The first day of the periode + $pPeriode = new Periode($this->db); + list ($l_date_start, $l_date_end) = $pPeriode->get_date_limit($g_user->get_periode()); + if ($g_parameter->MY_DATE_SUGGEST == 'Y') + $op_date = (!isset($e_date) ) ? $l_date_start : $e_date; + else + $op_date = (!isset($e_date) ) ? '' : $e_date; + + $r = ""; + + $r.=dossier::hidden(); + $f_legend = 'Banque, caisse'; + // Date + //-- + $Date = new IDate("e_date", $op_date); + $Date->setReadOnly($pview_only); + $f_date = $Date->input(); + $f_period = ''; + if ($this->check_periode() == true) + { + // Periode + //-- + $l_user_per = (isset($periode)) ? $periode : $g_user->get_periode(); + $period = new IPeriod(); + $period->cn = $this->db; + $period->type = OPEN; + $period->value = $l_user_per; + $period->user = $g_user; + $period->name = 'periode'; + try + { + $l_form_per = $period->input(); + } + catch (Exception $e) + { + if ($e->getCode() == 1) + { + echo "Aucune période ouverte"; + exit(); + } + } + $label = HtmlInput::infobulle(3); + $f_period = "Période comptable $label" . $l_form_per; + } + + // Ledger (p_jrn) + //-- + + $add_js = 'onchange="update_pj();update_bank();get_last_date();ajax_saldo(\'first_sold\');update_name();"'; + + if ($g_parameter->MY_DATE_SUGGEST == 'Y') + $add_js = 'onchange="update_pj();update_bank();get_last_date();ajax_saldo(\'first_sold\')";'; + + $wLedger = $this->select_ledger('FIN', 2); + if ($wLedger == null) + exit('Pas de journal disponible'); + + $wLedger->javascript = $add_js; + + $label = " Journal " . HtmlInput::infobulle(2); + $f_jrn = $label . $wLedger->input(); - $max=(isset($nb_item))?$nb_item:MAX_ARTICLE; + // retrieve bank name, code and account from the jrn_def.jrn_def_bank - $r.= HtmlInput::hidden('nb_item',$max); - //-------------------------------------------------- - // financial operation - //------------------------------------------------- + $f_bank = '' . $this->get_bank_name() . ''; + if ($this->bank_id == "") + { + echo h2("Journal de banque non configuré " . $this->get_name(), ' class="error"'); + echo ' vous devez donner à ce journal un compte en banque (fiche), modifiez dans CFGLED'; + alert("Journal de banque non configuré " . $this->get_name()); + } - $array=array(); - // Parse each " tiers" - for ($i=0; $i < $max; $i++) - { - $tiers=(isset(${"e_other".$i}))?${"e_other".$i}:"" - ; - $tiers_amount=(isset(${"e_other$i"."_amount"}))?round(${"e_other$i"."_amount"},2):0; + $f_legend_detail = 'Opérations financières'; + //-------------------------------------------------- + // Saldo begin end + //------------------------------------------------- + // Extrait + $default_pj = ''; + if ($g_parameter->MY_PJ_SUGGEST == 'Y') + { + $default_pj = $this->guess_pj(); + } + $wPJ = new IText('e_pj'); + $wPJ->readonly = false; + $wPJ->size = 10; + $wPJ->value = (isset($e_pj)) ? $e_pj : $default_pj; - $tiers_comment=(isset (${"e_other$i"."_comment"}))?${"e_other$i"."_comment"}:"" - ; - ${"e_other$i"."_amount"}=(isset (${"e_other$i"."_amount"}))?${"e_other$i"."_amount"}:0; + $f_extrait = $wPJ->input() . HtmlInput::hidden('e_pj_suggest', $default_pj); + $label = HtmlInput::infobulle(7); - $W1=new ICard(); - $W1->label=""; - $W1->name="e_other".$i; - $W1->value=$tiers; - $W1->extra='deb'; // credits - $W1->typecard='deb'; - $W1->set_dblclick("fill_ipopcard(this);"); - $W1->set_attribute('ipopup','ipopcard'); + $first_sold = (isset($first_sold)) ? $first_sold : ""; + $wFirst = new INum('first_sold', $first_sold); - // name of the field to update with the name of the card - $W1->set_attribute('label','e_other_name'.$i); - // name of the field to update with the name of the card - $W1->set_attribute('typecard','filter'); - // Add the callback function to filter the card on the jrn - $W1->set_callback('filter_card'); - $W1->set_function('fill_data'); - $W1->javascript=sprintf(' onchange="fill_data_onchange(\'%s\');" ', - $W1->name); - $W1->readonly=$pview_only; - $array[$i]['qcode']=$W1->input(); - $array[$i]['search']=$W1->search(); - - // Card name - // - $card_name=""; - if ( $tiers !="" ) - { - $fiche=new Fiche($this->db); - $fiche->get_by_qcode($tiers); - $card_name=$this->db->get_value("Select ad_value from fiche_detail where ad_id=$1 and f_id=$2", - array(ATTR_DEF_NAME,$fiche->id)); - } - - $wcard_name=new IText("e_other_name".$i,$card_name); - $wcard_name->readOnly=true; - $array[$i]['cname']=$wcard_name->input(); - - // Comment - $wComment=new IText("e_other$i"."_comment",$tiers_comment); - - $wComment->size=35; - $wComment->setReadOnly($pview_only); - $array[$i]['comment']=$wComment->input(); - // amount - $wAmount=new INum("e_other$i"."_amount",$tiers_amount); - - $wAmount->size=7; - $wAmount->setReadOnly($pview_only); - $array[$i]['amount']=$wAmount->input(); - // concerned - ${"e_concerned".$i}=(isset(${"e_concerned".$i}))?${"e_concerned".$i}:"" - ; - $wConcerned=new IConcerned("e_concerned".$i,${"e_concerned".$i}); - $wConcerned->setReadOnly($pview_only); - $wConcerned->amount_id="e_other".$i."_amount"; - - $wConcerned->paid='paid'; - $array[$i]['concerned']=$wConcerned->input(); - } - - ob_start(); - require_once('template/form_ledger_fin.php'); - $r.=ob_get_contents(); - ob_clean(); + $last_sold = isset($last_sold) ? $last_sold : ""; + $wLast = new INum('last_sold', $last_sold); - return $r; + $max = (isset($nb_item)) ? $nb_item : MAX_ARTICLE; - } - /*!\brief show the summary before inserting into the database, it - *calls the function for adding a attachment. The function verify - *should be called before - *\param $p_array an array usually is $_POST - *\return string with code html - */ - public function confirm($p_array,$p_nothing=0) - { - global $g_parameter; - $r=""; - bcscale(2); - extract ($p_array); - $pPeriode=new Periode($this->db); - if ($this->check_periode() == true) - { - $pPeriode->p_id=$periode; - } - else - { - $pPeriode->find_periode($e_date); - } + $r.= HtmlInput::hidden('nb_item', $max); + //-------------------------------------------------- + // financial operation + //------------------------------------------------- - list ($l_date_start,$l_date_end)=$pPeriode->get_date_limit(); - $exercice=$pPeriode->get_exercice(); - $r.=''; - $r.='
Banque, caisse '; + $array = array(); + // Parse each " tiers" + for ($i = 0; $i < $max; $i++) + { + $tiers = (isset(${"e_other" . $i})) ? ${"e_other" . $i} : "" + ; + $tiers_amount = (isset(${"e_other$i" . "_amount"})) ? round(${"e_other$i" . "_amount"}, 2) : 0; + + $tiers_comment = (isset(${"e_other$i" . "_comment"})) ? ${"e_other$i" . "_comment"} : "" + ; + ${"e_other$i" . "_amount"} = (isset(${"e_other$i" . "_amount"})) ? ${"e_other$i" . "_amount"} : 0; + + $W1 = new ICard(); + $W1->label = ""; + $W1->name = "e_other" . $i; + $W1->value = $tiers; + $W1->extra = 'deb'; // credits + $W1->typecard = 'deb'; + $W1->set_dblclick("fill_ipopcard(this);"); + $W1->set_attribute('ipopup', 'ipopcard'); + + // name of the field to update with the name of the card + $W1->set_attribute('label', 'e_other_name' . $i); + // name of the field to update with the name of the card + $W1->set_attribute('typecard', 'filter'); + // Add the callback function to filter the card on the jrn + $W1->set_callback('filter_card'); + $W1->set_function('fill_data'); + $W1->javascript = sprintf(' onchange="fill_data_onchange(\'%s\');" ', $W1->name); + $W1->readonly = $pview_only; + $array[$i]['qcode'] = $W1->input(); + $array[$i]['search'] = $W1->search(); + + // Card name + // + $card_name = ""; + if ($tiers != "") + { + $fiche = new Fiche($this->db); + $fiche->get_by_qcode($tiers); + $card_name = $this->db->get_value("Select ad_value from fiche_detail where ad_id=$1 and f_id=$2", array(ATTR_DEF_NAME, $fiche->id)); + } + + $wcard_name = new IText("e_other_name" . $i, $card_name); + $wcard_name->readOnly = true; + $array[$i]['cname'] = $wcard_name->input(); + + // Comment + $wComment = new IText("e_other$i" . "_comment", $tiers_comment); + + $wComment->size = 35; + $wComment->setReadOnly($pview_only); + $array[$i]['comment'] = $wComment->input(); + // amount + $wAmount = new INum("e_other$i" . "_amount", $tiers_amount); + + $wAmount->size = 7; + $wAmount->setReadOnly($pview_only); + $array[$i]['amount'] = $wAmount->input(); + // concerned + ${"e_concerned" . $i} = (isset(${"e_concerned" . $i})) ? ${"e_concerned" . $i} : "" + ; + $wConcerned = new IConcerned("e_concerned" . $i, ${"e_concerned" . $i}); + $wConcerned->setReadOnly($pview_only); + $wConcerned->amount_id = "e_other" . $i . "_amount"; + + $wConcerned->paid = 'paid'; + $array[$i]['concerned'] = $wConcerned->input(); + } + + ob_start(); + require_once('template/form_ledger_fin.php'); + $r.=ob_get_contents(); + ob_clean(); + + + return $r; + } + + /* !\brief show the summary before inserting into the database, it + * calls the function for adding a attachment. The function verify + * should be called before + * \param $p_array an array usually is $_POST + * \return string with code html + */ + + public function confirm($p_array, $p_nothing = 0) + { + global $g_parameter; + $r = ""; + bcscale(2); + extract($p_array); + $pPeriode = new Periode($this->db); + if ($this->check_periode() == true) + { + $pPeriode->p_id = $periode; + } + else + { + $pPeriode->find_periode($e_date); + } + + list ($l_date_start, $l_date_end) = $pPeriode->get_date_limit(); + $exercice = $pPeriode->get_exercice(); + $r.=''; + $r.='
Banque, caisse '; $r.= '
'; $r.='

' . $this->get_name() . '

'; $r.= '
'; - $r.=''; - // Date - //-- - $r.=""; - $r.='"; - $r.=""; - // Ledger (p_jrn) - //-- - $r.=''; - $r.=''; - $this->id=$p_jrn; - $r.=''; - $r.=''; + $r.='
Date : '.$e_date; - // Periode - //-- - $r.=""; - $r.="Période comptable "; - $r.=$l_date_start.' - '.$l_date_end; - $r.="
Journal '; - $r.=h($this->get_name()); - $r.='
'; + // Date + //-- + $r.=""; + $r.='"; + $r.=""; + // Ledger (p_jrn) + //-- + $r.=''; + $r.=''; + $this->id = $p_jrn; + $r.=''; + $r.=''; - //retrieve bank name - $bk_id=$this->get_bank(); + //retrieve bank name + $bk_id = $this->get_bank(); - $fBank=new Fiche($this->db,$bk_id); - $e_bank_account_label=$this->get_bank_name(); + $fBank = new Fiche($this->db, $bk_id); + $e_bank_account_label = $this->get_bank_name(); - $filter_year=" j_tech_per in (select p_id from parm_periode where p_exercice='".$exercice."')"; + $filter_year = " j_tech_per in (select p_id from parm_periode where p_exercice='" . $exercice . "')"; - $acc_account=new Acc_Account_Ledger($this->db,$fBank->strAttribut(ATTR_DEF_ACCOUNT)); - $solde=$acc_account->get_solde($filter_year); - $new_solde=$solde; + $acc_account = new Acc_Account_Ledger($this->db, $fBank->strAttribut(ATTR_DEF_ACCOUNT)); + $solde = $acc_account->get_solde($filter_year); + $new_solde = $solde; - $r.="
Date : ' . $e_date; + // Periode + //-- + $r.=""; + $r.="Période comptable "; + $r.=$l_date_start . ' - ' . $l_date_end; + $r.="
Journal '; + $r.=h($this->get_name()); + $r.='
Banque "; - $r.=$e_bank_account_label; + $r.="
Banque "; + $r.=$e_bank_account_label; - $r.="
"; + $r.=""; - $r.='
'; + $r.='
'; - $r.='
Opérations financières'; - //-------------------------------------------------- - // Saldo begin end - //------------------------------------------------- - $r.='
Extrait de compte'; - $r.=''; - $r.=''; - // Extrait - //-- - $r.=''.h($e_pj); - $r.=''; - $r.=''; - $r.=''; - $r.=''; - $r.='
Numéro d\'extraitSolde début extrait '.$first_sold.'Solde fin extrait '.$last_sold.'
'; - $r.='
'; + $r.='
Opérations financières'; + //-------------------------------------------------- + // Saldo begin end + //------------------------------------------------- + $r.='
Extrait de compte'; + $r.=''; + $r.=''; + // Extrait + //-- + $r.='' . h($e_pj); + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.='
Numéro d\'extraitSolde début extrait ' . $first_sold . 'Solde fin extrait ' . $last_sold . '
'; + $r.='
'; - //-------------------------------------------------- - // financial operation - //------------------------------------------------- - $r.=''; - $r.=""; - $r.=""; - $r.=""; - $r.=""; - $r.=''; + //-------------------------------------------------- + // financial operation + //------------------------------------------------- + $r.='
NomCommentaireMontant Op. Concernée(s)
'; + $r.=""; + $r.=""; + $r.=""; + $r.=""; + $r.=''; - /* if we use the AC */ - if ($g_parameter->MY_ANALYTIC!='nu') - { - $anc=new Anc_Plan($this->db); - $a_anc=$anc->get_list(); - $x=count($a_anc); - /* set the width of the col */ - $r.=''; + /* if we use the AC */ + if ($g_parameter->MY_ANALYTIC != 'nu') + { + $anc = new Anc_Plan($this->db); + $a_anc = $anc->get_list(); + $x = count($a_anc); + /* set the width of the col */ + $r.=''; - /* add hidden variables pa[] to hold the value of pa_id */ - $r.=Anc_Plan::hidden($a_anc); - } - $r.=""; - // Parse each " tiers" - $tot_amount=0; - //-------------------------------------------------- - // For each items - //-------------------------------------------------- - for ($i=0; $i < $nb_item; $i++) - { + /* add hidden variables pa[] to hold the value of pa_id */ + $r.=Anc_Plan::hidden($a_anc); + } + $r.=""; + // Parse each " tiers" + $tot_amount = 0; + //-------------------------------------------------- + // For each items + //-------------------------------------------------- + for ($i = 0; $i < $nb_item; $i++) + { - $tiers=(isset(${"e_other".$i}))?${"e_other".$i}:"" - ; + $tiers = (isset(${"e_other" . $i})) ? ${"e_other" . $i} : "" + ; - if ( strlen(trim($tiers))==0)continue; - $tiers_label=""; - $tiers_amount=round(${"e_other$i"."_amount"},2); - $tot_amount=bcadd($tot_amount,$tiers_amount); - $tiers_comment=h(${"e_other$i"."_comment"}); - // If $tiers has a value - $fTiers=new Fiche($this->db); - $fTiers->get_by_qcode($tiers); + if (strlen(trim($tiers)) == 0) + continue; + $tiers_label = ""; + $tiers_amount = round(${"e_other$i" . "_amount"}, 2); + $tot_amount = bcadd($tot_amount, $tiers_amount); + $tiers_comment = h(${"e_other$i" . "_comment"}); + // If $tiers has a value + $fTiers = new Fiche($this->db); + $fTiers->get_by_qcode($tiers); - $tiers_label=$fTiers->strAttribut(ATTR_DEF_NAME); + $tiers_label = $fTiers->strAttribut(ATTR_DEF_NAME); - $r.=""; - // label - $r.=''; - // Comment - $r.=''; - // amount - $r.=''; - // concerned - $r.='"; + // label + $r.=''; + // Comment + $r.=''; + // amount + $r.=''; + // concerned + $r.=''; - // encode the pa - if ( $g_parameter->MY_ANALYTIC!='nu' && preg_match("/^[6,7]/",$fTiers->strAttribut(ATTR_DEF_ACCOUNT))==1 ) // use of AA - { - // show form - $anc_op=new Anc_Operation($this->db); - $null=($g_parameter->MY_ANALYTIC=='op')?1:0; - $r.=''; - } + $r.=''; + // encode the pa + if ($g_parameter->MY_ANALYTIC != 'nu' && preg_match("/^[6,7]/", $fTiers->strAttribut(ATTR_DEF_ACCOUNT)) == 1) // use of AA + { + // show form + $anc_op = new Anc_Operation($this->db); + $null = ($g_parameter->MY_ANALYTIC == 'op') ? 1 : 0; + $r.=''; + } - $r.=''; - } - $r.="
NomCommentaireMontant Op. Concernée(s)'._('Compt. Analytique').'' . _('Compt. Analytique') . '
".${'e_other'.$i}."'; - $r.=$fTiers->strAttribut(ATTR_DEF_NAME); - $r.=''.$tiers_comment.''.nbm($tiers_amount).''; - if (${"e_concerned".$i} != '') + $r.="
" . ${'e_other' . $i} . "'; + $r.=$fTiers->strAttribut(ATTR_DEF_NAME); + $r.='' . $tiers_comment . '' . nbm($tiers_amount) . ''; + if (${"e_concerned" . $i} != '') { - $jr_internal=$this->db->get_array("select jr_internal from jrn where jr_id in (".${"e_concerned".$i}.")"); - for ($x=0;$xdb->get_array("select jr_internal from jrn where jr_id in (" . ${"e_concerned" . $i} . ")"); + for ($x = 0; $x < count($jr_internal); $x++) { - $r.=HtmlInput::detail_op(${"e_concerned".$i},$jr_internal[$x]['jr_internal']); + $r.=HtmlInput::detail_op(${"e_concerned" . $i}, $jr_internal[$x]['jr_internal']); } } - $r.=''; - $p_mode=1; - $p_array['pa_id']=$a_anc; - /* op is the operation it contains either a sequence or a jrnx.j_id */ - $r.=HtmlInput::hidden('op[]=',$i); - $r.=$anc_op->display_form_plan($p_array,$null,$p_mode,$i,$tiers_amount); - $r.=''; + $p_mode = 1; + $p_array['pa_id'] = $a_anc; + /* op is the operation it contains either a sequence or a jrnx.j_id */ + $r.=HtmlInput::hidden('op[]=', $i); + $r.=$anc_op->display_form_plan($p_array, $null, $p_mode, $i, $tiers_amount); + $r.='
"; + $r.=''; + } + $r.=""; - // saldo - $r.='
Ancien solde = '.$solde; - $new_solde+=$tot_amount; - $r.='
Nouveau solde = '.$new_solde; - $r.='
Difference ='.$tot_amount; - // check for upload piece - $file=new IFile(); + // saldo + $r.='
Ancien solde = ' . $solde; + $new_solde+=$tot_amount; + $r.='
Nouveau solde = ' . $new_solde; + $r.='
Difference =' . $tot_amount; + // check for upload piece + $file = new IFile(); - $r.="
Ajoutez une pièce justificative "; - $r.=$file->input("pj",""); + $r.="
Ajoutez une pièce justificative "; + $r.=$file->input("pj", ""); - $r.='
'; - //-------------------------------------------------- - // Hidden variables - //-------------------------------------------------- - $r.=dossier::hidden(); - $r.=HtmlInput::hidden('p_jrn',$this->id); - $r.=HtmlInput::hidden('nb_item',$nb_item); - $r.=HtmlInput::hidden('last_sold',$last_sold); - $r.=HtmlInput::hidden('first_sold',$first_sold); - $r.=HtmlInput::hidden('e_pj',$e_pj); - $r.=HtmlInput::hidden('e_pj_suggest',$e_pj_suggest); - $r.=HtmlInput::hidden('e_date',$e_date); - $mt=microtime(true); - $r.=HtmlInput::hidden('mt',$mt); + $r.='
'; + //-------------------------------------------------- + // Hidden variables + //-------------------------------------------------- + $r.=dossier::hidden(); + $r.=HtmlInput::hidden('p_jrn', $this->id); + $r.=HtmlInput::hidden('nb_item', $nb_item); + $r.=HtmlInput::hidden('last_sold', $last_sold); + $r.=HtmlInput::hidden('first_sold', $first_sold); + $r.=HtmlInput::hidden('e_pj', $e_pj); + $r.=HtmlInput::hidden('e_pj_suggest', $e_pj_suggest); + $r.=HtmlInput::hidden('e_date', $e_date); + $mt = microtime(true); + $r.=HtmlInput::hidden('mt', $mt); - if (isset($periode)) $r.=HtmlInput::hidden('periode',$periode); - $r.=dossier::hidden(); - $r.=HtmlInput::hidden('sa','n'); - for ($i=0; $i < $nb_item; $i++) - { - $tiers=(isset(${"e_other".$i}))?${"e_other".$i}:"" - ; - $r.=HtmlInput::hidden('e_other'.$i,$tiers); - $r.=HtmlInput::hidden('e_other'.$i.'_comment',${'e_other'.$i.'_comment'}); - $r.=HtmlInput::hidden('e_other'.$i.'_amount',${'e_other'.$i.'_amount'}); - $r.=HtmlInput::hidden('e_concerned'.$i,${'e_concerned'.$i}); - } + if (isset($periode)) + $r.=HtmlInput::hidden('periode', $periode); + $r.=dossier::hidden(); + $r.=HtmlInput::hidden('sa', 'n'); + for ($i = 0; $i < $nb_item; $i++) + { + $tiers = (isset(${"e_other" . $i})) ? ${"e_other" . $i} : "" + ; + $r.=HtmlInput::hidden('e_other' . $i, $tiers); + $r.=HtmlInput::hidden('e_other' . $i . '_comment', ${'e_other' . $i . '_comment'}); + $r.=HtmlInput::hidden('e_other' . $i . '_amount', ${'e_other' . $i . '_amount'}); + $r.=HtmlInput::hidden('e_concerned' . $i, ${'e_concerned' . $i}); + } - return $r; - } - /*!\brief save the data into the database, included the attachment, - *and the reconciliations - *\param $p_array usually $_POST - *\return string with HTML code - */ - public function insert($p_array=null) - { - global $g_parameter; + return $r; + } + + /* !\brief save the data into the database, included the attachment, + * and the reconciliations + * \param $p_array usually $_POST + * \return string with HTML code + */ + + public function insert($p_array = null) + { + global $g_parameter; bcscale(2); - $internal_code=""; - $oid=0; - extract ($p_array); - $ret=''; - // Debit = banque - $bank_id=$this->get_bank(); - $fBank=new Fiche($this->db,$bank_id); - $e_bank_account=$fBank->strAttribut(ATTR_DEF_QUICKCODE); - // Get the saldo - $pPeriode=new Periode($this->db); - if ( $this->check_periode() == true ) - { - $pPeriode->p_id=$periode; - } - else - { - $pPeriode->find_periode($e_date); - } - $exercice=$pPeriode->get_exercice(); + $internal_code = ""; + $oid = 0; + extract($p_array); + $ret = ''; + // Debit = banque + $bank_id = $this->get_bank(); + $fBank = new Fiche($this->db, $bank_id); + $e_bank_account = $fBank->strAttribut(ATTR_DEF_QUICKCODE); + // Get the saldo + $pPeriode = new Periode($this->db); + if ($this->check_periode() == true) + { + $pPeriode->p_id = $periode; + } + else + { + $pPeriode->find_periode($e_date); + } + $exercice = $pPeriode->get_exercice(); - $filter_year=" j_tech_per in (select p_id from parm_periode where p_exercice='".$exercice."')"; - $sposte=$fBank->strAttribut(ATTR_DEF_ACCOUNT); - // if 2 accounts, take only the debit one for customer - if ( strpos($sposte,',') != 0 ) - { - $array=explode(',',$sposte); - $poste_val=$array[0]; - } - else - { - $poste_val=$sposte; - } + $filter_year = " j_tech_per in (select p_id from parm_periode where p_exercice='" . $exercice . "')"; + $sposte = $fBank->strAttribut(ATTR_DEF_ACCOUNT); + // if 2 accounts, take only the debit one for customer + if (strpos($sposte, ',') != 0) + { + $array = explode(',', $sposte); + $poste_val = $array[0]; + } + else + { + $poste_val = $sposte; + } - $acc_account=new Acc_Account_Ledger($this->db,$poste_val); - $solde=$acc_account->get_solde($filter_year); - $new_solde=$solde; + $acc_account = new Acc_Account_Ledger($this->db, $poste_val); + $solde = $acc_account->get_solde($filter_year); + $new_solde = $solde; - try - { - $this->db->start(); - $amount=0.0; - $idx_operation=0; - $ret=''; - $ret.=tr(th('n° interne').th('Quick Code').th('Nom').th('Libellé').th('Montant',' style="text-align:right"')); - // Credit = goods - for ( $i = 0; $i < $nb_item;$i++) - { - // if tiers is set and amount != 0 insert it into the database - // and quit the loop ? - if ( strlen(trim(${"e_other$i"}))==0 ) continue; - $fPoste=new Fiche($this->db); - $fPoste->get_by_qcode(${"e_other$i"}); + try + { + $this->db->start(); + $amount = 0.0; + $idx_operation = 0; + $ret = '
'; + $ret.=tr(th('n° interne') . th('Quick Code') . th('Nom') . th('Libellé') . th('Montant', ' style="text-align:right"')); + // Credit = goods + for ($i = 0; $i < $nb_item; $i++) + { + // if tiers is set and amount != 0 insert it into the database + // and quit the loop ? + if (strlen(trim(${"e_other$i"})) == 0) + continue; + $fPoste = new Fiche($this->db); + $fPoste->get_by_qcode(${"e_other$i"}); - // round it - ${"e_other$i"."_amount"}=round( ${"e_other$i"."_amount"},2); + // round it + ${"e_other$i" . "_amount"} = round(${"e_other$i" . "_amount"}, 2); - $amount+=${"e_other$i"."_amount"}; - // Record a line for the bank - // Compute the j_grpt - $seq=$this->db->get_next_seq('s_grpt'); + $amount+=${"e_other$i" . "_amount"}; + // Record a line for the bank + // Compute the j_grpt + $seq = $this->db->get_next_seq('s_grpt'); - $acc_operation=new Acc_Operation($this->db); - $acc_operation->date=$e_date; - $sposte=$fPoste->strAttribut(ATTR_DEF_ACCOUNT); - // if 2 accounts - if ( strpos($sposte,',') != 0 ) - { - $array=explode(',',$sposte); - if ( ${"e_other$i"."_amount"} < 0 ) - $poste_val=$array[1]; - else - $poste_val=$array[0]; - } - else - { - $poste_val=$sposte; - } + $acc_operation = new Acc_Operation($this->db); + $acc_operation->date = $e_date; + $sposte = $fPoste->strAttribut(ATTR_DEF_ACCOUNT); + // if 2 accounts + if (strpos($sposte, ',') != 0) + { + $array = explode(',', $sposte); + if (${"e_other$i" . "_amount"} < 0) + $poste_val = $array[1]; + else + $poste_val = $array[0]; + } + else + { + $poste_val = $sposte; + } - $acc_operation->poste=$poste_val; - $acc_operation->amount=${"e_other$i"."_amount"}*(-1); - $acc_operation->grpt=$seq; - $acc_operation->jrn=$p_jrn; - $acc_operation->type='d'; + $acc_operation->poste = $poste_val; + $acc_operation->amount = ${"e_other$i" . "_amount"} * (-1); + $acc_operation->grpt = $seq; + $acc_operation->jrn = $p_jrn; + $acc_operation->type = 'd'; - if ( isset($periode)) - $tperiode=$periode; - else - { - $per=new Periode($this->db); - $tperiode=$per->find_periode($e_date); + if (isset($periode)) + $tperiode = $periode; + else + { + $per = new Periode($this->db); + $tperiode = $per->find_periode($e_date); + } + $acc_operation->periode = $tperiode; + $acc_operation->qcode = ${"e_other" . $i}; + $j_id = $acc_operation->insert_jrnx(); - } - $acc_operation->periode=$tperiode; - $acc_operation->qcode=${"e_other".$i}; - $j_id=$acc_operation->insert_jrnx(); + $acc_operation = new Acc_Operation($this->db); + $acc_operation->date = $e_date; + $sposte = $fBank->strAttribut(ATTR_DEF_ACCOUNT); - $acc_operation=new Acc_Operation($this->db); - $acc_operation->date=$e_date; - $sposte=$fBank->strAttribut(ATTR_DEF_ACCOUNT); + // if 2 accounts + if (strpos($sposte, ',') != 0) + { + $array = explode(',', $sposte); + if (${"e_other$i" . "_amount"} < 0) + $poste_val = $array[1]; + else + $poste_val = $array[0]; + } + else + { + $poste_val = $sposte; + } - // if 2 accounts - if ( strpos($sposte,',') != 0 ) - { - $array=explode(',',$sposte); - if ( ${"e_other$i"."_amount"} < 0 ) - $poste_val=$array[1]; - else - $poste_val=$array[0]; - } - else - { - $poste_val=$sposte; - } - - $acc_operation->poste=$poste_val; - $acc_operation->amount=${"e_other$i"."_amount"}; - $acc_operation->grpt=$seq; - $acc_operation->jrn=$p_jrn; - $acc_operation->type='d'; - $acc_operation->periode=$tperiode; - $acc_operation->qcode=$e_bank_account; - $acc_operation->insert_jrnx(); + $acc_operation->poste = $poste_val; + $acc_operation->amount = ${"e_other$i" . "_amount"}; + $acc_operation->grpt = $seq; + $acc_operation->jrn = $p_jrn; + $acc_operation->type = 'd'; + $acc_operation->periode = $tperiode; + $acc_operation->qcode = $e_bank_account; + $acc_operation->insert_jrnx(); - if ( sql_string(${"e_other$i"."_comment"}) == null ) - { - // if comment is blank set a default one - $comment=" compte : ".$fBank->strAttribut(ATTR_DEF_NAME).' a '. - $fPoste->strAttribut(ATTR_DEF_NAME); - } - else - { - $comment=${'e_other'.$i.'_comment'}; - } + if (sql_string(${"e_other$i" . "_comment"}) == null) + { + // if comment is blank set a default one + $comment = " compte : " . $fBank->strAttribut(ATTR_DEF_NAME) . ' a ' . + $fPoste->strAttribut(ATTR_DEF_NAME); + } + else + { + $comment = ${'e_other' . $i . '_comment'}; + } - $acc_operation=new Acc_Operation($this->db); - $acc_operation->jrn=$p_jrn; - $acc_operation->amount=abs(${"e_other$i"."_amount"}); - $acc_operation->date=$e_date; - $acc_operation->desc=$comment; - $acc_operation->grpt=$seq; - $acc_operation->periode=$tperiode; - $acc_operation->mt=$mt; - $idx_operation++; - $acc_operation->pj=''; + $acc_operation = new Acc_Operation($this->db); + $acc_operation->jrn = $p_jrn; + $acc_operation->amount = abs(${"e_other$i" . "_amount"}); + $acc_operation->date = $e_date; + $acc_operation->desc = $comment; + $acc_operation->grpt = $seq; + $acc_operation->periode = $tperiode; + $acc_operation->mt = $mt; + $idx_operation++; + $acc_operation->pj = ''; - if ( trim($e_pj) != '' && $this->numb_operation()==true) - $acc_operation->pj=$e_pj.str_pad($idx_operation,3,0,STR_PAD_LEFT); + if (trim($e_pj) != '' && $this->numb_operation() == true) + $acc_operation->pj = $e_pj . str_pad($idx_operation, 3, 0, STR_PAD_LEFT); - if ( trim($e_pj) != '' && $this->numb_operation()==false) - $acc_operation->pj=$e_pj; + if (trim($e_pj) != '' && $this->numb_operation() == false) + $acc_operation->pj = $e_pj; - $jr_id=$acc_operation->insert_jrn(); - // $acc_operation->set_pj(); - $this->db->exec_sql('update jrn set jr_pj_number=$1 where jr_id=$2', - array($acc_operation->pj,$jr_id)); - $internal=$this->compute_internal_code($seq); + $jr_id = $acc_operation->insert_jrn(); + // $acc_operation->set_pj(); + $this->db->exec_sql('update jrn set jr_pj_number=$1 where jr_id=$2', array($acc_operation->pj, $jr_id)); + $internal = $this->compute_internal_code($seq); - if ( trim(${"e_concerned".$i}) != "" ) - { - if ( strpos(${"e_concerned".$i},',') != 0 ) - { - $aRapt=explode(',',${"e_concerned".$i}); - foreach ($aRapt as $rRapt) - { - // Add a "concerned operation to bound these op.together - // - $rec=new Acc_Reconciliation ($this->db); - $rec->set_jr_id($jr_id); + if (trim(${"e_concerned" . $i}) != "") + { + if (strpos(${"e_concerned" . $i}, ',') != 0) + { + $aRapt = explode(',', ${"e_concerned" . $i}); + foreach ($aRapt as $rRapt) + { + // Add a "concerned operation to bound these op.together + // + $rec = new Acc_Reconciliation($this->db); + $rec->set_jr_id($jr_id); - if ( isNumber($rRapt) == 1 ) - { - $rec->insert($rRapt); - } - } - } - else - if ( isNumber(${"e_concerned".$i}) == 1 ) - { - $rec=new Acc_Reconciliation ($this->db); - $rec->set_jr_id($jr_id); - $rec->insert(${"e_concerned$i"}); - } - } + if (isNumber($rRapt) == 1) + { + $rec->insert($rRapt); + } + } + } + else + if (isNumber(${"e_concerned" . $i}) == 1) + { + $rec = new Acc_Reconciliation($this->db); + $rec->set_jr_id($jr_id); + $rec->insert(${"e_concerned$i"}); + } + } - // Set Internal code - $this->grpt_id=$seq; - /** - * save also into quant_fin - */ - $this->insert_quant_fin($fBank->id,$jr_id,$fPoste->id,${"e_other$i"."_amount"}); + // Set Internal code + $this->grpt_id = $seq; + /** + * save also into quant_fin + */ + $this->insert_quant_fin($fBank->id, $jr_id, $fPoste->id, ${"e_other$i" . "_amount"}); - if ( $g_parameter->MY_ANALYTIC != "nu" ) - { - // for each item, insert into operation_analytique */ - $op=new Anc_Operation($this->db); - $op->oa_group=$this->db->get_next_seq("s_oa_group"); /* for analytic */ - $op->j_id=$j_id; - $op->oa_date=$e_date; - $op->oa_debit=($amount < 0 )?'t':'f'; - $op->oa_description=sql_string($comment); - $op->save_form_plan($_POST,$i,$j_id); - } + if ($g_parameter->MY_ANALYTIC != "nu") + { + // for each item, insert into operation_analytique */ + $op = new Anc_Operation($this->db); + $op->oa_group = $this->db->get_next_seq("s_oa_group"); /* for analytic */ + $op->j_id = $j_id; + $op->oa_date = $e_date; + $op->oa_debit = ($amount < 0 ) ? 't' : 'f'; + $op->oa_description = sql_string($comment); + $op->save_form_plan($_POST, $i, $j_id); + } - $this->update_internal_code($internal); + $this->update_internal_code($internal); - $js_detail= HtmlInput::detail_op($jr_id, $internal); + $js_detail = HtmlInput::detail_op($jr_id, $internal); // Compute display - $row=td($js_detail).td(${"e_other$i"}).td($fPoste->strAttribut(ATTR_DEF_NAME)).td(${"e_other".$i."_comment"}).td(nbm(${"e_other$i"."_amount"}),'class="num"'); + $row = td($js_detail) . td(${"e_other$i"}) . td($fPoste->strAttribut(ATTR_DEF_NAME)) . td(${"e_other" . $i . "_comment"}) . td(nbm(${"e_other$i" . "_amount"}), 'class="num"'); - $ret.=tr($row); + $ret.=tr($row); - if ( $i == 0 ) - { - // first record we upload the files and - // keep variable to update other row of jrn - if ( isset ($_FILES)) - $oid=$this->db->save_upload_document($seq); + if ($i == 0) + { + // first record we upload the files and + // keep variable to update other row of jrn + if (isset($_FILES)) + $oid = $this->db->save_upload_document($seq); + } + else + { + if ($oid != 0) + { + $this->db->exec_sql("update jrn set jr_pj=" . $oid . ", jr_pj_name='" . $_FILES['pj']['name'] . "', " . + "jr_pj_type='" . $_FILES['pj']['type'] . "' where jr_grpt_id=$seq"); + } + } + } // for nbitem + // increment pj + if (strlen(trim($e_pj)) != 0) + { + $this->inc_seq_pj(); + } + $ret.='
'; + } + catch (Exception $e) + { + echo '' . + 'Erreur dans l\'enregistrement ' . + __FILE__ . ':' . __LINE__ . ' ' . + $e->getMessage(); + $this->db->rollback(); + exit(); + } + $this->db->commit(); + $r = ""; + $r.="
Ancien solde " . nbm($solde); + $new_solde = bcadd($new_solde, $amount); + $r.="
Nouveau solde " . nbm($new_solde); + $ret.=$r; + return $ret; + } - } - else - { - if ( $oid != 0 ) - { - $this->db->exec_sql("update jrn set jr_pj=".$oid.", jr_pj_name='".$_FILES['pj']['name']."', ". - "jr_pj_type='".$_FILES['pj']['type']."' where jr_grpt_id=$seq"); - } - } + /* !\brief display operation of a FIN ledger + * \return html code into a string + */ - } // for nbitem - // increment pj - if ( strlen(trim($e_pj)) !=0 ) - { - $this->inc_seq_pj(); - } - $ret.=''; - } - catch (Exception $e) - { - echo ''. - 'Erreur dans l\'enregistrement '. - __FILE__.':'.__LINE__.' '. - $e->getMessage(); - $this->db->rollback(); - exit(); + function show_ledger() + { + global $g_user; + echo dossier::hidden(); + $hid = new IHidden(); - } - $this->db->commit(); - $r=""; - $r.="
Ancien solde ".nbm($solde); - $new_solde=bcadd($new_solde,$amount); - $r.="
Nouveau solde ".nbm($new_solde); - $ret.=$r; - return $ret; - } - /*!\brief display operation of a FIN ledger - *\return html code into a string - */ - function show_ledger() - { - global $g_user; - echo dossier::hidden(); - $hid=new IHidden(); - - $hid->name="p_action"; - $hid->value="bank"; - echo $hid->input(); + $hid->name = "p_action"; + $hid->value = "bank"; + echo $hid->input(); - $hid->name="sa"; - $hid->value="l"; - echo $hid->input(); + $hid->name = "sa"; + $hid->value = "l"; + echo $hid->input(); - $w=new ISelect(); - // filter on the current year - $filter_year=" where p_exercice='".$g_user->get_exercice()."'"; + $w = new ISelect(); + // filter on the current year + $filter_year = " where p_exercice='" . $g_user->get_exercice() . "'"; - $periode_start=$this->db->make_array("select p_id,to_char(p_start,'DD-MM-YYYY') from parm_periode $filter_year order by p_start,p_end",1); - // User is already set User=new User($this->db); - $current=(isset($_GET['p_periode']))?$_GET['p_periode']:-1; - $w->selected=$current; + $periode_start = $this->db->make_array("select p_id,to_char(p_start,'DD-MM-YYYY') from parm_periode $filter_year order by p_start,p_end", 1); + // User is already set User=new User($this->db); + $current = (isset($_GET['p_periode'])) ? $_GET['p_periode'] : -1; + $w->selected = $current; - echo '
'; - echo 'Période '.$w->input("p_periode",$periode_start); - $wLedger=$this->select_ledger('fin',3); + echo ''; + echo 'Période ' . $w->input("p_periode", $periode_start); + $wLedger = $this->select_ledger('fin', 3); - if ($wLedger == null) exit (_('Pas de journal disponible')); + if ($wLedger == null) + exit(_('Pas de journal disponible')); - if ( count($wLedger->value) > 1) - { - $aValue=$wLedger->value; - $wLedger->value[0]=array('value'=>-1,'label'=>_('Tous les journaux financiers')); - $idx=1; - foreach ($aValue as $a) - { - $wLedger->value[$idx]=$a; - $idx++; - } - } + if (count($wLedger->value) > 1) + { + $aValue = $wLedger->value; + $wLedger->value[0] = array('value' => -1, 'label' => _('Tous les journaux financiers')); + $idx = 1; + foreach ($aValue as $a) + { + $wLedger->value[$idx] = $a; + $idx++; + } + } - echo 'Journal '.$wLedger->input(); - $w=new ICard(); - $w->noadd='no'; - $w->jrn=$this->id; - $qcode=(isset($_GET['qcode']))?$_GET['qcode']:""; - echo dossier::hidden(); - echo HtmlInput::hidden('p_action','bank'); - echo HtmlInput::hidden('sa','l'); - $w->name='qcode'; - $w->value=$qcode; - $w->label=''; - $this->type='FIN'; - $all=$this->get_all_fiche_def(); - $w->extra=$all; - $w->extra2='QuickCode'; - $sp=new ISpan(); - echo $sp->input("qcode_label","",$qcode); - echo $w->input(); + echo 'Journal ' . $wLedger->input(); + $w = new ICard(); + $w->noadd = 'no'; + $w->jrn = $this->id; + $qcode = (isset($_GET['qcode'])) ? $_GET['qcode'] : ""; + echo dossier::hidden(); + echo HtmlInput::hidden('p_action', 'bank'); + echo HtmlInput::hidden('sa', 'l'); + $w->name = 'qcode'; + $w->value = $qcode; + $w->label = ''; + $this->type = 'FIN'; + $all = $this->get_all_fiche_def(); + $w->extra = $all; + $w->extra2 = 'QuickCode'; + $sp = new ISpan(); + echo $sp->input("qcode_label", "", $qcode); + echo $w->input(); - echo HtmlInput::submit('gl_submit',_('Rechercher')); - echo '
'; + echo HtmlInput::submit('gl_submit', _('Rechercher')); + echo ''; - // Show list of sell - // Date - date of payment - Customer - amount - if ( $current != -1 ) - { - $filter_per=" and jr_tech_per=".$current; - } - else - { - $filter_per=" and jr_tech_per in (select p_id from parm_periode where p_exercice::integer=". - $g_user->get_exercice().")"; - } - /* security */ - if( $this->id != -1) - $available_ledger=" and jr_def_id= ".$this->id." and ".$g_user->get_ledger_sql(); - else - $available_ledger=" and ".$g_user->get_ledger_sql(); - // Show list of sell - // Date - date of payment - Customer - amount - $sql=SQL_LIST_ALL_INVOICE.$filter_per." and jr_def_type='FIN'". - " $available_ledger" ; - $step=$_SESSION['g_pagesize']; - $page=(isset($_GET['offset']))?$_GET['page']:1; - $offset=(isset($_GET['offset']))?$_GET['offset']:0; + // Show list of sell + // Date - date of payment - Customer - amount + if ($current != -1) + { + $filter_per = " and jr_tech_per=" . $current; + } + else + { + $filter_per = " and jr_tech_per in (select p_id from parm_periode where p_exercice::integer=" . + $g_user->get_exercice() . ")"; + } + /* security */ + if ($this->id != -1) + $available_ledger = " and jr_def_id= " . $this->id . " and " . $g_user->get_ledger_sql(); + else + $available_ledger = " and " . $g_user->get_ledger_sql(); + // Show list of sell + // Date - date of payment - Customer - amount + $sql = SQL_LIST_ALL_INVOICE . $filter_per . " and jr_def_type='FIN'" . + " $available_ledger"; + $step = $_SESSION['g_pagesize']; + $page = (isset($_GET['offset'])) ? $_GET['page'] : 1; + $offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; - $l=""; + $l = ""; - // check if qcode contains something - if ( $qcode != "" ) - { - // add a condition to filter on the quick code - $l=" and jr_grpt_id in (select j_grpt from jrnx where j_qcode=upper('$qcode')) "; - } + // check if qcode contains something + if ($qcode != "") + { + // add a condition to filter on the quick code + $l = " and jr_grpt_id in (select j_grpt from jrnx where j_qcode=upper('$qcode')) "; + } - list($max_line,$list)=ListJrn($this->db,"where jrn_def_type='FIN' $filter_per $l $available_ledger " - ,null,$offset,0); - $bar=jrn_navigation_bar($offset,$max_line,$step,$page); + list($max_line, $list) = ListJrn($this->db, "where jrn_def_type='FIN' $filter_per $l $available_ledger " + , null, $offset, 0); + $bar = jrn_navigation_bar($offset, $max_line, $step, $page); - echo "
$bar"; - echo $list; - echo "$bar
"; - } - /** - * return a string with the bank account, name and quick_code - */ - function get_bank_name() - { - $this->bank_id=$this->db->get_value('select jrn_def_bank from jrn_def where jrn_def_id=$1', - array($this->id)); - $fBank=new Fiche($this->db,$this->bank_id); - $e_bank_account=" : ".$fBank->strAttribut(ATTR_DEF_BQ_NO); - $e_bank_name=" : ".$fBank->strAttribut(ATTR_DEF_NAME); - $e_bank_qcode=": ".$fBank->strAttribut(ATTR_DEF_QUICKCODE); - return $e_bank_qcode.$e_bank_name.$e_bank_account; - } - /** - *return the fiche_id of the bank - */ - function get_bank() - { - $bank_id=$this->db->get_value('select jrn_def_bank from jrn_def where jrn_def_id=$1', - array($this->id)); - return $bank_id; - } - /** - *return true is we numbere each operation - */ - function numb_operation() - { - $a=$this->db->get_value('select jrn_def_num_op from jrn_def where jrn_def_id=$1', - array($this->id)); - if ($a==1) return true; - return false; - } - /** - * insert into the quant_fin table - *@param $bank_id is the f_id of the bank - *@param $jr_id is the jrn.jr_id of the operation - *@param $other is the f_id of the benefit - *@param $amount is the amount - */ - function insert_quant_fin($p_bankid,$p_jrid,$p_otherid,$p_amount) - { - $sql="INSERT INTO quant_fin(qf_bank, jr_id, qf_other, qf_amount) + echo "
$bar"; + echo $list; + echo "$bar
"; + } + + /** + * return a string with the bank account, name and quick_code + */ + function get_bank_name() + { + $this->bank_id = $this->db->get_value('select jrn_def_bank from jrn_def where jrn_def_id=$1', array($this->id)); + $fBank = new Fiche($this->db, $this->bank_id); + $e_bank_account = " : " . $fBank->strAttribut(ATTR_DEF_BQ_NO); + $e_bank_name = " : " . $fBank->strAttribut(ATTR_DEF_NAME); + $e_bank_qcode = ": " . $fBank->strAttribut(ATTR_DEF_QUICKCODE); + return $e_bank_qcode . $e_bank_name . $e_bank_account; + } + + /** + * return the fiche_id of the bank + */ + function get_bank() + { + $bank_id = $this->db->get_value('select jrn_def_bank from jrn_def where jrn_def_id=$1', array($this->id)); + return $bank_id; + } + + /** + * return true is we numbere each operation + */ + function numb_operation() + { + $a = $this->db->get_value('select jrn_def_num_op from jrn_def where jrn_def_id=$1', array($this->id)); + if ($a == 1) + return true; + return false; + } + + /** + * insert into the quant_fin table + * @param $bank_id is the f_id of the bank + * @param $jr_id is the jrn.jr_id of the operation + * @param $other is the f_id of the benefit + * @param $amount is the amount + */ + function insert_quant_fin($p_bankid, $p_jrid, $p_otherid, $p_amount) + { + $sql = "INSERT INTO quant_fin(qf_bank, jr_id, qf_other, qf_amount) VALUES ($1, $2, $3, $4);"; - $this->db->exec_sql($sql,array($p_bankid,$p_jrid,$p_otherid,round($p_amount,2))); - } + $this->db->exec_sql($sql, array($p_bankid, $p_jrid, $p_otherid, round($p_amount, 2))); + } + }