summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.php31
-rw-r--r--data/ordipolo.sqlitebin28672 -> 0 bytes
-rwxr-xr-xindex.php3
-rw-r--r--latex/devis.tex79
-rw-r--r--latex/enveloppe_recto.tex21
-rw-r--r--latex/enveloppe_verso.tex13
-rw-r--r--latex/facture.tex80
-rw-r--r--latex/location.tex44
-rw-r--r--latex/ordipolo.pngbin46751 -> 0 bytes
-rw-r--r--php/Connection.php45
-rw-r--r--php/Dates.php105
-rw-r--r--php/Latex.php84
-rw-r--r--php/Model.php42
-rw-r--r--php/Zenity.php110
-rw-r--r--php/dependances.php100
-rw-r--r--php/functions.php26
-rw-r--r--php/latexToPdf.php38
-rw-r--r--php/latex_templates/devis.php84
-rw-r--r--php/latex_templates/enveloppe_recto.php26
-rw-r--r--php/latex_templates/enveloppe_verso.php18
-rw-r--r--php/latex_templates/facture.php85
-rw-r--r--php/latex_templates/location.php49
-rwxr-xr-xphp/main.php205
-rw-r--r--php/zenity_setup.php37
24 files changed, 19 insertions, 1306 deletions
diff --git a/config.php b/config.php
index 89a25cc..b824df3 100644
--- a/config.php
+++ b/config.php
@@ -15,20 +15,20 @@ $db_place = '../data/';
15 15
16 16
17// le dossier latex par défaut est celui "inclu" dans ce programme 17// le dossier latex par défaut est celui "inclu" dans ce programme
18// $receipts = '../latex/'; 18// $receiptsLaTeX = '../data/latex/';
19$receipts = '../latex/'; 19$receiptsLaTeX = '../data/latex/';
20$receiptsStorageLaTeX = '~ORDIPOLO/factures/latex/'; 20// $receiptsPDF = '../data/pdf/';
21$receiptsStoragePDF = '~ORDIPOLO/factures/PDF/'; 21$receiptsPDF = '../data/pdf/';
22 22
23// $quotations = '../latex/'; 23// $quotationsLaTeX = '../data/latex/';
24$quotations = '../latex/'; 24$quotationsLaTeX = '../data/latex/';
25$quotationsStorageLaTeX = '~ORDIPOLO/devis/latex/'; 25// $quotationsPDF = '../data/pdf/';
26$quotationsStoragePDF = '~ORDIPOLO/devis/PDF/'; 26$quotationsPDF = '../data/pdf/';
27 27
28// $envelopes = '../latex/'; 28// $envelopesLaTeX = '../data/latex/';
29$envelopes = '../latex/'; 29$envelopesLaTeX = '../data/latex/';
30$envelopesStorageLaTeX = '~ORDIPOLO/enveloppes/latex/'; 30// $envelopesPDF = '../data/pdf/';
31$envelopesStoragePDF = '~ORDIPOLO/enveloppes/PDF/'; 31$envelopesPDF = '../data/pdf/';
32 32
33 33
34// $pub = "~/ORDIPOLO/PUB/"; // dossier extérieur au choix 34// $pub = "~/ORDIPOLO/PUB/"; // dossier extérieur au choix
@@ -47,12 +47,15 @@ $image_editor = 'gimp';
47// $publishing = 'scribus'; 47// $publishing = 'scribus';
48$publishing = 'scribus'; 48$publishing = 'scribus';
49 49
50// format des dates: EU = européenne 28-11-2022, US = américaine 11/28/2022 50// $sqliteGUI = 'sqlitebrowser';
51$sqlite_gui = 'sqlitebrowser';
52
53// format des dates: EU exemple européenne 28-11-2022, US exemple américaine 11/28/2022
51// $date_format = 'EU'; 54// $date_format = 'EU';
52$date_format = 'EU'; 55$date_format = 'EU';
53 56
54 57
55//$x_terminal = 'xterm'; 58// $x_terminal = 'xterm';
56// -- état actuel du programme -- 59// -- état actuel du programme --
57// les terminaux gérés sont: xterm, urxvt, lxterminal, xfce4-terminal, gnome-terminal, konsole, Terminal (MAC, désactivé tant que non testé) 60// les terminaux gérés sont: xterm, urxvt, lxterminal, xfce4-terminal, gnome-terminal, konsole, Terminal (MAC, désactivé tant que non testé)
58// ajouter à l'accaz: i3-sensible-terminal (pour i3), lxterminal-qt (pour LXQT, et donc lubuntu) 61// ajouter à l'accaz: i3-sensible-terminal (pour i3), lxterminal-qt (pour LXQT, et donc lubuntu)
diff --git a/data/ordipolo.sqlite b/data/ordipolo.sqlite
deleted file mode 100644
index 6138c54..0000000
--- a/data/ordipolo.sqlite
+++ /dev/null
Binary files differ
diff --git a/index.php b/index.php
index dbcf0e2..094758a 100755
--- a/index.php
+++ b/index.php
@@ -3,7 +3,8 @@
3// index.php 3// index.php
4 4
5// le programme peut être lancé sans distinction par le lanceur, par un ./index.php ou par un ./main.php 5// le programme peut être lancé sans distinction par le lanceur, par un ./index.php ou par un ./main.php
6chdir('php'); // idée de merde? 6// l'exécution a donc lieu dans le dossier "src", normallement on fait pas exactemet ça comme ça
7chdir('src');
7require('main.php'); 8require('main.php');
8 9
9 10
diff --git a/latex/devis.tex b/latex/devis.tex
deleted file mode 100644
index debcdc5..0000000
--- a/latex/devis.tex
+++ /dev/null
@@ -1,79 +0,0 @@
1\documentclass{report}
2
3\usepackage[french]{babel}
4\usepackage{lmodern} % police latin modern
5\usepackage[utf8]{inputenc} % encodage d'entrée (document)
6\usepackage[T1]{fontenc} % encodage de sortie (rendu)
7\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges
8\usepackage{graphicx} % insertions d'images
9\usepackage{textcomp} % pour N°
10\usepackage{xcolor} % texte en couleur
11\usepackage{tabularx} % dimensions des tableaux automatique
12\usepackage{tikz} % le rectangle
13
14\begin{document}
15 \setlength{\parindent}{0cm} % supprimer les alinéas
16 \large{}
17 \pagestyle{empty} % en-tête et pied de page vides
18 \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert
19
20 \begin{center}
21 \includegraphics{ordipolo.png}\\
22 \Large\textbf{Dépannage informatique - Assistance à domicile}
23 \end{center}
24
25 2 A rue de l'île de Man, 29000 Quimper
26
27 SIRET : 814 320 610 00011
28
29 \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}}
30 Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr
31 \end{tabularx}
32
33 Plus d'infos sur le site web: https\string://ordipolo.fr\\
34 % \string supprime l'espace devant les :
35
36 \begin{center}
37 \large\textbf{DEVIS}
38 \end{center}
39
40 CLIENT\\
41
42 \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}}
43 Mme, M : \textcolor{vert}{} &
44 Date du devis : \textcolor{vert}{}\\
45 Adresse : \textcolor{vert}{} &
46 Delai de livraison : \textcolor{vert}{}\\
47 \end{tabularx}\\\\
48
49 PRESTATION\\
50
51 \textcolor{vert}{}
52
53 Total main d'oeuvre : \textcolor{vert}{}\\
54
55 PIÈCES\\
56
57 \textcolor{vert}{}
58
59 Total pièces : \textcolor{vert}{}\\
60
61 TOTAL\\
62
63 Déplacement : \textcolor{vert}{}
64
65 Total HT : \textcolor{vert}{}
66
67 \textit{(TVA non applicable, article 293B du code général des impôts)}
68
69 Référence du devis : \textcolor{vert}{}\\
70
71 Devis reçu avant l'exécution des travaux, signature du client :\\
72 \begin{tikzpicture}
73 \draw (0,0) rectangle (4,2);
74 \end{tikzpicture}\\
75
76 \small{}NOTA BENE\\
77
78 Si le délai de livraison n’est pas précisé, c’est naturellement le délai légal de 30 jours qui est appliqué. Lorsqu'Ordi Polo garde (ou prête) un ordinateur le temps nécessaire à la réparation, le prêt peut être formalisé par un document signé par les deux parties. Le dépannage inclut principalement l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine nécessaires au nettoyage de la poussière ou au remplacement d'une pièce. Ordi Polo ne répare pas les composants électroniques défectueux et n'est pas responsable des dysfonctionnements de l'ordinateur dont l'origine est matérielle. Ordi Polo ne vend pas de matériel mais peut conseiller ou réaliser les démarches d’un achat.
79\end{document} \ No newline at end of file
diff --git a/latex/enveloppe_recto.tex b/latex/enveloppe_recto.tex
deleted file mode 100644
index d1f3f43..0000000
--- a/latex/enveloppe_recto.tex
+++ /dev/null
@@ -1,21 +0,0 @@
1\documentclass[]{report}
2
3\usepackage[french]{babel}
4\usepackage{lmodern} % police latin modern
5\usepackage[utf8]{inputenc} % encodage d'entrée (document)
6\usepackage[T1]{fontenc} % encodage de sortie (rendu)
7\usepackage{graphicx} % insertions d'images
8\usepackage[papersize={22cm, 11cm}, top=1cm, left=1cm, bottom=1cm]{geometry}
9\pagestyle{empty}
10
11\begin{document}
12 \setlength{\parindent}{0cm}
13 \includegraphics{ordipolo.png}\\
14 \large\textbf{Dépannage informatique - Assistance à domicile}
15
16 \setlength{\parindent}{7,9cm}
17 \begin{minipage}[b][5,8cm]{12cm}
18 \LARGE{M. Truc\\3, rue Machin\\\\\\}
19 \LARGE{2 \ 9 \ 0 \ 0 \ 0 \ \ \ \ QUIMPER}
20 \end{minipage}
21\end{document} \ No newline at end of file
diff --git a/latex/enveloppe_verso.tex b/latex/enveloppe_verso.tex
deleted file mode 100644
index 24baa8a..0000000
--- a/latex/enveloppe_verso.tex
+++ /dev/null
@@ -1,13 +0,0 @@
1\documentclass[]{report}
2
3\usepackage[french]{babel}
4\usepackage{lmodern} % police latin modern
5\usepackage[utf8]{inputenc} % encodage d'entrée (document)
6\usepackage[T1]{fontenc} % encodage de sortie (rendu)
7\usepackage[papersize={22cm, 11cm}, top=0.6cm, left=4.5cm]{geometry}
8\pagestyle{empty}
9
10\begin{document}
11 \setlength{\parindent}{0cm}
12 \Large{Paul Jusot\\2A, rue de l'île de Man\\29000 QUIMPER}
13\end{document} \ No newline at end of file
diff --git a/latex/facture.tex b/latex/facture.tex
deleted file mode 100644
index babb2ab..0000000
--- a/latex/facture.tex
+++ /dev/null
@@ -1,80 +0,0 @@
1\documentclass{report}
2
3\usepackage[french]{babel}
4\usepackage{lmodern} % police latin modern
5\usepackage[utf8]{inputenc} % encodage d'entrée (document)
6\usepackage[T1]{fontenc} % encodage de sortie (rendu)
7\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges
8\usepackage{graphicx} % insertions d'images
9\usepackage{textcomp} % pour N°
10\usepackage{xcolor} % texte en couleur
11\usepackage{tabularx} % dimensions des tableaux automatique
12
13\begin{document}
14 \setlength{\parindent}{0cm} % supprimer les alinéas
15 \large{}
16 \pagestyle{empty} % en-tête et pied de page vides
17 \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert
18
19 \begin{center}
20 \includegraphics{ordipolo.png}\\
21 \Large\textbf{Dépannage informatique - Assistance à domicile}
22 \end{center}
23
24 2 A rue de l'île de Man, 29000 Quimper
25
26 SIRET : 814 320 610 00011
27
28 \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}}
29 Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr
30 \end{tabularx}
31
32 Plus d'infos sur le site web: https\string://ordipolo.fr\\
33 % \string supprime l'espace devant les :
34
35 \begin{center}
36 \large\textbf{FACTURE}
37 \end{center}
38
39 CLIENT\\
40
41 \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}}
42 Mme, M : \textcolor{vert}{} &
43 Date : \textcolor{vert}{}\\
44 \end{tabularx}\\
45 Adresse : \textcolor{vert}{}\\
46
47 PRESTATION\\
48
49 \textcolor{vert}{}
50
51 Modèle de l'ordinateur : \textcolor{vert}{}
52
53 Système d'exploitation : \textcolor{vert}{}
54
55 Données à conserver : \textcolor{vert}{}
56
57 Clé d'activation : \textcolor{vert}{}\\
58
59 Total main d'oeuvre : \textcolor{vert}{}\\
60
61 PIÈCES\\
62
63 \textcolor{vert}{}
64
65 Total pièces : \textcolor{vert}{}\\
66
67 TOTAL\\
68
69 Déplacement : \textcolor{vert}{}
70
71 Total HT : \textcolor{vert}{}
72
73 \textit{(TVA non applicable, article 293B du code général des impôts)}
74
75 Référence de la facture : \textcolor{vert}{}\\
76
77 \small{}NOTA BENE\\
78
79 Lorsqu'Ordi Polo garde (ou prête) un ordinateur le temps nécessaire à la réparation, le prêt peut être formalisé par un document signé par les deux parties. Le dépannage inclut principalement l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine nécessaires au nettoyage de la poussière ou au remplacement d'une pièce. Ordi Polo ne répare pas les composants électroniques défectueux et n'est pas responsable des dysfonctionnements de l'ordinateur dont l'origine est matérielle. Ordi Polo ne vend pas de matériel mais peut conseiller ou réaliser les démarches d’un achat.
80\end{document} \ No newline at end of file
diff --git a/latex/location.tex b/latex/location.tex
deleted file mode 100644
index bcfb1e5..0000000
--- a/latex/location.tex
+++ /dev/null
@@ -1,44 +0,0 @@
1\documentclass{report}
2
3\usepackage[french]{babel}
4\usepackage{lmodern} % police latin modern
5\usepackage[utf8]{inputenc} % encodage d'entrée (document)
6\usepackage[T1]{fontenc} % encodage de sortie (rendu)
7\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges
8\usepackage{graphicx} % insertions d'images
9\usepackage{textcomp} % pour N°
10\usepackage{xcolor} % texte en couleur
11%\usepackage{wrapfig} % placer texte et image côte-à-côte
12\usepackage{tabularx} % dimensions des tableaux automatique
13
14\begin{document}
15 \setlength{\parindent}{0cm} % supprimer les alinéas
16 \large{}
17 \pagestyle{empty} % en-tête et pied de page vides
18 \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert
19
20 \begin{center}
21 \includegraphics{ordipolo.png}\\
22 \Large\textbf{Dépannage informatique - Assistance à domicile}
23 \end{center}
24
25 2 A rue de l'île de Man, 29000 Quimper
26
27 SIRET : 814 320 610 00011
28
29 \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}}
30 Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr
31 \end{tabularx}
32
33 Plus d'infos sur le site web: https\string://ordipolo.fr\\
34 % \string supprime l'espace devant les :
35
36 CLIENT\\
37
38 \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}}
39 Mme, M : \textcolor{vert}{} &
40 Date : \textcolor{vert}{}\\
41 \end{tabularx}\\
42 Adresse : \textcolor{vert}{}\\
43
44\end{document} \ No newline at end of file
diff --git a/latex/ordipolo.png b/latex/ordipolo.png
deleted file mode 100644
index 2acd67d..0000000
--- a/latex/ordipolo.png
+++ /dev/null
Binary files differ
diff --git a/php/Connection.php b/php/Connection.php
deleted file mode 100644
index e944f69..0000000
--- a/php/Connection.php
+++ /dev/null
@@ -1,45 +0,0 @@
1<?php
2// php/Connection.php
3
4// cette classe suit le pattern "singleton"
5// but: ne permettre qu'une seule instance de la classe (laquelle sera éventuellement globale)
6
7// comment?
8// - Un attribut privé et statique qui conservera l'instance unique de la classe
9// ainsi si un enfant de la classe "connection" est instancié plusieurs fois, il n'y aura toujours qu'une seule instance de PDO
10// - Un constructeur privé afin d'empêcher la création d'objet depuis l'extérieur de la classe
11// - Une méthode statique qui permet soit d'instancier la classe soit de retourner l'unique instance créée.
12// impossible de créer deux instances (ici de PDO)
13
14class Connection extends PDO
15{
16 // paramètres du constructeur de PDO, avec sqlite seul le premier est nécessaire
17 public static $dsn = ''; // Data Source Name = 1er paramètre
18 //~ public static $user = '';
19 //~ public static $password = '';
20 //~ public static $options = '';
21 private static $Instance;
22
23 private function __construct()
24 {
25 try
26 {
27 parent::__construct(self::$dsn); // renseigne la variable $dsn de la classe PDO
28 $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // $this pour la méthode du parent PDO
29 }
30 catch(PDOException $e)
31 {
32 die('Erreur : '.$e->getMessage());
33 }
34 }
35
36 // créer son objet avec: $bdd = Connection::getInstance();
37 public static function getInstance(): self
38 {
39 if(self::$Instance === null)
40 {
41 self::$Instance = new self();
42 }
43 return self::$Instance;
44 }
45}
diff --git a/php/Dates.php b/php/Dates.php
deleted file mode 100644
index 264166f..0000000
--- a/php/Dates.php
+++ /dev/null
@@ -1,105 +0,0 @@
1<?php
2// php/DateTimestamp.php
3
4class Dates
5{
6 private $date;
7 private $timestamp; // valeurs négatives autorisées => dates avant 1970
8 static public $date_format = 'EU'; // dates européennes jj-mm-aaaa (EU) ou américaines mm/dd/yyyy (US)
9
10
11 public function __construct($entry)
12 {
13 if(gettype($entry) === 'string') // une date est attendue
14 {
15 $this->setDate($entry);
16 }
17 elseif(gettype($entry) === 'integer')
18 {
19 $this->setTimestamp($entry);
20 }
21 }
22
23
24 public function setDate(string $entry)
25 {
26 $entry = $this->dashOrSlash($entry); // pour strtotime()
27
28 $splitedDate = preg_split('#\D#', $entry); // \D = tout sauf chiffre
29
30 if(self::$date_format === 'EU')
31 {
32 $tmp = $splitedDate[0];
33 $splitedDate[0] = $splitedDate[1];
34 $splitedDate[1] = $tmp;
35 }
36
37 if(checkdate($splitedDate[0], $splitedDate[1], $splitedDate[2]))
38 {
39 $this->date = $entry;
40 $this->timestamp = strtotime($entry); // date (string) -> timestamp (int)
41 // strtotime() devine le format en analysant la chaîne en entrée, on l'aide un peu
42 // avec des /, php considère que la date est américaine
43 // avec des - ou des ., php considère que la date est européenne
44 }
45 else
46 {
47 echo("Date incorrecte, le format de la date dans le fichier config.php est " . self::$date_format . ".\nLes choix possibles sont EU pour Europe et US pour États-Unis.");
48 die();
49 }
50 }
51
52 public function setTimestamp(int $entry)
53 {
54 $this->timestamp = $entry;
55 $this->date = $this->timestamp_to_date($entry); // timestamp (int) -> date (string)
56 }
57
58
59 public function getDate(): string
60 {
61 return($this->date);
62 }
63
64 public function getTimestamp(): int
65 {
66 return($this->timestamp);
67 }
68
69
70 private function dashOrSlash(string $date): string
71 {
72 if(self::$date_format === 'EU')
73 {
74 // change jj/mm/aaaa en jj-mm-aaaa
75 return(preg_replace('#\D#', '-', $date)); // \D = tout sauf chiffre
76 }
77 elseif(self::$date_format === 'US')
78 {
79 // change mm-dd.yyyy en mm/dd/yyyy
80 return(preg_replace('#\D#', '/', $date));
81 }
82 else
83 {
84 echo('Le fichier config.php comporte une erreur. La variable $date_format doit avoir pour valeur "EU" ou "US"');
85 die(); // brutal
86 }
87 }
88
89 private function timestamp_to_date(int $timestamp): string
90 {
91 if(self::$date_format === 'EU')
92 {
93 return(date("j-m-Y", $timestamp));
94 }
95 elseif(self::$date_format === 'US')
96 {
97 return(date("m/d/Y", $timestamp));
98 }
99 else
100 {
101 echo('Le fichier config.php comporte une erreur. La variable $date_format doit avoir pour valeur "EU" ou "US"');
102 die(); // brutal
103 }
104 }
105}
diff --git a/php/Latex.php b/php/Latex.php
deleted file mode 100644
index c3d56af..0000000
--- a/php/Latex.php
+++ /dev/null
@@ -1,84 +0,0 @@
1<?php
2// php/Latex.php
3//
4// génération du code LaTeX
5
6abstract class Latex
7{
8 protected $fileName = '';
9 protected $latexPath = '';
10 protected $pdfPath = '';
11
12 protected function createFile(string $latex, string $fileName, string $latexPath)
13 {
14 // nom du fichier créé = nom.tex
15 // pour les devis, factures et enveloppes, le nom est le code la prestation
16 // pour les livre de recettes et registres des achats mensuels:
17 // le nom du fichier suit cet exemple: "Recettes-2022-06-Juin.tex"
18 // pour le livre de recette ou le registre des achats annuel, même principe: "Achats-2022.tex"
19 // pour le bilan comptable annuel, ça donne: "Bilan-2022.tex"
20 $fichier = fopen($latexPath . $fileName, "w+");
21 fputs($fichier, $latex);
22 fclose($fichier);
23 }
24}
25
26
27abstract class PrestaLatex extends Latex
28{
29 public function __construct(string $quoi, string $codePresta)
30 {
31 nameTheFile($quoi, $codePresta);
32 }
33
34 // forme = code-presta.tex
35 protected function nameTheFile(string $quoi, string $codePresta)
36 {
37 $this->fileName = $quoi . '-' . $codePresta . '.tex';
38 }
39}
40
41class DevisLatex extends PrestaLatex
42{}
43
44class FactureLatex extends PrestaLatex
45{}
46
47class LocationLatex extends PrestaLatex
48{}
49
50class EnveloppeRectoLatex extends PrestaLatex
51{}
52class EnveloppeVersoLatex extends PrestaLatex
53{}
54
55
56abstract class ComptaLatex extends Latex
57{
58 public function __construct(string $quoi, string $annee, int $numeroMois = 0)
59 {
60 nameTheFile($quoi, $annee, $numeroMois);
61 }
62
63 // forme = Recettes-2022-06-Juin.tex ou Recettes-2022.tex
64 // type de 'annee'?
65 protected function nameTheFile(string $quoi, string $annee, int $numeroMois = 0)
66 {
67 $this->fileName = $quoi . '-' . $annee;
68 $mois = ['', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'];
69 if($numeroMois > 0 && $numeroMois <= 12)
70 {
71 $this->fileName .= '-' . $numeroMois . '-' . $mois[$numeroMois];
72 }
73 $this->fileName .= '.tex';
74 }
75}
76
77class LivreRecettesLatex extends ComptaLatex
78{}
79
80class RegistreAchatsLatex extends ComptaLatex
81{}
82
83class BilanLatex extends ComptaLatex
84{}
diff --git a/php/Model.php b/php/Model.php
deleted file mode 100644
index d26b081..0000000
--- a/php/Model.php
+++ /dev/null
@@ -1,42 +0,0 @@
1<?php
2// php/Model.php
3
4class Model extends Connection
5{
6 private $db; // instance de connexion
7 public $date;
8
9 public function __construct()
10 {
11 $this->db = parent::getInstance(); // connexion
12 }
13
14 // code SQL
15 public function create_tables()
16 {
17 // la table prestations est liée à la table clients
18 // les tables devis_factures, cesu et locations sont liées à la table prestations
19 $this->db->exec("CREATE TABLE IF NOT EXISTS clients (ID INTEGER, prenom_nom TEXT, adresse TEXT, code_client TEXT, commentaires TEXT, PRIMARY KEY(ID AUTOINCREMENT));");
20 $this->db->exec("CREATE TABLE IF NOT EXISTS prestations (ID INTEGER, ID_client INTEGER, combientieme_fois INTEGER, code_presta TEXT, date INTEGER, type TEXT, mode_paiement TEXT, commentaires TEXT, PRIMARY KEY(ID AUTOINCREMENT));");
21 $this->db->exec("CREATE TABLE IF NOT EXISTS devis_factures (ID INTEGER, ID_presta INTEGER, validite_devis TEXT, signature_devis TEXT, taches TEXT, machine TEXT, OS TEXT, donnees TEXT, cles_licences TEXT, total_main_d_oeuvre INTEGER, pieces TEXT, total_pieces INTEGER, deplacement INTEGER, total_HT INTEGER, PRIMARY KEY(ID AUTOINCREMENT));");
22 $this->db->exec("CREATE TABLE IF NOT EXISTS cesu (ID INTEGER, ID_presta INTEGER, taches TEXT, duree_travail TEXT, salaire INTEGER, PRIMARY KEY(ID AUTOINCREMENT));");
23 $this->db->exec("CREATE TABLE IF NOT EXISTS locations (ID INTEGER, ID_presta INTEGER, nature_bien TEXT, valeur INTEGER, etat_des_lieux_debut TEXT, etat_des_lieux_fin TEXT, total_HT INTEGER, PRIMARY KEY(ID AUTOINCREMENT));");
24
25 // les types de variables de sqlite sont peu nombreux et autorisent un typage automatique
26 // le "type indiqué" est indiqué dans l'instruction CREATE TABLE
27 // https://www.leppf.com/site/spip.php?article89
28
29 // || type indiqué || type choisi automatiquement || autre types possibles ||
30 // ---------------------------------------------------------------------------
31 // || TEXT || TEXT || BLOB, NULL ||
32 // || INTEGER || INTEGER (de 1 à 8 octets) || REAL, TEXT, BLOB, NULL ||
33 // || REAL || REAL (flottant sur 9 octets) || TEXT, BLOB, NULL ||
34 // || NUMERIC || INTEGER ou REAL || TEXT, BLOB, NULL ||
35 // || NONE || indéfini || dépend des données ||
36
37 // du code SQL écrit pour d'autres SGBD devrait fonctionner,
38 // sqlite fera des conversions dans ses propres types avec les problèmes qu'on peut imaginer
39
40 // pour les dates, on stockera à priori le timestamp
41 }
42}
diff --git a/php/Zenity.php b/php/Zenity.php
deleted file mode 100644
index a04b794..0000000
--- a/php/Zenity.php
+++ /dev/null
@@ -1,110 +0,0 @@
1<?php
2// php/Zenity.php
3//
4// commande système zenity
5
6abstract class ZenityCmd
7{
8 protected $command = 'zenity';
9 protected $command_type = '';
10 protected $rows = [];
11 private $title = 'ORDIPOLO';
12 private $text = '';
13 protected $width = 300;
14 protected $height = 200; // recalculée en fonction du contenu, vaut au minimum 150
15
16 protected function __construct($text, array $rows = []) // $rows est optionnel
17 {
18 $this->text = $text;
19 $this->rows= $rows;
20 $this->command .= $this->command_type;
21 $this->command .= ' --title="' . $this->title . '"';
22 $this->command .= ' --text="' . $this->text . '"';
23 }
24
25 public function get()
26 {
27 return($this->command);
28 }
29}
30
31
32class ZenityList extends ZenityCmd
33{
34 public function __construct($text, array $rows)
35 {
36 $this->command_type = ' --list';
37 parent::__construct($text, $rows);
38 $this->height = 80 + count($this->rows) * 25;
39 $this->command .= ' --width=' . $this->width;
40 $this->command .= ' --height=' . $this->height;
41 $this->command .= ' --hide-header'; // ligne inutile, il y a déjà le --text
42 self::one_column_zenity_list($this->rows);
43 }
44
45 public function set_entries($rows_set) // variable renseignée après la construction
46 {
47 $this->rows = $rows_set;
48 }
49
50 private function one_column_zenity_list($rows)
51 {
52 $output = ' --column=""';
53 foreach($rows as $entry)
54 {
55 $output .= ' "' . $entry . '"'; // forme: ' "choix 1" "choix 2"'
56 }
57 $this->command .= $output;
58 }
59}
60
61class ZenityQuestion extends ZenityCmd
62{
63 public function __construct($text)
64 {
65 $this->command_type = ' --question';
66 parent::__construct($text);
67 $this->command .= ' && echo $?';
68 // la sortie de "zenity --question" est le statut de sortie "$?"
69 // $? vaut 0 pour oui, 1 pour non, à ceci près que pour non zenity ne renvoie rien
70 }
71}
72
73class ZenityForms extends ZenityCmd
74{
75 public function __construct($text, array $rows)
76 {
77 $this->command_type = ' --forms';
78 parent::__construct($text, $rows);
79 //$this->height = 80 + count($this->rows) * 25; // à tester, mais devrait produire le rendu attendu
80 self::entries_zenity_forms($this->rows);
81 }
82
83 private function entries_zenity_forms($entries)
84 {
85 $output = '';
86 foreach($entries as $one_entry)
87 {
88 $output .= ' --add-entry="' . $one_entry . '"'; // forme: ' "choix 1" "choix 2"'
89 }
90 $this->command .= $output;
91 }
92}
93
94class ZenityCalendar extends ZenityCmd
95{
96 public function __construct($text)
97 {
98 $this->command_type = ' --calendar';
99 parent::__construct($text);
100 }
101}
102
103class ZenityEntry extends ZenityCmd
104{
105 public function __construct($text)
106 {
107 $this->command_type = ' --entry';
108 parent::__construct($text);
109 }
110}
diff --git a/php/dependances.php b/php/dependances.php
deleted file mode 100644
index 66ce414..0000000
--- a/php/dependances.php
+++ /dev/null
@@ -1,100 +0,0 @@
1<?php
2// php/dependances.php
3// Vérification des dépendances nécessaires au fonctionnement de ce programmes.
4
5// Environnement dans lequel ce programmes a été créé:
6// - système archlinux avec l'interpréteur bash
7// - PHP 8.1 + paquet php-sqlite
8// - module pdo_sqlite activé dans le fichier php.ini
9// - sqlitebrowser (interface graphique pour sqlite)
10// - distribution LaTeX texlive
11// - zenity
12
13// zenity disponible
14if(exec("zenity --version 2> /dev/null") === '') // commande qui n'ouvre pas de fenêtre, erreur si la chaine est vide parce que la sortie d'erreur va dans /dev/null
15{
16 printf("Impossible de lancer zenity. Veuillez installer le paquet zenity\n");
17 exit();
18}
19
20// compilateur pdflatex disponible
21if(exec("pdflatex -version 2> /dev/null") === '') // erreur si la chaine est vide parce que la sortie d'erreur va dans /dev/null
22{
23 printf("Impossible de lancer pdflatex. Veuillez installer une distribution LaTeX.\n");
24 exit();
25}
26
27// test de la présence du paquet php-sqlite
28// compliqué? dépend de l'OS?
29// note: l'erreur se produit dès le démarrage de PHP si le php.ini est bon mais qu'il manque le paquet
30
31// module pdo_sqlite de PHP activé?
32if(!extension_loaded("pdo_sqlite"))
33{
34 printf("Impossible d'utiliser la base de données. Veuillez installer le paquet php-sqlite ET activer l'extension pdo_sqlite dans le fichier php.ini.\n");
35 exit();
36}
37
38
39// client sqlite
40if($exec_mode === 'gui')
41{
42 // sqlitebrowser disponible
43 if(exec("which sqlitebrowser 2> /dev/null") !== '') // which parcourt les dossiers du PATH et affiche les chemins trouvés, erreur si la chaine est vide parce que la sortie d'erreur va dans /dev/null
44 {
45 $sqlitebrowser_enable = true;
46 }
47 // terminal en mode graphique disponible, permettra d'y utiliser sqlite dans la console
48 else
49 {
50 printf("Sqlitebrowser n'est pas disponible. J'espère que vous maîtrisez le SQL.\n");
51
52 if(exec("which xterm 2> /dev/null") !== '' && exec("xterm -v 2> /dev/null") !== '')
53 {
54 $x_term_ccommand = 'xterm -e';
55 }
56 elseif(exec("which urxvt 2> /dev/null") !== '')
57 {
58 $x_term_ccommand = 'urxvt -e';
59 }
60 elseif(exec("which lxterminal 2> /dev/null") !== '' && exec("lxterminal -v 2> /dev/null") !== '')
61 {
62 $x_term_ccommand = 'lxterminal -e';
63 }
64 elseif(exec("which xfce4-terminal 2> /dev/null") !== '' && exec("xfce4-terminal -V 2> /dev/null") !== '')
65 {
66 $x_term_ccommand = 'xfce4-terminal -x';
67 }
68 elseif(exec("which gnome-terminal 2> /dev/null") !== '')
69 {
70 $x_term_ccommand = 'gnome-terminal --';
71 }
72 elseif(exec("which konsole 2> /dev/null") !== '' && exec("konsole -v 2> /dev/null") !== '')
73 {
74 $x_term_ccommand = 'konsole -e';
75 }
76 // pour MAC - NON TESTÉ !! (possibilité de détecter le système avec uname?)
77 //~ elseif(exec("which Terminal 2> /dev/null") !== '')
78 //~ {
79 //~ $x_term_ccommand = 'open -a Terminal -e'; // ne marche probablement pas
80 //~ }
81 else
82 {
83 printf("Impossible d'ouvrir un terminal pour y lancer sqlite. Veuillez installer un terminal en mode graphique (par exemple xterm).\n");
84 }
85 }
86}
87
88// sqlite CLI disponible
89if(exec("which sqlite 2> /dev/null") !== '' && exec("sqlite --version 2> /dev/null") !== '')
90{
91 $sqlite_cli = 'sqlite';
92}
93elseif(exec("which sqlite3 2> /dev/null") !== '' && exec("sqlite3 --version 2> /dev/null") !== '')
94{
95 $sqlite_cli = 'sqlite3';
96}
97else
98{
99 printf("Impossible de lancer sqlite dans le terminal en utilisant la commande ' . $sqlite_cli . '\n");
100}
diff --git a/php/functions.php b/php/functions.php
deleted file mode 100644
index 83ebead..0000000
--- a/php/functions.php
+++ /dev/null
@@ -1,26 +0,0 @@
1<?php
2// php/functions.php
3
4// commande pour lancer une application graphique en ouvrant un fichier
5function window_app_command(string $app, string $path = ''): string
6{
7 $command = 'nohup ' . $app; // détache l'appli du script PHP
8 if($path !== '')
9 {
10 $command .= ' ' . $path;
11 }
12 $command .= ' > /dev/null 2>&1 &';
13 // stdout > /dev/null et & permettent de rendre la main à PHP
14 // stderr > stdout pour cacher un message inutile
15 return $command;
16}
17
18function recherche_client(string $saisie): array
19{
20 $resultats = [];
21
22 // recherche dans la BDD
23
24
25 return($resultats);
26}
diff --git a/php/latexToPdf.php b/php/latexToPdf.php
deleted file mode 100644
index 18ff452..0000000
--- a/php/latexToPdf.php
+++ /dev/null
@@ -1,38 +0,0 @@
1<?php
2// php/latexToPdf.php
3
4// contenu
5$latex = '\documentclass{article}
6
7\usepackage[french]{babel}
8\usepackage[utf8]{inputenc}
9\usepackage[T1]{fontenc}
10
11\begin{document}
12 Bravo, ça compile !!
13\end{document}';
14
15$fileName = 'latex.tex';
16$latexPath = '';
17$pdfPath = '';
18
19//~ writeLatex($latex, $fileName, $latexPath);
20
21function latexToPdf(string $fileName, string $latexPath, string $pdfPath)
22{
23 $outputDir = '';
24 if($pdfPath !== '')
25 {
26 $outputDir = '-output-directory=' . $pdfPath . ' ';
27 }
28
29 // compilation
30 exec('pdflatex ' . $outputDir . $latexPath . $fileName);
31
32 // nettoyage
33 $basename = basename($fileName, '.tex');
34 unlink($pdfPath . $basename . '.aux');
35 unlink($pdfPath . $basename . '.log');
36}
37
38//~ latexToPdf($fileName, $latexPath, $pdfPath);
diff --git a/php/latex_templates/devis.php b/php/latex_templates/devis.php
deleted file mode 100644
index 7df98e8..0000000
--- a/php/latex_templates/devis.php
+++ /dev/null
@@ -1,84 +0,0 @@
1<?php
2ob_start();
3?>
4\documentclass{report}
5
6\usepackage[french]{babel}
7\usepackage{lmodern} % police latin modern
8\usepackage[utf8]{inputenc} % encodage d'entrée (document)
9\usepackage[T1]{fontenc} % encodage de sortie (rendu)
10\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges
11\usepackage{graphicx} % insertions d'images
12\usepackage{textcomp} % pour N°
13\usepackage{xcolor} % texte en couleur
14\usepackage{tabularx} % dimensions des tableaux automatique
15\usepackage{tikz} % le rectangle
16
17\begin{document}
18 \setlength{\parindent}{0cm} % supprimer les alinéas
19 \large{}
20 \pagestyle{empty} % en-tête et pied de page vides
21 \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert
22
23 \begin{center}
24 \includegraphics{ordipolo.png}\\
25 \Large\textbf{Dépannage informatique - Assistance à domicile}
26 \end{center}
27
28 2 A rue de l'île de Man, 29000 Quimper
29
30 SIRET : 814 320 610 00011
31
32 \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}}
33 Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr
34 \end{tabularx}
35
36 Plus d'infos sur le site web: https\string://ordipolo.fr\\
37 % \string supprime l'espace devant les :
38
39 \begin{center}
40 \large\textbf{DEVIS}
41 \end{center}
42
43 CLIENT\\
44
45 \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}}
46 Mme, M : \textcolor{vert}{} &
47 Date du devis : \textcolor{vert}{}\\
48 Adresse : \textcolor{vert}{} &
49 Delai de livraison : \textcolor{vert}{}\\
50 \end{tabularx}\\\\
51
52 PRESTATION\\
53
54 \textcolor{vert}{}
55
56 Total main d'oeuvre : \textcolor{vert}{}\\
57
58 PIÈCES\\
59
60 \textcolor{vert}{}
61
62 Total pièces : \textcolor{vert}{}\\
63
64 TOTAL\\
65
66 Déplacement : \textcolor{vert}{}
67
68 Total HT : \textcolor{vert}{}
69
70 \textit{(TVA non applicable, article 293B du code général des impôts)}
71
72 Référence du devis : \textcolor{vert}{}\\
73
74 Devis reçu avant l'exécution des travaux, signature du client :\\
75 \begin{tikzpicture}
76 \draw (0,0) rectangle (4,2);
77 \end{tikzpicture}\\
78
79 \small{}NOTA BENE\\
80
81 Si le délai de livraison n’est pas précisé, c’est naturellement le délai légal de 30 jours qui est appliqué. Lorsqu'Ordi Polo garde (ou prête) un ordinateur le temps nécessaire à la réparation, le prêt peut être formalisé par un document signé par les deux parties. Le dépannage inclut principalement l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine nécessaires au nettoyage de la poussière ou au remplacement d'une pièce. Ordi Polo ne répare pas les composants électroniques défectueux et n'est pas responsable des dysfonctionnements de l'ordinateur dont l'origine est matérielle. Ordi Polo ne vend pas de matériel mais peut conseiller ou réaliser les démarches d’un achat.
82\end{document}
83<?php
84$devisLatex = ob_get_clean();
diff --git a/php/latex_templates/enveloppe_recto.php b/php/latex_templates/enveloppe_recto.php
deleted file mode 100644
index 38003a1..0000000
--- a/php/latex_templates/enveloppe_recto.php
+++ /dev/null
@@ -1,26 +0,0 @@
1<?php
2ob_start();
3?>
4\documentclass[]{report}
5
6\usepackage[french]{babel}
7\usepackage{lmodern} % police latin modern
8\usepackage[utf8]{inputenc} % encodage d'entrée (document)
9\usepackage[T1]{fontenc} % encodage de sortie (rendu)
10\usepackage{graphicx} % insertions d'images
11\usepackage[papersize={22cm, 11cm}, top=1cm, left=1cm, bottom=1cm]{geometry}
12\pagestyle{empty}
13
14\begin{document}
15 \setlength{\parindent}{0cm}
16 \includegraphics{ordipolo.png}\\
17 \large\textbf{Dépannage informatique - Assistance à domicile}
18
19 \setlength{\parindent}{7,9cm}
20 \begin{minipage}[b][5,8cm]{12cm}
21 \LARGE{M. Truc\\3, rue Machin\\\\\\}
22 \LARGE{2 \ 9 \ 0 \ 0 \ 0 \ \ \ \ QUIMPER}
23 \end{minipage}
24\end{document}
25<?php
26$enveloppeRectoLatex = ob_get_clean();
diff --git a/php/latex_templates/enveloppe_verso.php b/php/latex_templates/enveloppe_verso.php
deleted file mode 100644
index 51f5f4d..0000000
--- a/php/latex_templates/enveloppe_verso.php
+++ /dev/null
@@ -1,18 +0,0 @@
1<?php
2ob_start();
3?>
4\documentclass[]{report}
5
6\usepackage[french]{babel}
7\usepackage{lmodern} % police latin modern
8\usepackage[utf8]{inputenc} % encodage d'entrée (document)
9\usepackage[T1]{fontenc} % encodage de sortie (rendu)
10\usepackage[papersize={22cm, 11cm}, top=0.6cm, left=4.5cm]{geometry}
11\pagestyle{empty}
12
13\begin{document}
14 \setlength{\parindent}{0cm}
15 \Large{Paul Jusot\\2A, rue de l'île de Man\\29000 QUIMPER}
16\end{document}
17<?php
18$enveloppeVersoLatex = ob_get_clean();
diff --git a/php/latex_templates/facture.php b/php/latex_templates/facture.php
deleted file mode 100644
index 409dd9a..0000000
--- a/php/latex_templates/facture.php
+++ /dev/null
@@ -1,85 +0,0 @@
1<?php
2ob_start();
3?>
4\documentclass{report}
5
6\usepackage[french]{babel}
7\usepackage{lmodern} % police latin modern
8\usepackage[utf8]{inputenc} % encodage d'entrée (document)
9\usepackage[T1]{fontenc} % encodage de sortie (rendu)
10\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges
11\usepackage{graphicx} % insertions d'images
12\usepackage{textcomp} % pour N°
13\usepackage{xcolor} % texte en couleur
14\usepackage{tabularx} % dimensions des tableaux automatique
15
16\begin{document}
17 \setlength{\parindent}{0cm} % supprimer les alinéas
18 \large{}
19 \pagestyle{empty} % en-tête et pied de page vides
20 \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert
21
22 \begin{center}
23 \includegraphics{ordipolo.png}\\
24 \Large\textbf{Dépannage informatique - Assistance à domicile}
25 \end{center}
26
27 2 A rue de l'île de Man, 29000 Quimper
28
29 SIRET : 814 320 610 00011
30
31 \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}}
32 Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr
33 \end{tabularx}
34
35 Plus d'infos sur le site web: https\string://ordipolo.fr\\
36 % \string supprime l'espace devant les :
37
38 \begin{center}
39 \large\textbf{FACTURE}
40 \end{center}
41
42 CLIENT\\
43
44 \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}}
45 Mme, M : \textcolor{vert}{} &
46 Date : \textcolor{vert}{}\\
47 \end{tabularx}\\
48 Adresse : \textcolor{vert}{}\\
49
50 PRESTATION\\
51
52 \textcolor{vert}{}
53
54 Modèle de l'ordinateur : \textcolor{vert}{}
55
56 Système d'exploitation : \textcolor{vert}{}
57
58 Données à conserver : \textcolor{vert}{}
59
60 Clé d'activation : \textcolor{vert}{}\\
61
62 Total main d'oeuvre : \textcolor{vert}{}\\
63
64 PIÈCES\\
65
66 \textcolor{vert}{}
67
68 Total pièces : \textcolor{vert}{}\\
69
70 TOTAL\\
71
72 Déplacement : \textcolor{vert}{}
73
74 Total HT : \textcolor{vert}{}
75
76 \textit{(TVA non applicable, article 293B du code général des impôts)}
77
78 Référence de la facture : \textcolor{vert}{}\\
79
80 \small{}NOTA BENE\\
81
82 Lorsqu'Ordi Polo garde (ou prête) un ordinateur le temps nécessaire à la réparation, le prêt peut être formalisé par un document signé par les deux parties. Le dépannage inclut principalement l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine nécessaires au nettoyage de la poussière ou au remplacement d'une pièce. Ordi Polo ne répare pas les composants électroniques défectueux et n'est pas responsable des dysfonctionnements de l'ordinateur dont l'origine est matérielle. Ordi Polo ne vend pas de matériel mais peut conseiller ou réaliser les démarches d’un achat.
83\end{document}
84<?php
85$factureLatex = ob_get_clean();
diff --git a/php/latex_templates/location.php b/php/latex_templates/location.php
deleted file mode 100644
index dc4ea3e..0000000
--- a/php/latex_templates/location.php
+++ /dev/null
@@ -1,49 +0,0 @@
1<?php
2ob_start();
3?>
4\documentclass{report}
5
6\usepackage[french]{babel}
7\usepackage{lmodern} % police latin modern
8\usepackage[utf8]{inputenc} % encodage d'entrée (document)
9\usepackage[T1]{fontenc} % encodage de sortie (rendu)
10\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges
11\usepackage{graphicx} % insertions d'images
12\usepackage{textcomp} % pour N°
13\usepackage{xcolor} % texte en couleur
14%\usepackage{wrapfig} % placer texte et image côte-à-côte
15\usepackage{tabularx} % dimensions des tableaux automatique
16
17\begin{document}
18 \setlength{\parindent}{0cm} % supprimer les alinéas
19 \large{}
20 \pagestyle{empty} % en-tête et pied de page vides
21 \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert
22
23 \begin{center}
24 \includegraphics{ordipolo.png}\\
25 \Large\textbf{Dépannage informatique - Assistance à domicile}
26 \end{center}
27
28 2 A rue de l'île de Man, 29000 Quimper
29
30 SIRET : 814 320 610 00011
31
32 \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}}
33 Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr
34 \end{tabularx}
35
36 Plus d'infos sur le site web: https\string://ordipolo.fr\\
37 % \string supprime l'espace devant les :
38
39 CLIENT\\
40
41 \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}}
42 Mme, M : \textcolor{vert}{} &
43 Date : \textcolor{vert}{}\\
44 \end{tabularx}\\
45 Adresse : \textcolor{vert}{}\\
46
47\end{document}
48<?php
49$locationLatex = ob_get_clean();
diff --git a/php/main.php b/php/main.php
deleted file mode 100755
index a60a920..0000000
--- a/php/main.php
+++ /dev/null
@@ -1,205 +0,0 @@
1#!/bin/php
2<?php
3// php/main.php
4
5// configuration du programme par l'utilisateur
6require('../config.php'); // fichier de l'utilisateur: à déplacer peut-être dans un dossier config
7//require('config_window.php'); // configuration user-friendly et assistée avec des messages d'erreur et des indications
8//require('config_check.php'); // contrôle de config.php
9
10// variables diverses, certaines utilisent les variables de config.php
11$exec_mode = 'gui'; // les versions pure console (CLI) et serveur web (CGI) de ce programme ne sont pas prévues pour l'instant
12$file_explorer = 'xdg-open'; // ouvre l'explorateur de fichiers par défaut quand suivi d'un chemin en paramètre
13$flyer = $pub . $flyer;
14$business_card = $pub . $business_card;
15$db_place .= $db_name . '.sqlite';
16$sqlitebrowser_enable = false;
17$sqlite_cli = ''; // commande sqlite ou sqlite3
18$x_term_command = ''; // commande terminal en mode graphique
19
20require('dependances.php'); // vérification des dépendances
21require('functions.php');
22require('Dates.php'); // gère dates et timestamps
23Dates::$date_format = $date_format; // dates européennes ou américaines
24
25require('Connection.php'); // class DB extends PDO, connexion à la base et création de la base et des tables si elles n'existent pas déjà
26require('Model.php'); // class Model extends DB, requêtes SQL
27Connection::$dsn = 'sqlite:' . $db_place; // Data Source Name = 1er paramètre du constructeur de PDO: $bdd = new PDO($dsn);
28
29$Database = new Model; // connexion et méthodes pour manipuler la base de données
30$Database->create_tables();
31
32require('Zenity.php'); // commande système zenity
33require('zenity_setup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande)
34
35require('Latex.php'); // générer le code LaTeX
36require('latexToPdf.php'); // compilation
37
38
39// boucle principale
40$boucle = true;
41while($boucle)
42{
43 // menu principal
44 $choix_niv1 = exec($MenuPrincipal->get());
45
46 // enregistrement
47 if($choix_niv1 === 'Nouvelle prestation')
48 {
49 // est ce que le client est déjà dans la base?
50 if(exec($QuestionNouveauClient->get()) === 0) // $? = 0 signifie oui
51 {
52 // saisie du nom du client et recherche
53 $client_saisie = exec($RechercheClient->get());
54
55 // sélection parmi les résultats
56 $ResultatsRechercheClient->set_entries(recherche_client($client_saisie));
57 $choix_niv2 = exec($ResultatsRechercheClient->get());
58 if($choix_niv2 !== '')
59 {
60 echo "client trouvé\n";
61 }
62 else // chaîne vide
63 {
64 echo "client pas trouvé\n";
65 exec($NouveauClient->get());
66
67 // enregistrement dans la BDD
68
69 }
70
71 // récupération des infos dans la BDD
72
73 }
74 else
75 {
76 echo "nouveau client\n";
77 exec($NouveauClient->get());
78
79 // enregistrement dans la BDD
80
81 }
82
83 // type comptable de prestation
84 $choix_niv2 = exec($MenuEnregistrement->get());
85 $continuer = true;
86 if($choix_niv2 === "Devis")
87 {
88 $type = 'DEVIS';
89 }
90 elseif($choix_niv2 === "Facture")
91 {
92 $type = 'FACTURE';
93 }
94 elseif($choix_niv2 === "CESU")
95 {
96 $type = 'CESU';
97 }
98 elseif($choix_niv2 === "Pas de prestation")
99 {
100 $type = '';
101 }
102 else
103 {
104 $continuer = false; // retour menu principal
105 }
106
107 // détail de la prestation
108 if($continuer)
109 {
110 exec($Calendrier->get());
111 exec($FormulairePrestation->get());
112 // enregistrement date et prestation en BDD
113 exec($CommentairePrestation->get());
114 // enregistrement commentaire en BDD
115 // vérification?
116
117 // tableau récaptilatif et demande de confirmation des informations
118 // création fichiers LaTeX et PDF
119
120 // imprimer?
121 //~ $imprimer_facture = exec('zenity --question --width=250 --title="Base de données mise à jour" --text="Imprimer la facture?"');
122 //~ $imprimer_enveloppe = exec('zenity --question --width=250 --title="Base de données mise à jour" --text="Imprimer l\'adresse sur une enveloppe? (insérer une enveloppe DL sans fenêtre dans l\'imprimante"');
123 }
124 }
125
126 elseif($choix_niv1 === 'Fichier clients')
127 {
128 // quel affichage? un grand tableau avec zenity? une page web? un document LaTeX?
129 }
130
131 // documents à imprimer
132 elseif($choix_niv1 === 'Créer/imprimer un document')
133 {
134 $choix_niv2 = exec($MenuDocuments->get());
135 if($choix_niv2 === 'Devis')
136 {
137
138 }
139 elseif($choix_niv2 === 'Facture')
140 {
141
142 }
143 elseif($choix_niv2 === 'Lettre avec adresse')
144 {
145
146 }
147 elseif($choix_niv2 === 'Livre des recettes')
148 {
149
150 }
151 elseif($choix_niv2 === "Registre des achats")
152 {
153
154 }
155 elseif($choix_niv2 === "Bilan annuel")
156 {
157
158 }
159 else
160 {
161 // retour menu principal
162 }
163 }
164
165 // Supports de communication
166 elseif($choix_niv1 === 'Communication')
167 {
168 $choix_niv2 = exec($MenuCommunication->get());
169 if($choix_niv2 === 'Flyer (nécessite gimp)')
170 {
171 exec(window_app_command('gimp', $flyer));
172 }
173 elseif($choix_niv2 === 'Carte de visite (nécessite scribus)')
174 {
175 exec(window_app_command('scribus', $business_card));
176 }
177 elseif($choix_niv2 === 'Explorateur de fichiers')
178 {
179 exec(window_app_command($file_explorer, $pub));
180 }
181 else
182 {
183 // retour menu principal
184 }
185 }
186
187 // BDD
188 elseif($choix_niv1 === 'Base de données')
189 {
190 if($sqlitebrowser_enable)
191 {
192 exec(window_app_command('sqlitebrowser', $db_place));
193 }
194 else
195 {
196 exec($x_term_command . ' ' . $sqlite_cli . ' ' . $db_place); // correpond à priori à: xterm -e sqlite3 ~/ORDIPOLO/Appli_PHP/ordipolo.sqlite
197 }
198 }
199 else
200 {
201 $boucle = false; // byebye
202 }
203}
204
205// sauvegarder la base de données
diff --git a/php/zenity_setup.php b/php/zenity_setup.php
deleted file mode 100644
index b060c32..0000000
--- a/php/zenity_setup.php
+++ /dev/null
@@ -1,37 +0,0 @@
1<?php
2// php/zenity_setup.php
3
4
5// contenu des fenêtres zenity
6$menu_principal_text = "Gestion d'une micro-entreprise";
7$menu_principal_entrees = ["Nouvelle prestation", "Fichier clients", "Créer/imprimer un document", "Communication", "Base de données"];
8$question_nouveau_client_text = "Ce client figure t\'il déjà dans le fichier clients?";
9$menu_enregistrement_text = "Type d\'enregistrement?";
10$menu_enregistrement_entrees = ["Devis", "Facture", "CESU", "Pas de prestation"];
11$menu_documents_text = "Création de documents LaTeX";
12$menu_documents_entrees = ["Devis", "Facture", "Lettre avec adresse", "Livre des recettes", "Registre des achats", "Bilan annuel"];
13$menu_communication_text = "Imprimer un support de communication";
14$menu_communication_entrees = ["Flyer (nécessite gimp)", "Carte de visite (nécessite scribus)", "Explorateur de fichiers"];
15$recherche_client_text = "Recherche d'un client avec son nom ou son code client";
16$resultats_recherche_client_text = "Résultats de la recherche, sélectionner un client";
17$nouveau_client_text = "Nouveau client";
18$nouveau_client_entrees = ["Prénom Nom:", "Adresse:", "Code client, type: J.P.Duchmol"];
19$calendar_text = 'Nouvelle prestation étape 1/3 - Choisir une date';
20$formulaire_text = 'Nouvelle prestation 2/3 - Détail des travaux';
21$formulaire_entrees = ["Tâches effectuées:", "Modèle du PC:", "OS:", "Données sauvegardées:", "Clés d\'activation:", "Temps main d\'oeuvre (heures):", "Total main d\'oeuvre (euros):", "Total pièces (euros):", "Déplacement (euros)", "Total HT (euros):",];
22$commentaire_prestation_text = 'Nouvelle prestation 3/3 - Commentaires';
23
24
25// commandes système qui ouvrent les fenêtres zenity, un objet = une commande
26// s'utilisent comme ceci: exec($Objet->get());
27$MenuPrincipal = new ZenityList($menu_principal_text, $menu_principal_entrees);
28$QuestionNouveauClient = new ZenityQuestion($question_nouveau_client_text);
29$MenuEnregistrement = new ZenityList($menu_enregistrement_text, $menu_enregistrement_entrees);
30$MenuDocuments = new ZenityList($menu_documents_text, $menu_documents_entrees);
31$MenuCommunication = new ZenityList($menu_communication_text, $menu_communication_entrees);
32$RechercheClient = new zenityEntry($recherche_client_text);
33$ResultatsRechercheClient = new zenityList($resultats_recherche_client_text, []);
34$NouveauClient = new ZenityForms($nouveau_client_text, $nouveau_client_entrees);
35$Calendrier = new ZenityCalendar($calendar_text);
36$FormulairePrestation = new ZenityForms($formulaire_text, $formulaire_entrees);
37$CommentairePrestation = new ZenityEntry($commentaire_prestation_text);