diff options
| -rw-r--r-- | README.txt | 29 | ||||
| -rw-r--r-- | config.ini | 12 | ||||
| -rw-r--r-- | src/Config.php | 63 | ||||
| -rw-r--r-- | src/model/Prestations.php | 1 | ||||
| -rw-r--r-- | src/view/Zenity.php | 3 | ||||
| -rw-r--r-- | structure base de données.ods | bin | 25146 -> 26353 bytes |
6 files changed, 50 insertions, 58 deletions
| @@ -14,33 +14,30 @@ pas de version windows prévue | |||
| 14 | dépendances obligatoires: | 14 | dépendances obligatoires: |
| 15 | - php-cli (certaines distributions (= debian) séparent php serveur web de php ligne de commande, installer le paquet php-cli) | 15 | - php-cli (certaines distributions (= debian) séparent php serveur web de php ligne de commande, installer le paquet php-cli) |
| 16 | version minimale de php = | 16 | version minimale de php = |
| 17 | - php-sqlite (moteur de base de données, activer si nécessaire le module pdo-sqlite dans le php.ini) | 17 | - php-sqlite (le moteur de base de données dans une extension php, si nécessaire activer pdo-sqlite dans le php.ini) |
| 18 | - un environnement graphique | 18 | - un environnement graphique (pas de mode console pure) |
| 19 | - zenity (fenêtres GTK pour scripts console) | 19 | - zenity (fenêtres GTK pour scripts bash) |
| 20 | - une distribution LaTeX permettant la compilation en PDF à l'aide de la commande pdflatex (j'utilise TeX Live) | 20 | - une distribution LaTeX, on a besoin de la commande pdflatex (j'utilise TeX Live) |
| 21 | - interpréteurs supportés: sh, bash, ksh, csh, tcsh | 21 | - interpréteurs supportés: sh, bash, ksh, csh, tcsh |
| 22 | 22 | ||
| 23 | dépendances recommandées: | 23 | dépendances optionnelles mais vivement recommandées: |
| 24 | - sqlite (tellement d'applications en ont besoin qu'il serait surprenant qu'il soit absent | 24 | - sqlite (= la version CLI du moteur, sqlite est une dépendance de nombreuses applications, il est probablement déjà installé sur votre PC) |
| 25 | |||
| 26 | dépendances optionnelles: | ||
| 27 | - sqlitebrowser (interface graphique pour sqlite) | 25 | - sqlitebrowser (interface graphique pour sqlite) |
| 28 | si absence de sqlitebrowser, le programme essaiera de lancer "sqlite3" dans le terminal "xterm" | 26 | en l'absence de sqlitebrowser, le programme essaiera de lancer "sqlite3" dans le terminal "xterm" |
| 29 | 27 | ||
| 30 | 28 | ||
| 31 | 29 | ||
| 32 | installation: | 30 | installation: |
| 33 | - placer ce dossier où vous le souhaitez | 31 | - placer ce dossier où vous le souhaitez |
| 34 | - vérifier les autorisations du dossier "data" et de tout son contenu (normallement il n'y a rien à faire) | 32 | - il est possible de placer les données ailleurs, renseigner donc le config.ini |
| 35 | - ouvrir le fichier "logiciel compta.desktop" avec un éditeur de texte et adapter les chemins | 33 | - même chose pour le dossier "pub" |
| 36 | - copier le fichier"logiciel compta.desktop" dans le dossier système des entrées du menu ou/et sur le bureau | 34 | - 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" |
| 37 | - ouvrir le fichier config.php et corriger si nécessaire: $business_name, $db_name, $flyer, $business_card | 35 | - 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 |
| 38 | - $db_name renvoit au fichier de données! ne pas écrire l'extension .sqlite qui est implicité, | ||
| 39 | son emplacement est par défaut à la racine de ce programme, tout comme ce fichier README.txt | ||
| 40 | |||
| 41 | 36 | ||
| 42 | configuration: | 37 | configuration: |
| 43 | - ça se passe dans le fichier config.ini | 38 | - ça se passe dans le fichier config.ini |
| 39 | - 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 | ||
| 40 | - la racine du programme est le dossier "src", les chemins commencent ainsi par "../" puisqu'il fut remonter | ||
| 44 | ATTENTION, si vous ne savez pas ce que vous faîtes, ne faites rien. | 41 | ATTENTION, si vous ne savez pas ce que vous faîtes, ne faites rien. |
| 45 | Pour réparer la configuration, saisissez une chaîne vide ou la valeur par défaut comme dans les exemples ci-dessous. | 42 | Pour réparer la configuration, saisissez une chaîne vide ou la valeur par défaut comme dans les exemples ci-dessous. |
| 46 | chaîne vide: | 43 | chaîne vide: |
| @@ -24,18 +24,6 @@ latex_path = '../data/latex/' | |||
| 24 | ;pdf_path = '../data/pdf/' | 24 | ;pdf_path = '../data/pdf/' |
| 25 | pdf_path = '../data/pdf/' | 25 | pdf_path = '../data/pdf/' |
| 26 | 26 | ||
| 27 | ;receipts_latex = '../data/latex/' | ||
| 28 | ;receipts_pdf = '../data/pdf/' | ||
| 29 | |||
| 30 | ;quotations_latex = '../data/latex/' | ||
| 31 | ;quotations_pdf = '../data/pdf/' | ||
| 32 | |||
| 33 | ;envelopes_latex = '../data/latex/' | ||
| 34 | ;envelopes_pdf = '../data/pdf/' | ||
| 35 | |||
| 36 | ;rental_latex = '../data/latex/' | ||
| 37 | ;rental_pdf = '../data/pdf/' | ||
| 38 | |||
| 39 | ;pub = '../pub/' | 27 | ;pub = '../pub/' |
| 40 | pub_path = '../pub/' ;dossier pub inclu dans l'appli | 28 | pub_path = '../pub/' ;dossier pub inclu dans l'appli |
| 41 | 29 | ||
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 | |||
| 36 | self::$raw_data = parse_ini_file($file_path); | 36 | self::$raw_data = parse_ini_file($file_path); |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | static public function hydrate() | ||
| 40 | { | ||
| 41 | foreach(self::$raw_data as $field => $value) | ||
| 42 | { | ||
| 43 | if($value != '') // valeur par défaut | ||
| 44 | { | ||
| 45 | if(isset(self::$$field)) // vérification du nom du champ | ||
| 46 | { | ||
| 47 | // vérification du contenu | ||
| 48 | if(self::fieldIsPath($field)) // cas où le champ db_path, latex_path, pdf_path ou pub_path | ||
| 49 | { | ||
| 50 | if(self::checkPath($field, $value)) | ||
| 51 | { | ||
| 52 | $value = self::slashAtEndOfPath($value); | ||
| 53 | self::$$field = $value; | ||
| 54 | } | ||
| 55 | } | ||
| 56 | else // tester le reste? | ||
| 57 | { | ||
| 58 | self::$$field = $value; | ||
| 59 | } | ||
| 60 | // else: la valeur par défaut est conservée | ||
| 61 | } | ||
| 62 | else | ||
| 63 | { | ||
| 64 | 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"; | ||
| 65 | } | ||
| 66 | } | ||
| 67 | else | ||
| 68 | { | ||
| 69 | echo "debug: le champ " . $field . " est vide, la valeur par défaut " . self::$$field . " sera utilisée.\n"; | ||
| 70 | } | ||
| 71 | } | ||
| 72 | } | ||
| 73 | |||
| 39 | static private function fieldIsPath($field): bool | 74 | static private function fieldIsPath($field): bool |
| 40 | { | 75 | { |
| 41 | if($field === 'db_path' || $field === 'latex_path' || $field === 'pdf_path' || $field === 'pub_path') | 76 | if($field === 'db_path' || $field === 'latex_path' || $field === 'pdf_path' || $field === 'pub_path') |
| @@ -82,34 +117,6 @@ class Config | |||
| 82 | } | 117 | } |
| 83 | } | 118 | } |
| 84 | 119 | ||
| 85 | static public function hydrate() | ||
| 86 | { | ||
| 87 | foreach(self::$raw_data as $field => $value) | ||
| 88 | { | ||
| 89 | if(isset(self::$$field)) // vérification du nom du champ | ||
| 90 | { | ||
| 91 | // vérification du contenu | ||
| 92 | if(self::fieldIsPath($field)) // cas où le champ db_path, latex_path, pdf_path ou pub_path | ||
| 93 | { | ||
| 94 | if(self::checkPath($field, $value)) | ||
| 95 | { | ||
| 96 | $value = self::slashAtEndOfPath($value); | ||
| 97 | self::$$field = $value; | ||
| 98 | } | ||
| 99 | } | ||
| 100 | else // tester le reste? | ||
| 101 | { | ||
| 102 | self::$$field = $value; | ||
| 103 | } | ||
| 104 | // else: la valeur par défaut est conservée | ||
| 105 | } | ||
| 106 | else | ||
| 107 | { | ||
| 108 | 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"; | ||
| 109 | } | ||
| 110 | } | ||
| 111 | } | ||
| 112 | |||
| 113 | // à faire plus tard | 120 | // à faire plus tard |
| 114 | // transformer les chemins pour qu'ils soient relatifs au dossier 'src' où s'exécute le programme | 121 | // transformer les chemins pour qu'ils soient relatifs au dossier 'src' où s'exécute le programme |
| 115 | static private function adjustRelativePath($input) | 122 | 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 | |||
| 93 | public function makeCodePresta(Dates $Date, string $code_client) | 93 | public function makeCodePresta(Dates $Date, string $code_client) |
| 94 | { | 94 | { |
| 95 | // on récupère un tableau contenant toutes les prestations d'un client tous types confondus (devis, facture, cesu, location, enregistrement sans vente) | 95 | // on récupère un tableau contenant toutes les prestations d'un client tous types confondus (devis, facture, cesu, location, enregistrement sans vente) |
| 96 | // inconvénient: il peut y avoir plusieurs prestations avec le même numéro au compteur, à améliorer | ||
| 96 | $combientieme_fois = count($this->find(['ID_client' => $this->ID_client])) + 1; | 97 | $combientieme_fois = count($this->find(['ID_client' => $this->ID_client])) + 1; |
| 97 | 98 | ||
| 98 | $array_code = [$Date->getYear(), $Date->getMonth(), $Date->getDay(), $code_client, $this->type_presta, $combientieme_fois]; | 99 | $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 | |||
| 9 | protected $command = 'zenity'; | 9 | protected $command = 'zenity'; |
| 10 | protected $command_type = ''; | 10 | protected $command_type = ''; |
| 11 | protected $rows = []; | 11 | protected $rows = []; |
| 12 | private $title = 'ORDIPOLO'; | ||
| 13 | protected $text = ''; | 12 | protected $text = ''; |
| 14 | protected $width = 300; | 13 | protected $width = 300; |
| 15 | protected $height = 200; // recalculée en fonction du contenu, vaut au minimum 150 | 14 | protected $height = 200; // recalculée en fonction du contenu, vaut au minimum 150 |
| @@ -19,7 +18,7 @@ abstract class ZenityCmd | |||
| 19 | $this->text = $text; | 18 | $this->text = $text; |
| 20 | $this->rows= $rows; | 19 | $this->rows= $rows; |
| 21 | $this->command .= $this->command_type; | 20 | $this->command .= $this->command_type; |
| 22 | $this->command .= ' --title="' . $this->title . '"'; | 21 | $this->command .= ' --title="' . Config::$business_name . '"'; |
| 23 | $this->command .= ' --text="' . $this->text . '"'; | 22 | $this->command .= ' --text="' . $this->text . '"'; |
| 24 | } | 23 | } |
| 25 | 24 | ||
diff --git a/structure base de données.ods b/structure base de données.ods index 703487c..c050af8 100644 --- a/structure base de données.ods +++ b/structure base de données.ods | |||
| Binary files differ | |||
