1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/noalyss_ynh.git synced 2024-09-03 19:46:20 +02:00

Update sources 7.01

Update files from sources with last update on noalyss.eu
This commit is contained in:
dudjima 2018-04-13 18:58:28 +02:00
parent cccbaa4e48
commit 3a905a4a87
756 changed files with 153590 additions and 8173 deletions

12
sources/README.export-pdf Normal file
View file

@ -0,0 +1,12 @@
If you want to CONVERT your document to PDF before sending them by email. Or
creating the receipt with a stamp (great ledger analytical )
You have to
1. define the variable
GENERATE_PDF to YES
OFFICE' to 'HOME=/tmp unoconv'
2. Install the convert library for manipulating image
3. Install pdftk to manage the PDF
4. To fix the broken PDF (slower), install also /usr/bin/ps2pdf
For creating PDF file nothing must be install

35
sources/changelog Normal file
View file

@ -0,0 +1,35 @@
(HEAD, tag: rel7001, noalyss_ns3/master, master) 2018-03-31 20:45:32 +0200 490aeb1 update doc
2018-03-28 19:13:46 +0200 8279774 typo
2018-03-24 08:36:45 +0100 2aa285c Merge branch 'master' of ns3:/srv/git/noalyss
2018-03-22 08:25:33 +0100 b2ba19c Fix bug : invalid char during an ajax call
2018-03-21 21:39:15 +0100 86d8e45 Follow-up missing file from action-detail.php
(tag: rel7000, origin/master, origin/HEAD) 2018-03-19 23:55:31 +0100 b809cac Fix last small bug for printing
2018-03-18 13:34:29 +0100 e69411f Fix bug : if security on ledger is activated
2018-03-18 00:13:27 +0100 c0d3c9d Fix typo
2018-03-18 00:11:22 +0100 850d5f5 Fix typo
2018-03-16 14:37:29 +0100 5ae4416 Improve install
2018-03-16 12:18:07 +0100 6140eb3 Improve calc
2018-03-16 06:52:14 +0100 d3f0996 Upgrade : do not propose to upgrade if system up to date
2018-03-15 18:05:51 +0100 1ebd3a3 translate
2018-03-15 17:48:36 +0100 a77140a translate
2018-03-15 14:04:28 +0100 6bf5154 translation
2018-03-15 12:08:35 +0100 6dca184 Fix version for MONO
2018-03-15 11:55:02 +0100 5a98f2e Fix problem with old SQL upgrade
2018-03-15 10:17:44 +0100 d6464a1 upgrade102 Adapt for postgres 9.0
2018-03-15 09:58:07 +0100 851f263 Improve MONO
2018-03-15 09:30:25 +0100 db9c6f2 Install.php
2018-03-15 09:24:20 +0100 8114203 Translate
2018-03-14 22:34:45 +0100 2711cee ANCGL Test if at least one operation is selected
2018-03-12 23:18:29 +0100 e9a89cf Fix : not reliable
2018-03-12 22:57:07 +0100 db94488 Improve upgradeCore
2018-03-12 22:26:30 +0100 0a54848 Bug : Cannot upgrade core
2018-03-12 22:16:24 +0100 c77ba08 UpgradeCore improve
2018-03-12 20:45:40 +0100 66e30db Bug fix : History filter : do not filter on the last columns
2018-03-12 18:36:40 +0100 f32a4d8 Dashboard : cannot zoom event from follow-up
2018-03-12 18:10:53 +0100 5bd038a CSS cosmetic : align selected cell
2018-03-12 11:42:33 +0100 52cd43d Correct bug : Dashboard , zoom action failed
2018-03-12 11:34:06 +0100 ef18c3d Merge Master
2018-03-11 09:52:53 +0100 fff18d9 CSS cosmetic : highlight
2018-03-11 09:42:09 +0100 efad6f4 Task #0001526: Problème navigation - retour en haut de la fenêtre si flèches de navigation
2018-03-10 21:07:46 +0100 a8de73d Follow-up fix small bug with ag_ref
2018-03-10 21:04:59 +0100 f0bb5ef Cosmetic : use Icon_Action::trash

2
sources/dev/SQL/README Normal file
View file

@ -0,0 +1,2 @@
Let you create the special file for managing SQL, these files must always be improved.

85
sources/dev/SQL/index.php Normal file
View file

@ -0,0 +1,85 @@
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
require_once '../../include/constant.php';
const REPOSITORY_DB=1;
const ACCOUNT_DB=2;
require_once NOALYSS_INCLUDE."/lib/database.class.php";
require_once NOALYSS_INCLUDE."/lib/iselect.class.php";
require_once NOALYSS_INCLUDE."/lib/http_input.class.php";
require './table_sql.class.php';
// Show a db connection
$http=new HttpInput();
$gDossier=$http->request('gDossier',"string",-1);
$select = new ISelect('gDossier');
$select->row=20;
$acc=new Database();
$a_dossier=$acc->make_array("select dos_id,dos_id::text||' '||dos_name from ac_dossier order by dos_id");
$a_dossier[]=array('value'=>0,'label'=>'Account_Repository');
$select->value=$a_dossier;
$select->selected = $gDossier;
//////////////////////////////////////////////////////////////////////////////
// If no db is selected then propose one
//////////////////////////////////////////////////////////////////////////////
if ($gDossier==-1) {
?>
<form method="get">
<?php echo $select->input();?>
<?php echo HtmlInput::submit("choose_db", "Valider");?>
</form>
<?php
return;
}
//////////////////////////////////////////////////////////////////////////////
// If db IS selected
//////////////////////////////////////////////////////////////////////////////
/**
* Connect to the selected DB
*/
if ( $gDossier==0)
$cn=new Database();
else
$cn=new Database($gDossier,'dos');
/**
* Display list of all tables and view from selected DB
*/
$table_sql = "select schemaname ||','||tablename,tablename||','||schemaname from pg_tables where schemaname not in ('pg_catalog','information_schema') order by 1";
$select_table = new ISelect('table');
$select_table->row=20;
$select_table->value=$cn->make_array($table_sql);
$select_table->selected = $http->request("table","string", "");
?>
<form method="get">
Choisissez une table
<?php echo $select_table->input();?>
<?php echo HtmlInput::hidden("gDossier", $gDossier);?>,
<?php echo HtmlInput::submit("choose_table", "Valider")?>
<a href="?"> Autre</a>
</form>
<?php
///////////////////////////////////////////////////////////////////////////////
// if a table is select , generate file
//////////////////////////////////////////////////////////////////////////////
$table=$http->request("table","string", "");
if ( $table != "") {
$table_sql=new Table_SQL($cn,$table);
$table_sql->create_class();
echo '<pre>';
$table_sql->send();
echo '</pre>';
}
?>

View file

@ -0,0 +1,74 @@
<?php
/*
* This file is part of NOALYSS.
*
* NOALYSS is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* Description of Table_SQL
*
* @author dany
*/
class Table_SQL {
private $table_name;
private $schema_name;
private $script;
private $db;
function __construct(Database $cn,$p_schematable) {
list($this->schema_name,$this->table_name)= explode(",",$p_schematable);
$this->db=$cn;
}
/**
* Must create a Object to handle the SQL object
*/
function create_class()
{
$this->script="";
$columns=$this->db->get_array("
select column_name,data_type,is_nullable from information_schema.columns
where
table_name=$1
and
table_schema=$2 order by ordinal_position",
array($this->table_name,$this->schema_name)
);
$apk=$this->db->get_array("
select column_name from information_schema.constraint_column_usage where constraint_name = (select constraint_name from
information_schema.table_constraints
where
table_name = $1
and table_schema=$2
and constraint_type='PRIMARY KEY')
;
"
,array($this->table_name,$this->schema_name));
if ( count($apk) > 1 ) {
$this->pk="pk composé";
} else {
$this->pk=$apk[0]['column_name'];
}
ob_start();
include 'template/script_sql.php';
$this->script= ob_get_contents();
ob_clean();
}
function send()
{
echo $this->script;
}
}

View file

@ -0,0 +1,83 @@
<?php echo '&lt;?php '; ?>
/**
* Autogenerated file
* This file is part of NOALYSS.
*
* NOALYSS is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
require_once NOALYSS_INCLUDE.'/lib/noalyss_sql.class.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
/**
* <?php echo 'class_'.$this->table_name."_sql.php"."\n"; ?>
*
*@file
*@brief abstract of the table <?php echo $this->schema_name.".".$this->table_name?>
*/
class <?php echo ucwords($this->table_name)."_SQL";?> extends Noalyss_SQL
{
function __construct(Database $p_cn,$p_id=-1)
{
$this->table = "<?php echo $this->schema_name.".".$this->table_name?>";
$this->primary_key = "<?php echo $this->pk?>";
/*
* List of columns
*/
$this->name=array(
<?php
$sep="";
for ($i=0;$i < count($columns);$i++):
print "\t". $sep.'"'.$columns[$i]['column_name'].'"'.'=>'.'"'.$columns[$i]['column_name'].'"';
$sep=",";
printf("\n");
endfor;
?>
);
/*
* Type of columns
*/
$this->type = array(
<?php
$sep="";
for ($i=0;$i < count($columns);$i++):
$type=$columns[$i]['data_type'];
if ( in_array($columns[$i]['data_type'], array('integer','numeric','bigint'))):
$type="numeric";
elseif (in_array($columns[$i]['data_type'], array('character','character varying','text'))):
$type="text";
elseif (in_array($columns[$i]['data_type'], array('timestamp without timezone','timestamp with timezone','date'))):
$type="date";
endif;
print "\t". $sep.'"'.$columns[$i]['column_name'].'"'.'=>'.'"'.$type.'"';
printf("\n");
$sep=",";
endfor;
?> );
$this->default = array(
"<?php echo $this->pk?>" => "auto"
);
$this->date_format = "DD.MM.YYYY";
parent::__construct($p_cn,$p_id);
}
}

View file

@ -8,7 +8,7 @@
echo "Extract"
cd ..
# CATALOG
xgettext -L PHP -j --from-code=UTF-8 -p html/lang/ html/*.php include/*.php include/template/*.php include/ext/*/*.php include/ext/*/include/*.php include/ext/*/include/template/*.php
xgettext -L PHP -j --from-code=UTF-8 -p html/lang/ html/*.php include/*.php include/template/*.php include/ext/*/*.php include/ext/*/include/*.php include/ext/*/include/template/*.php include/lib/*.php include/ajax/*.php include/export/*.php include/class/*.php
# For dutch
echo "Dutch"

View file

@ -7,7 +7,10 @@ export PGDATABASE=rel671mod1
export PGPORT=5432
(
echo "<?php "
psql -A -F" " -t -c "select '\$menu[]=_('''||replace(me_menu,'''',E'\\\\''')||''');' , '\$desc[]=_('''||replace(me_description,'''',E'\\\\''')||''');' from menu_ref ;"
psql -A -F" " -t -c "select '\$menu[]=_('''||replace(me_menu,'''',E'\\\\''')||''');' ,
'\$desc[]=_('''||replace(me_description,'''',E'\\\\''')||''');'
'\$desc_long[]=_('''||replace(me_description_etendue,'''',E'\\\\''')||''');'
from menu_ref ;"
echo "?>" ) > ../include/database.item.php
(
echo "<?php "
@ -33,5 +36,9 @@ echo "?>" ) >> ../include/database.item.php
echo "<?php "
psql -A -F" " -t -c "select '\$jrn_def_description[]=_('''||replace(jrn_def_description,'''',E'\\\\''')||''');' from jrn_def ;"
echo "?>" ) >> ../include/database.item.php
(
echo "<?php "
psql -A -F" " -t -c "select '\$jrn_type[]=_('''||replace(jrn_desc,'''',E'\\\\''')||''');' from jrn_type ;"
echo "?>" ) >> ../include/database.item.php
echo "File ../include/database.item.php is created"

View file

@ -0,0 +1,99 @@
<?php
/*
* This file is part of NOALYSS.
*
* NOALYSS is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright Author Dany De Bontridder danydb@aevalys.eu
/*! \file
* \brief create GL comptes as PDF
*/
include_once '../../include/constant.php';
require_once NOALYSS_INCLUDE.'/lib/pdf.class.php';
require_once NOALYSS_INCLUDE.'/class/dossier.class.php';
require_once NOALYSS_INCLUDE.'/class/noalyss_parameter_folder.class.php';
bcscale(2);
$_REQUEST['gDossier']=37;
$_GET['gDossier']=37;
$_POST['gDossier']=37;
$cn=Dossier::connect();
$pdf = new PDF($cn);
$pdf->setDossierInfo(" Testing PDF ");
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->setTitle("Test long line",true);
$pdf->SetAuthor('Testing');
// Header
$header = array( "Date", "Référence", "Libellé", "Pièce","Let", "Débit", "Crédit", "Solde" );
// Left or Right aligned
$lor = array( "L" , "L" , "L" , "L" , "R", "R" , "R" , "R" );
// Column widths (in mm)
$width = array( 13 , 20 , 60 , 15 , 12 , 20 , 20 , 20 );
$detail=array('j_date_fmt'=>'01.07.2015',
'jr_internal'=>'A000',
'description'=>'Opération très longue , normalement sur plusieurs lignes, les pages ne doivent pas "sautés"'.
"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non , vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?",
'jr_pj_number'=>'ACH',
'letter'=>123,
'deb_montant'=>12.002,
'cred_montant'=>0);
for ($j=0;$j<20;$j++)
{
$pdf->SetFont('DejaVuCond','',10);
$Libelle=sprintf("%s - %s ",'600001','Charges');
$pdf->write_cell(0, 7, $Libelle, 1, 1, 'C');
$pdf->SetFont('DejaVuCond','',9);
for($i=0;$i<count($header);$i++)
$pdf->write_cell($width[$i], 4, $header[$i], 0, 0, $lor[$i]);
$pdf->line_new();
$detail['jr_internal']=sprintf('A000%04d',$j);
$pdf->SetFont('DejaVuCond','',9);
$i = 0;
$solde=bcsub($detail['deb_montant'],$detail['cred_montant']);
$side=" D";
$pdf->LongLine($width[$i], 6, shrink_date($detail['j_date_fmt']), 0, $lor[$i]);
$i++;
$pdf->LongLine($width[$i], 6, $detail['jr_internal'], 0, $lor[$i] );
$i++;
/* limit set to 40 for the substring */
$triple_point = (mb_strlen($detail['description']) > 40 ) ? '...':'';
// $pdf->LongLine($width[$i], 6, mb_substr($detail['description'],0,40).$triple_point, 0,$lor[$i]);
$pdf->LongLine($width[$i], 6,$detail['description'], 0,$lor[$i]);
$i++;
$pdf->write_cell($width[$i], 6, $detail['jr_pj_number'], 1, 0, $lor[$i]);
$i++;
$pdf->write_cell($width[$i], 6, ($detail['letter']!=-1)?$detail['letter']:'', 1, 0, $lor[$i]);
$i++;
$pdf->write_cell($width[$i], 6, ($detail['deb_montant'] > 0 ? nbm( $detail['deb_montant']) : ''), 0, 0, $lor[$i]);
$i++;
$pdf->write_cell($width[$i], 6, ($detail['cred_montant'] > 0 ? nbm( $detail['cred_montant']) : ''), 0, 0, $lor[$i]);
$i++;
$pdf->write_cell($width[$i], 6, nbm(abs( $solde)).$side, 0, 0, $lor[$i]);
$i++;
$pdf->line_new();
}
//Save PDF to file
$pdf->Output("testing-long-line.pdf", 'D');
exit;
?>

View file

@ -37,132 +37,167 @@ def usage():
-s generate a sql file for a small database test
-l generate a sql file for a large database test
-x generate a extra large sql for a huge database test
-y year
-p first periode of the year (parm_periode.p_id)
-n number of year
"""
sys.exit(-1)
def Add_Attribut_Fiche(p_jft,p_f,p_ad_id,p_value):
# Ajout du nom
#print "insert into jnt_fic_att_value(jft_id,f_id,ad_id) values (%d,%d,%d);" % (p_jft,p_f,p_ad_id)
jnt="%d\t%d\t%d" % (p_jft,p_f,p_ad_id)
#print "insert into attr_value(jft_id,av_text) values (%d,'%s');" % (p_jft,p_value)
attr="%d\t%s" % (p_jft,p_value)
return (jnt,attr)
#insert into fiche_detail(jtf_id,f_id,ad_id,ad_value)
att="%d\t%d\t%d\t%s" % (p_jft,p_f,p_ad_id,p_value)
return att
def Creation_fiche (p_seq_f_id,p_seq_jft_id,p_fd_id,p_type,p_base_poste,p_nbfiche):
fiche=[]
poste_comptable=[]
Attribut=[]
jnt=[]
for i in range (0,p_nbfiche):
#def Creation fiche :
#print "insert into fiche(f_id,fd_id)values (%d,%d);" % (p_seq_f_id,p_fd_id)
fiche.append("%d\t%d" % (p_seq_f_id,p_fd_id))
# ajout nom
nom="%s numero %08d" % (p_type,i+100)
(t1,t2)=Add_Attribut_Fiche(p_seq_jft_id,p_seq_f_id,1,nom)
jnt.append(t1)
t2=Add_Attribut_Fiche(p_seq_jft_id,p_seq_f_id,1,nom)
Attribut.append(t2)
#poste comptable
str_poste_comptable='%s%04d'% (p_base_poste,i+100)
# print "insert into tmp_pcmn (pcm_val,pcm_lib,pcm_val_parent) values (%s,'%s',%s); " % (poste_comptable,nom,p_base_poste)
poste_comptable.append("%s\t%s\t%s" % (str_poste_comptable,nom,p_base_poste))
p_seq_jft_id+=1
(t1,t2)=Add_Attribut_Fiche(p_seq_jft_id,p_seq_f_id,5,str_poste_comptable)
jnt.append(t1)
t2=Add_Attribut_Fiche(p_seq_jft_id,p_seq_f_id,5,str_poste_comptable)
Attribut.append(t2)
p_seq_jft_id+=1
str_quick_code="FID%06d" % (p_seq_f_id)
(t1,t2)=Add_Attribut_Fiche(p_seq_jft_id,p_seq_f_id,23,str_quick_code)
jnt.append(t1)
t2=Add_Attribut_Fiche(p_seq_jft_id,p_seq_f_id,23,str_quick_code)
Attribut.append(t2)
p_seq_f_id+=1
p_seq_jft_id+=1
print "\\echo insert into fiche"
print "copy fiche(f_id,fd_id) from stdin;"
for e in fiche: print e
print "\."
print "\\echo insert into tmp_pcmn"
print "copy tmp_pcmn(pcm_val,pcm_lib,pcm_val_parent) from stdin;"
for e in poste_comptable: print e
print "\."
print "copy jnt_fic_att_value(jft_id,f_id,ad_id) from stdin;"
for e in jnt: print e
print "\."
print "copy attr_value(jft_id,av_text) from stdin;"
print "\\echo insert into fiche_detail"
print "copy fiche_detail(jft_id,f_id,ad_id,ad_value) from stdin;"
for e in Attribut: print e
print "\."
def Create_year(pn_year,pn_nb_year):
print "delete from parm_periode;"
nb_id=1
print "\\echo insert into tmp_pcmn"
print "copy parm_periode (p_id,p_start,p_end,p_exercice,p_closed,p_central) from stdin;"
for i in range (0,pn_nb_year):
for m in range (1,13):
nb_day=30
if m in [1,3,5,7,8,10,12]: nb_day=31
if m == 2 and (i+pn_year)%4 == 0 : nb_day=29
if m == 2 and (i+pn_year)%4 != 0 : nb_day=28
print ("%d,'%s-%02d-%02d','%s-%02d-%02d','%s'")%(nb_id,i+pn_year,m,1,i+pn_year,m,nb_day,i+pn_year)
nb_id=nb_id+1
print "\."
def Creation_operation(p_base,p_type):
jrn_id=1
jrnx_id=1
def Creation_operation(p_base,p_type,p_year):
global jrnx_id
global jrn_id
#jrn="insert into jrn (jr_def_id,jr_montant,jr_comment,jr_date,jr_grpt_id,jr_internal,jr_tech_per)"
jrn="%d\t%.2f\t%s\t%d.%d.2005\t%d\t%s\t%d"
jrn="%d\t%d\t%.2f\t%s\t%02d.%02d.%d\t%d\t%s\t%d"
#jrnx="insert into jrnx (j_date,j_montant,j_poste,j_grpt,j_jrn_def,j_debit,j_tech_user,j_tech_per)"
jrnx="%d.%d.2005\t%.2f\t%s\t%d\t%d\t%s\tSIMULATION\t%d"
jrnx="%d\t%02d.%02d.%d\t%.2f\t%s\t%d\t%d\t%s\tSIMULATION\t%d"
array_jrnx=[]
array_jrn=[]
for loop_periode in range (53,64):
start_periode=periode
end_periode=periode+11
for loop_periode in range (start_periode,end_periode):
for loop_day in range (1,28):
for loop_op in range (0,nb_per_day):
j_montant=round(random.randrange(100,5000)/100.0,2)
j_tva=round(j_montant*0.21,2)
month=loop_periode-52
month=loop_periode-start_periode+1
if p_type == 'V':
j_internal='1VEN-01-%d' % (p_base)
j_client='400%04d' % (random.randrange(1,nb_fiche)+100)
#jrnx1=jrnx % (loop_day,loop_periode-39,j_montant,j_client,p_base,2,'true',loop_periode)
array_jrnx.append(jrnx % (loop_day,month,j_montant,j_client,p_base,2,'true',loop_periode))
array_jrnx.append(jrnx % (jrnx_id,loop_day,month,p_year,j_montant,j_client,p_base,2,'true',loop_periode))
jrnx_id=jrnx_id+1
#print jrnx1
array_jrnx.append(jrnx % (loop_day,month,j_tva,'4511',p_base,2,'false',loop_periode))
array_jrnx.append(jrnx % (jrnx_id,loop_day,month,p_year,j_tva,'4511',p_base,2,'true',loop_periode))
jrnx_id=jrnx_id+1
#print jrnx1
total=j_montant+j_tva
array_jrnx.append( jrnx % (loop_day,month,total,'700',p_base,2,'false',loop_periode))
array_jrnx.append( jrnx % (jrnx_id,loop_day,month,p_year,total,'700',p_base,2,'false',loop_periode))
jrnx_id=jrnx_id+1
#print jrnx1
array_jrn.append(jrn%(2,total,j_internal,loop_day,month,p_base,j_internal,loop_periode))
array_jrn.append(jrn%(jrn_id,2,total,j_internal,loop_day,month,p_year,p_base,j_internal,loop_periode))
jrn_id=jrn_id+1
#print jrn1
p_base+=1
if p_type== 'A':
j_internal='1ACH-01-%d' % (p_base)
j_fournisseur='440%04d' % (random.randrange(0,nb_fiche)+100)
j_charge='61%04d' % (random.randrange(0,nb_charge)+100)
array_jrnx.append(jrnx%(loop_day,month,j_montant,j_fournisseur,p_base,3,'false',loop_periode))
array_jrnx.append(jrnx%(jrnx_id,loop_day,month,p_year,j_montant,j_fournisseur,p_base,3,'false',loop_periode))
jrnx_id=jrnx_id+1
#print jrnx1
array_jrnx.append(jrnx % (loop_day,month,j_tva,'4111',p_base,3,'true',loop_periode))
array_jrnx.append(jrnx % (jrnx_id,loop_day,month,p_year,j_tva,'4111',p_base,3,'false',loop_periode))
jrnx_id=jrnx_id+1
#print jrnx1
total=j_montant+j_tva
array_jrnx.append(jrnx % (loop_day,month,total,j_charge,p_base,3,'true',loop_periode))
array_jrnx.append(jrnx % (jrnx_id,loop_day,month,p_year,total,j_charge,p_base,3,'true',loop_periode))
jrnx_id=jrnx_id+1
#print jrnx1
array_jrn.append(jrn%(3,total,j_internal,loop_day,month,p_base,j_internal,loop_periode))
array_jrn.append(jrn%(jrn_id,3,total,j_internal,loop_day,month,p_year,p_base,j_internal,loop_periode))
jrn_id=jrn_id
##print jrn1
p_base+=1
if p_type== 'O':
j_internal='4ODS-01-%d' % (p_base)
j_banque='400'
j_charge='440'
array_jrnx.append(jrnx%(loop_day,month,j_montant,j_banque,p_base,4,'false',loop_periode))
array_jrnx.append(jrnx % (loop_day,month,j_montant,j_charge,p_base,4,'true',loop_periode))
array_jrnx.append(jrnx%(jrnx_id,loop_day,month,p_year,j_montant,j_banque,p_base,4,'false',loop_periode))
jrnx_id=jrnx_id+1
array_jrnx.append(jrnx % (jrnx_id,loop_day,month,p_year,j_montant,j_charge,p_base,4,'true',loop_periode))
jrnx_id=jrnx_id+1
#print jrnx1
array_jrn.append(jrn%(4,j_montant,j_internal,loop_day,month,p_base,j_internal,loop_periode))
array_jrn.append(jrn%(jrn_id,4,j_montant,j_internal,loop_day,month,p_year,p_base,j_internal,loop_periode))
jrn_id=jrn_id+1
##print jrn1
p_base+=1
if p_type== 'F':
j_internal='1FIN-01-%d' % (p_base)
j_banque='550'
j_charge='400'
array_jrnx.append(jrnx%(loop_day,month,j_montant,j_banque,p_base,1,'false',loop_periode))
array_jrnx.append(jrnx % (loop_day,month,j_montant,j_charge,p_base,1,'true',loop_periode))
array_jrnx.append(jrnx%(jrnx_id,loop_day,month,p_year,j_montant,j_banque,p_base,1,'false',loop_periode))
jrnx_id=jrnx_id+1
array_jrnx.append(jrnx % (jrnx_id,loop_day,month,p_year,j_montant,j_charge,p_base,1,'true',loop_periode))
jrnx_id=jrnx_id+1
#print jrnx1
array_jrn.append(jrn%(1,j_montant,j_internal,loop_day,month,p_base,j_internal,loop_periode))
array_jrn.append(jrn%(jrn_id,1,j_montant,j_internal,loop_day,month,p_year,p_base,j_internal,loop_periode))
jrn_id=jrn_id+1
##print jrn1
p_base+=1
print """copy
jrn (jr_def_id,jr_montant,jr_comment,jr_date,jr_grpt_id,jr_internal,jr_tech_per)
from stdin;"""
for e in array_jrn: print e
print "\."
print "copy jrnx (j_date,j_montant,j_poste,j_grpt,j_jrn_def,j_debit,j_tech_user,j_tech_per) from stdin;"
print "\\echo insert into jrnx"
print "copy jrnx (j_id,j_date,j_montant,j_poste,j_grpt,j_jrn_def,j_debit,j_tech_user,j_tech_per) from stdin;"
for e in array_jrnx: print e
print "\."
print "\\echo insert into jrn"
print """copy jrn (jr_id,jr_def_id,jr_montant,jr_comment,jr_date,jr_grpt_id,jr_internal,jr_tech_per) from stdin;"""
for e in array_jrn: print e
print "\."
################################################################################
# MAIN
@ -170,22 +205,24 @@ from stdin;"""
if len(sys.argv) == 1 :
usage()
is_year=0
is_periode=0
cmd_line=sys.argv[1:]
try :
a1,a2=getopt.getopt(cmd_line,"slxh",['small','large','extra-large','help'])
a1,a2=getopt.getopt(cmd_line,"slxhy:p:n:",['small','large','extra-large','help','year','periode','nbexercice'])
except getopt.GetoptError,msg:
print "ERROR "
print msg.msg
usage()
nb_year=1
for option,value in a1:
if option in ('-h','--help'):
usage()
if option in ('-s','--small'):
nb_fiche=100
nb_charge=50
nb_fiche=120
nb_charge=18
nb_per_day=5
break
if option in ('-l','--large'):
nb_fiche=5000
nb_charge=350
@ -194,9 +231,27 @@ for option,value in a1:
nb_fiche=10000
nb_charge=1500
nb_per_day=500
if option in ('-y','--year'):
year=int(value)
is_year=1
if option in ('-p','--periode'):
periode=int(value)
is_periode=1
if option in ('-n','--nbexercice'):
nb_year=int(value)
if is_year == 0 :
print "Erreur l'annee est obligatoire"
sys.exit(-1)
if is_periode == 0 :
print "Erreur periode (p_id.parm_periode) obligatoire"
sys.exit(-1)
print '\\timing'
print "begin;"
print 'set search_path to public,comptaproc;'
# print "\\set ON_ERROR_STOP on"
# print "begin;"
print "set DateStyle=European;"
# fd_id => client
fd_id=2
@ -216,7 +271,7 @@ Creation_fiche(f_id,jft_id,fd_id,type,'400',nb_fiche)
fd_id=4
type='Fournisseur'
f_id+=nb_fiche+100
jft_id+=2*nb_fiche+100
jft_id+=20*nb_fiche
base_poste='440'
Creation_fiche(f_id,jft_id,fd_id,type,base_poste,nb_fiche)
@ -225,19 +280,23 @@ Creation_fiche(f_id,jft_id,fd_id,type,base_poste,nb_fiche)
fd_id=5
type='Charge '
f_id+=nb_fiche+100
jft_id+=2*nb_fiche+100
jft_id+=20*nb_fiche
base_poste='61'
tot_op=nb_per_day*365
Creation_fiche(f_id,jft_id,fd_id,type,base_poste,nb_charge)
#Creation_operation Vente
Creation_operation(1000,'V')
for i in range(0,nb_year):
#Creation_operation Vente
Creation_operation(1000,'V',year+i)
#Creation_operation Achat
Creation_operation(17000,'A')
#Creation_operation FIN
Creation_operation(34000,'F')
#Creation_operation ODS
Creation_operation(51000,'O')
#Creation_operation Achat
Creation_operation((1+i)*2*tot_op+10000,'A',year+1)
#Creation_operation FIN
Creation_operation((1+i)*3*tot_op+10000,'F',year+1)
#Creation_operation ODS
Creation_operation((1+i)*4*tot_op+10000,'O',year+1)
print "commit;"

View file

@ -31,7 +31,7 @@ PROJECT_NAME = noalyss
# This could be handy for archiving the generated documentation or
# if some version control system is used.
PROJECT_NUMBER = Version-6.8.0.0
PROJECT_NUMBER = Version-7
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
@ -102,7 +102,7 @@ ABBREVIATE_BRIEF = "The $name class" \
# Doxygen will generate a detailed section even if there is only a brief
# description.
ALWAYS_DETAILED_SEC = NO
ALWAYS_DETAILED_SEC = yes
# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
# inherited members of a class in the documentation of that class as if those
@ -111,11 +111,12 @@ ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
# path before files name in the file list and in the header files. If set
# to NO the shortest path that makes the file name unique will be used.
FULL_PATH_NAMES = NO
FULL_PATH_NAMES = YES
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
@ -124,7 +125,7 @@ FULL_PATH_NAMES = NO
# If left blank the directory from which doxygen is run is used as the
# path to strip.
STRIP_FROM_PATH =
STRIP_FROM_PATH = ../..
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
@ -163,7 +164,7 @@ QT_AUTOBRIEF = NO
# The new default is to treat a multi-line C++ comment block as a detailed
# description. Set this tag to YES if you prefer the old behaviour instead.
MULTILINE_CPP_IS_BRIEF = NO
MULTILINE_CPP_IS_BRIEF = YES
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
@ -203,7 +204,7 @@ OPTIMIZE_OUTPUT_FOR_C = YES
# Java. For instance, namespaces will be presented as packages, qualified
# scopes will look different, etc.
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_OUTPUT_JAVA = YES
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
# sources only. Doxygen will then generate output that is more tailored for
@ -382,7 +383,7 @@ INTERNAL_DOCS = NO
# in case and if your file system supports case sensitive file names. Windows
# and Mac users are advised to set this option to NO.
CASE_SENSE_NAMES = YES
CASE_SENSE_NAMES = NO
# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
# will show members with their full class and namespace scopes in the
@ -655,7 +656,7 @@ RECURSIVE = YES
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
EXCLUDE = ../../html/addon ../../include/tfpdf ../../unit-test
EXCLUDE = ../../html/addon ../../include/tfpdf ../../unit-test ../../include/ext ../../include/config.inc.php
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix filesystem feature) are excluded
@ -672,7 +673,6 @@ EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = a?.php \
b?.php \
?.php \
test*.php \
calendar-*.js \
richtext.js \
builder.js \
@ -698,7 +698,7 @@ EXCLUDE_SYMBOLS =
# directories that contain example code fragments that are included (see
# the \include command).
EXAMPLE_PATH =
EXAMPLE_PATH = ../../scenario
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
@ -1048,7 +1048,7 @@ GENERATE_TREEVIEW = NO
# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
# and Class Hierarchy pages using a tree view instead of an ordered list.
USE_INLINE_TREES = NO
USE_INLINE_TREES = YES
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree
@ -1456,7 +1456,7 @@ HIDE_UNDOC_RELATIONS = NO
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
# have no effect if this option is set to NO (the default)
HAVE_DOT = NO
HAVE_DOT = YES
# By default doxygen will write a font called FreeSans.ttf to the output
# directory and reference it in all dot files that doxygen generates. This
@ -1531,7 +1531,7 @@ INCLUDED_BY_GRAPH = YES
# the time of a run. So in most cases it will be better to enable call graphs
# for selected functions only using the \callgraph command.
CALL_GRAPH = NO
CALL_GRAPH = YES
# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
# doxygen will generate a caller dependency graph for every global function
@ -1616,3 +1616,5 @@ GENERATE_LEGEND = YES
# the various graphs.
DOT_CLEANUP = YES
UML_LIMIT_NUM_FIELDS = 40

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,41 @@
<?php
/*
* This file is part of NOALYSS.
*
* NOALYSS isfree software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS isdistributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright (2014) Author Dany De Bontridder <dany@alchimerys.be>
/**
* @file
* @brief This file is used for the first installation or redirect to
* include/admin.inc.php
*/
if (file_exists("../include/config.inc.php") ) {
/* if the file exists it means that NOALYSS is already
* installed
*/
define ('ALLOWED',1);
define ('ALLOWED_ADMIN',1);
require_once '../include/constant.php';
require_once NOALYSS_INCLUDE.'/admin_repo.inc.php';
} else {
// Redirect to install file , if this file exists then
// we can't connect to anything
echo '<HTML><head><META HTTP-EQUIV="REFRESH" content="0;url=install.php"></head><body> Connecting... </body></html>';
}
?>

View file

@ -1,9 +1,10 @@
<?php
/**
/*
* This file is part of NOALYSS under GPL
*
*/
/**
* @file
* @brief this file is used for the ajax from the extension, it will the ajax.php file from the plugin directory
* all the variable are in $_REQUEST
* The code (of the plugin) is required
@ -13,17 +14,18 @@
*/
if ( ! defined ('ALLOWED') ) define ('ALLOWED',1);
require_once '../include/constant.php';
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/class_user.php';
require_once NOALYSS_INCLUDE.'/class_extension.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE.'/lib/icon_action.class.php';
require_once NOALYSS_INCLUDE.'/class/user.class.php';
require_once NOALYSS_INCLUDE.'/class/extension.class.php';
if ( !isset ($_REQUEST['gDossier'])) exit();
require_once NOALYSS_INCLUDE.'/class_own.php';
require_once NOALYSS_INCLUDE.'/class/noalyss_parameter_folder.class.php';
mb_internal_encoding("UTF-8");
global $g_user,$cn,$g_parameter;
$cn=new Database(dossier::id());
$g_parameter=new Own($cn);
$cn=Dossier::connect();
$g_parameter=new Noalyss_Parameter_Folder($cn);
$g_user=new User($cn);
$g_user->check(true);
set_language();

View file

@ -20,7 +20,8 @@
// Copyright Author Dany De Bontridder danydb@aevalys.eu
/**\file
/**
* \file
* \brief this file respond to an ajax request
* The parameters are
* - gDossier
@ -37,12 +38,17 @@
if ( ! defined('ALLOWED')) define ('ALLOWED',1);
require_once '../include/constant.php';
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/class_fiche.php';
require_once NOALYSS_INCLUDE.'/class_iradio.php';
require_once NOALYSS_INCLUDE.'/function_javascript.php';
require_once NOALYSS_INCLUDE.'/ac_common.php';
require_once NOALYSS_INCLUDE.'/class_user.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE.'/class/fiche.class.php';
require_once NOALYSS_INCLUDE.'/lib/iradio.class.php';
require_once NOALYSS_INCLUDE.'/lib/function_javascript.php';
require_once NOALYSS_INCLUDE.'/lib/ac_common.php';
require_once NOALYSS_INCLUDE.'/class/user.class.php';
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
require_once NOALYSS_INCLUDE.'/lib/icon_action.class.php';
require_once NOALYSS_INCLUDE.'/lib/progress_bar.class.php';
$http=new HttpInput();
mb_internal_encoding("UTF-8");
$var = array('gDossier', 'op');
@ -58,19 +64,21 @@ foreach ($var as $v)
}
if ($cont != 0)
exit();
extract($_REQUEST);
set_language();
extract($_REQUEST, EXTR_SKIP );
if ( isset($div)) ajax_disconnected($div);
global $g_user, $cn, $g_parameter;
//
// If database id == 0 then we are not connected to a folder
// but to the administration
//
if ($gDossier<>0) {
$cn = new Database($gDossier);
$g_parameter=new Own($cn);
$cn =Dossier::connect();
$g_parameter=new Noalyss_Parameter_Folder($cn);
$g_user = new User($cn);
$g_user->check(true);
$g_user->check_dossier($gDossier, true);
if ( $g_user->check_dossier($gDossier, true) == 'X' ) {
die(_('Non autorisé'));
}
}
else
{
@ -79,8 +87,18 @@ else
$g_user = new User($cn);
$g_user->check(true);
}
$html = var_export($_REQUEST, true);
// For progress bar, for saving time , we check and answer directly
if ($op == "progressBar") {
$task_id=$http->request("task_id");
$task=new Progress_Bar($task_id);
$task->answer();
return;
}
$html = var_export($_REQUEST, true);
set_language();
if ( LOGINPUT)
{
$file_loginput=fopen($_ENV['TMP'].'/scenario-'.$_SERVER['REQUEST_TIME'].'.php','a+');
@ -99,11 +117,196 @@ if ( LOGINPUT)
fwrite($file_loginput,"include '".basename(__FILE__)."';\n");
fclose($file_loginput);
}
$path = array(
// search accounting , detail ...
"account"=>"ajax_poste",
// display card detail :possible to update or add
"card"=>"ajax_card",
"ledger"=>"ajax_ledger",
// Manage ledger access
"ledger_access"=>"ajax_user_security",
// Manage user profile
"profile"=>"ajax_user_security",
// enable or not the security on ledger
"user_sec_ledger"=>"ajax_user_security",
// enable or not the security on action
"user_sec_action"=>"ajax_user_security",
// Update in once all the ledgers
"ledger_access_all"=>"ajax_user_security",
// From the page CFGSEC,set the actions
"action_access"=>"ajax_user_security",
// From the page CFGSEC,set all the actions
"action_access_all"=>"ajax_user_security",
"todo_list"=>"ajax_todo_list",
// Writing operation History for a card or an accounting
"history"=>"ajax_history",
"mod_doc"=>"ajax_mod_document",
// Periode menu: PERIODE
'periode'=>"ajax_periode",
"mod_predf"=>"ajax_mod_predf_op",
"save_predf"=>"ajax_save_predf_op",
"search_action"=>"ajax_search_action",
"display_profile"=>"ajax_get_profile",
"det_menu"=>"ajax_get_menu_detail",
"add_menu"=>"ajax_add_menu",
"display_submenu"=>"ajax_display_submenu",
"remove_submenu"=>"ajax_remove_submenu",
"cardsearch"=>"ajax_boxcard_search",
"saldo"=>"ajax_bank_saldo",
"up_predef"=>"ajax_update_predef",
"upd_receipt"=>"ajax_get_receipt",
"up_pay_method"=>"ajax_update_payment",
"openancsearch"=>"ajax_anc_search",
"resultancsearch"=>"ajax_anc_search",
"autoanc"=>"ajax_auto_anc_card",
"create_menu"=>"ajax_create_menu",
"modify_menu"=>"ajax_mod_menu",
"mod_stock_repo"=>"ajax_mod_stock_repo",
"view_mod_stock"=>"ajax_view_mod_stock",
"fddetail"=>"ajax_fiche_def_detail",
"vw_action"=>"ajax_view_action",
"minrow"=>"ajax_min_row",
"navigator"=>"ajax_navigator",
"preference"=>"ajax_preference",
"bookmark"=>"ajax_bookmark",
// Tag
"tag_detail"=>"ajax_tag_detail",
"tag_save"=>"ajax_tag_save",
"tag_list"=>"ajax_tag_list",
"tag_add"=>"ajax_tag_add_action",
"tag_remove"=>"ajax_tag_remove_action",
"tag_choose"=>"ajax_tag_choose",
"tag_activate"=>"ajax_tag_save",
// search
"search_display_tag"=>"ajax_search_display_tag",
"search_add_tag"=>"ajax_search_add_tag",
"search_clear_tag"=>"ajax_search_clear_tag",
"calendar_zoom"=>"ajax_calendar_zoom",
"ledger_show"=>"ajax_ledger_show",
//Show the available distribution keys for analytic
"anc_key_choice"=>"ajax_anc_key_choice" ,
// Show the activities computed with the selected distribution key
"anc_key_compute"=>"ajax_anc_key_compute" ,
//From admin, revoke the access to a folder from an user
"folder_remove"=>"ajax_admin",
//From admin, display a list of folder to which the user has no access
"folder_display"=>"ajax_admin",
// From admin, grant the access to a folder to an
// user
"folder_add"=>"ajax_admin",
// From admin, display info and propose to drop the folder
"folder_drop"=>"ajax_admin",
// From admin, display the information of a folder you can
// modify
"folder_modify"=>"ajax_admin",
// From admin, display info and propose to drop the template
"modele_drop"=>"ajax_admin",
// From admin, display the information of a template you can modify
"modele_modify"=>"ajax_admin",
// From admin , upgrade Noalyss
"upgradeCore"=>"ajax_admin",
// From admin , upgrade or install plugin
"upgradePlugin"=>"ajax_admin",
// From admin , install a template
"installTemplate"=>"ajax_admin",
// From dashboard, display detail about last operation
"action_show"=>"ajax_gestion",
// From dashboard, display form for a new event
"action_add"=>"ajax_gestion",
// Save a event given in the short form
"action_save"=>"ajax_gestion",
/* display the lettering , callebd from acc_ledger : dsp_letter*/
"dl"=>"ajax_display_letter",
// Add , delete update anc accounting
"anc_accounting"=>"ajax_anc_accounting",
// Update name and description
"anc_updatedescription"=>"ajax_anc_plan",
// Update, insert or delete accounting frmo CFGPCMN
"accounting"=>"ajax_accounting",
// Show detail of an ANC operation
"anc_detail_op"=>"ajax_anc_detail_operation",
// show history of an analytic account
"history_anc_account"=>"ajax_history_anc_account",
// Display the list of filter saved
"display_search_filter"=>"ajax_search_filter",
// Save search filter
"save_filter"=>"ajax_search_filter",
// Load a search filter
"load_filter"=>"ajax_search_filter",
// search operation to reconcile
'search_op'=>'ajax_search_operation',
// delete operation
'delete_search_operation'=>'ajax_search_filter',
// template category of card
'template_cat_card'=>'ajax_template_cat_card',
// Attribute for category of card
'template_cat_category'=>'ajax_template_cat_category',
// From FollowUp , update a comment on a file
'update_comment_followUp'=>'ajax_follow_up',
// TVA param
"tva_parameter"=>"ajax_tva_parameter"
) ;
if (array_key_exists($op, $path)) {
require NOALYSS_INCLUDE.'/ajax/'.$path[$op].".php";
return;
}
switch ($op)
{
case 'pcmn_update':
require 'ajax_pcmn_update.php';
case "periode_change":
$field=$http->get("field");
$type=$http->get("type");
$exercice=$http->get("exercice","number");
$last=$http->get("last","number");
// if last == 1 then show first and last periode of the
// exercice
$periode_start=0;
$periode_end=0;
if ( $last==1) {
$t_periode=new Periode($cn);
list($per_max,$per_min)=$t_periode->get_limit($exercice);
$periode_start=$per_max->p_id;
$periode_end=$per_min->p_id;
}
$iperiod = new IPeriod($field);
$iperiod->id=$field;
$iperiod->user = $g_user;
$iperiod->cn = $cn;
$iperiod->filter_year = true;
$iperiod->exercice=$exercice;
if ( $type=="from")
{
$iperiod->show_end_date=FALSE;
$iperiod->value=$periode_start;
} elseif ($type=="to"){
$iperiod->show_start_date=FALSE;
$iperiod->value=$periode_end;
} else {
throw new Exception(_("Invalide type"));
}
$iperiod->type = ALL;
echo $iperiod->input();
return;
break;
case "pref_exercice":
$iperiod = new IPeriod("period");
$iperiod->id="setting_period";
$iperiod->user = $g_user;
$iperiod->cn = $cn;
$iperiod->filter_year = true;
$iperiod->exercice=$http->get("exercice");
$iperiod->type = ALL;
echo $iperiod->input();
return;
break;
case "remove_anc":
if ($g_user->check_module('ANCODS') == 0)
exit();
@ -122,7 +325,7 @@ switch ($op)
//--------------------------------------------------
// get the last date of a ledger
case 'lastdate':
require_once NOALYSS_INCLUDE.'/class_acc_ledger_fin.php';
require_once NOALYSS_INCLUDE.'/class/acc_ledger_fin.class.php';
$ledger = new Acc_Ledger_Fin($cn, $_GET['p_jrn']);
$html = $ledger->get_last_date();
$html = escape_xml($html);
@ -137,7 +340,7 @@ EOF;
break;
case 'bkname':
require_once NOALYSS_INCLUDE.'/class_acc_ledger_fin.php';
require_once NOALYSS_INCLUDE.'/class/acc_ledger_fin.class.php';
$ledger = new Acc_Ledger_Fin($cn, $_GET['p_jrn']);
$html = $ledger->get_bank_name();
$html = escape_xml($html);
@ -152,13 +355,13 @@ EOF;
break;
// display new calendar
case 'cal':
require_once NOALYSS_INCLUDE.'/class_calendar.php';
require_once NOALYSS_INCLUDE.'/class/calendar.class.php';
/* others report */
$cal = new Calendar();
$cal->set_periode($per);
$notitle=HtmlInput::default_value_get("notitle", 0);
$notitle=$http->get("notitle", "string",0);
$html = "";
$html = $cal->display($_GET['t'],$notitle);
$html = $cal->display($http->get('t'),$notitle);
$html = escape_xml($html);
header('Content-type: text/xml; charset=UTF-8');
echo <<<EOF
@ -170,7 +373,7 @@ EOF;
break;
/* rem a cat of document */
case 'rem_cat_doc':
require_once NOALYSS_INCLUDE.'/class_document_type.php';
require_once NOALYSS_INCLUDE.'/class/document_type.class.php';
// if user can not return error message
$message="";
if ($g_user->check_action(PARCATDOC) == 0)
@ -218,17 +421,37 @@ EOF;
return;
break;
case 'mod_cat_doc':
require_once NOALYSS_INCLUDE.'/template/document_mod_change.php';
require_once NOALYSS_TEMPLATE.'/document_mod_change.php';
break;
case 'dsp_tva':
$cn = new Database($gDossier);
$Res = $cn->exec_sql("select * from tva_rate order by tva_rate desc");
$cn = Dossier::connect();
// Filter the VAT
$filter=$http->get("filter","string","none");
if ( $filter == 'sale') {
$Res = $cn->exec_sql("select *
from v_tva_rate
where
tva_sale <> '#'
order by tva_rate desc");
} elseif ($filter == "purchase") {
$Res = $cn->exec_sql("select *
from
v_tva_rate
where
tva_purchase <> '#'
order by tva_rate desc");
}else {
$Res = $cn->exec_sql("select * from v_tva_rate
order by tva_rate desc");
}
$Max = Database::num_row($Res);
$r = "";
$r = HtmlInput::anchor_close('tva_select');
$r.=h2(_('Choisissez la TVA '),'class="title"');
$r.=HtmlInput::title_box(_('Choisissez la TVA'),'tva_select',"close","","y");
$r.='<div >';
$r.=_('Filter')." ".HtmlInput::filter_table("tva_select_table",'0,1,2,3' , 1);
$r.=_('Cherche')." ".HtmlInput::filter_table("tva_select_table",'0,1,2,3' , 1);
$r.= '<TABLE style="width:100%" id="tva_select_table">';
$r.=th(_('code'));
$r.=th(_('Taux'));
@ -284,7 +507,7 @@ EOF;
EOF;
break;
case 'label_tva':
$cn = new Database($gDossier);
$cn =Dossier::connect();
if (isNumber($id) == 0)
$value = _('tva inconnue');
else
@ -305,255 +528,7 @@ EOF;
EOF;
break;
/**
* 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,
jr_comment,j_montant, j_debit,jr_internal from jrnx join jrn on (j_grpt=jr_grpt_id)
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">';
$r.='<div style="float:left;">';
// needed hidden var
$r.=dossier::hidden();
if (isset($_REQUEST['ac']))
$r.=HtmlInput::hidden('ac', $_REQUEST['ac']);
if (isset($_REQUEST['sa']))
$r.=HtmlInput::hidden('sa', $_REQUEST['sa']);
if (isset($_REQUEST['acc']))
$r.=HtmlInput::hidden('acc', $_REQUEST['acc']);
$r.=HtmlInput::hidden('j_id', $j_id);
$r.=HtmlInput::hidden('op', $op);
$r.=HtmlInput::hidden('ot', $ot);
$r.='<table>';
//min amount
$line = td(_('Montant min. '));
$min = new INum('min_amount');
$min->value = (isset($min_amount)) ? $min_amount : $row['j_montant'];
$min_amount = (isset($min_amount)) ? $min_amount : $row['j_montant'];
$line.=td($min->input());
// max amount
$line.=td(_('Montant max. '));
$max = new INum('max_amount');
$max->value = (isset($max_amount)) ? $max_amount : $row['j_montant'];
$max_amount = (isset($max_amount)) ? $max_amount : $row['j_montant'];
$line.=td($max->input());
$r.=tr($line);
$date_error="";
// start date
$start = new IDate('search_start');
/* check if date are valid */
if (isset($search_start) && isDate($search_start) == null)
{
ob_start();
alert(_('Date malformée'));
$date_error = ob_get_contents();
ob_end_clean();
$search_start=$first_per->first_day();
}
$start->value = (isset($search_start)) ? $search_start : $first_per->first_day();
$line = td('Date Debut') . td($start->input());
// end date
$end = new IDate('search_end');
/* check if date are valid */
if (isset($search_end) && isDate($search_end) == null)
{
ob_start();
alert(_('Date malformée'));
$date_error = ob_get_contents();
ob_end_clean();
$search_end=$last_per->last_day();
}
$end->value = (isset($search_end)) ? $search_end : $last_per->last_day();
$line.=td(_('Date Fin')) . td($end->input());
$r.=tr($line);
// Side
$line = td(_('Debit / Credit'));
$iside = new ISelect('side');
$iside->value = array(
array('label' => _('Debit'), 'value' => 0),
array('label' => _('Credit'), 'value' => 1),
array('label' => _('Les 2'), 'value' => 3)
);
/**
*
* if $side is not then
* - if jl_id exist and is > 0 show by default all the operation (=3)
* - if jl_id does not exist or is < 0 then show by default the opposite
* side
*/
if (!isset($side))
{
// find the jl_id of the j_id
$jl_id = $cn->get_value('select comptaproc.get_letter_jnt($1)', array($j_id));
if ($jl_id == null)
{
// get the other side
$iside->selected = (isset($side)) ? $side : (($row['j_debit'] == 't') ? 1 : 0);
$side = (isset($side)) ? $side : (($row['j_debit'] == 't') ? 1 : 0);
}
else
{
// show everything
$iside->selected = 3;
$side = 3;
}
}
else
{
$iside->selected = $side;
}
$r.=tr($line . td($iside->input()));
$r.='</table>';
$r.='</div>';
$r.='<div style="float:left;padding-left:100">';
$r.=HtmlInput::submit('search', 'Rechercher');
$r.='</div>';
$r.='</form>';
$r.='</div>';
$form = '<div id="result" style="float:top;clear:both">';
$form.='<FORM id="letter_form" METHOD="post">';
$form.=dossier::hidden();
if (isset($_REQUEST['p_action']))
$form.=HtmlInput::hidden('p_action', $_REQUEST['p_action']);
if (isset($_REQUEST['sa']))
$form.=HtmlInput::hidden('sa', $_REQUEST['sa']);
if (isset($_REQUEST['acc']))
$form.=HtmlInput::hidden('acc', $_REQUEST['acc']);
if (isset($_REQUEST['sc']))
$form.=HtmlInput::hidden('sc', $_REQUEST['sc']);
if (isset($_REQUEST['sb']))
$form.=HtmlInput::hidden('sb', $_REQUEST['sb']);
if (isset($_REQUEST['f_id']))
$form.=HtmlInput::hidden('f_id', $_REQUEST['f_id']);
// display a list of operation from the other side + box button
if ($ot == 'account')
{
$obj = new Lettering_Account($cn, $row['j_poste']);
if (isset($search_start))
$obj->start = $search_start;
if (isset($search_end))
$obj->end = $search_end;
if (isset($max_amount))
$obj->fil_amount_max = $max_amount;
if (isset($min_amount))
$obj->fil_amount_min = $min_amount;
if (isset($side))
$obj->fil_deb = $side;
$form.=$obj->show_letter($j_id);
}
else if ($ot == 'card')
{
$obj = new Lettering_Card($cn, $row['j_qcode']);
if (isset($search_start))
$obj->start = $search_start;
if (isset($search_end))
$obj->end = $search_end;
if (isset($max_amount))
$obj->fil_amount_max = $max_amount;
if (isset($min_amount))
$obj->fil_amount_min = $min_amount;
if (isset($side))
$obj->fil_deb = $side;
$form.=$obj->show_letter($j_id);
}
else
{
$form.=_('Mauvais type objet');
}
$form.=HtmlInput::submit('record', _('Sauver')) . $ret->input();
$form.='</FORM>';
$form.='</div>';
$html = $r . $form;
$html.=$date_error;
// echo $html;exit;
$html = escape_xml($html);
header('Content-type: text/xml; charset=UTF-8');
echo <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<data>
<code>detail</code>
<value>$html</value>
</data>
EOF;
break;
case 'mod_doc':
require_once NOALYSS_INCLUDE.'/ajax_mod_document.php';
break;
case 'input_per':
require_once NOALYSS_INCLUDE.'/ajax_mod_periode.php';
break;
case 'save_per':
require_once NOALYSS_INCLUDE.'/ajax_mod_periode.php';
break;
case 'mod_predf':
require_once NOALYSS_INCLUDE.'/ajax_mod_predf_op.php';
break;
case 'save_predf':
require_once NOALYSS_INCLUDE.'/ajax_save_predf_op.php';
break;
case 'search_op':
require_once NOALYSS_INCLUDE.'/search.inc.php';
break;
case 'search_action':
require_once NOALYSS_INCLUDE.'/ajax_search_action.php';
break;
case 'display_profile':
require_once NOALYSS_INCLUDE.'/ajax_get_profile.php';
break;
case 'det_menu':
require_once NOALYSS_INCLUDE.'/ajax_get_menu_detail.php';
break;
case 'add_menu':
require_once NOALYSS_INCLUDE.'/ajax_add_menu.php';
break;
case 'display_submenu':
require_once NOALYSS_INCLUDE.'/ajax_display_submenu.php';
break;
case 'remove_submenu':
require_once NOALYSS_INCLUDE.'/ajax_remove_submenu.php';
break;
case 'cardsearch':
require_once NOALYSS_INCLUDE.'/ajax_boxcard_search.php';
break;
case 'add_plugin':
$me_code = new IText('me_code');
$me_file = new IText('me_file');
@ -561,15 +536,16 @@ EOF;
$me_description = new IText("me_description");
$me_parameter = new IText("me_parameter");
$new = true;
require_once NOALYSS_INCLUDE.'/ajax_plugin_detail.php';
require_once NOALYSS_INCLUDE.'/ajax/ajax_plugin_detail.php';
break;
case 'mod_plugin':
$m = $cn->get_array("select me_code,me_file,me_menu,me_description,me_parameter
from menu_ref where me_code=$1", array($me_code));
if (empty($m))
{
echo HtmlInput::title_box("Ce plugin n'existe pas ", $ctl);
echo "<p>Il y a une erreur, ce plugin n'existe pas";
echo HtmlInput::title_box(_("Ce plugin n'existe pas "), $ctl,"close","","y");
echo "<p>"._("Il y a une erreur, ce plugin n'existe pas").
"</p>";
exit;
}
$me_code = new IText('me_code', $m[0] ['me_code']);
@ -578,92 +554,8 @@ EOF;
$me_description = new IText("me_description", $m[0] ['me_description']);
$me_parameter = new IText("me_parameter", $m[0] ['me_parameter']);
$new = false;
require_once NOALYSS_INCLUDE.'/ajax_plugin_detail.php';
require_once NOALYSS_INCLUDE.'/ajax/ajax_plugin_detail.php';
break;
case 'saldo':
require_once NOALYSS_INCLUDE.'/ajax_bank_saldo.php';
break;
case 'up_predef':
require_once NOALYSS_INCLUDE.'/ajax_update_predef.php';
break;
case 'upd_receipt':
require_once NOALYSS_INCLUDE.'/ajax_get_receipt.php';
break;
case 'up_pay_method':
require_once NOALYSS_INCLUDE.'/ajax_update_payment.php';
break;
case 'openancsearch':
case 'resultancsearch':
require_once NOALYSS_INCLUDE.'/ajax_anc_search.php';
break;
case 'autoanc':
require_once NOALYSS_INCLUDE.'/ajax_auto_anc_card.php';
break;
case 'create_menu';
require_once NOALYSS_INCLUDE.'/ajax_create_menu.php';
break;
case 'modify_menu';
require_once NOALYSS_INCLUDE.'/ajax_mod_menu.php';
break;
case 'mod_stock_repo':
require_once NOALYSS_INCLUDE.'/ajax_mod_stock_repo.php';
break;
case 'view_mod_stock':
require_once NOALYSS_INCLUDE.'/ajax_view_mod_stock.php';
break;
case 'fddetail':
require_once NOALYSS_INCLUDE.'/ajax_fiche_def_detail.php';
break;
case 'vw_action':
require_once NOALYSS_INCLUDE.'/ajax_view_action.php';
break;
case 'minrow':
require_once NOALYSS_INCLUDE.'/ajax_min_row.php';
break;
case 'navigator':
require_once NOALYSS_INCLUDE.'/ajax_navigator.php';
break;
case 'preference':
require_once NOALYSS_INCLUDE.'/ajax_preference.php';
break;
case 'bookmark':
require_once NOALYSS_INCLUDE.'/ajax_bookmark.php';
break;
case 'tag_detail':
require_once NOALYSS_INCLUDE.'/ajax_tag_detail.php';
break;
case 'tag_save':
require_once NOALYSS_INCLUDE.'/ajax_tag_save.php';
break;
case 'tag_list':
require_once NOALYSS_INCLUDE.'/ajax_tag_list.php';
break;
case 'tag_add':
require_once NOALYSS_INCLUDE.'/ajax_tag_add_action.php';
break;
case 'tag_remove':
require_once NOALYSS_INCLUDE.'/ajax_tag_remove_action.php';
break;
case 'tag_choose':
require_once NOALYSS_INCLUDE.'/ajax_tag_choose.php';
break;
case 'tag_choose':
require_once NOALYSS_INCLUDE.'/ajax_tag_choose.php';
break;
case 'search_display_tag':
require_once NOALYSS_INCLUDE.'/ajax_search_display_tag.php';
break;
case 'search_add_tag':
require_once NOALYSS_INCLUDE.'/ajax_search_add_tag.php';
break;
case 'search_clear_tag':
require_once NOALYSS_INCLUDE.'/ajax_search_clear_tag.php';
break;
case 'calendar_zoom':
require_once NOALYSS_INCLUDE.'/ajax_calendar_zoom.php';
break;
case 'ledger_show':
require_once NOALYSS_INCLUDE.'/ajax_ledger_show.php';
case 'ledger_description':
$ajrn=$cn->get_array('select jrn_def_name,jrn_def_description from jrn_def where jrn_def_id=$1',array($l));
if ( count($ajrn)==1)
@ -678,72 +570,6 @@ EOF;
exit();
break;
case 'anc_key_choice':
/*
* Show the available distribution keys for analytic
*/
require_once NOALYSS_INCLUDE.'/ajax_anc_key_choice.php';
break;
case 'anc_key_compute':
/*
* Show the activities computed with the selected distribution key
*/
require_once NOALYSS_INCLUDE.'/ajax_anc_key_compute.php';
break;
case 'account_update':
/**
* update an accounting (from CFGPCMN)
*/
require_once NOALYSS_INCLUDE.'/ajax_account_update.php';
break;
// From admin, revoke the access to a folder from an
// user
case 'folder_remove':
require_once NOALYSS_INCLUDE.'/ajax_admin.php';
break;
// From admin, display a list of folder to which the user has
// no access
case 'folder_display':
require_once NOALYSS_INCLUDE.'/ajax_admin.php';
break;
// From admin, grant the access to a folder to an
// user
case 'folder_add':
require_once NOALYSS_INCLUDE.'/ajax_admin.php';
break;
// From admin, display info and propose to drop the folder
case 'folder_drop':
require_once NOALYSS_INCLUDE.'/ajax_admin.php';
break;
// From admin, display the information of a folder you can
// modify
case 'folder_modify':
require_once NOALYSS_INCLUDE.'/ajax_admin.php';
break;
// From admin, display info and propose to drop the template
case 'modele_drop':
require_once NOALYSS_INCLUDE.'/ajax_admin.php';
break;
// From admin, display the information of a template you can
// modify
case 'modele_modify':
require_once NOALYSS_INCLUDE.'/ajax_admin.php';
break;
// From dashboard, display detail about last operation
case 'action_show':
require_once NOALYSS_INCLUDE.'/ajax_gestion.php';
break;
// From dashboard, display form for a new event
case 'action_add':
require_once NOALYSS_INCLUDE.'/ajax_gestion.php';
break;
// Save a event given in the short form
case 'action_save':
require_once NOALYSS_INCLUDE.'/ajax_gestion.php';
break;
default:
var_dump($_GET);
var_dump($_REQUEST);
}

View file

@ -0,0 +1,65 @@
<?php
/*
* This file is part of NOALYSS.
*
* NOALYSS is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright Author Dany De Bontridder danydb@aevalys.eu
/*!\file
* \brief this file let you debug and test the different functionnalities, there are 2 important things to do
* It is only a quick and dirty testing. You should use a tool as PHPUNIT for the unit testing
*
* - first do not forget to create the authorized_debug file in the html folder
* - secund the test must adapted to this page : if you do a post (or get) from a test, you won't get any result
* if the $_REQUEST[test_select] is not set, so set it .
*/
include_once "../include/constant.php";
include_once NOALYSS_INCLUDE."/lib/ac_common.php";
require_once NOALYSS_INCLUDE."/lib/database.class.php";
require_once NOALYSS_INCLUDE."/class/dossier.class.php";
require_once NOALYSS_INCLUDE."/lib/html_input.class.php";
require_once NOALYSS_INCLUDE."/lib/http_input.class.php";
require_once NOALYSS_INCLUDE."/lib/function_javascript.php";
require_once NOALYSS_INCLUDE."/class/user.class.php";
$http=new HttpInput();
$gDossier=$http->request('gDossier', "number",-1);
if ($gDossier==-1)
{
echo " Vous devez donner le dossier avec paramètre gDossier dans l'url, exemple http://localhost/noalyss/html/test.php?gDossier=25";
exit();
}
$gDossierLogInput=$gDossier;
global $cn, $g_user, $g_succeed, $g_failed;
$cn=Dossier::connect();
$g_parameter=new Noalyss_Parameter_Folder($cn);
$g_user=new User($cn);
if (!file_exists('authorized_debug'))
{
echo "Pour pouvoir utiliser ce fichier vous devez creer un fichier nomme authorized_debug
dans le repertoire html du server";
exit();
}
define('ALLOWED', 1);
define('AJAX_TEST', 1);
$w=$http->request("TestAjaxFile");
require_once $w;

View file

@ -31,14 +31,14 @@
* Must return at least tva, htva and tvac
*/
require_once '../include/constant.php';
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/class_acc_compute.php';
require_once NOALYSS_INCLUDE.'/class_dossier.php';
require_once NOALYSS_INCLUDE.'/class_acc_tva.php';
require_once NOALYSS_INCLUDE.'/class_user.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE.'/class/acc_compute.class.php';
require_once NOALYSS_INCLUDE.'/class/dossier.class.php';
require_once NOALYSS_INCLUDE.'/class/acc_tva.class.php';
require_once NOALYSS_INCLUDE.'/class/user.class.php';
// Check if the needed field does exist
extract ($_GET);
extract ($_GET, EXTR_SKIP );
foreach (array('t','c','p','q','n','gDossier') as $a)
{
if ( ! isset (${$a}) )
@ -48,7 +48,7 @@ foreach (array('t','c','p','q','n','gDossier') as $a)
}
}
$cn=new Database(dossier::id());
$cn=Dossier::connect();
$User=new User($cn);
$User->Check();
// Retrieve the rate of vat, it $t == -1 it means no VAT

View file

@ -19,10 +19,10 @@
*/
require_once '../include/constant.php';
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/class_user.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE.'/class/user.class.php';
$cn=new Database($_GET['gDossier']);
$cn=Dossier::connect();
global $g_user;
$g_user=new User($cn);
$g_user->Check();
@ -30,12 +30,13 @@ $g_user->check_dossier($_GET['gDossier']);
$res=$cn->exec_sql("select distinct code,description from get_profile_menu($1) where code ~* $2 or description ~* $3 order by code limit 5 ",array($g_user->get_profile(),$_POST['acs'],$_POST['acs']));
$nb=Database::num_row($res);
echo "<ul>";
set_language();
for ($i = 0;$i< $nb;$i++)
{
$row=Database::fetch_array($res,$i);
echo "<li>";
echo $row['code'];
echo '<span class="informal"> '.$row['description'].'</span></li>';
echo '<span class="informal"> '._($row['description']).'</span></li>';
}
echo "</ul>";
if ( $nb == 0 ) {

View file

@ -24,13 +24,17 @@ define('ALLOWED',1);
* \brief Main file
*/
require_once '../include/constant.php';
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/class_dossier.php';
require_once NOALYSS_INCLUDE.'/user_common.php';
require_once NOALYSS_INCLUDE.'/ac_common.php';
require_once NOALYSS_INCLUDE.'/function_javascript.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE.'/class/dossier.class.php';
require_once NOALYSS_INCLUDE.'/lib/user_common.php';
require_once NOALYSS_INCLUDE.'/lib/ac_common.php';
require_once NOALYSS_INCLUDE.'/lib/function_javascript.php';
require_once NOALYSS_INCLUDE.'/constant.security.php';
require_once NOALYSS_INCLUDE.'/class_html_input.php';
require_once NOALYSS_INCLUDE.'/lib/html_input.class.php';
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
require_once NOALYSS_INCLUDE.'/lib/icon_action.class.php';
$http=new HttpInput();
mb_internal_encoding("UTF-8");
// if gDossier is not set redirect to form to choose a folder
@ -48,7 +52,60 @@ if ( ! isset ($_SESSION['g_theme']))
exit();
}
$style_user=HtmlInput::default_value_post("style_user",$_SESSION['g_theme']);
$cn = Dossier::connect();
global $g_user, $cn,$g_parameter,$http;
$g_user = new User($cn);
$http=new HttpInput();
/*
* check that the database is not empty
*/
if ( ! $cn->exist_table('version')) {
echo '<h2 class="notice">'._('Désolé').'</h2>';
echo _('Ce dossier est vide');
echo '<p>';
echo '<a class="button" href="do.php">'._("Retour à l'accueil").'</a>';
echo '</p>';
return;
}
/*
* Set the user preference
*/
if ( isset ($_POST['set_preference'])) {
//// Save value
$style_user=$http->post("style_user","string","Classique");
$lang=$http->post("lang","string","fr_FR.utf8");
$p_size=$http->post("p_size","number",50);
$pass_1=$http->post("pass_1","string","");
$pass_2=$http->post("pass_2","string","");
$p_email=$http->post("p_email","string","");
$minirap=$http->post("minirap","number",0);
$period=$http->post("period","number");
$csv_fieldsep=$http->post("csv_fieldsep","number");
$csv_decimal=$http->post("csv_decimal","number");
$csv_encoding=$http->post("csv_encoding");
if (strlen(trim($pass_1)) != 0 && strlen(trim($pass_2)) != 0)
{
$g_user->save_password($pass_1,$pass_2);
}
$g_user->set_periode($period);
$g_user->save_global_preference('THEME', $style_user);
$g_user->save_global_preference('LANG', $lang);
$g_user->save_global_preference('PAGESIZE', $p_size);
$g_user->save_global_preference('csv_fieldsep', $csv_fieldsep);
$g_user->save_global_preference('csv_decimal', $csv_decimal);
$g_user->save_global_preference('csv_encoding', $csv_encoding);
$g_user->set_mini_report($minirap);
$_SESSION['g_theme']=$style_user;
$_SESSION['g_pagesize']=$p_size;
$_SESSION['g_lang']=$lang;
$g_user->save_email($p_email);
}
$style_user=$http->post("style_user","string",$_SESSION['g_theme']);
html_page_start($style_user);
if ( DEBUG ) {
@ -62,11 +119,24 @@ if ( DEBUG ) {
<?php
var_dump($_GET);
?>
<h2>$_REQUEST</h2>
<?php
var_dump($_REQUEST);
?>
<h2>$_SESSION</h2>
<?php
var_dump($_SESSION);
?>
<h2>$GLOBALS</h2>
<?php
var_dump($GLOBALS);
?>
</div>
<script>
function show_debug_request() {
var visible=document.getElementById('debug_div').style.display;
console.log(visible);
var new_state="";
if ( visible == 'block') { new_state='none';}
else
@ -80,28 +150,10 @@ if ( DEBUG ) {
<?php
}
global $g_user, $cn,$g_parameter;
$cn = new Database(Dossier::id());
/*
* check that the database is not empty
*/
if ( ! $cn->exist_table('version')) {
echo '<h2 class="notice">'._('Désolé').'</h2>';
echo _('Ce dossier est vide');
echo '<p>';
echo '<a class="button" href="do.php">'._("Retour à l'accueil").'</a>';
echo '</p>';
return;
}
$g_user = new User($cn);
$g_parameter=new Own($cn);
$g_parameter=new Noalyss_Parameter_Folder($cn);
$g_user->Check();
$g_user->check_dossier(Dossier::id());
load_all_script();
/* Check Browser version if < IE6 then unsupported */
$browser = $_SERVER['HTTP_USER_AGENT'];
@ -138,15 +190,19 @@ if ($cn->exist_table('version') == false)
}
if (DBVERSION < dossier::get_version($cn))
{
echo '<h2 class="error" style="font-size:12px">' . _("Attention: la version de base de donnée est supérieure à la version du programme, vous devriez mettre à jour") . '</h2>';
$a = _("cliquez ici pour mettre à jour ");
$base =NOALYSS_URL."/admin-noalyss.php?action=upgrade&sb=application";
echo '<h2 class="error" style="font-size:12px">' .
_("Attention: la version de base de donnée est supérieure à la version du programme, vous devriez mettre à jour") ,
'<a hreF="' . $base . '">' . $a . '</a></h2>',
'</h2>';
}
if (DBVERSION > dossier::get_version($cn))
{
echo '<h2 class="error" style="font-size:12px">' . _("Votre base de données n'est pas à jour") . ' ';
$a = _("cliquez ici pour appliquer le patch");
$base = dirname($_SERVER['REQUEST_URI']);
if ($base == '/') { $base = ''; }
$base .= '/admin/setup.php';
$base =NOALYSS_URL.'/admin-noalyss.php?action=upgrade&sb=database';
echo '<a hreF="' . $base . '">' . $a . '</a></h2>';
}
@ -164,28 +220,20 @@ if ($oPeriode->load() == -1)
$module_selected = -1;
/*
* Set the user preference
?>
<script>
/**
* All the onload must be here otherwise the other will overwritten
* @returns {undefined}
*/
if ( isset ($_POST['set_preference'])) {
//// Save value
extract($_POST);
if (strlen(trim($pass_1)) != 0 && strlen(trim($pass_2)) != 0)
{
$g_user->save_password($pass_1,$pass_2);
}
$g_user->set_periode($period);
$g_user->save_global_preference('THEME', $style_user);
$g_user->save_global_preference('LANG', $lang);
$g_user->save_global_preference('PAGESIZE', $p_size);
$g_user->set_mini_report($minirap);
$_SESSION['g_theme']=$style_user;
$_SESSION['g_pagesize']=$p_size;
$_SESSION['g_lang']=$lang;
$g_user->save_email($p_email);
window.onload=function ()
{
create_anchor_up();
init_scroll();
sorttable.init
}
</script>
<?php
/*
* if an action is requested
@ -250,9 +298,13 @@ if (isset($_REQUEST['ac']))
} catch (Exception $e) {
if ( $e->getCode() == 10 ) {
alert(_('Accès menu impossible'));
echo '<a class="button" href="do.php?'.Dossier::get().'">';
echo _('Retour');
echo '</a>';
}
else {
alert($e->getTraceAsString());
alert($e->getMessage());
record_log($e->getTraceAsString());
}
}
}
@ -261,6 +313,8 @@ else
$default = find_default_module();
$user_profile=$g_user->get_profile();
try
{
if ( $user_profile == "" )
throw new Exception (_('Aucun profil utilisateur'));
@ -276,6 +330,13 @@ else
show_module($menu_id);
$all[0] = $default;
show_menu($menu_id);
}
catch (Exception $exc)
{
echo $exc->getMessage();
record_log($exc->getTraceAsString());
}
}

View file

@ -0,0 +1,201 @@
# Les postesg*(-1)
$C10=round([10%s],2)*(-1)
$C100=round([100%s],2)*(-1)
$C101=round([101%s],2)
$C11=round([11%s],2)*(-1)
$C12=round([12%s],2)*(-1)
$C13=round([13%s],2)*(-1)
$C130=round([130%s],2)*(-1)
$C131=round([131%s],2)*(-1)
$C1310=round([1310%s],2)*(-1)
$C1311=round([1311%s],2)*(-1)
$C132=round([132%s],2)*(-1)
$C133=round([133%s],2)*(-1)
$C14=round([14%s],2)*(-1)
$C140=round([140%s],2)*(-1)
$C141=round([141%s],2)
$C15=round([15%s],2)*(-1)
$C16=round([16%s],2)*(-1)
$C160=round([160%s],2)*(-1)
$C161=round([161%s],2)*(-1)
$C162=round([162%s],2)*(-1)
$C163=round([163%s],2)*(-1)
$C164=round([164%s],2)*(-1)
$C165=round([165%s],2)*(-1)
$C168=round([168%s],2)*(-1)
$C17=round([17%s],2)*(-1)
$C170=round([170%s],2)*(-1)
$C171=round([171%s],2)*(-1)
$C172=round([172%s],2)*(-1)
$C173=round([173%s],2)*(-1)
$C174=round([174%s],2)*(-1)
$C175=round([175%s],2)*(-1)
$C176=round([176%s],2)*(-1)
$C178=round([178%s],2)*(-1)
$C179=round([179%s],2)*(-1)
$C2=round([2%s],2)*(-1)
$C20=round([20%s],2)
$C21=round([21%s],2)
$C22=round([22%s],2)
$C23=round([23%s],2)
$C24=round([24%s],2)
$C25=round([25%s],2)
$C26=round([26%s],2)
$C27=round([27%s],2)
$C28=round([28%s],2)
$C29=round([29%s],2)
$C290=round([290%s],2)
$C291=round([291%s],2)
$C3=round([3%s],2)
$C30=round([30%s],2)
$C31=round([31%s],2)
$C32=round([32%s],2)
$C33=round([33%s],2)
$C34=round([34%s],2)
$C35=round([35%s],2)
$C36=round([36%s],2)
$C37=round([37%s],2)
$C40=round([40%s],2)
$C41=round([41%s],2)
$C42=round([42%s],2)*(-1)
$C43=round([43%s],2)*(-1)
$C439=round([439%s],2)*(-1)
$C44=round([44%s],2)*(-1)
$C440=round([440%s],2)*(-1)
$C441=round([441%s],2)*(-1)
$C444=round([444%s],2)*(-1)
$C45=round([45%s],2)*(-1)
$C450=round([450%s],2)*(-1)
$C451=round([451%s],2)*(-1)
$C452=round([452%s],2)*(-1)
$C453=round([453%s],2)*(-1)
$C454=round([454%s],2)*(-1)
$C455=round([455%s],2)*(-1)
$C456=round([456%s],2)*(-1)
$C457=round([457%s],2)*(-1)
$C458=round([458%s],2)*(-1)
$C459=round([459%s],2)*(-1)
$C46=round([46%s],2)
$C47=round([47%s],2)*(-1)
$C48=round([48%s],2)*(-1)
$C49=round([49%s],2)
$C490=round([490%s],2)
$C491=round([491%s],2)
$C492=round([492%s],2)*(-1)
$C493=round([493%s],2)*(-1)
$C50=round([50%s],2)
$C51=round([51%s],2)
$C52=round([52%s],2)
$C53=round([53%s],2)
$C54=round([54%s],2)
$C55=round([55%s],2)
$C56=round([56%s],2)
$C57=round([57%s],2)
$C58=round([58%s],2)
$C60=round([60%s],2)
$C61=round([61%s],2)
$C62=round([62%s],2)
$C63=round([63%s],2)
$C630=round([630%s],2)
$C631=round([631%s],2)
$C632=round([632%s],2)
$C633=round([633%s],2)
$C634=round([634%s],2)
$C635=round([635%s],2)
$C636=round([636%s],2)
$C637=round([637%s],2)
$C649=round([649%s],2)*(-1)
$C64=round([64%s],2)
$C65=round([65%s],2)
$C66=round([66%s],2)
$C67=round([67%s],2)
$C68=round([68%s],2)
$C680=round([680%s],2)
$C689=round([689%s],2)
$C69=round([69%s],2)
$C690=round([690%s],2)
$C691=round([691%s],2)
$C692=round([692%s],2)
$C6920=round([6920%s],2)
$C6921=round([6921%s],2)
$C693=round([693%s],2)
$C694=round([694%s],2)
$C695=round([695%s],2)
$C696=round([696%s],2)
$C7=round([7%s],2)*(-1)
$C70=round([70%s],2)*(-1)
$C71=round([71%s],2)*(-1)
$C73=round([73%s],2)*(-1)
$C72=round([72%s],2)*(-1)
$C74=round([74%s],2)*(-1)
$C75=round([75%s],2)*(-1)
$C76=round([76%s],2)*(-1)
$C77=round([77%s],2)*(-1)
$C780=round([780%s],2)*(-1)
$C789=round([789%s],2)*(-1)
$C79=round([79%s],2)*(-1)
$C790=round([790%s],2)*(-1)
$C791=round([791%s],2)*(-1)
$C792=round([792%s],2)*(-1)
$C793=round([793%s],2)*(-1)
$C794=round([794%s],2)*(-1)
# Les formules (*-1)
#
$S1=$C20+$C21+$C22+$C23+$C24+$C25+$C26+$C27+$C28
$S2=$C22+$C23+$C24+$C25+$C26+$C27
$S4=$C30+$C31+$C32+$C33+$C34+$C35+$C36
$S3=$C29+$C50+$C51+$C52+$C53+$C54+$C55+$C56+$C57+$C58+$C490+$C491+$C41+$C40+$S4
$S5=$C40+$C41
$S6=$C50+$C51+$C52+$C53
$S7=$C54+$C55+$C56+$C57+$C58
$S8=$C490+$C491
$S9=$S1+$S3
$S10=$C10+$C11+$C12+$C13+$C14+$C15
$S11=$C160+$C161+$C162+$C163+$C164+$C165
$S12=$C17+$C42+$C43+$C44+$C45+$C46+$C47+$C48+$C492+$C493
$S13=$C170+$C171+$C172+$C173+$C174
$S14=$C172+$C173
$S15=$C178+$C179
$S16=$C42+$C43+$C44+$C45+$C46+$C47+$C48
$S17=$C43-$C439
$S18=$C440+$C444
$S19=$C450+$C451+$C452+$C453
$S20=$C454+$C455+$C456+$C457+$C458+$C459
$S21=$C47+$C48
$S22=$C492+$C493
$S23=$C10+$C11+$C12+$C13+$C14+$C15+$C16+$C17+$C42+$C43+$C44+$C45+$C46+$C47+$C48+$C492+$C493
$S24=$C60+$C61
$X25=$C70+$C71+$C73+$C74-$S24
$S25=($X25>0)?$X25:0
$S26=($X25<0)?abs($X25):0
$S27=$C631+$C632+$C633+$C634
$S28=$C635+$C636+$C637
$S29=abs($C64)-$C649
$F1=$C70+$C71+$C73+$C74+$C649-$S29-$C60-$C63-$C61-$C62
$S30=($F1>=0)?$F1:0
$S31=($F1<=0)?$F1*(-1):0
$F3=$F1-$C65+$C75
$S32=($F3>=0)?$F3:0
$S33=($F3<0)?$F3*(-1):0
$F4=$F3-$C66+$C76
$S34=($F4>=0)?$F4:0
$S35=($F4<0)?$F4*(-1):0
$F5=$F4+$C77-$C67
$S36=($F5>=0)?$F5:0
$S37=($F5<0)?$F5*(-1):0
$S38=$C77-$C67
$F6=$F5-$C689+$C789
$S39=($F6>=0)?$F6:0
$S40=($F6<0)?$F6*(-1):0
$S41=$C791+$C792
$S42=$C691+$C692
$S43=$C694+$C695+$C696
$F7=$F6-$C690+$C790
$S44=($F7>=0)?$F7:0
$S45=($F7<0)?$F7*(-1):0

View file

@ -0,0 +1,201 @@
# Les postesg*(-1)
$C10=round([10%s],2)*(-1)
$C100=round([100%s],2)*(-1)
$C101=round([101%s],2)
$C11=round([11%s],2)*(-1)
$C12=round([12%s],2)*(-1)
$C13=round([13%s],2)*(-1)
$C130=round([130%s],2)*(-1)
$C131=round([131%s],2)*(-1)
$C1310=round([1310%s],2)*(-1)
$C1311=round([1311%s],2)*(-1)
$C132=round([132%s],2)*(-1)
$C133=round([133%s],2)*(-1)
$C14=round([14%s],2)*(-1)
$C140=round([140%s],2)*(-1)
$C141=round([141%s],2)
$C15=round([15%s],2)*(-1)
$C16=round([16%s],2)*(-1)
$C160=round([160%s],2)*(-1)
$C161=round([161%s],2)*(-1)
$C162=round([162%s],2)*(-1)
$C163=round([163%s],2)*(-1)
$C164=round([164%s],2)*(-1)
$C165=round([165%s],2)*(-1)
$C168=round([168%s],2)*(-1)
$C17=round([17%s],2)*(-1)
$C170=round([170%s],2)*(-1)
$C171=round([171%s],2)*(-1)
$C172=round([172%s],2)*(-1)
$C173=round([173%s],2)*(-1)
$C174=round([174%s],2)*(-1)
$C175=round([175%s],2)*(-1)
$C176=round([176%s],2)*(-1)
$C178=round([178%s],2)*(-1)
$C179=round([179%s],2)*(-1)
$C2=round([2%s],2)*(-1)
$C20=round([20%s],2)
$C21=round([21%s],2)
$C22=round([22%s],2)
$C23=round([23%s],2)
$C24=round([24%s],2)
$C25=round([25%s],2)
$C26=round([26%s],2)
$C27=round([27%s],2)
$C28=round([28%s],2)
$C29=round([29%s],2)
$C290=round([290%s],2)
$C291=round([291%s],2)
$C3=round([3%s],2)
$C30=round([30%s],2)
$C31=round([31%s],2)
$C32=round([32%s],2)
$C33=round([33%s],2)
$C34=round([34%s],2)
$C35=round([35%s],2)
$C36=round([36%s],2)
$C37=round([37%s],2)
$C40=round([40%s],2)
$C41=round([41%s],2)
$C42=round([42%s],2)*(-1)
$C43=round([43%s],2)*(-1)
$C439=round([439%s],2)*(-1)
$C44=round([44%s],2)*(-1)
$C440=round([440%s],2)*(-1)
$C441=round([441%s],2)*(-1)
$C444=round([444%s],2)*(-1)
$C45=round([45%s],2)*(-1)
$C450=round([450%s],2)*(-1)
$C451=round([451%s],2)*(-1)
$C452=round([452%s],2)*(-1)
$C453=round([453%s],2)*(-1)
$C454=round([454%s],2)*(-1)
$C455=round([455%s],2)*(-1)
$C456=round([456%s],2)*(-1)
$C457=round([457%s],2)*(-1)
$C458=round([458%s],2)*(-1)
$C459=round([459%s],2)*(-1)
$C46=round([46%s],2)
$C47=round([47%s],2)*(-1)
$C48=round([48%s],2)*(-1)
$C49=round([49%s],2)
$C490=round([490%s],2)
$C491=round([491%s],2)
$C492=round([492%s],2)*(-1)
$C493=round([493%s],2)*(-1)
$C50=round([50%s],2)
$C51=round([51%s],2)
$C52=round([52%s],2)
$C53=round([53%s],2)
$C54=round([54%s],2)
$C55=round([55%s],2)
$C56=round([56%s],2)
$C57=round([57%s],2)
$C58=round([58%s],2)
$C60=round([60%s],2)
$C61=round([61%s],2)
$C62=round([62%s],2)
$C63=round([63%s],2)
$C630=round([630%s],2)
$C631=round([631%s],2)
$C632=round([632%s],2)
$C633=round([633%s],2)
$C634=round([634%s],2)
$C635=round([635%s],2)
$C636=round([636%s],2)
$C637=round([637%s],2)
$C649=round([649%s],2)*(-1)
$C64=round([64%s],2)
$C65=round([65%s],2)
$C66=round([66%s],2)
$C67=round([67%s],2)
$C68=round([68%s],2)
$C680=round([680%s],2)
$C689=round([689%s],2)
$C69=round([69%s],2)
$C690=round([690%s],2)
$C691=round([691%s],2)
$C692=round([692%s],2)
$C6920=round([6920%s],2)
$C6921=round([6921%s],2)
$C693=round([693%s],2)
$C694=round([694%s],2)
$C695=round([695%s],2)
$C696=round([696%s],2)
$C7=round([7%s],2)*(-1)
$C70=round([70%s],2)*(-1)
$C71=round([71%s],2)*(-1)
$C73=round([73%s],2)*(-1)
$C72=round([72%s],2)*(-1)
$C74=round([74%s],2)*(-1)
$C75=round([75%s],2)*(-1)
$C76=round([76%s],2)*(-1)
$C77=round([77%s],2)*(-1)
$C780=round([780%s],2)*(-1)
$C789=round([789%s],2)*(-1)
$C79=round([79%s],2)*(-1)
$C790=round([790%s],2)*(-1)
$C791=round([791%s],2)*(-1)
$C792=round([792%s],2)*(-1)
$C793=round([793%s],2)*(-1)
$C794=round([794%s],2)*(-1)
# Les formules (*-1)
#
$S1=$C20+$C21+$C22+$C23+$C24+$C25+$C26+$C27+$C28
$S2=$C22+$C23+$C24+$C25+$C26+$C27
$S4=$C30+$C31+$C32+$C33+$C34+$C35+$C36
$S3=$C29+$C50+$C51+$C52+$C53+$C54+$C55+$C56+$C57+$C58+$C490+$C491+$C41+$C40+$S4
$S5=$C40+$C41
$S6=$C50+$C51+$C52+$C53
$S7=$C54+$C55+$C56+$C57+$C58
$S8=$C490+$C491
$S9=$S1+$S3
$S10=$C10+$C11+$C12+$C13+$C14+$C15
$S11=$C160+$C161+$C162+$C163+$C164+$C165
$S12=$C17+$C42+$C43+$C44+$C45+$C46+$C47+$C48+$C492+$C493
$S13=$C170+$C171+$C172+$C173+$C174
$S14=$C172+$C173
$S15=$C178+$C179
$S16=$C42+$C43+$C44+$C45+$C46+$C47+$C48
$S17=$C43-$C439
$S18=$C440+$C444
$S19=$C450+$C451+$C452+$C453
$S20=$C454+$C455+$C456+$C457+$C458+$C459
$S21=$C47+$C48
$S22=$C492+$C493
$S23=$C10+$C11+$C12+$C13+$C14+$C15+$C16+$C17+$C42+$C43+$C44+$C45+$C46+$C47+$C48+$C492+$C493
$S24=$C60+$C61
$X25=$C70+$C71+$C73+$C74-$S24
$S25=($X25>0)?$X25:0
$S26=($X25<0)?abs($X25):0
$S27=$C631+$C632+$C633+$C634
$S28=$C635+$C636+$C637
$S29=abs($C64)-$C649
$F1=$C70+$C71+$C73+$C74+$C649-$S29-$C60-$C63-$C61-$C62
$S30=($F1>=0)?$F1:0
$S31=($F1<=0)?$F1*(-1):0
$F3=$F1-$C65+$C75
$S32=($F3>=0)?$F3:0
$S33=($F3<0)?$F3*(-1):0
$F4=$F3-$C66+$C76
$S34=($F4>=0)?$F4:0
$S35=($F4<0)?$F4*(-1):0
$F5=$F4+$C77-$C67
$S36=($F5>=0)?$F5:0
$S37=($F5<0)?$F5*(-1):0
$S38=$C77-$C67
$F6=$F5-$C689+$C789
$S39=($F6>=0)?$F6:0
$S40=($F6<0)?$F6*(-1):0
$S41=$C791+$C792
$S42=$C691+$C692
$S43=$C694+$C695+$C696
$F7=$F6-$C690+$C790
$S44=($F7>=0)?$F7:0
$S45=($F7<0)?$F7*(-1):0

View file

@ -0,0 +1,490 @@
{\rtf1\ansi\deff3\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset128 Liberation Serif{\*\falt Times New Roman};}{\f4\froman\fprq0\fcharset128 Nimbus Sans L{\*\falt Arial};}{\f5\froman\fprq0\fcharset128 Times New Roman;}{\f6\fswiss\fprq0\fcharset128 Nimbus Sans L{\*\falt Arial};}{\f7\froman\fprq0\fcharset128 Times{\*\falt Times New Roman};}{\f8\froman\fprq0\fcharset128 Arial;}{\f9\fnil\fprq0\fcharset128 Arial;}{\f10\fnil\fprq0\fcharset128 Times{\*\falt Times New Roman};}{\f11\fnil\fprq0\fcharset128 WenQuanYi Micro Hei;}{\f12\fnil\fprq0\fcharset128 Times New Roman;}{\f13\fnil\fprq0\fcharset128 Lohit Hindi;}{\f14\fnil\fprq0\fcharset128 Arial Unicode MS;}{\f15\fnil\fprq0\fcharset128 AR PL ShanHeiSun Uni;}{\f16\fnil\fprq0\fcharset128 Nimbus Sans L{\*\falt Arial};}}
{\colortbl;\red0\green0\blue0;\red128\green128\blue128;}
{\stylesheet{\s0\snext0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033 Standard;}
{\s15\sbasedon0\snext16\ql\widctlpar\sb240\sa120\keepn\ltrpar\cf0\kerning1\hich\af11\langfe255\dbch\af15\afs28\alang1081\loch\f6\fs28\lang1033 Titre;}
{\s16\sbasedon0\snext16\ql\widctlpar\sb0\sa120\ltrpar\cf0\kerning1\hich\af10\langfe255\dbch\af12\afs24\alang1081\loch\f5\fs24\lang1036 Corps de texte;}
{\s17\sbasedon16\snext17\ql\widctlpar\sb0\sa120\ltrpar\cf0\kerning1\hich\af10\langfe255\dbch\af12\afs24\alang1081\loch\f5\fs24\lang1036 Liste;}
{\s18\sbasedon0\snext18\ql\widctlpar\sb120\sa120\noline\ltrpar\cf0\i\kerning1\hich\af10\langfe255\dbch\af13\afs24\alang1081\ai\loch\f5\fs24\lang1033 L\u233\'3fgende;}
{\s19\sbasedon0\snext19\ql\widctlpar\noline\ltrpar\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033 Index;}
{\s20\sbasedon0\snext20\ql\widctlpar\sb120\sa120\ltrpar\cf0\i\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\ai\loch\f5\fs24\lang1033 caption;}
{\s21\sbasedon0\snext21\ql\widctlpar\sb240\sa120\keepn\ltrpar\cf0\kerning1\hich\af10\langfe255\dbch\af16\afs28\alang1081\loch\f4\fs28\lang1033 WW-Heading;}
{\s22\sbasedon0\snext22\ql\widctlpar\sb120\sa120\ltrpar\cf0\i\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\ai\loch\f7\fs24\lang1033 WW-caption;}
{\s23\sbasedon0\snext23\ql\widctlpar\ltrpar\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033 WW-Index;}
{\s24\sbasedon0\snext24\ql\widctlpar\sb120\sa120\ltrpar\cf0\i\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\ai\loch\f7\fs24\lang1033 WW-caption1;}
{\s25\sbasedon0\snext25\ql\widctlpar\sb120\sa120\ltrpar\cf0\i\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\ai\loch\f5\fs24\lang1033 WW-caption11;}
{\s26\sbasedon0\snext26\ql\widctlpar\sb240\sa120\keepn\ltrpar\cf0\kerning1\hich\af10\langfe255\dbch\af16\afs28\alang1081\loch\f4\fs28\lang1033 WW-Heading1;}
{\s27\sbasedon0\snext27\ql\widctlpar\sb120\sa120\ltrpar\cf0\i\kerning1\hich\af10\langfe255\dbch\af12\afs20\alang1081\ai\loch\f5\fs20\lang1036 WW-caption111;}
{\s28\sbasedon0\snext28\ql\widctlpar\ltrpar\cf0\kerning1\hich\af10\langfe255\dbch\af12\afs24\alang1081\loch\f5\fs24\lang1036 WW-Index1;}
{\s29\sbasedon0\snext29\ql\widctlpar\sb120\sa120\ltrpar\cf0\i\kerning1\hich\af10\langfe255\dbch\af12\afs20\alang1081\ai\loch\f5\fs20\lang1036 WW-caption1111;}
{\s30\sbasedon0\snext30\ql\widctlpar\tqc\tx4320\tqr\tx8640\noline\ltrpar\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033 En-t\u234\'3fte;}
{\s31\sbasedon0\snext31\ql\widctlpar\tqc\tx4320\tqr\tx8640\ltrpar\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033 WW-header;}
{\s32\sbasedon0\snext32\ql\widctlpar\tqc\tx4320\tqr\tx8640\ltrpar\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033 WW-header1;}
}{\info{\creatim\yr2008\mo4\dy1\hr15\min27}{\revtim\yr1601\mo1\dy1\hr0\min0}{\printim\yr1601\mo1\dy1\hr0\min0}{\comment LibreOffice}{\vern3500}}\deftab709
{\*\pgdsctbl
{\pgdsc0\pgdscuse195\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1700\headery1134\margbsxn1134{\header\pard\plain \s30\ql\widctlpar\tqc\tx4320\tqr\tx8640\noline\ltrpar\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tqc\tx4320\tqc\tx4818\tqr\tx8640\tqr\tx9637{\cf1\i0\b0\kerning1\hich\af10\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033
<<header>>}
\par }\pgdscnxt0 Standard;}}
\formshade{\*\pgdscno0}\paperh16838\paperw11906\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\sectunlocked1\pgndec\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1700\headery1134\margbsxn1134{\header\pard\plain \s30\ql\widctlpar\tqc\tx4320\tqr\tx8640\noline\ltrpar\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tqc\tx4320\tqc\tx4818\tqr\tx8640\tqr\tx9637{\cf1\i0\b0\kerning1\hich\af10\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033
<<header>>}
\par }\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
\pgndec\pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\qc\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af10\langfe255\dbch\af9\afs28\alang1025\ab\rtlch \ltrch\loch\fs28\lang1033\loch\f8
ACTIF}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs20\alang1025\ab\rtlch \ltrch\loch\fs20\lang1033\loch\f8
\tab ACTIFS IMMOBILISES \tab 20/28 \tab <<$S1>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
I Frais d'\u233\'e9tablissement}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 20}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
\tab <<$C20>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
II Immobilisations incorporelles }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(annexe I, A) \tab 21 \tab <<$C21>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
III Immobilisations corporelles }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(ann I, B) \tab 22/27 \tab <<$S2>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab A Terrains et constructions \tab 22 \tab <<$C22>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab B Installations, machines et outillage \tab 23 \tab <<$C23>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab C Mobilier et mat\u233\'e9riel roulant \tab 24 \tab <<$C24>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab D Location-financement et droits similaires \tab 25 \tab <<$C25>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab E Autres immobilisations corporelles \tab 26 \tab <<$C26>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab F Immobilisations en cours et acomptes vers\u233\'e9s \tab 27 \tab <<$C27>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
IV Immobilisations financi\u232\'e8res }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(ann I, C et II) \tab 28 \tab <<$C28>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs20\alang1025\ab\rtlch \ltrch\loch\fs20\lang1033\loch\f8
\tab ACTIFS CIRCULANTS \tab 29/58\tab <<$S3>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
V Cr\u233\'e9ances \u224\'e0 plus d'un an \tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
\tab <<$C29>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab A Cr\u233\'e9ances commerciales \tab 290 \tab <<$C290>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab B Autres cr\u233\'e9ances \tab 291\tab <<$C291>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
VI Stocks et commandes en cours d'ex\u233\'e9cution \tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
\tab <<$C3>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab A Stocks \tab 30/36 \tab <<$S4>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab B Commandes en cours d'ex\u233\'e9cution \tab 37 \tab <<$C37>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
VII Cr\u233\'e9ances \u224\'e0 un an au plus}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 40}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/41 \tab <<$S5>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab A Cr\u233\'e9ances commerciales \tab 40 \tab <<$C40>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab B Autres cr\u233\'e9ances \tab 41 \tab <<$C41>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
VIII Placements de tr\u233\'e9sorerie }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(ann II) \tab 50/53 \tab <<$S6>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
IX Valeurs disponibles }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 55}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/58 \tab <<$S7>> \tab }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
X Comptes de r\u233\'e9gularisation}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 490}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/1 \tab <<$S8>>\tab }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
TOTAL DE L'ACTIF \tab 20/58\tab }{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs20\lang1033\loch\f8
<<$S9>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\pagebb\qc\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs28\alang1025\ab\rtlch \ltrch\loch\fs28\lang1033\loch\f8
PASSIF}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs20\alang1025\ab\rtlch \ltrch\loch\fs20\lang1033\loch\f8
\tab CAPITAUX PROPRES \tab 10/15 \tab <<$S10>>\tab }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
I Capital (}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
ann III) \tab 10 \tab <<$C10>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab A Capital souscrit \tab 100 \tab <<$C100>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab B Capital non appel\u233\'e9 (-) \tab 101 \tab (<<$C101>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
II Primes d'\u233\'e9mission\tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
11}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab0\rtlch \ltrch\loch\fs18\lang255\loch\f8
\tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
<<$C11>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
III Plus-values de r\u233\'e9\u233\'e9valuation \tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
12\tab <<$C12>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
IV R\u233\'e9serves \tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
13\tab <<$C13>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab A R\u233\'e9serve l\u233\'e9gale \tab 130 \tab <<$C130>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab B R\u233\'e9serves indisponibles \tab 131 \tab <<$C131>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab \tab 1 Pour actions propres \tab 1310 \tab <<$C1310>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab \tab 2 Autres \tab 1311 \tab <<$C1311>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab C R\u233\'e9serves immunis\u233\'e9es\tab 132 \tab <<$C132>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab D R\u233\'e9serves disponibles \tab 133 \tab <<$C133>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
V B\u233\'e9n\u233\'e9fice report\u233\'e9 \tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
140\tab <<$C140>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Perte report\u233\'e9e }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) \tab 141 \tab (<<$C141>>) }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
VI Subsides en capital \tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
15}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab0\rtlch \ltrch\loch\fs18\lang255\loch\f8
\tab <<$C15>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs20\alang1025\ab\rtlch \ltrch\loch\fs20\lang1033\loch\f8
\tab PROVISIONS ET IMP\u212\'d4TS DIFFERES \tab 16 \tab <<$C16>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
VII A Provisions pour risques et charges }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(ann IV) \tab 160/5 \tab <<$S11>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
B Imp\u244\'f4ts diff\u233\'e9r\u233\'e9s \tab 168 \tab <<$C168>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs20\alang1025\ab\rtlch \ltrch\loch\fs20\lang1033\loch\f8
\tab DETTES \tab 17/49 \tab <<$S12>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
VIII Dettes \u224\'e0 plus d'un an }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(ann V)\tab 17 \tab <<$C17>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
A Dettes financi\u232\'e8res \tab 170/4 \tab <<$S13>> \tab }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 1 Etablissements de cr\u233\'e9dit, dettes de locationfinancement et assimil\u233\'e9es \tab 172/3 \tab <<$S14>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 2 Autres emprunts \tab 174/0 \tab <<$C174>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
B Dettes commerciales \tab 175 \tab <<$C175>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
C Acomptes re\u231\'e7us sur commandes \tab 176 \tab <<$C176>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
D Autres dettes \tab 178/9\tab <<$S15>>\tab }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
IX Dettes \u224\'e0 un an au plus }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(ann V) \tab 42/48 \tab <<$S16>>\tab }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab A Dettes \u224\'e0 plus d'un an \u233\'e9ch\u233\'e9ant dans l'ann\u233\'e9e \tab 42 \tab <<$C42>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab B Dettes financi\u232\'e8res \tab 43 \tab <<$C43>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab \tab 1 Etablissements de cr\u233\'e9dit \tab 430/8 \tab <<$S17>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab \tab 2 Autres emprunts \tab 439 \tab <<$C439>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab C Dettes commerciales \tab 44 \tab <<$C44>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab \tab 1 Fournisseurs \tab 440/4 \tab <<$S18>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab \tab 2 Effets \u224\'e0 payer \tab 441 \tab <<$C441>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab D Acomptes re\u231\'e7us sur commandes \tab 46 \tab <<$C46>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab E Dettes fiscales, salariales et sociales \tab 45 \tab <<$C45>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab \tab 1 Imp\u244\'f4ts \tab 450/3 \tab <<$S19>>\tab }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab \tab 2 R\u233\'e9mun\u233\'e9rations et charges sociales \tab 454/9 \tab <<$S20>> }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab F Autres dettes \tab 47/48 \tab <<$S21>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
X Comptes de r\u233\'e9gularisation}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 492}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/3 \tab <<$S22>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
TOTAL DU PASSIF \tab 10/49\tab <<$S23>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\pagebb\qc\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs28\alang1025\ab\rtlch \ltrch\loch\fs28\lang1033\loch\f8
COMPTE DE RESULTATS}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
I-II Produits et charges d'exploitation}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Chiffre d'affaires }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
70}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\rtlch \ltrch\loch\fs18\lang255\loch\f8
\tab <<$C70>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Autres}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab \tab 71\tab <<$C71>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{{\*\bkmkstart DDE_LINK}{\*\bkmkend DDE_LINK}\cf1\i\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai\rtlch \ltrch\loch\fs18\lang255\loch\f8
Dons et subsides\tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\rtlch \ltrch\loch\fs18\lang255\loch\f8
73\tab <<$C73>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{{\*\bkmkstart DDE_LINK1}{\*\bkmkend DDE_LINK1}\cf1\i\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai\rtlch \ltrch\loch\fs18\lang255\loch\f8
Autrs produits d'exploitation\tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\rtlch \ltrch\loch\fs18\lang255\loch\f8
74\tab <<$C74>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Approvisionnements, marchandises; \tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
60}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
\tab (<<$C60>>}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
services et biens divers}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 61 \tab (}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
<<$C61>>}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab \tab \tab 60/61\tab (<<$S24>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
A.B. Marge brute d'exploitation (solde positif) \tab 70/61 \tab <<$S25>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\fs18\lang1033\loch\f8
}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Marge brute d'exploitation (solde n\u233\'e9gatif) (-) \tab 61/70 \tab (<<$S26>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
C R\u233\'e9mun\u233\'e9rations, charges sociales et pensions\tab 62\tab (<<$C62>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
D Amortissements et r\u233\'e9ductions de valeur sur frais d'\u233\'e9tablissement, }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
sur immobilisations incorporelles et corporelles (-)\tab 630\tab (<<$C630>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
E R\u233\'e9ductions de valeur sur stocks, sur commandes en cours d'ex\u233\'e9cution et }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
sur cr\u233\'e9ances commerciales (dotations -, reprises + ) \tab 631/4\tab <<$S27>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
F Provisions pour risques et charges (dotations -,utilisations et reprises +) \tab 635/7\tab <<$S28>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
G Autres charges d'exploitation (-) \tab 640/8 \tab (<<$S29>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
H Charges d'exploitation port\u233\'e9es \u224\'e0 l'actif au titre de frais de restructuration (+)\tab 649\tab <<$C649>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
III B\u233\'e9n\u233\'e9fice d'exploitation}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(+)}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 70}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/64\tab <<$S30>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Perte d'exploitation}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\ai0\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 64}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/70 \tab (<<$S31>>)\tab }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
IV-V Produits financiers \tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
75\tab <<$C75>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Charges financi\u232\'e8res }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) \tab 65\tab (<<$C65>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
VI B\u233\'e9n\u233\'e9fice courant avant imp\u244\'f4ts}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(+)}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 70}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/65\tab <<$S32>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Perte courante avant imp\u244\'f4ts}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-)}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 65}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/70\tab (<<$S33>>)\tab }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
VII-VIII Produits exceptionnels}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 76}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
\tab <<$C76>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Charges exceptionnelles }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) \tab 66\tab (<<$C66>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
IX B\u233\'e9n\u233\'e9fice de l'exercice avant imp\u244\'f4ts }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\ai0\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(+)}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 70}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/66\tab <<$S34>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Perte de l'exercice avant imp\u244\'f4ts }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-)}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 66}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/70\tab (<<$S35>>)\tab }
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
IXbis Pr\u233\'e9l\u232\'e8vements sur les imp\u244\'f4ts diff\u233\'e9r\u233\'e9s }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(+) \tab 780 \tab <<$C780>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Transferts aux imp\u244\'f4ts diff\u233\'e9r\u233\'e9s }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) \tab 680 \tab (<<$C680>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
X Imp\u244\'f4ts sur le r\u233\'e9sultat }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) (+) \tab 67/77\tab <<$S38>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
XI B\u233\'e9n\u233\'e9fice de l'exercice }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(+) }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 70}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/67\tab <<$S36>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Perte de l'exercice }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 67}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/70\tab (<<$S37>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
XII Pr\u233\'e9l\u232\'e8vements sur les r\u233\'e9serves immunis\u233\'e9es }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(+) \tab 789\tab <<$C789>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Transferts aux r\u233\'e9serves immunis\u233\'e9es }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) \tab 689 \tab (<<$C689>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
XII B\u233\'e9n\u233\'e9fice de l'exercice \u224\'e0 affecter }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\ai0\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(+)}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 70}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/68\tab <<$S39>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i\b\kerning1\hich\af9\langfe255\dbch\af9\afs20\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Perte de l'exercice \u224\'e0 affecter}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs20\alang1025\ai0\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) }{\cf1\i\b0\kerning1\hich\af9\langfe255\dbch\af9\afs20\alang1025\rtlch \ltrch\loch\fs16\lang1033\loch\f8
\tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs20\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
68/70\tab (<<$S40>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\pagebb\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
AFFECTATIONS ET PRELEVEMENTS}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
A B\u233\'e9n\u233\'e9fice \u224\'e0 affecter}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 70}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/69\tab <<$S44>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\fs18\lang1033\loch\f8
}{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
Perte \u224\'e0 affecter }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) \tab 69/70 \tab (<<$S45>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 1 B\u233\'e9n\u233\'e9fice de l'exercice \u224\'e0 affecter \tab 70/68 \tab <<$S39>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab Perte de l'exercice \u224\'e0 affecter (-) \tab 68/70 \tab (<<$S40>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 2 B\u233\'e9n\u233\'e9fice report\u233\'e9 de l' exercice pr\u233\'e9c\u233\'e9dent \tab 790 \tab <<$C790>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab Perte report\u233\'e9e de l' exercice pr\u233\'e9c\u233\'e9dent (-) \tab 690\tab (<<$C690>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
B Pr\u233\'e9l\u232\'e8vements sur les capitaux propres}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 791}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
/2 \tab <<$S41>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
C Affectations aux capitaux propres }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) \tab 691/2\tab (<<$S42>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 1 au capital et aux primes d'\u233\'e9mission \tab 691 \tab (<<$C691>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 2 \u224\'e0 la r\u233\'e9serve l\u233\'e9gale \tab 6920 \tab (<<$C6920>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 3 aux autres r\u233\'e9serves \tab 6921 \tab (<<$C6921>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
D 1 B\u233\'e9n\u233\'e9fice \u224\'e0 reporter }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af14\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) \tab 693\tab (<<$C693>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\fs18\lang1033\loch\f8
}{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
2 Perte \u224\'e0 reporter \tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
793\tab <<$C793>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f8
E Intervention d'associ\u233\'e9s (ou du propri\u233\'e9taire) dans la perte \tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ab0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
794\tab <<$C794>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch\lang1033
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
F B\u233\'e9n\u233\'e9fice \u224\'e0 distribuer }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
(-) \tab 694/6 \tab (<<$S43>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 1 R\u233\'e9mun\u233\'e9ration du capital \tab 694 \tab (<<$C694>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 2 Administrateurs ou g\u233\'e9rants \tab 695 \tab (<<$C695>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab 3 Autres allocataires \tab 696 \tab (<<$C696>>)}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725\rtlch \ltrch\loch
\par }

View file

@ -1,101 +1,101 @@
# Les postesg*(-1)
$C10=round([10%s],2)*(-1)
$C100=round([100%s],2)*(-1)
$C101=round([101%s],2)
$C11=round([11%s],2)*(-1)
$C12=round([12%s],2)*(-1)
$C13=round([13%s],2)*(-1)
$C130=round([130%s],2)*(-1)
$C131=round([131%s],2)*(-1)
$C1310=round([1310%s],2)*(-1)
$C1311=round([1311%s],2)*(-1)
$C132=round([132%s],2)*(-1)
$C133=round([133%s],2)*(-1)
$C14=round([14%s],2)*(-1)
$C140=round([140%s],2)*(-1)
$C141=round([141%s],2)
$C15=round([15%s],2)*(-1)
$C16=round([16%s],2)*(-1)
$C160=round([160%s],2)*(-1)
$C161=round([161%s],2)*(-1)
$C162=round([162%s],2)*(-1)
$C163=round([163%s],2)*(-1)
$C164=round([164%s],2)*(-1)
$C165=round([165%s],2)*(-1)
$C168=round([168%s],2)*(-1)
$C10=round([10%s],2)*(-1)
$C100=round([100%s],2)*(-1)
$C101=round([101%s],2)
$C11=round([11%s],2)*(-1)
$C12=round([12%s],2)*(-1)
$C13=round([13%s],2)*(-1)
$C130=round([130%s],2)*(-1)
$C131=round([131%s],2)*(-1)
$C1310=round([1310%s],2)*(-1)
$C1311=round([1311%s],2)*(-1)
$C132=round([132%s],2)*(-1)
$C133=round([133%s],2)*(-1)
$C14=round([14%s],2)*(-1)
$C140=round([140%s],2)*(-1)
$C141=round([141%s],2)
$C15=round([15%s],2)*(-1)
$C16=round([16%s],2)*(-1)
$C160=round([160%s],2)*(-1)
$C161=round([161%s],2)*(-1)
$C162=round([162%s],2)*(-1)
$C163=round([163%s],2)*(-1)
$C164=round([164%s],2)*(-1)
$C165=round([165%s],2)*(-1)
$C168=round([168%s],2)*(-1)
$C17=round([17%s],2)*(-1)
$C170=round([170%s],2)*(-1)
$C171=round([171%s],2)*(-1)
$C172=round([172%s],2)*(-1)
$C173=round([173%s],2)*(-1)
$C174=round([174%s],2)*(-1)
$C175=round([175%s],2)*(-1)
$C176=round([176%s],2)*(-1)
$C178=round([178%s],2)*(-1)
$C179=round([179%s],2)*(-1)
$C170=round([170%s],2)*(-1)
$C171=round([171%s],2)*(-1)
$C172=round([172%s],2)*(-1)
$C173=round([173%s],2)*(-1)
$C174=round([174%s],2)*(-1)
$C175=round([175%s],2)*(-1)
$C176=round([176%s],2)*(-1)
$C178=round([178%s],2)*(-1)
$C179=round([179%s],2)*(-1)
$C2=round([2%s],2)*(-1)
$C20=round([20%s],2)
$C21=round([21%s],2)
$C22=round([22%s],2)
$C23=round([23%s],2)
$C24=round([24%s],2)
$C25=round([25%s],2)
$C26=round([26%s],2)
$C27=round([27%s],2)
$C28=round([28%s],2)
$C29=round([29%s],2)
$C290=round([290%s],2)
$C291=round([291%s],2)
$C20=round([20%s],2)
$C21=round([21%s],2)
$C22=round([22%s],2)
$C23=round([23%s],2)
$C24=round([24%s],2)
$C25=round([25%s],2)
$C26=round([26%s],2)
$C27=round([27%s],2)
$C28=round([28%s],2)
$C29=round([29%s],2)
$C290=round([290%s],2)
$C291=round([291%s],2)
$C3=round([3%s],2)
$C30=round([30%s],2)
$C31=round([31%s],2)
$C32=round([32%s],2)
$C33=round([33%s],2)
$C34=round([34%s],2)
$C35=round([35%s],2)
$C36=round([36%s],2)
$C37=round([37%s],2)
$C40=round([40%s],2)
$C41=round([41%s],2)
$C42=round([42%s],2)*(-1)
$C43=round([43%s],2)*(-1)
$C439=round([439%s],2)*(-1)
$C44=round([44%s],2)*(-1)
$C440=round([440%s],2)*(-1)
$C441=round([441%s],2)*(-1)
$C444=round([444%s],2)*(-1)
$C45=round([45%s],2)*(-1)
$C450=round([450%s],2)*(-1)
$C451=round([451%s],2)*(-1)
$C452=round([452%s],2)*(-1)
$C453=round([453%s],2)*(-1)
$C454=round([454%s],2)*(-1)
$C30=round([30%s],2)
$C31=round([31%s],2)
$C32=round([32%s],2)
$C33=round([33%s],2)
$C34=round([34%s],2)
$C35=round([35%s],2)
$C36=round([36%s],2)
$C37=round([37%s],2)
$C40=round([40%s],2)
$C41=round([41%s],2)
$C42=round([42%s],2)*(-1)
$C43=round([43%s],2)*(-1)
$C439=round([439%s],2)*(-1)
$C44=round([44%s],2)*(-1)
$C440=round([440%s],2)*(-1)
$C441=round([441%s],2)*(-1)
$C444=round([444%s],2)*(-1)
$C45=round([45%s],2)*(-1)
$C450=round([450%s],2)*(-1)
$C451=round([451%s],2)*(-1)
$C452=round([452%s],2)*(-1)
$C453=round([453%s],2)*(-1)
$C454=round([454%s],2)*(-1)
$C455=round([455%s],2)*(-1)
$C456=round([456%s],2)*(-1)
$C457=round([457%s],2)*(-1)
$C458=round([458%s],2)*(-1)
$C459=round([459%s],2)*(-1)
$C46=round([46%s],2)
$C47=round([47%s],2)*(-1)
$C48=round([48%s],2)*(-1)
$C49=round([49%s],2)
$C490=round([490%s],2)
$C491=round([491%s],2)
$C492=round([492%s],2)*(-1)
$C493=round([493%s],2)*(-1)
$C50=round([50%s],2)
$C51=round([51%s],2)
$C52=round([52%s],2)
$C53=round([53%s],2)
$C54=round([54%s],2)
$C55=round([55%s],2)
$C56=round([56%s],2)
$C57=round([57%s],2)
$C58=round([58%s],2)
$C60=round([60%s],2)
$C61=round([61%s],2)
$C62=round([62%s],2)
$C63=round([63%s],2)
$C459=round([459%s],2)*(-1)
$C46=round([46%s],2)
$C47=round([47%s],2)*(-1)
$C48=round([48%s],2)*(-1)
$C49=round([49%s],2)
$C490=round([490%s],2)
$C491=round([491%s],2)
$C492=round([492%s],2)*(-1)
$C493=round([493%s],2)*(-1)
$C50=round([50%s],2)
$C51=round([51%s],2)
$C52=round([52%s],2)
$C53=round([53%s],2)
$C54=round([54%s],2)
$C55=round([55%s],2)
$C56=round([56%s],2)
$C57=round([57%s],2)
$C58=round([58%s],2)
$C60=round([60%s],2)
$C61=round([61%s],2)
$C62=round([62%s],2)
$C63=round([63%s],2)
$C630=round([630%s],2)
$C631=round([631%s],2)
$C632=round([632%s],2)
@ -105,38 +105,38 @@ $C635=round([635%s],2)
$C636=round([636%s],2)
$C637=round([637%s],2)
$C649=round([649%s],2)*(-1)
$C64=round([64%s],2)
$C649=round([649%s],2)*(-1)
$C64=round([64%s],2)
$C65=round([65%s],2)
$C66=round([66%s],2)
$C67=round([67%s],2)
$C68=round([68%s],2)
$C680=round([680%s],2)
$C65=round([65%s],2)
$C66=round([66%s],2)
$C67=round([67%s],2)
$C68=round([68%s],2)
$C680=round([680%s],2)
$C689=round([689%s],2)
$C69=round([69%s],2)
$C690=round([690%s],2)
$C691=round([691%s],2)
$C692=round([692%s],2)
$C6920=round([6920%s],2)
$C6921=round([6921%s],2)
$C693=round([693%s],2)
$C694=round([694%s],2)
$C695=round([695%s],2)
$C696=round([696%s],2)
$C69=round([69%s],2)
$C690=round([690%s],2)
$C691=round([691%s],2)
$C692=round([692%s],2)
$C6920=round([6920%s],2)
$C6921=round([6921%s],2)
$C693=round([693%s],2)
$C694=round([694%s],2)
$C695=round([695%s],2)
$C696=round([696%s],2)
$C7=round([7%s],2)*(-1)
$C70=round([70%s],2)*(-1)
$C71=round([71%s],2)*(-1)
$C73=round([73%s],2)*(-1)
$C72=round([72%s],2)*(-1)
$C74=round([74%s],2)*(-1)
$C75=round([75%s],2)*(-1)
$C76=round([76%s],2)*(-1)
$C77=round([77%s],2)*(-1)
$C70=round([70%s],2)*(-1)
$C71=round([71%s],2)*(-1)
$C73=round([73%s],2)*(-1)
$C72=round([72%s],2)*(-1)
$C74=round([74%s],2)*(-1)
$C75=round([75%s],2)*(-1)
$C76=round([76%s],2)*(-1)
$C77=round([77%s],2)*(-1)
$C780=round([780%s],2)*(-1)
$C789=round([789%s],2)*(-1)
$C79=round([79%s],2)*(-1)
$C79=round([79%s],2)*(-1)
$C790=round([790%s],2)*(-1)
$C791=round([791%s],2)*(-1)
$C792=round([792%s],2)*(-1)
@ -144,7 +144,7 @@ $C793=round([793%s],2)*(-1)
$C794=round([794%s],2)*(-1)
# Les formules (*-1)
#
$S1=abs($C2-$C29)
$S1=$C20+$C21+$C22+$C23+$C24+$C25+$C26+$C27+$C28
$S2=$C22+$C23+$C24+$C25+$C26+$C27
$S4=$C30+$C31+$C32+$C33+$C34+$C35+$C36
$S3=$C29+$C50+$C51+$C52+$C53+$C54+$C55+$C56+$C57+$C58+$C490+$C491+$C41+$C40+$S4
@ -169,8 +169,11 @@ $S21=$C47+$C48
$S22=$C492+$C493
$S23=$C10+$C11+$C12+$C13+$C14+$C15+$C16+$C17+$C42+$C43+$C44+$C45+$C46+$C47+$C48+$C492+$C493
$S24=$C60+$C61
$S25=($C70+$C73+$C74-$C60-$C61>=0)?$C70+$C73+$C74-$C60-$C61:0
$S26=($C70+$C73+$C74-$C60<0)?$C70+$C73+$C74-$C60-$C61:0
$X25=$C70+$C71+$C73+$C74-$S24
$S25=($X25>0)?$X25:0
$S26=($X25<0)?abs($X25):0
$S27=$C631+$C632+$C633+$C634
$S28=$C635+$C636+$C637
$S29=abs($C64)-$C649

View file

@ -260,8 +260,7 @@ I-II Produits et charges d'exploitation}
Chiffre d'affaires }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang1033\loch\f8
\tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\rtlch \ltrch\loch\fs18\lang1033\loch\f8
70}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\rtlch \ltrch\loch\fs18\lang255\loch\f8
\tab <<$C}{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\rtlch \ltrch\loch\fs18\lang255\loch\f8
70>>}
\tab <<$C70>>}
\par \pard\plain \s0\ql\widctlpar\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af10\langfe255\dbch\af14\afs24\alang1081\loch\f5\fs24\lang1033\ql\widctlpar\tx330\tx915\tx6930\tx7725{{\*\bkmkstart DDE_LINK}{\*\bkmkend DDE_LINK}\cf1\i\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai\rtlch \ltrch\loch\fs18\lang255\loch\f8
Dons et subsides\tab }{\cf1\i0\b0\kerning1\hich\af9\langfe255\dbch\af9\afs18\alang1025\ai0\rtlch \ltrch\loch\fs18\lang255\loch\f8
73\tab <<$C73>>}

View file

@ -27,30 +27,30 @@
define ('ALLOWED',1);
require_once '../include/constant.php';
global $g_user,$cn,$g_parameter;
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/class_user.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE.'/class/user.class.php';
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
$gDossier=dossier::id();
$cn=new Database($gDossier);
$cn=Dossier::connect();
mb_internal_encoding("UTF-8");
$g_user=new User($cn);
$g_user->Check();
$action=$g_user->check_dossier($gDossier);
set_language();
if ( $action=='X' || ! isset($_GET['act']) || $g_user->check_print($_GET['act'])==0 )
$hi=new HttpInput();
$action=$hi->get("act");
if ( $action=='X' || $g_user->check_print($action)==0 )
{
echo alert(_('Accès interdit'));
redirect("do.php?".dossier::get());
exit();
}
// get file and execute it
$action=HtmlInput::default_value_get('act', null);
if ($action == null )
{
die(_('Appel invalide'));
}
$prfile=$cn->get_value("select me_file from menu_ref where me_code=$1",array($action));
if ( $prfile == "") {
die (_('Export impossible'));
}
require_once $prfile;
require_once NOALYSS_INCLUDE."/export/$prfile";
?>

View file

@ -24,18 +24,18 @@
* the security. Load several javascript files
*/
require_once '../include/constant.php';
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/class_dossier.php';
require_once NOALYSS_INCLUDE.'/ac_common.php';
require_once NOALYSS_INCLUDE.'/function_javascript.php';
require_once NOALYSS_INCLUDE.'/class_extension.php';
require_once NOALYSS_INCLUDE.'/class_html_input.php';
require_once NOALYSS_INCLUDE.'/class_iselect.php';
require_once NOALYSS_INCLUDE.'/class_user.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE.'/class/dossier.class.php';
require_once NOALYSS_INCLUDE.'/lib/ac_common.php';
require_once NOALYSS_INCLUDE.'/lib/function_javascript.php';
require_once NOALYSS_INCLUDE.'/class/extension.class.php';
require_once NOALYSS_INCLUDE.'/lib/html_input.class.php';
require_once NOALYSS_INCLUDE.'/lib/iselect.class.php';
require_once NOALYSS_INCLUDE.'/class/user.class.php';
global $g_user,$cn,$g_parameter;
$cn=new Database(dossier::id());
$cn=Dossier::connect();
$g_user=new User($cn);
$g_user->check();
$only_plugin=$g_user->check_dossier(dossier::id());

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View file

@ -33,15 +33,16 @@
*\note if the j is -1 then all the card are shown
*/
require_once '../include/constant.php';
require_once NOALYSS_INCLUDE.'/class_own.php';
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/user_common.php';
require_once NOALYSS_INCLUDE.'/class_dossier.php';
require_once NOALYSS_INCLUDE.'/class/noalyss_parameter_folder.class.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE.'/lib/user_common.php';
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
require_once NOALYSS_INCLUDE.'/class/dossier.class.php';
$gDossier=dossier::id();
require_once('class_user.php');
require_once('class/user.class.php');
$cn=new Database(dossier::id());
$cn=Dossier::connect();
global $g_user;
$g_user=new User($cn);
$g_user->check();
@ -52,12 +53,13 @@ $fTva_id=(isset($_REQUEST['t']))?$_REQUEST['t']:'none';
$fPrice_sale=(isset($_REQUEST['p']))?$_REQUEST['p']:'none';
$fPrice_purchase=(isset($_REQUEST['b']))?$_REQUEST['b']:'none';
$hi=new HttpInput();
if ( isset($_SESSION['isValid']) && $_SESSION['isValid'] == 1)
{
$jrn=sql_string($_GET['j']);
$d=sql_string($_GET['d']);
$jrn=$hi->get('j', "number",'-1');
$d=$hi->get('d',"string", '');
$d=sql_string($d);
if ( $jrn == -1 )
$d='all';

View file

@ -26,8 +26,8 @@
*/
require_once '../include/constant.php';
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/class_dossier.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE.'/class/dossier.class.php';
/*!\brief
* Received parameters are
* - j for the ledger
@ -44,11 +44,11 @@ require_once NOALYSS_INCLUDE.'/class_dossier.php';
$jrn= ( ! isset($_REQUEST['j']))?-1:$_REQUEST['j'];
$filter_card="";
$cn=new Database(dossier::id());
$cn=Dossier::connect();
$d=$_REQUEST['e'];
$filter_card='';
require_once('class_user.php');
require_once('class/user.class.php');
global $g_user;
$g_user=new User($cn);
$g_user->check();
@ -146,13 +146,13 @@ if (sizeof($sql) != 0 )
$sql_name=$cn->execute('get_name',array($sql[$i]['f_id'],23));
if (Database::num_row($sql_name) == 1) $quick_code=Database::fetch_result($sql_name,0,0);
$fid=htmlentities($_REQUEST['FID']);
/* Highlight the found pattern with bold format */
$name=str_ireplace($_REQUEST['FID'],'<em>'.$_REQUEST['FID'].'</em>',h($name));
$qcode=str_ireplace($_REQUEST['FID'],'<em>'.$_REQUEST['FID'].'</em>',h($quick_code));
$desc=str_ireplace($_REQUEST['FID'],'<em>'.$_REQUEST['FID'].'</em>',h($desc));
printf('<li id="%s">%s <span class="informal"> %s %s</span></li>',
$name=str_ireplace($_REQUEST['FID'],'<em>'.$fid.'</em>',h($name));
$qcode=str_ireplace($_REQUEST['FID'],'<em>'.$fid.'</em>',h($quick_code));
$desc=str_ireplace($_REQUEST['FID'],'<em>'.$fid.'</em>',h($desc));
printf('<li id="%s">%s <span class="informal">%s %s</span></li>',
$quick_code,
$quick_code,
$name,

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,26 @@
Sansation - freeware font
Version 1.2
___________
This font is freeware for personal and commercial use.
Feel free to distribute this font.
You may but this font on CDs, websites,... with the following restrictions:
-Editing is only allowed for personal use,
don´t distribute an edited version of this font!
-Do not rename this font!
-Do not sell this font!
-Do not handle it as your own work!
-Do not pass the font without this textfile!
-Make sure you have downloaded the latest update from www.dafont.com for best optical results.
I hope you enjoy this font.
If you have further questions, please contact me.
_________________________________________________
berndmontag@klausmontag.de
Bernd Montag © 2009 - All Rights Reserved
_________________________________________
_________________________________________

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

View file

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32px"
height="32px"
id="svg2985"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="Nouveau document 2">
<defs
id="defs2987">
<inkscape:path-effect
effect="spiro"
id="path-effect3001"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect2995"
is_visible="true" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.9590209"
inkscape:cx="57.922635"
inkscape:cy="38.691626"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:snap-grids="false"
inkscape:snap-to-guides="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1920"
inkscape:window-height="1020"
inkscape:window-x="-2"
inkscape:window-y="35"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid2997" />
<sodipodi:guide
orientation="-0.70710678,0.70710678"
position="-12.234544,30.854269"
id="guide3003" />
<sodipodi:guide
orientation="-0.70710678,0.70710678"
position="-11.29686,32.283121"
id="guide3005" />
<sodipodi:guide
orientation="0,1"
position="0.84838078,15.002944"
id="guide3007" />
</sodipodi:namedview>
<metadata
id="metadata2990">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:none;stroke:#000000;stroke-width:1.20725286px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 10.439772,29.803164 10.254683,17.237117 3.0857651,17.126066 15.002178,2.1401455 26.24083,16.940381 19.387646,17.119495 19.55912,29.702299"
id="path2993"
inkscape:path-effect="#path-effect2995"
inkscape:original-d="M 10.439772,29.803164 10.254683,17.237117 3.0857651,17.126066 15.002178,2.1401455 26.24083,16.940381 c -0.123896,0.0067 -6.853184,0.179114 -6.853184,0.179114 l 0.171474,12.582804"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3 KiB

View file

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32px"
height="32px"
id="svg3030"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="Nouveau document 4">
<defs
id="defs3032" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.197802"
inkscape:cx="16"
inkscape:cy="16"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:snap-grids="false"
inkscape:snap-to-guides="false"
inkscape:window-width="1920"
inkscape:window-height="1020"
inkscape:window-x="-2"
inkscape:window-y="35"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3038" />
</sodipodi:namedview>
<metadata
id="metadata3035">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#0000c6;stroke-width:1.08177447;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3040"
width="24.744526"
height="27.155714"
x="3.5237136"
y="2.2136052" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#0000c6;stroke-width:1.08177447;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3042"
width="17.915037"
height="7.0718002"
x="6.570456"
y="5.6973724" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#0000c6;stroke-width:0.78509432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3044"
width="3.7854609"
height="3.5424492"
x="8.1985044"
y="15.766844" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#0000c6;stroke-width:0.78509432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3044-3"
width="3.7854609"
height="3.5424492"
x="13.522639"
y="15.619892" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#0000c6;stroke-width:0.78509432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3044-6"
width="3.7854609"
height="3.5424492"
x="18.833384"
y="15.488746" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#0000c6;stroke-width:0.78509432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3044-6-5"
width="3.7854609"
height="3.5424492"
x="18.907129"
y="20.509338" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#0000c6;stroke-width:0.78509432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3044-62"
width="3.7854609"
height="3.5424492"
x="8.377142"
y="20.673328" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#0000c6;stroke-width:0.78509432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3044-9"
width="3.7854609"
height="3.5424492"
x="13.646033"
y="20.584026" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 686 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 707 B

Binary file not shown.

View file

@ -0,0 +1,150 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Copyright (C) 2018 by original authors @ fontello.com</metadata>
<defs>
<font id="fontello" horiz-adv-x="1000" >
<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="logout" unicode="&#xe800;" d="M357 46q0-2 1-11t0-14-2-14-5-11-12-3h-178q-67 0-114 47t-47 114v392q0 67 47 114t114 47h178q8 0 13-5t5-13q0-2 1-11t0-15-2-13-5-11-12-3h-178q-37 0-63-26t-27-64v-392q0-37 27-63t63-27h174t6 0 7-2 4-3 4-5 1-8z m518 304q0-14-11-25l-303-304q-11-10-25-10t-25 10-11 25v161h-250q-14 0-25 11t-11 25v214q0 15 11 25t25 11h250v161q0 14 11 25t25 10 25-10l303-304q11-10 11-25z" horiz-adv-x="928.6" />
<glyph glyph-name="cancel-circled" unicode="&#xe801;" d="M641 224q0 14-10 25l-101 101 101 101q10 11 10 25 0 15-10 26l-51 50q-10 11-25 11-15 0-25-11l-101-101-101 101q-11 11-25 11-16 0-26-11l-50-50q-11-11-11-26 0-14 11-25l101-101-101-101q-11-11-11-25 0-15 11-26l50-50q10-11 26-11 14 0 25 11l101 101 101-101q10-11 25-11 15 0 25 11l51 50q10 11 10 26z m216 126q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="cancel-circled2" unicode="&#xe802;" d="M612 248l-81-82q-6-5-13-5t-13 5l-76 77-77-77q-5-5-13-5t-12 5l-82 82q-6 6-6 13t6 13l76 76-76 77q-6 5-6 12t6 13l82 82q5 5 12 5t13-5l77-77 76 77q6 5 13 5t13-5l81-82q6-5 6-13t-6-12l-76-77 76-76q6-6 6-13t-6-13z m120 102q0 83-41 152t-110 111-152 41-153-41-110-111-41-152 41-152 110-111 153-41 152 41 110 111 41 152z m125 0q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="eye" unicode="&#xe803;" d="M929 314q-85 132-213 197 34-58 34-125 0-103-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 243 68 186 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" />
<glyph glyph-name="upload" unicode="&#xe804;" d="M714 29q0 14-10 25t-25 10-25-10-11-25 11-25 25-11 25 11 10 25z m143 0q0 14-10 25t-26 10-25-10-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-38t-38-16h-821q-23 0-38 16t-16 38v179q0 22 16 38t38 15h238q12-31 39-51t62-20h143q34 0 61 20t40 51h238q22 0 38-15t16-38z m-182 361q-9-22-33-22h-143v-250q0-15-10-25t-25-11h-143q-15 0-25 11t-11 25v250h-143q-23 0-33 22-9 22 8 39l250 250q10 10 25 10t25-10l250-250q18-17 8-39z" horiz-adv-x="928.6" />
<glyph glyph-name="download" unicode="&#xe805;" d="M714 100q0 15-10 25t-25 11-25-11-11-25 11-25 25-11 25 11 10 25z m143 0q0 15-10 25t-26 11-25-11-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-37t-38-16h-821q-23 0-38 16t-16 37v179q0 22 16 38t38 16h259l75-76q33-32 76-32t76 32l76 76h259q22 0 38-16t16-38z m-182 318q10-23-8-39l-250-250q-10-11-25-11t-25 11l-250 250q-17 16-8 39 10 21 33 21h143v250q0 15 11 25t25 11h143q14 0 25-11t10-25v-250h143q24 0 33-21z" horiz-adv-x="928.6" />
<glyph glyph-name="attention" unicode="&#xe806;" d="M571 83v106q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-106q0-8 5-13t12-6h108q7 0 12 6t5 13z m-1 208l10 257q0 6-5 10-7 6-14 6h-122q-6 0-14-6-5-4-5-12l9-255q0-5 6-9t13-3h103q8 0 14 3t5 9z m-7 522l428-786q20-35-1-70-9-17-26-26t-35-10h-858q-18 0-35 10t-26 26q-21 35-1 70l429 786q9 17 26 27t36 10 36-10 27-27z" horiz-adv-x="1000" />
<glyph glyph-name="search" unicode="&#xe807;" d="M680 256c-55-55-126-83-197-83-65 0-129 23-182 66l-51-125-130-130c-14-10-29-15-45-15-41 0-75 37-75 77 0 16 5 32 15 45l129 130 126 51c-44 52-66 117-66 182 0 152 127 277 279 277 150 0 277-128 277-278 0-72-26-144-80-197z m-319 75c34-33 78-50 122-50 92 0 170 77 170 172 0 93-79 170-170 170-94 0-172-79-172-170 0-45 17-89 50-122z" horiz-adv-x="760" />
<glyph glyph-name="mail" unicode="&#xe808;" d="M580 306l258-267-789 0 259 264 135-127z m-517 355l760 0-380-362z m566-309l257 242 0-508z m-629-266l0 508 259-243z" horiz-adv-x="886" />
<glyph glyph-name="anchor" unicode="&#xe809;" d="M-1 202q0 8 5 13l102 123 22-28 78-96q5-6 4-14t-7-12q-11-8-23 0l-23 19q16-60 63-101t113-54q6-1 11 0t10 7 6 20v389q0 10-6 16t-11 7l-6 1h-40q-19 0-33 13t-14 34 14 33 33 13h42q2 1 3 1t5 2 5 3 4 4 3 6 1 8v10q-31 14-49 43t-19 64q0 47 34 81t81 34 82-34 34-81q0-36-19-64t-50-43v-10q0-5 1-8t4-6 4-4 5-3 4-1 3-2h43q19 0 33-13t14-33q0-19-14-33t-33-14h-41q-2 0-6-1t-11-7-6-15v-390q0-13 6-20t11-7 10 0q67 14 114 54t63 101l-23-19q-6-5-13-4t-13 7q-8 12 0 23l78 96 21 28 103-123q4-6 4-15t-7-14q-6-5-14-5t-13 5l-30 25q-17-102-87-179t-171-102q-1-1-2-1-14-3-24-13t-14-21q-4-16-17-26t-29-10q-16 0-29 10t-16 26q-3 12-14 21t-24 13q-2 0-3 1-100 26-170 102t-88 179l-29-25q-6-6-15-5t-15 8q-5 6-5 13z m351 524q0-20 10-35v5q0 20 14 33t33 14 33-13 14-34v-5q11 16 11 35 0 23-17 40t-41 16-40-16-17-40z" horiz-adv-x="814.9" />
<glyph glyph-name="resize-full-alt" unicode="&#xe80a;" d="M0-150l0 342 119-119 278 277-276 275-121-121 0 346 342 0-119-119 277-277 275 275-121 121 346 0 0-342-119 119-277-277 275-275 121 121 0-346-342 0 119 119-277 278-275-276 121-121-346 0z" horiz-adv-x="1000" />
<glyph glyph-name="tag" unicode="&#xe80b;" d="M1000 714v-270l-595-595-405 405 595 595h270z m-160-160q28 28 28 68t-28 67-67 28-68-28-28-67 28-68 68-28 67 28z" horiz-adv-x="1000" />
<glyph glyph-name="cw" unicode="&#xe80c;" d="M408 760q168 0 287-116t123-282l122 0-184-206-184 206 144 0q-4 124-94 210t-214 86q-126 0-216-90t-90-218q0-126 90-216t216-90q104 0 182 60l70-76q-110-88-252-88-168 0-288 120t-120 290 120 290 288 120z" horiz-adv-x="940" />
<glyph glyph-name="edit" unicode="&#xe80d;" d="M496 189l64 65-85 85-64-65v-31h53v-54h32z m245 402q-9 9-18 0l-196-196q-9-9 0-18t18 0l196 196q9 9 0 18z m45-331v-106q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h464q35 0 65-14 9-4 10-13 2-10-5-16l-27-28q-8-8-18-4-13 3-25 3h-464q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v70q0 7 5 12l36 36q8 8 20 4t11-16z m-54 411l161-160-375-375h-161v160z m248-73l-51-52-161 161 51 52q16 15 38 15t38-15l85-85q16-16 16-38t-16-38z" horiz-adv-x="1000" />
<glyph glyph-name="attention-circled" unicode="&#xe80e;" d="M429 779q116 0 215-58t156-156 57-215-57-215-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58z m71-696v106q0 8-5 13t-12 5h-107q-8 0-13-5t-6-13v-106q0-8 6-13t13-6h107q7 0 12 6t5 13z m-1 192l10 346q0 7-6 10-5 5-13 5h-123q-8 0-13-5-6-3-6-10l10-346q0-6 5-10t14-4h103q8 0 13 4t6 10z" horiz-adv-x="857.1" />
<glyph glyph-name="trash-empty" unicode="&#xe80f;" d="M286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
<glyph glyph-name="doc" unicode="&#xe810;" d="M819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 17-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 16t-16 37v233h-429v-858h715z" horiz-adv-x="857.1" />
<glyph glyph-name="calendar" unicode="&#xe811;" d="M71-79h161v161h-161v-161z m197 0h178v161h-178v-161z m-197 197h161v178h-161v-178z m197 0h178v178h-178v-178z m-197 214h161v161h-161v-161z m411-411h179v161h-179v-161z m-214 411h178v161h-178v-161z m428-411h161v161h-161v-161z m-214 197h179v178h-179v-178z m-196 482v161q0 7-6 12t-12 6h-36q-7 0-12-6t-6-12v-161q0-7 6-13t12-5h36q7 0 12 5t6 13z m410-482h161v178h-161v-178z m-214 214h179v161h-179v-161z m214 0h161v161h-161v-161z m18 268v161q0 7-5 12t-13 6h-35q-7 0-13-6t-5-12v-161q0-7 5-13t13-5h35q8 0 13 5t5 13z m215 36v-715q0-29-22-50t-50-21h-786q-29 0-50 21t-21 50v715q0 29 21 50t50 21h72v54q0 37 26 63t63 26h36q37 0 63-26t26-63v-54h214v54q0 37 27 63t63 26h35q37 0 64-26t26-63v-54h71q29 0 50-21t22-50z" horiz-adv-x="928.6" />
<glyph glyph-name="edit-1" unicode="&#xe812;" d="M90 589l0-593 444 0 0 262 90 101 0-453-624 0 0 760 541 0-75-77-376 0z m749 180c35-34 32-88-3-124l-57-56 17 75-63 64-74-17 56 57c35 35 90 35 124 1z m-219-99c0 3 65 20 75 23l1 1 67-69c-4 0-23-75-23-75l-371-384-159-36-2 1 41 158z m-247-422l-45 46-35-6-23-22-10-40 46-45 39 9 23 23z" horiz-adv-x="864" />
<glyph glyph-name="resize-full" unicode="&#xe813;" d="M186 407l-113 116-73-73 0 210 210 0-72-73 115-115z m0-114l67-66-115-114 72-72-210 0 0 210 73-73z m245 114l-65 65 115 115-72 73 210 0 0-210-73 72z m115-229l73 73 0-210-210 0 72 72-115 114 65 66z" horiz-adv-x="619" />
<glyph glyph-name="up-bold" unicode="&#xe814;" d="M0 282l397 536 394-536h-216v-401h-359v401h-216z" horiz-adv-x="791" />
<glyph glyph-name="down-fat" unicode="&#xe815;" d="M5 538q13 23 53 23h147v205q0 21 16 37t37 15h304q22 0 38-15t15-37v-205h147q40 0 53-23t-7-54l-363-582q-1-2-5-6t-12-9-18-6-18 5-13 11l-4 5-363 582q-21 32-7 54z" horiz-adv-x="820.3" />
<glyph glyph-name="cancel-circled2-1" unicode="&#xe816;" d="M0 350q0 207 147 354t353 146 354-146 146-354-146-354-354-146-353 146-147 354z m109 0q0-162 115-276t276-115 276 115 115 276-115 276-276 115-276-115-115-276z m145-137l137 137-137 137 109 109 137-137 137 137 109-109-137-137 137-137-109-109-137 137-137-137z" horiz-adv-x="1000" />
<glyph glyph-name="upload-1" unicode="&#xe817;" d="M0 350q0 207 147 354t353 146 354-146 146-354-146-354-354-146-353 146-147 354z m109 0q0-162 115-276t276-115 276 115 115 276-115 276-276 115-276-115-115-276z m170 14l221 207 221-207-123 0 0-223-196 0 0 223-123 0z" horiz-adv-x="1000" />
<glyph glyph-name="exclamation" unicode="&#xe818;" d="M0 350q0 207 147 354t353 146 354-146 146-354-146-354-354-146-353 146-147 354z m318 402l79-550 207 0 78 550-364 0z m77-696q0-44 31-76t76-32 76 32 31 76-31 76-76 33-76-33-31-76z" horiz-adv-x="1000" />
<glyph glyph-name="down-open-1" unicode="&#xe819;" d="M0 526l148 148 352-351 352 351 148-148-352-352-148-148-148 148z" horiz-adv-x="1000" />
<glyph glyph-name="up-open-1" unicode="&#xe81a;" d="M0 174l352 352 148 148 148-148 352-352-148-148-352 351-352-351z" horiz-adv-x="1000" />
<glyph glyph-name="left-open-1" unicode="&#xe81b;" d="M0 350l148 149 352 351 148-148-351-352 351-352-148-148-352 352z" horiz-adv-x="648" />
<glyph glyph-name="right-open-1" unicode="&#xe81c;" d="M0-2l352 352-352 352 148 148 352-351 148-149-148-148-352-352z" horiz-adv-x="648" />
<glyph glyph-name="arrows-cw" unicode="&#xe81d;" d="M0-150l0 402 402 0-160-160q108-107 258-107 125 0 222 75t130 192l138 0q-35-173-173-288t-317-114q-207 0-353 146z m10 598q35 174 173 288t317 114q207 0 354-146l146 146 0-402-402 0 160 160q-108 107-258 107-125 0-222-75t-130-192l-138 0z" horiz-adv-x="1000" />
<glyph glyph-name="down-dir" unicode="&#xe81e;" d="M460 550l-230-400-230 400 460 0z" horiz-adv-x="460" />
<glyph glyph-name="up-dir" unicode="&#xe81f;" d="M0 150l230 400 230-400-460 0z" horiz-adv-x="460" />
<glyph glyph-name="cog" unicode="&#xe820;" d="M571 350q0 59-41 101t-101 42-101-42-42-101 42-101 101-42 101 42 41 101z m286 61v-124q0-7-4-13t-11-7l-104-16q-10-30-21-51 19-27 59-77 6-6 6-13t-5-13q-15-21-55-61t-53-39q-7 0-14 5l-77 60q-25-13-51-21-9-76-16-104-4-16-20-16h-124q-8 0-14 5t-6 12l-16 103q-27 9-50 21l-79-60q-6-5-14-5-8 0-14 6-70 64-92 94-4 5-4 13 0 6 5 12 8 12 28 37t30 40q-15 28-23 55l-102 15q-7 1-11 7t-5 13v124q0 7 5 13t10 7l104 16q8 25 22 51-23 32-60 77-6 7-6 14 0 5 5 12 15 20 55 60t53 40q7 0 15-5l77-60q24 13 50 21 9 76 17 104 3 16 20 16h124q7 0 13-5t7-12l15-103q28-9 51-20l79 59q5 5 13 5 7 0 14-5 72-67 92-95 4-5 4-12 0-7-4-13-9-12-29-37t-30-40q15-28 23-54l102-16q7-1 12-7t4-13z" horiz-adv-x="857.1" />
<glyph glyph-name="cog-alt" unicode="&#xe821;" d="M500 350q0 59-42 101t-101 42-101-42-42-101 42-101 101-42 101 42 42 101z m429-286q0 29-22 51t-50 21-50-21-21-51q0-29 21-50t50-21 51 21 21 50z m0 572q0 29-22 50t-50 21-50-21-21-50q0-30 21-51t50-21 51 21 21 51z m-215-235v-103q0-6-4-11t-8-6l-87-14q-6-19-18-42 19-27 50-64 4-6 4-11 0-7-4-11-12-17-46-50t-43-33q-7 0-12 4l-64 50q-21-11-43-17-6-60-13-87-4-13-17-13h-104q-6 0-11 4t-5 10l-13 85q-19 6-42 18l-66-50q-4-4-11-4-6 0-12 4-80 75-80 90 0 5 4 10 5 8 23 30t26 34q-13 24-20 46l-85 13q-5 1-9 5t-4 11v104q0 5 4 10t9 6l86 14q7 19 18 42-19 27-50 64-4 6-4 11 0 7 4 12 12 16 46 49t44 33q6 0 12-4l64-50q19 10 43 18 6 60 13 86 3 13 16 13h104q6 0 11-4t6-10l13-85q19-6 42-17l65 49q5 4 12 4 6 0 11-4 81-75 81-90 0-4-4-10-7-9-24-30t-25-34q13-27 19-46l85-12q6-2 9-6t4-11z m357-298v-78q0-9-83-17-6-15-16-29 28-63 28-77 0-2-2-4-68-40-69-40-5 0-26 27t-29 37q-11-1-17-1t-17 1q-7-11-29-37t-25-27q-1 0-69 40-3 2-3 4 0 14 29 77-10 14-17 29-83 8-83 17v78q0 9 83 18 7 16 17 29-29 63-29 77 0 2 3 4 2 1 19 11t33 19 17 9q4 0 25-26t29-38q12 1 17 1t17-1q28 40 51 63l4 1q2 0 69-39 2-2 2-4 0-14-28-77 9-13 16-29 83-9 83-18z m0 572v-78q0-9-83-18-6-15-16-29 28-63 28-77 0-2-2-4-68-39-69-39-5 0-26 26t-29 38q-11-1-17-1t-17 1q-7-12-29-38t-25-26q-1 0-69 39-3 2-3 4 0 14 29 77-10 14-17 29-83 9-83 18v78q0 9 83 17 7 16 17 29-29 63-29 77 0 2 3 4 2 1 19 11t33 19 17 9q4 0 25-26t29-37q12 1 17 1t17-1q28 39 51 62l4 1q2 0 69-39 2-2 2-4 0-14-28-77 9-13 16-29 83-8 83-17z" horiz-adv-x="1071.4" />
<glyph glyph-name="down-dir-1" unicode="&#xe822;" d="M571 457q0-14-10-25l-250-250q-11-11-25-11t-25 11l-250 250q-11 11-11 25t11 25 25 11h500q14 0 25-11t10-25z" horiz-adv-x="571.4" />
<glyph glyph-name="up-dir-1" unicode="&#xe823;" d="M571 171q0-14-10-25t-25-10h-500q-15 0-25 10t-11 25 11 26l250 250q10 10 25 10t25-10l250-250q10-11 10-26z" horiz-adv-x="571.4" />
<glyph glyph-name="down-open-2" unicode="&#xe824;" d="M939 399l-414-413q-10-11-25-11t-25 11l-414 413q-11 11-11 26t11 25l93 92q10 11 25 11t25-11l296-296 296 296q11 11 25 11t26-11l92-92q11-11 11-25t-11-26z" horiz-adv-x="1000" />
<glyph glyph-name="right-open-2" unicode="&#xe825;" d="M618 361l-414-415q-11-10-25-10t-25 10l-93 93q-11 11-11 25t11 25l296 297-296 296q-11 11-11 25t11 25l93 93q10 11 25 11t25-11l414-414q10-11 10-25t-10-25z" horiz-adv-x="714.3" />
<glyph glyph-name="left-open-2" unicode="&#xe826;" d="M654 682l-297-296 297-297q10-10 10-25t-10-25l-93-93q-11-10-25-10t-25 10l-414 415q-11 10-11 25t11 25l414 414q10 11 25 11t25-11l93-93q10-10 10-25t-10-25z" horiz-adv-x="714.3" />
<glyph glyph-name="up-open-2" unicode="&#xe827;" d="M939 107l-92-92q-11-10-26-10t-25 10l-296 297-296-297q-11-10-25-10t-25 10l-93 92q-11 11-11 26t11 25l414 414q11 10 25 10t25-10l414-414q11-11 11-25t-11-26z" horiz-adv-x="1000" />
<glyph glyph-name="plus" unicode="&#xe828;" d="M729 454q44 0 74-31t31-73-31-73-74-30l-208 3 0-212q0-43-30-73t-75-31-73 31-30 73l3 212-212-3q-44 0-74 30t-30 73 30 73 74 31l212 0-3 209q0 42 30 73t73 31 75-31 30-73l0-209 208 0z" horiz-adv-x="834" />
<glyph glyph-name="compass" unicode="&#xe829;" d="M0 350q0 207 146 353t354 146 353-146 146-353-146-354-353-146-354 146-146 354z m125 0q0-154 110-265t265-110 263 109q112 112 112 266t-111 264-264 111-265-111-110-264z m187-188l125 250 250 125-125-250z" horiz-adv-x="1000" />
<glyph glyph-name="resize-full-alt-1" unicode="&#xe82a;" d="M839 55l72 72 0-224-223 0 72 72-184 185 79 79z m-749 591l-72-72 0 223 223 0-72-72 184-184-79-79z m670 79l-72 72 223 0 0-223-72 72-184-184-79 79z m-407-565l-184-185 72-72-223 0 0 224 72-72 184 184z" horiz-adv-x="928" />
<glyph glyph-name="tag-1" unicode="&#xe82b;" d="M0 483l0 287q2 31 24 54t52 22l287 0q88-6 133-55l426-472q19-28 19-58t-19-52l-334-334q-25-21-57-21t-52 21l-424 475q-55 64-55 133z m125 164q2-31 23-52t51-20q32 0 52 22t21 50q0 33-23 54t-50 20q-33-2-53-23t-21-51z" horiz-adv-x="941" />
<glyph glyph-name="edit-2" unicode="&#xe82c;" d="M0-150l0 818 188 182 521 0 0-226 31 31 162-160-380-381-239-78 76 238 262 262 0 226-369 0 0-156-164 0 0-668 533 0 0 143 88 87 0-318-709 0z m361 264l119 39-80 82z" horiz-adv-x="902" />
<glyph glyph-name="compass-1" unicode="&#xe82d;" d="M0 349q0 188 134 322t322 134 321-134 133-322-133-321-321-133-322 133-134 321z m63 1q0-162 115-277t277-116 277 116 116 277-116 277-277 116-277-116-115-277z m138-234l186 302 302 186 20-22-184-302-302-184z" horiz-adv-x="910" />
<glyph glyph-name="cogs" unicode="&#xe82e;" d="M0 245l0 97 94 8q8 30 23 55l-60 74 68 69 74-61q26 16 55 23l8 94 97 0 10-94q29-7 55-23l74 61 68-69-60-74q16-25 23-55l94-8 0-97-94-10q-7-29-23-55l60-72-68-70-74 60q-26-15-55-23l-10-94-97 0-8 94q-29 8-55 23l-74-60-68 70 60 72q-15 26-23 55z m221 49q0-37 26-64t64-26 63 26 26 64-26 63-63 26-64-26-26-63z m318 238l8 72 70-2q8 22 20 39l-37 57 54 45 49-49q20 10 41 14l14 66 72-8-2-68q22-8 39-22l57 39 45-54-49-49q10-20 12-43l68-14-8-70-68 0q-8-20-22-37l39-59-56-45-47 49q-22-8-43-12l-14-66-70 6 0 70q-20 8-37 20l-59-37-45 54 49 49q-8 20-12 41z m31-445l6 50 49 0q6 16 14 28l-26 43 37 33 36-37q13 8 29 10l10 48 48-5 0-49q16-6 28-16l41 27 31-41-35-35q6-13 10-29l47-12-6-51-49 0q-4-15-14-27l28-43-40-33-35 37q-13-8-29-10l-10-49-49 6 0 51q-13 4-27 14l-41-28-31 41 35 36q-6 13-8 29z m118 13q-4-21 8-36t32-17 34 9 17 34-10 35-31 18l-6 0q-17 0-31-12t-13-31z m17 451q-4-27 14-48t45-25 48 15 23 45-14 48-44 24l-7 0q-26 0-44-17t-21-42z" horiz-adv-x="1000" />
<glyph glyph-name="up" unicode="&#xe82f;" d="M0 264l391 586 390-586-211 0 0-414-359 0 0 414-211 0z" horiz-adv-x="781" />
<glyph glyph-name="down-open" unicode="&#xf004;" d="M0 533q0 25 18 43t44 18 42-18l305-303 304 303q18 18 43 18t43-18q18-18 18-43t-18-43l-390-391-391 391q-18 19-18 43z" horiz-adv-x="817.4" />
<glyph glyph-name="up-open" unicode="&#xf005;" d="M0 167q0 26 18 43l391 391 390-391q17-17 17-43 0-26-17-44-18-17-44-17t-43 17l-303 305-305-305q-18-17-43-17t-43 17q-18 18-18 44z" horiz-adv-x="816.9" />
<glyph glyph-name="right-open" unicode="&#xf006;" d="M0 0q0 25 18 43l305 304-305 304q-18 18-18 44t18 43 44 18 43-18l390-391-390-391q-19-18-43-18t-44 18q-18 18-18 44z" horiz-adv-x="495.1" />
<glyph glyph-name="left-open" unicode="&#xf007;" d="M0 353l391 391q18 18 43 18 24 0 43-18 18-18 18-44t-18-43l-304-304 304-305q18-17 18-43t-18-43q-18-18-43-18t-43 18z" horiz-adv-x="495.1" />
<glyph glyph-name="move" unicode="&#xf047;" d="M1000 350q0-14-11-25l-142-143q-11-11-26-11t-25 11-10 25v72h-215v-215h72q14 0 25-10t11-25-11-25l-143-143q-10-11-25-11t-25 11l-143 143q-11 10-11 25t11 25 25 10h72v215h-215v-72q0-14-10-25t-25-11-25 11l-143 143q-11 11-11 25t11 25l143 143q10 11 25 11t25-11 10-25v-72h215v215h-72q-14 0-25 10t-11 25 11 26l143 142q11 11 25 11t25-11l143-142q11-11 11-26t-11-25-25-10h-72v-215h215v72q0 14 10 25t25 11 26-11l142-143q11-10 11-25z" horiz-adv-x="1000" />
<glyph glyph-name="info-circled-alt" unicode="&#xf086;" d="M0 350q0 95 37 182t100 149 149 100 183 37q95 0 182-37t149-100 100-149 37-182q0-95-37-182t-100-150-149-100-182-37q-96 0-183 37t-149 100-100 150-37 182z m117 0q0-71 28-137t75-112 112-75 137-28 136 28 112 75 75 112 28 137-28 136-75 112-112 75-136 28-137-28-112-75-75-112-28-136z m281 170q0 28 20 45t51 17q32 0 51-17t19-45-19-46-51-17q-32 0-51 17t-20 46z m5-402v299h132v-299h-132z" horiz-adv-x="937.5" />
<glyph glyph-name="link-ext" unicode="&#xf08e;" d="M786 332v-178q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h393q7 0 12-5t5-13v-36q0-8-5-13t-12-5h-393q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v178q0 8 5 13t13 5h36q8 0 13-5t5-13z m214 482v-285q0-15-11-25t-25-11-25 11l-98 98-364-364q-5-6-13-6t-12 6l-64 64q-6 5-6 12t6 13l364 364-98 98q-11 11-11 25t11 25 25 11h285q15 0 25-11t11-25z" horiz-adv-x="1000" />
<glyph glyph-name="doc-text" unicode="&#xf0f6;" d="M819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 17-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 16t-16 37v233h-429v-858h715z m-572 483q0 7 5 12t13 5h393q8 0 13-5t5-12v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36z m411-125q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36q0 8 5 13t13 5h393z m0-143q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36q0 8 5 13t13 5h393z" horiz-adv-x="857.1" />
<glyph glyph-name="plus-squared" unicode="&#xf0fe;" d="M714 314v72q0 14-10 25t-25 10h-179v179q0 15-11 25t-25 11h-71q-15 0-25-11t-11-25v-179h-178q-15 0-25-10t-11-25v-72q0-14 11-25t25-10h178v-179q0-14 11-25t25-11h71q15 0 25 11t11 25v179h179q14 0 25 10t10 25z m143 304v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" />
<glyph glyph-name="bitbucket" unicode="&#xf171;" d="M455 371q4-35-28-57t-63-3q-21 9-29 32t-1 46 29 32q20 11 41 7t36-20 15-37z m62 11q-8 60-63 92t-110 7q-35-15-56-49t-20-72q3-51 44-87t92-31q51 4 85 47t28 93z m133 303q-11 15-31 25t-32 12-40 7q-162 26-316-1-24-4-37-7t-30-12-28-24q16-16 42-26t41-12 49-6q127-16 250-1 35 5 50 7t40 12 42 26z m32-578q-4-14-9-42t-7-47-16-39-33-32q-48-27-106-40t-112-12-113 10q-25 5-45 10t-43 15-41 25-29 34q-14 54-31 163l3 9 10 5q124-83 283-83t283 83q12-3 13-13t-3-25-4-21z m101 537q-15-94-62-366-3-17-15-31t-24-23-31-17q-140-70-340-49-139 15-220 78-8 6-14 14t-10 20-5 19-3 22-3 20q-5 27-15 83t-16 90-13 83-12 88q2 14 10 27t17 21 26 17 25 12 27 10q70 26 175 36 211 21 377-28 86-25 120-68 9-11 9-28t-3-30z" horiz-adv-x="785.7" />
<glyph glyph-name="linux" unicode="&#xf17c;" d="M370 621q-6-1-9-6t-4-5q-3-1-3 2 0 7 10 9h6z m49-8q-3-1-7 4t-10 2q14 6 18-1 2-3-1-5z m-196-238q-3 0-4-2t-2-7-3-8-6-7q-5-6 0-7 2 0 7 4t7 10q0 2 1 4t1 4 1 2 0 2v2t-1 1-1 2z m477-201q0 10-31 24 2 8 4 15t3 15 2 12 0 12 0 11-2 12-3 12-2 14-4 14q-5 27-26 58t-40 42q13-11 32-47 48-90 30-155-6-22-28-23-17-2-21 10t-5 47-6 60q-5 21-11 38t-11 25-9 14-7 8-4 4q-8 35-17 58t-17 31-13 19-8 22q-3 12 3 30t2 27-24 14q-9 2-25 10t-20 9q-4 1-6 15t4 28 20 15q21 2 29-16t2-33q-6-10-1-15t17 0q7 2 7 20v21q-3 17-8 28t-11 17-13 8-15 4q-60-4-50-74 0-9-1-9-5 5-16 6t-19 0-8 3q0 31-9 50t-25 19q-15 0-23-16t-10-33q0-8 2-20t8-21 8-8q6 2 9 8 2 5-4 4-4 0-8 8t-6 19q0 12 5 21t19 8q10 0 15-12t6-22-1-12q-12-9-17-16-5-7-16-13t-11-7q-7-8-9-16t4-10q8-4 14-10t9-11 11-7 19-4q27-1 57 8 1 1 13 4t19 6 17 7 12 10q5 8 11 5 2-2 3-5t-1-7-10-5q-11-3-31-12t-25-11q-25-11-40-13-14-3-44 1-5 1-5-1t10-10q14-13 37-13 10 1 20 4t20 8 19 10 17 9 13 7 10 1 5-6q0-1-1-2t-2-3-3-3-5-2-5-3-5-3-6-2q-15-8-37-25t-38-24-27 0q-12 6-35 41-12 17-14 12-1-2-1-6 0-14-8-31t-16-31-12-33 6-35q-13-3-35-50t-26-79q-1-10-1-38t-3-33q-4-14-16-2-18 17-20 53-1 15 2 31 2 10-1 10-1-1-2-3-20-36 6-92 3-7 14-16t13-11q11-13 58-51t52-42q9-9 10-22t-8-24-25-13q4-8 16-24t15-31 4-39q26 13 4 51-2 5-6 9t-5 7-1 3q2 3 7 6t11-2q26-29 93-20 74 9 99 49 13 21 19 17 6-4 5-30 0-13-13-51-5-13-3-21t14-8q1 10 8 43t7 50q1 12-3 41t-5 54 13 39q9 10 29 10 0 21 19 30t40 6 34-13z m-351 462q2 9-1 17t-6 8q-5 1-5-4 1-3 2-3 6 0 4-9-1-11 5-11 1 0 1 2z m234-110q-1 4-3 6t-8 3-8 3q-3 2-5 5t-4 4-3 4-2 2-3-1q-7-9 4-24t22-18q5 0 8 5t2 11z m-99 119q0 6-3 11t-6 7-5 1q-3 0-5-1t0-2 3-2q8-2 10-17 0-2 5 1 1 1 1 2z m30 130q0 1-1 3t-5 3-6 4q-8 8-13 8-5 0-7-4t0-7 0-7q-1-3-4-6t-3-5 2-5q2-2 4 0t6 5 9 5q0 1 5 1t8 1 5 4z m315-749q11-6 18-13t6-14-1-12-9-13-13-10-17-11-17-9-18-9-15-7q-21-11-48-31t-42-36q-9-9-38-11t-50 8q-10 5-16 13t-9 15-13 11-26 5q-24 0-72 0-11 0-32 0t-32-2q-25 0-45-8t-30-17-24-16-30-6q-16 0-62 17t-81 24q-11 2-29 5t-28 5-22 6-18 8-10 11q-5 12 4 37t10 30q1 9-2 23t-6 23-2 21 6 15q7 6 31 8t34 6q17 10 23 20t7 28q12-41-18-59-18-11-46-8-19 1-24-6-7-8 3-32 1-3 4-10t5-10 2-9 1-13q0-8-9-27t-8-27q1-9 20-14 12-4 47-11t56-11q13-3 41-12t46-13 31-2q24 3 36 15t13 27-4 33-11 29-11 20q-67 106-94 135-38 42-63 23-6-5-9 8-1 9-1 21 1 16 6 29t13 26 13 24q4 12 14 40t17 43 17 35 21 30q62 79 70 108-7 63-9 173-1 51 13 85t59 58q22 12 58 12 30 1 59-7t50-24q32-23 51-67t17-83q-3-53 16-119 19-63 75-122 30-33 55-91t33-106q5-28 3-48t-7-30-11-13q-5-1-13-10t-15-20-23-19-34-8q-10 1-17 3t-13 8-7 8-7 12-5 11q-12 20-23 16t-15-27 4-54q11-39 0-109-5-36 10-56t41-19 47 20q33 28 50 37t58 24q30 10 43 20t10 20-14 16-28 13q-19 6-28 27t-8 40 8 27q1-18 5-32t8-23 11-15 12-11 12-7 9-6z" horiz-adv-x="857.1" />
<glyph glyph-name="dot-circled" unicode="&#xf192;" d="M571 350q0-59-41-101t-101-42-101 42-42 101 42 101 101 42 101-42 41-101z m-142 304q-83 0-153-41t-110-111-41-152 41-152 110-111 153-41 152 41 110 111 41 152-41 152-110 111-152 41z m428-304q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="plus-squared-alt" unicode="&#xf196;" d="M643 404v-36q0-8-5-13t-13-5h-196v-196q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v196h-196q-8 0-13 5t-5 13v36q0 7 5 12t13 5h196v197q0 8 5 13t13 5h36q8 0 13-5t5-13v-197h196q8 0 13-5t5-12z m71-250v464q0 37-26 63t-63 26h-464q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63z m72 464v-464q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h464q66 0 114-48t47-113z" horiz-adv-x="785.7" />
<glyph glyph-name="fax" unicode="&#xf1ac;" d="M161 636q37 0 63-26t26-64v-607q0-37-26-63t-63-26h-72q-36 0-63 26t-26 63v607q0 37 26 64t63 26h72z m768-91q32-19 52-52t19-72v-428q0-59-42-101t-101-42h-482q-37 0-63 26t-26 63v857q0 23 15 38t38 16h375q23 0 49-11t43-27l85-85q15-15 26-42t12-49v-91z m-411-552v71q0 8-5 13t-13 5h-71q-8 0-13-5t-5-13v-71q0-8 5-13t13-5h71q8 0 13 5t5 13z m0 143v71q0 8-5 13t-13 5h-71q-8 0-13-5t-5-13v-71q0-8 5-13t13-5h71q8 0 13 5t5 13z m0 143v71q0 8-5 13t-13 5h-71q-8 0-13-5t-5-13v-71q0-8 5-13t13-5h71q8 0 13 5t5 13z m143-286v71q0 8-5 13t-13 5h-72q-7 0-12-5t-5-13v-71q0-8 5-13t12-5h72q8 0 13 5t5 13z m0 143v71q0 8-5 13t-13 5h-72q-7 0-12-5t-5-13v-71q0-8 5-13t12-5h72q8 0 13 5t5 13z m0 143v71q0 8-5 13t-13 5h-72q-7 0-12-5t-5-13v-71q0-8 5-13t12-5h72q8 0 13 5t5 13z m143-286v71q0 8-5 13t-13 5h-72q-7 0-12-5t-6-13v-71q0-8 6-13t12-5h72q8 0 13 5t5 13z m0 143v71q0 8-5 13t-13 5h-72q-7 0-12-5t-6-13v-71q0-8 6-13t12-5h72q8 0 13 5t5 13z m0 143v71q0 8-5 13t-13 5h-72q-7 0-12-5t-6-13v-71q0-8 6-13t12-5h72q8 0 13 5t5 13z m53 214v143h-89q-22 0-38 15t-16 38v90h-357v-286h500z" horiz-adv-x="1000" />
<glyph glyph-name="calc" unicode="&#xf1ec;" d="M214-7q0 29-21 50t-50 21-51-21-21-50 21-51 51-21 50 21 21 51z m215 0q0 29-21 50t-51 21-50-21-21-50 21-51 50-21 51 21 21 51z m-215 214q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m429-214q0 29-21 50t-51 21-50-21-21-50 21-51 50-21 51 21 21 51z m-214 214q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m-215 214q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m429-214q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m-214 214q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m428-428v214q0 29-21 50t-50 22-50-22-22-50v-214q0-29 22-50t50-22 50 22 21 50z m-214 428q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m214 179v143q0 14-10 25t-26 11h-714q-14 0-25-11t-11-25v-143q0-14 11-25t25-11h714q15 0 26 11t10 25z m0-179q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m72 358v-858q0-29-22-50t-50-21h-786q-29 0-50 21t-21 50v858q0 29 21 50t50 21h786q29 0 50-21t22-50z" horiz-adv-x="1000" />
<glyph glyph-name="toggle-off" unicode="&#xf204;" d="M643 350q0 58-23 111t-61 91-91 61-111 23-111-23-91-61-61-91-23-111 23-111 61-91 91-61 111-23 111 23 91 61 61 91 23 111z m428 0q0 58-22 111t-61 91-91 61-111 23h-216q67-50 106-125t38-161-38-161-106-125h216q58 0 111 23t91 61 61 91 22 111z m72 0q0-72-29-139t-76-113-114-77-138-28h-429q-72 0-138 28t-114 77-76 113-29 139 29 139 76 114 114 76 138 28h429q72 0 138-28t114-76 76-114 29-139z" horiz-adv-x="1142.9" />
<glyph glyph-name="toggle-on" unicode="&#xf205;" d="M0 350q0 73 29 139t76 114 114 76 138 28h429q72 0 138-28t114-76 76-114 29-139-29-139-76-113-114-77-138-28h-429q-72 0-138 28t-114 77-76 113-29 139z m786-286q58 0 111 23t91 61 61 91 22 111-22 111-61 91-91 61-111 23-111-23-91-61-61-91-23-111 23-111 61-91 91-61 111-23z" horiz-adv-x="1142.9" />
<glyph glyph-name="safari" unicode="&#xf267;" d="M530 352q0-15-10-25t-23-11q-14 0-25 9t-10 23q0 15 9 25t23 11 25-9 11-23z m8-33l195 325q-5-5-37-35t-70-65-77-71-65-62-28-29l-195-323q4 4 38 34t70 65 76 71 65 62 28 28z m361 31q0-112-58-207-2 1-9 6t-15 9-9 5q-8 0-8-8 0-5 33-24-41-63-103-107t-135-61l-8 37q-1 6-9 6-3 0-4-3t-1-6l9-38q-41-8-82-8-111 0-208 59 1 1 8 11t12 19 5 10q0 8-7 8-4 0-10-8t-12-20-8-13q-63 42-107 105t-61 137l38 8q6 2 6 8 0 3-3 5t-6 1l-38-9q-8 41-8 78 0 115 61 212 1-1 10-7t17-11 10-4q7 0 7 6 0 4-7 9t-18 12l-11 7q43 62 105 105t136 60l9-37q1-6 8-6 3 0 5 3t1 6l-9 37q40 7 75 7 114 0 212-61-22-31-22-36 0-7 6-7 7 0 27 35 62-41 105-103t60-135l-31-7q-6-1-6-8 0-3 3-5t5-1l32 7q8-40 8-78z m47 0q0 91-35 174t-95 142-142 95-174 35-173-35-143-95-95-142-35-174 35-173 95-143 143-95 173-35 174 35 142 95 95 143 35 173z m54 0q0-102-40-194t-106-160-160-106-194-40-194 40-160 106-106 160-40 194 40 194 106 160 160 106 194 40 194-40 160-106 106-160 40-194z" horiz-adv-x="1000" />
<glyph glyph-name="chrome" unicode="&#xf268;" d="M498 850q134 1 252-67 130-75 196-208l-414 22q-89 5-164-41t-103-128l-154 236q72 89 174 137t213 49z m-416-226l188-370q40-80 117-121t164-25l-129-252q-118 19-214 88t-152 176-56 230q0 149 82 274z m885-94q32-84 33-174t-27-170-86-152-137-117q-128-74-278-66l226 347q49 73 46 162t-59 155z m-467-11q70 0 119-50t50-119-50-119-119-49-119 49-49 119 49 119 119 50z" horiz-adv-x="1000" />
<glyph glyph-name="firefox" unicode="&#xf269;" d="M504-150q-158 0-282 84t-183 222q-33 74-38 168t15 186 62 174 100 135l-7-156q7 7 38 8t39-8q24 45 90 77t131 32q-30-25-67-82t-33-92q14-4 35-7t36-4 37-3 29-1q8-3 5-26t-17-42q-3-4-9-10t-32-20-56-19l8-105-77 37q-10-24-5-45t21-38 36-23 45-3q29 5 55 19t47 25 41 10q34-2 50-19t10-36q0-1-1-3t-5-7-10-9-17-5-26-1q-34-53-81-76t-117-16q41-34 91-46t94-3 86 29 71 48 45 58q24 51 22 108t-21 105-44 70q49-21 77-45t43-62q8 95-32 191t-117 159q148-43 230-156t84-289q1-71-23-143t-68-132-106-110-138-75-161-28z" horiz-adv-x="1000" />
<glyph glyph-name="calendar-1" unicode="&#xf4c5;" d="M0-31v761q0 37 26 62t62 26h762q36 0 61-26t26-62v-761q0-36-26-62t-61-26h-762q-36 0-62 26t-26 62z m88 0h762v527h-762v-527z m60 59v175h176v-175h-176z m0 234v176h176v-176h-176z m235-234v175h175v-175h-175z m0 234v176h175v-176h-175z m234-234v175h176v-175h-176z m0 234v176h176v-176h-176z" horiz-adv-x="937.5" />
<glyph glyph-name="search-1" unicode="&#xf50d;" d="M11 375q-23 87 0 173t87 150q48 49 110 74t128 25q65 0 127-25t110-74q52-52 77-119t21-137-36-132q28-8 49-29l174-173q35-35 35-85t-35-85q-35-35-85-35t-85 35l-173 174q-22 20-30 49-70-35-149-35-66 0-128 25t-110 73q-64 64-87 151z m101 86q0-93 65-158 66-65 159-65 92 0 157 65t66 158-66 158q-66 66-157 66-92 0-159-66-65-65-65-158z" horiz-adv-x="892.6" />
</font>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

280
sources/html/index.css Normal file
View file

@ -0,0 +1,280 @@
BODY {
background-color:white;
font-size:12px;
font-family:sans-serif,arial;
color:blue;
}
.cell , #recover_box p{
font-size : 18px;
}
.remark {
border: solid black 1px;
font-family:sans-serif;
font-size: 9px;
color:blue;
width:200px;
padding:3px;
}
.gras {
font-size:12px;
font-family:sans-serif,arial;
color:red;
}
.input_text {
border:1px solid blue;
margin:1px;
padding: 10px;
border-radius: 4px;
font-size:16px;
font-size:1rem;
}
.button {
color:white;
font-weight: bold;
border:0px;
text-decoration:none;
font-family: helvetica,arial,sans-serif;
background-image: url("image/bg-submit2.gif");
background-repeat: repeat-x repeat-y;
background-position: left;
text-decoration:none;
font-family: helvetica,arial,sans-serif;
border-width:0px;
padding:2px 4px 2px 4px;
cursor:pointer;
margin:31px 2px 1px 2px;
-moz-border-radius:2px 2px;
border-radius:2px 2px;
font-size : 1rem;
margin-bottom: 10px;
}
.button:hover {
cursor:pointer;
background-color:white;
border-style: solid;
border-width: 0px;
background-image: url("image/bg-submit3.gif");
background-repeat: repeat-x repeat-y;
}
#logo_id {
width:19%;
}
#alternate_browser {
display : none;
}
#logo_id {
position:absolute;
z-index:-1;
height:30%;
width:auto;
left:0px;
}
#login_frm {
position:absolute;
left:15%;
top:50%;
}
.input_text {
width:8em;
}
#recover_link {
position:absolute;
margin-bottom:30px;
width: 100%;
}
#alternate_browser {
display : none;
}
#logo_id {
position:absolute;
z-index:-1;
height:45%;
width:auto;
left:0px;
}
#login_frm {
position:absolute;
left:15%;
top:50%;
}
.input_text {
width:8em;
}
#recover_link {
position:absolute;
bottom:30px;
width: 100%;
}
#recover_box {
display: none;
position: absolute;
top: 15%;
z-index: 1;
border: 2px solid blue;
width: 96%;
margin-left: 1%;
background-color: whitesmoke;
}
@media only screen and (max-width : 900px) {
#alternate_browser {
display : none;
}
#logo_id {
position:absolute;
z-index:-1;
height:auto;
width:60%;
left:20%;
top:5%;
}
.input_text {
width:12rem;
}
#recover_box {
display:none;
position: absolute;
top: 15%;
z-index: 1;
border: 2px solid blue;
width: 96%;
left: 1%;
background-color: whitesmoke;
}
#login_frm {
position:absolute;
left:25%;
right:35%;
top:50%;
}
}
@media only screen and (min-width : 901px) {
#alternate_browser {
position:absolute;
bottom: 0px;
left:0px;
z-index: -1;
display : block;
}
#logo_id {
z-index:-1;
position:absolute;
width:19%;
left:7%;
top:9%;
}
#login_frm {
position:absolute;
left:30%;
top:25%;
}
.input_text {
width: 24em;
width: 24rem;
}
#recover_link {
position:absolute;
margin-top:397px;
left:539px;
background-color: white;
}
}
@media only screen and (min-width : 1100px) {
#alternate_browser {
position:absolute;
bottom: 0px;
left:0px;
z-index: -1;
display : block;
}
#logo_id {
z-index:-1;
position:absolute;
width:19%;
left:8%;
top:19.5%;
}
#login_frm {
position:absolute;
left:25%;
top:30%;
}
.input_text {
width: 24em;
width: 24rem;
}
#recover_link {
position:absolute;
top:397px;
left:539px;
background-color: white;
width:auto;
}
#recover_box {
display: none;
position: absolute;
top: 15%;
z-index: 1;
border: 2px solid blue;
width: 96%;
margin-left: 1%;
background-color: whitesmoke;
}
}
@media only screen and (min-width : 1100px) {
#alternate_browser {
position:absolute;
bottom: 0px;
left:0px;
z-index: -1;
display : block;
}
#logo_id {
z-index:-1;
position:absolute;
width:19%;
left:25%;
top:19.5%;
}
#login_frm {
position:absolute;
left:39%;
top:28%;
}
.input_text {
width: 24em;
width: 24rem;
}
#recover_link {
position:absolute;
top:55%;
left:55%;
background-color: white;
margin-top:0px;
}
#recover_box {
display: none;
position: absolute;
top: 40%;
z-index: 1;
border: 2px solid blue;
width: 30%;
margin-left: 25%;
background-color: whitesmoke;
}
}

View file

@ -1 +1,32 @@
<HTML><head><META HTTP-EQUIV="REFRESH" content="0;url=index.php"></head><body> Connecting... </body></html>
<!DOCTYPE html>
<!--
Copyright (C) 2017 Dany De Bontridder <dany@alchimerys.be>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-->
<html>
<head>
<title>Noalyss</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<META HTTP-EQUIV="REFRESH" content="0; url=index.php">
</head>
<body>
<div>Connecting... </div>
</body>
</html>

View file

@ -45,7 +45,7 @@
* <li>Dans le répertoire include: Les noms de fichier ajax* correspondent aux fichiers appelé par une fonction javascript en ajax,
* normalement le nom de fichier est basé sur le nom de la fonction javascript
* exemple pour la fonction javascript anc_key_choice le fichier correspondant est
* ajax_anc_key_choice.php
* ajax/ajax_anc_key_choice.php
* <li>Dans le répertoire include/template: les fichiers de
* présentation HTML </li>
* <li>Utiliser sql/upgrade.sql comme fichier temporaire pour modifier la base de données, en général
@ -96,7 +96,7 @@
* class_*.php if it is related to a class.</li>
* <li>In the folder include, files starting with ajax are executed by ajax call, usually, the file name is
* based on the javascript function, example for the javascript function anc_key_choice the corresponding file is
* ajax_anc_key_choice.php
* ajax/ajax_anc_key_choice.php
*
* <li>In the folder include/template: files for the HTML presentation
* </li>
@ -132,87 +132,48 @@
* </ul>
*/
if ( ! file_exists('..'.DIRECTORY_SEPARATOR.'include'.DIRECTORY_SEPARATOR.'config.inc.php'))
{
header("Location: admin/setup.php",true, 307);
header("Location: install.php",true, 307);
exit(0);
}
echo '<!doctype html><HTML>
<head>
<TITLE> NOALYSS </TITLE>
<link rel="shortcut icon" type="image/ico" href="favicon.ico" />
<style>
BODY {
background-color:white;
font-size:12px;
font-family:sans-serif,arial;
color:blue;
}
.cell , #recover_box p{
font-size : 18px;
}
.remark {
border: solid black 1px;
font-family:sans-serif;
font-size: 9px;
color:blue;
width:200px;
padding:3px;
}
.gras {
font-size:12px;
font-family:sans-serif,arial;
color:red;
}
.input_text {
border:1px solid blue;
margin:1px;
padding: 10px;
border-radius: 4px;
font-size:18px;
}
.button {
color:white;
font-weight: bold;
border:0px;
text-decoration:none;
font-family: helvetica,arial,sans-serif;
background-image: url("image/bg-submit2.gif");
background-repeat: repeat-x repeat-y;
background-position: left;
text-decoration:none;
font-family: helvetica,arial,sans-serif;
border-width:0px;
padding:2px 4px 2px 4px;
cursor:pointer;
margin:31px 2px 1px 2px;
-moz-border-radius:2px 2px;
border-radius:2px 2px;
font-size : 20px;
margin-bottom: 10px;
}
.button:hover {
cursor:pointer;
background-color:white;
border-style: solid;
border-width: 0px;
background-image: url("image/bg-submit3.gif");
background-repeat: repeat-x repeat-y;
}
</style>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="index.css" media="screen">
<script src="js/scripts.js" type="text/javascript"></script>
</head>
<BODY>';
$my_domain="";
require_once '../include/constant.php';
require_once '../include/config.inc.php';
require_once NOALYSS_INCLUDE.'/ac_common.php';
require_once NOALYSS_INCLUDE.'/lib/ac_common.php';
if (file_exists("install.php")&& ! DEBUG ) {
// At the end of the installation procedure , the install file must be removed
if (isset($_GET['remove_install'])) {
if (is_writable(__DIR__."/install.php") ) {
unlink(__DIR__."/install.php");
}
}
// if removed failed then
if (file_exists("install.php") )
{
/*
* This file shouldn't exist
*/
echo _("Le fichier ".__DIR__."/install.php est encore présent, vous devez l'effacer avant d'utiliser NOALYSS");
return;
}
}
if ( strlen(domaine) > 0 )
{
$my_domain="Domaine : ".domaine;
$my_domain=sprintf(_("Domaine")." : %s",domaine);
}
if (defined("RECOVER") && isset ($_REQUEST['recover']) )
@ -226,7 +187,7 @@ if (isset ($_REQUEST['reconnect']) && isset ($_REQUEST['backurl'])) {
}
echo '
<span style="background-color:#879ed4;color:white;padding-left:4px;padding-right:4px;">
version 6.9 - '.$my_domain.'
version 7001 - '.$my_domain.'
</span>
<BR>
<BR>
@ -234,22 +195,20 @@ version 6.9 - '.$my_domain.'
<BR>
<center>
<IMG SRC="image/logo6820.png" style="width:420px;height:200px" alt="NOALYSS">
<IMG SRC="image/logo7000.png" style="opacity:0.4" id="logo_id" alt="NOALYSS">
<BR>
<BR>
<BR>
<form action="login.php" method="post" name="loginform">'.
<form id="login_frm" action="login.php" method="post" name="loginform">'.
$goto .
'<TABLE><TR><TD>
<TABLE BORDER=0 CELLSPACING=0>
<TR>
<TD class="cell">Utilisateur</TD>
<TD><input type="text" class="input_text" value="" id="p_user" name="p_user" tabindex="1"></TD>
<TD><input type="text" class="input_text" value="" id="p_user" name="p_user" autofocus tabindex="1" placeholder="User"></TD>
</TR>
<TR>
<TD class="cell"> Mot de passe </TD>
<TD><INPUT TYPE="PASSWORD" class="input_text" value="" NAME="p_pass" tabindex="2"></TD>
<TD><INPUT TYPE="PASSWORD" class="input_text" value="" NAME="p_pass" tabindex="2"i placeholder="*******"></TD>
</TR>';
@ -278,7 +237,7 @@ if ( $g_captcha == true )
echo '
<TR style="height:50px;vertical-align:bottom">
<TD style="width:auto;text-align:center" colspan="2">
<INPUT TYPE="SUBMIT" style="width:250px;height:48px;-moz-border-radius:10px;border-radius:10px" class="button" NAME="login" value="Se connecter">
<INPUT TYPE="SUBMIT" style="width:158px;height:34px;-moz-border-radius:10px;border-radius:10px" class="button" NAME="login" value="Se connecter">
</TD>
</TR>
</table>
@ -286,12 +245,12 @@ echo '
?>
</table>
</center>
</form>
<?php if (defined("RECOVER")) : ?>
<a id="recover_link" href="#">Mot de passe oublié ? </a>
<div id="recover_box" style="display:none;position:absolute;top:40%;z-index:1;border:solid blue 2px;width:30%;margin-left: 25%;background-color: whitesmoke">
<div id="recover_box">
<span style="display:block;font-size:120%;padding:10px">Indiquez votre login ou votre email <span style="cursor: pointer;background-color: white;color:block;top:-5px;float: right;position:relative;right:-5px" id="close"><a ref="#" id="close_link"><?php echo SMALLX?></a></span></span>
<form method="POST">
<input type="hidden" value="send_email" name="id">
@ -317,7 +276,7 @@ echo '
</script>
<?php endif; ?>
<div style="position:absolute;bottom: 0px;width:80%;right:10%">
<div id="alternate_browser">
<p>Nous conseillons d'utiliser Firefox ou chrome.</p>
<p>We recommend to use Firefox or Chrome.</p>
<ul style="list-style:none;display:block">

647
sources/html/install.php Normal file
View file

@ -0,0 +1,647 @@
<?php
session_start();
?>
<!doctype html>
<HTML><HEAD>
<TITLE>Noalyss - Install</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=UTF8">
</title>
<head>
<link rel="icon" type="image/ico" href="favicon.ico" />
<META http-equiv="Content-Type" content="text/html; charset=UTF8">
<script type="text/javascript" charset="utf-8" language="javascript" src="js/prototype.js"></script>
<link type="text/css" REL="stylesheet" href="style-classic.css"/>
<style>
body {
font : 100%;
color:darkblue;
margin-left : 50px;
margin-right: 50px;
background-color: #F8F8FF;
}
h1 {
font-size: 120%;
text-align: center;
background-color: darkblue;
color:white;
text-transform: uppercase;
}
h2 {
font-size: 105%;
text-align: left;
text-decoration: underline;
}
h3 {
font-size : 102%;
font-style: italic;
margin-left: 3px;
}
.button {
font-size:110%;
color:white;
font-weight: bold;
border:0px;
text-decoration:none;
font-family: helvetica,arial,sans-serif;
background-image: url("image/bg-submit2.gif");
background-repeat: repeat-x;
background-position: left;
text-decoration:none;
font-family: helvetica,arial,sans-serif;
border-width:0px;
padding:2px 4px 2px 4px;
cursor:pointer;
margin:1px 2px 1px 2px;
-moz-border-radius:2px 2px;
border-radius:2px 2px;
}
.button:hover {
cursor:pointer;
background-color:white;
border-style: solid;
border-width: 0px;
font-color:blue;
margin:2px 2px 1px 2px;
}
.warning,.error {
color:red;
}
img:hover {
cursor: inherit;
background-color: inherit;
color: inherit;
}
</style>
</head>
<body>
<p align="center">
<IMG SRC="image/logo7000.png" style="width: 400px;z-index:-1;position:fixed;top:30px;rigth:50px;opacity: 0.2" alt="NOALYSS">
</p>
<h1>NOALYSS : comptabilité - accountancy </h1>
<?php
/*
* This file is part of NOALYSS.
*
* NOALYSS is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* $Revision*/
// Copyright Author Dany De Bontridder danydb@aevalys.eu
/*!\file
* \brief This file permit to upgrade a version of NOALYSS , it should be
* used and immediately delete after an upgrade.
* This file is included in each release for a new upgrade
*
*/
if ( ! isset($_GET['lang'])){
?>
<p>
Choisissez votre langue ,pour MacOS utilisez "Not Used"
</p>
<p>
Select your language, for MacOS user please use "Not Used"
</p>
<form method="GET">
Language : <select name="lang">
<OPTION value="fr_FR.utf8">Français</option>
<OPTION value="en_US.utf8">English</option>
<OPTION value="none">Not Used</option>
</select>
<input type="submit" value="Continue">
</form>
<?php
exit();
}
require_once '../include/constant.php';
include_once NOALYSS_INCLUDE.'/lib/ac_common.php';
include_once NOALYSS_INCLUDE.'/lib/html_input.class.php';
if ( $_GET['lang'] == "en_US.utf8" || $_GET['lang']=='fr_FR.utf8')
{
$_SESSION['g_lang']=$_GET['lang'];
set_language();
}
?>
<script type="text/javascript" charset="utf-8" language="javascript" src="js/infobulle.js">
</script>
<script>
var content=new Array();
content[200]="<?php echo _("Indiquez ici le répertoire les documents temporaires peuvent être sauvés exemple c:/temp, /tmp")?>";
content[201]="<?php echo _("Désactiver le changement de langue (requis pour MacOSX)")?>";
content[202]="<?php echo _("Le chemin vers le repertoire contenant psql, pg_dump...")?>";
content[203]="<?php echo _("Utilisateur de la base de donnée postgresql")?>";
content[204]="<?php echo _("Mot de passe de l'utilisateur de Postgresql")?>";
content[205]="<?php echo _("Port pour postgresql")?>";
content[206]="<?php echo _("En version mono dossier, le nom de la base de données doit être mentionné")?>";
content[207]="<?php echo _("Vous devez choisir si NOALYSS est installé sur l'un de vos servers ou sur un server mutualisé qui ne donne qu'une seule base de données")?>";
content[208]="<?php echo _("Serveur postgresql")?>";
</script>
<DIV id="bulle" class="infobulle"></DIV>
<?php
$failed="<span style=\"font-size:18px;color:red\">&#x2716;</span>";
$succeed="<span style=\"font-size:18px;color:green\">&#x2713;</span>";
$inc_path=get_include_path();
global $os;
$inc_path=get_include_path();
global $os;
if ( strpos($inc_path,";") != 0 ) {
$new_path=$inc_path.';../../include;addon';
$os=0; /* $os is 0 for windoz */
} else {
$new_path=$inc_path.':../../include:addon';
$os=1; /* $os is 1 for unix */
}
// Retrieve informations from the very screen
//
$http=new HttpInput();
$db_user=$http->request("cuser","string", "");
$db_password=$http->request("cpasswd","string", "");
$db_host=$http->request("chost","string", "");
$db_port=$http->request("cport","string", "");
$multi=$http->request("multi","string", "N");
$locale=$http->request("clocale","string", "1");
$ctmp=$http->request("ctmp","string", "/tmp");
$cpath=$http->request("cpath","string", "/usr/bin");
$db_name=$http->request("cdbname", "string","");
$cadmin=$http->request("cadmin","string", "admin");
$cadmin=strtolower($cadmin);
//-------------------------------------------------------------------------
// warn only if we can not write in include
//-------------------------------------------------------------------------
if ( is_writable ('install.php') == false ) {
echo '<h2 class="notice"> '._("Ecriture non possible").' </h2>'.
'<p class="warning"> '.
_("On ne peut pas écrire dans le répertoire de NOALYSS, changez-en les droits ")
.'</p>';
}
//----------------------------------------------------------------------------
// We try to connect with the supplied information
// If we succeed we continue the check
// otherwise we turn back to the first screen
// The config file is created here
//----------------------------------------------------------------------------
if (isset($_POST['save_config'])) {
require_once NOALYSS_INCLUDE.'/lib/config_file.php';
// Try to connect , if it doesn't work that do not create the config file
if ($multi=="N") {
$cnx = Database::connect($db_user, $db_password,'template1', $db_host, $db_port);
}else {
$cnx = Database::connect($db_user, $db_password,$db_name, $db_host, $db_port);
}
// -----
// If conx successfull save the file or display it
// -----
if ( $cnx !== false ) {
echo '<h1>'._('Important').'</h1>';
echo '<h2 class="warning">',_("Voici l'utilisateur et mot de passe de l'utilisateur administrateur de Noalyss , il a tous les droits et a accès à tout."
. " Connectez-vous avec ses identifiants et changer le mot de passe dans préférence (en haut à droit)"),
"</h2>";
echo '<p style="font-size:120%">'._('Utilisateur administrateur'),' ','<span style="color:red"> ',$cadmin,'</span>','</p>';
echo '<p style="font-size:120%">',_('Mot de passe'),'<span style="color:red"> phpcompta </span>','</p>';
// Create the db
if (is_writable(NOALYSS_INCLUDE)) {
$url=config_file_create($_POST,1,$os);
echo '
<form method="post" action="?lang='.$_GET['lang'].'" >'.
_('Les informations sont sauv&eacute;es vous pouvez continuer').
'<input type="submit" class="button" value="'._('Continuer').'">
</form>';
return;
} else {
echo '<p class="warning">';
echo _('Fichier non sauvé');
echo '</p>';
echo '<p>';
printf ( _('Créez ce fichier %s avec les informations suivantes '),
NOALYSS_INCLUDE.'/config.inc.php');
echo '</p>';
echo '<p>';
print (_('Puis cliquez sur ce lien'))." ";
echo '<a href="install.php?lang='.$_GET['lang'].'">'._('Installation')."</a>";
echo '</p>';
echo '<textarea cols="80" rows="50" style="height:auto">';
echo display_file_config($_POST,1,$os);
echo '</textarea>';
return;
}
} else {
echo '<h2 class="warning">';
echo _('Impossible de se connecter à Postgresql, vérifiez les informations de connection');
echo '</h2>';
}
}
//------------------------------------------------------------------------
// Check that the file config.inc.php exists , if not then propose to
// enter information and exit
//
//------------------------------------------------------------------------
if ( ! file_exists(NOALYSS_INCLUDE.'/config.inc.php')) {
echo '<h1 class="info">'._('Entrez les informations nécessaires à noalyss').'</h1>';
echo '<form method="post">';
require_once NOALYSS_INCLUDE.'/lib/config_file.php';
echo config_file_form($_POST);
echo '<div style="position:float;float:left;"></div>';
echo '<p style="text-align:center">',
HtmlInput::submit('save_config',_('Continuer'),"","button"),
'</p>';
echo "</div>";
echo '</form>';
exit();
}
//----------------------------------------------------------------------
// End functions
//
//----------------------------------------------------------------------
// Verify some PHP parameters
// magic_quotes_gpc = Off
// magic_quotes_runtime = Off
// magic_quotes_sybase = Off
// include_path
require_once NOALYSS_INCLUDE.'/lib/config_file.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
// we shouldn't use it
// if ( defined ("MULTI") && MULTI==1) { create_htaccess();}
echo '<h1>'._('Configuration').'</h1>';
?>
<h2>Info</h2>
<?php echo _('Vous utilisez le domaine')," ",domaine; ?>
<h2>PHP</h2>
<?php
$flag_php=0;
//------------------------------------------------------------------------------
// PHP Version
//------------------------------------------------------------------------------
if (!defined('PHP_VERSION_ID')) {
$version = explode('.',PHP_VERSION);
define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2]));
}
if ( PHP_VERSION_ID < 50500) {
echo $g_failed. " ".phpversion." ". _("Version PHP trop basse , minimum 5.4");
} else {
echo $g_succeed. " ".phpversion();
}
//ini_set("memory_limit","200M");
echo "<ul style=\"list-style-type: square;\">";
foreach (array('magic_quotes_gpc','magic_quotes_runtime') as $a) {
echo "<li>";
if ( ini_get($a) == false ) print $a.': '.$succeed;
else {
print $a.': '.$failed;
print ("<h2 class=\"error\">$a "._('a une mauvaise valeur')." !</h2>");
$flag_php++;
}
echo "</li>";
}
//---------------------------------------------------------------------------------------
// Check php modules
//---------------------------------------------------------------------------------------
$module=get_loaded_extensions();
$str_error_message=_('Vous devez installer ou activer l\'extension').'<span style="font-weight:bold"> %s </span>';
$a_need_module=array("mbstring","pgsql","bcmath","gettext","zip","gd","dom","xml","SimpleXML","xmlwriter","xmlreader");
$nb_need_module=count($a_need_module);
for ($m=0;$m<$nb_need_module;$m++)
{
echo "<li>";
if ( in_array($a_need_module[$m],$module) == false ){
echo 'module '.$a_need_module[$m].$failed;
echo '<span class="warning">',
sprintf($str_error_message, $a_need_module[$m]),
' </span>';
$flag_php++;
} else echo 'module '.$a_need_module[$m].$succeed;
echo "</li>";
}
//---------------------------------------------------------------------------------------
// Max_execution_time , can be overriden
//---------------------------------------------------------------------------------------
if ( ini_get("max_execution_time") < 60 ) {
echo "<li>";
echo _('Avertissement').' : '.$failed;
echo '<span class="info"> ',
_("max_execution_time devrait être de 60 minimum"),
'</span>';
echo "</li>";
}
if ( ini_get("register_globals") == true) {
echo "<li>";
echo _('Avertissement').' : '.$failed;
print '<span class="warning"> '._('register_globals doit être à off').'</span>';
echo "</li>";
$flag_php++;
}
echo "</li>";
// Check for open_basedir
if ( ini_get("open_basedir") != "") {
echo "<li>";
echo _('Avertissement').' : '.$failed;
print '<span class="warning"> '._('open_basedir empêche certaines fonctions de Noalyss,mettez-le à vide ').'</span>';
echo "</li>";
$flag_php++;
}
echo "</ul>";
if ( $flag_php==0 ) {
echo '<p class="info"> '._('php.ini est bien configuré ').$succeed.'</p>';
} else {
echo '<p class="warning"> '._('php mal configuré ').$failed.' </p>';
}
// Check that the module for postgres is installed before testing the version
if (! function_exists("pg_connect")) {
echo _("Module php-pgsql n'est pas installé");
return;
}
/* check user */
if ( (defined("MULTI") && MULTI==1)|| !defined("MULTI"))
{
$cn=new Database(-1,'template');
} else
{
$cn=new Database();
}
?>
<h2><?php echo _('Base de données')?></h2>
<?php
// Verify Psql version
//--
$sql="select setting from pg_settings where name='server_version'";
$version=$cn->get_value($sql);
echo _("Version base de données :"),$version;
$majeur=explode(".",$version);
if ( $majeur[0] < 9 )
{
?>
<p><?php echo $failed . _(" Vous devez absolument utiliser au minimum une version 9.0 de PostGresql, si votre distribution n'en
offre pas, installez-en une en la compilant. Lisez attentivement la notice sur postgresql.org pour migrer
vos bases de données")?>
</p>
<?php exit(); //'
} else {
echo " ",$g_succeed;
}
?>
<h3><?php echo _('Paramètre base de données')?></h3>
<?php
// Language plsql is installed
//--
$sql="select lanname from pg_language where lanname='plpgsql'";
$Res=$cn->count_sql($sql);
if ( $Res==0) { ?>
<p><?php echo $failed._("Vous devez installer le langage plpgsql pour permettre aux fonctions SQL de fonctionner.")?></p>
<p><?php echo _("Pour cela, sur la ligne de commande en tant qu\'utilisateur postgres, faites createlang plpgsql template1")?>
</p>
<?php exit(); }
include_once('lib/ac_common.php');
require_once('class/dossier.class.php');
// Memory setting
//--
$sql="select name,setting
from pg_settings
where
name in ('effective_cache_size','shared_buffers')";
$cn->exec_sql($sql);
$flag=0;
for ($e=0;$e<$cn->size();$e++) {
$a=$cn->fetch($e);
switch ($a['name']){
case 'effective_cache_size':
if ( $a['setting'] < 1000 ){
printf ('<p class="warning">'.$failed._('Attention le paramètre effective_cache_size est de %s'.
" au lieu de 1000")."</p>",$a['setting']);
$flag++;
}
break;
case 'shared_buffers':
if ( $a['setting'] < 640 ){
print '<p class="warning">'.$failed;
printf('Attention le paramètre shared_buffer est de %s
au lieu de 640',$a['setting']);
print "</p>";
$flag++;
}
break;
}
}
if ( $flag == 0 ) {
echo '<p class="info">'._('La base de données est bien configurée ').$succeed.'</p>';
} else {
echo '<p class="warning">'.$failed;
printf (_('Il y a %s param&egrave;tre qui sont trop bas'),$flag);
echo '</p>';
}
if ( ! isset($_POST['go']) ) {
?>
<span style="text-align: center">
<FORM METHOD="post" action="install.php?lang=<?php echo $_GET['lang']?>">
<input type="submit" class="button" name="go" value="<?php echo _("Commencer la mise à jour ou l'installation");?>">
</form>
</span>
<?php
}
if (!isset($_POST['go']))
{
exit();
}
// Check if account_repository exists
if (!defined("MULTI")||(defined("MULTI")&&MULTI==1))
{
$account=$cn->count_sql("select * from pg_database where datname=lower('".domaine."account_repository')");
}
else
{
$account=1;
}
// Create the account_repository
if ($account == 0 ) {
echo "Creation of ".domaine."account_repository";
if ( ! DEBUG) ob_start();
$cn->exec_sql("create database ".domaine."account_repository encoding='utf8'");
$cn=new Database();
$cn->start();
$cn->execute_script(NOALYSS_INCLUDE."/sql/account_repository/schema.sql");
$cn->execute_script(NOALYSS_INCLUDE."/sql/account_repository/data.sql");
$cn->execute_script(NOALYSS_INCLUDE."/sql/account_repository/constraint.sql");
/* update name administrator */
$cadmin=NOALYSS_ADMINISTRATOR;
$cn->exec_sql("update ac_users set use_login=$1,use_active=1 where use_id=1",
array(strtolower($cadmin)));
$cn->commit($cn);
if (!DEBUG)
{
ob_end_clean();
}
echo _("Creation of Modele 1");
if (!DEBUG)
{
ob_start();
}
$cn->exec_sql("create database ".domaine."mod1 encoding='utf8'");
$cn=new Database(1,'mod');
$cn->start();
$cn->execute_script(NOALYSS_INCLUDE.'/sql/mod1/schema.sql');
$cn->execute_script(NOALYSS_INCLUDE.'/sql/mod1/data.sql');
$cn->execute_script(NOALYSS_INCLUDE.'/sql/mod1/constraint.sql');
$cn->commit();
if (!DEBUG)
{
ob_end_clean();
}
echo _("Creation of Modele 2");
$cn->exec_sql("create database ".domaine."mod2 encoding='utf8'");
$cn=new Database(2,'mod');
$cn->start();
if ( ! DEBUG) { ob_start(); }
$cn->execute_script(NOALYSS_INCLUDE.'/sql/mod1/schema.sql');
$cn->execute_script(NOALYSS_INCLUDE.'/sql/mod2/data.sql');
$cn->execute_script(NOALYSS_INCLUDE.'/sql/mod1/constraint.sql');
$cn->commit();
if ( ! DEBUG) ob_end_clean();
echo '<h1>'._('Important').'</h1>';
echo '<p>'._('Utilisateur administrateur'),' ',NOALYSS_ADMINISTRATOR,'</p>';
echo '<p>',_('Mot de passe'),' phpcompta','</p>';
}// end if
// Add a french accountancy model
//--
$cn=new Database();
echo "<h1>"._('Mise à jour du systeme')."</h1>";
echo "<h2 >"._("Mise à jour dossier")."</h2>";
/**
* Update or install MONO
*/
if (defined("MULTI") && MULTI == 0)
{
$db = new Database();
if ($db->exist_table("repo_version") == false)
{
if ( ! DEBUG) { ob_start(); }
$db->execute_script(NOALYSS_INCLUDE.'/sql/mono/mono.sql');
if ( ! DEBUG) ob_end_clean();
}
if ($db->exist_table("version") == false)
{
echo '<p class="warning">' . $failed ;
printf (_('La base de donnée %s est vide,
veuillez vous y connecter
avec phpPgAdmin ou pgAdmin3 ou en commande en ligne
puis faites un seul de ces choix : '),dbname);
echo '<ul>';
echo '<li>'._("soit noalyss/contrib/mono-dossier/mono-france.sql pour la comptabilité française").'</li>';
echo '<li>'._("soit noalyss/contrib/mono-dossier/mono-belge.sql pour la comptabilité belge").'</li>';
echo '<li>'._("soit y restaurer un backup ou un modèle")."</li>
</ul>";
echo _("Puis refaites la procédure d'installation pour mettre la base de données à jour"),
"</p>";
exit();
}
echo "<h3>Patching " . dbname . '</h3>';
$db->apply_patch(dbname);
echo "<p class=\"info\">"._("Tout est installé"). $succeed;
echo "<h2>"._("Mise à jour Repository")."</h2>";
if ( DEBUG == false ) ob_start();
$MaxVersion=DBVERSIONREPO-1;
for ($i=4;$i<= $MaxVersion;$i++)
{
if ( $db->get_value (' select val from repo_version') <= $i ) {
$db->execute_script(NOALYSS_INCLUDE.'/sql/patch/ac-upgrade'.$i.'.sql');
}
}
$db->exec_sql("update ac_users set use_login=$1 where use_id=1",
array(strtolower(NOALYSS_ADMINISTRATOR)));
echo '<h1>'._('Important').'</h1>';
echo '<p>'._('Utilisateur administrateur'),' ',NOALYSS_ADMINISTRATOR,'</p>';
echo '<p>',_('Mot de passe par défaut à l\'installation'),' phpcompta','</p>';
echo "<h2 class=\"warning\">";
printf (" VOUS DEVEZ EFFACER CE FICHIER %s",__FILE__);
echo "</h2>";
?>
<p style="text-align: center">
<A style="" class="button" HREF="./index.php"><?php echo _('Connectez-vous à NOALYSS')?></A>
</p>
<?php
exit();
}
/*
* If multi folders
*/
define ('ALLOWED',1);
define ('ALLOWED_ADMIN',1);
$rep=new Database();
if (defined(NOALYSS_ADMINISTRATOR))
{
$rep->exec_sql("update ac_users set use_login=$1 where use_id=1", array(strtolower(NOALYSS_ADMINISTRATOR)));
}
Dossier::upgrade();
echo '<h1>'._('Important').'</h1>';
echo '<p>'._('Utilisateur administrateur'),' ',NOALYSS_ADMINISTRATOR,'</p>';
echo "<h2 class=\"warning\">";
printf (_("VOUS DEVEZ EFFACER CE FICHIER %s"),__FILE__);
echo "</h2>";
echo "<p class=\"info\">"._("Tout est installé")." ". $succeed;
?>
</p>
<p style="text-align: center">
<A style="display:inline;margin:10px;padding:10px;" class="button" HREF="index.php?remove_install"><?php echo _("Essai effacement install.php et se connecter à NOALYSS")?></A>
</p>

View file

@ -56,7 +56,7 @@ function update_predef(p_type, p_direct, p_ac)
// document.getElementsByName(name_ctl)[0].value = code_html;
$('modele_op_div').innerHTML = code_html;
} catch (e) {
$('info_div').innerHTML = e.getMessage;
$('info_div').innerHTML = e.message;
}
}
}
@ -162,7 +162,7 @@ function update_row(ctl)
{
var jrn = g('p_jrn').value;
var dossier = g('gDossier').value;
var qs = 'gDossier=' + dossier + '&op=minrow&j=' + jrn + '&ctl=' + ctl;
var qs = encodeURI('gDossier=' + dossier + '&op=minrow&j=' + jrn + '&ctl=' + ctl);
var action = new Ajax.Request(
"ajax_misc.php",
{
@ -201,13 +201,13 @@ function update_row(ctl)
}
}
} catch (e) {
alert_box(e.getMessage);
alert_box(e.message);
}
}
}
);
} catch (e) {
alert_box(e.getMessage);
alert_box(e.message);
}
}
/**
@ -286,9 +286,9 @@ function success_get_pj(request, json)
{
var answer = request.responseText.evalJSON(true);
obj = g("e_pj");
var obj = g("e_pj");
obj.value = '';
if (answer.count == 0)
if (answer.length == 0)
return;
obj.value = answer.pj;
g("e_pj_suggest").value = answer.pj;
@ -328,6 +328,7 @@ function ledger_fin_add_row()
new_tt = new_tt.replace(/e_other0_label/g, "e_other" + nb.value + '_label');
new_tt = new_tt.replace(/dateop0/g, "dateop" + nb.value);
newCell.innerHTML = new_tt;
newCell.className=rowToCopy.cells[e].className;
new_tt.evalScripts();
}
g("e_other" + nb.value).value = "";
@ -368,6 +369,7 @@ function ledger_add_row()
new_tt = new_tt.replace(/compute_ledger\(0\)/g, "compute_ledger(" + nb.value + ")");
new_tt = new_tt.replace(/clean_tva\(0\)/g, "clean_tva(" + nb.value + ")");
newCell.innerHTML = new_tt;
newCell.className=ofirstRow.cells[e].className;
new_tt.evalScripts();
}
@ -431,7 +433,6 @@ function compute_ledger(p_ctl_nb)
g('e_quant' + p_ctl_nb).value = trim(g('e_quant' + p_ctl_nb).value);
var quantity = g('e_quant' + p_ctl_nb).value;
var querystring = 'gDossier=' + dossier + '&c=' + qcode + '&t=' + tva_id + '&p=' + price + '&q=' + quantity + '&n=' + p_ctl_nb;
$('sum').hide();
var action = new Ajax.Request(
"compute.php",
{
@ -613,6 +614,7 @@ function quick_writing_add_row()
new_tt = new_tt.replace(/ck0/g, "ck" + nb.value);
new_tt = new_tt.replace(/ld0/g, "ld" + nb.value);
newCell.innerHTML = new_tt;
newCell.className=rowToCopy.cells[e].className;
new_tt.evalScripts();
}
$("qc_" + nb.value).value = "";
@ -648,43 +650,97 @@ function go_next_concerned()
}
return true;
}
function view_history_account(p_value, dossier)
/**
* @brief View the history of an account
* @param {type} p_value
* @param {type} dossier
* @returns {undefined}
*/
function view_history_account(p_value, dossier,p_exercice)
{
layer++;
id = 'det' + layer;
var popup = {'id': id, 'cssclass': 'inner_box', 'html': loading(), 'drag': true};
var idbox = 'det' + layer;
var popup = {'id': idbox, 'cssclass': 'inner_box', 'html': loading(), 'drag': false};
querystring = 'gDossier=' + dossier + '&act=de&pcm_val=' + p_value + '&div=' + id + "&l=" + layer;
add_div(popup);
var querystring={'gDossier':dossier,'act':'de','pcm_val':p_value,'div':idbox,'l':layer,'op':'history','exercice':p_exercice};
waiting_box();
var action = new Ajax.Request(
"ajax_history.php",
"ajax_misc.php",
{
method: 'get',
parameters: querystring,
onFailure: error_box,
onSuccess: function (req, xml)
{
remove_waiting_box();
add_div(popup);
success_box(req, xml);
g(id).style.top = calcy(140 + (layer * 3)) + "px";
$(idbox).style.top = calcy(140 + (layer * 3)) + "px";
}
}
);
}
function update_history_account(obj)
/**
* @brief View the history of an account
* @param {type} p_value
* @param {type} dossier
* @returns {undefined}
*/
function view_history_anc_account(p_value, dossier,p_exercice)
{
try {
var querystring = "l=" + obj.div + "&div=" + obj.div + "&gDossier=" + obj.gDossier + "&pcm_val=" + obj.pcm_val + "&ex=" + obj.select.options[obj.select.selectedIndex].text;
layer++;
var idbox = 'det' + layer;
var popup = {'id': idbox, 'cssclass': 'inner_box', 'html': loading(), 'drag': false};
var querystring={'gDossier':dossier,'op':'history_anc_account','po_id':p_value,'div':idbox,'l':layer,'act':'history','exercice':p_exercice};
waiting_box();
var action = new Ajax.Request(
"ajax_history.php",
"ajax_misc.php",
{
method: 'get',
parameters: querystring,
onFailure: error_box,
onSuccess: function (req, xml)
{
remove_waiting_box();
add_div(popup);
$(idbox).innerHTML=req.responseText;
$(idbox).style.top = calcy(140 + (layer * 3)) + "px";
}
}
);
}
/**
* @brief Change the view of account history
* @param {type} obj
* @returns {Boolean}
*/
function update_history_account(obj)
{
try {
var querystring = {
"l" :obj.div ,
"div" :obj.div ,
"gDossier" : obj.gDossier,
"pcm_val" : obj.pcm_val ,
"ex" : obj.select.options[obj.select.selectedIndex].text,
"op":"history",
"exercice":obj.exercice
};
waiting_box();
var action = new Ajax.Request(
"ajax_misc.php",
{
method: 'get',
parameters: querystring,
onFailure: error_box,
onSuccess: function (req, xml)
{
remove_waiting_box();
success_box(req, xml);
g(obj.div).style.top = calcy(140 + (layer * 3)) + "px";
}
@ -696,48 +752,68 @@ function update_history_account(obj)
return false;
}
/*!\brief
/*!\brief Change the view of card history
* \param p_value f_id of the card
*/
function view_history_card(p_value, dossier)
function view_history_card(p_value, dossier,p_exercice)
{
layer++;
id = 'det' + layer;
var popup = {'id':
id, 'cssclass': 'inner_box'
, 'html':
loading(), 'drag':
true};
querystring = 'gDossier=' + dossier + '&act=de&f_id=' + p_value + '&div=' + id + "&l=" + layer;
add_div(popup);
var idbox = 'det' + layer;
var popup = {'id':idbox,
'cssclass': 'inner_box',
'html':loading(),
'drag':false};
var querystring = { 'gDossier' : dossier ,
'act':'de',
'f_id' : p_value ,
'div' : idbox ,
"l" : layer,
"op":"history",
"exercice":p_exercice};
waiting_box();
var action = new Ajax.Request(
"ajax_history.php",
"ajax_misc.php",
{
method: 'get',
parameters: querystring,
onFailure: error_box,
onSuccess: function (req, xml)
{
remove_waiting_box();
add_div(popup);
success_box(req, xml);
g(id).style.top = calcy(140 + (layer * 3)) + "px";
g(idbox).style.top = calcy(140 + (layer * 3)) + "px";
}
}
);
}
/**
* @brief update history view after changing the exercice
* @param {type} obj
* @returns {Boolean}
*/
function update_history_card(obj)
{
try {
var querystring = "l=" + obj.div + "&div=" + obj.div + "&gDossier=" + obj.gDossier + "&f_id=" + obj.f_id + "&ex=" + obj.select.options[obj.select.selectedIndex].text;
var querystring = {
"l" : obj.div ,
"div" : obj.div ,
"gDossier" : obj.gDossier,
"f_id" : obj.f_id ,
"ex" : obj.select.options[obj.select.selectedIndex].text,
"op":"history",
"exercice":obj.exercice
};
waiting_box();
var action = new Ajax.Request(
"ajax_history.php",
"ajax_misc.php",
{
method: 'get',
parameters: querystring,
onFailure: error_box,
onSuccess: function (req, xml)
{
remove_waiting_box();
success_box(req, xml);
g(obj.div).style.top = calcy(140 + (layer * 3)) + "px";
}
@ -758,9 +834,13 @@ function update_history_card(obj)
function removeOperation(p_jr_id, dossier, div)
{
waiting_box();
var qs = "gDossier=" + dossier + "&act=rmop&div=" + div + "&jr_id=" + p_jr_id;
var action = new Ajax.Request(
"ajax_ledger.php",
var qs = { "gDossier" : dossier ,
"op":"ledger",
"act":"rmop",
"div" : div ,
"jr_id" : p_jr_id};
new Ajax.Request(
"ajax_misc.php",
{
method: 'get',
parameters: qs,
@ -777,17 +857,34 @@ function removeOperation(p_jr_id, dossier, div)
*/
function reverseOperation(obj)
{
var qs = $(obj).serialize();
var qs = $(obj).serialize()+ "&op=ledger";
g('ext' + obj.divname).style.display = 'none';
g('bext' + obj.divname).style.display = 'none';
waiting_box();
var action = new Ajax.Request(
"ajax_ledger.php",
new Ajax.Request(
"ajax_misc.php",
{
method: 'get',
parameters: qs,
onFailure: error_box,
onSuccess: infodiv
onSuccess: function (req) {
try {
var action = new Ajax.Request(
"ajax_misc.php",
{
method: 'get',
parameters:{"gDossier" : obj["gDossier"].value,"op":"ledger","act":"de","div":obj['div'].value,"jr_id":obj['jr_id'].value},
onFailure: error_box,
onSuccess: function (xml, txt) {
success_box(xml, txt);
infodiv(req);
}
});
} catch (ex) {
smoke.alert(ex.message);
}
}
}
);
@ -802,24 +899,27 @@ function reverseOperation(obj)
function modifyOperation(p_value, dossier)
{
layer++;
var id = 'det' + layer;
var id_div = 'det' + layer;
waiting_box();
var querystring = 'gDossier=' + dossier + '&act=de&jr_id=' + p_value + '&div=' + id;
var querystring = { "gDossier" : dossier ,
"op":"ledger",
"act":"de",
"div" : id_div ,
"jr_id" : p_value};
var action = new Ajax.Request(
"ajax_ledger.php",
"ajax_misc.php",
{
method: 'get',
parameters: querystring,
onFailure: error_box,
onSuccess: function (xml, txt) {
var popup = {'id': id, 'cssclass': 'inner_box'
, 'html': "", 'drag': true};
var popup = {'id': id_div, 'cssclass': 'inner_box'
, 'html': "", 'drag': false};
remove_waiting_box();
add_div(popup);
success_box(xml, txt);
$(id).style.position = "absolute";
$(id).style.top = calcy(100 + (layer * 3)) + "px";
$(id_div).style.position = "absolute";
$(id_div).style.top = calcy(100 + (layer * 3)) + "px";
}
}
);
@ -835,12 +935,13 @@ function viewOperation(p_value, p_dossier)
}
function dropLink(p_dossier, p_div, p_jr_id, p_jr_id2)
{
var querystring = 'gDossier=' + p_dossier;
querystring += '&div=' + p_div;
querystring += '&jr_id=' + p_jr_id;
querystring += '&act=rmr';
querystring += '&jr_id2=' + p_jr_id2;
var action = new Ajax.Request('ajax_ledger.php',
var querystring = { "gDossier" : p_dossier ,
"op":"ledger",
"act":"rmr",
"div" : p_div ,
"jr_id" : p_jr_id,
"jr_id2" : p_jr_id2};
var action = new Ajax.Request('ajax_misc.php',
{
method: 'get',
parameters: querystring,
@ -998,16 +1099,18 @@ function op_save(obj)
queryString += '&div=' + obj.whatdiv.value;
var divid=obj.whatdiv.value;
queryString += '&act=save';
queryString += '&op=ledger';
waiting_box();
/*
* Operation detail is in a new window
*/
if (g('inpopup'))
{
var action = new Ajax.Request('ajax_ledger.php',
var action = new Ajax.Request('ajax_misc.php',
{
method: 'post',
parameters: queryString,
parameters: encodeURI(queryString),
onFailure: null,
onSuccess: infodiv
}
@ -1019,15 +1122,16 @@ function op_save(obj)
/*
*Operation is in a modal box
*/
var action = new Ajax.Request('ajax_ledger.php',
var action = new Ajax.Request('ajax_misc.php',
{
method: 'post',
parameters: queryString,
onFailure: null,
onSuccess: function(req,json) {
new Ajax.Request('ajax_ledger.php', {
new Ajax.Request('ajax_misc.php', {
parameters:{'gDossier':obj.gDossier.value,
'act':'de',
'op':'ledger',
'jr_id' : jr_id,
'div' : divid},
onSuccess:function(xml) {
@ -1035,6 +1139,7 @@ function op_save(obj)
var answer=xml.responseXML;
var html = answer.getElementsByTagName('code');
$(divid).innerHTML=unescape(getNodeText(html[0]));
$(divid).innerHTML.evalScripts();
remove_waiting_box();
} catch (e) {
alert_box("1038"+e.message)
@ -1058,11 +1163,12 @@ function get_history_account(ctl, dossier) {
}
}
var previous = [];
var let_previous="";
function show_reconcile(p_div, p_let)
{
try
{
if (previous.length != 0)
if (previous.length != 0 || p_let == let_previous )
{
var count_elt = previous.length;
var i = 0;
@ -1074,6 +1180,8 @@ function show_reconcile(p_div, p_let)
}
var name = 'tr_' + p_let + '_' + p_div;
var elt = document.getElementsByName(name);
if ( p_let != let_previous ) {
previous = elt;
var count_elt = elt.length;
var i = 0;
@ -1083,6 +1191,11 @@ function show_reconcile(p_div, p_let)
elt[i].style.fontWeight = 'bolder';
}
let_previous=p_let;
}
else {
let_previous="";
}
} catch (e)
{
@ -1144,9 +1257,9 @@ function document_remove(p_dossier,p_div,p_jrid)
smoke.confirm('Effacer ?', function (e)
{
if (e) {
new Ajax.Request('ajax_ledger.php',
new Ajax.Request('ajax_misc.php',
{
parameters:{"p_dossier":p_dossier,"div":p_div,"p_jrid":p_jrid,'act':'rmf'},
parameters:{"op":"ledger","gDossier":p_dossier,"div":p_div,"p_jrid":p_jrid,'act':'rmf'},
onSuccess : function(x) {
$('receipt'+p_div).innerHTML=x.responseText;
}
@ -1154,3 +1267,193 @@ function document_remove(p_dossier,p_div,p_jrid)
}
});
}
/***
* @brief receive an object and display a list of filter + form to save one
* fill up the span (id : {div}search_filter_span) with the name of the selected filter
* Object = '{'div':'','type':'ALL','all_type':1,'dossier':'10104'}'
* @see Acc_Ledger_Search
*/
function manage_search_filter(p_obj) {
waiting_box();
new Ajax.Request("ajax_misc.php", {
method:'get',
parameters:{"op":"display_search_filter","gDossier":p_obj.dossier,"div":p_obj.div,"ledger_type":p_obj.ledger_type,"all_type":p_obj.all_type},
onSuccess:function(req) {
remove_waiting_box();
var x=posX;
var y=posY-20;
create_div({'id':'boxfilter'+p_obj.div,'cssclass':'inner_box','html':req.responseText,'style':'top:'+y+'px;left:'+x+'px;position:absolute;width:400px'});
$('boxfilter'+p_obj.div).show();
}
});
}
/**
* Send data from the form and record a new filter , the ajax answer is a json object
* with the attribute filter_name,filter_id,status,message
*
* @param p_div prefix id of all concerned DOM Element
* @param p_dossier
* @see Acc_Ledger_Search
*/
function save_filter(p_div,p_dossier) {
var elt=['ledger_type','nb_jrn','date_start','date_end','date_paid_start','date_paid_end','desc','amount_min','amount_max','qcode','accounting'];
var eltValue={};
eltValue['gDossier']=p_dossier;
eltValue['op']="save_filter";
eltValue['div']=p_div;
eltValue['filter_name']=$(p_div+"filter_new").value;
// Get all elt from the form
for ( var i = 0 ; i < elt.length;i++) {
var idx=elt[i];
eltValue[idx]=$(p_div+elt[i]).value;
}
if (eltValue['amount_min']=="") eltValue["amount_min"]=0;
if (eltValue['amount_max']=="") eltValue["amount_max"]=0;
//ledger's list r_jrn
if (eltValue['nb_jrn'] > 0) {
eltValue['r_jrn']=[];
for (i=0;i<eltValue['nb_jrn'];i++) {
var idx=p_div+'r_jrn['+i+']';
eltValue['r_jrn'+i]=$(idx).value
}
}
//unpaid
eltValue['unpaid']=$(p_div+"unpaid").checked;
new Ajax.Request('ajax_misc.php', {
method:"POST",
parameters:eltValue,
onSuccess:function (req) {
try {
var answer=req.responseJSON;
if ( answer.status == 'OK') {
/*Add the new list to the selection */
var new_item=document.createElement('li');
new_item.innerHTML=answer.filter_name;
new_item.setAttribute("id","li"+p_div+"_"+answer.filter_id);
$('manage'+p_div).appendChild(new_item);
$(p_div+"filter_new").value="";
} else {
throw answer.message;
}
} catch (e) {
smoke.alert(e);
}
}
});
}
/**
* Load a search filter and fill up the form search
* @param p_div prefix id of all concerned DOM Element
* @param p_dossier
* @param p_filter_id filter id (SQL user_filter.id)
* @see Acc_Ledger_Search
*/
function load_filter(p_div,p_dossier,p_filter_id) {
new Ajax.Request('ajax_misc.php',{
method:"get",
parameters:{"gDossier":p_dossier,"div":p_div,"op":"load_filter","filter_id":p_filter_id},
onSuccess:function (req) {
try {
var answer=req.responseJSON;
console.log(answer);
var elt=['ledger_type','date_start','date_end','date_paid_start','date_paid_end','desc','amount_min','amount_max','qcode','accounting'];
for (var i=0;i<elt.length;i++) {
var idx=elt[i];
$(p_div+idx).value=answer[elt[i]]
}
// fillup the r_jrn array
var eltLedgerId=$("ledger_id"+p_div);
eltLedgerId.innerHTML="";
var eltHidden=document.createElement("input");
eltHidden.setAttribute("name",p_div+"nb_jrn");
eltHidden.setAttribute("type","hidden");
eltHidden.setAttribute("id",p_div+"nb_jrn");
eltHidden.setAttribute("value",answer.nb_jrn);
eltLedgerId.appendChild(eltHidden);
for ( var i=0;i < answer.nb_jrn;i++) {
// create hidden element and add them into eltLedgerId
var eltHidden=document.createElement("input");
eltHidden.setAttribute("name",p_div+"r_jrn["+i+"]");
eltHidden.setAttribute("type","hidden");
eltHidden.setAttribute("id",p_div+"r_jrn["+i+"]");
eltHidden.setAttribute("value",answer.r_jrn[i]);
eltLedgerId.appendChild(eltHidden);
}
if ( answer.unpaid == 'false') {
$(p_div+"unpaid").checked=false;
}
if ( answer.unpaid == 'true') {
$(p_div+"unpaid").checked=true;
}
} catch (e) {
smoke.alert(e.message);
}
}
});
}
/**
* @brief delete a saved search filter from the db, it is limited to the current
* user
* @parameter p_div
identification des elements LI manageli{div}_{filter_id}
identification element UL manage{div}
@parameter p_filter_id SQL user_filter.id
*/
function delete_filter (p_div,p_dossier,p_filter_id) {
new Ajax.Request("ajax_misc",{
parameters:{"gDossier":p_dossier,"div":p_div,"filter_id":p_filter_id,'op':"delete_search_operation"},
method:"POST",
onSuccess:function (req) {
try {
var answer=req.evalJSON;
var child=$("manageli"+p_div+"_"+p_filter_id);
if ( child ) {$("manage"+p_div).removeChild(child); }
}catch (e) {
console.log(e.message)
}
}
})
}
/**
* Reset the search_form and reinitialize all the input but ledger_type
* @param p_div prefix for DOM Element
*/
function reset_filter(p_div) {
// clean all the input fields but ledger_type remains
var elt=['date_start','date_end','date_paid_start','date_paid_end','desc','amount_min','amount_max','qcode','accounting'];
for (var i=0;i<elt.length;i++) {
var idx=elt[i];
$(p_div+idx).value="";
}
if ( $(p_div+"date_start_hidden")) {
$(p_div+"date_start").value=$(p_div+"date_start_hidden").value;
}
if ( $(p_div+"date_end_hidden")) {
$(p_div+"date_end").value=$(p_div+"date_end_hidden").value;
}
// clean all the selected ledger
var eltLedgerId=$("ledger_id"+p_div);
eltLedgerId.innerHTML="";
var eltHidden=document.createElement("input");
eltHidden.setAttribute("name",p_div+"nb_jrn");
eltHidden.setAttribute("type","hidden");
eltHidden.setAttribute("id",p_div+"nb_jrn");
eltHidden.setAttribute("value",0);
eltLedgerId.appendChild(eltHidden);
// By default , unpaid is uncked
$(p_div+"unpaid").checked=false;
}

View file

@ -39,60 +39,6 @@ function set_jrn_parent(p_ctl,p_value)
f.value+=p_value;
}
}
/**
*@brief Display a box with accounting detail for update, delete or add, update the
* table account_tbl_id
*@param p_dossier dossier id
*@param p_val value of the accounting, it is used to compute the row id
*/
function pcmn_update(p_dossier, p_val)
{
var query = {gDossier: p_dossier, value: p_val, op: 'pcmn_update'};
waiting_box();
var action = new Ajax.Request('ajax_misc.php',
{
method: 'get',
parameters: query,
onSuccess: function (req)
{
try
{
remove_waiting_box();
var answer = req.responseXML;
var a = answer.getElementsByTagName('ctl');
var html = answer.getElementsByTagName('code');
var status= answer.getElementsByTagName('status');
if (a.length == 0)
{
var rec = req.responseText;
alert_box('erreur :' + rec);
}
var name_ctl = getNodeText(a[0]);
var code_html = getNodeText(html[0]);
var result = getNodeText(status[0]);
$('acc_update').innerHTML=code_html;
$('acc_update').setStyle('top:'+calcy(150)+'px');
$('acc_update').show();
}
catch (e)
{
error_message(e.message);
}
try
{
code_html.evalScripts();
}
catch (e)
{
alert_box("Impossible executer script de la reponse\n" + e.message);
}
}
}
);
}
/**
*@brief show the popup for search an accounting item
*@param object this, it must contains some attribute as
@ -118,13 +64,14 @@ function search_poste(obj)
var div_style="top:"+sx+"px";
removeDiv('search_account');
add_div({id:'search_account',cssclass:'inner_box',html:loading(),style:div_style,drag:true});
add_div({id:'search_account',cssclass:'inner_box',html:loading(),style:div_style,drag:false});
var dossier=$('gDossier').value;
var queryString="gDossier="+dossier;
queryString+="&op=sf";
queryString+="&op2=sf";
queryString+="&op=account";
try
{
if ( obj.jrn)
@ -174,7 +121,7 @@ function search_poste(obj)
queryString+="&ctl="+'search_account';
queryString=encodeURI(queryString);
var action=new Ajax.Request ( 'ajax_poste.php',
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'get',
parameters:queryString,
@ -185,7 +132,7 @@ function search_poste(obj)
}
catch (e)
{
alert_box(e.getMessage);
alert_box(e.message);
}
}
/**
@ -199,7 +146,8 @@ function search_get_poste(obj)
var dossier=$('gDossier').value;
var queryString="gDossier="+dossier;
queryString+="&op=sf";
queryString+="&op=account";
queryString+="&op2=sf";
if ( obj.elements['jrn'] )
{
@ -235,7 +183,7 @@ function search_get_poste(obj)
}
$('asearch').innerHTML=loading();
var action=new Ajax.Request ( 'ajax_poste.php',
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'get',
parameters:queryString,
@ -296,82 +244,3 @@ function pausecomp(millis)
do { curDate = new Date(); }
while(curDate-date < millis);
}
/**
* Update an accounting with the information in the form, called frmo
* param_pcmn.inc.php
* @returns false
*/
function pcmn_save()
{
try {
waiting_box();
// initialize variables
var gDossier=0;
var p_action="";
var p_oldu=-1;
var p_valu="";
var p_libu="";
var p_parentu="";
var form=$('acc_update_frm_id');
var notfound="not found:";
var p_typeu=-1;
var acc_delete=0;
// get them
if ( form['gDossier']) { gDossier=form['gDossier'].value;}else { notfound+='gDossier';}
if ( form['p_action']) { p_action=form['p_action'].value;}else { notfound+=', p_action ';}
if ( form['p_oldu']) { p_oldu=form['p_oldu'].value;}else { notfound+=', p_oldu';}
if ( form['p_valu']) { p_valu=form['p_valu'].value;}else { notfound+=', p_valu';}
if ( form['p_libu']) { p_libu=form['p_libu'].value;}else { notfound+=', p_libu ';}
if ( form['p_parentu']) { p_parentu=form['p_parentu'].value;}else { notfound+='p_parentu';}
if ( form['delete_acc']) {
if (form['delete_acc'].checked) { acc_delete=1;} else {acc_delete=0} }
else {
notfound += ', delete_acc';
}
if ( form['p_typeu']) { p_typeu=form['p_typeu'].value;} else { notfound+=", p_typeu";}
if ( notfound != "not found:") throw notfound;
var queryString={op:'account_update',action:p_action,gDossier:gDossier,p_oldu:p_oldu,p_valu:p_valu,p_libu:p_libu,p_parentu:p_parentu,acc_delete:acc_delete,p_typeu:p_typeu};
var ajax_action = new Ajax.Request(
"ajax_misc.php",
{
method: 'get',
parameters: queryString,
onFailure: error_box,
onSuccess: function(req, json) {
try
{
remove_waiting_box();
var name_ctl = 'acc_update_info';
var answer = req.responseXML;
var html = answer.getElementsByTagName('code');
var ctl = answer.getElementsByTagName('ctl')[0].textContent;
if (html.length == 0) {
var rec = req.responseText;
alert_box('erreur :' + rec);
}
var code_html = getNodeText(html[0]); // Firefox ne prend que les 4096 car.
code_html = unescape_xml(code_html);
$(name_ctl).innerHTML = code_html;
if ( ctl == 'ok') {
window.location.reload();
}
} catch (e)
{
error_message(e.message);
return false;
}
}
}
);
}catch (e) {
return false;
}
return false;
}

View file

@ -15,7 +15,10 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/**
* @file
* @brief contains the javascript for the administration page
*/
/**
* Display the forbidden folders if the request comes from a form
* with an input text (id:database_filter_input) then this text is
@ -31,7 +34,6 @@ function folder_display(p_user)
*/
var p_filter = "";
if ($('database_filter_input')) {
console.log($('database_filter_input').value);
p_filter = $('database_filter_input').value;
}
/*
@ -61,7 +63,7 @@ function folder_display(p_user)
var content = getNodeText(html[0]);
// fill up the div
folder.innerHTML = unescape_xml(content);
folder.innerHTML.evalScripts();
// show it
folder.show();
$('database_filter_input').focus();
@ -124,9 +126,9 @@ function folder_add(p_user, p_dossier)
var nb = $('database_list').rows.length + 1;
var row = new Element('tr', {'id': 'row' + p_dossier});
if (nb % 2 == 0) {
row.addClassName('odd');
} else {
row.addClassName('even');
} else {
row.addClassName('odd');
}
row.innerHTML = unescape_xml(content);
$('database_list').appendChild(row);
@ -169,7 +171,7 @@ function display_admin_answer(p_dossier,p_action)
folder.show();
remove_waiting_box();
} catch (e) {
console.log(e.message);
alert_box(e.message);
}
}
});

View file

@ -116,6 +116,7 @@ function ajaxFid(p_ctl)
}
queryString=queryString+"&j="+jrn+'&gDossier='+gDossier;
queryString=queryString+'&ctl='+p_ctl.id;
queryString=encodeURI(queryString);
var action=new Ajax.Request (
"fid.php",
@ -249,4 +250,72 @@ function ajax_get_failure(request,json)
}
var category_card={};
/**
* Add an attribute selected in "sel"+p_object_name into the list (id:p_object_name+"_list")
* this attribut will have the ID:p_object_name+"_elt"+ad_id (ad_id = attr_def.ad_id)
* @param int p_dossier dossier nb
* @param int p_fiche_def_ref is the frd_id
* @param string p_object_name , name of the prefix for id
*/
category_card.add_attribut=function (p_dossier,p_fiche_def_ref,p_object_name) {
var select=$("sel"+p_object_name);
var selected_attr=select.value;
new Ajax.Request("ajax_misc.php",{
method:"post",
parameters:{"gDossier":p_dossier,
"objname":p_object_name,
"op":"template_cat_category",
"action":"add_attribute",
"frd_id":p_fiche_def_ref,
"ad_id":selected_attr
},
onSuccess:function(req) {
var answer=req.responseText.evalJSON();
if ( answer.status == 'OK') {
var newli=document.createElement("li")
newli.setAttribute("id",p_object_name+"_elt"+selected_attr);
newli.innerHTML=answer.content
$(p_object_name+"_list").append(newli);
select.remove(select.selectedIndex);
} else {
smoke.alert(answer.message);
}
}
});
};
/**
* Remove an attribute (id:p_object_name+"_elt"+ad_id (ad_id = attr_def.ad_id))
* from the list (id:p_object_name+"list")
* @param int p_dossier dossier nb
* @param string p_object_name , name of the prefix for id
* @param int p_fiche_def_ref is the frd_id
* @param {type} p_attribute_id
*/
category_card.remove_attribut=function (p_dossier,p_fiche_def_ref,p_object_name,p_attribute_id) {
new Ajax.Request("ajax_misc.php",{
method:"post",
parameters:{"gDossier":p_dossier,
"objname":p_object_name,
"op":"template_cat_category",
"action":"remove_attribute",
"frd_id":p_fiche_def_ref,
"ad_id":p_attribute_id
},
onSuccess:function(req) {
var answer=req.responseText.evalJSON();
if ( answer.status == 'OK') {
$(p_object_name+"_elt"+p_attribute_id).remove();
var option=document.createElement("option");
option.text=answer['content'];
option.value=p_attribute_id;
$('sel'+p_object_name).add(option);
} else {
smoke.alert(answer.message);
}
}
});
};
//-->

View file

@ -79,10 +79,12 @@ function compute_total_table(p_table, seq)
var i = 0;
var tot = 0;
var col = document.getElementsByName("val[" + seq + "][]");
var rounded_value = 0 ;
for (i = 0; i < col.length; i++)
{
if ( $(p_table).contains(col[i])) {
tot += parseFloat(col[i].value);
rounded_value = parseFloat(col[i].value);
tot += Math.round(rounded_value*100)/100;
}
}
return tot;
@ -156,6 +158,11 @@ function verify_ca(div)
total_amount += parseFloat(array_value[i].value);
}
var amount = Math.abs(parseFloat(g('amount_t' + idx).value));
if (isNaN(amount)) {
amount=0;
} else {
amount = Math.round(amount*100)/100;
}
var diff = amount - total_amount;
if (Math.round(diff, 2) != 0.0)
@ -282,6 +289,7 @@ function caod_checkTotal()
{
amount = 0.0;
}
amount = Math.round(amount*100)/100;
if (side.checked == false)
{
total_cred += amount;
@ -330,9 +338,12 @@ function anc_remove_operation(p_dossier, p_oa_group)
p_oa_group, "gDossier":
p_dossier, "op": "remove_anc"};
var queryString = encodeJSON(obj);
g(p_oa_group).style.display = 'none';
var e = new Ajax.Request("ajax_misc.php",
{method: 'get', parameters: queryString});
{method: 'get', parameters: queryString,onSuccess:function req() {
$("tr"+p_oa_group).remove();
}
});
} else
{
@ -359,6 +370,7 @@ function anc_add_row(tableid)
var newCell = oRow.insertCell(e);
var tt = rowToCopy.cells[e].innerHTML;
var new_tt = tt.replace(/pop0/g, "pop" + nb.value);
var new_tt = tt.replace(/qcode0/g, "qcode" + nb.value);
new_tt = new_tt.replace(/pamount0/g, "pamount" + nb.value);
new_tt = new_tt.replace(/pdeb0/g, "pdeb" + nb.value);
newCell.innerHTML = new_tt;
@ -415,6 +427,7 @@ function anc_key_compute(p_dossier, p_table, p_amount, p_key_id)
var code_html = getNodeText(html[0]); // Firefox ne prend que les 4096 car.
code_html = unescape_xml(code_html);
$(name_ctl).innerHTML = code_html;
code_html.evalScripts();
removeDiv('div_anc_key_choice');
} catch (e)
{
@ -544,3 +557,17 @@ function anc_key_compute_table()
$('total_key').innerHTML=Math.round(tot*100)/100;
}
function anc_detail_op(p_oa_group,gDossier) {
waiting_box();
// create div
new Ajax.Request ("ajax_misc.php",{
method:"get",
parameters:{"gDossier":gDossier,"op":"anc_detail_op","oa_group":p_oa_group},
onSuccess:function (req) {
add_div({"id":"anc_detail_op_div","cssclass":"inner_box","style":"position:fixed;top:5%"});
$('anc_detail_op_div').update(req.responseText);
remove_waiting_box();
}
});
}

View file

@ -27,6 +27,11 @@
*/
var p_history="";
var p_variable="";
/**
* Compute and update the box
* @see show_calc()
* @returns nothing
*/
// add input
function cal()
{
@ -38,39 +43,48 @@ function cal()
try
{
Compute();
p_variable=p_variable.replace(/[a-z]/,'');
p_variable=p_variable.replace(/[A-Z]/,'');
p_variable=p_variable.replace(/</,'');
p_variable=p_variable.replace(/%/,'');
p_variable=p_variable.replace(/;/,'');
p_variable=p_variable.replace(/>/,'');
p_variable=p_variable.replace(/ /g,"");
p_variable=p_variable.replace(/\+/g,"+ ");
p_variable=p_variable.replace(/-/g,"- ");
p_variable=p_variable.replace(/\//g,"/ ");
p_variable=p_variable.replace(/,/g,".");
sub=eval(p_variable);
var result=parseFloat(sub);
result=Math.round(result*100)/100;
result=Math.round(result*10000)/10000;
}
catch(exception)
{
alert_box("Mauvaise formule\n"+p_variable);
return false;
}
p_history=p_history+'<hr>'+p_variable;
p_history+="="+result.toString();
var str_sub="<hr><p> Total :"+p_variable+" = "+result.toString()+"</p>";
p_history=p_variable+"="+result.toString()+'<br>'+p_history;
var str_sub='<p class="highlight"> '+p_variable+" = "+result.toString()+'</p>';
this.document.getElementById("sub_total").innerHTML=str_sub;
this.document.getElementById("listing").innerHTML=p_history;
this.document.getElementById('inp').value="";
this.document.getElementById('inp').value=result;
}
// Clean
//
function Clean()
function CleanHistory()
{
this.document.getElementById('listing').innerHTML="";
this.document.getElementById('result').innerHTML="";
this.document.getElementById('sub_total').innerHTML="";
this.document.getElementById('inp').value="";
this.document.getElementById('inp').focus();
}
function Clean()
{
this.document.getElementById('inp').value="";
this.document.getElementById('inp').focus();
}
function Compute()
{
var tot=0;

View file

@ -33,7 +33,7 @@ function boxsearch_card(p_dossier)
{
waiting_box();
removeDiv('boxsearch_card_div');
var queryString="gDossier="+p_dossier+"&op=cardsearch"+"&card="+$(card_search).value;
var queryString="gDossier="+p_dossier+"&op=cardsearch"+"&card="+encodeURI($(card_search).value);
var action = new Ajax.Request(
"ajax_misc.php" ,
{
@ -51,7 +51,7 @@ function boxsearch_card(p_dossier)
);
}catch( e)
{
alert_box(e.getMessage);
alert_box(e.message);
}
}
/**
@ -64,6 +64,7 @@ function boxsearch_card(p_dossier)
* - inp input text to update with the quickcode
* - label field to update with the name
* - ctl the id to fill with the HTML answer (ending with _content)
* - acc 1 if accounting are visible
*/
function search_card(obj)
{
@ -86,10 +87,17 @@ function search_card(obj)
jrn=-1;
}
}
var accvis=obj.accvis;
if ( accvis == undefined ) {
accvis=0;
} else {
accvis=obj.accvis;
}
var query=encodeJSON({'gDossier':gDossier,
'inp':inp,'label':label,'price':price,'tvaid':tvaid,
'ctl':'search_card','op':'fs','jrn':jrn,
'typecard':typecard,'query':string_to_search
'ctl':'search_card','op2':'fs','jrn':jrn,
'typecard':typecard,'query':string_to_search,'op':'card',
'accvis':accvis
});
if ( $('search_card') ) {
removeDiv('search_card');
@ -99,7 +107,7 @@ function search_card(obj)
waiting_box();
var action=new Ajax.Request ( 'ajax_card.php',
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'get',
parameters:query,
@ -154,16 +162,18 @@ function action_add_concerned_card(obj)
}
var query = encodeJSON({
'gDossier': dossier,
'op': 'action_add_concerned_card',
'op2': 'action_add_concerned_card',
'query' : inp,
'ctl' : 'unused',
'ag_id' : ag_id
'ag_id' : ag_id,
'op':'card',
'accvis':0
});
waiting_box();
var action = new Ajax.Request('ajax_card.php',
var action = new Ajax.Request('ajax_misc.php',
{
method: 'get',
parameters: query,
@ -224,7 +234,7 @@ function search_get_card(obj)
var dossier=$('gDossier').value;
var queryString="gDossier="+dossier;
queryString+="&op=fs";
queryString+="&op2=fs&op=card";
if ( obj.elements['inp'] )
{
@ -258,8 +268,14 @@ function search_get_card(obj)
{
queryString+="&ctl="+obj.ctl;
}
if ( obj.elements['accvis'] )
{
queryString+="&accvis="+$F(accvis);
} else {
queryString+="&accvis=0";
}
$('asearch').innerHTML=loading();
var action=new Ajax.Request ( 'ajax_card.php',
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'get',
parameters:queryString,
@ -302,8 +318,8 @@ function result_card_search(req)
sx=document.body.scrollTop+60;
}
var div_style="top:"+sx+"px;height:80%";
add_div({id:'search_card',cssclass:'inner_box',html:"",style:div_style,drag:true,effect:'blinddown'});
var div_style="top:"+sx+"px;height:auto";
add_div({id:'search_card',cssclass:'inner_box',html:"",style:div_style,drag:false,effect:'blinddown'});
$('search_card').innerHTML=code_html;
@ -425,7 +441,7 @@ function fill_fin_data(text,li)
/**
*@brief show the ipopup window and display the details of a card,
* to work some attribute must be set
*@parameter obj.qcode is the qcode, obj.nohistory if you don't want to display
*@param obj.qcode is the qcode, obj.nohistory if you don't want to display
* the history button, obj.ro is the popin is readonly
*@note you must the gDossier as hidden in the calling page
*
@ -441,10 +457,10 @@ function fill_ipopcard(obj)
if ( nTop > 300 ) {
nTop=170;
}
str_top=fixed_position(250,nTop)
var str_top=fixed_position(250,nTop)
var str_style=str_top+";width:45em;height:auto;position:absolute";
var popup={'id': content,'cssclass':'inner_box','style':str_style,'html':loading(),'drag':true};
var popup={'id': content,'cssclass':'inner_box','style':str_style,'html':loading(),'drag':false};
add_div(popup);
var dossier=$('gDossier').value;
@ -462,7 +478,8 @@ function fill_ipopcard(obj)
var queryString='gDossier='+dossier;
queryString+='&qcode='+qcode;
queryString+='&ctl='+content;
queryString+='&op=dc'; // dc for detail card
queryString+='&op2=dc'; // dc for detail card
queryString+='&op=card'; // dc for detail card
if ( obj.readonly != undefined) {
queryString+='&ro';
}
@ -470,8 +487,8 @@ function fill_ipopcard(obj)
if ( obj.nohistory != undefined) {
queryString+='&nohistory';
}
var action=new Ajax.Request ( 'ajax_card.php',
queryString=encodeURI(queryString);
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'get',
parameters:queryString,
@ -524,7 +541,7 @@ function successFill_ipopcard(req,json)
* a card
*@param input field (obj) it must have the attribute ipopup
* possible attribute :
* - filter is the filter but with a fd_id list, -1 means there is no filter
* - filter possible values are deb, cred, fd_id list, -1 means there is no filter
* - ref if we want to refresh the window after adding a card
* - type type of card (supplier, customer...)
*@see ajax_card.php
@ -533,7 +550,7 @@ function select_card_type(obj)
{
var dossier=$('gDossier').value;
var elementId="";
// give a filter, -1 if not
var filter=$(obj).filter;
if ( filter==undefined)
@ -543,28 +560,27 @@ function select_card_type(obj)
var content="select_card_div";
if ( $(content)){removeDiv(content);}
var sx=0;
if ( window.scrollY)
{
sx=window.scrollY+160;
}
else
{
sx=document.body.scrollTop+160;
}
sx=calcy(160);
var str_style="top:"+sx+"px;height:auto";
waiting_box();
var popup={'id': content,'cssclass':'inner_box','style':str_style,'html':"",'drag':true};
var popup={'id': content,'cssclass':'inner_box','style':str_style,'html':"",'drag':false};
add_div(popup);
var queryString='gDossier='+dossier;
queryString+='&ctl='+content;
queryString+='&op=st'; // st for selecting type
queryString+='&op2=st'; // st for selecting type
queryString+='&op=card'; // st for selecting type
if ( $(obj).win_refresh!=undefined)
{
queryString+='&ref';
}
/* if an element id must be updated after creating a new card */
if ( $(obj).elementId) {
var elementId=$(obj).elementId;
queryString+="&eltid="+elementId;
}
queryString+='&fil='+filter;
// filter on the ledger, -1 if not
var oledger=$(obj).jrn;
@ -584,13 +600,27 @@ function select_card_type(obj)
queryString+='&cat='+obj.type_cat;
}
var action=new Ajax.Request ( 'ajax_card.php',
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'get',
parameters:queryString,
onFailure:errorFid,
onSuccess:function(req) {
// Get all the category,
var answer=req.responseXML.getElementsByTagName("fiche_cat_item");
if (answer.length == 0) {
removeDiv(content);
remove_waiting_box();
alert_box(getNodeText(req.responseXML.getElementsByTagName("code")[0]));
return;
}
if ( answer.length == 1) {
// There is only one category of card
dis_blank_card({"ctl":"div_new_card","fd_id":answer[0].firstChild.nodeValue,"op2":"bc","op":"card",gDossier:dossier,"elementId":elementId});
removeDiv(content);
remove_waiting_box();
return;
}
fill_box(req);
$('lk_cat_card_table').focus();
}
@ -599,12 +629,12 @@ function select_card_type(obj)
}
/**
*@brief Show a blank card
*@param Form object (obj)
*@param obj Form object (obj)
* possible attribute :
* - filter is the filter but with a fd_id list, -1 means there is no filter
* - ref : reload the window after adding card
* - content : name of the div
*@example dis_blank_card({gDossier:15,fd_id:12,ref:1});
*@note dis_blank_card({gDossier:15,fd_id:12,ref:1});
*@see ajax_card.php
*/
function dis_blank_card(obj)
@ -624,12 +654,13 @@ function dis_blank_card(obj)
var nLeft=posX;
var str_style="top:"+nTop+"px;right:"+nLeft+"px;height:auto";
var popup={'id': content,'cssclass':'inner_box','style':str_style,'html':loading(),'drag':true};
if ( $(content)) {removeDiv(content);}
var popup={'id': content,'cssclass':'inner_box','style':str_style,'html':loading(),'drag':false};
add_div(popup);
if ( obj.gDossier.value != undefined ) {
var dossier=$('gDossier').value;} else {
var dossier=$('gDossier').value;
} else {
var dossier=obj.gDossier;
}
@ -637,14 +668,19 @@ function dis_blank_card(obj)
queryString+='&ctl='+content;
queryString+='&fd_id='+fd_id;
queryString+=ref;
queryString+='&op=bc'; // bc for blank card
var action=new Ajax.Request ( 'ajax_card.php',
queryString+='&op2=bc'; // bc for blank card
queryString+='&op=card'; // bc for blank card
if ( obj.elementId) queryString+="&eltid="+obj.elementId;
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'get',
parameters:queryString,
onFailure:errorFid,
onSuccess:successFill_ipopcard
onSuccess: function (req,json) {
successFill_ipopcard(req,json);
}
}
);
}
@ -667,9 +703,10 @@ function form_blank_card(obj)
var queryString='gDossier='+dossier;
queryString+='&ctl='+content;
queryString+='&fd_id='+fd_id;
queryString+='&op=bc'; // bc for blank card
queryString+='&op2=bc'; // bc for blank card
queryString+='&op=card'; // bc for blank card
var action=new Ajax.Request ( 'ajax_card.php',
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'get',
parameters:queryString,
@ -688,22 +725,59 @@ function form_blank_card(obj)
function save_card(obj)
{
var content=$(obj).ipopup;
var accounting= $(obj)['av_text5'];
if ( accounting && accounting.value.length > 40 ) {
smoke.alert('Poste comptable trop grand');
return false;
}
// Data must be taken here
data=$('save_card').serialize(false);
$(content).innerHTML=loading();
var data=$('save_card').serialize(false);
waiting_box();
var dossier=$('gDossier').value;
var queryString='gDossier='+dossier;
queryString+='&ctl='+content;
queryString+=data;
queryString+='&op=sc'; // sc for save card
queryString+='&op2=sc'; // sc for save card
queryString+='&op=card'; // sc for save card
var action=new Ajax.Request ( 'ajax_card.php',
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'post',
parameters:queryString,
onFailure:errorFid,
onSuccess:fill_box
onSuccess:function (req,json) {
var elt=req.responseXML.getElementsByTagName("eltid");
var status=req.responseXML.getElementsByTagName("status");
var status_value='OK';
if ( status.length !=0) {
status_value=getNodeText(status[0]);
}
if ( status_value == 'OK') {
fill_box(req,json);
}
remove_waiting_box();
if ( elt.length != 0) {
var eltid=getNodeText(elt[0]);
if ( eltid !="") {
var eltvalue=req.responseXML.getElementsByTagName("elt_value");
$(eltid).value=getNodeText(eltvalue[0]);
fill_data_onchange(eltid);
$(eltid).focus();
}
}
if (status_value == "OK") {
Effect.SlideUp(content, { duration: 1.0 });
}
if ( status_value == 'NOK') {
var xml_message=req.responseXML.getElementsByTagName("code");
var message=getNodeText(xml_message[0]);
smoke.alert(message);
}
}
}
);
}
@ -736,13 +810,14 @@ function add_category(obj)
waiting_box();
var dossier=$('gDossier').value;
var queryString='gDossier='+dossier;
queryString+='&op=ac';
queryString+='&op2=ac';
queryString+='&op=card';
queryString+='&ctl='+obj.ipopup;
if ( obj.type_cat)
{
queryString+='&cat='+obj.type_cat;
}
var action=new Ajax.Request ( 'ajax_card.php',
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'get',
parameters:queryString,
@ -768,11 +843,12 @@ function save_card_category(obj)
data=$('newcat').serialize(false);
var dossier=$('gDossier').value;
queryString='ctl='+obj.ipopup+'&';
var queryString='ctl='+obj.ipopup+'&';
queryString+=data;
queryString+='&op=scc'; // sc for save card
queryString+='&op2=scc'; // sc for save card
queryString+='&op=card'; // sc for save card
var action=new Ajax.Request ( 'ajax_card.php',
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'get',
parameters:queryString,
@ -798,10 +874,11 @@ function save_card_category(obj)
function removeCardAttribut(ad_id,gDossier,table_id,row)
{
var queryString='gDossier='+gDossier;
queryString+='&op=rmfa';
queryString+='&op=card';
queryString+='&op2=rmfa';
queryString+='&ctl=debug'; // debug id
queryString+='&ad_id='+ad_id;
var action=new Ajax.Request ( 'ajax_card.php',
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'get',
parameters:queryString,
@ -820,8 +897,8 @@ function update_card(obj)
{
try {
var name=obj.id;
var qs=Form.serialize(name)+'&op=upc';
var action=new Ajax.Request ( 'ajax_card.php',
var qs=Form.serialize(name)+'&op2=upc&op=card';
var action=new Ajax.Request ( 'ajax_misc.php',
{
method:'get',
parameters:qs,
@ -843,8 +920,8 @@ try {
* @returns {undefined} nothing
*/
function action_save_concerned(p_dossier, p_fiche_id, p_action_id) {
var query = encodeJSON({'gDossier': p_dossier, 'f_id': p_fiche_id, 'ag_id': p_action_id,'op':'action_save_concerned','ctl':'unused'});
var a=new Ajax.Request('ajax_card.php',
var query = encodeJSON({'gDossier': p_dossier, 'f_id': p_fiche_id, 'ag_id': p_action_id,'op':'card','op2':'action_save_concerned','ctl':'unused'});
var a=new Ajax.Request('ajax_misc.php',
{
method: 'get',
parameters: query,
@ -876,8 +953,8 @@ function action_save_concerned(p_dossier, p_fiche_id, p_action_id) {
}
function action_remove_concerned(p_dossier,p_fiche_id,p_action_id)
{
var query = encodeJSON({'gDossier': p_dossier, 'f_id': p_fiche_id, 'ag_id': p_action_id,'op':'action_remove_concerned','ctl':'unused'});
var a=new Ajax.Request('ajax_card.php',
var query = encodeJSON({'gDossier': p_dossier, 'f_id': p_fiche_id, 'ag_id': p_action_id,'op':'card','op2':'action_remove_concerned','ctl':'unused'});
var a=new Ajax.Request('ajax_misc.php',
{
method: 'get',
parameters: query,
@ -902,9 +979,47 @@ function action_remove_concerned(p_dossier,p_fiche_id,p_action_id)
$('concerned_card_td').innerHTML = code_html;
} catch (e) {
if ( console) { console.log('Erreur ') + e.message;}
alert_box('action_remove_concerned '+e.message);
}
}
}
);
}
/**
* Remove a card after checking it is not used
* @param object obj {gDossier,op,op2:rm_card,ctl,f_id}
*/
function delete_card(obj) {
console.debug("delete_card");
console.debug(obj);
smoke.confirm("Confirmez ? ", function (e) {
if (e) {
waiting_box();
new Ajax.Request("ajax_misc.php", {
"method": "get",
parameters: obj,
onSuccess: function (req) {
remove_waiting_box();
var answer = req.responseXML;
var a = answer.getElementsByTagName('ctl');
if (a.length == 0)
{
var rec = req.responseText;
alert_box('erreur :' + rec);
}
var html = answer.getElementsByTagName('code');
var namectl = a[0].firstChild.nodeValue;
var nodeXml = html[0];
var code_html = getNodeText(nodeXml);
code_html = unescape_xml(code_html);
if ( code_html == "OK") {
Effect.Fade(obj['ctl'], { duration: 1.5 });
} else {
smoke.alert(code_html);
}
}
});
}
});
}

View file

@ -86,11 +86,20 @@ function checkTotalDirect()
diff=total_deb-total_cred;
diff=Math.round(diff*100)/100;
document.getElementById("totalDiff").innerHTML=diff;
return false;
}
else
{
document.getElementById("totalDiff").innerHTML="0.0";
return true;
}
}
function controleBalance()
{
if ( checkTotalDirect() == true ) { return true;}
else {
smoke.alert('Balance incorrecte D/C');
return false;
}
}

View file

@ -67,7 +67,7 @@ Autocompleter.Base = Class.create({
update.style.position = 'absolute';
Position.clone(element, update, {
setHeight: false,
setWidth:true,
setWidth:false,
offsetTop: element.offsetHeight
});
}
@ -220,7 +220,7 @@ Autocompleter.Base = Class.create({
markNext: function() {
if(this.index < this.entryCount-1) this.index++;
else this.index = 0;
this.getEntry(this.index).scrollIntoView(false);
//this.getEntry(this.index).scrollIntoView(false);
},
getEntry: function(index) {

View file

@ -33,9 +33,14 @@
*/
function remove_document(p_dossier,p_id)
{
var queryString="gDossier="+p_dossier+"&a=rm&d_id="+p_id;
var queryString={
"gDossier":p_dossier,
"a":"rm",
"d_id":p_id,
'act':'RAW:document'
};
var action=new Ajax.Request (
"show_document.php",
"export.php",
{
method:'get',
parameters:queryString,
@ -46,31 +51,7 @@ function remove_document(p_dossier,p_id)
);
}
/**
*@brief update the description of an attached document of an action
*@param dossier
*@param dt_id id of the document (pk document:d_id)
*/
function update_document(p_dossier,p_id)
{
var queryString="gDossier="+p_dossier+"&a=upd_doc&d_id="+p_id;
queryString+="&value="+$('input_desc_txt'+p_id).value;
var action=new Ajax.Request (
"show_document.php",
{
method:'get',
parameters:queryString,
onFailure:errorRemoveDoc,
onSuccess:function(req){
$('input_desc'+p_id).hide();
$('print_desc'+p_id).innerHTML=$('input_desc_txt'+p_id).value+'<a class="line" id="desc'+p_id+'" onclick="javascript:show_description('+p_id+')">Modifier</a>';
$('print_desc'+p_id).show();
}
}
);
return false;
}
/**
*@brief remove the concerned operation of an action
@ -79,9 +60,14 @@ function update_document(p_dossier,p_id)
*/
function remove_operation(p_dossier,p_id)
{
var queryString="gDossier="+p_dossier+"&a=rmop&id="+p_id;
var queryString={
"gDossier":p_dossier,
"a":"rmop",
"id":p_id,
'act':'RAW:document'
};
var action=new Ajax.Request (
"show_document.php",
"export.php",
{
method:'get',
parameters:queryString,
@ -115,9 +101,15 @@ function successRemoveOp(request,json)
*/
function remove_action(p_dossier,p_id,ag_id)
{
queryString="gDossier="+p_dossier+"&a=rmaction&id="+p_id+"&ag_id="+ag_id;
var queryString={
"gDossier":p_dossier,
"a":"rmaction",
"id":p_id,
"ag_id":ag_id,
'act':'RAW:document'
};
var action=new Ajax.Request (
"show_document.php",
"export.php",
{
method:'get',
parameters:queryString,
@ -146,9 +138,14 @@ function remove_action(p_dossier,p_id,ag_id)
*/
function remove_comment(p_dossier,p_id)
{
queryString="gDossier="+p_dossier+"&a=rmcomment&id="+p_id;
var queryString={
"gDossier":p_dossier,
"a":"rmcomment",
"id":p_id,
'act':'RAW:document'
};
var action=new Ajax.Request (
"show_document.php",
"export.php",
{
method:'get',
parameters:queryString,
@ -286,6 +283,8 @@ function action_show(p_dossier)
remove_waiting_box();
add_div({id: 'action_list_div', style:"top:1%;width:90%;left:5%" , cssclass: 'inner_box'});
$('action_list_div').innerHTML=p_xml.responseText;
var table_followup=document.getElementById('event_followup');
if ( table_followup) { sorttable.makeSortable(table_followup); }
}
});
} catch (e)
@ -337,6 +336,7 @@ function action_save_short()
$('action_add_frm')['date_event_action_short'].parentNode.className="";
$('action_add_frm')['title_event'].parentNode.className="";
$('action_add_frm')['type_event'].parentNode.className="";
$('action_add_frm')['hour_event'].parentNode.className="";
if ( $('action_add_frm')['date_event_action_short'].value.trim() == '') {
$('action_add_frm')['date_event_action_short'].parentNode.className="notice";
@ -347,6 +347,17 @@ function action_save_short()
$('action_add_frm')['title_event'].parentNode.className="notice";
return false;
}
var str_hour=new String($('action_add_frm')['hour_event'].value);
str_hour=str_hour.trim();
if ( str_hour.trim() != ""
&& str_hour.search(/^[0-9]{2}:[0-9]{2}$/) == -1 &&
str_hour.search(/^[0-9]{2}.[0-9]{2}$/) == -1)
{
$('action_add_frm')['hour_event'].parentNode.className="notice";
alert_box('HH:MM or HH.MM');
return false;
}
if ( $('action_add_frm')['type_event'].options[$('action_add_frm')['type_event'].selectedIndex].value == -1 )
{
@ -376,6 +387,7 @@ function action_save_short()
else if (code == 'NOK') {
// issue while saving
$('action_add_frm_info').innerHTML=message;
alert_box(message);
}

View file

@ -26,56 +26,15 @@
var posX=0,posY=0,offsetX=10,offsetY=10;
document.onmousemove=getPosition;
var content=new Array();
content[0]="Cherchez en saisissant le quickcode, le poste comptable ou une partie du nom de la fiche ou de l'adresse";
content[1]="(optionnel) La description est un commentaire libre qui sert à identifier cette opération";
content[2]="Selectionnez le journal où l'opération doit être sauvée";
content[3]="Les périodes comptables servent comme un second contrôle pour la date de l'opération. Modifiez dans vos préférence pour avoir une autre période par défaut. Pour ne plus avoir à changer la période aller dans COMPANY, et mettez \"Afficher la période comptable\" à non";
content[4]="(optionnel) L'échéance est la date limite de paiement";
content[5]="(optionnel)Le numéro d'extrait permet de retrouver plus facilement l'extrait de banque";
content[6]="Indiquez ici le prix hors tva si vous êtes affilié à la tva et que vous pouvez la déduire , sinon indiquez ici le total tva incluse et utilisez un taux tva de 0%";
content[7]="(optionnel) Ces champs servent à contrôler que les montants correspondent à l'extrait";
content[8]="(optionnel) Ce montant correspond au total tva, si vous le laissez à vide, il sera calculé automatiquement en fonction du taux";
content[9]="Tapez le numéro de poste ou une partie du poste ou du libellé puis sur recherche, Si vous avez donné un quickcode, le poste comptable ne sera pas utilisé";
content[10]="ATTENTION changer le poste comptable d'une fiche <b>ne modifiera pas toutes les opérations</b> où cette fiche est utilisée";
content[11]="ATTENTION si le poste comptable est vide, il sera créé automatiquement";
content[12]="Document généré uniquement si le mode de paiement est utilisé";
content[13]="Vous pouvez utiliser le % pour indiquer le poste parent";
content[14]="Attention, le poste comptable doit exister, il ne sera pas vérifié";
content[15]="Laissez à 0 pour ne rien changer";
content[16]="Vous devez donner la date par opération";
content[17]="Cliquez sur le titre d'une colonne pour trier";
content[18]="Donnez une partie du nom, prénom, de la description, du poste comptable, du n° de TVA,quick code ... ";
content[19]="Donnez une partie du nom, de la description, du n° de TVA du poste comptable ou du quick code";
content[20]="Les menus ne peuvent dépendre que dans d'un menu principal ou d'un menu, si cette liste est vide, ajouter des modules ou menu principal sans donner de dépendance";
content[21]="Donnez un nombre entre 0 & 100";
content[22]="Donnez une partie du nom du dossier,du nom, du prénom ou du login pour filtrer";
content[23]="Donnez une partie du nom du dossier ou de la description pour filtrer";
content[24]="Donnez une partie du poste comptable ou du libellé pour filtrer";
content[25]="Donnez une partie du libellé, la date, le montant ou le numéro d'opération pour filtrer, cela n'efface pas ce qui a déjà été sélectionné";
content[26]="Donnez une partie du quickcode, nom, description... pour filtrer";
content[27]="Attention, <b>SI</b> la fiche a changé de poste comptable, c'est seulement le dernier qui est affiché";
content[28]="Attention Différence entre TVA calculée et donnée";
content[29]="Si vous ne donnez pas de nom, ce sera le nom du fichier qui sera utilisé";
content[30]="Peut contenir une information telle que le message structuré sur le virement";
content[31]="Peut contenir un numéro de bon de commande";
content[32]='<h3> Remarque : choix possibles </h3> <ul style="padding-left:15px"> <li> Détail opérations ne donne pas le même résultat si on regarde tous les journaux ou un journal de type ACH ou VEN</li> <li> Liste opérations ne donne pas le même résultat si on regarde tous les journaux ou un journal de type ACH ou VEN</li> <li> Journaux VEN ou ACH en mode "détail opérations" donne les détails des factures, y compris les montants, TVA et quantité par article</li> <li> Journaux VEN ou ACH en mode "liste opérations" donne pour chaque opération, le total de la TVA, ND, ...</li> </ul>';
content[33]='le type vaut :<ul> <li> ME pour Menu</li> <li> PR pour les impressions </li> <li> PL pour les plugins</li> <li> SP pour des valeurs spéciales</li> </ul>';
content[34]='Cliquez sur le code AD pour ouvrir le menu dans un nouvel onglet';
content[35]='Cliquez sur le chemin pour ouvrir le menu';
content[36]='En utilisant les dates d\'échéance ou de paiement, seuls les journaux de type ACH et VEN seront utilisés ,vous excluez d\'office les autres journaux';
content[37]='Les dates sont en format DD.MM.YYYY';
content[38]='La numérotation est propre à chaque journal. Laissez à 0 pour ne pas changer le numéro';
content[39]='Le préfixe des pièces doit être différent pour chaque journal, on peut aussi utiliser l\'année';
content[40]='Laissez à 0 pour ne pas changer le numéro';
content[41]='Mettez le pourcentage à zéro pour effacer la ligne';
content[42]="Selectionnez le plan qui vous intéresse avant de cliquer sur Recherche";
function showBulle(p_ctl){
var d=document.getElementById('bulle');
var viewport = document.viewport.getDimensions();
if ( posX+offsetX > viewport.width-d.getWidth()) { posX-=d.getWidth()+20;}
if ( posY+offsetY > viewport.height-d.getHeight()-20) { posY-=d.getHeight()+20}
d.innerHTML=content[p_ctl];
d.style.top=posY+offsetY+"px";
d.style.left=posX+offsetX+"px";
d.style.left=posX+offsetX-10+"px";
d.style.visibility="visible";
}
function getPosition(e)
@ -96,3 +55,13 @@ function hideBulle(p_ctl)
var d=document.getElementById('bulle');
d.style.visibility="hidden";
}
function displayBulle(p_comment) {
var d=document.getElementById('bulle');
var viewport = document.viewport.getDimensions();
d.innerHTML=p_comment;
if ( posX+offsetX > viewport.width-d.getWidth()) { posX-=d.getWidth()+20;}
if ( posY+offsetY > viewport.height-d.getHeight()-20) { posY-=d.getHeight()+20}
d.style.top=posY+offsetY+"px";
d.style.left=posX+offsetX+"px";
d.style.visibility="visible";
}

View file

@ -0,0 +1,318 @@
/*
* This file is part of NOALYSS.
*
* NOALYSS is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright Author Dany De Bontridder danydb@aevalys.eu
/**
*@file
*@brief Javascript object to manage ajax calls to
* save , input or delete data row.
*@details The callback must
respond with a XML file , the tag status for the result
and data the HTML code to display
*@param p_table_name the data table on which we're working
in javascript , to create an object to manipulate the table
version.
Example of code
@code
// Version will manage the table "version"
var version=new ManageTable("version");
// the file ajax_my.php will be called
version.set_callback("ajax_my.php");
// Add supplemental parameter to this file
version.param_add ({"plugin_code":"OIC"};
// Set the id of dialog box , table and tr prefix
version.set_control("dialbox1");
@endcode
The answer from ajax must be like this template
@verbatim
<xml>
<ctl> id of the control to update for diag.box, row </ctl>
<status> OK , FAIL ...</status>
<html> Html to display</html>
</xml>
@endverbatim
List of function
- set_control(p_ctl_name)
- set_callback (p_new_callback)
- param_add (json object)
- parseXML (private function)
- save
- delete
- input
*/
/**
* @class ManageTable
* @param string p_table_name name of the table and schema
*/
var ManageTable = function (p_table_name)
{
this.callback = "ajax.php"; //!< File to call
this.control = "dtr"; //<! Prefix Id of dialog box, table, row
this.sort_column=0;
this.param = {"table": p_table_name, "ctl_id": this.control}; //<! default value to pass
/**
* Set the sort ,
* @param {string} p_column column number start from 0
* @param {string} p_type type of sort (string, numeric)
* @returns {ManageTable.set_sort}
*/
this.set_sort = function (p_column) {
this.sort_column=p_column;
};
/**
* Insert the row a the right location
* @param {type} p_element_row DOMElement TR
* @returns nothing
*/
this.insertRow=function(p_table,p_element_row,sort_column) {
try {
// use the table
//compute the length of row
//if rows == 0 or the sort is not defined then append
if ( this.sort_column==-1 || p_table.rows.length < 2 || p_table.rows[1].cells[sort_column] == undefined || p_table.rows[1].cells[sort_column].getAttribute('sort_value') == undefined ) {
var row=p_table.insertRow(p_table.rows.length);
row.innerHTML=p_element_row.innerHTML;
row.id=p_element_row.id;
return;
}
// loop for each row , compare the innerHTML of the column with the
// value if less than insert before
var i = 0;
for (i = 1;i<p_table.rows.length;i++) {
if (p_table.rows[i].cells[sort_column].getAttribute('sort_value') > p_element_row.cells[sort_column].getAttribute('sort_value')) {
var row=p_table.insertRow(i);
row.innerHTML=p_element_row.innerHTML;
row.id=p_element_row.id;
return;
}
}
p_table.appendChild(p_element_row);
} catch(e) {
console.log("insertRow failed with "+e.message);
throw e;
}
};
var answer = {};
/**
*@fn ManageTable.set_control
*@brief Set the id of the control name , used as
* prefix for dialog box , table id and row
*@param string p_ctl_name id of dialog box
*/
this.set_control = function (p_ctl_name) {
this.control = p_ctl_name;
};
/**
*@brief set the name of the callback file to
* call by default it is ajax.php
*/
this.set_callback = function (p_new_callback) {
this.callback = p_new_callback;
};
/**
*@brief By default send the json param variable
* you can add a json object to it in order to
* send it to the callback function
*/
this.param_add = function (p_obj) {
var result = {};
for (var key in this.param) {
result[key] = this.param[key];
}
for (var key in p_obj) {
result[key] = p_obj[key];
}
this.param = result;
return this.param;
};
/**
@brief receive answer from ajax and fill up the
private object "answer"
@param req Ajax answer
*/
this.parseXML = function (req) {
try {
var xml = req.responseXML;
var status = xml.getElementsByTagName("status");
var ctl = xml.getElementsByTagName("ctl");
var html = xml.getElementsByTagName("html");
var ctl_row = xml.getElementsByTagName("ctl_row");
if (status.length == 0 || ctl.length == 0 || html.length == 0)
{
throw "Invalid answer " + req.responseText;
}
var answer=[];
answer['status'] = getNodeText(status[0]);
answer['ctl'] = getNodeText(ctl[0]);
answer['ctl_row'] = getNodeText(ctl_row[0]);
answer['html'] = getNodeText(html[0]);
return answer;
} catch (e) {
throw e;
}
};
/**
*@brief call the ajax with the action save
*@details update or append
* As a hidden parameter the Manage_Table:object_name must be
* set
*/
this.save = function (form_id) {
waiting_box();
try {
this.param['action'] = 'save';
var form = $(form_id).serialize(true);
this.param_add(form);
var here=this;
} catch (e) {
alert(e.message);
return false;
}
new Ajax.Request(this.callback, {
parameters: this.param,
method: "post",
onSuccess: function (req) {
try {
/// Display the result of the update
/// or add , the name of the row in the table has the
/// if p_ctl_row does not exist it means it is a new
/// row , otherwise an update
var answer=here.parseXML(req);
if (answer ['status'] == 'OK') {
if ($(answer['ctl_row'])) {
$(answer['ctl_row']).update(answer['html']);
} else {
var new_row = new Element("tr");
new_row.id = answer['ctl_row'];
new_row.innerHTML = answer['html'];
/**
* put the element at the right place
*/
here.insertRow($("tb"+answer['ctl']) , new_row,here.sort_column);
}
new Effect.Highlight(answer['ctl_row'] ,{startcolor: '#FAD4D4',endcolor: '#F78082' });
alternate_row_color("tb"+answer['ctl']);
remove_waiting_box();
$("dtr").hide();
} else {
remove_waiting_box();
smoke.alert("Changement impossible");
$("dtr").update(answer['html']);
}
}
catch (e) {
alert(e.message);
return false;
}
}
});
return false;
};
/**
*@brief call the ajax with action delete
*@param id (pk) of the data row
*/
this.remove = function (p_id, p_ctl) {
this.param['p_id'] = p_id;
this.param['action'] = 'delete';
this.param['ctl'] = p_ctl;
var here=this;
$(p_ctl+"_"+p_id).addClassName("highlight");
smoke.confirm("Confirmez ?",
function (e)
{
if (e ) {
new Ajax.Request(here.callback, {
parameters: here.param,
method: "get",
onSuccess: function (req) {
var answer = here.parseXML(req);
if (answer['status'] == 'OK') {
var x=answer['ctl_row'];
$(x).remove();
alternate_row_color("tb"+answer['ctl']);
}else {
smoke.alert(answer['html']);
}
}
});
}
else {
$(p_ctl+"_"+p_id).removeClassName("highlight");
}
}) ;
};
/**
*@brief display a dialog box with the information
* of the data row
*@param id (pk) of the data row
*@param ctl name of the object
*/
this.input = function (p_id, p_ctl) {
waiting_box();
this.param['p_id'] = p_id;
this.param['action'] = 'input';
this.param['ctl'] = p_ctl;
var control = this.control;
var here = this;
// display the form to enter data
new Ajax.Request(this.callback, {
parameters: this.param,
method: "get",
onSuccess: function (req) {
remove_waiting_box();
try {
var x = here.parseXML(req);
var obj = {id: control, "cssclass": "inner_box", "html": loading()};
add_div(obj);
var pos = calcy(250);
$(obj.id).setStyle({position: "fixed", top: '15%', width: "auto", "margin-left": "20%"});
$(obj.id).update(x['html']);
} catch (e) {
smoke.alert("ERREUR " + e.message);
}
}
});
};
}

View file

@ -1,4 +1,4 @@
/* Prototype JavaScript framework, version 1.7.2
/* Prototype JavaScript framework, version 1.7.3
* (c) 2005-2010 Sam Stephenson
*
* Prototype is freely distributable under the terms of an MIT-style license.
@ -8,7 +8,7 @@
var Prototype = {
Version: '1.7.2',
Version: '1.7.3',
Browser: (function(){
var ua = navigator.userAgent;
@ -621,7 +621,7 @@ Object.extend(String.prototype, (function() {
}
function stripTags() {
return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, '');
return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?(\/)?>|<\/\w+>/gi, '');
}
function stripScripts() {
@ -734,7 +734,7 @@ Object.extend(String.prototype, (function() {
function evalJSON(sanitize) {
var json = this.unfilterJSON(),
cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
cx = /[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;
if (cx.test(json)) {
json = json.replace(cx, function (a) {
return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
@ -1332,10 +1332,9 @@ Array.from = $A;
}
if (arrayProto.some) {
var some = wrapNative(Array.prototype.some);
some = wrapNative(Array.prototype.some);
}
function every(iterator) {
if (this == null) throw new TypeError();
iterator = iterator || Prototype.K;
@ -1352,22 +1351,16 @@ Array.from = $A;
}
if (arrayProto.every) {
var every = wrapNative(Array.prototype.every);
every = wrapNative(Array.prototype.every);
}
var _reduce = arrayProto.reduce;
function inject(memo, iterator) {
iterator = iterator || Prototype.K;
var context = arguments[2];
return _reduce.call(this, iterator.bind(context), memo);
}
if (!arrayProto.reduce) {
var inject = Enumerable.inject;
}
Object.extend(arrayProto, Enumerable);
if (arrayProto.entries === Enumerable.entries) {
delete arrayProto.entries;
}
if (!arrayProto._reverse)
arrayProto._reverse = arrayProto.reverse;
@ -1383,7 +1376,6 @@ Array.from = $A;
any: some,
every: every,
all: every,
inject: inject,
clear: clear,
first: first,
@ -2146,12 +2138,12 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
function visible(element) {
return $(element).style.display !== 'none';
return $(element).getStyle('display') !== 'none';
}
function toggle(element, bool) {
element = $(element);
if (Object.isUndefined(bool))
if (typeof bool !== 'boolean')
bool = !Element.visible(element);
Element[bool ? 'show' : 'hide'](element);
@ -2683,6 +2675,7 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
function descendantOf_DOM(element, ancestor) {
element = $(element), ancestor = $(ancestor);
if (!element || !ancestor) return false;
while (element = element.parentNode)
if (element === ancestor) return true;
return false;
@ -2690,12 +2683,14 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
function descendantOf_contains(element, ancestor) {
element = $(element), ancestor = $(ancestor);
if (!element || !ancestor) return false;
if (!ancestor.contains) return descendantOf_DOM(element, ancestor);
return ancestor.contains(element) && ancestor !== element;
}
function descendantOf_compareDocumentPosition(element, ancestor) {
element = $(element), ancestor = $(ancestor);
if (!element || !ancestor) return false;
return (element.compareDocumentPosition(ancestor) & 8) === 8;
}
@ -2800,8 +2795,10 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
for (var attr in attributes) {
name = table.names[attr] || attr;
value = attributes[attr];
if (table.values[attr])
name = table.values[attr](element, value) || name;
if (table.values[attr]) {
value = table.values[attr](element, value);
if (Object.isUndefined(value)) continue;
}
if (value === false || value === null)
element.removeAttribute(name);
else if (value === true)
@ -2979,7 +2976,9 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
values: {
checked: function(element, value) {
element.checked = !!value;
value = !!value;
element.checked = value;
return value ? 'checked' : null;
},
style: function(element, value) {
@ -3124,8 +3123,11 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
value = element.currentStyle[style];
}
if (style === 'opacity' && !STANDARD_CSS_OPACITY_SUPPORTED)
if (style === 'opacity') {
if (!STANDARD_CSS_OPACITY_SUPPORTED)
return getOpacity_IE(element);
else return value ? parseFloat(value) : 1.0;
}
if (value === 'auto') {
if ((style === 'width' || style === 'height') && Element.visible(element))
@ -3177,7 +3179,7 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
if (value < 0.00001) value = 0;
style.filter = stripAlphaFromFilter_IE(filter) +
'alpha(opacity=' + (value * 100) + ')';
' alpha(opacity=' + (value * 100) + ')';
return element;
}
@ -3193,7 +3195,7 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
var filter = Element.getStyle(element, 'filter');
if (filter.length === 0) return 1.0;
var match = (filter || '').match(/alpha\(opacity=(.*)\)/);
var match = (filter || '').match(/alpha\(opacity=(.*)\)/i);
if (match && match[1]) return parseFloat(match[1]) / 100;
return 1.0;
}
@ -3519,7 +3521,7 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
return boxWidth - bl - br - pl - pr;
}
if ('currentStyle' in document.documentElement) {
if (!Object.isUndefined(document.documentElement.currentStyle) && !Prototype.Browser.Opera) {
getRawStyle = getRawStyle_IE;
}
@ -4047,15 +4049,19 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
function getOffsetParent(element) {
element = $(element);
function selfOrBody(element) {
return isHtml(element) ? $(document.body) : $(element);
}
if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element))
return $(document.body);
var isInline = (Element.getStyle(element, 'display') === 'inline');
if (!isInline && element.offsetParent) return $(element.offsetParent);
if (!isInline && element.offsetParent) return selfOrBody(element.offsetParent);
while ((element = element.parentNode) && element !== document.body) {
if (Element.getStyle(element, 'position') !== 'static') {
return isHtml(element) ? $(document.body) : $(element);
return selfOrBody(element);
}
}
@ -4093,8 +4099,8 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
}
} while (element);
valueL -= layout.get('margin-top');
valueT -= layout.get('margin-left');
valueL -= layout.get('margin-left');
valueT -= layout.get('margin-top');
return new Element.Offset(valueL, valueT);
}
@ -4265,6 +4271,8 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
offsetLeft: 0
}, options || {});
var docEl = document.documentElement;
source = $(source);
element = $(element);
var p, delta, layout, styles = {};
@ -4278,19 +4286,41 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
}
}
function pageScrollXY() {
var x = 0, y = 0;
if (Object.isNumber(window.pageXOffset)) {
x = window.pageXOffset;
y = window.pageYOffset;
} else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
x = document.body.scrollLeft;
y = document.body.scrollTop;
} else if (docEl && (docEl.scrollLeft || docEl.scrollTop)) {
x = docEl.scrollLeft;
y = docEl.scrollTop;
}
return { x: x, y: y };
}
var pageXY = pageScrollXY();
if (options.setWidth || options.setHeight) {
layout = Element.getLayout(source);
}
if (options.setLeft)
styles.left = (p[0] - delta[0] + options.offsetLeft) + 'px';
styles.left = (p[0] + pageXY.x - delta[0] + options.offsetLeft) + 'px';
if (options.setTop)
styles.top = (p[1] - delta[1] + options.offsetTop) + 'px';
styles.top = (p[1] + pageXY.y - delta[1] + options.offsetTop) + 'px';
if (options.setWidth)
styles.width = layout.get('border-box-width') + 'px';
if (options.setHeight)
styles.height = layout.get('border-box-height') + 'px';
var currentLayout = element.getLayout();
if (options.setWidth) {
styles.width = layout.get('width') + 'px';
}
if (options.setHeight) {
styles.height = layout.get('height') + 'px';
}
return Element.setStyle(element, styles);
}
@ -4488,15 +4518,29 @@ Prototype.Selector = (function() {
};
})();
Prototype._original_property = window.Sizzle;
;(function () {
function fakeDefine(fn) {
Prototype._actual_sizzle = fn();
}
fakeDefine.amd = true;
if (typeof define !== 'undefined' && define.amd) {
Prototype._original_define = define;
Prototype._actual_sizzle = null;
window.define = fakeDefine;
}
})();
/*!
* Sizzle CSS Selector Engine v@VERSION
* Sizzle CSS Selector Engine v1.10.18
* http://sizzlejs.com/
*
* Copyright 2013 jQuery Foundation, Inc. and other contributors
* Released under the MIT license
* http://jquery.org/license
*
* Date: @DATE
* Date: 2014-02-05
*/
(function( window ) {
@ -6229,6 +6273,22 @@ if ( typeof define === "function" && define.amd ) {
})( window );
;(function() {
if (typeof Sizzle !== 'undefined') {
return;
}
if (typeof define !== 'undefined' && define.amd) {
window.Sizzle = Prototype._actual_sizzle;
window.define = Prototype._original_define;
delete Prototype._actual_sizzle;
delete Prototype._original_define;
} else if (typeof module !== 'undefined' && module.exports) {
window.Sizzle = module.exports;
module.exports = {};
}
})();
;(function(engine) {
var extendElements = Prototype.Selector.extendElements;
@ -6870,7 +6930,7 @@ Form.EventObserver = Class.create(Abstract.EventObserver, {
Event._isCustomEvent = isCustomEvent;
function getRegistryForElement(element, uid) {
function getOrCreateRegistryFor(element, uid) {
var CACHE = GLOBAL.Event.cache;
if (Object.isUndefined(uid))
uid = getUniqueElementID(element);
@ -6886,7 +6946,7 @@ Form.EventObserver = Class.create(Abstract.EventObserver, {
function register(element, eventName, handler) {
var registry = getRegistryForElement(element);
var registry = getOrCreateRegistryFor(element);
if (!registry[eventName]) registry[eventName] = [];
var entries = registry[eventName];
@ -6906,9 +6966,8 @@ Form.EventObserver = Class.create(Abstract.EventObserver, {
}
function unregister(element, eventName, handler) {
var registry = getRegistryForElement(element);
var entries = registry[eventName];
if (!entries) return;
var registry = getOrCreateRegistryFor(element);
var entries = registry[eventName] || [];
var i = entries.length, entry;
while (i--) {
@ -6918,10 +6977,16 @@ Form.EventObserver = Class.create(Abstract.EventObserver, {
}
}
if (!entry) return;
if (entry) {
var index = entries.indexOf(entry);
entries.splice(index, 1);
}
if (entries.length === 0) {
delete registry[eventName];
if (Object.keys(registry).length === 1 && ('element' in registry))
destroyRegistryForElement(element);
}
return entry;
}
@ -7020,14 +7085,24 @@ Form.EventObserver = Class.create(Abstract.EventObserver, {
}
function stopObservingEventName(element, eventName) {
var registry = getRegistryForElement(element);
var registry = getOrCreateRegistryFor(element);
var entries = registry[eventName];
if (!entries) return;
if (entries) {
delete registry[eventName];
}
entries = entries || [];
var i = entries.length;
while (i--)
removeEvent(element, eventName, entries[i].responder);
for (var name in registry) {
if (name === 'element') continue;
return; // There is another registered event
}
destroyRegistryForElement(element);
}
@ -7194,7 +7269,8 @@ Form.EventObserver = Class.create(Abstract.EventObserver, {
function createResponderForCustomEvent(uid, eventName, handler) {
return function(event) {
var element = Event.cache[uid].element;
var cache = Event.cache[uid];
var element = cache && cache.element;
if (Object.isUndefined(event.eventName))
return false;
@ -7283,7 +7359,9 @@ Hash.toQueryString = Object.toQueryString;
var Toggle = { display: Element.toggle };
Element.Methods.childOf = Element.Methods.descendantOf;
Element.addMethods({
childOf: Element.Methods.descendantOf
});
var Insertion = {
Before: function(element, content) {

File diff suppressed because it is too large Load diff

View file

@ -2,9 +2,10 @@
SMOKE.JS - 0.1.3
(c) 2011-2013 Jonathan Youngblood
demos / documentation: http://smoke-js.com/
*/
*/
;(function(window, document) {
;
(function (window, document) {
/*jslint browser: true, onevar: true, undef: true, nomen: false, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */
@ -14,39 +15,39 @@
zindex: 1000,
i: 0,
bodyload: function(id) {
bodyload: function (id) {
var ff = document.createElement('div');
ff.setAttribute('id','smoke-out-'+id);
ff.setAttribute('id', 'smoke-out-' + id);
ff.className = 'smoke-base';
ff.style.zIndex = smoke.zindex;
smoke.zindex++;
document.body.appendChild(ff);
},
newdialog: function() {
newdialog: function () {
var newid = new Date().getTime();
newid = Math.random(1,99) + newid;
newid = Math.random(1, 99) + newid;
if (!smoke.init) {
smoke.listen(window,"load", function() {
smoke.listen(window, "load", function () {
smoke.bodyload(newid);
});
}else{
} else {
smoke.bodyload(newid);
}
return newid;
},
forceload: function() {},
forceload: function () {},
build: function (e, f) {
smoke.i++;
f.stack = smoke.i;
e = e.replace(/\n/g,'<br />');
e = e.replace(/\r/g,'<br />');
e = e.replace(/\n/g, '<br />');
e = e.replace(/\r/g, '<br />');
var prompt = '',
ok = 'OK',
@ -57,8 +58,8 @@
if (f.type === 'prompt') {
prompt =
'<div class="dialog-prompt">'+
'<input id="dialog-input-'+f.newid+'" type="text" ' + (f.params.value ? 'value="' + f.params.value + '"' : '') + ' />'+
'<div class="dialog-prompt">' +
'<input id="dialog-input-' + f.newid + '" type="text" ' + (f.params.value ? 'value="' + f.params.value + '"' : '') + ' />' +
'</div>';
}
@ -78,40 +79,37 @@
buttons = '<div class="dialog-buttons">';
if (f.type === 'alert') {
buttons +=
'<button id="alert-ok-'+f.newid+'">'+ok+'</button>';
}
else if (f.type === 'quiz') {
'<button id="alert-ok-' + f.newid + '">' + ok + '</button>';
} else if (f.type === 'quiz') {
if (f.params.button_1) {
buttons +=
'<button class="quiz-button" id="'+f.type+'-ok1-'+f.newid+'">'+f.params.button_1+'</button>';
'<button class="quiz-button" id="' + f.type + '-ok1-' + f.newid + '">' + f.params.button_1 + '</button>';
}
if (f.params.button_2) {
buttons +=
'<button class="quiz-button" id="'+f.type+'-ok2-'+f.newid+'">'+f.params.button_2+'</button>';
'<button class="quiz-button" id="' + f.type + '-ok2-' + f.newid + '">' + f.params.button_2 + '</button>';
}
if (f.params.button_3) {
buttons +=
'<button class="quiz-button" id="'+f.type+'-ok3-'+f.newid+'">'+f.params.button_3+'</button>';
'<button class="quiz-button" id="' + f.type + '-ok3-' + f.newid + '">' + f.params.button_3 + '</button>';
}
if (f.params.button_cancel) {
buttons +=
'<button id="'+f.type+'-cancel-'+f.newid+'" class="cancel">'+f.params.button_cancel+'</button>';
'<button id="' + f.type + '-cancel-' + f.newid + '" class="cancel">' + f.params.button_cancel + '</button>';
}
}
else if (f.type === 'prompt' || f.type === 'confirm') {
} else if (f.type === 'prompt' || f.type === 'confirm') {
if (f.params.reverseButtons) {
buttons +=
'<button id="'+f.type+'-ok-'+f.newid+'">'+ok+'</button>' +
'<button id="'+f.type+'-cancel-'+f.newid+'" class="cancel">'+cancel+'</button>';
'<button id="' + f.type + '-ok-' + f.newid + '">' + ok + '</button>' +
'<button id="' + f.type + '-cancel-' + f.newid + '" class="cancel">' + cancel + '</button>';
} else {
buttons +=
'<button id="'+f.type+'-cancel-'+f.newid+'" class="cancel">'+cancel+'</button>'+
'<button id="'+f.type+'-ok-'+f.newid+'">'+ok+'</button>';
'<button id="' + f.type + '-cancel-' + f.newid + '" class="cancel">' + cancel + '</button>' +
'<button id="' + f.type + '-ok-' + f.newid + '">' + ok + '</button>';
}
}
buttons += '</div>';
@ -119,28 +117,28 @@
box =
'<div id="smoke-bg-'+f.newid+'" class="smokebg"></div>'+
'<div class="dialog smoke '+classname+'">'+
'<div class="dialog-inner">'+
e+
prompt+
buttons+
'</div>'+
'<div id="smoke-bg-' + f.newid + '" class="smokebg"></div>' +
'<div class="dialog smoke ' + classname + '">' +
'<div class="dialog-inner">' +
e +
prompt +
buttons +
'</div>' +
'</div>';
if (!smoke.init) {
smoke.listen(window,"load", function() {
smoke.finishbuild(e,f,box);
smoke.listen(window, "load", function () {
smoke.finishbuild(e, f, box);
});
} else{
smoke.finishbuild(e,f,box);
} else {
smoke.finishbuild(e, f, box);
}
},
finishbuild: function(e, f, box) {
finishbuild: function (e, f, box) {
var ff = document.getElementById('smoke-out-'+f.newid);
var ff = document.getElementById('smoke-out-' + f.newid);
ff.className = 'smoke-base smoke-visible smoke-' + f.type;
ff.innerHTML = box;
@ -154,7 +152,7 @@
}
smoke.listen(
document.getElementById('smoke-bg-'+f.newid),
document.getElementById('smoke-bg-' + f.newid),
"click",
function () {
smoke.destroy(f.type, f.newid);
@ -190,7 +188,7 @@
finishbuildAlert: function (e, f, box) {
smoke.listen(
document.getElementById('alert-ok-'+f.newid),
document.getElementById('alert-ok-' + f.newid),
"click",
function () {
smoke.destroy(f.type, f.newid);
@ -263,7 +261,7 @@
);
if (a = document.getElementById('quiz-ok1-'+f.newid))
if (a = document.getElementById('quiz-ok1-' + f.newid))
smoke.listen(
a,
"click",
@ -274,7 +272,7 @@
);
if (b = document.getElementById('quiz-ok2-'+f.newid))
if (b = document.getElementById('quiz-ok2-' + f.newid))
smoke.listen(
b,
"click",
@ -285,7 +283,7 @@
);
if (c = document.getElementById('quiz-ok3-'+f.newid))
if (c = document.getElementById('quiz-ok3-' + f.newid))
smoke.listen(
c,
"click",
@ -308,7 +306,7 @@
},
finishbuildPrompt: function (e, f, box) {
var pi = document.getElementById('dialog-input-'+f.newid);
var pi = document.getElementById('dialog-input-' + f.newid);
setTimeout(function () {
pi.focus();
@ -316,7 +314,7 @@
}, 100);
smoke.listen(
document.getElementById('prompt-cancel-'+f.newid),
document.getElementById('prompt-cancel-' + f.newid),
"click",
function () {
smoke.destroy(f.type, f.newid);
@ -325,7 +323,7 @@
);
smoke.listen(
document.getElementById('prompt-ok-'+f.newid),
document.getElementById('prompt-ok-' + f.newid),
"click",
function () {
smoke.destroy(f.type, f.newid);
@ -371,33 +369,32 @@
}, f.timeout);
},
destroy: function (type, id) {
destroy: function (type,id) {
var box = document.getElementById('smoke-out-'+id);
var box = document.getElementById('smoke-out-' + id);
if (type !== 'quiz') {
var okButton = document.getElementById(type+'-ok-'+id);
var okButton = document.getElementById(type + '-ok-' + id);
}
var cancelButton = document.getElementById(type+'-cancel-'+id);
var cancelButton = document.getElementById(type + '-cancel-' + id);
box.className = 'smoke-base';
if (okButton) {
smoke.stoplistening(okButton, "click", function() {});
smoke.stoplistening(okButton, "click", function () {});
document.onkeyup = null;
}
if (type === 'quiz') {
var quiz_buttons = document.getElementsByClassName("quiz-button");
for (var i = 0; i < quiz_buttons.length; i++) {
smoke.stoplistening(quiz_buttons[i], "click", function() {});
smoke.stoplistening(quiz_buttons[i], "click", function () {});
document.onkeyup = null;
}
}
if (cancelButton) {
smoke.stoplistening(cancelButton, "click", function() {});
smoke.stoplistening(cancelButton, "click", function () {});
}
smoke.i = 0;
@ -425,7 +422,7 @@
}
var duration = 5000;
if (g.duration !== 'undefined'){
if (g.duration !== 'undefined') {
duration = g.duration;
}
@ -473,7 +470,7 @@
}
var id = smoke.newdialog();
return smoke.build(e,{type:'prompt',callback:f,params:g,newid:id});
return smoke.build(e, {type: 'prompt', callback: f, params: g, newid: id});
},
listen: function (e, f, g) {
@ -482,7 +479,7 @@
}
if (e.attachEvent) {
return e.attachEvent('on'+f, g);
return e.attachEvent('on' + f, g);
}
return false;
@ -494,7 +491,7 @@
}
if (e.detachEvent) {
return e.detachEvent('on'+f, g);
return e.detachEvent('on' + f, g);
}
return false;
@ -506,13 +503,11 @@
if (typeof module != 'undefined' && module.exports) {
module.exports = smoke;
}
else if (typeof define === 'function' && define.amd) {
define('smoke', [], function() {
} else if (typeof define === 'function' && define.amd) {
define('smoke', [], function () {
return smoke;
});
}
else {
} else {
this.smoke = smoke;
}

View file

@ -15,69 +15,72 @@
Licenced as X11: http://www.kryogenix.org/code/browser/licence.html
This basically means: do what you want with it.
@note
Documentation http://www.kryogenix.org/code/browser/sorttable/
@note
Documentation http://www.kryogenix.org/code/browser/sorttable/
Show the default order
example:
<th class=" sorttable_sorted_reverse">
....<span id="sorttable_sortrevind">&nbsp;&blacktriangle;</span>
<th class=" sorttable_sorted">
....<span id="sorttable_sortfwdind">&nbsp;&nbsp;&#x25BE;</span>
Show the default order
example:
<th class=" sorttable_sorted_reverse">
<th class=" sorttable_sorted">
Sort on date
<td sorttable_customkey="<?=$row_bank['b_date']?>"> // format YYYYMMDD
Sort on date
<td sorttable_customkey="<?=$row_bank['b_date']?>"> // format YYYYMMDD
force as numeric (normally useless):
<th class="sorttable_numeric">Part number</th>
force as numeric (normally useless):
<th class="sorttable_numeric">Part number</th>
To avoid the sort on the last row, use tfoot
Column to ignore : <th class="sorttable_nosort">
To avoid the sort on the last row, use tfoot
*/
*/
var stIsIE = /*@cc_on!@*/false;
sorttable = {
init: function() {
var sorttable = {
init: function () {
// quit if this function has already been called
if (arguments.callee.done) return;
if (arguments.callee.done)
return;
// flag this function so we don't do the same thing twice
arguments.callee.done = true;
// kill the timer
if (_timer) clearInterval(_timer);
if (_timer)
clearInterval(_timer);
if (!document.createElement || !document.getElementsByTagName) return;
if (!document.createElement || !document.getElementsByTagName)
return;
sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/;
forEach(document.getElementsByTagName('table'), function(table) {
forEach(document.getElementsByTagName('table'), function (table) {
if (table.className.search(/\bsortable\b/) != -1) {
sorttable.makeSortable(table);
}
});
},
makeSortable: function(table) {
makeSortable: function (table) {
if (table.getElementsByTagName('thead').length == 0) {
// table doesn't have a tHead. Since it should have, create one and
// put the first table row in it.
the = document.createElement('thead');
the.appendChild(table.rows[0]);
table.insertBefore(the,table.firstChild);
table.insertBefore(the, table.firstChild);
}
// Safari doesn't support table.tHead, sigh
if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0];
if (table.tHead == null)
table.tHead = table.getElementsByTagName('thead')[0];
if (table.tHead.rows.length != 1) return; // can't cope with two header rows
if (table.tHead.rows.length != 1)
return; // can't cope with two header rows
// Sorttable v1 put rows with a class of "sortbottom" at the bottom (as
// "total" rows, for example). This is B&R, since what you're supposed
// to do is put them in a tfoot. So, if there are sortbottom rows,
// for backwards compatibility, move them to tfoot (creating it if needed).
sortbottomrows = [];
for (var i=0; i<table.rows.length; i++) {
for (var i = 0; i < table.rows.length; i++) {
if (table.rows[i].className.search(/\bsortbottom\b/) != -1) {
sortbottomrows[sortbottomrows.length] = table.rows[i];
}
@ -88,28 +91,47 @@ sorttable = {
tfo = document.createElement('tfoot');
table.appendChild(tfo);
}
for (var i=0; i<sortbottomrows.length; i++) {
for (var i = 0; i < sortbottomrows.length; i++) {
tfo.appendChild(sortbottomrows[i]);
}
delete sortbottomrows;
}
// work through each column and calculate its type
headrow = table.tHead.rows[0].cells;
for (var i=0; i<headrow.length; i++) {
var headrow = table.tHead.rows[0].cells;
for (var i = 0; i < headrow.length; i++) {
// manually override the type with a sorttable_type attribute
if (!headrow[i].className.match(/\bsorttable_nosort\b/)) { // skip this col
mtch = headrow[i].className.match(/\bsorttable_([a-z0-9]+)\b/);
if (mtch) { override = mtch[1]; }
if (mtch && typeof sorttable["sort_"+override] == 'function') {
headrow[i].sorttable_sortfunction = sorttable["sort_"+override];
if (mtch) {
override = mtch[1];
}
if (mtch && typeof sorttable["sort_" + override] == 'function') {
headrow[i].sorttable_sortfunction = sorttable["sort_" + override];
} else {
headrow[i].sorttable_sortfunction = sorttable.guessType(table,i);
headrow[i].sorttable_sortfunction = sorttable.guessType(table, i);
}
//--------- if already sorted , add a icon but only if the icon is not yet there ----------------
if (headrow[i].className.search(/\bsorttable_sorted_reverse\b/) != -1 && headrow[i].innerHTML.search(/\bsorttable_sortrevind\b/)==-1) {
sortrevind = document.createElement('span');
sortrevind.id = "sorttable_sortrevind";
sortrevind.innerHTML = '<img src="image/down.gif">';
headrow[i].appendChild(sortrevind);
}
if (headrow[i].className.search(/\bsorttable_sorted\b/) != -1 && headrow[i].innerHTML.search(/\bsorttable_sortfwdind\b/)==-1) {
sortfwdind = document.createElement('span');
sortfwdind.id = "sorttable_sortfwdind";
sortfwdind.innerHTML = '<img src="image/up.gif">';
headrow[i].appendChild(sortfwdind);
}
// make it clickable to sort
headrow[i].sorttable_columnindex = i;
headrow[i].sorttable_tbody = table.tBodies[0];
dean_addEvent(headrow[i],"click", function(e) {
dean_addEvent(headrow[i], "click", function (e) {
if (this.className.search(/\bsorttable_sorted\b/) != -1) {
// if we're already sorted by this column, just
@ -120,7 +142,8 @@ sorttable = {
this.removeChild(document.getElementById('sorttable_sortfwdind'));
sortrevind = document.createElement('span');
sortrevind.id = "sorttable_sortrevind";
sortrevind.innerHTML = stIsIE ? '&nbsp<font face="webdings">5</font>' : '&nbsp;&#x25B4;';
// sortrevind.innerHTML = stIsIE ? '&nbsp<font face="webdings">5</font>' : '&nbsp;&#x25B4;';
sortrevind.innerHTML = '<img src="image/down.gif">';
this.appendChild(sortrevind);
return;
}
@ -133,28 +156,34 @@ sorttable = {
this.removeChild(document.getElementById('sorttable_sortrevind'));
sortfwdind = document.createElement('span');
sortfwdind.id = "sorttable_sortfwdind";
sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
// sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
sortfwdind.innerHTML = '<img src="image/up.gif">';
this.appendChild(sortfwdind);
return;
}
// remove sorttable_sorted classes
theadrow = this.parentNode;
forEach(theadrow.childNodes, function(cell) {
forEach(theadrow.childNodes, function (cell) {
if (cell.nodeType == 1) { // an element
cell.className = cell.className.replace('sorttable_sorted_reverse','');
cell.className = cell.className.replace('sorttable_sorted','');
cell.className = cell.className.replace('sorttable_sorted_reverse', '');
cell.className = cell.className.replace('sorttable_sorted', '');
}
});
sortfwdind = document.getElementById('sorttable_sortfwdind');
if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); }
if (sortfwdind) {
sortfwdind.parentNode.removeChild(sortfwdind);
}
sortrevind = document.getElementById('sorttable_sortrevind');
if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); }
if (sortrevind) {
sortrevind.parentNode.removeChild(sortrevind);
}
this.className += ' sorttable_sorted';
sortfwdind = document.createElement('span');
sortfwdind.id = "sorttable_sortfwdind";
sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
// sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
sortfwdind.innerHTML = '<img src="image/up.gif">';
this.appendChild(sortfwdind);
// build an array to sort. This is a Schwartzian transform thing,
@ -164,7 +193,7 @@ sorttable = {
var row_array = [];
var col = this.sorttable_columnindex;
var rows = this.sorttable_tbody.rows;
for (var j=0; j<rows.length; j++) {
for (var j = 0; j < rows.length; j++) {
row_array[row_array.length] = [sorttable.getInnerText(rows[j].cells[col]), rows[j]];
}
/* If you want a stable sort, uncomment the following line */
@ -173,20 +202,35 @@ sorttable = {
row_array.sort(this.sorttable_sortfunction);
tb = this.sorttable_tbody;
for (var j=0; j<row_array.length; j++) {
for (var j = 0; j < row_array.length; j++) {
tb.appendChild(row_array[j][1]);
}
delete row_array;
// Highlight odd and even rows properly
sorttable.highlight_body(table);
});
}
}
},
guessType: function(table, column) {
/**
* alternate properly the rows of the table,
* @param {DOMNode} p_table sorted table
*/
highlight_body:function(p_table) {
var nb_row=p_table.rows;
var e=0;
for (e=1;e<nb_row.length;e++) {
if (e % 2 == 0 ) {
if ( nb_row[e].className=="odd" ) nb_row[e].className="even";
} else {
if ( nb_row[e].className=="even" ) nb_row[e].className="odd";
}
}
},
guessType: function (table, column) {
// guess the type of a column based on its first non-blank row
sortfn = sorttable.sort_alpha;
for (var i=0; i<table.tBodies[0].rows.length; i++) {
for (var i = 0; i < table.tBodies[0].rows.length; i++) {
text = sorttable.getInnerText(table.tBodies[0].rows[i].cells[column]);
if (text != '') {
if (text.match(/^-?[<5B>$<24>]?[\d,.]+%?$/)) {
@ -215,32 +259,28 @@ sorttable = {
}
return sortfn;
},
getInnerText: function(node) {
getInnerText: function (node) {
// gets the text we want to use for sorting for a cell.
// strips leading and trailing whitespace.
// this is *not* a generic getInnerText function; it's special to sorttable.
// for example, you can override the cell text with a customkey attribute.
// it also gets .value for <input> fields.
if (!node) return "";
if (!node)
return "";
hasInputs = (typeof node.getElementsByTagName == 'function') &&
node.getElementsByTagName('input').length;
if (node.getAttribute("sorttable_customkey") != null) {
return node.getAttribute("sorttable_customkey");
}
else if (typeof node.textContent != 'undefined' && !hasInputs) {
} else if (typeof node.textContent != 'undefined' && !hasInputs) {
return node.textContent.replace(/^\s+|\s+$/g, '');
}
else if (typeof node.innerText != 'undefined' && !hasInputs) {
} else if (typeof node.innerText != 'undefined' && !hasInputs) {
return node.innerText.replace(/^\s+|\s+$/g, '');
}
else if (typeof node.text != 'undefined' && !hasInputs) {
} else if (typeof node.text != 'undefined' && !hasInputs) {
return node.text.replace(/^\s+|\s+$/g, '');
}
else {
} else {
switch (node.nodeType) {
case 3:
if (node.nodeName.toLowerCase() == 'input') {
@ -262,66 +302,87 @@ sorttable = {
}
}
},
reverse: function(tbody) {
reverse: function (tbody) {
// reverse the rows in a tbody
newrows = [];
for (var i=0; i<tbody.rows.length; i++) {
var newrows = [];
for (var i = 0; i < tbody.rows.length; i++) {
newrows[newrows.length] = tbody.rows[i];
}
for (var i=newrows.length-1; i>=0; i--) {
for (var i = newrows.length - 1; i >= 0; i--) {
tbody.appendChild(newrows[i]);
}
delete newrows;
},
/* sort functions
each sort function takes two parameters, a and b
you are comparing a[0] and b[0] */
sort_numeric: function(a,b) {
var aa = parseFloat(a[0].replace(/[^0-9.-]/g,''));
if (isNaN(aa)) aa = 0;
var bb = parseFloat(b[0].replace(/[^0-9.-]/g,''));
if (isNaN(bb)) bb = 0;
return aa-bb;
sort_numeric: function (a, b) {
var aa = parseFloat(a[0].replace(/[^0-9.-]/g, ''));
if (isNaN(aa))
aa = 0;
var bb = parseFloat(b[0].replace(/[^0-9.-]/g, ''));
if (isNaN(bb))
bb = 0;
return aa - bb;
},
sort_alpha: function(a,b) {
if (a[0]==b[0]) return 0;
if (a[0]<b[0]) return -1;
sort_alpha: function (a, b) {
if (a[0] == b[0])
return 0;
if (a[0] < b[0])
return -1;
return 1;
},
sort_ddmm: function(a,b) {
sort_ddmm: function (a, b) {
mtch = a[0].match(sorttable.DATE_RE);
y = mtch[3]; m = mtch[2]; d = mtch[1];
if (m.length == 1) m = '0'+m;
if (d.length == 1) d = '0'+d;
dt1 = y+m+d;
y = mtch[3];
m = mtch[2];
d = mtch[1];
if (m.length == 1)
m = '0' + m;
if (d.length == 1)
d = '0' + d;
dt1 = y + m + d;
mtch = b[0].match(sorttable.DATE_RE);
y = mtch[3]; m = mtch[2]; d = mtch[1];
if (m.length == 1) m = '0'+m;
if (d.length == 1) d = '0'+d;
dt2 = y+m+d;
if (dt1==dt2) return 0;
if (dt1<dt2) return -1;
y = mtch[3];
m = mtch[2];
d = mtch[1];
if (m.length == 1)
m = '0' + m;
if (d.length == 1)
d = '0' + d;
dt2 = y + m + d;
if (dt1 == dt2)
return 0;
if (dt1 < dt2)
return -1;
return 1;
},
sort_mmdd: function(a,b) {
sort_mmdd: function (a, b) {
mtch = a[0].match(sorttable.DATE_RE);
y = mtch[3]; d = mtch[2]; m = mtch[1];
if (m.length == 1) m = '0'+m;
if (d.length == 1) d = '0'+d;
dt1 = y+m+d;
y = mtch[3];
d = mtch[2];
m = mtch[1];
if (m.length == 1)
m = '0' + m;
if (d.length == 1)
d = '0' + d;
dt1 = y + m + d;
mtch = b[0].match(sorttable.DATE_RE);
y = mtch[3]; d = mtch[2]; m = mtch[1];
if (m.length == 1) m = '0'+m;
if (d.length == 1) d = '0'+d;
dt2 = y+m+d;
if (dt1==dt2) return 0;
if (dt1<dt2) return -1;
y = mtch[3];
d = mtch[2];
m = mtch[1];
if (m.length == 1)
m = '0' + m;
if (d.length == 1)
d = '0' + d;
dt2 = y + m + d;
if (dt1 == dt2)
return 0;
if (dt1 < dt2)
return -1;
return 1;
},
shaker_sort: function(list, comp_func) {
shaker_sort: function (list, comp_func) {
// A stable sort function to allow multi-level sorting of data
// see: http://en.wikipedia.org/wiki/Cocktail_sort
// thanks to Joseph Nahmias
@ -329,21 +390,26 @@ sorttable = {
var t = list.length - 1;
var swap = true;
while(swap) {
while (swap) {
swap = false;
for(var i = b; i < t; ++i) {
if ( comp_func(list[i], list[i+1]) > 0 ) {
var q = list[i]; list[i] = list[i+1]; list[i+1] = q;
for (var i = b; i < t; ++i) {
if (comp_func(list[i], list[i + 1]) > 0) {
var q = list[i];
list[i] = list[i + 1];
list[i + 1] = q;
swap = true;
}
} // for
t--;
if (!swap) break;
if (!swap)
break;
for(var i = t; i > b; --i) {
if ( comp_func(list[i], list[i-1]) < 0 ) {
var q = list[i]; list[i] = list[i-1]; list[i-1] = q;
for (var i = t; i > b; --i) {
if (comp_func(list[i], list[i - 1]) < 0) {
var q = list[i];
list[i] = list[i - 1];
list[i - 1] = q;
swap = true;
}
} // for
@ -374,11 +440,11 @@ if (document.addEventListener) {
sorttable.init(); // call the onload handler
}
};
/*@end @*/
/*@end @*/
/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
var _timer = setInterval(function() {
var _timer = setInterval(function () {
if (/loaded|complete/.test(document.readyState)) {
sorttable.init(); // call the onload handler
}
@ -399,9 +465,11 @@ function dean_addEvent(element, type, handler) {
element.addEventListener(type, handler, false);
} else {
// assign each event handler a unique ID
if (!handler.$$guid) handler.$$guid = dean_addEvent.guid++;
if (!handler.$$guid)
handler.$$guid = dean_addEvent.guid++;
// create a hash table of event types for the element
if (!element.events) element.events = {};
if (!element.events)
element.events = {};
// create a hash table of event handlers for each element/event pair
var handlers = element.events[type];
if (!handlers) {
@ -416,7 +484,8 @@ function dean_addEvent(element, type, handler) {
// assign a global event handler to do all the work
element["on" + type] = handleEvent;
}
};
}
;
// a counter used to create unique IDs
dean_addEvent.guid = 1;
@ -429,7 +498,8 @@ function removeEvent(element, type, handler) {
delete element.events[type][handler.$$guid];
}
}
};
}
;
function handleEvent(event) {
var returnValue = true;
@ -445,18 +515,20 @@ function handleEvent(event) {
}
}
return returnValue;
};
}
;
function fixEvent(event) {
// add W3C standard event methods
event.preventDefault = fixEvent.preventDefault;
event.stopPropagation = fixEvent.stopPropagation;
return event;
};
fixEvent.preventDefault = function() {
}
;
fixEvent.preventDefault = function () {
this.returnValue = false;
};
fixEvent.stopPropagation = function() {
fixEvent.stopPropagation = function () {
this.cancelBubble = true;
}
@ -465,11 +537,11 @@ fixEvent.stopPropagation = function() {
forEach, version 1.0
Copyright 2006, Dean Edwards
License: http://www.opensource.org/licenses/mit-license.php
*/
*/
// array-like enumeration
if (!Array.forEach) { // mozilla already supports this
Array.forEach = function(array, block, context) {
Array.forEach = function (array, block, context) {
for (var i = 0; i < array.length; i++) {
block.call(context, array[i], i, array);
}
@ -477,7 +549,7 @@ if (!Array.forEach) { // mozilla already supports this
}
// generic enumeration
Function.prototype.forEach = function(object, block, context) {
Function.prototype.forEach = function (object, block, context) {
for (var key in object) {
if (typeof this.prototype[key] == "undefined") {
block.call(context, object[key], key, object);
@ -486,14 +558,14 @@ Function.prototype.forEach = function(object, block, context) {
};
// character enumeration
String.forEach = function(string, block, context) {
Array.forEach(string.split(""), function(chr, index) {
String.forEach = function (string, block, context) {
Array.forEach(string.split(""), function (chr, index) {
block.call(context, chr, index, string);
});
};
// globally resolve forEach enumeration
var forEach = function(object, block, context) {
var forEach = function (object, block, context) {
if (object) {
var resolve = Object; // default
if (object instanceof Function) {

View file

@ -37,21 +37,17 @@ function todo_list_show(p_id)
{
var gDossier = $('gDossier').value;
var action = new Ajax.Request(
'ajax_todo_list.php',
'ajax_misc.php',
{
method: 'get',
parameters:
{'show':
1, 'id':
p_id, 'gDossier':
gDossier
},
{'show':1, 'id':p_id, 'gDossier':gDossier,op:'todo_list'},
onFailure: todo_list_show_error,
onSuccess: function (req)
{
try
{
var todo_div=create_div({id:'todo_list_div'+p_id,cssclass:'add_todo_list',drag:1});
var todo_div=create_div({id:'todo_list_div'+p_id,cssclass:'add_todo_list'});
@ -105,10 +101,10 @@ function todo_list_remove(p_ctl)
var gDossier = $('gDossier').value;
var action = new Ajax.Request(
'ajax_todo_list.php',
'ajax_misc.php',
{
method: 'get',
parameters:{'del':1, 'id':p_ctl, 'gDossier':gDossier}
parameters:{'del':1, 'id':p_ctl, 'gDossier':gDossier,op:'todo_list'}
}
);
return false;
@ -119,7 +115,8 @@ function todo_list_save(p_form)
try {
var form=$('todo_form_'+p_form);
var json=form.serialize(true);
new Ajax.Request('ajax_todo_list.php',
json['op']="todo_list";
new Ajax.Request('ajax_misc.php',
{
method:'get',
parameters:json,
@ -136,6 +133,10 @@ function todo_list_save(p_form)
var rec = req.responseText;
alert_box('erreur :' + rec);
}
if ( getNodeText(tl_id[0]) == '0') {
smoke.alert('Note est vide');
return;
}
var tr = $('tr'+p_form);
if ( p_form == 0)
{
@ -155,7 +156,8 @@ function todo_list_save(p_form)
);
}
catch (e) {
console.log(e.message);
if ( console) console.log(e.message);
alert_box('todo_list_save '+e.message);
return false;
}
return false;
@ -198,12 +200,13 @@ function todo_list_share(p_note, p_dossier)
{
waiting_node();
new Ajax.Request(
'ajax_todo_list.php',
'ajax_misc.php',
{
method: "get",
parameters: {"act": 'shared_note',
"todo_id": p_note,
"gDossier": p_dossier
"gDossier": p_dossier,
op:'todo_list'
},
onSuccess: function (p_xml) {
try {
@ -236,10 +239,10 @@ function todo_list_share(p_note, p_dossier)
function todo_list_set_share(note_id,p_login,p_dossier)
{
waiting_node();
new Ajax.Request('ajax_todo_list.php',
new Ajax.Request('ajax_misc.php',
{
method:"get",
parameters: { todo_id:note_id,act:"set_share","gDossier":p_dossier,"login":p_login},
parameters: { todo_id:note_id,act:"set_share","gDossier":p_dossier,"login":p_login,op:'todo_list'},
onSuccess:function() {
remove_waiting_node();
}
@ -249,12 +252,13 @@ function todo_list_set_share(note_id,p_login,p_dossier)
function todo_list_remove_share(note_id,p_login,p_dossier)
{
waiting_node();
new Ajax.Request('ajax_todo_list.php',{
new Ajax.Request('ajax_misc.php',{
parameters : {
'gDossier':p_dossier,
'todo_id':note_id,
'login':p_login,
'act':"remove_share"
'act':"remove_share",
op:'todo_list'
},
method:"get",
onSuccess:function (p_xml) {

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -19,13 +19,13 @@
// Copyright Author Dany De Bontridder danydb@aevalys.eu
require_once '../include/constant.php';
include_once NOALYSS_INCLUDE.'/ac_common.php';
include_once NOALYSS_INCLUDE.'/lib/ac_common.php';
/*! \file
* \brief Login page
*/
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
// Verif if User and Pass match DB
// if no, then redirect to the login page
$rep=new Database();
@ -37,12 +37,13 @@ if (defined('MULTI') && MULTI == 0)
if ( isset ($_POST["p_user"] ) )
{
$g_user=sql_string($_POST["p_user"]);
$g_user=strtolower(sql_string($_POST["p_user"]));
$g_pass=$_POST["p_pass"];
$_SESSION['g_user']=$g_user;
$_SESSION['g_pass']=$g_pass;
/*
* Check repository version
*/
@ -50,10 +51,10 @@ if ( isset ($_POST["p_user"] ) )
if ($version != DBVERSIONREPO)
{
echo alert(_('Version de base de données incorrectes, vous devez mettre à jour'));
echo "<META HTTP-EQUIV=\"REFRESH\" content=\"0;url=admin/setup.php\">";
echo "<META HTTP-EQUIV=\"REFRESH\" content=\"0;url=admin-noalyss.php\">";
exit();
}
include_once NOALYSS_INCLUDE."/class_user.php";
require_once NOALYSS_INCLUDE."/class/user.class.php";
$User=new User($rep);
$User->Check(false,'LOGIN');
if ($g_captcha == true)
@ -87,12 +88,12 @@ else
if ( $version != DBVERSIONREPO)
{
echo alert(_('Version de base de données incorrectes, vous devez mettre à jour'));
echo "<META HTTP-EQUIV=\"REFRESH\" content=\"1;url=admin/setup.php\">";
echo "<META HTTP-EQUIV=\"REFRESH\" content=\"1;url=admin-noalyss.php\">";
exit();
}
include_once ("class_user.php");
include_once ("class/user.class.php");
$User=new User($rep);
$User->Check();

View file

@ -21,12 +21,28 @@
* \brief Logout
*/
require_once '../include/constant.php';
require_once ("ac_common.php");
require_once('class_database.php');
require_once ("lib/ac_common.php");
require_once('lib/database.class.php');
session_unset();
html_page_start("classic");
session_unset();
/* clean Global variable */
if ( isset ($g_user) ) unset ($GLOBAL['g_user']);
if ( isset ($g_pass) ) unset ($GLOBAL['g_pass']);
//
// Clean the possible cookies
//
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
@setcookie($name, '', time()-1000);
@setcookie($name, '', time()-1000, '/');
}
}
echo '<h2 class="info">'._('Vous êtes déconnecté').'</h2>';
echo '<META HTTP-EQUIV="REFRESH" content="0;url=index.html">';

View file

@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright Author Dany De Bontridder danydb@aevalys.eu
include_once("ac_common.php");
include_once("lib/ac_common.php");
html_page_start();
echo '<H1 class="info"> Not Implemented</H1>';
html_page_stop();

View file

@ -18,25 +18,62 @@
*/
require_once '../include/constant.php';
require_once NOALYSS_INCLUDE.'/ac_common.php';
require_once NOALYSS_INCLUDE.'/function_javascript.php';
require_once NOALYSS_INCLUDE.'/class_html_input.php';
require_once NOALYSS_INCLUDE.'/class_dossier.php';
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/class_user.php';
require_once NOALYSS_INCLUDE.'/class_periode.php';
require_once NOALYSS_INCLUDE.'/lib/ac_common.php';
require_once NOALYSS_INCLUDE.'/lib/function_javascript.php';
require_once NOALYSS_INCLUDE.'/lib/html_input.class.php';
require_once NOALYSS_INCLUDE.'/lib/icon_action.class.php';
require_once NOALYSS_INCLUDE.'/class/dossier.class.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
require_once NOALYSS_INCLUDE.'/class/user.class.php';
require_once NOALYSS_INCLUDE.'/class/periode.class.php';
$http=new HttpInput();
/*
* Check if the user is still connected
*/
if ( ! isset ($_SESSION['g_user'] ) )
{
echo "<h2>"._('Vous êtes déconnecté')."</h2>";
$backurl=$_SERVER['REQUEST_URI'];
$url="index.php?".http_build_query(array('reconnect'=>1,'backurl'=>urlencode($backurl)));
redirect($url);
exit();
}
html_page_start($_SESSION['g_theme']);
echo '<div style="float:left;">';
?>
<script>
/**
* All the onload must be here otherwise the other will overwritten
* @returns {undefined}
*/
window.onload=function ()
{
create_anchor_up();
init_scroll();
sorttable.init
}
</script>
<?php
global $g_user;
if ( basename($_GET['ajax']) == 'ajax_history.php' )
$cn=Dossier::connect();
$g_user=new User($cn);
$g_user->Check();
$g_user->check_dossier(Dossier::id());
if ( basename($_GET['op']) == 'history' )
{
$href=dossier::get();
$cn=new Database(dossier::id());
$exercice=$http->get("exercice","number",0);
/* current year */
$g_user=new User($cn);
if ($exercice == 0 ) {
$exercice=$g_user->get_exercice();
}
/* get date limit */
$periode=new Periode($cn);

View file

@ -20,10 +20,13 @@
/*! \file
* \brief Search module
*/
define('ALLOWED',TRUE);
require_once '../include/constant.php';
require_once NOALYSS_INCLUDE.'/class_dossier.php';
include_once NOALYSS_INCLUDE.'/ac_common.php';
require_once NOALYSS_INCLUDE.'/class_acc_ledger.php';
require_once NOALYSS_INCLUDE.'/class/dossier.class.php';
include_once NOALYSS_INCLUDE.'/lib/ac_common.php';
require_once NOALYSS_INCLUDE.'/class/acc_ledger.class.php';
require_once NOALYSS_INCLUDE.'/class/acc_ledger_search.class.php';
require_once NOALYSS_INCLUDE.'/lib/icon_action.class.php';
html_page_start($_SESSION['g_theme']);
@ -32,11 +35,11 @@ load_all_script();
$gDossier=dossier::id();
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
/* Admin. Dossier */
$cn=new Database($gDossier);
include_once NOALYSS_INCLUDE.'/class_user.php';
$cn=Dossier::connect();
include_once NOALYSS_INCLUDE.'/class/user.class.php';
global $g_user;
$g_user=new User($cn);
@ -54,15 +57,30 @@ if ( $act=='X')
exit();
}
// display a search box
$ledger=new Acc_Ledger($cn,0);
$ledger->type='ALL';
$search_box=$ledger->search_form('ALL',1);
?>
<script>
/**
* All the onload must be here otherwise the other will overwritten
* @returns {undefined}
*/
window.onload=function ()
{
create_anchor_up();
init_scroll();
sorttable.init
}
</script>
<?php
$ledger=new Acc_Ledger_Search('ALL');
$search_box=$ledger->search_form();
echo '<div class="content">';
echo '<form method="GET">';
echo $search_box;
echo HtmlInput::submit("viewsearch",_("Recherche"));
$button_search=new IButton("button", _('Filtre'));
$button_search->javascript=$ledger->build_search_filter();
echo $button_search->input();
?>
<input type="button" class="smallbutton" onclick="window.close()" value="<?php echo _('Fermer')?>">

View file

@ -7,6 +7,18 @@
src: url('image/OpenSansRegular.eot');
src: local('OpenSansRegular'), url('image/OpenSansRegular.woff') format('woff'), url('image/OpenSansRegular.ttf') format('truetype');
}
@font-face {
font-family: 'fontello';
src: url('image/fontello/fontello.eot?18582275');
src: url('image/fontello/fontello.eot?18582275#iefix') format('embedded-opentype'),
url('image/fontello/fontello.woff?18582275') format('woff'),
url('image/fontello/fontello.ttf?18582275') format('truetype'),
url('image/fontello/fontello.svg?18582275#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
/* use this class to attach this font to any element i.e. <p class="fontsforweb_fontid_38327">Text with this font applied</p> */
.fontsforweb_fontid_38327 {
font-family: 'OpenSansRegular' !important;
@ -146,15 +158,18 @@ div.u_tool #name {
}
td.tool a.mtitle {
text-decoration:none;
display:inline;
color: #0000FF;
display:block;
height: 100%;
width: 100%;
}
td.tool a.mtitle:hover {
text-decoration:none;
display:inline;
color: #00008B;
background-color:#5D90CD;
display:block;
height: 100%;
width: 100%;
}
#top {
@ -162,6 +177,7 @@ td.tool a.mtitle:hover {
margin-bottom: 40px;
width: 100%;
}
#module {
position:absolute;
top:0px;
@ -287,12 +303,13 @@ td.mtitle {
text-align:center;
width:250px;
height :30px;
border-radius:10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
background: -moz-linear-gradient(top, rgba(53,106,160,0.79) 0%, rgba(53,106,160,0.79) 19%, rgba(53,106,160,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(53,106,160,0.79)), color-stop(19%,rgba(53,106,160,0.79)), color-stop(100%,rgba(53,106,160,1))); /* Chrome,Safari4+ */
border-radius:5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
margin: 0px;
padding: 0px;
background: -moz-linear-gradient(top, rgba(53,106,160,0.79) 0%, rgba(53,106,160,1) 19%, rgba(53,106,160,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(53,106,160,0.79)), color-stop(19%,rgba(53,106,160,1)), color-stop(100%,rgba(53,106,160,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(53,106,160,0.79) 0%,rgba(53,106,160,0.79) 19%,rgba(53,106,160,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(53,106,160,0.79) 0%,rgba(53,106,160,0.79) 19%,rgba(53,106,160,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(53,106,160,0.79) 0%,rgba(53,106,160,0.79) 19%,rgba(53,106,160,1) 100%); /* IE10+ */
@ -308,6 +325,9 @@ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c9356aa0', e
}
td.mtitle a.mtitle {
color : white;
display:block;
height: 100%;
width: 100%;
}
td.msubtitle {
@ -356,9 +376,9 @@ td.cell{
td.selectedcell{
/* border-color:#0000FF;*/
border-radius:10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius:5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
font-weight: bold;
/* background:#5D90CD ;*/
color:#FFFFFF;
@ -400,6 +420,8 @@ td.selectedcell a.mtitle,div.content td.selectedcell a.mtitle {
text-decoration:none;
display:block;
color:#FFFFFF;
height: 100%;
width: 100%;
}
a.dossier {
text-decoration:none;
@ -979,7 +1001,16 @@ div.topmenu {
font-size:0.80rem;
}
@media only screen and (max-width:320px) {
div.topmenu {
margin-top: 44px;
}
}
@media only screen and (max-width:800px) {
div.topmenu{
margin-top: 44px;
}
}
#dossier h2{
color:#00008B;
display:inline;
@ -1140,32 +1171,31 @@ span.remain {
}
#predef_form {
margin-left:35%;
width:60%;
position:absolute;
z-index:2
}
@media only screen and (min-width: 955px) {
@media only screen and (min-width: 1155px) {
div#jrn_name_div
{
float: right;
margin-right:150px;
}
#predef_form {
margin-left:35%;
width:60%;
position:absolute;
z-index:2
}
}
@media only screen and (max-width: 955px) {
@media only screen and (max-width: 1155px) {
div#jrn_name_div
{
display: none;
}
#predef_form {
}
.visible_gt1155 {
display:none;
}
}
@media only screen and (max-width: 900px) {
#predef_form {
display: none;
}
}
#direct
{
@ -1180,7 +1210,7 @@ span.remain {
div#wait_box
{
background-color:#DDE6FF;
font-family: arial,verdana,helvetica,arial,sans-serif;
text-align: center;
width: 300px;
padding:0px;
margin:0px;
@ -1191,9 +1221,12 @@ div#wait_box
top:30%;
border:1px solid #00008B;
width: 260px;
opacity: 0.8;
border-radius: 5px;
}
#wait_box h2
{
margin-top:2px;
/* color:#000000; */
text-align:center;
/* width: 50%; */
@ -1229,44 +1262,13 @@ a.line:hover,div_content a.line
color: #FFFFFF;
background-color:#336699;
}
#close_div
{
color:white;
text-decoration:none;
margin-left: 2px;
margin-right:6px;
margin-top:0px;
font-size:14px;
font-size:1rem;
cursor: pointer;
border:0px;
}
#close_div:hover
{
background-color: #F93;
}
#popmeout
{
background-color:#FFFFFF;
color:#0000FF;
text-decoration:none;
border:1px solid #0000FF;
margin-left: 2px;
margin-right:18px;
font-size:12px;
font-size: 0.75rem;
}
#popmeout:hover
{
background-color: #F93;
}
table.table_large tr.odd ,table.table_large tr.even {
height:32px;
}
#calc1
{
position:absolute;
position:fixed;
display:block;
top:30px;
left:150px;
@ -1292,6 +1294,12 @@ a.nav:hover,div.content a.nav:hover,div.redcontent a.nav:hover {
background-color:#00008B;
color:#FFFFFF;
}
img:hover {
cursor:inherit ;
background-color:white;
color: transparent;
}
#dossier {
display:inline;
float:left;
@ -1311,6 +1319,14 @@ a.nav:hover,div.content a.nav:hover,div.redcontent a.nav:hover {
font-variant:small-caps;
font-weight: bolder;
}
}
div.foldercontent {
font-size:14px;
font-size:0.95rem;
width: 95%;
margin-left: 2.5%;
margin-top:30px;
}
@media only screen and (max-width: 955px) {
#dossier {
@ -1329,6 +1345,7 @@ div.foldercontent {
font-size:0.95rem;
width: 95%;
margin-left: 2.5%;
margin-top:7%;
}
h1.title {
@ -1350,6 +1367,7 @@ h2.title {
background: -o-linear-gradient(top, #606c88 0%,#3f4c6b 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #606c88 0%,#3f4c6b 100%); /* IE10+ */
background: linear-gradient(to bottom, #606c88 0%,#3f4c6b 100%); /* W3C */
border-radius: 3px;
}
h3.title {
color: #0000FF;
@ -1389,6 +1407,9 @@ div.myfieldset
div.menu2 a.mtitle{
font-size:13.6px;
font-size:0.80rem;
display:block;
height: 100%;
width: 100%;
}
div.menu3 {
font-size:13.6px;
@ -1471,6 +1492,21 @@ div#modele_op_div{
min-width: 75%;
box-shadow: 10px 10px 5px #888888;
}
div#preference_div {
background-color:#e4e7ed;
font-family: Arial, Helvetica, "Liberation Sans", FreeSans, sans-serif;
font-family: 'openSansRegular';
padding:0px;
margin:0px;
overflow:hidden;
z-index:3;
position:absolute;
border:1px solid #00008B;
top:32px;
top:2rem;
left:20%;
width:50%;
}
}
@media only screen and (max-width: 955px) {
div.name {
@ -1494,6 +1530,21 @@ div#modele_op_div{
width: 85%;
box-shadow: 10px 10px 5px #888888;
}
div#preference_div {
background-color:#e4e7ed;
font-family: Arial, Helvetica, "Liberation Sans", FreeSans, sans-serif;
font-family: 'openSansRegular';
padding:0px;
margin:0px;
overflow:hidden;
z-index:3;
position:absolute;
border:1px solid #00008B;
top:32px;
top:2rem;
left:1%;
width:98%;
}
}
div#box_search_card {
@ -1506,7 +1557,7 @@ div.bxbutton
float:right;
height:10px;
display:block;
margin-top:0.48%;
margin-top:0.30%;
margin-right:0.48%;
}
div.inner_box tr.odd {
@ -1530,21 +1581,7 @@ div#bookmark_div {
left:30%;
width:40%;
}
div#preference_div {
background-color:#e4e7ed;
font-family: Arial, Helvetica, "Liberation Sans", FreeSans, sans-serif;
font-family: 'openSansRegular';
padding:0px;
margin:0px;
overflow:hidden;
z-index:3;
position:absolute;
border:1px solid #00008B;
top:32px;
top:2rem;
left:20%;
width:50%;
}
#error_div{
position:absolute;
border:1px solid #000000;
@ -1642,7 +1679,6 @@ fieldset {
ul.tabs {
padding-top: 15px;
display:block;
border-bottom: 1px solid #879ed4;
padding-left: 2px;
list-style: none;
margin-left:2px;
@ -1666,23 +1702,28 @@ li.tabs_selected {
border-top-right-radius: 10px;
border:1px #879ed4 solid;
font-weight: bold;
float:left;
padding:5px;
}
li.tabs {
display:inline;
background-color: inherit;
color:inherit;margin-left: 0px;
padding: 0px;
padding: 5px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
border:1px #879ed4 solid;
float:left;
background: whitesmoke;
margin-top:2px;
}
li.tabs:hover {
display:inline;
background-color: lightblue;
color:wheat;margin-left: 2px;
padding: 0px;
padding: 5px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
border:1px #879ed4 solid;
@ -1704,7 +1745,7 @@ li.tabs:hover {
display:inline;
background-color: lightblue;
color:wheat;margin-left: 2px;
padding: 10px 10px 0px 10px;
padding: 15px 7px 0px 10px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
border:1px #879ed4 solid;
@ -1814,7 +1855,7 @@ hr {
/******************************************************************************
* Hightlight row in a table
******************************************************************************/
tr.highlight{
li.highlight,tr.highlight{
font-weight: bolder;
font-size:14px;
background-color: navy;
@ -1823,7 +1864,7 @@ tr.highlight{
border-style: solid;
border-color: blue;
}
tr.highlight a{
li.highlight a,tr.highlight a{
color:white !important;
}
@ -2103,3 +2144,164 @@ button.cancel {
.queue{
display:none;
}
/*
* Menu selected when configuring the profile
*/
td.selectedmenu {
background-color: beige;
font-weight: bolder;
}
/*
* Hide element for small screen
*/
.visible_gt800 {
}
.field_follow_up
{
margin-top:1px;
white-space: -moz-pre-wrap;
white-space: pre-wrap;
border:1px solid blue;
width:95%;
}
@media only screen and (max-width:850px) {
.visible_gt800 {
display:none;
}
div#bookmark_div {
padding:2px;
margin:0px;
overflow:hidden;
z-index:3;
position:absolute;
border:1px solid #00008B;
top:32px;
top:2rem;
left:5%;
width:90%;
}
}
/**
* go_up
*/
#go_up {
background-color: transparent;
border:0px;
font-size:300%;
box-shadow: none;
color:blue;
}
#go_up a ,#go_up a:visited{
background-image: none;
text-decoration: none;
color:blue;
}
/*
* Summary of operation , contains miscelleneous informations
* before confirming sale , purchase
*/
#summary_op1,#summary_op2
{
float:left;
padding-left: 150px;
}
/*
* Name of the tiers in GESTION
*/
#gestion_title {
float:right;
margin-right: 5%;
font-size:150%;
color :white;
font-variant: small-caps;
background-color: #5D90CD;
padding: 3px 20px 3px 20px;
margin-top:20px;
}
/*
* Style for the Inplace Edit element
*/
span.inplace_edit
{
text-decoration: underline;
cursor: pointer;
}
span.inplace_edit_input
{
text-decoration: none;
font-size: 110%;
cursor: none;
}
/*
* Icon to pop out on the dashboard
*/
#span_cal_div,#span_todo_listg_div,#span_last_operation_box_div,#span_last_operation_management_div {
float:right;
margin-right:5px;
padding-top:0px;
margin-top:0px;
}
/**
* For the icon (font-famillo fontello)
*/
.icon {
font-family: "fontello";
font-weight:normal;
cursor: pointer;
}
.icon:hover {
font-family: "fontello";
}
/**
* Icon in the title of Box
*/
div.bxbutton .icon
{
color:white;
text-decoration:none;
margin-left: 6px;
margin-right:6px;
/*! padding-top:10px; */
font-size:14px;
font-size:1rem;
cursor: pointer;
border:0px;
height: 18px;
}
div.bxbutton .icon:hover
{
background-color: white;
color: blue;
}
/**
* progressBar
*/
div.progressbar {
width:300px;
height:30px;
position:fixed;
top:5px;
left:40%;
background-color: white;
color:blue;
z-index:800;
border-color: #596a72;
border-width: 1px;
border-style: solid;
}
#progressValue {
display:block;
width: 0px;
height: 100%;
margin:0px;
padding: 0px;
background-color:darkblue;
color:antiquewhite;
font-weight: bolder;
}

File diff suppressed because it is too large Load diff

View file

@ -11,6 +11,16 @@
.fontsforweb_fontid_38327 {
font-family: 'OpenSansRegular' !important;
}
@font-face {
font-family: 'fontello';
src: url('image/fontello/fontello.eot?18582275');
src: url('image/fontello/fontello.eot?18582275#iefix') format('embedded-opentype'),
url('image/fontello/fontello.woff?18582275') format('woff'),
url('image/fontello/fontello.ttf?18582275') format('truetype'),
url('image/fontello/fontello.svg?18582275#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
BODY {
font-family: Arial, Helvetica, "Liberation Sans" , FreeSans, sans-serif;
@ -147,15 +157,19 @@ div.u_tool #name {
}
td.tool a.mtitle {
text-decoration:none;
display:inline;
color: #0000FF;
display:block;
height: 100%;
width: 100%;
}
td.tool a.mtitle:hover {
text-decoration:none;
display:inline;
color: #00008B;
background-color:#5D90CD;
display:block;
height: 100%;
width: 100%;
}
#top {
@ -163,6 +177,10 @@ td.tool a.mtitle:hover {
margin-bottom: 40px;
width: 100%;
}
@media only screen and (max-width:955px) {
margin-bottom: 70px;
}
#module {
position:absolute;
top:0px;
@ -300,6 +318,9 @@ td.mtitle {
}
td.mtitle a.mtitle {
color : blue;
display: block;
width: 100%;
height: 100%;
}
td.msubtitle {
text-align:center;
@ -972,7 +993,16 @@ div.topmenu {
font-size:0.80rem;
}
@media only screen and (max-width:320px) {
div.topmenu {
margin-top: 44px;
}
}
@media only screen and (max-width:800px) {
div.topmenu{
margin-top: 44px;
}
}
#dossier h2{
color:#00008B;
display:inline;
@ -1128,15 +1158,9 @@ span.remain {
div#jrn_name_div
{
float: right;
margin-right:150px;
}
#predef_form {
margin-left:35%;
width:60%;
position:absolute;
z-index:2
}
@media only screen and (min-width: 955px) {
div#jrn_name_div
@ -1147,10 +1171,6 @@ span.remain {
}
#predef_form {
margin-left:35%;
width:60%;
position:absolute;
z-index:2
}
}
@media only screen and (max-width: 955px) {
@ -1222,44 +1242,14 @@ a.line:hover,div_content a.line
color: #FFFFFF;
background-color:#336699;
}
#close_div
{
color:white;
text-decoration:none;
margin-left: 2px;
margin-right:6px;
margin-top:0px;
font-size:14px;
font-size:1rem;
cursor: pointer;
border:0px;
}
#close_div:hover
{
background-color: #F93;
}
#popmeout
{
background-color:#FFFFFF;
color:#0000FF;
text-decoration:none;
border:1px solid #0000FF;
margin-left: 2px;
margin-right:18px;
font-size:12px;
font-size: 0.75rem;
}
#popmeout:hover
{
background-color: #F93;
}
table.table_large tr.odd ,table.table_large tr.even {
height:32px;
}
#calc1
{
position:absolute;
position:fixed;
display:block;
top:30px;
left:150px;
@ -1305,6 +1295,13 @@ a.nav:hover,div.content a.nav:hover,div.redcontent a.nav:hover {
font-weight: bolder;
}
}
div.foldercontent {
font-size:14px;
font-size:0.95rem;
width: 95%;
margin-left: 2.5%;
margin-top:30px;
}
@media only screen and (max-width: 955px) {
#dossier {
display:inline;
@ -1317,12 +1314,7 @@ a.nav:hover,div.content a.nav:hover,div.redcontent a.nav:hover {
}
}
div.foldercontent {
font-size:14px;
font-size:0.95rem;
width: 95%;
margin-left: 2.5%;
}
h1.title {
color: #0000FF;
@ -1594,6 +1586,17 @@ div.box {
height: 380px;
}
}
@media only screen and (max-width: 1155px) {
div#jrn_name_div
{
display: none;
}
#predef_form {
}
.visible_gt1155 {
display:none;
}
}
div.box table{
border-spacing:0px;
font-size: 95%;
@ -1629,7 +1632,6 @@ fieldset {
ul.tabs {
padding-top: 15px;
display:block;
border-bottom: 1px solid #879ed4;
padding-left: 2px;
list-style: none;
}
@ -1652,6 +1654,9 @@ li.tabs_selected {
border-top-right-radius: 0px;
border:1px #879ed4 solid;
font-weight: bold;
float:left;
padding:5px;
}
li.tabs {
@ -1662,7 +1667,10 @@ li.tabs {
border-top-left-radius: 0px;
border-top-right-radius: 0px;
border:1px #879ed4 solid;
float:left;
margin-top:2px;
padding: 5px;
}
li.tabs:hover {
display:inline;
@ -1801,7 +1809,7 @@ hr {
/******************************************************************************
* Hightlight row in a table
******************************************************************************/
tr.highlight{
li.highlight , tr.highlight{
font-weight: bolder;
font-size:14px;
background-color: #334975 !important;
@ -1810,7 +1818,7 @@ tr.highlight{
border-style: solid;
border-color: blue;
}
tr.highlight a{
li.highlight a, tr.highlight a{
color:white !important;
}
@ -2090,3 +2098,132 @@ button.cancel {
.queue{
display:none;
}
/*
* Menu selected when configuring the profile
*/
td.selectedmenu {
}
.field_follow_up
{
margin-top:1px;
white-space: -moz-pre-wrap;
white-space: pre-wrap;
border:1px solid blue;
width:95%;
}
/**
* go_up
*/
#go_up {
background-color: transparent;
border:0px;
font-size:300%;
box-shadow: none;
color:blue;
}
#go_up a ,#go_up a:visited{
background-image: none;
text-decoration: none;
color:blue;
}
/*
* Summary of operation , contains miscelleneous informations
* before confirming sale , purchase
*/
#summary_op1,#summary_op2
{
position:float;
float:left;
}
/*
* Name of the tiers in GESTION
*/
#gestion_title {
float:right;
margin-right: 25px;
}
/*
* Style for the Inplace Edit element
*/
span.inplace_edit
{
text-decoration: underline;
cursor: pointer;
}
span.inplace_edit_input
{
text-decoration: none;
font-size: 110%;
cursor: none;
}
/*
* Icon to pop out on the dashboard
*/
#span_cal_div,#span_todo_listg_div,#span_last_operation_box_div,#span_last_operation_management_div {
float:right;
margin-right:5px;
padding-top:0px;
margin-top:0px;
}
/**
* For the icon (font-famillo fontello)
*/
.icon {
font-family: "fontello";
font-weight:normal;
cursor: pointer;
}
.icon:hover {
font-family: "fontello";
}
/**
* Icon in the title of Box
*/
div.bxbutton .icon
{
color:white;
text-decoration:none;
margin-left: 6px;
margin-right:6px;
/*! padding-top:10px; */
font-size:14px;
font-size:1rem;
cursor: pointer;
border:0px;
height: 18px;
}
div.bxbutton .icon:hover
{
background-color: white;
color: blue;
}
/**
* progressBar
*/
div.progressbar {
width:300px;
height:30px;
position:fixed;
top:5px;
left:40%;
background-color: white;
color:blue;
z-index:800;
border-color: #596a72;
border-width: 1px;
border-style: solid;
}
#progressValue {
display:block;
width: 0px;
height: 100%;
margin:0px;
padding: 0px;
background-color:darkblue;
color:antiquewhite;
font-weight: bolder;
}

View file

@ -14,12 +14,13 @@ form {
.print {
font-size:10pt;
display: block;
visibility: visible;
}
.noprint {
display:none;
}
.button, .smallbutton{
.button, .smallbutton,.icon{
display:none;
}
div.recherche_form {
@ -32,17 +33,17 @@ table.result {
}
table.result th {
font-size:105%;
font-size:10pt;
font-family:sans-serif;
}
h3,h4 {
font-size:110%;
font-size:12pt;
text-decoration: underline;
font-family:sans-serif;
}
h2 {
font-size:110%;
font-size:12pt;
font-weight:bold;
font-family:sans-serif;
}
@ -53,7 +54,7 @@ div.info {
font-size:10pt;
}
h1.content,h1,h2.info,legend {
font-size:120%;
font-size:12pt;
font-weight:bold;
font-family:sans-serif;
}
@ -257,40 +258,65 @@ a.detail:hover
font-size:10pt;
}
h1.title {
font-size:120%;
font-size:12pt;
font-style: italic;
}
h2.title {
font-size:110%;
font-size:12pt;
font-style: italic;
margin-left: 3em;
}
h3.title {
font-size:110%;
font-size:12pt;
margin-left: 3em;
}
h4.title {
color: blue;
font-size:110%;
margin-left: 3em;
font-size:12pt;
margin-left: 10pt;
text-decoration: underline;
}
h5.title {
color: blue;
font-size:110%;
margin-left: 3em;
font-size:11pt;
margin-left: 10pt;
text-decoration: none;
font-style: italic;
}
/* </style> */
div.myfieldset
{
margin-top: 3em;
margin-left:3em;
margin-right: 3em;
border:lightgrey 2px groove;
margin-top: 20pt;
margin-left:20pt;
margin-right: 20pt;
border:lightgrey 0.5pt groove;
}
#info_div ,div#error_div ,div#close_div{
display:none;
}
p#breakhere {page-break-before: always}
.field_follow_up
{
font-size:9pt;
margin-top:10pt;
word-break: normal;
word-wrap: break-word;
white-space: pre-wrap;
}
.tinybutton {
display:none;
}
/*
* Style for the Inplace Edit element
*/
span.inplace_edit
{
text-decoration: none;
}
span.inplace_edit_input
{
text-decoration: none;
}

View file

@ -18,7 +18,6 @@ a.tmenu:link {
color:white;
}
a.tmenu:visited {
// background-color:black ;
color:#683af2;
color:white;
}

View file

@ -18,24 +18,31 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright Author Dany De Bontridder danydb@aevalys.eu
/* !\file
/*!\file
* \brief this file let you debug and test the different functionnalities, there are 2 important things to do
* It is only a quick and dirty testing. You should use a tool as PHPUNIT for the unit testing
*
* - first do not forget to create the authorized_debug file in the html folder
* - secund the test must adapted to this page : if you do a post (or get) from a test, you won't get any result
* - secund the test must be adapted to this page : if you do a post (or get) from a test, you won't get any result
* if the $_REQUEST[test_select] is not set, so set it .
*/
include_once("../include/constant.php");
include_once("ac_common.php");
require_once('class_database.php');
require_once ('class_dossier.php');
require_once('class_html_input.php');
require_once ('function_javascript.php');
require_once 'class_user.php';
include_once("lib/ac_common.php");
require_once('lib/database.class.php');
require_once ('class/dossier.class.php');
require_once('lib/html_input.class.php');
require_once('lib/icon_action.class.php');
require_once ('lib/function_javascript.php');
require_once 'class/user.class.php';
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
global $http;
$http=new HttpInput();
load_all_script();
$gDossier=HtmlInput::default_value_get('gDossier', -1);
if ($gDossier==-1)
@ -45,9 +52,9 @@ if ($gDossier==-1)
}
$gDossierLogInput=$gDossier;
global $cn, $g_user, $g_succeed, $g_failed;
$cn=new Database($_GET['gDossier']);
$cn=Dossier::connect();
$g_parameter=new Own($cn);
$g_parameter=new Noalyss_Parameter_Folder($cn);
$g_user=new User($cn);
if (!file_exists('authorized_debug'))
@ -57,7 +64,7 @@ if (!file_exists('authorized_debug'))
exit();
}
define('ALLOWED', 1);
html_page_start();
html_page_start("Classic 692");
/*
* Loading of all scenario

View file

@ -22,14 +22,16 @@
// Copyright Author Dany De Bontridder danydb@aevalys.eu
require_once '../include/constant.php';
include_once NOALYSS_INCLUDE.'/ac_common.php';
require_once NOALYSS_INCLUDE.'/class_database.php';
require_once NOALYSS_INCLUDE.'/class_itext.php';
require_once NOALYSS_INCLUDE.'/function_javascript.php';
include_once NOALYSS_INCLUDE.'/lib/ac_common.php';
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE.'/lib/itext.class.php';
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
require_once NOALYSS_INCLUDE.'/lib/function_javascript.php';
require_once NOALYSS_INCLUDE.'/lib/icon_action.class.php';
@html_page_start($_SESSION['g_theme']);
html_page_start($_SESSION['g_theme']);
$rep=new Database();
include_once NOALYSS_INCLUDE.'/class_user.php';
require_once NOALYSS_INCLUDE.'/class/user.class.php';
$User=new User($rep);
$User->Check();
@ -60,24 +62,29 @@ EOF;
exit();
}
$ac=new Database();
$hi=new HttpInput();
/* check if repo valid */
if ( $ac->exist_table('version') == false)
{
echo '<h2 class="error" style="font-size:12px">'._("Base de donnée invalide").'</h2>';
$base=dirname($_SERVER['REQUEST_URI']);
echo '<a hreF="'.NOALYSS_URL.'/user_login.php">'._("Retour").'</a></h2>';
exit();
}
/* check repo version */
$version = $ac->get_value('select val from version');
if (!defined("MULTI")||(defined("MULTI")&&MULTI==1))
{
$version = $ac->get_value('select max(val) from version');
} else {
$version = $ac->get_value('select max(val) from repo_version');
}
if ( $version < DBVERSIONREPO )
{
echo '<h2 class="error" style="font-size:12px">'._("Votre base de données n'est pas à jour").' ';
$a=_("cliquez ici pour appliquer le patch");
$base = dirname($_SERVER['REQUEST_URI']);
if ($base == '/') { $base = ''; }
$base .= '/admin/setup.php';
$base =NOALYSS_URL.'/admin-noalyss.php';
echo '<a hreF="'.$base.'">'.$a.'</a></h2>';
}
@ -88,7 +95,12 @@ if ( $User->Admin() == 1)
if ($update > $version_noalyss ) {
echo '<div id="version_div" class="inner_box" style="width:25%;margin-left:10%;margin-top:3px;">';
echo '<p class="notice">';
echo "Mise à jour disponible de NOALYSS version actuelle : $update votre version $version_noalyss";
printf ( "Mise à jour disponible de NOALYSS version actuelle : %s votre version %s ",$update,$version_noalyss);
// Link to admin_repo : upgrade application
$base =NOALYSS_URL."/admin-noalyss.php?action=upgrade&sb=application";
echo '<a hreF="' . $base . '">' . _("Cliquez ici pour mettre à jour") . '</a>';
echo '</p>';
echo '<p style="text-align:center"> <a class="button" onclick="document.body.removeChild(document.getElementById(\'version_div\'))">'.
_('Fermer').
@ -98,22 +110,30 @@ if ( $User->Admin() == 1)
}
}
include_once("user_menu.php");
include_once NOALYSS_INCLUDE."/lib/user_menu.php";
$priv=($User->admin==1)?_("Administrateur"):_("Utilisateur");
load_all_script();
if ( isset ($_POST['set_preference'])) {
//// Save value
extract($_POST);
$pass_1=$hi->post("pass_1","string", "");
$pass_2=$hi->post("pass_2","string", "");
$style_user=$hi->post("style_user","string", "");
$lang=$hi->post("lang", "string","");
$p_email=$hi->post("email","string", "");
if (strlen(trim($pass_1)) != 0 && strlen(trim($pass_2)) != 0)
{
$User->save_password($pass_1,$pass_2);
}
$User->save_global_preference('THEME', $style_user);
$User->save_global_preference('LANG', $lang);
if (trim($style_user) != "") {
$User->save_global_preference('THEME',$style_user);
$_SESSION['g_theme']=$style_user;
}
if (trim($lang) != "") {
$User->save_global_preference('LANG', $lang);
$_SESSION['g_lang']=$lang;
}
$User->load();
$User->save_email($p_email);
}
@ -121,37 +141,29 @@ echo '<div class="welcome"> ';
/**
*
* If the user is NOT admin and can access only ONE folder,
* so it will be directly redirected to this folder or to the plugins of this
* OR for a One Folder Installation
* he will be directly redirected to his folder or to the plugins of this
* folder if he's an "plugin user"
*/
if ( $User->admin == 0 )
if ( $User->admin == 0 || (defined("MULTI")&& MULTI == 0 ) )
{
// how many folder ?
$folder=$User->get_available_folder();
if ( $folder != null && count($folder) == 1 )
{
if ( $User->check_dossier($folder[0]['dos_id']) == 'P')
{
redirect('extension.php?gDossier='.$folder[0]['dos_id']);
redirect(NOALYSS_URL.'/do.php?gDossier='.$folder[0]['dos_id']);
exit();
}
else
{
redirect('do.php?gDossier='.$folder[0]['dos_id']);
exit();
}
}
}
$result="";
$result.="<table border=\"0\">";
$result.='<TR>';
if ( $User->Admin() == 1 )
{
$result.="<TD class=\"tool\" ><A class=\"cell\" HREF=\"admin_repo.php\"> Administration </A></TD>";
$result.="<TD class=\"tool\" ><A class=\"cell\" HREF=\"admin-noalyss.php\">"._("Administration")." </A></TD>";
}
$result.='<TD class="tool">';
$result.='<a onclick="set_preference(0)" title="Préférence" href="javascript:void(0)" class="cell">'._('Préférence').'</a>';
@ -164,12 +176,12 @@ echo '<div id="module">'.$result.'</div>';
echo '</div>';
?>
<div class="foldercontent">
<span style="display:block;margin:2%">
<span style="margin:2%" class="visible_gt800">
<?php
echo _('Filtre').HtmlInput::infobulle(23);
echo _('Cherche').Icon_Action::infobulle(23);
?>
<?php
echo HtmlInput::filter_table("folder", '1,2',1);
echo HtmlInput::filter_table("folder", '0,1,2',1);
?>
</span>
<?php

View file

@ -20,7 +20,8 @@
// Copyright Author Dany De Bontridder danydb@aevalys.eu
/**\file
/**
* \file
* \brief this file is common to suivi client, suivi fournisseur, suivi
* administration.
* The needed variables are
@ -37,8 +38,10 @@ if (isset($_REQUEST['f_id']))
if (isset($_REQUEST['sb']))
$supl_hidden.=HtmlInput::hidden('sb', $_REQUEST['sb']);
$supl_hidden.=HtmlInput::hidden('ac', $_REQUEST['ac']);
$correction = 0;
$error_id=0;
$http=new HttpInput();
/*-----------------------------------------------------------------------------*/
/* For other action
/*-----------------------------------------------------------------------------*/
@ -93,7 +96,8 @@ if (isset($_POST['generate']))
{
$act->Update();
}
$act->generate_document($_POST['doc_mod'], $_POST);
$doc_mod=$http->post('doc_mod',"number");
$act->generate_document($doc_mod, $_POST);
$sub_action = 'detail';
}
/* for delete */
@ -121,7 +125,7 @@ if ($sub_action == "update")
{
$act2 = new Follow_Up($cn);
$act2->fromArray($_POST);
if ($g_user->can_write_action($act2->ag_id) == false )
if ($g_user->can_write_action($act2->ag_id) == FALSE )
{
echo '<div class="redcontent">';
echo '<h2 class="error">'._('Cette action ne vous est pas autorisée Contactez votre responsable').'</h2>';
@ -145,6 +149,7 @@ if ($sub_action == "update")
$act->get();
$act->fromArray($_POST);
$error_id=$e->getCode();
record_log($e->getTraceAsString());
}
}
//----------------------------------------------------------------------
@ -152,16 +157,25 @@ if ($sub_action == "update")
//----------------------------------------------------------------------
if (isset($_POST['add_action_here']))
{
$act = new Follow_Up($cn);
$ag_id=$http->post('ag_id',"number");
$act = new Follow_Up($cn,$ag_id);
if ($g_user->can_write_action($act->ag_id) == FALSE )
{
echo '<div class="redcontent">';
echo '<h2 class="error">'._('Cette action ne vous est pas autorisée Contactez votre responsable').'</h2>';
echo '</div>';
return;
}
//----------------------------------------
// puis comme ajout normal (copier / coller )
$act->fromArray($_POST);
$act->ag_id = 0;
$act->d_id = 0;
$act->action = $_POST['ag_id'];
$act->action = $http->post('ag_id',"number");
$act->ag_timestamp=date('d.m.Y');
$act->ag_hour="";
$act->ag_title="";
$act->ag_remind_date="";
echo '<div class="content">';
// Add hidden tag
@ -255,7 +269,7 @@ if ($sub_action == "list")
}
//--------------------------------------------------------------------------------
// Save Follow_Up
// Stage 2 : Save a NEW action + Files and generate eventually a document
// Stage 2 : Save a NEW action + Files and generate a document
//--------------------------------------------------------------------------------
if ($sub_action == "save_action_st2")
{
@ -282,6 +296,7 @@ if ($sub_action == "save_action_st2")
echo '</span>';
$sub_action="add_action";
$error_id=$e->getCode();
record_log($e->getTraceAsString());
}
}
//--------------------------------------------------------------------------------

View file

@ -28,11 +28,12 @@ $retour=HtmlInput::button_anchor(_('Retour liste'),
//-----------------------------------------------------
// Follow_Up
//-----------------------------------------------------
require_once NOALYSS_INCLUDE.'/class_icard.php';
require_once NOALYSS_INCLUDE.'/class_ispan.php';
require_once NOALYSS_INCLUDE.'/class_ifile.php';
require_once NOALYSS_INCLUDE.'/class_itext.php';
require_once NOALYSS_INCLUDE.'/class_follow_up.php';
require_once NOALYSS_INCLUDE.'/lib/icard.class.php';
require_once NOALYSS_INCLUDE.'/lib/ispan.class.php';
require_once NOALYSS_INCLUDE.'/lib/ifile.class.php';
require_once NOALYSS_INCLUDE.'/lib/itext.class.php';
require_once NOALYSS_INCLUDE.'/lib/inplace_edit.class.php';
require_once NOALYSS_INCLUDE.'/class/follow_up.class.php';
/*!\brief Show the list of action, this code should be common
* to several webpage. But for the moment we keep like that
* because it is used only by this file.

View file

@ -21,25 +21,22 @@
* the customer category
*/
if ( ! defined ('ALLOWED') ) die('Appel direct ne sont pas permis');
require_once NOALYSS_INCLUDE.'/class_iselect.php';
require_once NOALYSS_INCLUDE.'/class_ihidden.php';
require_once NOALYSS_INCLUDE.'/class_customer.php';
require_once NOALYSS_INCLUDE.'/class_ibutton.php';
require_once NOALYSS_INCLUDE.'/class_fiche_def.php';
require_once NOALYSS_INCLUDE.'/class_fiche_def.php';
require_once NOALYSS_INCLUDE.'/class_admin.php';
require_once NOALYSS_INCLUDE.'/lib/iselect.class.php';
require_once NOALYSS_INCLUDE.'/lib/ihidden.class.php';
require_once NOALYSS_INCLUDE.'/class/customer.class.php';
require_once NOALYSS_INCLUDE.'/lib/ibutton.class.php';
require_once NOALYSS_INCLUDE.'/class/fiche_def.class.php';
require_once NOALYSS_INCLUDE.'/class/fiche_def.class.php';
require_once NOALYSS_INCLUDE.'/class/admin.class.php';
global $g_user;
global $g_user,$http;
$low_action=(isset($_REQUEST['sb']))?$_REQUEST['sb']:"list";
$low_action=$http->request('sb',"string","list");
/*! \file
* \brief Called from the module "Gestion" to manage the customer
*/
$href=basename($_SERVER['PHP_SELF']);
// by default open liste
if ( $low_action == "" )
$low_action="list";
//-----------------------------------------------------
@ -55,7 +52,7 @@ if ( isset($_POST['action_fiche'] ) )
return;
}
$f_id=$_REQUEST['f_id'];
$f_id=$hi->request('f_id',"number");
$fiche=new Admin($cn,$f_id);
$fiche->remove();
@ -65,7 +62,7 @@ if ( isset($_POST['action_fiche'] ) )
}
//-----------------------------------------------------
// list of customer
// list of Admin
//-----------------------------------------------------
if ( $low_action == "list" )
{
@ -78,10 +75,10 @@ if ( $low_action == "list" )
echo '<h2>' . "Exercice " . $g_user->get_exercice() . '</h2>';
echo dossier::hidden();
$a=(isset($_GET['query']))?$_GET['query']:"";
printf (_('Recherche').' <input class="input_text" type="text" name="query" value="%s">',
$a);
echo _("Cherche ").HtmlInput::filter_table_form("tiers_tb", '0,1,2', 1,"query",$a);
echo HtmlInput::request_to_hidden(array('ac'));
$choice_cat=HtmlInput::default_value_request("choice_cat", 1);
$choice_cat=$http->request("choice_cat","string", 1);
if ( $choice_cat == 1 )
{
$sel_card=new ISelect('cat');
@ -93,7 +90,7 @@ if ( $low_action == "list" )
echo _('Catégorie :').$sel_card->input();
} else
{
$cat=HtmlInput::default_value_request('cat', '');
$cat=$http->request('cat', 'string','');
echo HtmlInput::hidden("cat",$cat);
echo HtmlInput::hidden('choice_cat', 0);
}
@ -106,11 +103,12 @@ if ( $low_action == "list" )
</div>
<?php
$adm=new Admin($cn);
$search=(isset($_GET['query']))?$_GET['query']:"";
$search=$http->get("query","string","");
$sql="";
if ( isset($_GET['cat']))
$cat=$http->request("cat","number",-1);
if ( $cat != -1)
{
if ( $_GET['cat'] != -1) $sql=sprintf(" and fd_id = %d",$_GET['cat']);
$sql=sprintf(" and fd_id = %d",$_GET['cat']);
}
echo '<div class="content">';

View file

@ -0,0 +1,207 @@
<?php
/*
* This file is part of NOALYSS.
*
* NOALYSS is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright Author Dany De Bontridder danydb@aevalys.eu
/*! \file
* \brief Administration of the repository : creation of user, folder, security,
* templates... Accessible only by the administrator
*/
if ( ! defined ('ALLOWED')) { die (_('Non autorisé'));}
if ( ! defined ('ALLOWED_ADMIN')) { die (_('Non autorisé'));}
include_once NOALYSS_INCLUDE."/class/user.class.php";
require_once NOALYSS_INCLUDE."/lib/user_common.php";
include_once NOALYSS_INCLUDE."/lib/ac_common.php";
require_once NOALYSS_INCLUDE.'/lib/database.class.php';
require_once NOALYSS_INCLUDE."/lib/user_menu.php";
require_once NOALYSS_INCLUDE."/lib/http_input.class.php";
require_once NOALYSS_INCLUDE."/lib/icon_action.class.php";
$http=new HttpInput();
$action = $http->request("action","string", "");
$rep=new Database();
$User=new User($rep);
$User->Check();
if ($User->admin != 1)
{
$theme=(isset($User->theme))?$User->theme:"";
html_page_start($User->theme);
echo "<h2 class=\"warning\">";
echo _("Vous n'êtes pas administateur");
echo "</h2>";
$reconnect=http_build_query(array("reconnect"=>1,"backurl"=>"admin-noalyss.php?action=upgrade"));
echo '<a href="'.NOALYSS_URL.'/index.php?'.$reconnect.'">';
echo _("Connectez-vous comme administrateur");
echo '</a>';
html_page_stop();
return;
}
// For a backup , we must avoid to send anything before the
// dump file
if ( $action== 'backup') {
/* take backup */
require_once NOALYSS_INCLUDE."/backup.inc.php";
exit();
}
html_page_start($_SESSION['g_theme']);
load_all_script();
echo '<H2 class="info"> '._('Administration').'</H2>';
echo '<div class="topmenu">';
echo MenuAdmin()."</div>";
?>
<DIV >
<?php
echo js_include("admin.js");
if ( $action=="user_mgt" )
{
//----------------------------------------------------------------------
// User management
//----------------------------------------------------------------------
require_once NOALYSS_INCLUDE."/user.inc.php";
}
// action=user_mgt
if ( $action=="dossier_mgt")
{
//-----------------------------------------------------------------------
// action = dossier_mgt
//-----------------------------------------------------------------------
require_once NOALYSS_INCLUDE."/dossier.inc.php";
}
if ( $action== "modele_mgt" )
{
//-----------------------------------------------------------------------
// Template Management
//-----------------------------------------------------------------------
require_once NOALYSS_INCLUDE."/modele.inc.php";
} // action is set
if ( $action== 'restore')
{
// Backup and restaure folders
require_once NOALYSS_INCLUDE."/restore.inc.php";
}
if ($action== 'audit_log')
{
/* List the connexion successfull and failed */
require_once NOALYSS_INCLUDE."/audit_log.php";
}
/*
* Display information about current installation
*/
if ( $action == "info" && SYSINFO_DISPLAY == true) {
global $version_noalyss;
echo "<h2>"._("Version Noalyss")."</h2>";
echo "Noalyss : ", $version_noalyss;
echo "<h2>"._('Variables').":".NOALYSS_INCLUDE.'/config.inc.php </h2>';
echo '<ul style="list-style:square">';
echo "<li>". "NOALYSS_HOME".": ".NOALYSS_HOME."</li>";
echo "<li>"."NOALYSS_INCLUDE".": ".NOALYSS_INCLUDE."</li>";
echo "<li>"."NOALYSS_TEMPLATE".": ".NOALYSS_TEMPLATE."</li>";
echo "<li>"."DEBUG".": ".DEBUG."</li>";
echo "<li>"."LOGINPUT".": ".LOGINPUT."</li>";
echo "<li>"."LOCALE".": ".LOCALE."</li>";
echo "<li>"."MULTI".": ".MULTI."</li>";
echo "<li>"."DOMAINE".": ".domaine."</li>";
echo "<li>"."PG_PATH".": ".PG_PATH."</li>";
echo "<li>"."PG_DUMP".": ".PG_DUMP."</li>";
echo "<li>"."PG_RESTORE".": ".PG_RESTORE."</li>";
echo "<li>"."PSQL".": ".PSQL."</li>";
echo "</ul>";
echo "<h2>"._("Paramètre base de données")."</h2>";
$a_option = array ("client_encoding","lc_collate","listen_addresses",
"server_encoding","work_mem","shared_buffers","server_version",
"hba_file","config_file","data_directory","effective_cache_size");
/*
* For old version of noalyss config file
*/
$noalyss_user=(defined("noalyss_user"))?noalyss_user:phpcompta_user;
$port=(defined("noalyss_psql_port"))?noalyss_psql_port:phpcompta_psql_port;
$host=(!defined("noalyss_psql_host") )?'127.0.0.1':noalyss_psql_host;
echo '<ul style="list-style:square">';
echo "<li>";
echo _('Hôte')." = ".$host;
echo "</li>";
echo "<li>";
echo _('Port')." = ".$port;
echo "</li>";
echo "<li>";
echo _('Utilisateur')." = ".$noalyss_user;
echo "</li>";
for ( $i = 0 ; $i < count($a_option); $i++) {
$name=$a_option[$i];
$sql="select setting from pg_settings where name=$1";
$value=$rep->get_value($sql,array($name));
echo "<li> ".$name." = ".$value."</li>";
}
echo "</ul>";
echo "<h2>"._('Paramètre PHP')."</h2>";
ob_start();
echo phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES | INFO_ENVIRONMENT | INFO_VARIABLES);
$r=ob_get_clean();
$html=new DOMDocument();
$html->loadHTML($r);
$nodelist=$html->getElementsByTagName("style");
$nodelist->item(0)->nodeValue='
.p {text-align: left;}
.e {background-color: #ccccff; font-weight: bold; color: #000000;}
.h {background-color: #9999cc; font-weight: bold; color: #000000;word-wrap:break-word;word-break: break-all;}
.v {background-color: #cccccc; color: #000000;;word-wrap:break-word;word-break: break-all}
.vr {background-color: #cccccc; text-align: right; color: #000000;word-wrap:break-word;word-break: break-all}
img {float: right; border: 0px;}
hr {width: 600px; background-color: #cccccc; border: 0px; height: 1px; color: #000000;}
';
$a_table=$html->getElementsByTagName("table");
// For PHP < 7 , we must change the attribute "width"
if ( substr(phpversion(),0,1) != "7" )
{
for ( $i = 0 ; $i < $a_table->length;$i++) {
$node=$a_table->item($i);
$node->attributes->getNamedItem("width")->nodeValue="100%";
}
}
$a_title = $html->getElementsByTagName("title");
for ( $i = 0;$i<$a_title->length;$i++) {
$a_title->item($i)->nodeValue="";
}
echo $html->saveHTML();
}
//------------------------------------------------------------------------------
// Upgrade
//------------------------------------------------------------------------------
if ( $action == "upgrade" ) {
require_once NOALYSS_INCLUDE."/upgrade.inc.php";
}
?>
</DIV>
<?php
html_page_stop();
?>

View file

@ -0,0 +1,70 @@
<?php
/*
* This file is part of NOALYSS.
*
* PhpCompta is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* PhpCompta is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PhpCompta; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright (2016) Author Dany De Bontridder <dany@alchimerys.be>
if (!defined('ALLOWED')) die('Appel direct ne sont pas permis');
/**
* @file
* @brief Manange Accounting
* @see Acc_Plan_SQL
*/
$http=new HttpInput();
try {
$table=$http->request('table');
$action=$http->request('action');
$p_id=$http->request('p_id', "number");
$ctl_id=$http->request('ctl');
} catch(Exception $e) {
echo $e->getMessage();
return;
}
if ( $g_user->check_module("CFGPCMN") == 0) die();
require_once NOALYSS_INCLUDE."/lib/manage_table_sql.class.php";
require_once NOALYSS_INCLUDE."/class/acc_plan_mtable.class.php";
$obj=new Acc_Plan_SQL($cn);
$obj->set_limit_fiche_qcode(5);
$obj->set_pk_value($p_id);
$obj->load();
$manage_table=new Acc_Plan_MTable($obj);
$manage_table->add_json_param("op","accounting");
$manage_table->set_object_name($ctl_id);
$manage_table->set_callback("ajax_misc.php");
if ($action=="input")
{
header('Content-type: text/xml; charset=UTF-8');
echo $manage_table->ajax_input()->saveXML();
return;
}
elseif ($action == "save")
{
$xml=$manage_table->ajax_save();
header('Content-type: text/xml; charset=UTF-8');
echo $xml->saveXML();
}
elseif ($action == "delete")
{
$xml=$manage_table->ajax_delete();
header('Content-type: text/xml; charset=UTF-8');
echo $xml->saveXML();
}

View file

@ -0,0 +1,60 @@
<?php
/*
* This file is part of NOALYSS.
*
* NOALYSS is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright 2014 Author Dany De Bontridder danydb@aevalys.eu
if ( ! defined ('ALLOWED') ) die('Appel direct ne sont pas permis');
/**
*@file
*@brief remove concerned operation , call from follow up
*/
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
$http=new HttpInput();
try
{
$ag_id=$http->get("ag_id", "number");
$f_id=$http->get("f_id", "number");
}
catch (Exception $exc)
{
echo $exc->getMessage();
error_log($exc->getTraceAsString());
return;
}
require_once 'class/follow_up.class.php';
$follow=new Follow_Up($cn,$ag_id);
ob_start();
$follow->remove_linked_card($f_id);
echo $follow->display_linked();
HtmlInput::button_action_add_concerned_card( $follow->ag_id);
$response = ob_get_clean();
$html = escape_xml($response);
header('Content-type: text/xml; charset=UTF-8');
echo <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<data>
<ctl>unused</ctl>
<code>$html</code>
</data>
EOF;
?>

View file

@ -0,0 +1,51 @@
<?php
/*
* This file is part of NOALYSS.
*
* NOALYSS is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright 2014 Author Dany De Bontridder danydb@aevalys.eu
/**
*@file
*@brief insert concerned operation , call from follow up
*/
// require_once '.php';
if ( ! defined ('ALLOWED') ) die('Appel direct ne sont pas permis');
/**
* Insert into follow-up the card (f_id) for the action_gestion (ag_id)
*/
require_once 'class/follow_up.class.php';
$follow=new Follow_Up($cn,$ag_id);
$follow->insert_linked_card($f_id);
/**
* Display all the linked card
*/
ob_start();
$follow->display_linked();
echo HtmlInput::button_action_add_concerned_card( $ag_id);
$response = ob_get_clean();
$html = escape_xml($response);
header('Content-type: text/xml; charset=UTF-8');
echo <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<data>
<ctl>unused</ctl>
<code>$html</code>
</data>
EOF;
?>

View file

@ -0,0 +1,101 @@
<?php
/*
* This file is part of NOALYSS.
*
* NOALYSS is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright 2014 Author Dany De Bontridder danydb@aevalys.eu
// require_once '.php';
/**
*@file
*@brief insert concerned operation , call from follow up
*/
if (!defined('ALLOWED'))
die('Appel direct ne sont pas permis');
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
$http=new HttpInput();
ob_start();
try
{
$ag_id=$http->get("ag_id");
}
catch (Exception $exc)
{
echo $exc->getMessage();
error_log($exc->getTraceAsString());
return;
}
require_once NOALYSS_INCLUDE.'/class/acc_ledger.class.php';
$r=HtmlInput::title_box(_("Détail fiche"), 'search_card');
$r.='<form id="search_card1_frm" method="GET" onsubmit="action_add_concerned_card(this);return false;">';
$q=new IText('query');
$q->value=(isset($query))?$query:'';
$r.='<span style="margin-left:50px">';
$r.=_('Fiche contenant').Icon_Action::infobulle(19);
$r.=$q->input();
$r.=HtmlInput::submit('fs', _('Recherche'), "", "smallbutton");
$r.='</span>';
$r.=dossier::hidden().HtmlInput::hidden('op', 'add_concerned_card');
$r.=HtmlInput::request_to_hidden(array('ag_id'));
$r.='</form>';
$query=$http->get("query", "string","");
$sql_array['query']=$query;
$sql_array['typecard']='all';
$fiche=new Fiche($cn);
/* Build the SQL and show result */
$sql=$fiche->build_sql($sql_array);
/* We limit the search to MAX_SEARCH_CARD records */
$sql=$sql.' order by vw_name limit '.MAX_SEARCH_CARD;
$a=$cn->get_array($sql);
for ($i=0; $i<count($a); $i++)
{
$array[$i]['quick_code']=$a[$i]['quick_code'];
$array[$i]['name']=h($a[$i]['vw_name']);
$array[$i]['accounting']=$a[$i]['accounting'];
$array[$i]['first_name']=h($a[$i]['vw_first_name']);
$array[$i]['description']=h($a[$i]['vw_description']);
$array[$i]['javascript']=sprintf("action_save_concerned(%d,'%s','%s')",$gDossier,$a[$i]['f_id'],$ag_id);
}//foreach
echo $r;
// No accountancy history
$accvis=0;
require_once(NOALYSS_TEMPLATE.'/card_result.php');
$response=ob_get_contents();
ob_end_clean();
$html=escape_xml($response);
if ( !headers_sent() ) { header('Content-type: text/xml; charset=UTF-8');} else {echo $response;echo $html;}
echo <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<data>
<ctl>unused</ctl>
<code>$html</code>
</data>
EOF;
?>

View file

@ -0,0 +1,221 @@
<?php
/*
* This file is part of NOALYSS.
*
* NOALYSS is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright Author Dany De Bontridder danydb@aevalys.eu
/**
* @file
* @brief show the form for adding a menu.
* $type :
* # me , it is a menu to add , so it could have dependencies
* # pr , menu for Printing : no dependency
* $p_level:
* # 0 it is a module : no dependency p_type = M , refresh the detail of menu
* # 1 it is a menu with possible submenu p_type = E, refresh the table with menu
* # 2 it is a menu with no submenu , p_type = E
* $dep : is the profile_menu.pm_id of the parent menu
*
*
*/
if (!defined('ALLOWED'))
die('Appel direct ne sont pas permis');
// Security
if ($g_user->check_module('CFGPRO')==0)
die();
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
$http=new HttpInput();
try
{
$type=$http->get('type');
$p_level=$http->get('p_level', "string",0);
$dep=$http->get('dep', "string",0);
}
catch (Exception $exc)
{
echo $exc->getMessage();
error_log($exc->getTraceAsString());
return;
}
// if type == menu the
if ($type=='me')
{
if ( isNumber($p_level)==0 ) throw new Exception('invalid call');
if ($p_level==0)
{
// There is no dependency
// Menu which can be added
$ame_code=$cn->make_array("
select me_code,me_code||' '||coalesce(me_menu,'')||' '||coalesce(me_description,'')
||'('|| case when me_type='SP' then 'Special'
when me_type='PL' then 'Plugin'
when me_type='ME' and me_file is null and me_javascript is null and me_url is null then 'Module - Menu principal'
when me_type='ME' then 'Menu'
else
me_type
end||')'
from
menu_ref
where
me_type<>'PR'
order by 1
");
}
elseif ($p_level==1)
{
// dependency is in dep
// Menu which can be added
$ame_code=$cn->make_array("
select me_code,me_code||' '||coalesce(me_menu,'')||' '||coalesce(me_description,'')
||'('|| case when me_type='SP' then 'Special'
when me_type='PL' then 'Plugin'
when me_type='ME' and me_file is null and me_javascript is null and me_url is null then 'Module - Menu principal'
when me_type='ME' then 'Menu'
else
me_type
end||')'
from
menu_ref
where
me_type<>'PR'
order by 1
");
}
elseif ($p_level==2)
{
// menu can *NOT* have submenu
// Menu which can be added
$ame_code=$cn->make_array("
select me_code,me_code||' '||coalesce(me_menu,'')||' '||coalesce(me_description,'')
||'('|| case when me_type='SP' then 'Special'
when me_type='PL' then 'Plugin'
when me_type='ME' and me_file is null and me_javascript is null and me_url is null then 'Module - Menu principal'
when me_type='ME' then 'Menu'
else
me_type
end||')'
from
menu_ref
where
me_type<>'PR' and
(
coalesce(me_file,'') <> '' or
coalesce(me_url,'') <> '' or
coalesce(me_javascript,'') <> ''
)
order by 1
");
}
else
{
throw new Exception('LEVEL ERROR');
}
$p_order=new INum("p_order", "10");
$me_code=new ISelect('me_code');
$me_code->rowsize=15;
$me_code->value=$ame_code;
$pm_default=new ICheckBox('pm_default');
echo HtmlInput::title_box(_("Nouveau"), $ctl);
?>
<form method="POST" id="menu_new_frm" onsubmit="return confirm_box('menu_new_frm','<?php echo _('Vous confirmez'); ?> ?')">
<?php
echo HtmlInput::hidden('tab', 'profile_menu_div');
?>
<?php echo HtmlInput::hidden('p_id', $p_id) ?>
<?php echo HtmlInput::hidden('add_menu', 1) ?>
<?php echo HtmlInput::hidden('p_level', $p_level) ?>
<?php echo HtmlInput::hidden('type', $type) ?>
<?php echo HtmlInput::hidden('dep', $dep) ?>
<table>
<tr>
<td><?php echo _("Code") ?></td>
<td><?php echo $me_code->input() ?></td>
</tr>
<tr>
<td><?php echo _("Ordre d'apparition") ?></td>
<td><?php echo $p_order->input() ?></td>
</tr>
<tr>
<td><?php echo _("Menu par défaut") ?></td>
<td><?php echo $pm_default->input() ?></td>
</tr>
</table>
<?php
echo HtmlInput::submit('add_menubt', _("Valider"));
echo '</form>';
return;
}
// for printing menu (export CSV or PDF)
if ($type=='pr')
{
$ame_code=$cn->make_array("
select me_code,me_code||' '||coalesce(me_menu,'')||' '||coalesce(me_description,'')
from
menu_ref
where me_type='PR'
and me_code not in (select me_code from profile_menu where p_id=$1)
order by 1
", 0, array($p_id));
$me_code=new ISelect('me_code');
$me_code->value=$ame_code;
echo HtmlInput::title_box(_("Nouveau menu"), $ctl);
if (count($ame_code)==0)
{
echo h2(_("Aucune impression disponible à ajouter"),
'class="notice"');
return;
}
?>
<form method="POST" id="menu_new2_frm" onsubmit="return confirm_box('menu_new2_frm','<?php echo _('Vous confirmez ?') ?>">
<?php
echo HtmlInput::hidden('tab', 'profile_print_div');
?>
<?php echo HtmlInput::hidden('p_id', $p_id) ?>
<?php echo HtmlInput::hidden('p_order', 10) ?>
<?php echo HtmlInput::hidden('me_code_dep', '') ?>
<?php echo HtmlInput::hidden('p_type', 'PR') ?>
<?php echo HtmlInput::hidden('add_impress', 1) ?>
<table>
<tr>
<td><?php echo _("Code") ?></td>
<td><?php echo $me_code->input() ?></td>
</tr>
</table>
<?php
echo HtmlInput::submit('add_impressbt', _("Valider"));
echo '</form>';
return;
}
?>

View file

@ -0,0 +1,417 @@
<?php
/*
* This file is part of NOALYSS.
*
* NOALYSS is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* NOALYSS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NOALYSS; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright 2015 Author Dany De Bontridder danydb@aevalys.eu
if (!defined('ALLOWED'))
die('Appel direct ne sont pas permis');
/**
* @file
* @brief the file contents the code which answer to ajax call from
* admin-noalyss.php
* @see admin-noalyss.php ajax_misc.php admin.js
*/
if ($g_user->Admin()==0)
{
die();
}
session_write_close();
set_language();
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
$http=new HttpInput();
$op=$http->request("op");
// From admin, grant the access to a folder to an
// user
if ($op=='folder_add') // operation
{
$cn=new Database();
try
{
$user_id=$http->get("p_user", "number"); // get variable
$dossier_id=$http->get("p_dossier", "number"); // get variable
$user=new User($cn, $user_id);
$user->set_folder_access($dossier_id, true);
$dossiercn=new Database($dossier_id);
// By default new user has the profile 1 (admin) and ledger's security
// + action's security are disabled
$user=new User($dossiercn, $user_id);
$user->set_status_security_action(0);
$user->set_status_security_ledger(0);
$user->save_profile(1);
$dossier=new Dossier($dossier_id);
$dossier->load();
$content="<td>".h($dossier->dos_name)."</td><td>".h($dossier->dos_description)."</td>".
"<td>".
HtmlInput::anchor(_('Enleve'), "", " onclick=\"folder_remove({$user_id},{$dossier_id});\"").
"</td>";
$status='OK';
}
catch (Exception $exc)
{
error_log($exc->getTraceAsString());
$content=_('Erreur paramètre');
$status="NOK";
return;
}
//----------------------------------------------------------------
// Answer in XML
header('Content-type: text/xml; charset=UTF-8');
$dom=new DOMDocument('1.0', 'UTF-8');
$xml_content=$dom->createElement('content', $content);
$xml_status=$dom->createElement('status', $status);
$root=$dom->createElement("root");
$root->appendChild($xml_content);
$root->appendChild($xml_status);
$dom->appendChild($root);
echo $dom->saveXML();
exit();
}
// From admin, revoke the access to a folder from an
// user
if ($op=='folder_remove') // operation
{
try
{
$cn=new Database();
$user_id=$http->get("p_user", "number"); // get variable
$dossier_id=$http->get("p_dossier", "number"); // get variable
$user=new User($cn, $user_id);
$user->set_folder_access($dossier_id, false);
$content="";
$status='OK';
}
catch (Exception $exc)
{
error_log($exc->getTraceAsString());
$content=_('Erreur paramètre');
$status="NOK";
}
//----------------------------------------------------------------
// Answer in XML
header('Content-type: text/xml; charset=UTF-8');
$dom=new DOMDocument('1.0', 'UTF-8');
$xml_content=$dom->createElement('content', $content);
$xml_status=$dom->createElement('status', $status);
$root=$dom->createElement("root");
$root->appendChild($xml_content);
$root->appendChild($xml_status);
$dom->appendChild($root);
echo $dom->saveXML();
exit();
}
/**
* Display the forbidden folders if the request comes from a form
* with an input text (id:database_filter_input) then this text is
* used as a filter
*
*/
if ($op=='folder_display') // operation
{
$cn=new Database();
try
{
$user_id=$http->get("p_user", "number"); // get variable
$p_filter=$http->get('p_filter', "string", '');
ob_start();
$user=new User($cn, $user_id);
$a_dossier=Dossier::show_dossier('X', $user->id, $p_filter, MAX_FOLDER_TO_SHOW);
echo HtmlInput::title_box(_("Liste dossier"), 'folder_list_div');
?>
<form method="get" onsubmit="folder_display('<?php echo $user_id ?>');
return false">
<p style="text-align: center">
<?php echo _('Recherche'); ?>
<input type="text" id="database_filter_input" class="input_text" autofocus="true" autocomplete="off" nohistory autocomplete="false" value="<?php echo $p_filter ?>"
onkeyup="filter_table(this, 'folder_display_tb', '1,2,3', 0)" >
<input type="button" class="smallbutton" onclick="$('database_filter_input').value = '';filter_table($('database_filter_input'), 'folder_display_tb', '1,2,3', 0);" value="X">
<input type="submit" class="smallbutton" value="<?php echo _('Rechercher') ?>">
</p>
</form>
<p>
<?php
$nb_dossier=count($a_dossier);
$max=( $nb_dossier>=MAX_FOLDER_TO_SHOW)?MAX_FOLDER_TO_SHOW:$nb_dossier;
echo _('Dossiers trouvés').':'.$nb_dossier." "._('Dossiers affichés').$max.' '._('Limite dossiers').":".MAX_FOLDER_TO_SHOW;
?>
</p>
<?php
require NOALYSS_TEMPLATE.'/folder_display.php';
$content=ob_get_clean();
$status='OK';
}
catch (Exception $exc)
{
error_log($exc->getTraceAsString());
$content=_('Erreur paramètre');
$status="NOK";
}
//----------------------------------------------------------------
// Answer in XML
header('Content-type: text/xml; charset=UTF-8');
$dom=new DOMDocument('1.0', 'UTF-8');
$xml=escape_xml($content);
$xml_content=$dom->createElement('content', $xml);
$xml_status=$dom->createElement('status', $status);
$root=$dom->createElement("root");
$root->appendChild($xml_content);
$root->appendChild($xml_status);
$dom->appendChild($root);
echo $dom->saveXML();
exit();
}
// For the operation 'modele_drop','modele_modify','folder_modify','folder_drop'
// the p_dossier parameter is mandatory
if (in_array($op, array('modele_drop', 'modele_modify', 'folder_modify', 'folder_drop')))
{
try
{
$dossier=$http->get('p_dossier', "number");
$content=_('Erreur paramètre');
$status="NOK";
}
catch (Exception $exc)
{
error_log($exc->getTraceAsString());
$content=_('Erreur paramètre');
$status="NOK";
//----------------------------------------------------------------
// Answer in XML
header('Content-type: text/xml; charset=UTF-8');
$dom=new DOMDocument('1.0', 'UTF-8');
$xml=escape_xml($content);
$xml_content=$dom->createElement('content', $xml);
$xml_status=$dom->createElement('status', $status);
$root=$dom->createElement("root");
$root->appendChild($xml_content);
$root->appendChild($xml_status);
$dom->appendChild($root);
echo $dom->saveXML();
exit();
}
// Modify the description or the name of folder
if ($op=='folder_modify')
{
$dos=new Dossier($dossier);
ob_start();
$dos->load();
echo HtmlInput::title_box(_('Modification'), 'folder_admin_div');
$wText=new IText();
echo '<form action="admin-noalyss.php" method="post">';
echo HtmlInput::hidden('action', 'dossier_mgt');
echo HtmlInput::hidden('d', $dos->get_parameter("id"));
echo _('Nom').' : ';
echo $wText->input('name', $dos->get_parameter('name'));
echo '<br>';
$wDesc=new ITextArea();
$wDesc->heigh=5;
echo _('Description').' : <br>';
echo $wDesc->input('desc', $dos->get_parameter('desc'));
echo '<br>';
echo _('Max. email / jour (-1 = illimité)');
$max_email_input=new INum('max_email');
$max_email_input->value=$dos->get_parameter('max_email');
$max_email_input->prec=0;
echo $max_email_input->input();
echo '<br>';
echo HtmlInput::submit('upd', _('Modifie'));
echo '</form>';
$content=ob_get_clean();
$status='OK';
}
else if ($op=='folder_drop')
{
// ask to confirm the removal a folder
$dos=new Dossier($dossier);
ob_start();
echo HtmlInput::title_box(_('Efface'), 'folder_admin_div');
$dos->load();
echo '<form action="admin-noalyss.php" method="post">';
echo HtmlInput::hidden('action', 'dossier_mgt');
echo HtmlInput::hidden('d', $dossier);
echo HtmlInput::hidden('sa', 'remove');
echo '<h2 class="error">'._('Etes vous sûr et certain de vouloir effacer ').$dos->dos_name.' ???</h2>';
$confirm=new ICheckBox();
$confirm->name="p_confirm";
echo '<p>';
echo _('Cochez la case si vous êtes sûr de vouloir effacer ce dossier');
echo $confirm->input();
echo '</p>';
echo '<p style="text-align:center">';
echo HtmlInput::submit('remove', _('Effacer'));
echo '</p>';
echo '</form>';
$content=ob_get_clean();
$status='OK';
}
else if ($op=='modele_drop')
{
// ask to confirm the removal a folder
$cn=new Database();
$name=$cn->get_value('select mod_name from modeledef where mod_id=$1', array($dossier));
ob_start();
echo HtmlInput::title_box(_('Efface'), 'folder_admin_div');
echo '<form action="admin-noalyss.php" method="post">';
echo HtmlInput::hidden('m', $dossier);
echo HtmlInput::hidden('sa', 'remove');
echo HtmlInput::hidden('action', 'modele_mgt');
echo '<h2 class="error">'._('Etes vous sure et certain de vouloir effacer ').$name.' ?</h2>';
$confirm=new ICheckBox();
$confirm->name="p_confirm";
echo '<p>';
echo _('Cochez la case si vous êtes sûr de vouloir effacer ce modèle');
echo $confirm->input();
echo '</p>';
echo '<p style="text-align:center">';
echo HtmlInput::submit('remove', _('Effacer'));
echo '</p>';
echo '</form>';
$content=ob_get_clean();
$status='OK';
}
else if ($op=='modele_modify')
{
// Modify the description or the name of a template
$cn=new Database();
ob_start();
echo HtmlInput::title_box(_('Modification'), 'folder_admin_div');
echo '<form method="post">';
$name=$cn->get_value(
"select mod_name from modeledef where ".
" mod_id=$1", array($dossier));
$desc=$cn->get_value(
"select mod_desc from modeledef where ".
" mod_id=$1", array($dossier));
$wText=new IText();
echo 'Nom : '.$wText->input('name', $name);
$wDesc=new ITextArea();
$wDesc->heigh=5;
echo '<br>Description :<br>';
echo $wDesc->input('desc', $desc);
echo HtmlInput::hidden('m', $dossier);
echo HtmlInput::hidden('action', 'modele_mgt');
echo '<br>';
echo HtmlInput::submit('upd', _('Modifie'));
echo '</form>';
$content=ob_get_clean();
$status='OK';
}
//----------------------------------------------------------------
// Answer in XML
header('Content-type: text/xml; charset=UTF-8');
$dom=new DOMDocument('1.0', 'UTF-8');
$xml=escape_xml($content);
$xml_content=$dom->createElement('content', $xml);
$xml_status=$dom->createElement('status', $status);
$root=$dom->createElement("root");
$root->appendChild($xml_content);
$root->appendChild($xml_status);
$dom->appendChild($root);
echo $dom->saveXML();
exit();
}
//------------------------------------------------------------------
// Upgrade Core
//------------------------------------------------------------------
if ($op=='upgradeCore')
{
require_once NOALYSS_INCLUDE.'/lib/progress_bar.class.php';
require_once NOALYSS_INCLUDE.'/class/package_repository.class.php';
$task_id=$http->request("task_id");
$progress=new Progress_Bar($task_id);
$progress->set_value(2);
$repo=new Package_Repository();
$core=$repo->make_object("core", " ");
try {
$progress->set_value(5);
$core->download();
$progress->set_value(55);
if (!DEBUG )
{
$core->install();
}
$progress->set_value(100);
$url=sprintf('<a href="%s"> install.php</a>', NOALYSS_URL."/install.php");
printf(_("Afin de terminer l'installation aller sur %s , à la fin de la procédure , demandez à effacer le fichier install.php"),
$url);
} catch (Exception $ex ) {
echo '<p class="notice">';
echo $ex->getMessage();
echo '</p>';
$progress->set_value(100);
}
return;
}
//---------------------------------------------------------------------------------------------------------
// Upgrade or install plugin
//---------------------------------------------------------------------------------------------------------
if ($op=='upgradePlugin')
{
require_once NOALYSS_INCLUDE.'/lib/progress_bar.class.php';
require_once NOALYSS_INCLUDE.'/class/package_repository.class.php';
$task_id=$http->request("task_id");
$code=$http->post("code_plugin");
$progress=new Progress_Bar($task_id);
$progress->set_value(2);
$repo=new Package_Repository();
$plugin=$repo->make_object("plugin", $code);
$progress->set_value(5);
$plugin->download();
$progress->set_value(55);
$plugin->install();
$progress->set_value(100);
echo _("L'extension doit être activée dans le dossier avec CFGPLUGIN");
return;
}
//------------------------------------------------------------------------------------------------------------------
// Install template
//------------------------------------------------------------------------------------------------------------------
if ($op=="installTemplate")
{
require_once NOALYSS_INCLUDE.'/lib/progress_bar.class.php';
require_once NOALYSS_INCLUDE.'/class/package_repository.class.php';
$task_id=$http->request("task_id");
$name=$http->post("code");
$progress=new Progress_Bar($task_id);
$progress->set_value(2);
$package_repository=new Package_Repository();
$progress->set_value(4);
$template=$package_repository->make_object("template", $name);
$progress->set_value(30);
$template->download();
$progress->set_value(70);
$template->install();
$progress->set_value(100);
echo _("Modèle installé");
return;
}
?>

View file

@ -0,0 +1,60 @@
<?php
/*
* This file is part of NOALYSS.
*
* PhpCompta is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* PhpCompta is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PhpCompta; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright (2016) Author Dany De Bontridder <dany@alchimerys.be>
if (!defined('ALLOWED'))
die('Appel direct ne sont pas permis');
require_once NOALYSS_INCLUDE."/class/anc_account_table.class.php";
/**
* @file
* @brief Insert , update delete anc accounting
*/
$http=new HttpInput();
$cn=Dossier::connect();
$action=$http->request("action");
$p_id=$http->request("p_id", "number");
$ctl_id=$http->request("ctl");
$pa_id=$http->request("pa_id");
$anc=new Poste_analytique_SQL($cn, $p_id);
$anc->pa_id=$pa_id;
$accounting=new Anc_Account_Table($anc);
$accounting->set_object_name($ctl_id);
$accounting->set_callback("ajax_misc.php");
$accounting->add_json_param("op", "anc_accounting");
if ($action=="input")
{
$accounting->send_header();
echo $accounting->ajax_input()->saveXML();
}
elseif ($action=="save")
{
$accounting->send_header();
echo $accounting->ajax_save()->saveXML();
}
elseif ($action=="delete")
{
$accounting->send_header();
echo $accounting->ajax_delete()->saveXML();
}

View file

@ -0,0 +1,92 @@
<?php
/*
* This file is part of NOALYSS.
*
* PhpCompta is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* PhpCompta is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PhpCompta; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Copyright (2016) Author Dany De Bontridder <dany@alchimerys.be>
if (!defined('ALLOWED'))
die('Appel direct ne sont pas permis');
/**
* @file
* @brief display the detail of an anc operation
* parameters : oa_group
*/
$http=new HttpInput();
$oa_group=$http->request("oa_group","number");
bcscale(4);
$row=$cn->get_row("select distinct oa_group,
to_char(oa_date,'DD.MM.YYYY') as str_date ,
oa_date,
oa_description,
jr_pj_number,
jr_id
from
operation_analytique as oa
join poste_analytique using (po_id)
left join (select jr_id,jr_pj_number,j_id from jrn join jrnx on (jr_grpt_id=j_grpt) ) as m on (m.j_id=oa.j_id)
where oa_group=$1",array($oa_group));
echo HtmlInput::title_box(_('Détail'), "anc_detail_op_div");
echo $row['str_date'],' ',
h($row['oa_description']),' ',
h($row['jr_pj_number']);
$a_row=$cn->get_array("select distinct oa_row from operation_analytique where oa_group=$1",array($oa_group));
$a_plan=$cn->get_array("select distinct pa_id,pa_name from operation_analytique join poste_analytique using (po_id) join plan_analytique using (pa_id) where oa_group=$1 order by pa_name",array($oa_group));
$nb_row=count($a_row);
$nb_plan=count($a_plan);
echo '<table class="result">';
echo '<tr>';
echo th(_('Fiche'));
for ( $e=0;$e<$nb_plan;$e++) echo th($a_plan[$e]['pa_name']);
echo th(_('Montant'),'style="text-align:right"');
echo th(_('D/C'));
echo '<tr>';
echo '</tr>';
for ($i=0;$i< $nb_row;$i++) {
$class=($i%2==0)?"even":"odd";
echo '<tr class="'.$class.'">';
// retrieve card
echo '<td>';
$f_id=$cn->get_value("select distinct f_id from operation_analytique where oa_group = $1 and oa_row=$2",[$oa_group,$a_row[$i]['oa_row']]);
$qcode=$cn->get_value("select ad_value from fiche_detail where f_id=$1 and ad_id=$2",[$f_id,ATTR_DEF_QUICKCODE] );
echo $qcode;
echo '</td>';
for ( $e = 0;$e<$nb_plan;$e++) {
$detail_row=$cn->get_row("select po_name , oa_amount,oa_positive ,oa_debit
from operation_analytique
join poste_analytique using (po_id)
join plan_analytique using (pa_id)
where
oa_group=$1
and oa_row=$2
and pa_id=$3",array($oa_group,$a_row[$i]['oa_row'],$a_plan[$e]['pa_id']));
echo td($detail_row['po_name']);
}
$amount=$detail_row['oa_amount'];
if ( $detail_row['oa_positive']=="N") {$amount=bcmult($amount,-1);}
echo td($amount,'style="text-align:right"');
$debit=($detail_row['oa_debit'] == 'f')?"C":"D";
echo td($debit);
echo '</tr>';
}
echo '</table>';
echo '<ul class="aligned-block">';
echo '<li>',HtmlInput::button_close("anc_detail_op_div");
echo '</ul >';

Some files were not shown because too many files have changed in this diff Show more