From 1766952a8499919a1275b0214f6ebda8dfc812e2 Mon Sep 17 00:00:00 2001 From: polo Date: Mon, 6 Mar 2023 12:54:43 +0100 Subject: =?UTF-8?q?Config.ini=20renseigner=20''=20=3D=20valeur=20par=20d?= =?UTF-8?q?=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.txt | 29 +++++++-------- config.ini | 12 ------- src/Config.php | 63 ++++++++++++++++++--------------- src/model/Prestations.php | 1 + src/view/Zenity.php | 3 +- "structure base de donn\303\251es.ods" | Bin 25146 -> 26353 bytes 6 files changed, 50 insertions(+), 58 deletions(-) diff --git a/README.txt b/README.txt index 8845c5e..d454b27 100644 --- a/README.txt +++ b/README.txt @@ -14,33 +14,30 @@ pas de version windows prévue dépendances obligatoires: - php-cli (certaines distributions (= debian) séparent php serveur web de php ligne de commande, installer le paquet php-cli) version minimale de php = -- php-sqlite (moteur de base de données, activer si nécessaire le module pdo-sqlite dans le php.ini) -- un environnement graphique -- zenity (fenêtres GTK pour scripts console) -- une distribution LaTeX permettant la compilation en PDF à l'aide de la commande pdflatex (j'utilise TeX Live) +- php-sqlite (le moteur de base de données dans une extension php, si nécessaire activer pdo-sqlite dans le php.ini) +- un environnement graphique (pas de mode console pure) +- zenity (fenêtres GTK pour scripts bash) +- une distribution LaTeX, on a besoin de la commande pdflatex (j'utilise TeX Live) - interpréteurs supportés: sh, bash, ksh, csh, tcsh -dépendances recommandées: -- sqlite (tellement d'applications en ont besoin qu'il serait surprenant qu'il soit absent - -dépendances optionnelles: +dépendances optionnelles mais vivement recommandées: +- sqlite (= la version CLI du moteur, sqlite est une dépendance de nombreuses applications, il est probablement déjà installé sur votre PC) - sqlitebrowser (interface graphique pour sqlite) -si absence de sqlitebrowser, le programme essaiera de lancer "sqlite3" dans le terminal "xterm" +en l'absence de sqlitebrowser, le programme essaiera de lancer "sqlite3" dans le terminal "xterm" installation: - placer ce dossier où vous le souhaitez -- vérifier les autorisations du dossier "data" et de tout son contenu (normallement il n'y a rien à faire) -- ouvrir le fichier "logiciel compta.desktop" avec un éditeur de texte et adapter les chemins -- copier le fichier"logiciel compta.desktop" dans le dossier système des entrées du menu ou/et sur le bureau -- ouvrir le fichier config.php et corriger si nécessaire: $business_name, $db_name, $flyer, $business_card -- $db_name renvoit au fichier de données! ne pas écrire l'extension .sqlite qui est implicité, -son emplacement est par défaut à la racine de ce programme, tout comme ce fichier README.txt - +- il est possible de placer les données ailleurs, renseigner donc le config.ini +- même chose pour le dossier "pub" +- n'utilisant pas de serveur web, vous ne devriez pas avoir de problème de permission, dans le cas contraire les messages d'erreur concerneront le dossier "data" +- le ficher "logiciel compta" ou "logiciel compta.desktop" est un lanceur pour bureau linux, vous pouvez le copier-coller sur votre bureau ou dans le dossier système concerné, puis ouvrez le nouveau fichier avec un éditeur de texte et modifiez les chemins configuration: - ça se passe dans le fichier config.ini +- la syntaxe à respecter est simple, une ligne est un paramètre, les seuls "mots-clés" sont =, ; (pour les commentaires) et les ' délimitent les chaines de caractères lorsqu'elles comportent plusieurs mots +- la racine du programme est le dossier "src", les chemins commencent ainsi par "../" puisqu'il fut remonter ATTENTION, si vous ne savez pas ce que vous faîtes, ne faites rien. Pour réparer la configuration, saisissez une chaîne vide ou la valeur par défaut comme dans les exemples ci-dessous. chaîne vide: diff --git a/config.ini b/config.ini index 903a1c1..8820b5d 100644 --- a/config.ini +++ b/config.ini @@ -24,18 +24,6 @@ latex_path = '../data/latex/' ;pdf_path = '../data/pdf/' pdf_path = '../data/pdf/' -;receipts_latex = '../data/latex/' -;receipts_pdf = '../data/pdf/' - -;quotations_latex = '../data/latex/' -;quotations_pdf = '../data/pdf/' - -;envelopes_latex = '../data/latex/' -;envelopes_pdf = '../data/pdf/' - -;rental_latex = '../data/latex/' -;rental_pdf = '../data/pdf/' - ;pub = '../pub/' pub_path = '../pub/' ;dossier pub inclu dans l'appli diff --git a/src/Config.php b/src/Config.php index 1557705..3e2b204 100644 --- a/src/Config.php +++ b/src/Config.php @@ -36,6 +36,41 @@ class Config self::$raw_data = parse_ini_file($file_path); } + static public function hydrate() + { + foreach(self::$raw_data as $field => $value) + { + if($value != '') // valeur par défaut + { + if(isset(self::$$field)) // vérification du nom du champ + { + // vérification du contenu + if(self::fieldIsPath($field)) // cas où le champ db_path, latex_path, pdf_path ou pub_path + { + if(self::checkPath($field, $value)) + { + $value = self::slashAtEndOfPath($value); + self::$$field = $value; + } + } + else // tester le reste? + { + self::$$field = $value; + } + // else: la valeur par défaut est conservée + } + else + { + echo "debug: le fichier config.ini comporte une erreur, le champ: " . $field . " est incorrect,\nl'information contenue sur cette ligne ne sera pas utilisée\n"; + } + } + else + { + echo "debug: le champ " . $field . " est vide, la valeur par défaut " . self::$$field . " sera utilisée.\n"; + } + } + } + static private function fieldIsPath($field): bool { if($field === 'db_path' || $field === 'latex_path' || $field === 'pdf_path' || $field === 'pub_path') @@ -82,34 +117,6 @@ class Config } } - static public function hydrate() - { - foreach(self::$raw_data as $field => $value) - { - if(isset(self::$$field)) // vérification du nom du champ - { - // vérification du contenu - if(self::fieldIsPath($field)) // cas où le champ db_path, latex_path, pdf_path ou pub_path - { - if(self::checkPath($field, $value)) - { - $value = self::slashAtEndOfPath($value); - self::$$field = $value; - } - } - else // tester le reste? - { - self::$$field = $value; - } - // else: la valeur par défaut est conservée - } - else - { - echo "debug: le fichier config.ini comporte une erreur, le champ: " . $field . " est incorrect,\nl'information contenue sur cette ligne ne sera pas utilisée\n"; - } - } - } - // à faire plus tard // transformer les chemins pour qu'ils soient relatifs au dossier 'src' où s'exécute le programme static private function adjustRelativePath($input) diff --git a/src/model/Prestations.php b/src/model/Prestations.php index 2011dbe..d246a3d 100644 --- a/src/model/Prestations.php +++ b/src/model/Prestations.php @@ -93,6 +93,7 @@ class Prestations extends Model public function makeCodePresta(Dates $Date, string $code_client) { // on récupère un tableau contenant toutes les prestations d'un client tous types confondus (devis, facture, cesu, location, enregistrement sans vente) + // inconvénient: il peut y avoir plusieurs prestations avec le même numéro au compteur, à améliorer $combientieme_fois = count($this->find(['ID_client' => $this->ID_client])) + 1; $array_code = [$Date->getYear(), $Date->getMonth(), $Date->getDay(), $code_client, $this->type_presta, $combientieme_fois]; diff --git a/src/view/Zenity.php b/src/view/Zenity.php index 72d5eed..091a2c0 100644 --- a/src/view/Zenity.php +++ b/src/view/Zenity.php @@ -9,7 +9,6 @@ abstract class ZenityCmd protected $command = 'zenity'; protected $command_type = ''; protected $rows = []; - private $title = 'ORDIPOLO'; protected $text = ''; protected $width = 300; protected $height = 200; // recalculée en fonction du contenu, vaut au minimum 150 @@ -19,7 +18,7 @@ abstract class ZenityCmd $this->text = $text; $this->rows= $rows; $this->command .= $this->command_type; - $this->command .= ' --title="' . $this->title . '"'; + $this->command .= ' --title="' . Config::$business_name . '"'; $this->command .= ' --text="' . $this->text . '"'; } diff --git "a/structure base de donn\303\251es.ods" "b/structure base de donn\303\251es.ods" index 703487c..c050af8 100644 Binary files "a/structure base de donn\303\251es.ods" and "b/structure base de donn\303\251es.ods" differ -- cgit v1.2.3