From 33a3c4245172986e1cdabd77a8c592a1df0dd964 Mon Sep 17 00:00:00 2001 From: sparkyx Date: Wed, 2 May 2007 20:36:35 +0000 Subject: [PATCH] =?UTF-8?q?Int=C3=A9gration=20rel232?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- INSTALL-fr.txt | 75 +++--- doc/FAQ-fr.txt | 112 +++------ doc/manuel-fr.sgml | 34 ++- html/admin/setup.php | 33 +-- html/admin/sql/patch/upgrade28.sql | 10 + html/commercial.php | 6 + html/compta.php | 6 + html/index.php | 2 +- html/poste_search.php | 2 +- html/user_jrn.php | 6 +- html/user_sec.php | 4 +- include/admin.inc.php | 6 +- include/client.inc.php | 6 +- include/constant.php | 12 +- include/contact.inc.php | 2 +- include/impress.inc.php | 1 + include/jrn.php | 378 +---------------------------- include/stock.inc.php | 37 ++- include/supplier.inc.php | 6 +- include/user_action_ven.php | 5 + include/user_common.php | 3 +- include/user_form_ods.php | 2 +- include/user_menu.php | 1 - scripts/cleanup.sh | 2 +- 24 files changed, 211 insertions(+), 540 deletions(-) create mode 100644 html/admin/sql/patch/upgrade28.sql diff --git a/INSTALL-fr.txt b/INSTALL-fr.txt index bc0c6b212..72b373ad2 100644 --- a/INSTALL-fr.txt +++ b/INSTALL-fr.txt @@ -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 , site savan- - nah PhpCompta Savannah + Compta PhpCompta , site savannah PhpCompta + Savannah ______________________________________________________________________ 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 + + Il existe aussi un manuel d'installation exhaustif pour Debian, pleins + d'informations utiles Manuel pour Debian + . + 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 - - - - - Note certains ont fait ceci pour configurer Apache - - - 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" + + Servername ... + DocumentRoot /var/www/acapulco/htdocs + + 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 + + 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 diff --git a/doc/FAQ-fr.txt b/doc/FAQ-fr.txt index c614b8bdb..c22055ace 100644 --- a/doc/FAQ-fr.txt +++ b/doc/FAQ-fr.txt @@ -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 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 diff --git a/doc/manuel-fr.sgml b/doc/manuel-fr.sgml index 4c2cc40f8..a44c0640e 100644 --- a/doc/manuel-fr.sgml +++ b/doc/manuel-fr.sgml @@ -540,7 +540,7 @@ il est n Sécurité - Remarques + Introduction

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. +

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. + +

+Les actions + + Accès au Grand Livre : vous permet d'accèder au GrandLivre et +donc de voir toutes les opérations. + Impression : accès aux impressions + Formulaire : menu avancé, vous permet de créer vos propres +formulaires + Mise à jour Plan Comptable + Gestion Journaux : dans le menu avancé, configuration des journaux + Paramètres : gestion des taux TVA, paramètre société, ... + Centralise + Fiche Read : pour rechercher une fiche + Voir le stock + 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. + Fiche ajout : pour pouvoir ajouter une fiche + Voir la balance des comptes : pour voir la balance des comptes, +nécessaire d'avoir aussi l'accès Impression + Import et export des écritures d'ouverture + Module Suivi Document : module gestion + Module Client : module gestion + Module Fournisseur : module gestion + Module Administration : module gestion + Module Gestion: module gestion + + + Gestion de stock diff --git a/html/admin/setup.php b/html/admin/setup.php index 2c5d1392d..da83379c5 100644 --- a/html/admin/setup.php +++ b/html/admin/setup.php @@ -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(); } diff --git a/html/admin/sql/patch/upgrade28.sql b/html/admin/sql/patch/upgrade28.sql new file mode 100644 index 000000000..435c9a88a --- /dev/null +++ b/html/admin/sql/patch/upgrade28.sql @@ -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; \ No newline at end of file diff --git a/html/commercial.php b/html/commercial.php index 0abf7fef0..374b8658a 100644 --- a/html/commercial.php +++ b/html/commercial.php @@ -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') { diff --git a/html/compta.php b/html/compta.php index 06e6daca5..4a4bd8783 100644 --- a/html/compta.php +++ b/html/compta.php @@ -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') { diff --git a/html/index.php b/html/index.php index 223e38dc2..9a32d0b83 100644 --- a/html/index.php +++ b/html/index.php @@ -76,7 +76,7 @@ BODY { -Version 2.3.1 +Version 2.3.2

Il est conseillé de ne PAS utiliser Internet Explorer.

diff --git a/html/poste_search.php b/html/poste_search.php index 53a57b6c1..e91930337 100644 --- a/html/poste_search.php +++ b/html/poste_search.php @@ -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']); diff --git a/html/user_jrn.php b/html/user_jrn.php index cd38f4f7b..a9555715b 100644 --- a/html/user_jrn.php +++ b/html/user_jrn.php @@ -54,13 +54,13 @@ echo '

'; 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; diff --git a/html/user_sec.php b/html/user_sec.php index b53f91441..a5906a3af 100644 --- a/html/user_sec.php +++ b/html/user_sec.php @@ -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 "

he cannot access this folder

"; + echo "

Cet utilisateur ne peut pas accéder ce dossier

"; $action=""; return; } diff --git a/include/admin.inc.php b/include/admin.inc.php index f3a310d19..f53204ebf 100644 --- a/include/admin.inc.php +++ b/include/admin.inc.php @@ -44,7 +44,7 @@ if ( isset ($_POST['delete']) ) // Add card if ( $sub_action=="insert" ) { - $retour=sprintf('', + $retour=sprintf('', urldecode($_REQUEST['url'])); $admin=new Admin($cn); @@ -73,7 +73,7 @@ if ( $sub_action == "" ) //Display a blank card if ( $sub_action=="blank") { - $retour=sprintf('', + $retour=sprintf('', "commercial.php?p_action=admin"); echo '
'; @@ -141,7 +141,7 @@ if ( $sub_action == 'detail' ) $f_id=$_REQUEST['f_id']; echo '
'; $sup=new Admin($cn,$f_id); - $retour=sprintf('', + $retour=sprintf('', urldecode($_REQUEST['url'])); echo $retour; echo '
'; diff --git a/include/client.inc.php b/include/client.inc.php index 9439f4618..eab3bf894 100644 --- a/include/client.inc.php +++ b/include/client.inc.php @@ -46,7 +46,7 @@ if ( isset ($_POST['delete']) ) if ( $sub_action=="insert" ) { - $retour=sprintf('', + $retour=sprintf('', urldecode($_REQUEST['url'])); $customer=new Customer($cn); @@ -77,7 +77,7 @@ if ( $sub_action == "" ) if ( $sub_action=="blank") { - $retour=sprintf('', + $retour=sprintf('', "commercial.php?p_action=client"); echo '
'; @@ -145,7 +145,7 @@ if ( $sub_action == 'detail' ) $f_id=$_REQUEST['f_id']; echo '
'; $client=new Customer($cn,$f_id); - $retour=sprintf('', + $retour=sprintf('', urldecode($_REQUEST['url'])); echo $retour; echo ''; diff --git a/include/constant.php b/include/constant.php index 77b73b0b8..7b43370fe 100644 --- a/include/constant.php +++ b/include/constant.php @@ -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 diff --git a/include/contact.inc.php b/include/contact.inc.php index 96f5e7bc7..a03fdeb2b 100644 --- a/include/contact.inc.php +++ b/include/contact.inc.php @@ -86,7 +86,7 @@ if ( $sub_action == "" ) //Display a blank card if ( $sub_action=="blank") { - $retour_action=sprintf('', + $retour_action=sprintf('', "commercial.php?p_action=contact"); echo '
'; diff --git a/include/impress.inc.php b/include/impress.inc.php index e9ad96837..af49ee302 100644 --- a/include/impress.inc.php +++ b/include/impress.inc.php @@ -21,6 +21,7 @@ /*! \file * \brief Main page for the printing */ +require_once("check_priv.php"); // show sub menu diff --git a/include/jrn.php b/include/jrn.php index c4d9f94f8..33f2553da 100644 --- a/include/jrn.php +++ b/include/jrn.php @@ -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 '
'; - echo ''; - - printf ('

%s %s

',$l_line['jrn_def_name'],$l_line['jrn_def_code']); - - echo ""; - echo ""; - echo 'Date : '. - $e_op_rem; - - // Comment - echo '
Comment = '; - - // 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 ""; - echo ''; - for ( $i=0;$i < $p_MaxDeb;$i++) { - echo ""; - echo "'); - - printf('', - $i,$i,${"e_mont_deb$i"},$i); - echo ""; - - } - // Total debit - echo ''; -if ( $p_update == 0 ) echo ""; - - - - - echo ''; - // 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 ""; - echo ""; - - printf ('', - $i,$i,${"e_mont_cred$i"}); - echo ""; - - } - // Total Credit - echo ''; - echo ""; - if ( isset ($_GET["PHPSESSID"]) ) { - $sessid=$_GET["PHPSESSID"]; - } - else { - $sessid=$_POST["PHPSESSID"]; - } - - $search='"; - echo_debug('jrn.php',__LINE__,"search $search"); - // To avoid problem with unknown variable - if ( ! isset ($e_rapt) ) { - $e_rapt=""; - } - - echo ''; - echo "

débit

"; - printf ('"; - printf (' Montant :
'; - echo 'Total '; - echo ''; - echo ''; - echo '

crédit

"; - printf ('"; - echo " Montant :
'; - echo 'Total'; - echo ''; - echo ''; - echo '
- rapprochement : '.$search.'
"; - - // To avoid problem with unknown variable - if ( ! isset ($e_comment) ) { - $e_comment=""; - } - - - - if ( $p_update==0) { - echo ''; - } else { - echo ''; - } - echo ''; - - // 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 ''; - echo ""; - echo '
'; - -} /*! * \brief Display the form to UPDATE account operation * @@ -396,140 +156,6 @@ if ( $p_update == 0 ) echo " $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=""; - echo ''; - echo ''; - echo ""; - echo ""; - echo ""; - echo "
". $l_prop['jrn_def_name']."(".$l_prop['jrn_def_code'].") Date : $e_op_date
"; - - - echo ""; - echo ""; - 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 '$col_vide$col_vide"; - } - } - - // 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 ''.$col_vide.'$col_vide "; - } - } - echo ""; - echo $col_vide; - echo $col_vide; - echo ""; - echo ""; - echo "
operation $p_id
'.${"e_class_deb$i"}." $class ".${"e_mont_deb$i"}."
'.${"e_class_cred$i"}." $class ".${"e_mont_cred$i"}."
Total $e_sum_deb $e_sum_cred
"; - // Bouton again - echo ''; - echo '
'; - echo ' Ajouter'; - echo '
'; -} -/*! - * \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 '

Paramètres journaux non trouvés

'; - 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; } /*! diff --git a/include/stock.inc.php b/include/stock.inc.php index 317ec2b98..efd4b0ad0 100644 --- a/include/stock.inc.php +++ b/include/stock.inc.php @@ -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 '
' ; - echo $a; - echo 'Entrer la valeur qui doit augmenter ou diminuer le stock'; - echo '
'; - echo $b; - echo ''; - echo ''; + $b=""; - echo ''; - echo '
'; - exit(); + + echo ''; + exit(); } // Show the possible years diff --git a/include/supplier.inc.php b/include/supplier.inc.php index 5c340a07f..e4a19932b 100644 --- a/include/supplier.inc.php +++ b/include/supplier.inc.php @@ -44,7 +44,7 @@ if ( isset ($_POST['delete']) ) // Add card if ( $sub_action=="insert" ) { - $retour=sprintf('', + $retour=sprintf('', urldecode($_REQUEST['url'])); $supplier=new Supplier($cn); @@ -73,7 +73,7 @@ if ( $sub_action == "" ) //Display a blank card if ( $sub_action=="blank") { - $retour=sprintf('', + $retour=sprintf('', "commercial.php?p_action=fournisseur"); echo '
'; @@ -141,7 +141,7 @@ if ( $sub_action == 'detail' ) $f_id=$_REQUEST['f_id']; echo '
'; $sup=new Supplier($cn,$f_id); - $retour=sprintf('', + $retour=sprintf('', urldecode($_REQUEST['url'])); echo $retour; echo '
'; diff --git a/include/user_action_ven.php b/include/user_action_ven.php index f5a585b98..aadc4342a 100644 --- a/include/user_action_ven.php +++ b/include/user_action_ven.php @@ -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"]) ) { diff --git a/include/user_common.php b/include/user_common.php index 73d2cdb96..71f64a319 100644 --- a/include/user_common.php +++ b/include/user_common.php @@ -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); diff --git a/include/user_form_ods.php b/include/user_form_ods.php index d5e40d880..ad09f7762 100644 --- a/include/user_form_ods.php +++ b/include/user_form_ods.php @@ -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; diff --git a/include/user_menu.php b/include/user_menu.php index a649098b3..128c603af 100644 --- a/include/user_menu.php +++ b/include/user_menu.php @@ -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='