Intégration rel232

This commit is contained in:
sparkyx 2007-05-02 20:36:35 +00:00
parent f1bbc653d9
commit 33a3c42451
24 changed files with 211 additions and 540 deletions

View file

@ -4,9 +4,8 @@
Ce document décrit l'installation complète de PhpCompta et explique
comment ont été installés les programmes dont PhpCompta dépend. Php-
Compta PhpCompta <http://www.alchimerys.be/FR/phpcompta>, site savan-
nah PhpCompta Savannah <http://savannah.nongnu.org/projects/php-
compta/>
Compta PhpCompta <http://www.phpcompta.org>, site savannah PhpCompta
Savannah <http://savannah.nongnu.org/projects/phpcompta/>
______________________________________________________________________
Table of Contents
@ -43,7 +42,13 @@
peut se faire avec les "packages" standards fournis; ces "packages"
sont largement suffisants. Les explications données ici sur
l'installation de ces produits sont destinées à ceux préfèrant le
faire manuellement.
faire manuellement. En général vous pourrez l'installer assez
facilement Installation Rapide
<http://www.phpcompta.org/pmwiki.php/Documentation/InstallationRapide>
Il existe aussi un manuel d'installation exhaustif pour Debian, pleins
d'informations utiles Manuel pour Debian
<http://www.blanchin.eu/?p=12>.
Si vous installez sous Windows, il est assez compliqué de recompiler.
@ -57,6 +62,8 @@
2. Postgresql (version 8.0.1 minimum)
2.1. Installation
Soit avec des binaires préparés, soit à partir du code source
@ -64,6 +71,7 @@
Le plus simple est d'utiliser les binaires de votre distribution, ne
compiler ces programmes que si vraiment vous devez le faire ou que
vous préfèrez avoir la dernière version disponible.
Si vous décidez de le compiler vous-même, les options suivantes
fonctionnent
@ -98,8 +106,7 @@
ne pas oublier d'ajouter dans le PATH, l'endroit où se trouve les
binaires de postgres
ex:
export PATH=$PATH:/opt/psql732/bin
export PATH=$PATH:/opt/psql/bin
@ -120,6 +127,8 @@
le cas où vous utilisez un VirtualHost avec une adresse IP, c'est
cette adresse qu'il vous faudra mettre
2.3. Optimisation
Posgresql est une base de données très rapide, cependant, il vous
@ -180,6 +189,8 @@
Si vous décidez de le compiler vous-même, les options suivantes
fonctionnent
./configure --prefix=/opt/http2/ \
--enable-ssl \
--enable-http \
@ -200,30 +211,26 @@
Et si vous décidez d'avoir la même configuration que moi, mais ce
n'est pas obligatoire
n'est pas obligatoire Il est possible d'utiliser les virtuals hosts
ainsi
< VirtualHost 172.16.30.150 >
ServerName site
ErrorLog phpcompta-error.log
TransferLog phpcompta-debug.log
DocumentRoot /home/httpd/compta/html
</VirtualHost >
Note certains ont fait ceci pour configurer Apache
<VirtualHost localhost>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /www/phpcompta/html/
ServerName phpcompta
php_flag session.auto_start 1
php_flag magic_quotes_gpc 0
php_flag session.use_trans_sid 1
php_value include_path ".:../include:../addon"
<VirtualHost *>
Servername ...
DocumentRoot /var/www/acapulco/htdocs
<Directory /var/www/acapulco/htdocs/phpcompta/html/>
AddDefaultCharset iso-8859-1
php_value include_path .:../../include:../include:addon
php_flag magic_quotes_gpc off
php_flag session.auto_start on
php_value session.save_path /tmp
php_value max_execution_time 120
php_flag short_open_tag on
php_flag session.use_trans_sid on
</Directory>
</VirtualHost>
Actuellement, le répertoire html, contient un fichier .htaccess qui
contient le nécessaire pour que les variables php soient correctes
(voir ``configuration de .htaccess'').
@ -242,13 +249,14 @@
vous-même, les options suivantes fonctionnent
./configure --prefix=/opt/php431 \
--with-apxs2=/opt/http2/bin/apxs \
--with-fastcgi \
--with-zlib \
--with-pgsql=/usr/local/psql \
--with-mysql \
--with-apache2=/software/httpd-2.0.44
./configure --prefix=/opt/php431 \
--with-apxs2=/opt/http2/bin/apxs \
--with-fastcgi \
--with-zlib \
--with-pgsql=/usr/local/psql \
--with-mysql \
--with-apache2=/software/httpd-2.0.44
@ -320,7 +328,6 @@
Etape
· Se connecter en tant que postgres et taper les commandes

View file

@ -22,22 +22,20 @@
8. J'ai trouvé un tit bug, comment faire un patchs ??
9. Comment faire de la doc
10. Comment contribuer ?
11. recevoir des erreurs de création
12. Erreur objet n'existe pas
13. Comment appliquer un patch ?
13.1 Quel patch utiliser ?
13.2 Comment appliquer le patch
11. Comment appliquer un patch ?
11.1 Quel patch utiliser ?
11.2 Comment appliquer le patch
14. Les entêtes de facture
15. Problèmes fréquents
15.1 Impossible de se logguer
15.2 J'ai le message d'erreur 'cannot find file ....'
12. Les entêtes de facture
13. Problèmes fréquents
13.1 Impossible de se logguer
13.2 J'ai le message d'erreur 'cannot find file ....'
16. Je reçois une erreur postgresql à propos d'une table log qui n'existe pas
17. Après avoir installé la version 1.1.0, les périodes centralisées ne le sont plus
18. J'ai toujours des timeouts
19. Mais où sont les rapports prédéfini
20. Developpeur
14. Je reçois une erreur postgresql à propos d'une table log qui n'existe pas
15. Après avoir installé la version 1.1.0, les périodes centralisées ne le sont plus
16. J'ai toujours des timeouts
17. Mais où sont les rapports prédéfini
18. Developpeur
______________________________________________________________________
@ -64,6 +62,7 @@
- webcompta
En fait c'est phpcompta, bien qu'au départ c'était wcompta,
contraction de WebCompta mais malheureusement, c'est le nom d'un soft
qui existait déjà, j'ai été obligé de changer vers phpcompta.
@ -93,10 +92,9 @@
4. Ou trouvez les patches
Sur la page d'origine, malheureusement, il n'est pas encore possible
de téléchargez des fichiers sur Savannah
On peut y arriver à partir de la page de savannah (Homepage)
Sur Site phpcompta <http://www.phpcompta.org/> la page d'origine,
malheureusement, il n'est pas encore possible de télécharger des
fichiers sur Savannah
5. Comment adapter le fichier php.ini
@ -107,10 +105,12 @@
variable register_globale = off dans le php.ini
php.ini doit contenir pour phpcompta
php.ini doit contenir pour phpcompta, cependant il n'est pas certain
qu'il faille changer ces paramètres, vous devez aller sur
admin/setup.php pour voir ce qui doit être fait
[PHP]
include_path=".:../include:addon"
include_path=".:../include:../../include:addon"
[Session]
session.name = PHPSESSID
; name of the session
@ -129,7 +129,6 @@
phpcompta
7. Quel est l'utilisateur et le mot de passe par défaut?
l'utilisateur et le mot de passe par défaut sont phpcompta/phpcompta,
@ -209,45 +208,10 @@
Cela m'évite de devoir chaque fois changer sur le site de phpcompta
11. recevoir des erreurs de création
11. Comment appliquer un patch ?
ERROR: column "jrn_deb_max_line" is of type 'integer' but expression is
of type 'boolean' You will need to rewrite or cast the expression
ERROR: column "jrn_deb_max_line" is of type 'integer' but expression is
of type 'boolean' You will need to rewrite or cast the expression
ERROR: column "jrn_deb_max_line" is of type 'integer' but expression is
of type 'boolean' You will need to rewrite or cast the expression
ERROR: column "jrn_deb_max_line" is of type 'integer' but expression is
of type 'boolean' You will need to rewrite or cast the expression
Vous avez utilisé une version instable ! Cela a été corrigé reprenez
les fichiers du CVS
12. Erreur objet n'existe pas
ERROR: sequence "s_isup" does not exist
ERROR: sequence "s_fdef" does not exist
ERROR: sequence "s_idef" does not exist
ERROR: table "isupp" does not exist
ERROR: table "fiche" does not exist
ERROR: table "isupp_def" does not exist
ERROR: table "fichedef" does not exist
Du à une commande drop sur un objet inexistant, n'y pretez pas atten-
tion
13. Comment appliquer un patch ?
13.1. Quel patch utiliser ?
11.1. Quel patch utiliser ?
Dans certains cas, le dernier patch ne reprend PAS les autres, il
faudra lire la release note du patch pour savoir ce qu'il faut
@ -260,7 +224,7 @@
exemple path-r092-1.tgz, est le premier patch pour la release 0.9.2
13.2. Comment appliquer le patch
11.2. Comment appliquer le patch
Après l'avoir téléchargé, allez dans le répertoire de PhpCompta,
c'est-à-dire celui qui contient les sources
@ -271,33 +235,33 @@
14. Les entêtes de facture
12. Les entêtes de facture
Pourquoi les coordonnées de la société faisant la facture
n'apparraissent-ils pas ?
Simplement parce que je n'ai pas eu le temps de le coder, pour
l'instant, vous devrez uniquement utiliser des factures préimprimées
Parce que vous n'avez pas rempli les coordonnées de votre société dans
les paramètres ou parce que votre modèle n'en contenait pas.
15. Problèmes fréquents
13. Problèmes fréquents
15.1. Impossible de se logguer
13.1. Impossible de se logguer
Il faut contrôler le fichier log d'Apache
15.2. J'ai le message d'erreur 'cannot find file ....'
13.2. J'ai le message d'erreur 'cannot find file ....'
Dans votre php.ini, n'oubliez pas de mettre correctement le
include_patch voir php-setting ``Php''
16. Je reçois une erreur postgresql à propos d'une table log qui
14. Je reçois une erreur postgresql à propos d'une table log qui
n'existe pas
C'est normal, les sortie de déboggages sont envoyées dans une base de
C'est normal, les sortie de déboggage sont envoyées dans une base de
données, ce qui facilite la recherche, le tri,...
@ -313,7 +277,7 @@
17. Après avoir installé la version 1.1.0, les périodes centralisées
15. Après avoir installé la version 1.1.0, les périodes centralisées
ne le sont plus
Oui, c'est tout-à-fait normal, la période 1.1.0 introduit plusieurs
@ -324,14 +288,16 @@
C'est à cause de cela, qu'il faut re-centraliser.
18. J'ai toujours des timeouts
16. J'ai toujours des timeouts
Soit vous augmentez le timeout de votre server http soit vous mettez
l'option fsync=N dans le fichier de configuration de PostgreSql.
l'option fsync=N dans le fichier de configuration de PostgreSql ou
encore changer dans votre php.ini le paramètre max_execution_time soit
dans le fichier .htaccess, soit dans le fichier php.ini soit dans la
définition de votre virtual host dans la configuration d'apache.
19. Mais où sont les rapports prédéfini
17. Mais où sont les rapports prédéfini
Parce que les rapports peuvent toujours être facilement adaptés, ils
sont inclus dans le produit mais pas installé. Pour les trouver, allez
@ -340,7 +306,7 @@
l'outil PhpPgAdmin.
20. Developpeur
18. Developpeur
Les développeurs trouveront toutes la documentation dans
doc/developper. Pour la base de données, j'utilise postgresql_autodoc

View file

@ -540,7 +540,7 @@ il est n
<sect>Sécurité
<sect1> Remarques
<sect1> Introduction
<p>
PhpCompta a sa propre sécurité, cependant si vous voulez vraiment
sécuriser votre comptabilité, vous devez prendre en compte qu'il ne
@ -642,6 +642,38 @@ pourra
Le sens d'écrire dans ce contexte-ci doit se comprendre
comme la capacité à pouvoir ajouter ou modifier des informations.
<p>Dans chaque dossier, vous devez donner les droits des
utilisateurs. Il y a les journaux et les actions. Les journaux sont
les journaux auquels vous avez ou non accès.
<p>
Les actions
<itemize>
<item> Accès au Grand Livre : vous permet d'accèder au GrandLivre et
donc de voir toutes les opérations.
<item> Impression : accès aux impressions
<item> Formulaire : menu avancé, vous permet de créer vos propres
formulaires
<item> Mise à jour Plan Comptable
<item> Gestion Journaux : dans le menu avancé, configuration des journaux
<item> Paramètres : gestion des taux TVA, paramètre société, ...
<item> Centralise
<item> Fiche Read : pour rechercher une fiche
<item> Voir le stock
<item> Modifie le stock: permet de modifier manuellement le stock,
celui-ci sera de toute façon modifié par les actions d'achat et de vente.
<item> Fiche ajout : pour pouvoir ajouter une fiche
<item> Voir la balance des comptes : pour voir la balance des comptes,
nécessaire d'avoir aussi l'accès Impression
<item> Import et export des écritures d'ouverture
<item> Module Suivi Document : module gestion
<item> Module Client : module gestion
<item> Module Fournisseur : module gestion
<item> Module Administration : module gestion
<item> Module Gestion: module gestion
</itemize>
</sect1>
</sect>
<sect> Gestion de stock

View file

@ -56,8 +56,6 @@ h2.error {
* used and immediately delete after an upgrade.
* This file is included in each release for a new upgrade
*
* \todo remove the rebuild of mod2 (drop / create) for the next version
* the mod2 from the version < 2.0 are full of bugs
*/
$inc_path=get_include_path();
if ( strpos($inc_path,";") != 0 ) {
@ -342,7 +340,19 @@ if ($account == 0 ) {
ExecuteScript($cn,'sql/mod1/schema.sql');
ExecuteScript($cn,'sql/mod1/data.sql');
Commit($cn);
if ( DEBUG=='false') ob_end_clean();
echo "Creation of Modele2";
ExecSql($cn,"create database ".domaine."mod2 encoding='latin1'");
$cn=DbConnect(2,'mod');
StartSql($cn);
if ( DEBUG=='false') { ob_start(); }
ExecuteScript($cn,'sql/mod2/schema.sql');
ExecuteScript($cn,'sql/mod2/data.sql');
Commit($cn);
if ( DEBUG=='false') ob_end_clean();
}// end if
// Add a french accountancy model
//--
@ -358,19 +368,6 @@ $cn=DbConnect();
// ExecSql($cn,"delete from modeledef where mod_id=2");
// }
//----------------------------------------------------------------------
$Res=CountSql($cn,"select * from modeledef where mod_id=2");
if ( $Res == 0) {
echo "Creation of Modele2";
ExecSql($cn,"create database ".domaine."mod2 encoding='latin1'");
$cn=DbConnect(2,'mod');
if ( DEBUG=='false') { ob_start(); }
ExecuteScript($cn,'sql/mod2/schema.sql');
ExecuteScript($cn,'sql/mod2/data.sql');
$sql="INSERT INTO modeledef VALUES (2, '(FR) Basique', 'Comptabilité Française, tout doit être adaptée');";
$cn=DbConnect();
ExecSql($cn,$sql);
if ( DEBUG=='false') ob_end_clean();
}
//
// Test the connection
//--
@ -506,6 +503,9 @@ if ( DEBUG=='false' ) ob_start();
if ( GetVersion($db) == 27 ) {
ExecuteScript($db,'sql/patch/upgrade27.sql');
} // version
if ( GetVersion($db) == 28 ) {
ExecuteScript($db,'sql/patch/upgrade28.sql');
} // version
if ( DEBUG == 'false') ob_end_clean();
}//for
@ -625,6 +625,9 @@ if (DEBUG == 'false' ) ob_start();
if ( GetVersion($db) == 27 ) {
ExecuteScript($db,'sql/patch/upgrade27.sql');
} // version
if ( GetVersion($db) == 28 ) {
ExecuteScript($db,'sql/patch/upgrade28.sql');
} // version
if ( DEBUG == 'false') ob_end_clean();
}

View file

@ -0,0 +1,10 @@
begin;
delete from user_sec_act where ua_act_id in (2,9,19,18);
delete from action where ac_id=2;
delete from action where ac_id=9;
delete from action where ac_id=19;
delete from action where ac_id=18;
update action set ac_description='Lecture du Grand-Livre' where ac_id=1;
update version set val=29;
commit;

View file

@ -166,6 +166,12 @@ if ( $p_action == 'bank')
// Impression
if ( $p_action == 'impress')
{
if ( $User->CheckAction($cn,IMP) == 0)
{
NoAccess();
exit;
}
require_once("impress.inc.php");
}
if ( $p_action == 'fiche') {

View file

@ -50,6 +50,12 @@ $action=$_REQUEST['p_action'];
// call impress sub-menu
if ( $action == 'impress' ) {
if ( $User->CheckAction($cn,IMP) == 0)
{
NoAccess();
exit;
}
require_once('impress.inc.php');
}
if ( $action == 'fiche') {

View file

@ -76,7 +76,7 @@ BODY {
<script src="js/scripts.js" type="text/javascript"></script>
</head>
<BODY onLoad="SetFocus(\'login\',0)">
Version 2.3.1
Version 2.3.2
<div class="remark">
<p class="gras">Il est conseill&eacute; de ne PAS utiliser Internet Explorer.
</p><p>

View file

@ -73,7 +73,7 @@ if ( isset($_GET['filter'])) {
// have to find what account are available
$SqlCred="";
// Load the property
$l_line=GetJrnProperty($cn,$_GET['p_jrn']);
$l_line=GetJrnProp($cn,$_GET['p_jrn']);
if ( strlen(trim ($l_line['jrn_def_class_cred']) ) > 0 ) {
$valid_cred=split(" ",$l_line['jrn_def_class_cred']);

View file

@ -54,13 +54,13 @@ echo '</div>';
if ( $User->admin == 0 ) {
// check if user can access
if (CheckAction($_SESSION['g_dossier'],$_SESSION['g_user'],ENCJRN) == 0 ){
// Acces Grand livre
if ($p_jrn == -1 && CheckAction($_SESSION['g_dossier'],$_SESSION['g_user'],ENCJRN) == 0 ){
/* Cannot Access */
NoAccess();
}
// if a jrn is asked
if ( $p_jrn != -1 ) {
if (CheckJrn($_SESSION['g_dossier'],$_SESSION['g_user'],$p_jrn) == 0 ){
if ( $p_jrn != -1 && CheckJrn($_SESSION['g_dossier'],$_SESSION['g_user'],$p_jrn) == 0 ){
/* Cannot Access */
NoAccess();
exit -1;

View file

@ -40,7 +40,7 @@ include_once ("user_menu.php");
$cn_dossier=DbConnect($_SESSION['g_dossier']);
if ( $User->CheckAction($cn_dossier,SECU) == 0 ) {
if ( $User->CheckAction($cn_dossier,GJRN) == 0 ) {
/* Cannot Access */
NoAccess();
exit -1;
@ -92,7 +92,7 @@ foreach ($_GET as $name=>$value)
if ( $action == "change_jrn" ) {
// Check if the user can access that folder
if ( CheckDossier($_GET['login'],$_SESSION['g_dossier']) == 0 ) {
echo "<H2 class=\"error\">he cannot access this folder</H2>";
echo "<H2 class=\"error\">Cet utilisateur ne peut pas acc&eacute;der ce dossier</H2>";
$action="";
return;
}

View file

@ -44,7 +44,7 @@ if ( isset ($_POST['delete']) )
// Add card
if ( $sub_action=="insert" )
{
$retour=sprintf('<A class="two" HREF="%s"><input type="button" value="Retour"></A>',
$retour=sprintf('<A class="mtitle" HREF="%s"><input type="button" value="Retour"></A>',
urldecode($_REQUEST['url']));
$admin=new Admin($cn);
@ -73,7 +73,7 @@ if ( $sub_action == "" )
//Display a blank card
if ( $sub_action=="blank")
{
$retour=sprintf('<A class="two" HREF="%s"><input type="button" value="Retour"></A>',
$retour=sprintf('<A class="mtitle" HREF="%s"><input type="button" value="Retour"></A>',
"commercial.php?p_action=admin");
echo '<div class="u_redcontent">';
@ -141,7 +141,7 @@ if ( $sub_action == 'detail' )
$f_id=$_REQUEST['f_id'];
echo '<div class="u_redcontent">';
$sup=new Admin($cn,$f_id);
$retour=sprintf('<A class="two" HREF="%s"><input type="button" value="Retour"></A>',
$retour=sprintf('<A class="mtitle" HREF="%s"><input type="button" value="Retour"></A>',
urldecode($_REQUEST['url']));
echo $retour;
echo '<form action="'.$_REQUEST['url'].'" method="post">';

View file

@ -46,7 +46,7 @@ if ( isset ($_POST['delete']) )
if ( $sub_action=="insert" )
{
$retour=sprintf('<A class="two" HREF="%s"><input type="button" value="Retour"></A>',
$retour=sprintf('<A class="mtitle" HREF="%s"><input type="button" value="Retour"></A>',
urldecode($_REQUEST['url']));
$customer=new Customer($cn);
@ -77,7 +77,7 @@ if ( $sub_action == "" )
if ( $sub_action=="blank")
{
$retour=sprintf('<A class="two" HREF="%s"><input type="button" value="Retour"></A>',
$retour=sprintf('<A class="mtitle" HREF="%s"><input type="button" value="Retour"></A>',
"commercial.php?p_action=client");
echo '<div class="u_redcontent">';
@ -145,7 +145,7 @@ if ( $sub_action == 'detail' )
$f_id=$_REQUEST['f_id'];
echo '<div class="u_redcontent">';
$client=new Customer($cn,$f_id);
$retour=sprintf('<A class="two" HREF="%s"><input type="button" value="Retour"></A>',
$retour=sprintf('<A class="mtitle" HREF="%s"><input type="button" value="Retour"></A>',
urldecode($_REQUEST['url']));
echo $retour;
echo '<form action="'.$_REQUEST['url'].'" method="post">';

View file

@ -35,7 +35,7 @@ define ("DEBUG","false");
// access aux journaux
define ("ENCJRN",1);
// création facture
define("FACT",2);
// define("FACT",2);
// lecture aux fiche
define ("FICHE_READ",3);
// Impression
@ -48,12 +48,6 @@ define ("MPCMN",6);
define ("GJRN",7);
// Gestion des paramètres globaux
define ("PARM",8);
// Gestion de la sécurité
define ("SECU",9);
// gestion devise
define ("DEVISE",18);
// gestion Période
define ("PERIODE",19);
// Voir la balance des compte
define ("BALANCE",20);
// Access à la centralisation
@ -70,8 +64,8 @@ define("ADMIN",26); // Module Administration
define("SEC_GESTION",30); // Module Gestion
define ("FICHE_WRITE",15);
define ("STOCK_WRITE",16);
define ("STOCK_READ",17);
define ("STOCK_WRITE",17);
define ("STOCK_READ",16);
define ("EXP_IMP_ECR",21);
define ("IMP_BQE",22);
// Erreur

View file

@ -86,7 +86,7 @@ if ( $sub_action == "" )
//Display a blank card
if ( $sub_action=="blank")
{
$retour_action=sprintf('<A class="two" HREF="%s"><input type="button" value="Retour"></A>',
$retour_action=sprintf('<A class="mtitle" HREF="%s"><input type="button" value="Retour"></A>',
"commercial.php?p_action=contact");
echo '<div class="u_redcontent">';

View file

@ -21,6 +21,7 @@
/*! \file
* \brief Main page for the printing
*/
require_once("check_priv.php");
// show sub menu

View file

@ -22,246 +22,6 @@
* \brief work with the ledger
*/
require_once('class_fiche.php');
/*!
* \brief Record an entry in the selected journal
*
* \param p_dossier dossier id
* \param p_user user id
* \param p_jrn selected journal
*
* \return none
*
*
*/
function RecordJrn($p_dossier,$p_user,$p_jrn,$p_MaxDeb,$p_MaxCred,$p_array = null,$p_update=0)
{
include_once("postgres.php");
include_once("preference.php");
echo_debug('jrn.php',__LINE__,"RecordJrn($p_dossier,$p_user,$p_jrn,$p_MaxDeb,$p_MaxCred,$p_array,$p_update)");
for ( $i = 0; $i < $p_MaxDeb; $i++) {
${"e_class_deb$i"}=0;
${"e_mont_deb$i"}=0;
}
for ( $i = 0; $i < $p_MaxCred; $i++) {
${"e_class_cred$i"}=0;
${"e_mont_cred$i"}=0;
}
$cn=DbConnect($p_dossier);
// userPref contient la periode par default
$userPref=GetUserPeriode($cn,$p_user);
list ($l_date_start,$l_date_end)=GetPeriode($cn,$userPref);
$e_op_rem=substr($l_date_start,2,8);
if ( $p_array == null ) {
$e_op_date="01";
$e_comment="";
$e_rapt="";
$e_ech="";
$e_sum_deb=0;
$e_sum_cred=0;
} else {
foreach ( $p_array as $n=>$e) {
${"e_$n"}= $e;
}
}
/* Get Jrn's properties */
$l_line=GetJrnProperty($cn,$p_jrn);
if ( $l_line == null ) return;
echo '<DIV class="redcontent">';
echo '<FORM NAME="encoding" ACTION="enc_jrn.php" METHOD="POST">';
printf ('<H2 class="info"> %s %s </H2>',$l_line['jrn_def_name'],$l_line['jrn_def_code']);
echo "<INPUT TYPE=HIDDEN NAME=\"MaxDeb\" VALUE=\"$p_MaxDeb\">";
echo "<INPUT TYPE=HIDDEN NAME=\"MaxCred\" VALUE=\"$p_MaxCred\">";
echo 'Date : <INPUT TYPE="TEXT" NAME="op_date" VALUE="'.
$e_op_date.'" SIZE="4">'.
$e_op_rem;
// Comment
echo '<br><SPAN>Comment = <INPUT TYPE="TEXT" SIZE="70" NAME="comment" VALUE="'.$e_comment.'"></span>';
// Chargement comptes disponibles
if ( strlen(trim ($l_line['jrn_def_class_deb']) ) > 0 ) {
$valid_deb=split(" ",$l_line['jrn_def_class_deb']);
// Creation query
$SqlDeb="select pcm_val,pcm_lib from tmp_pcmn where ";
foreach ( $valid_deb as $item_deb) {
if ( strlen (trim($item_deb))) {
echo_debug('jrn.php',__LINE__,"l_line[jrn_def_class_deb] $l_line[jrn_def_class_deb] item_deb $item_deb");
if ( strstr($item_deb,"*") == true ) {
$item_deb=strtr($item_deb,"*","%");
$Sql=" pcm_val like '$item_deb' or";
} else {
$Sql=" pcm_val = '$item_deb' or";
}
$SqlDeb=$SqlDeb.$Sql;
}
}
$SqlDeb = substr($SqlDeb,0,strlen($SqlDeb)-2)." order by pcm_val::text";
} else
{
$SqlDeb="select pcm_val,pcm_lib from tmp_pcmn order by pcm_val::text";
}
echo_debug('jrn.php',__LINE__,"SqlDeb $SqlDeb");
$Res=ExecSql($cn,$SqlDeb);
$Count=pg_NumRows($Res);
for ( $i=0;$i<$Count;$i++) {
$l2_line=pg_fetch_array($Res,$i);
$lib=substr($l2_line['pcm_lib'],0,35);
$poste [$l2_line['pcm_val']]= $lib;
}
echo "<TABLE>";
echo '<TR><TD><H2 class="info"> débit </H2></TD></TR>';
for ( $i=0;$i < $p_MaxDeb;$i++) {
echo "<tr>";
echo "<TD>";
printf ('<SELECT NAME="class_deb%d">',$i);
foreach ( $poste as $key => $value){
$selected="";
if ( ${"e_class_deb$i"} == $key ) $selected="SELECTED";
$a=sprintf('<OPTION VALUE="%s" %s >%s - % .40s',
$key,
$selected,
$key,
$value);
echo $a;
}
echo "</SELECT>";
printf ('</TD>');
printf('<TD> Montant :<INPUT TYPE="TEXT" id="mont_deb%d" NAME="mont_deb%d" VALUE="%s" onChange="CheckTotal()"></TD>',
$i,$i,${"e_mont_deb$i"},$i);
echo "</tr>";
}
// Total debit
echo '<TR><TD>';
echo 'Total ';
echo '</TD><TD>';
echo '<input type="TEXT" NAME="sum_deb" VALUE="'.$e_sum_deb.'" onChange="CheckTotal()">';
echo '</TD></TR>';
if ( $p_update == 0 ) echo "<TR><TD> <INPUT TYPE=\"SUBMIT\" VALUE=\"+ de line\" NAME=\"add_line_deb\"></TD></TR>";
echo '<TR><TD><H2 class="info"> crédit </H2> </TD></TR>';
// Chargement comptes disponibles
if ( strlen(trim ($l_line['jrn_def_class_cred']) ) > 0 ) {
$valid_cred=split(" ",$l_line['jrn_def_class_cred']);
// Creation query
$SqlCred="select pcm_val,pcm_lib from tmp_pcmn where ";
foreach ( $valid_cred as $item_cred) {
if ( strlen (trim($item_cred))) {
echo_debug('jrn.php',__LINE__,"l_line[jrn_def_class_cred] $l_line[jrn_def_class_cred] item_cred $item_cred");
if ( strstr($item_cred,"*") == true ) {
$item_cred=strtr($item_cred,"*","%");
$Sql=" pcm_val like '$item_cred' or";
} else {
$Sql=" pcm_val = '$item_cred' or";
}
$SqlCred=$SqlCred.$Sql;
}
}
$SqlCred = substr($SqlCred,0,strlen($SqlCred)-2)." order by pcm_val::text" ;
} else
{
$SqlCred="select pcm_val,pcm_lib from tmp_pcmn order by pcm_val::text";
}
echo_debug('jrn.php',__LINE__,"SqlCred $SqlCred");
$Res=ExecSql($cn,$SqlCred);
$Count=pg_NumRows($Res);
for ( $i=0;$i<$Count;$i++) {
$l2_line=pg_fetch_array($Res,$i);
$lib=substr($l2_line['pcm_lib'],0,35);
$poste_c[$l2_line['pcm_val']]=$lib;
}
for ( $i=0;$i < $p_MaxCred;$i++) {
echo "<tr>";
echo "<TD>";
printf ('<SELECT NAME="class_cred%d">',$i);
foreach ( $poste_c as $key => $value){
$selected="";
if ( ${"e_class_cred$i"} == $key ) $selected="SELECTED";
$a=sprintf('<OPTION VALUE="%s" %s >%s - % .40s',
$key,
$selected,
$key,
$value);
echo $a;
}
echo "</SELECT>";
echo "</TD>";
printf ('<TD> Montant :<INPUT TYPE="TEXT" id="mont_cred%d" NAME="mont_cred%d" VALUE="%s" onChange="CheckTotal()"></TD>',
$i,$i,${"e_mont_cred$i"});
echo "</tr>";
}
// Total Credit
echo '<TR><TD>';
echo 'Total';
echo '</TD><TD>';
echo '<input type="TEXT" NAME="sum_cred" VALUE="'.$e_sum_cred.'" onChange="CheckTotal()">';
echo '</TD></TR>';
echo "<TR><TD> <INPUT TYPE=\"SUBMIT\" VALUE=\"+ de line\" NAME=\"add_line_cred\"></TD></TR>";
if ( isset ($_GET["PHPSESSID"]) ) {
$sessid=$_GET["PHPSESSID"];
}
else {
$sessid=$_POST["PHPSESSID"];
}
$search='<INPUT TYPE="BUTTON" VALUE="Cherche" OnClick="SearchJrn(\''.$sessid."','rapt','$e_sum_cred')\">";
echo_debug('jrn.php',__LINE__,"search $search");
// To avoid problem with unknown variable
if ( ! isset ($e_rapt) ) {
$e_rapt="";
}
echo '<TR><TD colspan="2">
rapprochement : <INPUT TYPE="TEXT" name="rapt" value="'.$e_rapt.'">'.$search.'</TD></TR>';
echo "</TABLE>";
// To avoid problem with unknown variable
if ( ! isset ($e_comment) ) {
$e_comment="";
}
if ( $p_update==0) {
echo '<input type="submit" Name="add_record" Value="Enregistre">';
} else {
echo '<input type="submit" Name="update_record" Value="Enregistre">';
}
echo '<input type="reset" Value="Efface">';
// To avoid problem with unknown variable
if ( ! isset ($e_sum_deb) ) {
$e_sum_deb=0;
}
// To avoid problem with unknown variable
if ( ! isset ($e_sum_cred) ) {
$e_sum_cred=0;
}
echo '<SPAN ID="diff"></SPAN>';
echo "</FORM>";
echo '</DIV>';
}
/*!
* \brief Display the form to UPDATE account operation
*
@ -396,140 +156,6 @@ if ( $p_update == 0 ) echo "<TR><TD> <INPUT TYPE=\"SUBMIT\" VALUE=\"+ de line\"
return $r;
}
/*!
* \brief debug function to be dropped
*
* parm :
* -
* gen :
* -
* return:
* -
*
*/
function ViewRec($p_array = null) {
if ($p_array == null) {
echo_debug('jrn.php',__LINE__,"p_array is null");
}else {
foreach ( $p_array as $n=>$e) {
echo_debug('jrn.php',__LINE__,"a[$n]= $e");
}
}
}
/*!
* \brief Call the RecordJrn. In fact does nothing
*
* parm :
* - the same as RecordJrn
* gen :
* - none
* return:
* - none
*
*/
function CorrectRecord($p_dossier,$p_user,$p_jrn,$p_MaxDeb,$p_MaxCred,$p_array)
{
RecordJrn($p_dossier,$p_user,$p_jrn,$p_MaxDeb,$p_MaxCred,$p_array);
}
/*!
* \brief View the added operation
*
* parm :
* - p_dossier
* - p_jrn
* - p_id
* - p_MaxDeb
* - p_MaxCred
* - p_array
* gen :
* - none
* return:
* - none
*
*/
function ViewRecord ($p_dossier,$p_jrn,$p_id,$p_MaxDeb,$p_MaxCred,$p_array)
{
echo_debug ("ViewRecord : $p_dossier");
echo_debug('jrn.php',__LINE__,"function ViewRecord ($p_dossier,$p_jrn,$p_id,$p_MaxCred,$p_MaxDeb,$p_array)");
foreach ( $p_array as $key=>$element) {
${"e_$key"}=$element;
echo_debug('jrn.php',__LINE__," e_$key=$element;");
}
// Get Jrn's Prop
$l_prop=GetJrnProp($p_dossier,$p_jrn);
include_once("poste.php");
if ( $l_prop == null ) return;
$col_vide="<TD></TD>";
echo '<TABLE ALIGN=CENTER BORDER=1 style="border-style:groove">';
echo '<TR>';
echo "<TD>". $l_prop['jrn_def_name']."(".$l_prop['jrn_def_code'].") </TD>";
echo "<TD> Date : $e_op_date</TD>";
echo "</TR>";
echo "</TABLE>";
echo "<table width=600 border=0>";
echo "<TR><TD>operation $p_id</TD></TR>";
for ($i = 0; $i < $p_MaxDeb;$i++) {
//Deb
if ( strlen(trim(${"e_mont_deb$i"})) > 0 && ${"e_mont_deb$i"} > 0 ) {
$class=GetPosteLibelle($p_dossier,${"e_class_deb$i"});
echo '<TR style="background-color:lightblue"><TD>'.${"e_class_deb$i"}."</TD>$col_vide<TD> $class </TD> <TD>".${"e_mont_deb$i"}."</TD>$col_vide</TR>";
}
}
// Cred
for ($i = 0; $i < $p_MaxCred;$i++) {
if ( strlen(trim(${"e_mont_cred$i"})) > 0 && ${"e_mont_cred$i"} > 0 ) {
$class=GetPosteLibelle($p_dossier,${"e_class_cred$i"});
echo '<TR style="background-color:lightgreen;">'.$col_vide.'<TD>'.${"e_class_cred$i"}."</TD><TD> $class </TD>$col_vide <TD>".${"e_mont_cred$i"}."</TD></TR>";
}
}
echo "<TR style=\"background-color:lightgray\">";
echo $col_vide;
echo $col_vide;
echo "<TD align=\"center\"> Total</TD>";
echo "<TD> $e_sum_deb</TD><TD> $e_sum_cred</TD>";
echo "</TABLE>";
// Bouton again
echo '<table align="center">';
echo '<TR><TD class="mtitle">';
echo ' <A class="mtitle" HREF="enc_jrn.php?action=record&max_deb='.$l_prop['jrn_deb_max_line'].'&max_cred='.$l_prop['jrn_cred_max_line'].'&p_jrn='.$p_jrn.'"> Ajouter</A>';
echo '</TD></TR></TABLE>';
}
/*!
* \brief Get the properties of a journal
*
* parm :
* - p_cn database connection
* - p_jrn the jrn id
* gen :
* - none
* return:
* - an array containing properties
*
*/
function GetJrnProperty($p_cn,$p_jrn)
{
$Res=ExecSql($p_cn,"select jrn_Def_id,jrn_def_name,jrn_def_class_deb,jrn_def_class_cred,jrn_def_type,
jrn_deb_max_line,jrn_cred_max_line,jrn_def_ech,jrn_def_ech_lib,jrn_def_code,
jrn_def_fiche_deb,jrn_def_fiche_deb
from jrn_Def
where jrn_def_id=$p_jrn");
$Count=pg_NumRows($Res);
if ( $Count == 0 ) {
echo '<DIV="redcontent"><H2 class="error"> Paramètres journaux non trouvés</H2> </DIV>';
return null;
}
return pg_fetch_array($Res,0);
}
/*!
* \brief Get the properties of a journal
*
@ -544,6 +170,7 @@ function GetJrnProperty($p_cn,$p_jrn)
*/
function GetJrnProp($p_dossier,$p_jrn,$is_connected=0)
{
echo_debug("jrn.php",__LINE__,"GetJrnProp");
if ( $is_connected == 0 )
$cn=DbConnect($p_dossier);
else
@ -947,11 +574,12 @@ function SetInternalCode($p_cn,$p_grpt,$p_jrn)
//$num=CountSql($p_cn,"select * from jrn where jr_def_id=$p_jrn and jr_internal != 'ANNULE'")+1;
$num = NextSequence($p_cn,'s_internal');
$num=strtoupper(hexdec($num));
$atype=GetJrnProperty($p_cn,$p_jrn);
$atype=GetJrnProp($_SESSION['g_dossier'],$p_jrn);
$type=$atype['jrn_def_code'];
$internal_code=sprintf("%d%s-%s",$_SESSION['g_dossier'],$type,$num);
$Res=ExecSql($p_cn,"update jrn set jr_internal='".$internal_code."' where ".
" jr_grpt_id = ".$p_grpt);
echo_debug ("jrn.php",__LINE__,"internal_code = $internal_code");
return $internal_code;
}
/*!

View file

@ -49,7 +49,7 @@ SyncRight($_SESSION['g_dossier'],$_SESSION['g_user']);
// Get The priv on the selected folder
if ( $User->admin == 0 ) {
$r=GetPriv($_SESSION['g_dossier'],$_SESSION['g_user']);
$r=CheckAction($_SESSION['g_dossier'],$_SESSION['g_user'],STOCK_READ);
if ($r == 0 ){
/* Cannot Access */
NoAccess();
@ -77,6 +77,12 @@ include_once("stock_inc.php");
// Adjust the stock
if ( isset ($_POST['sub_change']))
{
if ( CheckAction($_SESSION['g_dossier'],$_SESSION['g_user'],STOCK_WRITE) == 0 )
{
/* Cannot Access */
NoAccess();
}
$change=$_POST['stock_change'];
$sg_code=$_POST['sg_code'];
$sg_date=$_POST['sg_date'];
@ -153,19 +159,26 @@ if ( $action == 'detail' ) {
$sg_code=(isset ($_GET['sg_code'] ))?$_GET['sg_code']:$_POST['sg_code'];
$year=(isset($_GET['year']))?$_GET['year']:$_POST['year'];
$a=ViewDetailStock($cn,$sg_code,$year);
$write=CheckAction($_SESSION['g_dossier'],$_SESSION['g_user'],STOCK_WRITE);
$b=ChangeStock($sg_code,$year);
echo '<div class="u_redcontent">' ;
echo $a;
echo 'Entrer la valeur qui doit augmenter ou diminuer le stock';
echo '<form action="?p_action=stock" method="POST">';
echo $b;
echo '<input type="submit" name="sub_change" value="Ok">';
echo '<A class="mtitle" HREF="?p_action=stock"><INPUT TYPE="BUTTON" value="Retour"</A>';
$b="";
echo '</form>';
echo '</div>';
exit();
echo '<div class="u_redcontent">' ;
echo $a;
if ( $write != 0)
{
echo 'Entrer la valeur qui doit augmenter ou diminuer le stock';
echo '<form action="?p_action=stock" method="POST">';
echo ChangeStock($sg_code,$year);
echo '<input type="submit" name="sub_change" value="Ok">';
echo '</form>';
}
echo '<A class="mtitle" HREF="?p_action=stock"><INPUT TYPE="BUTTON" value="Retour"</A>';
echo '</div>';
exit();
}
// Show the possible years

View file

@ -44,7 +44,7 @@ if ( isset ($_POST['delete']) )
// Add card
if ( $sub_action=="insert" )
{
$retour=sprintf('<A class="two" HREF="%s"><input type="button" value="Retour"></A>',
$retour=sprintf('<A class="mtitle" HREF="%s"><input type="button" value="Retour"></A>',
urldecode($_REQUEST['url']));
$supplier=new Supplier($cn);
@ -73,7 +73,7 @@ if ( $sub_action == "" )
//Display a blank card
if ( $sub_action=="blank")
{
$retour=sprintf('<A class="two" HREF="%s"><input type="button" value="Retour"></A>',
$retour=sprintf('<A class="mtitle" HREF="%s"><input type="button" value="Retour"></A>',
"commercial.php?p_action=fournisseur");
echo '<div class="u_redcontent">';
@ -141,7 +141,7 @@ if ( $sub_action == 'detail' )
$f_id=$_REQUEST['f_id'];
echo '<div class="u_redcontent">';
$sup=new Supplier($cn,$f_id);
$retour=sprintf('<A class="two" HREF="%s"><input type="button" value="Retour"></A>',
$retour=sprintf('<A class="mtitle" HREF="%s"><input type="button" value="Retour"></A>',
urldecode($_REQUEST['url']));
echo $retour;
echo '<form action="'.$_REQUEST['url'].'" method="post">';

View file

@ -26,6 +26,7 @@ require_once("user_form_ven.php");
include_once("class_widget.php");
require_once("class_jrn.php");
$cn=DbConnect($_SESSION['g_dossier']);
// default action is insert_vente
if ( ! isset ($_GET['action']) && ! isset ($_POST["action"]) ) {
exit;
@ -35,6 +36,10 @@ if ( ! isset ($_GET['action']) && ! isset ($_POST["action"]) ) {
}
if ( $action == 'insert_vente' ) {
if ( CheckJrn($_SESSION['g_dossier'],$_SESSION['g_user'],$_GET['p_jrn']) != 2 ) {
NoAccess();
exit -1;
}
// Add item
if (isset($_POST["add_item"]) ) {

View file

@ -303,7 +303,8 @@ function InsertJrnx($p_cn,$p_type,$p_user,$p_jrn,$p_poste,$p_date,$p_amount,$p_g
function InsertJrn($p_cn,$p_date,$p_echeance,$p_jrn,$p_comment,$p_grpt,$p_periode)
{
echo_debug ('user_common.php',__LINE__,"InsertJrn param
p_date $p_date p_poste $p_comment p_amount p_grpt = $p_grpt p_periode = $p_periode p_echeance = $p_echeance
p_date $p_date p_poste $p_comment p_amount
p_grpt = $p_grpt p_periode = $p_periode p_echeance = $p_echeance
comment = $p_comment");
$p_comment=FormatString($p_comment);

View file

@ -141,7 +141,7 @@ function FormODS($p_cn,$p_jrn,$p_periode,$p_submit,$p_array=null,$pview_only=tru
}
// code
// Do we need a filter ?
$l_line=GetJrnProperty($p_cn,$p_jrn);
$l_line=GetJrnProp($p_cn,$p_jrn);
if( strlen(trim ($l_line['jrn_def_class_cred']) ) > 0 or
strlen(trim ($l_line['jrn_def_class_deb']) ) > 0 ) {
$filter=1;

View file

@ -393,7 +393,6 @@ function u_ShowMenuRecherche($p_cn,$p_jrn,$p_sessid,$p_array=null)
}
// Find the journal property
// $JrnProperty=GetJrnProperty($p_cn,$p_jrn);
$opt='<OPTION VALUE="="> =';
$opt.='<OPTION VALUE="<="> <=';

View file

@ -1,6 +1,6 @@
#!/bin/bash
# clean all phpcompta related DB.
DOMAIN="test_"
DOMAIN="v232_"
dropdb -U phpcompta -h localhost ${DOMAIN}account_repository
dropdb -U phpcompta -h localhost ${DOMAIN}dossier1
dropdb -U phpcompta -h localhost ${DOMAIN}dossier3