summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--php/Connection.php18
-rw-r--r--php/DateTimestamp.php50
-rw-r--r--php/Dates.php105
-rw-r--r--php/Latex.php4
-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.php5
10 files changed, 385 insertions, 59 deletions
diff --git a/php/Connection.php b/php/Connection.php
index bdc7aa9..e944f69 100644
--- a/php/Connection.php
+++ b/php/Connection.php
@@ -1,16 +1,26 @@
1<?php 1<?php
2// php/Connection.php 2// php/Connection.php
3 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
4class Connection extends PDO 14class Connection extends PDO
5{ 15{
6 // paramètres du constructeur de PDO, avec sqlite seul le premier est nécessaire 16 // paramètres du constructeur de PDO, avec sqlite seul le premier est nécessaire
7 public static $dsn = ''; // Data Source Name = 1er paramètre 17 public static $dsn = ''; // Data Source Name = 1er paramètre
8 public static $user = ''; 18 //~ public static $user = '';
9 public static $password = ''; 19 //~ public static $password = '';
10 public static $options = ''; 20 //~ public static $options = '';
11 private static $Instance; 21 private static $Instance;
12 22
13 public function __construct() 23 private function __construct()
14 { 24 {
15 try 25 try
16 { 26 {
diff --git a/php/DateTimestamp.php b/php/DateTimestamp.php
deleted file mode 100644
index ca07b0a..0000000
--- a/php/DateTimestamp.php
+++ /dev/null
@@ -1,50 +0,0 @@
1<?php
2// php/DateTimestamp.php
3
4class DateTimestamp
5{
6 private $date;
7 static public $date_format = 'EU'; // dates européennes jj-mm-aaaa par défaut
8
9 // date jour/mois/année (string) -> timestamp (int)
10 private function get_timestamp(): int
11 {
12 if(self::$date_format === 'EU')
13 {
14 // change jj/mm/aaaa en jj-mm-aaaa
15 $this->date = preg_replace('#/#', '-', $this->date);
16 }
17 elseif(self::$date_format === 'US')
18 {
19 // change mm-dd.yyyy en mm/dd/yyyy
20 $this->date = preg_replace('#[-\.]#', '/', $this->date);
21 }
22 else
23 {
24 echo('Le fichier config.php comporte une erreur. La variable $date_format doit avoir pour valeur "EU" ou "US"');
25 die(); // brutal
26 }
27 return(strtotime($this->date));
28 // strtotime() devine le format en analysant la chaîne en entrée, on l'aide un peu
29 // avec des /, php considère que la date est américaine
30 // avec des - ou des ., php considère que la date est européenne
31 }
32
33 // timestamp (int) -> date jj-mm-aaaa (string)
34 private function get_date(): string
35 {
36 if(self::$date_format === 'EU')
37 {
38 return(date("j-m-Y", $this->date));
39 }
40 elseif(self::$date_format === 'US')
41 {
42 return(date("m/d/Y", $this->date));
43 }
44 else
45 {
46 echo('Le fichier config.php comporte une erreur. La variable $date_format doit avoir pour valeur "EU" ou "US"');
47 die(); // brutal
48 }
49 }
50}
diff --git a/php/Dates.php b/php/Dates.php
new file mode 100644
index 0000000..264166f
--- /dev/null
+++ b/php/Dates.php
@@ -0,0 +1,105 @@
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
index e8ed763..c3d56af 100644
--- a/php/Latex.php
+++ b/php/Latex.php
@@ -26,7 +26,7 @@ abstract class Latex
26 26
27abstract class PrestaLatex extends Latex 27abstract class PrestaLatex extends Latex
28{ 28{
29 public function __construct(string $quoi, , string $codePresta) 29 public function __construct(string $quoi, string $codePresta)
30 { 30 {
31 nameTheFile($quoi, $codePresta); 31 nameTheFile($quoi, $codePresta);
32 } 32 }
@@ -55,7 +55,7 @@ class EnveloppeVersoLatex extends PrestaLatex
55 55
56abstract class ComptaLatex extends Latex 56abstract class ComptaLatex extends Latex
57{ 57{
58 public function __construct(string $quoi, , string $annee, int $numeroMois = 0) 58 public function __construct(string $quoi, string $annee, int $numeroMois = 0)
59 { 59 {
60 nameTheFile($quoi, $annee, $numeroMois); 60 nameTheFile($quoi, $annee, $numeroMois);
61 } 61 }
diff --git a/php/latex_templates/devis.php b/php/latex_templates/devis.php
new file mode 100644
index 0000000..7df98e8
--- /dev/null
+++ b/php/latex_templates/devis.php
@@ -0,0 +1,84 @@
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
new file mode 100644
index 0000000..38003a1
--- /dev/null
+++ b/php/latex_templates/enveloppe_recto.php
@@ -0,0 +1,26 @@
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
new file mode 100644
index 0000000..51f5f4d
--- /dev/null
+++ b/php/latex_templates/enveloppe_verso.php
@@ -0,0 +1,18 @@
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
new file mode 100644
index 0000000..409dd9a
--- /dev/null
+++ b/php/latex_templates/facture.php
@@ -0,0 +1,85 @@
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
new file mode 100644
index 0000000..dc4ea3e
--- /dev/null
+++ b/php/latex_templates/location.php
@@ -0,0 +1,49 @@
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
index 88181ea..a60a920 100755
--- a/php/main.php
+++ b/php/main.php
@@ -19,8 +19,8 @@ $x_term_command = ''; // commande terminal en mode graphique
19 19
20require('dependances.php'); // vérification des dépendances 20require('dependances.php'); // vérification des dépendances
21require('functions.php'); 21require('functions.php');
22require('DateTimestamp.php'); // objet date 22require('Dates.php'); // gère dates et timestamps
23DateTimestamp::$date_format = $date_format; // dates européennes ou américaines 23Dates::$date_format = $date_format; // dates européennes ou américaines
24 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à 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 26require('Model.php'); // class Model extends DB, requêtes SQL
@@ -28,7 +28,6 @@ Connection::$dsn = 'sqlite:' . $db_place; // Data Source Name = 1er paramètre d
28 28
29$Database = new Model; // connexion et méthodes pour manipuler la base de données 29$Database = new Model; // connexion et méthodes pour manipuler la base de données
30$Database->create_tables(); 30$Database->create_tables();
31$Database->date = new DateTimestamp;
32 31
33require('Zenity.php'); // commande système zenity 32require('Zenity.php'); // commande système zenity
34require('zenity_setup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande) 33require('zenity_setup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande)