summaryrefslogtreecommitdiff
path: root/php
diff options
context:
space:
mode:
Diffstat (limited to 'php')
-rw-r--r--php/ConnectionDatabase.php35
-rw-r--r--php/Database.php26
-rw-r--r--php/Model.php42
-rw-r--r--php/ZenityClasses.php1
-rw-r--r--php/saisie.php43
-rw-r--r--php/zenity_setup.php (renamed from php/zenity_text.php)18
6 files changed, 94 insertions, 71 deletions
diff --git a/php/ConnectionDatabase.php b/php/ConnectionDatabase.php
new file mode 100644
index 0000000..b26d0bd
--- /dev/null
+++ b/php/ConnectionDatabase.php
@@ -0,0 +1,35 @@
1<?php
2// php/ConnectionDatabase.php
3
4class Connection extends PDO
5{
6 // paramètres du constructeur de PDO, avec sqlite seul le premier est nécessaire
7 public static $dsn = ''; // Data Source Name = 1er paramètre
8 public static $user = '';
9 public static $password = '';
10 public static $options = '';
11 private static $Instance;
12
13 public function __construct()
14 {
15 try
16 {
17 parent::__construct(self::$dsn); // renseigne la variable $dsn de la classe PDO
18 $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // $this pour la méthode du parent PDO
19 }
20 catch(PDOException $e)
21 {
22 die('Erreur : '.$e->getMessage());
23 }
24 }
25
26 // créer son objet avec: $bdd = Connection::getInstance();
27 public static function getInstance(): self
28 {
29 if(self::$Instance === null)
30 {
31 self::$Instance = new self();
32 }
33 return self::$Instance;
34 }
35}
diff --git a/php/Database.php b/php/Database.php
deleted file mode 100644
index 81ce669..0000000
--- a/php/Database.php
+++ /dev/null
@@ -1,26 +0,0 @@
1<?php
2// php/Database.php
3
4// connexion avec PDO_sqlite
5try
6{
7 $db = new PDO('sqlite:' . $db_name . '.sqlite');
8 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
9}
10catch (Exception $e)
11{
12 die('Erreur : '.$e->getMessage());
13}
14
15
16// requêtes SQL
17class SQL
18{
19 // créer les tables si elles n'existent pas encore
20 static function create_tables()
21 {
22 //$db->exec("CREATE TABLE IF NOT EXISTS matable (ID INTEGER PRIMARY KEY, champ1 INTEGER, champ2 TEXT);");
23 //
24 //
25 }
26}
diff --git a/php/Model.php b/php/Model.php
new file mode 100644
index 0000000..9d0f80f
--- /dev/null
+++ b/php/Model.php
@@ -0,0 +1,42 @@
1<?php
2// php/Model.php
3
4class Model extends Connection
5{
6 private $db; // instance de connexion
7
8 public function __construct()
9 {
10 $this->db = parent::getInstance();
11 self::create_tables();
12 }
13
14 // code SQL
15 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/ZenityClasses.php b/php/ZenityClasses.php
index c286d14..7965012 100644
--- a/php/ZenityClasses.php
+++ b/php/ZenityClasses.php
@@ -13,7 +13,6 @@ abstract class Zenity_cmd
13 protected $width = 300; 13 protected $width = 300;
14 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
15 15
16
17 protected function __construct($text, array $rows = []) // $rows est optionnel 16 protected function __construct($text, array $rows = []) // $rows est optionnel
18 { 17 {
19 $this->text = $text; 18 $this->text = $text;
diff --git a/php/saisie.php b/php/saisie.php
index 4b41fbf..1c6563a 100644
--- a/php/saisie.php
+++ b/php/saisie.php
@@ -1,49 +1,6 @@
1<?php 1<?php
2// saisie.php 2// saisie.php
3 3
4$date = exec('zenity --calendar --width=320 --title="Enregistrer une prestation avec un nouveau client 1/2" --text="Choisir une date."');
5var_dump($date);
6
7$start_command = 'zenity --forms';
8$title = ' --title="Enregistrer une prestation avec un nouveau client 2/2"';
9$text = ' --text="Nouveau client"';
10$name = ' --add-entry="Prénom Nom:"';
11$adresse = ' --add-entry="Adresse:"';
12$prestation_type = ' --add-entry="Type de prestation:"';
13$tasks = ' --add-entry="Tâches effectuées:"';
14$computer_model = ' --add-entry="Modèle du PC:"';
15$system = ' --add-entry="OS:"';
16$computer_data = ' --add-entry="Données sauvegardées:"';
17$activation_keys = ' --add-entry="Clés d\'activation:"';
18$labour_time = ' --add-entry="Temps main d\'oeuvre (heures):"';
19$total_labour = ' --add-entry="Total main d\'oeuvre (euros):"';
20$total_parts = ' --add-entry="Total pièces (euros):"';
21$trip = ' --add-entry="Déplacement (euros)"';
22$total = ' --add-entry="Total HT (euros):"';
23$comments = ' --add-entry="Commentaires:"';
24
25$command = $start_command . $title . $text . $name . $adresse . $prestation_type . $tasks. $computer_model . $system . $computer_data . $activation_keys . $labour_time . $total_labour . $total_parts . $trip . $total . $comments;
26//$result = explode('|', "alain dubois|2 rue foch, rennes|assistance|boum le PC !!|tour acer|win 10|sur DD externe|dans le BIOS|2h, 80€|15,80€|10€|105,80€|client chiant");
27$result = explode('|', exec($command));
28var_dump($result);
29//exit();
30
31// nouveau client
32#$choix = exec('zenity --forms --title="Enregistrer une prestation 1/4" --text="Nouveau client" --add-entry="Prénom, nom:" --add-entry="Adresse:" --add-calendar="Date: (ici ou fenêtre suivante?)" --add-entry="Type de prestation:" --add-entry="Prix prestation:" --add-entry="Prix déplacement:" --add-entry="Total HT:"');
33
34// date
35#$date = exec('zenity --calendar --width=320 --title="Enregistrer une prestation 2/4" --text="Choisir une date."');
36// date sous la forme jj/mm/aaaa
37// utiliser ensuite cette option: --forms-date-format=MODÈLE Définit le format de la date retournée
38
39// détail prestation
40#$prestation = exec('zenity --forms --title="Enregistrer une prestation 3/4" --text="Tâches effectuées" --add-entry="Détails:" --add-entry="Modèle de l\'ordinateur:" --add-entry="OS:" --add-entry="Sauvegarde:" --add-entry="Clé d\'activation"');
41// infos saisies sous la forme aaa|bbb|ccc|ddd|eee
42
43// Prix total calculé automatiquement
44
45// référence de la facture avec format automatique par concaténation
46
47// commentaire personnel enregistré à part 4// commentaire personnel enregistré à part
48$commentaire = exec('zenity --entry --width=400 --title="Enregistrer une prestation 4/4" --text="Commentaire sur le déroulement de la prestation."'); 5$commentaire = exec('zenity --entry --width=400 --title="Enregistrer une prestation 4/4" --text="Commentaire sur le déroulement de la prestation."');
49var_dump($result); 6var_dump($result);
diff --git a/php/zenity_text.php b/php/zenity_setup.php
index 2246463..a16e0a4 100644
--- a/php/zenity_text.php
+++ b/php/zenity_setup.php
@@ -1,5 +1,6 @@
1<?php 1<?php
2// php/zenity_text.php 2// php/zenity_setup.php
3
3 4
4// contenu des fenêtres zenity 5// contenu des fenêtres zenity
5$menu_principal_text = "Gestion d'une micro-entreprise"; 6$menu_principal_text = "Gestion d'une micro-entreprise";
@@ -19,3 +20,18 @@ $calendar_text = 'Nouvelle prestation étape 1/3 - Choisir une date';
19$formulaire_text = 'Nouvelle prestation 2/3 - Détail des travaux'; 20$formulaire_text = 'Nouvelle prestation 2/3 - Détail des travaux';
20$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):",]; 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):",];
21$commentaire_prestation_text = 'Nouvelle prestation 3/3 - Commentaires'; 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 Zenity_list($menu_principal_text, $menu_principal_entrees);
28$QuestionNouveauClient = new Zenity_question($question_nouveau_client_text);
29$MenuEnregistrement = new Zenity_list($menu_enregistrement_text, $menu_enregistrement_entrees);
30$MenuDocuments = new Zenity_list($menu_documents_text, $menu_documents_entrees);
31$MenuCommunication = new Zenity_list($menu_communication_text, $menu_communication_entrees);
32$RechercheClient = new zenity_entry($recherche_client_text);
33$ResultatsRechercheClient = new zenity_list($resultats_recherche_client_text, []);
34$NouveauClient = new Zenity_forms($nouveau_client_text, $nouveau_client_entrees);
35$Calendrier = new Zenity_calendar($calendar_text);
36$FormulairePrestation = new Zenity_forms($formulaire_text, $formulaire_entrees);
37$CommentairePrestation = new Zenity_entry($commentaire_prestation_text);