コード例 #1
0
ファイル: class_ibutton.php プロジェクト: Kloadut/noalyss_ynh
 static function show_calc()
 {
     $calc = new IButton('shcalc');
     $calc->label = _('Calculatrice');
     $calc->javascript = "show_calc()";
     return $calc->input();
 }
コード例 #2
0
 /**
  * @brief get a list
  * @parameter $p_cn database connection
  * @return array of data from document_type
  */
 static function get_list($p_cn)
 {
     $sql = "select * from document_type order by dt_value";
     $r = $p_cn->get_array($sql);
     $array = array();
     for ($i = 0; $i < count($r); $i++) {
         $tmp['dt_value'] = $r[$i]['dt_value'];
         $tmp['dt_prefix'] = $r[$i]['dt_prefix'];
         $bt = new IButton('M' . $r[$i]['dt_id']);
         $bt->label = _('Modifier');
         $bt->javascript = "cat_doc_change('" . $r[$i]['dt_id'] . "','" . Dossier::id() . "');";
         $tmp['js_mod'] = $bt->input();
         $tmp['dt_id'] = $r[$i]['dt_id'];
         $bt = new IButton('X' . $r[$i]['dt_id']);
         $bt->label = _('Effacer');
         $bt->javascript = "confirm_box('X{$r[$i]['dt_id']}','" . _('Vous confirmez') . "',";
         $bt->javascript .= "function () { cat_doc_remove('{$r[$i]['dt_id']}','" . Dossier::id() . "');})";
         $tmp['js_remove'] = $bt->input();
         $array[$i] = $tmp;
     }
     return $array;
 }
コード例 #3
0
 /**
  *@brief display a form for modifying or add a forecast
  *@return HTML code
  */
 public function form_item()
 {
     $forecast = new Forecast($this->cn, $this->f_id);
     $forecast->load();
     $str_name = $forecast->get_parameter('name');
     $str_start = $forecast->get_parameter('start_date');
     $str_end = $forecast->get_parameter('end_date');
     $r = "";
     $str_action = _("Elements");
     $cat = new Forecast_Cat($this->cn);
     $array = $cat->make_array($this->f_id);
     $periode = new Periode($this->cn);
     $aPeriode = $this->cn->make_array("select p_id,to_char(p_start,'MM.YYYY') as label from parm_periode\n                                  where p_start >= (select p_start from parm_periode where p_id={$str_start})\n                                   and p_end <= (select p_end from parm_periode where p_id={$str_end})\n\t\t\t\t   order by p_start");
     $aPeriode[] = array('value' => 0, 'label' => 'Mensuel');
     $value = $this->cn->get_array("select fi_id,fi_text,fi_account,fi_card,fc_id,fi_amount,fi_debit,fi_pid " . " from forecast_item " . " \twhere fc_id in (select fc_id from forecast_cat where f_id = \$1)", array($this->f_id));
     $max = count($value) < MAX_FORECAST_ITEM ? MAX_FORECAST_ITEM : count($value);
     $r .= HtmlInput::hidden('nbrow', $max);
     for ($i = 0; $i < $max; $i++) {
         if (isset($value[$i]['fi_id'])) {
             $r .= HtmlInput::hidden('fi_id' . $i, $value[$i]['fi_id']);
         }
         /* category*/
         $category = new ISelect();
         $category->name = 'an_cat' . $i;
         $category->value = $array;
         $category->selected = isset($value[$i]["fc_id"]) ? $value[$i]["fc_id"] : -1;
         $aCat[$i]['cat'] = $category->input();
         /* amount 	 */
         $amount = new INum('an_cat_amount' . $i);
         $amount->value = isset($value[$i]["fi_amount"]) ? $value[$i]["fi_amount"] : 0;
         $aCat[$i]['amount'] = $amount->input();
         /* Accounting*/
         $account = new IPoste('an_cat_acc' . $i);
         $account->set_attribute('ipopup', 'ipop_account');
         //            $account->set_attribute('label','an_label'.$i);
         $account->set_attribute('account', 'an_cat_acc' . $i);
         $account->set_attribute('bracket', 1);
         $account->set_attribute('no_overwrite', 1);
         $account->set_attribute('noquery', 1);
         $account->css_size = "85%";
         $account->value = isset($value[$i]["fi_account"]) ? $value[$i]["fi_account"] : "";
         $aCat[$i]['account'] = $account->input();
         /*Quick Code */
         $qc = new ICard('an_qc' . $i);
         // If double click call the javascript fill_ipopcard
         $qc->set_dblclick("fill_ipopcard(this);");
         // This attribute is mandatory, it is the name of the IPopup
         $qc->set_attribute('ipopup', 'ipopcard');
         // name of the field to update with the name of the card
         $qc->set_attribute('label', 'an_label' . $i);
         // Type of card : all
         $qc->set_attribute('typecard', 'all');
         $qc->set_attribute('jrn', 0);
         $qc->extra = 'all';
         // when value selected in the autcomplete
         $qc->set_function('fill_data');
         if (isset($value[$i]["fi_card"])) {
             $f = new Fiche($this->cn, $value[$i]["fi_card"]);
             $qc->value = $f->strAttribut(ATTR_DEF_QUICKCODE);
         }
         $aCat[$i]['qc'] = $qc->search() . $qc->input();
         /* Label */
         $label = new IText('an_label' . $i);
         $label->value = isset($value[$i]["fi_text"]) ? $value[$i]["fi_text"] : "";
         $aCat[$i]['name'] = $label->input();
         //Deb or Cred
         $deb = new ISelect('an_deb' . $i);
         $deb->selected = isset($value[$i]["fi_debit"]) ? $value[$i]["fi_debit"] : -1;
         $deb->value = array(array('value' => 'D', 'label' => _('Débit')), array('value' => 'C', 'label' => _('Crédit')));
         $aCat[$i]['deb'] = $deb->input();
         //Periode
         $isPeriode = new ISelect('month' . $i);
         $isPeriode->value = $aPeriode;
         $isPeriode->selected = isset($value[$i]["fi_pid"]) ? $value[$i]["fi_pid"] : 0;
         $aCat[$i]['per'] = $isPeriode->input();
     }
     $add_row = new IButton('add_row');
     $add_row->label = _('Ajouter une ligne');
     $add_row->javascript = 'for_add_row(\'fortable\')';
     $f_add_row = $add_row->input();
     ob_start();
     require_once NOALYSS_INCLUDE . '/template/forecast-detail.php';
     $r .= ob_get_contents();
     ob_end_clean();
     return $r;
 }
コード例 #4
0
    echo dossier::hidden();
    $f = new Fiche($cn, $_REQUEST['f_id']);
    $contact = new Contact($cn);
    $contact->company = $f->get_quick_code();
    echo $contact->summary("");
    $sql = ' select fd_id from fiche_def where frd_id=' . FICHE_TYPE_CONTACT;
    $filter = $cn->make_list($sql);
    if (empty($filter)) {
        echo '<span class="notice">';
        $url = "do.php?" . http_build_query(array('gDossier' => Dossier::id(), 'ac' => 'CFGCARD'));
        echo '<a class="line" href="' . $url . '" targer="_blank">';
        echo _("Vous devez aller dans fiche et créer une catégorie pour les contacts");
        echo '</a>';
        echo '</span>';
        return;
    }
    /* Add button */
    $f_add_button = new IButton('add_card');
    $f_add_button->label = _('Créer une nouvelle fiche');
    $f_add_button->set_attribute('filter', $filter);
    $f_add_button->javascript = " select_card_type(this);";
    echo $f_add_button->input();
    echo '</div>';
}
/*----------------------------------------------------------------------------
 * Lettering
 *----------------------------------------------------------------------------*/
if ($def == 7) {
    require_once NOALYSS_INCLUDE . '/lettering.gestion.inc.php';
}
echo '</div>';
コード例 #5
0
ファイル: module.php プロジェクト: Kloadut/noalyss_ynh
//This file is part of NOALYSS and is under GPL
//see licence.txt
?>
<div id="top">
      <div id="dossier">
	<?php 
echo h(dossier::name());
?>
	</div>
    <div style="clear:both;"></div>
    <div class="name">

<?php 
if ($cn->get_value("select count(*) from profile join profile_user using (p_id)\n\t\twhere user_name=\$1 and with_calc=true", array($_SESSION['g_user'])) == 1) {
    echo '<div id="calc">';
    echo IButton::show_calc();
    echo '</div>';
}
if ($cn->get_value("select count(*) from profile join profile_user using (p_id)\n\t\twhere user_name=\$1 and with_direct_form=true", array($_SESSION['g_user'])) == 1) {
    ?>
	<div id="direct">
	<form method="get">
		<?php 
    echo HtmlInput::default_value('ac', '', $_REQUEST);
    ?>
		<?php 
    echo Dossier::hidden();
    ?>
		<?php 
    $direct = new IText('ac');
    $direct->style = 'class="input_text"';
コード例 #6
0
ファイル: card_attr.inc.php プロジェクト: Kloadut/noalyss_ynh
echo '<tr>';
echo th(_("id"));
echo th(_("Description"));
echo th(_("Type"));
echo th(_("Taille"));
echo th(_("Paramètre"));
echo '</tr>';
for ($e = 0; $e < count($array); $e++) {
    $row = $array[$e];
    $r = '';
    $r .= td(HtmlInput::hidden('ad_id[]', $row->get_parameter('id')) . $row->get_parameter('id'));
    $select_type->selected = $row->get_parameter('type');
    $desc->value = $row->get_parameter('desc');
    $size->value = $row->get_parameter('size');
    $extra->value = $row->get_parameter('extra');
    $remove = new IButton('rmfa' . $e);
    $remove->label = _('Effacer');
    if ($row->get_parameter('id') >= 9000) {
        $select_type->readOnly = false;
        $desc->readOnly = false;
        $size->readOnly = false;
        $extra->readOnly = false;
        $desc->style = ' class="input_text" ';
        $r .= td($desc->input());
        $r .= td($select_type->input());
        $r .= td($size->input());
        $r .= td($extra->input());
        $remove->javascript = sprintf('confirm_box(\'tb_rmfa\',\'Vous  confirmez ?\',function() { removeCardAttribut(%d,%d,\'tb_rmfa\',$(\'rmfa%d\') );})', $row->get_parameter('id'), $gDossier, $e);
        $msg = '<span class="notice">' . _("Attention : effacera les données qui y sont liées") . ' </span>';
        $r .= td($remove->input() . $msg);
    } else {
コード例 #7
0
 function form($p_line = 0)
 {
     $r = "";
     if ($p_line == 0) {
         $p_line = count($this->aAcc_Report_row);
     }
     $r .= dossier::hidden();
     $r .= HtmlInput::hidden('line', $p_line);
     $r .= HtmlInput::hidden('fr_id', $this->id);
     $wForm = new IText();
     $r .= "Nom du rapport : ";
     $r .= $wForm->input('form_nom', $this->name);
     $r .= '<TABLE id="rap1" width="100%">';
     $r .= "<TR>";
     $r .= "<TH> Position </TH>";
     $r .= "<TH> Texte </TH>";
     $r .= "<TH> Formule</TH>";
     $r .= '</TR>';
     $wName = new IText();
     $wName->size = 40;
     $wPos = new IText();
     $wPos->size = 3;
     $wForm = new IText();
     $wForm->size = 35;
     for ($i = 0; $i < $p_line; $i++) {
         $r .= "<TR>";
         $r .= "<TD>";
         $wPos->value = isset($this->aAcc_Report_row[$i]->fo_pos) ? $this->aAcc_Report_row[$i]->fo_pos : $i + 1;
         $r .= $wPos->input("pos" . $i);
         $r .= '</TD>';
         $r .= "<TD>";
         $wName->value = isset($this->aAcc_Report_row[$i]->fo_label) ? $this->aAcc_Report_row[$i]->fo_label : "";
         $r .= $wName->input("text" . $i);
         $r .= '</TD>';
         $r .= '<td>';
         $search = new IPoste("form" . $i);
         $search->size = 50;
         $search->value = isset($this->aAcc_Report_row[$i]->fo_formula) ? $this->aAcc_Report_row[$i]->fo_formula : "";
         $search->label = _("Recherche poste");
         $search->set_attribute('gDossier', dossier::id());
         $search->set_attribute('bracket', 1);
         $search->set_attribute('no_overwrite', 1);
         $search->set_attribute('noquery', 1);
         $search->set_attribute('account', $search->name);
         $search->set_attribute('ipopup', 'ipop_card');
         $r .= $search->input();
         $r .= '</td>';
         $r .= "</TR>";
     }
     $r .= "</TABLE>";
     $wButton = new IButton();
     $wButton->javascript = " rapport_add_row('" . dossier::id() . "')";
     $wButton->label = "Ajout d'une ligne";
     $r .= $wButton->input();
     return $r;
 }
コード例 #8
0
ファイル: ac_common.php プロジェクト: Kloadut/noalyss_ynh
/**
 * Should a dialog box when you are disconnected from an ajax call
 * propose to reload or to connect in another tab
 */
function ajax_disconnected($div)
{
    /**
     * if $_SESSION['g_user'] is not set : echo a warning
     */
    if (!isset($_SESSION['g_user'])) {
        $script = 'var a=$("' . $div . '");a.style.height="70%";a.style.width="60%";';
        $script .= 'a.style.top=posY-20+offsetY;a.style.left=posX+offsetX;';
        $script = create_script($script);
        $html = $script;
        $html .= HtmlInput::anchor_close($div);
        $html .= '<div>';
        $html .= h2(_('Données non disponibles'), 'class="title" style="width:auto"');
        $html .= h2(_('Veuillez vous reconnecter soit dans une autre fenêtre soit ' . ' en cliquant sur le lien'), 'class="error"');
        // Reload button
        $reload = new IButton("reload");
        $reload->value = _("Se reconnecter pour revenir ici");
        $reload->class = "button";
        $reload->javascript = 'window.location.reload()';
        // Link to log in another tab
        $html .= '<p style="text-align:center">';
        $html .= '<a href="index.php" class="button" target="_blank">' . _('Cliquez ici pour vous reconnecter dans une autre page') . '</a>';
        $html .= $reload->input();
        $html .= '</p>';
        $html = escape_xml($html);
        header('Content-type: text/xml; charset=UTF-8');
        echo <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<data>
<ctl>{$div}</ctl>
<code>{$html}</code>
</data>
EOF;
        exit;
    }
}
コード例 #9
0
ファイル: fiche.inc.php プロジェクト: Kloadut/noalyss_ynh
		<?php 
echo HtmlInput::button_anchor(_("Chercher"), "javascript:void(0)", "", $search_card_js, 'smallbutton');
?>
</div>
<?php 
echo '</div>';
$str = "if (g('histo').value==3 || g('histo').value== -1 ) {\n     g('trstart').style.display='none';g('trend').style.display='none';g('allcard').style.display='none';}\n     else  {g('trstart').style.display='';g('trend').style.display='';g('allcard').style.display='';}\n\t if (  g('histo').value== -1 ) { g('allcard').style.display='';}\n\n\t";
echo create_script($str);
echo '<hr>';
//-----------------------------------------------------
if (!isset($_GET['cat_display'])) {
    return;
}
$fd_id = $_GET['cat'];
$array = Fiche::get_fiche_def($cn, $_GET['cat'], 'name_asc');
$h_add_card_b = new IButton('add_card');
$h_add_card_b->label = _('Créer une nouvelle fiche');
$h_add_card_b->javascript = "dis_blank_card({gDossier:{$gDossier},fd_id:{$fd_id},ref:2})";
$str_add_card = $g_user->check_action(FICADD) == 1 ? $h_add_card_b->input() : "";
/*
 * You show now the result
 */
if ($array == null) {
    echo '<div class="content">';
    echo '<h2 class="info2"> ' . _('Aucune fiche trouvée') . '</h2>';
    echo $str_add_card;
    echo '</div>';
    return;
}
$allcard = isset($_GET['allcard']) ? 1 : 0;
if ($allcard == 0) {
コード例 #10
0
ファイル: supplier.inc.php プロジェクト: Kloadut/noalyss_ynh
    }
    $noop = isset($_GET['noop']) ? false : true;
    echo '<div class="content">';
    echo $supplier->Summary($search, 'supplier', $sql, $noop);
    echo '<br>';
    echo '<br>';
    echo '<br>';
    if ($g_user->check_action(FICADD) == 1) {
        /* Add button */
        $f_add_button = new IButton('add_card');
        $f_add_button->label = _('Créer une nouvelle fiche');
        $f_add_button->set_attribute('win_refresh', 'yes');
        $f_add_button->set_attribute('type_cat', FICHE_TYPE_FOURNISSEUR);
        $f_add_button->javascript = " select_card_type(this);";
        echo $f_add_button->input();
        $f_cat_button = new IButton('add_cat');
        $f_cat_button->set_attribute('type_cat', FICHE_TYPE_FOURNISSEUR);
        $f_cat_button->set_attribute('ipopup', 'ipop_cat');
        $f_cat_button->label = _('Ajout d\'une catégorie');
        $f_cat_button->javascript = 'add_category(this)';
        echo $f_cat_button->input();
    }
    echo '</div>';
    echo '</div>';
}
/*----------------------------------------------------------------------
 * Detail for a card, Suivi, Contact, Operation,... *
 * cc stands for supplier card
 *----------------------------------------------------------------------*/
if ($low_action == 'detail') {
    /* Menu */
コード例 #11
0
 /**
  *close button for the HTML popup
  *@see add_div modify_operation
  *@param $div_name is the name of the div to remove
  */
 static function button_close($div_name)
 {
     $a = new IButton('Fermer');
     $a->label = _("Fermer");
     $a->javascript = "removeDiv('" . $div_name . "')";
     $html = $a->input();
     return $html;
 }
コード例 #12
0
 function form($p_readonly = 0)
 {
     $wDate = new IDate("pdate", $this->date);
     $wDate->table = 1;
     $wDate->size = 10;
     $wDate->readonly = $p_readonly;
     $wDescription = new IText("pdesc");
     $wDescription->table = 0;
     $wDescription->size = 80;
     $wDescription->readonly = $p_readonly;
     // Show an existing operation
     //
     if (isset($this->a_operation[0])) {
         $wDate->value = $this->a_operation[0]->oa_date;
         $wDescription->value = $this->a_operation[0]->oa_description;
     }
     $ret = "";
     $ret .= '<table style="result"	>';
     $ret .= "<TR>" . $wDate->input() . "</tr>";
     $ret .= '<tr><td>Description</td>' . '<td colspan="3">' . $wDescription->input() . "</td></tr>";
     $Plan = new Anc_Plan($this->db);
     $aPlan = $Plan->get_list();
     $max = count($this->a_operation) < $this->nMaxRow ? $this->nMaxRow : count($this->a_operation);
     $ret .= '</table><table  id="ago" style="width: 100%;">';
     /* show 10 rows */
     $ret .= "<tr>";
     foreach ($aPlan as $d) {
         $idx = $d['id'];
         /* array of possible value for the select */
         $aPoste[$idx] = $this->db->make_array("select po_id as value," . " po_name||':'||coalesce(po_description,'-') as label " . " from poste_analytique " . " where pa_id = " . $idx . " order by po_name ");
         $ret .= "<th> Poste </th>";
     }
     $ret .= "<th></th>" . "<th> Montant</th>" . "<th>D&eacute;bit</th>" . "</tr>";
     for ($i = 0; $i < $max; $i++) {
         $ret .= "<tr>";
         foreach ($aPlan as $d) {
             $idx = $d['id'];
             // init variable
             $wSelect = new ISelect("pop" . $i . "plan" . $idx);
             $wSelect->value = $aPoste[$idx];
             $wSelect->size = 12;
             $wSelect->readOnly = $p_readonly;
             if (isset($this->a_operation[$i])) {
                 $wSelect->selected = $this->a_operation[$i]->po_id;
             }
             $ret .= td($wSelect->input());
         }
         $wAmount = new INum("pamount{$i}", 0.0);
         $wAmount->size = 12;
         $wAmount->table = 1;
         $wAmount->javascript = " onChange=format_number(this);caod_checkTotal()";
         $wAmount->readOnly = $p_readonly;
         $wDebit = new ICheckBox("pdeb{$i}");
         $wDebit->readOnly = $p_readonly;
         $wDebit->javascript = " onChange=caod_checkTotal()";
         if (isset($this->a_operation[$i])) {
             $wSelect->selected = $this->a_operation[$i]->po_id;
             $wAmount->value = $this->a_operation[$i]->oa_amount;
             $wDebit->value = $this->a_operation[$i]->oa_debit;
             if ($wDebit->value == 't') {
                 $wDebit->selected = true;
             }
         }
         // build the table
         $ret .= "<TD></TD>";
         $ret .= $wAmount->input();
         $ret .= td($wDebit->input());
         $ret .= "</tr>";
     }
     $ret .= "</table>";
     if ($p_readonly == false) {
         $add_row = new IButton('Ajouter');
         $add_row->label = _('Ajouter une ligne');
         $add_row->javascript = 'anc_add_row(\'ago\');';
         $ret .= HtmlInput::hidden('nbrow', $max);
         $ret .= $add_row->input();
     }
     return $ret;
 }
コード例 #13
0
ファイル: ajax_misc.php プロジェクト: Kloadut/noalyss_ynh
     break;
     /**
      * display the lettering
      */
 /**
  * display the lettering
  */
 case 'dl':
     require_once NOALYSS_INCLUDE . '/class_lettering.php';
     $exercice = $g_user->get_exercice();
     if ($g_user->check_module("LETCARD") == 0 && $g_user->check_module("LETACC") == 0) {
         exit;
     }
     $periode = new Periode($cn);
     list($first_per, $last_per) = $periode->get_limit($exercice);
     $ret = new IButton('return');
     $ret->label = _('Retour');
     $ret->javascript = "\$('detail').hide();\$('list').show();\$('search').show();";
     // retrieve info for the given j_id (date, amount,side and comment)
     $sql = "select j_date,to_char(j_date,'DD.MM.YYYY') as j_date_fmt,J_POSTE,j_qcode,jr_id,\n         jr_comment,j_montant, j_debit,jr_internal from jrnx join jrn on (j_grpt=jr_grpt_id)\n         where j_id=\$1";
     $arow = $cn->get_array($sql, array($j_id));
     $row = $arow[0];
     $r = '';
     $r .= '<fieldset><legend>' . _('Lettrage') . '</legend>';
     $r .= _('Poste') . " " . $row['j_poste'] . '  ' . $row['j_qcode'] . '<br>';
     $detail = "<A class=\"detail\" style=\"display:inline\" HREF=\"javascript:modifyOperation('" . $row['jr_id'] . "'," . $gDossier . ")\" > " . $row['jr_internal'] . "</A>";
     $r .= _('Date') . ' : ' . $row['j_date_fmt'] . ' ref :' . $detail . ' <br>  ';
     $r .= h($row['jr_comment']) . " " . _("montant") . " : " . $row['j_montant'] . " " . ($row['j_debit'] == 't' ? 'D' : 'C');
     $r .= '</fieldset>';
     $r .= '<div id="filtre" style="float:left;display:block">';
     $r .= '<form method="get" id="search_form" onsubmit="search_letter(this);return false">';
コード例 #14
0
ファイル: class_periode.php プロジェクト: Kloadut/noalyss_ynh
 function display_form_periode()
 {
     $str_dossier = dossier::get();
     if ($this->jrn_def_id == 0) {
         $Res = $this->cn->exec_sql("select p_id,to_char(p_start,'DD.MM.YYYY') as date_start,to_char(p_end,'DD.MM.YYYY') as date_end,p_central,p_closed,p_exercice,\n                                     (select count(jr_id) as count_op from jrn where jr_tech_per = p_id) as count_op\n                                     from parm_periode\n                                     order by p_start,p_end");
         $Max = Database::num_row($Res);
         echo '<form id="periode_frm" method="POST" onsubmit="return confirm_box(this,\'Confirmez-vous la fermeture des périodes choisies ?\')" >';
         echo HtmlInput::array_to_hidden(array('ac', 'gDossier', 'jrn_def_id', 'choose'), $_REQUEST);
         echo '<TABLE ALIGN="CENTER">';
         echo "</TR>";
         echo '<th>' . ICheckBox::toggle_checkbox("per_toggle", "periode_frm") . "</th>";
         echo '<TH> Date d&eacute;but </TH>';
         echo '<TH> Date fin </TH>';
         echo '<TH> Exercice </TH>';
         echo "</TR>";
         for ($i = 0; $i < $Max; $i++) {
             $l_line = Database::fetch_array($Res, $i);
             $class = "even";
             if ($i % 2 == 0) {
                 $class = "odd";
             }
             $style = '';
             if ($l_line['p_closed'] == 't') {
                 $style = "color:red";
             }
             echo '<TR class="' . $class . '" style="' . $style . '">';
             echo '<td>';
             if ($l_line['p_closed'] == 'f') {
                 $per_to_close = new ICheckBox('sel_per_close[]');
                 $per_to_close->value = $l_line['p_id'];
                 echo $per_to_close->input();
             }
             echo '</td>';
             echo '<TD ALIGN="CENTER"> ' . $l_line['date_start'] . '</TD>';
             echo '<TD  ALIGN="CENTER"> ' . $l_line['date_end'] . '</TD>';
             echo '<TD  ALIGN="CENTER"> ' . $l_line['p_exercice'] . '</TD>';
             if ($l_line['p_closed'] == 't') {
                 $closed = $l_line['p_central'] == 't' ? '<TD>Centralis&eacute;e</TD>' : '<TD>Ferm&eacute;e</TD>';
                 $change = '<TD></TD>';
                 $remove = sprintf(_('Nombre opérations %d'), $l_line['count_op']);
                 $remove = td($remove, ' class="mtitle" ');
                 $change = td('<A class="mtitle" HREF="javascript:void(0)"' . ' onclick="return confirm_box(null,\'' . _('Confirmez Réouverture') . ' ?\',function() {window.location=\'do.php?ac=' . $_REQUEST['ac'] . '&action=reopen&p_per=' . $l_line['p_id'] . '&' . $str_dossier . '\';} )"> Réouverture</A>', ' class="mtitle"');
             } else {
                 if ($l_line['count_op'] == 0) {
                     $change = HtmlInput::display_periode($l_line['p_id']);
                 } else {
                     $change = "Non modifiable";
                 }
                 $change = td($change, ' class="mtitle" ');
                 $reopen = td("");
                 $remove = '<TD class="mtitle">';
                 if ($l_line['count_op'] == 0) {
                     $go = 'do.php?' . http_build_query(array('ac' => $_REQUEST['ac'], 'action' => 'delete_per', 'p_per' => $l_line['p_id'], 'gDossier' => Dossier::id()));
                     $remove .= '<A class="mtitle" HREF="javascript:void(0)" ' . 'onclick="return confirm_box (null,\'' . _('Confirmez effacement ?') . '\',function() { window.location=\'' . $go . '\'});" >' . ' Efface</A>';
                 } else {
                     $remove .= sprintf(_('Nombre opérations %d'), $l_line['count_op']);
                 }
                 $remove .= '</td>';
             }
             echo $change;
             echo $remove;
             echo '</TR>';
         }
         echo '</table>';
         echo '<p style="text-align:center">';
         echo HtmlInput::hidden("close_per", 1);
         echo HtmlInput::submit('close_per_bt', 'Fermeture des périodes sélectionnées');
         echo '</p>';
         echo '</form>';
         $but = new IButton('show_per_add', 'Ajout d\'une période');
         $but->javascript = "\$('periode_add_div').show();";
         echo $but->input();
         echo '<div class="inner_box" style="width:40%;" id="periode_add_div">';
         echo HtmlInput::title_box("Ajout d'une période", "periode_add_div", "hide");
         echo '<FORM  METHOD="POST">';
         echo dossier::hidden();
         $istart = new IDate('p_date_start');
         $iend = new IDate('p_date_end');
         $iexercice = new INum('p_exercice');
         $iexercice->size = 5;
         echo '<table>';
         echo '<TR> ';
         echo td('Date de début');
         echo td($istart->input());
         echo '</tr><tr>';
         echo td('Date de fin');
         echo td($iend->input());
         echo '</tr><tr>';
         echo td('Exercice');
         echo td($iexercice->input());
         echo '</TABLE>';
         echo HtmlInput::submit('add_per', 'Valider');
         echo '</FORM>';
         echo '</div>';
         echo create_script("\$('periode_add_div').hide();new Draggable('periode_add_div',{starteffect:function()\n                                  {\n                                     new Effect.Highlight(obj.id,{scroll:window,queue:'end'});\n                                  }}\n                         );");
     } else {
         $Res = $this->cn->exec_sql("select p_id,to_char(p_start,'DD.MM.YYYY') as date_start,to_char(p_end,'DD.MM.YYYY') as date_end,status,p_exercice\n                                     from parm_periode join jrn_periode using (p_id) where jrn_def_id=" . $this->jrn_def_id . "\n                                     order by p_start,p_end");
         $Max = Database::num_row($Res);
         $r = $this->cn->exec_sql('select jrn_Def_name from jrn_Def where jrn_Def_id=' . $this->jrn_def_id);
         $jrn_name = Database::fetch_result($r, 0, 0);
         echo '<h2> Journal ' . $jrn_name . '</h2>';
         echo '<form id="periode_frm" method="POST" onsubmit="return confirm_box(this,\'Confirmez-vous la fermeture des périodes choisies ?\')" >';
         echo HtmlInput::array_to_hidden(array('ac', 'gDossier', 'jrn_def_id', 'choose'), $_REQUEST);
         echo '<TABLE ALIGN="CENTER">';
         echo "</TR>";
         echo '<th>' . ICheckBox::toggle_checkbox("per_toggle", "periode_frm") . "</th>";
         echo '<TH> Date d&eacute;but </TH>';
         echo '<TH> Date fin </TH>';
         echo '<TH> Exercice </TH>';
         echo "</TR>";
         for ($i = 0; $i < $Max; $i++) {
             $l_line = Database::fetch_array($Res, $i);
             if ($l_line['status'] != 'OP') {
                 echo '<TR style="COLOR:RED">';
             } else {
                 echo '<TR>';
             }
             echo '<td>';
             if ($l_line['status'] == 'OP') {
                 $per_to_close = new ICheckBox('sel_per_close[]');
                 $per_to_close->value = $l_line['p_id'];
                 echo $per_to_close->input();
             }
             echo '</td>';
             echo '<TD ALIGN="CENTER"> ' . $l_line['date_start'] . '</TD>';
             echo '<TD  ALIGN="CENTER"> ' . $l_line['date_end'] . '</TD>';
             echo '<TD  ALIGN="CENTER"> ' . $l_line['p_exercice'] . '</TD>';
             $closed = "";
             if ($l_line['status'] != 'OP') {
                 $go = 'do.php?' . http_build_query(array('ac' => $_REQUEST['ac'], 'action' => 'reopen', 'p_per' => $l_line['p_id'], 'gDossier' => Dossier::id(), 'jrn_def_id' => $this->jrn_def_id));
                 $closed = td('<A class="mtitle" HREF="javascript:void(0)" ' . 'onclick="return confirm_box(null,\'' . _('Confirmez Réouverture') . ' ?\',function() {window.location=\'' . $go . '\';} );"> Réouverture</A>', ' class="mtitle"');
             }
             echo "{$closed}";
             echo '</TR>';
         }
         echo '</TABLE>';
         echo '<p style="text-align:center">';
         echo HtmlInput::submit('close_per', 'Fermeture des périodes sélectionnées');
         echo '</p>';
         echo '</form>';
     }
 }
コード例 #15
0
 /**
 *@brief return a string containing the button for displaying
 * a search form. When clicking on the result, update the input text file
 * the common used attribute as
 *   - jrn   the ledger
 *   - label the field to update
 *   - name name of the input text
 *   - price amount
 *   - tvaid
 *   - typecard (deb, cred, filter or list of value)
 * will be set
 * if ICard is in readOnly, the button disappears, so the return string is empty
     \code
  // search ipopup
     $search_card=new IPopup('ipop_card');
     $search_card->title=_('Recherche de fiche');
     $search_card->value='';
     echo $search_card->input();
 
     $a=new ICard('test');
     $a->search();
 
     \endcode
 *\see ajax_card.php
 *\note the ipopup id is hard coded : ipop_card
 *@return HTML string with the button
 */
 function search()
 {
     if ($this->readOnly == true) {
         return '';
     }
     $button = new IButton($this->name . '_bt');
     $a = "";
     foreach (array('typecard', 'jrn', 'label', 'price', 'tvaid') as $att) {
         if (isset($this->{$att})) {
             $a .= "this." . $att . "='" . $this->{$att} . "';";
         }
     }
     if (isset($this->name)) {
         $a .= "this.inp='" . $this->name . "';";
     }
     $a .= "this.popup='ipop_card';";
     $button->javascript = $a . ' search_card(this)';
     return $button->input();
 }
コード例 #16
0
 /**
  * \brief Display the object, the tags for the FORM
  *        are in the caller. It will be used for adding and updating
  *        action
  * \note  If  ag_id is not equal to zero then it is an update otherwise
  *        it is a new document
  *
  * \param $p_view form will be in readonly mode (value: READ, UPD or NEW  )
  * \param $p_gen true we show the tag for generating a doc (value : true or false) and adding files
  * \param $p_base is the ac parameter
  * \param $retour is the html code for the return button
  * \note  update the reference number or the document type is not allowed
  *
  *
  * \return string containing the html code
  */
 function Display($p_view, $p_gen, $p_base, $retour = "")
 {
     global $g_user;
     if ($p_view == 'UPD') {
         $upd = true;
         $readonly = false;
     } elseif ($p_view == "NEW") {
         $upd = false;
         $readonly = false;
         $this->ag_ref = _("Nouveau");
     } elseif ($p_view == 'READ') {
         $upd = true;
         $readonly = true;
     } else {
         throw new Exception('class_action' . __LINE__ . 'Follow_Up::Display error unknown parameter' . $p_view);
     }
     // Compute the widget
     // Date
     $date = new IDate();
     $date->readOnly = $readonly;
     $date->name = "ag_timestamp";
     $date->id = "ag_timestamp";
     $date->value = $this->ag_timestamp;
     $remind_date = new IDate();
     $remind_date->readOnly = $readonly;
     $remind_date->name = "ag_remind_date";
     $remind_date->id = "ag_remind_date";
     $remind_date->value = $this->ag_remind_date;
     // Doc Type
     $doc_type = new ISelect();
     $doc_type->name = "dt_id";
     $doc_type->value = $this->db->make_array("select dt_id,dt_value from document_type order by dt_value", 1);
     $doc_type->selected = $this->dt_id;
     $doc_type->readOnly = $readonly;
     $str_doc_type = $doc_type->input();
     // Description
     $desc = new ITextArea();
     $desc->style = ' class="itextarea" style="width:80%;margin-left:0px"';
     $desc->name = "ag_comment";
     $desc->readOnly = $readonly;
     $acomment = $this->db->get_array("SELECT agc_id, ag_id, to_char(agc_date,'DD.MM.YYYY HH24:MI') as str_agc_date, agc_comment, tech_user\n\t\t\t\t FROM action_gestion_comment where ag_id=\$1 order by agc_id;", array($this->ag_id));
     // List opération liées
     $operation = $this->db->get_array("select ago_id,j.jr_id,j.jr_internal,j.jr_comment,to_char(j.jr_date,'DD.MM.YY') as str_date\n\t\t\tfrom jrn as j join action_gestion_operation as ago on (j.jr_id=ago.jr_id)\n\t\t\twhere ag_id=\$1 order by jr_date", array($this->ag_id));
     $iconcerned = new IConcerned('operation');
     // List related action
     $action = $this->db->get_array("\n\t\t\tselect ag_id,ag_ref,substr(ag_title,1,40) as sub_title,to_char(ag_timestamp,'DD.MM.YY') as str_date ,\n\t\t\t\tag_timestamp,dt_value\n\t\t\t\t\tfrom action_gestion\n\t\t\t\t\t join document_type on (ag_type=dt_id)\n\t\t\t\twhere\n\t\t\t\tag_id in (select aga_greatest from action_gestion_related where aga_least =\$1)\n\t\t\t\tor\n\t\t\t\tag_id in (select aga_least from action_gestion_related where aga_greatest =\$1)\n\t\t\t\torder by ag_timestamp", array($this->ag_id));
     $iaction = new IRelated_Action('action');
     $iaction->value = isset($this->action) ? $this->action : "";
     // state
     // Retrieve the value
     $a = $this->db->make_array("select s_id,s_value from document_state ");
     $state = new ISelect();
     $state->readOnly = $readonly;
     $state->name = "ag_state";
     $state->value = $a;
     $state->selected = $this->ag_state;
     $str_state = $state->input();
     // Retrieve the value if there is an attached doc
     $doc_ref = "";
     // Document id
     $h2 = new IHidden();
     $h2->name = "d_id";
     $h2->value = $this->d_id;
     if ($this->d_id != 0 && $this->d_id != "") {
         $h2->readonly = $p_view == 'NEW' ? false : true;
         $doc = new Document($this->db, $this->d_id);
         $doc->get();
         if (strlen(trim($doc->d_lob)) != 0) {
             $d_id = new IHidden();
             $doc_ref = "<p> Document " . $doc->anchor() . '</p>';
             $doc_ref .= $h2->input() . $d_id->input('d_id', $this->d_id);
         }
     }
     // title
     $title = new IText();
     $title->readOnly = $readonly;
     $title->name = "ag_title";
     $title->value = $this->ag_title;
     $title->size = 60;
     // Priority of the ag_priority
     $ag_priority = new ISelect();
     $ag_priority->readOnly = $readonly;
     $ag_priority->name = "ag_priority";
     $ag_priority->selected = $this->ag_priority;
     $ag_priority->value = array(array('value' => 1, 'label' => 'Haute'), array('value' => 2, 'label' => 'Moyenne'), array('value' => 3, 'label' => 'Basse'));
     $str_ag_priority = $ag_priority->input();
     // hour of the action (meeting) ag_hour
     $ag_hour = new IText();
     $ag_hour->readOnly = $readonly;
     $ag_hour->name = "ag_hour";
     $ag_hour->value = $this->ag_hour;
     $ag_hour->size = 6;
     $ag_hour->javascript = " onblur=check_hour('ag_hour');";
     $str_ag_hour = $ag_hour->input();
     // Profile in charged of the action
     $ag_dest = new ISelect();
     $ag_dest->readOnly = $readonly;
     $ag_dest->name = "ag_dest";
     // select profile
     $aAg_dest = $this->db->make_array("select  p_id as value, " . "p_name as label " . " from profile  where p_id in (select p_granted from user_sec_action_profile where ua_right='W' and p_id=" . $g_user->get_profile() . ") order by 2");
     $ag_dest->value = $aAg_dest;
     $ag_dest->selected = $this->ag_dest;
     $str_ag_dest = $ag_dest->input();
     // ag_ref
     // Always false for update
     $client_label = new ISpan();
     /* Add button */
     $f_add_button = new IButton('add_card');
     $f_add_button->label = _('Créer une nouvelle fiche');
     $f_add_button->set_attribute('ipopup', 'ipop_newcard');
     $filter = $this->db->make_list('select fd_id from fiche_def ');
     $f_add_button->set_attribute('filter', $filter);
     $f_add_button->javascript = " select_card_type(this);";
     $str_add_button = $f_add_button->input();
     // f_id_dest sender
     if ($this->qcode_dest != NOTFOUND && strlen(trim($this->qcode_dest)) != 0) {
         $tiers = new Fiche($this->db);
         $tiers->get_by_qcode($this->qcode_dest);
         $qcode_dest_label = $tiers->strAttribut(1);
         $this->f_id_dest = $tiers->id;
     } else {
         $qcode_dest_label = $this->f_id_dest == 0 || trim($this->qcode_dest) == "" ? 'Interne ' : 'Error';
     }
     $h_ag_id = new IHidden();
     // if concerns another action : show the link otherwise nothing
     //
     // sender
     $w = new ICard();
     $w->readOnly = $readonly;
     $w->jrn = 0;
     $w->name = 'qcode_dest';
     $w->value = $this->f_id_dest != 0 ? $this->qcode_dest : "";
     $w->label = "";
     $list_recipient = $this->db->make_list('select fd_id from fiche_def where frd_id in (14,25,8,9,16)');
     $w->extra = $list_recipient;
     $w->set_attribute('typecard', $list_recipient);
     $w->set_dblclick("fill_ipopcard(this);");
     $w->set_attribute('ipopup', 'ipopcard');
     // name of the field to update with the name of the card
     $w->set_attribute('label', 'qcode_dest_label');
     // name of the field to update with the name of the card
     $w->set_attribute('typecard', $w->extra);
     $w->set_function('fill_data');
     $w->javascript = sprintf(' onchange="fill_data_onchange(\'%s\');" ', $w->name);
     $sp = new ISpan();
     $sp->name = 'qcode_dest_label';
     $sp->value = $qcode_dest_label;
     // autre - a refaire pour avoir plusieurs fiches
     // Sur le modèle des tags
     $ag_contact = new ICard();
     $ag_contact->readOnly = $readonly;
     $ag_contact->jrn = 0;
     $ag_contact->name = 'ag_contact';
     $ag_contact->value = '';
     $ag_contact->set_attribute('ipopup', 'ipopcard');
     if ($this->ag_contact != 0) {
         $contact = new Fiche($this->db, $this->ag_contact);
         $ag_contact->value = $contact->get_quick_code();
     }
     $ag_contact->label = "";
     $list_contact = $this->db->make_list('select fd_id from fiche_def where frd_id=16');
     $ag_contact->extra = $list_contact;
     $ag_contact->set_dblclick("fill_ipopcard(this);");
     // name of the field to update with the name of the card
     $ag_contact->set_attribute('label', 'ag_contact_label');
     // name of the field to update with the name of the card
     $ag_contact->set_attribute('typecard', $list_contact);
     $ag_contact->set_function('fill_data');
     $ag_contact->javascript = sprintf(' onchange="fill_data_onchange(\'%s\');" ', $ag_contact->name);
     $spcontact = new ISpan();
     $spcontact->name = 'ag_contact_label';
     $spcontact->value = '';
     $fiche_contact = new Fiche($this->db);
     $fiche_contact->get_by_qcode($this->ag_contact);
     if ($fiche_contact->id != 0) {
         $spcontact->value = $fiche_contact->strAttribut(ATTR_DEF_NAME);
     }
     $h_agrefid = new IHidden();
     $iag_ref = new IText("ag_ref");
     $iag_ref->value = $this->ag_ref;
     $iag_ref->readOnly = $p_view == "NEW" || $p_view == 'READ' ? true : false;
     $str_ag_ref = $iag_ref->input();
     // Preparing the return string
     $r = "";
     /* for new files */
     $upload = new IFile();
     $upload->name = "file_upload[]";
     $upload->readOnly = $readonly;
     $upload->value = "";
     $aAttachedFile = $this->db->get_array('select d_id,d_filename,d_description,d_mimetype,' . '\'show_document.php?' . Dossier::get() . '&d_id=\'||d_id as link' . ' from document where ag_id=$1', array($this->ag_id));
     /* create the select for document */
     $aDocMod = new ISelect();
     $aDocMod->name = 'doc_mod';
     $aDocMod->value = $this->db->make_array('select md_id,dt_value||\' : \'||md_name as md_name' . ' from document_modele join document_type on (md_type=dt_id)' . ' order by md_name');
     $str_select_doc = $aDocMod->input();
     /* if no document then do not show the generate button */
     if (empty($aDocMod->value)) {
         $str_submit_generate = "";
     } else {
         $str_submit_generate = HtmlInput::submit("generate", _("Génére le document"));
     }
     $ag_id = $this->ag_id;
     /* fid = Icard  */
     $icard = new ICard();
     $icard->jrn = 0;
     $icard->table = 0;
     $icard->extra2 = 'QuickCode';
     $icard->noadd = "no";
     $icard->extra = 'all';
     /* Text desc  */
     $text = new IText();
     $num = new INum();
     /* TVA */
     $itva = new ITva_Popup($this->db);
     $itva->in_table = true;
     $aCard = array();
     /* create aArticle for the detail section */
     $article_count = count($this->aAction_detail) == 0 ? MAX_ARTICLE : count($this->aAction_detail);
     /* Compute total */
     $tot_item = 0;
     $tot_vat = 0;
     for ($i = 0; $i < $article_count; $i++) {
         /* fid = Icard  */
         $icard = new ICard();
         $icard->jrn = 0;
         $icard->table = 0;
         $icard->noadd = "no";
         $icard->extra = 'all';
         $icard->name = "e_march" . $i;
         $tmp_ad = isset($this->aAction_detail[$i]) ? $this->aAction_detail[$i] : false;
         $icard->readOnly = $readonly;
         $icard->value = '';
         $aCard[$i] = 0;
         if ($tmp_ad) {
             $march = new Fiche($this->db);
             $f = $tmp_ad->get_parameter('qcode');
             if ($f != 0) {
                 $march->id = $f;
                 $icard->value = $march->get_quick_code();
                 $aCard[$i] = $f;
             }
         }
         $icard->set_dblclick("fill_ipopcard(this);");
         // name of the field to update with the name of the card
         $icard->set_attribute('label', "e_march" . $i . "_label");
         // name of the field to update with the name of the card
         $icard->set_attribute('typecard', $icard->extra);
         $icard->set_attribute('ipopup', 'ipopcard');
         $icard->set_function('fill_data');
         $icard->javascript = sprintf(' onchange="fill_data_onchange(\'%s\');" ', $icard->name);
         $aArticle[$i]['fid'] = $icard->search() . $icard->input();
         $text->javascript = ' onchange="clean_tva(' . $i . ');compute_ledger(' . $i . ')"';
         $text->css_size = "100%";
         $text->name = "e_march" . $i . "_label";
         $text->id = "e_march" . $i . "_label";
         $text->size = 40;
         $text->value = $tmp_ad ? $tmp_ad->get_parameter('text') : "";
         $text->readOnly = $readonly;
         $aArticle[$i]['desc'] = $text->input();
         $num->javascript = ' onchange="format_number(this);clean_tva(' . $i . ');compute_ledger(' . $i . ')"';
         $num->name = "e_march" . $i . "_price";
         $num->id = "e_march" . $i . "_price";
         $num->size = 8;
         $num->readOnly = $readonly;
         $num->value = $tmp_ad ? $tmp_ad->get_parameter('price_unit') : 0;
         $aArticle[$i]['pu'] = $num->input();
         $num->name = "e_quant" . $i;
         $num->id = "e_quant" . $i;
         $num->size = 8;
         $num->value = $tmp_ad ? $tmp_ad->get_parameter('quantity') : 0;
         $aArticle[$i]['quant'] = $num->input();
         $itva->name = 'e_march' . $i . '_tva_id';
         $itva->id = 'e_march' . $i . '_tva_id';
         $itva->value = $tmp_ad ? $tmp_ad->get_parameter('tva_id') : 0;
         $itva->readOnly = $readonly;
         $itva->js = ' onchange="format_number(this);clean_tva(' . $i . ');compute_ledger(' . $i . ')"';
         $itva->set_attribute('compute', $i);
         $aArticle[$i]['tvaid'] = $itva->input();
         $num->name = "e_march" . $i . "_tva_amount";
         $num->id = "e_march" . $i . "_tva_amount";
         $num->value = $tmp_ad ? $tmp_ad->get_parameter('tva_amount') : 0;
         $num->javascript = " onchange=\"compute_ledger('" . $i . " ')\"";
         $num->size = 8;
         $aArticle[$i]['tva'] = $num->input();
         $tot_vat = bcadd($tot_vat, $num->value);
         $num->name = "tvac_march" . $i;
         $num->id = "tvac_march" . $i;
         $num->value = $tmp_ad ? $tmp_ad->get_parameter('total') : 0;
         $num->size = 8;
         $aArticle[$i]['tvac'] = $num->input();
         $tot_item = bcadd($tot_item, $num->value);
         $aArticle[$i]['hidden_htva'] = HtmlInput::hidden('htva_march' . $i, 0);
         $aArticle[$i]['hidden_tva'] = HtmlInput::hidden('tva_march' . $i, 0);
         $aArticle[$i]['ad_id'] = $tmp_ad ? HtmlInput::hidden('ad_id' . $i, $tmp_ad->get_parameter('id')) : HtmlInput::hidden('ad_id' . $i, 0);
     }
     /* Add the needed hidden values */
     $r .= dossier::hidden();
     /* add the number of item */
     $Hid = new IHidden();
     $r .= $Hid->input("nb_item", $article_count);
     $r .= HtmlInput::request_to_hidden(array("closed_action", "remind_date_end", "remind_date", "sag_ref", "only_internal", "state", "qcode", "ag_dest_query", "action_query", "tdoc", "date_start", "date_end", "hsstate", "searchtag"));
     $a_tag = $this->tag_get();
     $menu = new Default_Menu();
     /* get template */
     ob_start();
     require 'template/detail-action.php';
     $content = ob_get_contents();
     ob_end_clean();
     $r .= $content;
     //hidden
     $r .= "<p>";
     $r .= $h2->input();
     $r .= $h_ag_id->input('ag_id', $this->ag_id);
     $hidden2 = new IHidden();
     $r .= $hidden2->input('f_id_dest', $this->f_id_dest);
     $r .= "</p>";
     return $r;
 }
コード例 #17
0
    $m = $array[$i]->get_solde_detail($filter_year);
    $solde = $m['debit'] - $m['credit'];
    // print the result if the saldo is not equal to 0
    if ($m['debit'] != 0.0 || $m['credit'] != 0.0) {
        /*  get saldo for not reconcilied operations  */
        $saldo_not_reconcilied = $array[$i]->get_bk_balance($filter_year . " and (trim(jr_pj_number) ='' or jr_pj_number is null)");
        /*  get saldo for reconcilied operation  */
        $saldo_reconcilied = $array[$i]->get_bk_balance($filter_year . " and ( trim(jr_pj_number) != '' and jr_pj_number is not null)");
        if ($idx % 2 != 0) {
            $odd = "odd";
        } else {
            $odd = "even";
        }
        $idx++;
        echo "<tr class=\"{$odd}\">";
        echo "<TD >" . IButton::history_card($array[$i]->id, $array[$i]->strAttribut(ATTR_DEF_QUICKCODE)) . "</TD>";
        $saldo_rec = bcsub($saldo_reconcilied['debit'], $saldo_reconcilied['credit']);
        $diff = bcsub($saldo_not_reconcilied['debit'], $saldo_not_reconcilied['credit']);
        echo "<TD >" . $array[$i]->strAttribut(ATTR_DEF_NAME) . "</TD>" . td(h($array[$i]->ledger_name)) . td(h($array[$i]->ledger_description)) . '<TD class="sorttable_numeric" sorttable_customkey="' . $solde . '"  style="text-align:right">' . nbm($solde) . "</TD>" . '<TD class="sorttable_numeric" sorttable_customkey="' . $saldo_rec . '"  style="text-align:right">' . nbm($saldo_rec) . "</TD>" . '<TD class="sorttable_numeric" sorttable_customkey="' . $diff . '"  style="text-align:right">' . nbm($diff) . "</TD>" . "</TR>";
        $tot_extrait = bcadd($tot_extrait, $solde);
        $tot_operation = bcadd($tot_operation, $saldo_rec);
        $tot_diff = bcadd($tot_diff, $diff);
    }
}
// for
echo '<tfoot>';
echo '<tr class="highlight">';
echo td('');
echo td('');
echo td('');
echo td(' TOTAUX ', 'style="font-weight:bold"');
コード例 #18
0
 function input($p_array = null, $p_readonly = 0)
 {
     global $g_parameter, $g_user;
     if ($p_array != null) {
         extract($p_array);
     }
     $flag_tva = $g_parameter->MY_TVA_USE;
     /* Add button */
     $f_add_button = new IButton('add_card');
     $f_add_button->tabindex = -1;
     $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);";
     $f_add_button2 = new IButton('add_card2');
     $f_add_button2->tabindex = -1;
     $f_add_button2->label = _('Créer une nouvelle fiche');
     $f_add_button2->set_attribute('ipopup', 'ipop_newcard');
     $f_add_button2->set_attribute('filter', $this->get_all_fiche_def());
     //    $f_add_button2->set_attribute('jrn',$this->id);
     $f_add_button2->javascript = " this.jrn=\$('p_jrn').value;select_card_type(this);";
     $str_add_button = "";
     $str_add_button2 = "";
     if ($g_user->check_action(FICADD) == 1) {
         $str_add_button = $f_add_button->input();
         $str_add_button2 = $f_add_button2->input();
     }
     // The first day of the periode
     $oPeriode = new Periode($this->db);
     list($l_date_start, $l_date_end) = $oPeriode->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;
     }
     $e_ech = isset($e_ech) ? $e_ech : "";
     $e_comm = isset($e_comm) ? $e_comm : "";
     $r = '';
     $r .= dossier::hidden();
     $f_legend = _('Client');
     $Echeance = new IDate();
     $Echeance->setReadOnly(false);
     $Echeance->tabindex = 2;
     $label = HtmlInput::infobulle(4);
     $f_echeance = $Echeance->input('e_ech', $e_ech, _('Echéance') . $label);
     $Date = new IDate();
     $Date->setReadOnly(false);
     $f_date = $Date->input("e_date", $op_date);
     $f_periode = '';
     // Periode
     //--
     if ($this->check_periode() == true) {
         $l_user_per = $g_user->get_periode();
         $def = isset($periode) ? $periode : $l_user_per;
         $period = new IPeriod("period");
         $period->user = $g_user;
         $period->cn = $this->db;
         $period->value = $def;
         $period->type = OPEN;
         try {
             $l_form_per = $period->input();
         } catch (Exception $e) {
             if ($e->getCode() == 1) {
                 throw new Exception(_("Aucune période ouverte"));
             }
         }
         $label = HtmlInput::infobulle(3);
         $f_periode = '<td>' . _("Période comptable") . "</td> <td> {$label} " . $l_form_per . '</td>';
     }
     /* if we suggest the next pj, then we need a javascript */
     $add_js = "";
     if ($g_parameter->MY_PJ_SUGGEST == 'Y') {
         $add_js = "update_pj();";
     }
     if ($g_parameter->MY_DATE_SUGGEST == 'Y') {
         $add_js .= 'get_last_date();';
     }
     $add_js .= 'update_name();';
     $add_js .= 'update_pay_method();';
     $add_js .= 'update_row("sold_item");';
     $wLedger = $this->select_ledger('VEN', 2);
     if ($wLedger == null) {
         throw new Exception(_('Pas de journal disponible'));
     }
     $wLedger->table = 1;
     $wLedger->javascript = "onChange='update_predef(\"ven\",\"f\",\"" . $_REQUEST['ac'] . "\");{$add_js}'";
     $wLedger->label = " Journal " . HtmlInput::infobulle(2);
     $f_jrn = $wLedger->input();
     $Commentaire = new IText();
     $Commentaire->table = 0;
     $Commentaire->setReadOnly(false);
     $Commentaire->size = 60;
     $Commentaire->tabindex = 3;
     $label = HtmlInput::infobulle(1);
     $f_desc = $Commentaire->input("e_comm", h($e_comm));
     // PJ
     //--
     /* suggest PJ ? */
     $default_pj = '';
     if ($g_parameter->MY_PJ_SUGGEST == 'Y') {
         $default_pj = $this->guess_pj();
     }
     $pj = new IText();
     $pj->table = 0;
     $pj->name = "e_pj";
     $pj->size = 10;
     $pj->value = isset($e_pj) ? $e_pj : $default_pj;
     $f_pj = $pj->input() . HtmlInput::hidden('e_pj_suggest', $default_pj);
     // Display the customer
     //--
     $fiche = 'deb';
     // Save old value and set a new one
     //--
     $e_client = isset($e_client) ? $e_client : "";
     $e_client_label = "&nbsp;";
     //str_pad("",100,".");
     // retrieve e_client_label
     //--
     if (strlen(trim($e_client)) != 0) {
         $fClient = new Fiche($this->db);
         $fClient->get_by_qcode($e_client);
         $e_client_label = $fClient->strAttribut(ATTR_DEF_NAME) . ' ' . ' Adresse : ' . $fClient->strAttribut(ATTR_DEF_ADRESS) . ' ' . $fClient->strAttribut(ATTR_DEF_CP) . ' ' . $fClient->strAttribut(ATTR_DEF_CITY) . ' ';
     }
     $W1 = new ICard();
     $W1->label = "Client " . HtmlInput::infobulle(0);
     $W1->name = "e_client";
     $W1->tabindex = 3;
     $W1->value = $e_client;
     $W1->table = 0;
     $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_client_label');
     // name of the field to update with the name of the card
     $W1->set_attribute('typecard', 'deb');
     // 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);
     $f_client_qcode = $W1->input();
     $client_label = new ISpan();
     $client_label->table = 0;
     $f_client = $client_label->input("e_client_label", $e_client_label);
     $f_client_bt = $W1->search();
     // Record the current number of article
     $Hid = new IHidden();
     $p_article = isset($nb_item) ? $nb_item : $this->get_min_row();
     $r .= $Hid->input("nb_item", $p_article);
     $max = $p_article < $this->get_min_row() ? $this->get_min_row() : $p_article;
     $f_legend_detail = _("Détail articles vendus");
     // For each article
     //--
     for ($i = 0; $i < $max; $i++) {
         // Code id, price & vat code
         //--
         $march = isset(${"e_march{$i}"}) ? ${"e_march{$i}"} : "";
         $march_price = isset(${"e_march" . $i . "_price"}) ? ${"e_march" . $i . "_price"} : "";
         if ($flag_tva == 'Y') {
             $march_tva_id = isset(${"e_march{$i}" . "_tva_id"}) ? ${"e_march{$i}" . "_tva_id"} : "";
             $march_tva_amount = isset(${"e_march{$i}" . "_tva_amount"}) ? ${"e_march{$i}" . "_tva_amount"} : "";
         }
         $march_label = isset(${"e_march" . $i . "_label"}) ? ${"e_march" . $i . "_label"} : "";
         // retrieve the tva label and name
         //--
         if (strlen(trim($march)) != 0 && strlen(trim($march_label)) == 0) {
             $fMarch = new Fiche($this->db);
             $fMarch->get_by_qcode($march);
             $march_label = $fMarch->strAttribut(ATTR_DEF_NAME);
             if ($flag_tva == 'Y') {
                 if (!isset(${"e_march{$i}" . "_tva_id"})) {
                     $march_tva_id = $fMarch->strAttribut(ATTR_DEF_TVA);
                 }
             }
         }
         // Show input
         //--
         $W1 = new ICard();
         $W1->label = "";
         $W1->name = "e_march" . $i;
         $W1->value = $march;
         $W1->table = 1;
         $W1->set_attribute('typecard', 'cred');
         $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_march' . $i . '_label');
         // name of the field with the price
         $W1->set_attribute('price', 'e_march' . $i . '_price');
         // name of the field with the TVA_ID
         $W1->set_attribute('tvaid', 'e_march' . $i . '_tva_id');
         // 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 = false;
         $array[$i]['quick_code'] = $W1->input();
         $array[$i]['bt'] = $W1->search();
         // For computing we need some hidden field for holding the value
         $array[$i]['hidden'] = '';
         if ($flag_tva == 'Y') {
             $array[$i]['hidden'] .= HtmlInput::hidden('tva_march' . $i, 0);
         }
         $htva = new INum('htva_march' . $i);
         $htva->readOnly = 1;
         $htva->value = 0;
         $array[$i]['htva'] = $htva->input();
         if ($g_parameter->MY_TVA_USE == 'Y') {
             $tvac = new INum('tvac_march' . $i);
         } else {
             $tvac = new IHidden('tvac_march' . $i);
         }
         $tvac->readOnly = 1;
         $tvac->value = 0;
         $array[$i]['tvac'] = $tvac->input();
         if ($g_parameter->MY_UPDLAB == 'Y') {
             $Span = new IText("e_march" . $i . "_label");
             $Span->css_size = "100%";
         } else {
             $Span = new ISpan("e_march" . $i . "_label");
         }
         $Span->value = $march_label;
         $Span->setReadOnly(false);
         // card's name, price
         //--
         $array[$i]['denom'] = $Span->input("e_march" . $i . "_label", $march_label);
         // price
         $Price = new INum();
         $Price->setReadOnly(false);
         $Price->size = 9;
         $Price->javascript = "onBlur='format_number(this);clean_tva({$i});compute_ledger({$i})'";
         $array[$i]['pu'] = $Price->input("e_march" . $i . "_price", $march_price);
         $array[$i]['tva'] = '';
         $array[$i]['amount_tva'] = '';
         // if tva is not needed then no tva field
         if ($flag_tva == 'Y') {
             // vat label
             //--
             $Tva = new ITva_Popup($this->db);
             $Tva->in_table = true;
             $Tva->set_attribute('compute', $i);
             $Tva->js = 'onblur="format_number(this);clean_tva(' . $i . ');compute_ledger(' . $i . ')"';
             $Tva->value = $march_tva_id;
             $array[$i]['tva'] = $Tva->input("e_march{$i}" . "_tva_id");
             // vat amount
             //--
             $wTva_amount = new INum();
             $wTva_amount->readOnly = false;
             $wTva_amount->size = 6;
             $wTva_amount->javascript = "onBlur='format_number(this);compute_ledger({$i})'";
             $array[$i]['amount_tva'] = $wTva_amount->input("e_march" . $i . "_tva_amount", $march_tva_amount);
         }
         // quantity
         //--
         $quant = isset(${"e_quant{$i}"}) ? ${"e_quant{$i}"} : "1";
         $Quantity = new INum();
         $Quantity->setReadOnly(false);
         $Quantity->size = 8;
         $Quantity->javascript = "onChange='format_number(this);clean_tva({$i});compute_ledger({$i})'";
         $array[$i]['quantity'] = $Quantity->input("e_quant" . $i, $quant);
     }
     // foreach article
     $f_type = _('Client');
     ob_start();
     require_once NOALYSS_INCLUDE . '/template/form_ledger_detail.php';
     $r .= ob_get_contents();
     ob_end_clean();
     // Set correctly the REQUEST param for jrn_type
     $r .= HtmlInput::hidden('jrn_type', 'VEN');
     $r .= HtmlInput::button('add_item', _('Ajout article'), ' onClick="ledger_add_row()"');
     $r .= create_script("\$('" . $Date->id . "').focus()");
     return $r;
 }
コード例 #19
0
    $iextrait->value = $_POST['ext'];
} else {
    $iextrait->value = $Ledger->guess_pj();
}
$nstart_extrait = new INum('start_extrait');
if (isset($_POST['start_extrait'])) {
    $nstart_extrait->value = $_POST['start_extrait'];
}
$nend_extrait = new INum('end_extrait');
if (isset($_POST['end_extrait'])) {
    $nend_extrait->value = $_POST['end_extrait'];
}
echo "Extrait / relevé :" . $iextrait->input();
echo 'solde Début' . $nstart_extrait->input();
echo 'solde Fin' . $nend_extrait->input();
echo IButton::tooggle_checkbox('rec1');
echo '</p>';
echo '<p>';
echo _('Filtre') . HtmlInput::infobulle(25);
echo HtmlInput::filter_table("t_rec_bk", "0,1,2,3", "1");
echo '</p>';
echo HtmlInput::submit('save', 'Mettre à jour le n° de relevé bancaire');
echo '<span style="display:block">';
echo '</span>';
echo '<table id="t_rec_bk" class="sortable" style="width:90%;margin-left:5%">';
$r = '<th class=" sorttable_sorted_reverse">' . 'Date ' . HtmlInput::infobulle(17) . '<span id="sorttable_sortrevind">&nbsp;&blacktriangle;</span>' . '</th>';
$r .= th('Libellé');
$r .= th('N° interne');
$r .= th('Montant', ' style="text-align:right"');
$r .= th('Selection', ' style="text-align:center" ');
echo tr($r);
コード例 #20
0
 function display($p_array)
 {
     global $g_parameter, $g_user;
     require_once NOALYSS_INCLUDE . '/class_acc_ledger.php';
     $legder = new Acc_Ledger($this->db, $this->jrn_def_id);
     $legder->nb = $legder->get_min_row();
     if ($p_array != null) {
         extract($p_array);
     }
     $add_js = "";
     $ret = "";
     if ($g_user->check_action(FICADD) == 1) {
         /* Add button */
         $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', $legder->id);
         $f_add_button->javascript = " this.jrn=\$('p_jrn').value;select_card_type(this);";
         $f_add_button->input();
     }
     $nb_row = isset($nb_item) ? $nb_item : $legder->nb;
     $ret .= HtmlInput::hidden('nb_item', $nb_row);
     $ret .= HtmlInput::hidden('p_jrn', $this->jrn_def_id);
     $ret .= dossier::hidden();
     $ret .= dossier::hidden();
     $ret .= HtmlInput::hidden('jrn_type', $legder->get_type());
     $info = HtmlInput::infobulle(0);
     $info_poste = HtmlInput::infobulle(9);
     if ($g_user->check_action(FICADD) == 1) {
         $ret .= $f_add_button->input();
     }
     $ret .= '<table id="quick_item" style="width:100%">';
     $ret .= '<tr>' . '<th style="text-align:left">Quickcode' . $info . '</th>' . '<th style="text-align:left">' . _('Poste') . $info_poste . '</th>' . '<th style="text-align:left">' . _('Libellé') . '</th>' . '<th style="text-align:left">' . _('Montant') . '</th>' . '<th style="text-align:left">' . _('Débit') . '</th>' . '</tr>';
     for ($i = 0; $i < $nb_row; $i++) {
         // Quick Code
         $quick_code = new ICard('qc_' . $i);
         $quick_code->set_dblclick("fill_ipopcard(this);");
         $quick_code->set_attribute('ipopup', 'ipopcard');
         // name of the field to update with the name of the card
         $quick_code->set_attribute('label', "ld" . $i);
         $quick_code->set_attribute('jrn', $legder->id);
         // name of the field to update with the name of the card
         $quick_code->set_attribute('typecard', 'filter');
         // Add the callback function to filter the card on the jrn
         $quick_code->set_callback('filter_card');
         $quick_code->set_function('fill_data');
         $quick_code->javascript = sprintf(' onchange="fill_data_onchange(\'%s\');" ', $quick_code->name);
         $quick_code->jrn = $legder->id;
         $quick_code->value = isset(${'qc_' . $i}) ? ${'qc_' . $i} : "";
         $label = '';
         if ($quick_code->value != '') {
             $Fiche = new Fiche($legder->db);
             $Fiche->get_by_qcode($quick_code->value);
             $label = $Fiche->strAttribut(ATTR_DEF_NAME);
         }
         // Account
         $poste = new IPoste();
         $poste->name = 'poste' . $i;
         $poste->set_attribute('jrn', $legder->id);
         $poste->set_attribute('ipopup', 'ipop_account');
         $poste->set_attribute('label', 'ld' . $i);
         $poste->set_attribute('account', 'poste' . $i);
         $poste->set_attribute('dossier', Dossier::id());
         $poste->value = isset(${'poste' . $i}) ? ${"poste" . $i} : '';
         $poste->dbl_click_history();
         if ($poste->value != '') {
             $Poste = new Acc_Account($legder->db);
             $Poste->set_parameter('value', $poste->value);
             $label = $Poste->get_lib();
         }
         // Description of the line
         $line_desc = new IText();
         $line_desc->name = 'ld' . $i;
         $line_desc->size = 30;
         $line_desc->value = isset(${"ld" . $i}) ? ${"ld" . $i} : $label;
         // Amount
         $amount = new INum();
         $amount->size = 10;
         $amount->name = 'amount' . $i;
         $amount->value = isset(${'amount' . $i}) ? ${"amount" . $i} : '';
         $amount->javascript = ' onChange="format_number(this);checkTotalDirect()"';
         // D/C
         $deb = new ICheckBox();
         $deb->name = 'ck' . $i;
         $deb->selected = isset(${'ck' . $i}) ? true : false;
         $deb->javascript = ' onChange="checkTotalDirect()"';
         $ret .= '<tr>';
         $ret .= '<td>' . $quick_code->input() . $quick_code->search() . '</td>';
         $ret .= '<td>' . $poste->input() . '<script> document.getElementById(\'poste' . $i . '\').onblur=function(){ if (trim(this.value) !=\'\') {document.getElementById(\'qc_' . $i . '\').value="";}}</script>' . '</td>';
         $ret .= '<td>' . $line_desc->input() . '</td>';
         $ret .= '<td>' . $amount->input() . '</td>';
         $ret .= '<td>' . $deb->input() . '</td>';
         $ret .= '</tr>';
         // If readonly == 1 then show CA
     }
     $ret .= '</table>';
     return $ret;
 }
コード例 #21
0
ファイル: adm.inc.php プロジェクト: Kloadut/noalyss_ynh
    }
    echo '<div class="content">';
    echo $adm->Summary($search, 'adm', $sql);
    echo '<br>';
    echo '<br>';
    echo '<br>';
    if ($g_user->check_action(FICADD) == 1) {
        /* Add button */
        $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('win_refresh', 'yes');
        $f_add_button->set_attribute('type_cat', FICHE_TYPE_ADM_TAX);
        $f_add_button->javascript = " select_card_type(this);";
        echo $f_add_button->input();
        $f_cat_button = new IButton('add_cat');
        $f_cat_button->set_attribute('ipopup', 'ipop_cat');
        $f_cat_button->set_attribute('type_cat', FICHE_TYPE_ADM_TAX);
        $f_cat_button->label = _('Ajout d\'une catégorie');
        $f_cat_button->javascript = 'add_category(this)';
        echo $f_cat_button->input();
    }
    echo '</div>';
    echo '</div>';
}
/*----------------------------------------------------------------------
 * Detail for a card, Suivi, Contact, Operation,... *
 * cc stands for customer card
 *----------------------------------------------------------------------*/
if ($low_action == 'detail') {
    /* Menu */
コード例 #22
0
 function myList()
 {
     $s = dossier::get();
     $sql = "select md_id,md_name,md_affect,dt_value from document_modele join document_type on(dt_id=md_type) order by md_name";
     $Res = $this->cn->exec_sql($sql);
     $all = Database::fetch_all($Res);
     $r = '';
     if (Database::num_row($Res) != 0) {
         $r .= '<p><form method="post">';
         $r .= dossier::hidden();
         $r .= "<table>";
         $r .= "<tr> ";
         $r .= th(_('Nom'));
         $r .= th(_('Catégorie'));
         $r .= th(_('Affect.'));
         $r .= th(_('Fichier'));
         $r .= th(_('Effacer'));
         $r .= "</tr>";
         foreach ($all as $row) {
             $r .= "<tr>";
             $r .= "<td>";
             $r .= h($row['md_name']);
             $r .= "</td>";
             $r .= "<td>";
             $r .= $row['dt_value'];
             $r .= "</td>";
             $r .= td(h($row['md_affect']));
             $r .= "<td>";
             $r .= '<A HREF="show_document_modele.php?md_id=' . $row['md_id'] . '&' . $s . '">Document</a>';
             $r .= "</td>";
             $r .= "<TD>";
             $c = new ICheckBox();
             $c->name = "dm_remove_" . $row['md_id'];
             $r .= $c->input();
             $r .= "</td>";
             $r .= td(HtmlInput::detail_modele_document($row['md_id'], 'Modifier'));
             $r .= "</tr>";
         }
         $r .= "</table>";
         // need hidden parameter for subaction
         $a = new IHidden();
         $a->name = "sa";
         $a->value = "rm_template";
         $r .= $a->input();
         $r .= HtmlInput::submit("rm_template", "Effacer la sélection");
     }
     $b = new IButton('show');
     $b->label = "Ajout d'un document";
     $b->javascript = "\$('add_modele').style.display='block';new Draggable('add_modele',{starteffect:function(){\n                      new Effect.Highlight(obj.id,{scroll:window,queue:'end'});}});";
     $r .= $b->input();
     $r .= "</form></p>";
     return $r;
 }
コード例 #23
0
    function display_form($p_hidden = "")
    {
        /* if there is no analytic plan return */
        $pa = new Anc_Plan($this->db);
        if ($pa->count() == 0) {
            echo '<div class="content">';
            echo '<h2 class="error">' . _('Aucun plan défini') . '</h2>';
            echo '</div>';
            return;
        }
        $from = new IDate('from', 'from');
        $from->size = 10;
        $from->value = $this->from;
        $to = new IDate('to', 'to');
        $to->value = $this->to;
        $to->size = 10;
        $from_poste = new IAncCard('from_poste', 'from_poste');
        $from_poste->size = 10;
        $from_poste->plan_ctl = 'pa_id';
        $from_poste->value = $this->from_poste;
        $to_poste = new IAncCard('to_poste', 'to_poste');
        $to_poste->value = $this->to_poste;
        $to_poste->size = 10;
        $hidden = new IHidden();
        $r = dossier::hidden();
        $r .= $hidden->input("result", "1");
        $r .= HtmlInput::request_to_hidden(array('ac'));
        $r .= $p_hidden;
        $plan = new Anc_Plan($this->db);
        $plan_id = new ISelect("pa_id");
        $plan_id->value = $this->db->make_array("select pa_id, pa_name from plan_analytique order by pa_name");
        $plan_id->selected = $this->pa_id;
        $choose_from = new IButton();
        $choose_from->name = _("Choix Poste");
        $choose_from->label = _("Recherche");
        $choose_from->javascript = "onClick=search_ca(" . dossier::id() . ",'from_poste','pa_id')";
        $choose_to = new IButton();
        $choose_to->name = _("Choix Poste");
        $choose_to->label = _("Recherche");
        $choose_to->javascript = "onClick=search_ca(" . dossier::id() . ",'to_poste','pa_id')";
        $r .= HtmlInput::request_to_hidden(array('ac'));
        ob_start();
        ?>
<table>
    <tr>
        <td>
            <?php 
        echo _('Depuis');
        echo HtmlInput::infobulle(37);
        ?>
        </td>
        <td>
            <?php 
        echo $from->input();
        ?>
        </td>
    </tr>
    <tr>
        <td>
            <?php 
        echo _('Jusque');
        echo HtmlInput::infobulle(37);
        ?>
        </td>
        <td>
            <?php 
        echo $to->input();
        ?>
        </td>
    </tr>
    
</table>
<span style="padding:5px;margin:5px;display:block;">
    <?php 
        echo _("Plan Analytique :") . $plan_id->input();
        echo HtmlInput::infobulle(42);
        ?>
</span>

<?php 
        $r .= ob_get_clean();
        $r .= _("Entre l'activité ") . $from_poste->input();
        $r .= $choose_from->input();
        $r .= _(" et l'activité ") . $to_poste->input();
        $r .= $choose_to->input();
        $r .= '</span>';
        return $r;
    }
コード例 #24
0
 function display($p_array)
 {
     require_once NOALYSS_INCLUDE . '/class_acc_ledger_purchase.php';
     global $g_parameter, $g_user;
     extract($p_array);
     $ledger = new Acc_Ledger_Purchase($this->db, $this->jrn_def_id);
     if ($p_array != null) {
         extract($p_array);
     }
     $flag_tva = $g_parameter->MY_TVA_USE;
     /* Add button */
     $f_add_button = new IButton('add_card');
     $f_add_button->label = _('Créer une nouvelle fiche');
     $f_add_button->tabindex = -1;
     $f_add_button->set_attribute('ipopup', 'ipop_newcard');
     $f_add_button->set_attribute('jrn', $this->jrn_def_id);
     $f_add_button->javascript = " this.jrn=\$('p_jrn').value;select_card_type(this);";
     $f_add_button2 = new IButton('add_card2');
     $f_add_button2->tabindex = -1;
     $f_add_button2->label = _('Créer une nouvelle fiche');
     $f_add_button2->set_attribute('ipopup', 'ipop_newcard');
     $f_add_button2->set_attribute('filter', $ledger->get_all_fiche_def());
     //    $f_add_button2->set_attribute('jrn',$ledger->id);
     $f_add_button2->javascript = "  this.jrn=\$('p_jrn').value;select_card_type(this);";
     $str_add_button = "";
     $str_add_button2 = "";
     if ($g_user->check_action(FICADD) == 1) {
         $str_add_button = $f_add_button->input();
         $str_add_button2 = $f_add_button2->input();
     }
     $r = "";
     $r .= dossier::hidden();
     $f_legend = _("En-tête facture fournisseur");
     $f_legend_detail = _("Détail articles acheté");
     // Ledger (p_jrn)
     //--
     /* if we suggest the next pj, then we need a javascript */
     $add_js = "";
     // Display the customer
     //--
     $fiche = 'cred';
     // Save old value and set a new one
     //--
     $e_client = isset($e_client) ? $e_client : "";
     $e_client_label = "&nbsp;";
     //str_pad("",100,".");
     // retrieve e_client_label
     //--
     if (strlen(trim($e_client)) != 0) {
         $fClient = new Fiche($ledger->db);
         $fClient->get_by_qcode($e_client);
         $e_client_label = $fClient->strAttribut(ATTR_DEF_NAME) . ' ' . ' Adresse : ' . $fClient->strAttribut(ATTR_DEF_ADRESS) . ' ' . $fClient->strAttribut(ATTR_DEF_CP) . ' ' . $fClient->strAttribut(ATTR_DEF_CITY) . ' ';
     }
     $W1 = new ICard();
     $W1->label = _("Fournisseur ") . HtmlInput::infobulle(0);
     $W1->name = "e_client";
     $W1->tabindex = 3;
     $W1->value = $e_client;
     $W1->table = 0;
     $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_client_label');
     // name of the field to update with the name of the card
     $W1->set_attribute('typecard', 'cred');
     // 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);
     $f_client_qcode = $W1->input();
     $client_label = new ISpan();
     $client_label->table = 0;
     $f_client = $client_label->input("e_client_label", $e_client_label);
     $f_client_bt = $W1->search();
     // Record the current number of article
     $min = $ledger->get_min_row();
     $p_article = isset($nb_item) ? $nb_item : $min;
     $max = $p_article < $min ? $min : $p_article;
     $e_comment = isset($e_comment) ? $e_comment : "";
     $Hid = new IHidden();
     $r .= $Hid->input("nb_item", $p_article);
     // For each article
     //--
     for ($i = 0; $i < $max; $i++) {
         // Code id, price & vat code
         //--
         $march = isset(${"e_march{$i}"}) ? ${"e_march{$i}"} : "";
         $march_price = isset(${"e_march" . $i . "_price"}) ? ${"e_march" . $i . "_price"} : "";
         /* use vat */
         if ($g_parameter->MY_TVA_USE == 'Y') {
             $march_tva_id = isset(${"e_march{$i}" . "_tva_id"}) ? ${"e_march{$i}" . "_tva_id"} : "";
             $march_tva_amount = isset(${"e_march{$i}" . "_tva_amount"}) ? ${"e_march{$i}" . "_tva_amount"} : "";
         }
         $march_label = isset(${"e_march" . $i . "_label"}) ? ${"e_march" . $i . "_label"} : "";
         // retrieve the tva label and name
         //--
         if (strlen(trim($march)) != 0 && strlen(trim($march_label)) == 0) {
             $fMarch = new Fiche($ledger->db);
             $fMarch->get_by_qcode($march);
             $march_label = $fMarch->strAttribut(ATTR_DEF_NAME);
             /* vat use */
             if (!isset($march_tva_id) && $g_parameter->MY_TVA_USE == 'Y') {
                 $march_tva_id = $fMarch->strAttribut(ATTR_DEF_TVA);
             }
         }
         // Show input
         //--
         $W1 = new ICard();
         $W1->label = "";
         $W1->name = "e_march" . $i;
         $W1->value = $march;
         $W1->table = 1;
         $W1->set_dblclick("fill_ipopcard(this);");
         $W1->set_attribute('ipopup', 'ipopcard');
         $W1->set_attribute('typecard', 'deb');
         // name of the field to update with the name of the card
         $W1->set_attribute('label', 'e_march' . $i . '_label');
         // name of the field with the price
         $W1->set_attribute('purchase', 'e_march' . $i . '_price');
         /* autocomplete */
         $W1->set_attribute('price', 'e_march' . $i . '_price');
         /* via search */
         // name of the field with the TVA_ID
         $W1->set_attribute('tvaid', 'e_march' . $i . '_tva_id');
         // 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 = false;
         $array[$i]['quick_code'] = $W1->input();
         $array[$i]['bt'] = $W1->search();
         $array[$i]['hidden'] = '';
         // For computing we need some hidden field for holding the value
         if ($g_parameter->MY_TVA_USE == 'Y') {
             $array[$i]['hidden'] .= HtmlInput::hidden('tva_march' . $i, 0);
         }
         if ($g_parameter->MY_TVA_USE == 'Y') {
             $tvac = new INum('tvac_march' . $i);
         } else {
             $tvac = new IHidden('tvac_march' . $i);
         }
         $tvac->readOnly = 1;
         $tvac->value = 0;
         $array[$i]['tvac'] = $tvac->input();
         $htva = new INum('htva_march' . $i);
         $htva->readOnly = 1;
         $htva->value = 0;
         $array[$i]['htva'] = $htva->input();
         if ($g_parameter->MY_UPDLAB == 'Y') {
             $Span = new IText("e_march" . $i . "_label");
             $Span->css_size = "100%";
         } else {
             $Span = new ISpan("e_march" . $i . "_label");
         }
         $Span->value = $march_label;
         $Span->setReadOnly(false);
         // card's name, price
         //--
         $array[$i]['denom'] = $Span->input("e_march" . $i . "_label", $march_label);
         // price
         $Price = new INum();
         $Price->setReadOnly(false);
         $Price->size = 9;
         $Price->javascript = "onBlur='format_number(this);clean_tva({$i});compute_ledger({$i})'";
         $array[$i]['pu'] = $Price->input("e_march" . $i . "_price", $march_price);
         if ($g_parameter->MY_TVA_USE == 'Y') {
             // vat label
             //--
             $Tva = new ITva_Popup($ledger->db);
             $Tva->js = "onblur=\"format_number(this);onChange=clean_tva({$i});compute_ledger({$i})\"";
             $Tva->in_table = true;
             $Tva->set_attribute('compute', $i);
             $Tva->value = $march_tva_id;
             $array[$i]['tva'] = $Tva->input("e_march{$i}" . "_tva_id");
             // Tva_amount
             // price
             $Tva_amount = new INum();
             $Tva_amount->setReadOnly(false);
             $Tva_amount->size = 9;
             $Tva_amount->javascript = "onBlur='format_number(this);compute_ledger({$i})'";
             $array[$i]['amount_tva'] = $Tva_amount->input("e_march" . $i . "_tva_amount", $march_tva_amount);
         }
         // quantity
         //--
         $quant = isset(${"e_quant{$i}"}) ? ${"e_quant{$i}"} : "1";
         $Quantity = new INum();
         $Quantity->setReadOnly(false);
         $Quantity->size = 9;
         $Quantity->javascript = "onChange=format_number(this);clean_tva({$i});compute_ledger({$i})";
         $array[$i]['quantity'] = $Quantity->input("e_quant" . $i, $quant);
     }
     $f_type = _('Fournisseur');
     ob_start();
     require_once NOALYSS_INCLUDE . '/template/predf_ledger_detail.php';
     $r .= ob_get_contents();
     ob_end_clean();
     // Set correctly the REQUEST param for jrn_type
     $r .= HtmlInput::hidden('jrn_type', 'ACH');
     $r .= HtmlInput::button('add_item', _('Ajout article'), ' onClick="ledger_add_row()"');
     return $r;
 }
コード例 #25
0
 function display_form($p_string = '')
 {
     $r = parent::display_form($p_string);
     // show the second plan
     $r .= '<span style="padding:5px;margin:5px;border:2px double  blue;display:block;">';
     $plan = new Anc_Plan($this->db);
     $plan_id = new ISelect("pa_id2");
     $plan_id->value = $this->db->make_array("select pa_id, pa_name from plan_analytique order by pa_name");
     $plan_id->selected = $this->pa_id2;
     $r .= "Plan Analytique :" . $plan_id->input();
     $r .= HtmlInput::request_to_hidden(array('ac'));
     $poste = new IText();
     $poste->size = 10;
     $r .= "Entre le poste " . $poste->input("from_poste2", $this->from_poste2);
     $choose = new IButton();
     $choose->name = "Choix Poste";
     $choose->label = _("Recherche");
     $choose->javascript = "onClick=search_ca(" . dossier::id() . ",'from_poste2','pa_id2')";
     $r .= $choose->input();
     $r .= " et le poste " . $poste->input("to_poste2", $this->to_poste2);
     $choose->javascript = "onClick=search_ca(" . dossier::id() . ",'to_poste2','pa_id2')";
     $r .= $choose->input();
     $r .= '<span class="notice" style="display:block">' . _('Selectionnez le plan qui vous int&eacute;resse avant de cliquer sur Recherche') . '</span>';
     $r .= '</span>';
     $r .= HtmlInput::submit('Affiche', _('Rechercher'));
     return $r;
 }
コード例 #26
0
 /**
  * @brief return a html string with the search_form
  * \return a HTML string with the FORM
  * \see build_search_sql
  * \see search_form
  * \see list_operation
  */
 function display_search_form()
 {
     $r = '';
     $type = $this->type;
     if ($type == "") {
         $type = 'ALL';
     }
     $r .= '<div id="search_form" style="display:none">';
     $r .= HtmlInput::anchor_hide('&#10761;', '$(\'search_form\').style.display=\'none\';');
     $r .= h2('Recherche', 'class="title"');
     $r .= '<FORM METHOD="GET">';
     $r .= $this->search_form($type);
     $r .= HtmlInput::submit('search', _('Rechercher'));
     $r .= HtmlInput::hidden('ac', $_REQUEST['ac']);
     /*  when called from commercial.php some hidden values are needed */
     if (isset($_REQUEST['sa'])) {
         $r .= HtmlInput::hidden("sa", $_REQUEST['sa']);
     }
     if (isset($_REQUEST['sb'])) {
         $r .= HtmlInput::hidden("sb", $_REQUEST['sb']);
     }
     if (isset($_REQUEST['sc'])) {
         $r .= HtmlInput::hidden("sc", $_REQUEST['sc']);
     }
     if (isset($_REQUEST['f_id'])) {
         $r .= HtmlInput::hidden("f_id", $_REQUEST['f_id']);
     }
     $r .= '</FORM>';
     $r .= '</div>';
     $button = new IButton('tfs');
     $button->label = _("Filtrer");
     $button->javascript = "toggleHideShow('search_form','tfs');";
     $r .= $button->input();
     return $r;
 }
コード例 #27
0
 function display_form_plan($p_array, $p_null, $p_mode, $p_seq, $p_amount, $p_id = '', $p_add_button = true)
 {
     if ($p_array != null) {
         extract($p_array);
     }
     $result = "";
     $plan = new Anc_Plan($this->db);
     $a_plan = $plan->get_list(" order by pa_id ");
     if (empty($a_plan)) {
         return "";
     }
     $table_id = "t" . $p_seq;
     $hidden = new IHidden();
     $readonly = $p_mode == 1 ? false : true;
     $result .= $hidden->input('amount_' . $table_id, $p_amount);
     if ($p_mode == 1) {
         $result .= '<table id="' . $p_id . $table_id . '">';
     } else {
         $result .= '<table>';
     }
     $result .= "<tr>" . $plan->header() . "<th>montant</th></tr>";
     /* compute the number of rows */
     $nb_row = isset($val[$p_seq]) ? count($val[$p_seq]) : 1;
     $count = 0;
     $remain = abs($p_amount);
     $ctrl_remain = "remain" . $this->in_div . $table_id;
     for ($i = 0; $i < $nb_row; $i++) {
         $result .= '<tr>';
         foreach ($a_plan as $r_plan) {
             $array = $this->db->make_array("select po_id as value," . " html_quote(po_name) as label from poste_analytique " . " where pa_id = " . $r_plan['id'] . " order by po_name", $p_null);
             $select = new ISelect("hplan[" . $p_seq . "][]", $array);
             $select->table = 0;
             // view only or editables
             if ($p_mode == 1) {
                 // editable
                 $select->readonly = false;
                 if (isset($hplan) && isset($hplan[$p_seq][$count])) {
                     $select->selected = $hplan[$p_seq][$count];
                 }
             } else {
                 if (isset($hplan) && isset($hplan[$p_seq][$count])) {
                     $select->selected = $hplan[$p_seq][$count];
                 }
                 // view only
                 $select->readOnly = true;
             }
             if ($p_mode == 1) {
                 $result .= '<td>' . $select->input() . '</td>';
             } else {
                 $result .= '<td>' . $select->display() . '</td>';
             }
             $count++;
         }
         $value = new INum();
         $value->javascript = 'onchange="format_number(this);anc_refresh_remain(\'' . $this->in_div . $table_id . '\',\'' . $p_seq . '\')"';
         $value->name = "val[" . $p_seq . "][]";
         $value->size = 6;
         $value->value = isset($val[$p_seq][$i]) ? $val[$p_seq][$i] : abs($p_amount);
         $value->readOnly = $p_mode == 1 ? false : true;
         $remain = bcsub($remain, $value->value);
         $result .= '<td>' . $value->input() . '</td>';
         $result .= "</tr>";
     }
     $result .= "</table>";
     if ($p_add_button && $p_mode == 1) {
         $style_remain = $remain == 0 ? 'style="color:green"' : ' style="color:red"';
         $result .= " Reste à imputer =  " . '<span class="remain" ' . $style_remain . ' id="' . $ctrl_remain . '">' . $remain . '</span>';
         // add a button to add a row
         $button = new IButton();
         $button->javascript = "add_row('" . $p_id . "{$table_id}',{$p_seq});";
         $button->name = "js" . $p_id . $p_seq;
         $button->label = _("Nouvelle ligne");
         $result .= "<br>" . $button->input();
         /**
          * Add a button for distribution key
          * 
          */
         $ledger = HtmlInput::default_value_post("p_jrn", 0);
         if ($ledger == 0) {
             $ledger = $this->db->get_value('select j_jrn_def from jrnx where j_id=$1', array($this->j_id));
         }
         $gDossier = Dossier::id();
         $button_key = new IButton();
         $button_key->javascript = "anc_key_choice(" . $gDossier . ",'" . $p_id . "{$table_id}',{$p_amount},'" . $ledger . "');";
         $button_key->name = "js" . $p_id . $p_seq;
         $button_key->label = _("Clef");
         $result .= $button_key->input();
     }
     return $result;
 }
コード例 #28
0
echo HtmlInput::hidden("ac", $_REQUEST['ac']);
echo HtmlInput::hidden('ledger_type', $ledger_type);
echo dossier::hidden();
echo $bar;
list($count, $html) = $Ledger->list_operation($sql, $offset, $ask_pay);
echo $html;
echo $bar;
$r = HtmlInput::get_to_hidden(array('l', 'date_start', 'date_end', 'desc', 'amount_min', 'amount_max', 'qcode', 'accounting', 'unpaid', 'gDossier', 'ledger_type', 'p_action'));
if (isset($_GET['r_jrn'])) {
    foreach ($_GET['r_jrn'] as $k => $v) {
        $r .= HtmlInput::hidden('r_jrn[' . $k . ']', $v);
    }
}
echo $r;
if ($ask_pay) {
    echo '<p>' . HtmlInput::submit('paid', _('Mise à jour paiement')) . IButton::select_checkbox('fpaida') . IButton::unselect_checkbox('fpaida') . '</p>';
}
echo '</form>';
/*
 * Export to csv
 */
$r = HtmlInput::get_to_hidden(array('l', 'date_paid_start', 'date_paid_end', 'date_start', 'date_end', 'desc', 'amount_min', 'amount_max', 'qcode', 'accounting', 'unpaid', 'gDossier', 'ledger_type', 'p_action'));
if (isset($_GET['r_jrn'])) {
    foreach ($_GET['r_jrn'] as $k => $v) {
        $r .= HtmlInput::hidden('r_jrn[' . $k . ']', $v);
    }
}
echo '<form action="export.php" method="get">';
echo $r;
echo HtmlInput::hidden('act', 'CSV:histo');
echo HtmlInput::submit('viewsearch', _('Export vers CSV'));
コード例 #29
0
 * if you can write
 */
if ($access == 'W') {
    echo HtmlInput::submit('save', _('Sauver'), 'onClick="return verify_ca(\'popup\');"');
    $owner = new Own($cn);
    if ($owner->MY_ANALYTIC != 'nu') {
        echo '<input type="button" class="smallbutton" value="' . _('verifie CA') . '" onClick="verify_ca(\'' . $div . '\');">';
    }
    $per = new Periode($cn, $obj->det->jr_tech_per);
    if ($per->is_closed() == 0 && $owner->MY_STRICT == 'N' && $g_user->check_action(RMOPER) == 1) {
        $remove = new IButton('Effacer');
        $remove->label = _('Effacer');
        $remove->javascript = "return confirm_box(null,'Vous confirmez effacement ?',function () {removeOperation('" . $obj->det->jr_id . "'," . dossier::id() . ",'" . $div . "')})";
        echo $remove->input();
    }
    $reverse = new IButton('bext' . $div);
    $reverse->label = _('Extourner');
    $reverse->javascript = "g('ext" . $div . "').style.display='block'";
    echo $reverse->input();
    echo '</p>';
    echo '</form>';
    echo '<div id="ext' . $div . '" class="inner_box" style="position:relative;top:-150px;display:none">';
    $date = new IDate('ext_date');
    $r = "<form id=\"form_" . $div . "\" onsubmit=\"return false;\">";
    $r .= HtmlInput::hidden('jr_id', $_REQUEST['jr_id']) . HtmlInput::hidden('div', $div) . dossier::hidden() . HtmlInput::hidden('act', 'reverseop');
    $r .= HtmlInput::title_box(_('Extourner'), 'ext' . $div, 'hide');
    $r .= "<p>";
    $r .= _("Extourner une opération vous permet de l'annuler par son écriture inverse");
    $r .= "</p>";
    $r .= _("entrez une date") . " :" . $date->input();
    $r .= '<p  style="text-align:center">';
コード例 #30
0
 function input($p_array = null, $notused = 0)
 {
     global $g_parameter, $g_user;
     if ($p_array != null) {
         extract($p_array);
     }
     $pview_only = false;
     $min_article = $this->get_min_row();
     $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) {
                 throw new Exception(_("Aucune période ouverte"));
             }
         }
         $label = HtmlInput::infobulle(3);
         $f_period = "Période comptable {$label}" . $l_form_per;
     }
     // Ledger (p_jrn)
     //--
     $onchange = "update_bank();ajax_saldo('first_sold');update_name();update_row('fin_item');";
     if ($g_parameter->MY_DATE_SUGGEST == 'Y') {
         $onchange .= 'get_last_date();';
     }
     if ($g_parameter->MY_PJ_SUGGEST == 'Y') {
         $onchange .= 'update_pj();';
     }
     $add_js = 'onchange="' . $onchange . '"';
     $wLedger = $this->select_ledger('FIN', 2);
     if ($wLedger == null) {
         throw new Exception(_('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 = '<span id="bkname">' . $this->get_bank_name() . '</span>';
     if ($this->bank_id == "") {
         echo h2("Journal de banque non configuré " . $this->get_name(), ' class="error"');
         echo '<span class="error"> vous devez donner à ce journal un compte en banque (fiche), modifiez dans CFGLED</span>';
         alert("Journal de banque non configuré " . $this->get_name());
     }
     $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;
     $f_extrait = $wPJ->input() . HtmlInput::hidden('e_pj_suggest', $default_pj);
     $label = HtmlInput::infobulle(7);
     $first_sold = isset($first_sold) ? $first_sold : "";
     $wFirst = new INum('first_sold', $first_sold);
     $last_sold = isset($last_sold) ? $last_sold : "";
     $wLast = new INum('last_sold', $last_sold);
     $max = isset($nb_item) ? $nb_item : $min_article;
     $r .= HtmlInput::hidden('nb_item', $max);
     //--------------------------------------------------
     // financial operation
     //-------------------------------------------------
     $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"} : "";
         $operation_date = new IDate("dateop" . $i);
         $operation_date->value = isset(${'dateop' . $i}) ? ${'dateop' . $i} : "";
         $array[$i]['dateop'] = $operation_date->input();
         ${"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->id = "e_other" . $i;
         $W1->value = $tiers;
         $W1->extra = 'deb';
         // credits
         $W1->typecard = 'deb';
         $W1->style = ' style = "vertical-align:65%"';
         $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->id = $wcard_name->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->tiers = "e_other" . $i;
         $wConcerned->setReadOnly($pview_only);
         $wConcerned->amount_id = "e_other" . $i . "_amount";
         $wConcerned->paid = 'paid';
         $array[$i]['concerned'] = $wConcerned->input();
     }
     ob_start();
     require_once NOALYSS_INCLUDE . '/template/form_ledger_fin.php';
     $r .= ob_get_contents();
     ob_end_clean();
     $r .= create_script("\$('" . $Date->id . "').focus()");
     return $r;
 }