From a45a3e0345890b9df3c5fa7c82966a64491eca02 Mon Sep 17 00:00:00 2001 From: polo Date: Wed, 14 Dec 2022 12:52:11 +0100 Subject: MODEL + reorganisation --- config.php | 31 ++--- data/ordipolo.sqlite | Bin 28672 -> 0 bytes index.php | 3 +- latex/devis.tex | 79 ------------ latex/enveloppe_recto.tex | 21 ---- latex/enveloppe_verso.tex | 13 -- latex/facture.tex | 80 ------------- latex/location.tex | 44 ------- latex/ordipolo.png | Bin 46751 -> 0 bytes php/Connection.php | 45 ------- php/Dates.php | 105 ---------------- php/Latex.php | 84 ------------- php/Model.php | 42 ------- php/Zenity.php | 110 ----------------- php/dependances.php | 100 ---------------- php/functions.php | 26 ---- php/latexToPdf.php | 38 ------ php/latex_templates/devis.php | 84 ------------- php/latex_templates/enveloppe_recto.php | 26 ---- php/latex_templates/enveloppe_verso.php | 18 --- php/latex_templates/facture.php | 85 ------------- php/latex_templates/location.php | 49 -------- php/main.php | 205 -------------------------------- php/zenity_setup.php | 37 ------ 24 files changed, 19 insertions(+), 1306 deletions(-) delete mode 100644 data/ordipolo.sqlite delete mode 100644 latex/devis.tex delete mode 100644 latex/enveloppe_recto.tex delete mode 100644 latex/enveloppe_verso.tex delete mode 100644 latex/facture.tex delete mode 100644 latex/location.tex delete mode 100644 latex/ordipolo.png delete mode 100644 php/Connection.php delete mode 100644 php/Dates.php delete mode 100644 php/Latex.php delete mode 100644 php/Model.php delete mode 100644 php/Zenity.php delete mode 100644 php/dependances.php delete mode 100644 php/functions.php delete mode 100644 php/latexToPdf.php delete mode 100644 php/latex_templates/devis.php delete mode 100644 php/latex_templates/enveloppe_recto.php delete mode 100644 php/latex_templates/enveloppe_verso.php delete mode 100644 php/latex_templates/facture.php delete mode 100644 php/latex_templates/location.php delete mode 100755 php/main.php delete mode 100644 php/zenity_setup.php 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/'; // le dossier latex par défaut est celui "inclu" dans ce programme -// $receipts = '../latex/'; -$receipts = '../latex/'; -$receiptsStorageLaTeX = '~ORDIPOLO/factures/latex/'; -$receiptsStoragePDF = '~ORDIPOLO/factures/PDF/'; +// $receiptsLaTeX = '../data/latex/'; +$receiptsLaTeX = '../data/latex/'; +// $receiptsPDF = '../data/pdf/'; +$receiptsPDF = '../data/pdf/'; -// $quotations = '../latex/'; -$quotations = '../latex/'; -$quotationsStorageLaTeX = '~ORDIPOLO/devis/latex/'; -$quotationsStoragePDF = '~ORDIPOLO/devis/PDF/'; +// $quotationsLaTeX = '../data/latex/'; +$quotationsLaTeX = '../data/latex/'; +// $quotationsPDF = '../data/pdf/'; +$quotationsPDF = '../data/pdf/'; -// $envelopes = '../latex/'; -$envelopes = '../latex/'; -$envelopesStorageLaTeX = '~ORDIPOLO/enveloppes/latex/'; -$envelopesStoragePDF = '~ORDIPOLO/enveloppes/PDF/'; +// $envelopesLaTeX = '../data/latex/'; +$envelopesLaTeX = '../data/latex/'; +// $envelopesPDF = '../data/pdf/'; +$envelopesPDF = '../data/pdf/'; // $pub = "~/ORDIPOLO/PUB/"; // dossier extérieur au choix @@ -47,12 +47,15 @@ $image_editor = 'gimp'; // $publishing = 'scribus'; $publishing = 'scribus'; -// format des dates: EU = européenne 28-11-2022, US = américaine 11/28/2022 +// $sqliteGUI = 'sqlitebrowser'; +$sqlite_gui = 'sqlitebrowser'; + +// format des dates: EU exemple européenne 28-11-2022, US exemple américaine 11/28/2022 // $date_format = 'EU'; $date_format = 'EU'; -//$x_terminal = 'xterm'; +// $x_terminal = 'xterm'; // -- état actuel du programme -- // les terminaux gérés sont: xterm, urxvt, lxterminal, xfce4-terminal, gnome-terminal, konsole, Terminal (MAC, désactivé tant que non testé) // 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 Binary files a/data/ordipolo.sqlite and /dev/null differ diff --git a/index.php b/index.php index dbcf0e2..094758a 100755 --- a/index.php +++ b/index.php @@ -3,7 +3,8 @@ // index.php // le programme peut être lancé sans distinction par le lanceur, par un ./index.php ou par un ./main.php -chdir('php'); // idée de merde? +// l'exécution a donc lieu dans le dossier "src", normallement on fait pas exactemet ça comme ça +chdir('src'); require('main.php'); 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 @@ -\documentclass{report} - -\usepackage[french]{babel} -\usepackage{lmodern} % police latin modern -\usepackage[utf8]{inputenc} % encodage d'entrée (document) -\usepackage[T1]{fontenc} % encodage de sortie (rendu) -\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges -\usepackage{graphicx} % insertions d'images -\usepackage{textcomp} % pour N° -\usepackage{xcolor} % texte en couleur -\usepackage{tabularx} % dimensions des tableaux automatique -\usepackage{tikz} % le rectangle - -\begin{document} - \setlength{\parindent}{0cm} % supprimer les alinéas - \large{} - \pagestyle{empty} % en-tête et pied de page vides - \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert - - \begin{center} - \includegraphics{ordipolo.png}\\ - \Large\textbf{Dépannage informatique - Assistance à domicile} - \end{center} - - 2 A rue de l'île de Man, 29000 Quimper - - SIRET : 814 320 610 00011 - - \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} - Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr - \end{tabularx} - - Plus d'infos sur le site web: https\string://ordipolo.fr\\ - % \string supprime l'espace devant les : - - \begin{center} - \large\textbf{DEVIS} - \end{center} - - CLIENT\\ - - \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} - Mme, M : \textcolor{vert}{} & - Date du devis : \textcolor{vert}{}\\ - Adresse : \textcolor{vert}{} & - Delai de livraison : \textcolor{vert}{}\\ - \end{tabularx}\\\\ - - PRESTATION\\ - - \textcolor{vert}{} - - Total main d'oeuvre : \textcolor{vert}{}\\ - - PIÈCES\\ - - \textcolor{vert}{} - - Total pièces : \textcolor{vert}{}\\ - - TOTAL\\ - - Déplacement : \textcolor{vert}{} - - Total HT : \textcolor{vert}{} - - \textit{(TVA non applicable, article 293B du code général des impôts)} - - Référence du devis : \textcolor{vert}{}\\ - - Devis reçu avant l'exécution des travaux, signature du client :\\ - \begin{tikzpicture} - \draw (0,0) rectangle (4,2); - \end{tikzpicture}\\ - - \small{}NOTA BENE\\ - - 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. -\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 @@ -\documentclass[]{report} - -\usepackage[french]{babel} -\usepackage{lmodern} % police latin modern -\usepackage[utf8]{inputenc} % encodage d'entrée (document) -\usepackage[T1]{fontenc} % encodage de sortie (rendu) -\usepackage{graphicx} % insertions d'images -\usepackage[papersize={22cm, 11cm}, top=1cm, left=1cm, bottom=1cm]{geometry} -\pagestyle{empty} - -\begin{document} - \setlength{\parindent}{0cm} - \includegraphics{ordipolo.png}\\ - \large\textbf{Dépannage informatique - Assistance à domicile} - - \setlength{\parindent}{7,9cm} - \begin{minipage}[b][5,8cm]{12cm} - \LARGE{M. Truc\\3, rue Machin\\\\\\} - \LARGE{2 \ 9 \ 0 \ 0 \ 0 \ \ \ \ QUIMPER} - \end{minipage} -\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 @@ -\documentclass[]{report} - -\usepackage[french]{babel} -\usepackage{lmodern} % police latin modern -\usepackage[utf8]{inputenc} % encodage d'entrée (document) -\usepackage[T1]{fontenc} % encodage de sortie (rendu) -\usepackage[papersize={22cm, 11cm}, top=0.6cm, left=4.5cm]{geometry} -\pagestyle{empty} - -\begin{document} - \setlength{\parindent}{0cm} - \Large{Paul Jusot\\2A, rue de l'île de Man\\29000 QUIMPER} -\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 @@ -\documentclass{report} - -\usepackage[french]{babel} -\usepackage{lmodern} % police latin modern -\usepackage[utf8]{inputenc} % encodage d'entrée (document) -\usepackage[T1]{fontenc} % encodage de sortie (rendu) -\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges -\usepackage{graphicx} % insertions d'images -\usepackage{textcomp} % pour N° -\usepackage{xcolor} % texte en couleur -\usepackage{tabularx} % dimensions des tableaux automatique - -\begin{document} - \setlength{\parindent}{0cm} % supprimer les alinéas - \large{} - \pagestyle{empty} % en-tête et pied de page vides - \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert - - \begin{center} - \includegraphics{ordipolo.png}\\ - \Large\textbf{Dépannage informatique - Assistance à domicile} - \end{center} - - 2 A rue de l'île de Man, 29000 Quimper - - SIRET : 814 320 610 00011 - - \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} - Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr - \end{tabularx} - - Plus d'infos sur le site web: https\string://ordipolo.fr\\ - % \string supprime l'espace devant les : - - \begin{center} - \large\textbf{FACTURE} - \end{center} - - CLIENT\\ - - \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} - Mme, M : \textcolor{vert}{} & - Date : \textcolor{vert}{}\\ - \end{tabularx}\\ - Adresse : \textcolor{vert}{}\\ - - PRESTATION\\ - - \textcolor{vert}{} - - Modèle de l'ordinateur : \textcolor{vert}{} - - Système d'exploitation : \textcolor{vert}{} - - Données à conserver : \textcolor{vert}{} - - Clé d'activation : \textcolor{vert}{}\\ - - Total main d'oeuvre : \textcolor{vert}{}\\ - - PIÈCES\\ - - \textcolor{vert}{} - - Total pièces : \textcolor{vert}{}\\ - - TOTAL\\ - - Déplacement : \textcolor{vert}{} - - Total HT : \textcolor{vert}{} - - \textit{(TVA non applicable, article 293B du code général des impôts)} - - Référence de la facture : \textcolor{vert}{}\\ - - \small{}NOTA BENE\\ - - 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. -\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 @@ -\documentclass{report} - -\usepackage[french]{babel} -\usepackage{lmodern} % police latin modern -\usepackage[utf8]{inputenc} % encodage d'entrée (document) -\usepackage[T1]{fontenc} % encodage de sortie (rendu) -\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges -\usepackage{graphicx} % insertions d'images -\usepackage{textcomp} % pour N° -\usepackage{xcolor} % texte en couleur -%\usepackage{wrapfig} % placer texte et image côte-à-côte -\usepackage{tabularx} % dimensions des tableaux automatique - -\begin{document} - \setlength{\parindent}{0cm} % supprimer les alinéas - \large{} - \pagestyle{empty} % en-tête et pied de page vides - \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert - - \begin{center} - \includegraphics{ordipolo.png}\\ - \Large\textbf{Dépannage informatique - Assistance à domicile} - \end{center} - - 2 A rue de l'île de Man, 29000 Quimper - - SIRET : 814 320 610 00011 - - \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} - Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr - \end{tabularx} - - Plus d'infos sur le site web: https\string://ordipolo.fr\\ - % \string supprime l'espace devant les : - - CLIENT\\ - - \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} - Mme, M : \textcolor{vert}{} & - Date : \textcolor{vert}{}\\ - \end{tabularx}\\ - Adresse : \textcolor{vert}{}\\ - -\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 Binary files a/latex/ordipolo.png and /dev/null 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 @@ -setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // $this pour la méthode du parent PDO - } - catch(PDOException $e) - { - die('Erreur : '.$e->getMessage()); - } - } - - // créer son objet avec: $bdd = Connection::getInstance(); - public static function getInstance(): self - { - if(self::$Instance === null) - { - self::$Instance = new self(); - } - return self::$Instance; - } -} 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 @@ - dates avant 1970 - static public $date_format = 'EU'; // dates européennes jj-mm-aaaa (EU) ou américaines mm/dd/yyyy (US) - - - public function __construct($entry) - { - if(gettype($entry) === 'string') // une date est attendue - { - $this->setDate($entry); - } - elseif(gettype($entry) === 'integer') - { - $this->setTimestamp($entry); - } - } - - - public function setDate(string $entry) - { - $entry = $this->dashOrSlash($entry); // pour strtotime() - - $splitedDate = preg_split('#\D#', $entry); // \D = tout sauf chiffre - - if(self::$date_format === 'EU') - { - $tmp = $splitedDate[0]; - $splitedDate[0] = $splitedDate[1]; - $splitedDate[1] = $tmp; - } - - if(checkdate($splitedDate[0], $splitedDate[1], $splitedDate[2])) - { - $this->date = $entry; - $this->timestamp = strtotime($entry); // date (string) -> timestamp (int) - // strtotime() devine le format en analysant la chaîne en entrée, on l'aide un peu - // avec des /, php considère que la date est américaine - // avec des - ou des ., php considère que la date est européenne - } - else - { - 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."); - die(); - } - } - - public function setTimestamp(int $entry) - { - $this->timestamp = $entry; - $this->date = $this->timestamp_to_date($entry); // timestamp (int) -> date (string) - } - - - public function getDate(): string - { - return($this->date); - } - - public function getTimestamp(): int - { - return($this->timestamp); - } - - - private function dashOrSlash(string $date): string - { - if(self::$date_format === 'EU') - { - // change jj/mm/aaaa en jj-mm-aaaa - return(preg_replace('#\D#', '-', $date)); // \D = tout sauf chiffre - } - elseif(self::$date_format === 'US') - { - // change mm-dd.yyyy en mm/dd/yyyy - return(preg_replace('#\D#', '/', $date)); - } - else - { - echo('Le fichier config.php comporte une erreur. La variable $date_format doit avoir pour valeur "EU" ou "US"'); - die(); // brutal - } - } - - private function timestamp_to_date(int $timestamp): string - { - if(self::$date_format === 'EU') - { - return(date("j-m-Y", $timestamp)); - } - elseif(self::$date_format === 'US') - { - return(date("m/d/Y", $timestamp)); - } - else - { - echo('Le fichier config.php comporte une erreur. La variable $date_format doit avoir pour valeur "EU" ou "US"'); - die(); // brutal - } - } -} 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 @@ -fileName = $quoi . '-' . $codePresta . '.tex'; - } -} - -class DevisLatex extends PrestaLatex -{} - -class FactureLatex extends PrestaLatex -{} - -class LocationLatex extends PrestaLatex -{} - -class EnveloppeRectoLatex extends PrestaLatex -{} -class EnveloppeVersoLatex extends PrestaLatex -{} - - -abstract class ComptaLatex extends Latex -{ - public function __construct(string $quoi, string $annee, int $numeroMois = 0) - { - nameTheFile($quoi, $annee, $numeroMois); - } - - // forme = Recettes-2022-06-Juin.tex ou Recettes-2022.tex - // type de 'annee'? - protected function nameTheFile(string $quoi, string $annee, int $numeroMois = 0) - { - $this->fileName = $quoi . '-' . $annee; - $mois = ['', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre']; - if($numeroMois > 0 && $numeroMois <= 12) - { - $this->fileName .= '-' . $numeroMois . '-' . $mois[$numeroMois]; - } - $this->fileName .= '.tex'; - } -} - -class LivreRecettesLatex extends ComptaLatex -{} - -class RegistreAchatsLatex extends ComptaLatex -{} - -class BilanLatex extends ComptaLatex -{} 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 @@ -db = parent::getInstance(); // connexion - } - - // code SQL - public function create_tables() - { - // la table prestations est liée à la table clients - // les tables devis_factures, cesu et locations sont liées à la table prestations - $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));"); - $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));"); - $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));"); - $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));"); - $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));"); - - // les types de variables de sqlite sont peu nombreux et autorisent un typage automatique - // le "type indiqué" est indiqué dans l'instruction CREATE TABLE - // https://www.leppf.com/site/spip.php?article89 - - // || type indiqué || type choisi automatiquement || autre types possibles || - // --------------------------------------------------------------------------- - // || TEXT || TEXT || BLOB, NULL || - // || INTEGER || INTEGER (de 1 à 8 octets) || REAL, TEXT, BLOB, NULL || - // || REAL || REAL (flottant sur 9 octets) || TEXT, BLOB, NULL || - // || NUMERIC || INTEGER ou REAL || TEXT, BLOB, NULL || - // || NONE || indéfini || dépend des données || - - // du code SQL écrit pour d'autres SGBD devrait fonctionner, - // sqlite fera des conversions dans ses propres types avec les problèmes qu'on peut imaginer - - // pour les dates, on stockera à priori le timestamp - } -} 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 @@ -text = $text; - $this->rows= $rows; - $this->command .= $this->command_type; - $this->command .= ' --title="' . $this->title . '"'; - $this->command .= ' --text="' . $this->text . '"'; - } - - public function get() - { - return($this->command); - } -} - - -class ZenityList extends ZenityCmd -{ - public function __construct($text, array $rows) - { - $this->command_type = ' --list'; - parent::__construct($text, $rows); - $this->height = 80 + count($this->rows) * 25; - $this->command .= ' --width=' . $this->width; - $this->command .= ' --height=' . $this->height; - $this->command .= ' --hide-header'; // ligne inutile, il y a déjà le --text - self::one_column_zenity_list($this->rows); - } - - public function set_entries($rows_set) // variable renseignée après la construction - { - $this->rows = $rows_set; - } - - private function one_column_zenity_list($rows) - { - $output = ' --column=""'; - foreach($rows as $entry) - { - $output .= ' "' . $entry . '"'; // forme: ' "choix 1" "choix 2"' - } - $this->command .= $output; - } -} - -class ZenityQuestion extends ZenityCmd -{ - public function __construct($text) - { - $this->command_type = ' --question'; - parent::__construct($text); - $this->command .= ' && echo $?'; - // la sortie de "zenity --question" est le statut de sortie "$?" - // $? vaut 0 pour oui, 1 pour non, à ceci près que pour non zenity ne renvoie rien - } -} - -class ZenityForms extends ZenityCmd -{ - public function __construct($text, array $rows) - { - $this->command_type = ' --forms'; - parent::__construct($text, $rows); - //$this->height = 80 + count($this->rows) * 25; // à tester, mais devrait produire le rendu attendu - self::entries_zenity_forms($this->rows); - } - - private function entries_zenity_forms($entries) - { - $output = ''; - foreach($entries as $one_entry) - { - $output .= ' --add-entry="' . $one_entry . '"'; // forme: ' "choix 1" "choix 2"' - } - $this->command .= $output; - } -} - -class ZenityCalendar extends ZenityCmd -{ - public function __construct($text) - { - $this->command_type = ' --calendar'; - parent::__construct($text); - } -} - -class ZenityEntry extends ZenityCmd -{ - public function __construct($text) - { - $this->command_type = ' --entry'; - parent::__construct($text); - } -} 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 @@ - /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 -{ - printf("Impossible de lancer zenity. Veuillez installer le paquet zenity\n"); - exit(); -} - -// compilateur pdflatex disponible -if(exec("pdflatex -version 2> /dev/null") === '') // erreur si la chaine est vide parce que la sortie d'erreur va dans /dev/null -{ - printf("Impossible de lancer pdflatex. Veuillez installer une distribution LaTeX.\n"); - exit(); -} - -// test de la présence du paquet php-sqlite -// compliqué? dépend de l'OS? -// note: l'erreur se produit dès le démarrage de PHP si le php.ini est bon mais qu'il manque le paquet - -// module pdo_sqlite de PHP activé? -if(!extension_loaded("pdo_sqlite")) -{ - 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"); - exit(); -} - - -// client sqlite -if($exec_mode === 'gui') -{ - // sqlitebrowser disponible - 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 - { - $sqlitebrowser_enable = true; - } - // terminal en mode graphique disponible, permettra d'y utiliser sqlite dans la console - else - { - printf("Sqlitebrowser n'est pas disponible. J'espère que vous maîtrisez le SQL.\n"); - - if(exec("which xterm 2> /dev/null") !== '' && exec("xterm -v 2> /dev/null") !== '') - { - $x_term_ccommand = 'xterm -e'; - } - elseif(exec("which urxvt 2> /dev/null") !== '') - { - $x_term_ccommand = 'urxvt -e'; - } - elseif(exec("which lxterminal 2> /dev/null") !== '' && exec("lxterminal -v 2> /dev/null") !== '') - { - $x_term_ccommand = 'lxterminal -e'; - } - elseif(exec("which xfce4-terminal 2> /dev/null") !== '' && exec("xfce4-terminal -V 2> /dev/null") !== '') - { - $x_term_ccommand = 'xfce4-terminal -x'; - } - elseif(exec("which gnome-terminal 2> /dev/null") !== '') - { - $x_term_ccommand = 'gnome-terminal --'; - } - elseif(exec("which konsole 2> /dev/null") !== '' && exec("konsole -v 2> /dev/null") !== '') - { - $x_term_ccommand = 'konsole -e'; - } - // pour MAC - NON TESTÉ !! (possibilité de détecter le système avec uname?) - //~ elseif(exec("which Terminal 2> /dev/null") !== '') - //~ { - //~ $x_term_ccommand = 'open -a Terminal -e'; // ne marche probablement pas - //~ } - else - { - printf("Impossible d'ouvrir un terminal pour y lancer sqlite. Veuillez installer un terminal en mode graphique (par exemple xterm).\n"); - } - } -} - -// sqlite CLI disponible -if(exec("which sqlite 2> /dev/null") !== '' && exec("sqlite --version 2> /dev/null") !== '') -{ - $sqlite_cli = 'sqlite'; -} -elseif(exec("which sqlite3 2> /dev/null") !== '' && exec("sqlite3 --version 2> /dev/null") !== '') -{ - $sqlite_cli = 'sqlite3'; -} -else -{ - printf("Impossible de lancer sqlite dans le terminal en utilisant la commande ' . $sqlite_cli . '\n"); -} 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 @@ - /dev/null 2>&1 &'; - // stdout > /dev/null et & permettent de rendre la main à PHP - // stderr > stdout pour cacher un message inutile - return $command; -} - -function recherche_client(string $saisie): array -{ - $resultats = []; - - // recherche dans la BDD - - - return($resultats); -} 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 @@ - -\documentclass{report} - -\usepackage[french]{babel} -\usepackage{lmodern} % police latin modern -\usepackage[utf8]{inputenc} % encodage d'entrée (document) -\usepackage[T1]{fontenc} % encodage de sortie (rendu) -\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges -\usepackage{graphicx} % insertions d'images -\usepackage{textcomp} % pour N° -\usepackage{xcolor} % texte en couleur -\usepackage{tabularx} % dimensions des tableaux automatique -\usepackage{tikz} % le rectangle - -\begin{document} - \setlength{\parindent}{0cm} % supprimer les alinéas - \large{} - \pagestyle{empty} % en-tête et pied de page vides - \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert - - \begin{center} - \includegraphics{ordipolo.png}\\ - \Large\textbf{Dépannage informatique - Assistance à domicile} - \end{center} - - 2 A rue de l'île de Man, 29000 Quimper - - SIRET : 814 320 610 00011 - - \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} - Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr - \end{tabularx} - - Plus d'infos sur le site web: https\string://ordipolo.fr\\ - % \string supprime l'espace devant les : - - \begin{center} - \large\textbf{DEVIS} - \end{center} - - CLIENT\\ - - \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} - Mme, M : \textcolor{vert}{} & - Date du devis : \textcolor{vert}{}\\ - Adresse : \textcolor{vert}{} & - Delai de livraison : \textcolor{vert}{}\\ - \end{tabularx}\\\\ - - PRESTATION\\ - - \textcolor{vert}{} - - Total main d'oeuvre : \textcolor{vert}{}\\ - - PIÈCES\\ - - \textcolor{vert}{} - - Total pièces : \textcolor{vert}{}\\ - - TOTAL\\ - - Déplacement : \textcolor{vert}{} - - Total HT : \textcolor{vert}{} - - \textit{(TVA non applicable, article 293B du code général des impôts)} - - Référence du devis : \textcolor{vert}{}\\ - - Devis reçu avant l'exécution des travaux, signature du client :\\ - \begin{tikzpicture} - \draw (0,0) rectangle (4,2); - \end{tikzpicture}\\ - - \small{}NOTA BENE\\ - - 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. -\end{document} - -\documentclass[]{report} - -\usepackage[french]{babel} -\usepackage{lmodern} % police latin modern -\usepackage[utf8]{inputenc} % encodage d'entrée (document) -\usepackage[T1]{fontenc} % encodage de sortie (rendu) -\usepackage{graphicx} % insertions d'images -\usepackage[papersize={22cm, 11cm}, top=1cm, left=1cm, bottom=1cm]{geometry} -\pagestyle{empty} - -\begin{document} - \setlength{\parindent}{0cm} - \includegraphics{ordipolo.png}\\ - \large\textbf{Dépannage informatique - Assistance à domicile} - - \setlength{\parindent}{7,9cm} - \begin{minipage}[b][5,8cm]{12cm} - \LARGE{M. Truc\\3, rue Machin\\\\\\} - \LARGE{2 \ 9 \ 0 \ 0 \ 0 \ \ \ \ QUIMPER} - \end{minipage} -\end{document} - -\documentclass[]{report} - -\usepackage[french]{babel} -\usepackage{lmodern} % police latin modern -\usepackage[utf8]{inputenc} % encodage d'entrée (document) -\usepackage[T1]{fontenc} % encodage de sortie (rendu) -\usepackage[papersize={22cm, 11cm}, top=0.6cm, left=4.5cm]{geometry} -\pagestyle{empty} - -\begin{document} - \setlength{\parindent}{0cm} - \Large{Paul Jusot\\2A, rue de l'île de Man\\29000 QUIMPER} -\end{document} - -\documentclass{report} - -\usepackage[french]{babel} -\usepackage{lmodern} % police latin modern -\usepackage[utf8]{inputenc} % encodage d'entrée (document) -\usepackage[T1]{fontenc} % encodage de sortie (rendu) -\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges -\usepackage{graphicx} % insertions d'images -\usepackage{textcomp} % pour N° -\usepackage{xcolor} % texte en couleur -\usepackage{tabularx} % dimensions des tableaux automatique - -\begin{document} - \setlength{\parindent}{0cm} % supprimer les alinéas - \large{} - \pagestyle{empty} % en-tête et pied de page vides - \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert - - \begin{center} - \includegraphics{ordipolo.png}\\ - \Large\textbf{Dépannage informatique - Assistance à domicile} - \end{center} - - 2 A rue de l'île de Man, 29000 Quimper - - SIRET : 814 320 610 00011 - - \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} - Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr - \end{tabularx} - - Plus d'infos sur le site web: https\string://ordipolo.fr\\ - % \string supprime l'espace devant les : - - \begin{center} - \large\textbf{FACTURE} - \end{center} - - CLIENT\\ - - \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} - Mme, M : \textcolor{vert}{} & - Date : \textcolor{vert}{}\\ - \end{tabularx}\\ - Adresse : \textcolor{vert}{}\\ - - PRESTATION\\ - - \textcolor{vert}{} - - Modèle de l'ordinateur : \textcolor{vert}{} - - Système d'exploitation : \textcolor{vert}{} - - Données à conserver : \textcolor{vert}{} - - Clé d'activation : \textcolor{vert}{}\\ - - Total main d'oeuvre : \textcolor{vert}{}\\ - - PIÈCES\\ - - \textcolor{vert}{} - - Total pièces : \textcolor{vert}{}\\ - - TOTAL\\ - - Déplacement : \textcolor{vert}{} - - Total HT : \textcolor{vert}{} - - \textit{(TVA non applicable, article 293B du code général des impôts)} - - Référence de la facture : \textcolor{vert}{}\\ - - \small{}NOTA BENE\\ - - 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. -\end{document} - -\documentclass{report} - -\usepackage[french]{babel} -\usepackage{lmodern} % police latin modern -\usepackage[utf8]{inputenc} % encodage d'entrée (document) -\usepackage[T1]{fontenc} % encodage de sortie (rendu) -\usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry} % marges -\usepackage{graphicx} % insertions d'images -\usepackage{textcomp} % pour N° -\usepackage{xcolor} % texte en couleur -%\usepackage{wrapfig} % placer texte et image côte-à-côte -\usepackage{tabularx} % dimensions des tableaux automatique - -\begin{document} - \setlength{\parindent}{0cm} % supprimer les alinéas - \large{} - \pagestyle{empty} % en-tête et pied de page vides - \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert - - \begin{center} - \includegraphics{ordipolo.png}\\ - \Large\textbf{Dépannage informatique - Assistance à domicile} - \end{center} - - 2 A rue de l'île de Man, 29000 Quimper - - SIRET : 814 320 610 00011 - - \begin{tabularx}{0.67\linewidth}{@{}X@{}@{}X@{}} - Tel : 06.63.85.48.82 & Courriel : ordipolo@gmx.fr - \end{tabularx} - - Plus d'infos sur le site web: https\string://ordipolo.fr\\ - % \string supprime l'espace devant les : - - CLIENT\\ - - \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} - Mme, M : \textcolor{vert}{} & - Date : \textcolor{vert}{}\\ - \end{tabularx}\\ - Adresse : \textcolor{vert}{}\\ - -\end{document} -create_tables(); - -require('Zenity.php'); // commande système zenity -require('zenity_setup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande) - -require('Latex.php'); // générer le code LaTeX -require('latexToPdf.php'); // compilation - - -// boucle principale -$boucle = true; -while($boucle) -{ - // menu principal - $choix_niv1 = exec($MenuPrincipal->get()); - - // enregistrement - if($choix_niv1 === 'Nouvelle prestation') - { - // est ce que le client est déjà dans la base? - if(exec($QuestionNouveauClient->get()) === 0) // $? = 0 signifie oui - { - // saisie du nom du client et recherche - $client_saisie = exec($RechercheClient->get()); - - // sélection parmi les résultats - $ResultatsRechercheClient->set_entries(recherche_client($client_saisie)); - $choix_niv2 = exec($ResultatsRechercheClient->get()); - if($choix_niv2 !== '') - { - echo "client trouvé\n"; - } - else // chaîne vide - { - echo "client pas trouvé\n"; - exec($NouveauClient->get()); - - // enregistrement dans la BDD - - } - - // récupération des infos dans la BDD - - } - else - { - echo "nouveau client\n"; - exec($NouveauClient->get()); - - // enregistrement dans la BDD - - } - - // type comptable de prestation - $choix_niv2 = exec($MenuEnregistrement->get()); - $continuer = true; - if($choix_niv2 === "Devis") - { - $type = 'DEVIS'; - } - elseif($choix_niv2 === "Facture") - { - $type = 'FACTURE'; - } - elseif($choix_niv2 === "CESU") - { - $type = 'CESU'; - } - elseif($choix_niv2 === "Pas de prestation") - { - $type = ''; - } - else - { - $continuer = false; // retour menu principal - } - - // détail de la prestation - if($continuer) - { - exec($Calendrier->get()); - exec($FormulairePrestation->get()); - // enregistrement date et prestation en BDD - exec($CommentairePrestation->get()); - // enregistrement commentaire en BDD - // vérification? - - // tableau récaptilatif et demande de confirmation des informations - // création fichiers LaTeX et PDF - - // imprimer? - //~ $imprimer_facture = exec('zenity --question --width=250 --title="Base de données mise à jour" --text="Imprimer la facture?"'); - //~ $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"'); - } - } - - elseif($choix_niv1 === 'Fichier clients') - { - // quel affichage? un grand tableau avec zenity? une page web? un document LaTeX? - } - - // documents à imprimer - elseif($choix_niv1 === 'Créer/imprimer un document') - { - $choix_niv2 = exec($MenuDocuments->get()); - if($choix_niv2 === 'Devis') - { - - } - elseif($choix_niv2 === 'Facture') - { - - } - elseif($choix_niv2 === 'Lettre avec adresse') - { - - } - elseif($choix_niv2 === 'Livre des recettes') - { - - } - elseif($choix_niv2 === "Registre des achats") - { - - } - elseif($choix_niv2 === "Bilan annuel") - { - - } - else - { - // retour menu principal - } - } - - // Supports de communication - elseif($choix_niv1 === 'Communication') - { - $choix_niv2 = exec($MenuCommunication->get()); - if($choix_niv2 === 'Flyer (nécessite gimp)') - { - exec(window_app_command('gimp', $flyer)); - } - elseif($choix_niv2 === 'Carte de visite (nécessite scribus)') - { - exec(window_app_command('scribus', $business_card)); - } - elseif($choix_niv2 === 'Explorateur de fichiers') - { - exec(window_app_command($file_explorer, $pub)); - } - else - { - // retour menu principal - } - } - - // BDD - elseif($choix_niv1 === 'Base de données') - { - if($sqlitebrowser_enable) - { - exec(window_app_command('sqlitebrowser', $db_place)); - } - else - { - exec($x_term_command . ' ' . $sqlite_cli . ' ' . $db_place); // correpond à priori à: xterm -e sqlite3 ~/ORDIPOLO/Appli_PHP/ordipolo.sqlite - } - } - else - { - $boucle = false; // byebye - } -} - -// 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 @@ -get()); -$MenuPrincipal = new ZenityList($menu_principal_text, $menu_principal_entrees); -$QuestionNouveauClient = new ZenityQuestion($question_nouveau_client_text); -$MenuEnregistrement = new ZenityList($menu_enregistrement_text, $menu_enregistrement_entrees); -$MenuDocuments = new ZenityList($menu_documents_text, $menu_documents_entrees); -$MenuCommunication = new ZenityList($menu_communication_text, $menu_communication_entrees); -$RechercheClient = new zenityEntry($recherche_client_text); -$ResultatsRechercheClient = new zenityList($resultats_recherche_client_text, []); -$NouveauClient = new ZenityForms($nouveau_client_text, $nouveau_client_entrees); -$Calendrier = new ZenityCalendar($calendar_text); -$FormulairePrestation = new ZenityForms($formulaire_text, $formulaire_entrees); -$CommentairePrestation = new ZenityEntry($commentaire_prestation_text); -- cgit v1.2.3