From dedbe2f5cee33431c1299c7f0dbef4e247dc2447 Mon Sep 17 00:00:00 2001 From: polo Date: Mon, 19 Dec 2022 02:51:03 +0100 Subject: nouveau client main.php en cours --- config.php | 33 +++-- data/latex/devis.tex | 79 ------------ data/latex/enveloppe_recto.tex | 21 --- data/latex/enveloppe_verso.tex | 13 -- data/latex/facture.tex | 80 ------------ data/latex/location.tex | 44 ------- data/latex/ordipolo.png | Bin 46751 -> 0 bytes data/ordipolo.png | Bin 0 -> 46751 bytes data/originaux_latex/devis.tex | 86 +++++++++++++ data/originaux_latex/enveloppe_recto.tex | 21 +++ data/originaux_latex/enveloppe_verso.tex | 13 ++ data/originaux_latex/facture.tex | 80 ++++++++++++ data/originaux_latex/location.tex | 44 +++++++ src/functions.php | 52 +++++++- src/latex_templates/devis.php | 19 ++- src/latex_templates/enveloppe_recto.php | 6 +- src/latex_templates/enveloppe_verso.php | 4 +- src/latex_templates/facture.php | 13 +- src/latex_templates/location.php | 51 +++++++- src/main.php | 215 +++++++++++++++++-------------- src/model/CESU.php | 5 +- src/model/Clients.php | 13 +- src/model/DevisFactures.php | 5 +- src/model/Locations.php | 5 +- src/model/Model.php | 14 +- src/model/Prestations.php | 5 +- src/model/StructTablesDB.php | 4 +- src/model/traits.php | 16 +++ src/view/Zenity.php | 20 ++- src/view/zenity_setup.php | 4 +- "structure base de donn\303\251es.ods" | Bin 22823 -> 25146 bytes 31 files changed, 554 insertions(+), 411 deletions(-) delete mode 100644 data/latex/devis.tex delete mode 100644 data/latex/enveloppe_recto.tex delete mode 100644 data/latex/enveloppe_verso.tex delete mode 100644 data/latex/facture.tex delete mode 100644 data/latex/location.tex delete mode 100644 data/latex/ordipolo.png create mode 100644 data/ordipolo.png create mode 100644 data/originaux_latex/devis.tex create mode 100644 data/originaux_latex/enveloppe_recto.tex create mode 100644 data/originaux_latex/enveloppe_verso.tex create mode 100644 data/originaux_latex/facture.tex create mode 100644 data/originaux_latex/location.tex create mode 100644 src/model/traits.php diff --git a/config.php b/config.php index b824df3..2fec5ad 100644 --- a/config.php +++ b/config.php @@ -15,20 +15,25 @@ $db_place = '../data/'; // le dossier latex par défaut est celui "inclu" dans ce programme -// $receiptsLaTeX = '../data/latex/'; -$receiptsLaTeX = '../data/latex/'; -// $receiptsPDF = '../data/pdf/'; -$receiptsPDF = '../data/pdf/'; - -// $quotationsLaTeX = '../data/latex/'; -$quotationsLaTeX = '../data/latex/'; -// $quotationsPDF = '../data/pdf/'; -$quotationsPDF = '../data/pdf/'; - -// $envelopesLaTeX = '../data/latex/'; -$envelopesLaTeX = '../data/latex/'; -// $envelopesPDF = '../data/pdf/'; -$envelopesPDF = '../data/pdf/'; +// $receipts_latex = '../data/latex/'; +$receipts_latex = '../data/latex/'; +// $receipts_pdf = '../data/pdf/'; +$receipts_pdf = '../data/pdf/'; + +// $quotations_latex = '../data/latex/'; +$quotations_latex = '../data/latex/'; +// $quotations_pdf = '../data/pdf/'; +$quotations_pdf = '../data/pdf/'; + +// $envelopes_latex = '../data/latex/'; +$envelopes_latex = '../data/latex/'; +// $envelopes_pdf = '../data/pdf/'; +$envelopes_pdf = '../data/pdf/'; + +// $rental_latex = '../data/latex/'; +$rental_latex = '../data/latex/'; +// $rental_pdf = '../data/pdf/'; +$rental_pdf = '../data/pdf/'; // $pub = "~/ORDIPOLO/PUB/"; // dossier extérieur au choix diff --git a/data/latex/devis.tex b/data/latex/devis.tex deleted file mode 100644 index debcdc5..0000000 --- a/data/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/data/latex/enveloppe_recto.tex b/data/latex/enveloppe_recto.tex deleted file mode 100644 index d1f3f43..0000000 --- a/data/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/data/latex/enveloppe_verso.tex b/data/latex/enveloppe_verso.tex deleted file mode 100644 index 24baa8a..0000000 --- a/data/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/data/latex/facture.tex b/data/latex/facture.tex deleted file mode 100644 index babb2ab..0000000 --- a/data/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/data/latex/location.tex b/data/latex/location.tex deleted file mode 100644 index bcfb1e5..0000000 --- a/data/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/data/latex/ordipolo.png b/data/latex/ordipolo.png deleted file mode 100644 index 2acd67d..0000000 Binary files a/data/latex/ordipolo.png and /dev/null differ diff --git a/data/ordipolo.png b/data/ordipolo.png new file mode 100644 index 0000000..2acd67d Binary files /dev/null and b/data/ordipolo.png differ diff --git a/data/originaux_latex/devis.tex b/data/originaux_latex/devis.tex new file mode 100644 index 0000000..c5ae6e8 --- /dev/null +++ b/data/originaux_latex/devis.tex @@ -0,0 +1,86 @@ +\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}\\ + + \normalsize{}NOTA BENE\\ + + Si le délai de livraison n'est pas spécifié, un délai d'un mois est appliqué. + + Si Ordipolo garde votre ordinateur le temps nécessaire à la réparation, un reçu vous est remis. + Le client peut bénéficier gratuitement d'un ordinateur de prêt sur demande et selon disponibilité. + + La réparation inclut l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine et le 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. + + Les prestations d'Ordipolo sont régies par le code du commerce. +\end{document} diff --git a/data/originaux_latex/enveloppe_recto.tex b/data/originaux_latex/enveloppe_recto.tex new file mode 100644 index 0000000..eab03f8 --- /dev/null +++ b/data/originaux_latex/enveloppe_recto.tex @@ -0,0 +1,21 @@ +\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/data/originaux_latex/enveloppe_verso.tex b/data/originaux_latex/enveloppe_verso.tex new file mode 100644 index 0000000..24baa8a --- /dev/null +++ b/data/originaux_latex/enveloppe_verso.tex @@ -0,0 +1,13 @@ +\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/data/originaux_latex/facture.tex b/data/originaux_latex/facture.tex new file mode 100644 index 0000000..5c849f5 --- /dev/null +++ b/data/originaux_latex/facture.tex @@ -0,0 +1,80 @@ +\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/data/originaux_latex/location.tex b/data/originaux_latex/location.tex new file mode 100644 index 0000000..0d525fe --- /dev/null +++ b/data/originaux_latex/location.tex @@ -0,0 +1,44 @@ +\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/src/functions.php b/src/functions.php index d67a05e..6ddbae0 100644 --- a/src/functions.php +++ b/src/functions.php @@ -1,11 +1,11 @@ get()); + if($entry !== '') + { + $tableau = explode('|', $entry); + if(count($tableau) === 4) + { + $Client->newRow($tableau); + return true; + } + else + { + echo "debug: mauvais tableau, il doit avoir 4 cases\n"; + return false; + } + } + else + { + echo "debug: pas de données saisies\n"; + return false; + } +} + +function getLatexFromTemplate(string $template) +{ + // variables à injecter + $nom_client = "M. Duchmol"; + + // on obtient la variable $latex avec ob_get_clean() + include('latex_templates/' . $template . '.php'); + + // on retourne le buffer + // normallement le code PHP inséré avec include est nettoyé en quittant la fonction + return($latex); +} + // compilation à partir d'un fichier .tex -function latexToPdf(string $fileName, string $latexPath, string $pdfPath) +function latexToPdf(string $latexPath, string $fileName, string $pdfPath) { $outputDir = ''; if($pdfPath !== '') diff --git a/src/latex_templates/devis.php b/src/latex_templates/devis.php index 7df98e8..8f5e640 100644 --- a/src/latex_templates/devis.php +++ b/src/latex_templates/devis.php @@ -1,4 +1,6 @@ \documentclass{report} @@ -21,7 +23,7 @@ ob_start(); \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert \begin{center} - \includegraphics{ordipolo.png}\\ + \includegraphics{../ordipolo.png}\\ \Large\textbf{Dépannage informatique - Assistance à domicile} \end{center} @@ -43,7 +45,7 @@ ob_start(); CLIENT\\ \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} - Mme, M : \textcolor{vert}{} & + Mme, M : \textcolor{vert}{} & Date du devis : \textcolor{vert}{}\\ Adresse : \textcolor{vert}{} & Delai de livraison : \textcolor{vert}{}\\ @@ -76,9 +78,16 @@ ob_start(); \draw (0,0) rectangle (4,2); \end{tikzpicture}\\ - \small{}NOTA BENE\\ + \normalsize{}NOTA BENE\\ + + Si le délai de livraison n'est pas spécifié, un délai d'un mois est appliqué. - 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. + Si Ordipolo garde votre ordinateur le temps nécessaire à la réparation, un reçu vous est remis. + Le client peut bénéficier gratuitement d'un ordinateur de prêt sur demande et selon disponibilité. + + La réparation inclut l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine et le 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. + + Les prestations d'Ordipolo sont régies par le code du commerce. \end{document} \documentclass[]{report} @@ -13,7 +15,7 @@ ob_start(); \begin{document} \setlength{\parindent}{0cm} - \includegraphics{ordipolo.png}\\ + \includegraphics{../ordipolo.png}\\ \large\textbf{Dépannage informatique - Assistance à domicile} \setlength{\parindent}{7,9cm} @@ -23,4 +25,4 @@ ob_start(); \end{minipage} \end{document} \documentclass[]{report} @@ -15,4 +17,4 @@ ob_start(); \Large{Paul Jusot\\2A, rue de l'île de Man\\29000 QUIMPER} \end{document} \documentclass{report} @@ -20,7 +22,7 @@ ob_start(); \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert \begin{center} - \includegraphics{ordipolo.png}\\ + \includegraphics{../ordipolo.png}\\ \Large\textbf{Dépannage informatique - Assistance à domicile} \end{center} @@ -79,7 +81,12 @@ ob_start(); \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. + Si Ordipolo garde votre ordinateur le temps nécessaire à la réparation, un reçu vous est remis. + Le client peut bénéficier gratuitement d'un ordinateur de prêt sur demande et selon disponibilité. + + La réparation inclut l'intervention sur les logiciels et si nécessaire le démontage et remontage de la machine et le 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. + + Les prestations d'Ordipolo sont régies par le code du commerce. \end{document} \documentclass{report} @@ -21,7 +23,7 @@ ob_start(); \definecolor{vert}{rgb}{0.07, 0.46, 0.13} % saisie en vert \begin{center} - \includegraphics{ordipolo.png}\\ + \includegraphics{../ordipolo.png}\\ \Large\textbf{Dépannage informatique - Assistance à domicile} \end{center} @@ -36,14 +38,49 @@ ob_start(); Plus d'infos sur le site web: https\string://ordipolo.fr\\ % \string supprime l'espace devant les : - CLIENT\\ + \begin{center} + \large\textbf{CONTRAT DE LOCATION} + \end{center} + + PROPRIÉTAIRE\\ + + Mme, M : \textcolor{vert}{Paul Jusot}\\ + Adresse : \textcolor{vert}{2A, rue de l'île de Man, 29000 Quimper}\\ + + LOCATAIRE\\ + + \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} + Mme, M : \textcolor{vert}{} & tel : \textcolor{vert}{}\\ + Adresse : \textcolor{vert}{} & courriel : \textcolor{vert}{} + \end{tabularx}\\\\ + + BIEN LOUÉ\\ + + Désignation : \textcolor{vert}{}\\ + Modèle, description : \textcolor{vert}{}\\ + + État des lieux initial : \textcolor{vert}{}\\\\ + + État des lieux final : \textcolor{vert}{}\\\\ + + CLAUSES\\ + + Durée du prêt : \textcolor{vert}{}\\ + Loyer mensuel : \textcolor{vert}{}\\ + + + \textbf{Le bénéficiaire de cette location s’engage à prendre soin du bien désigné et à en faire un usage strictement personnel.}\\ + + \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} + Fait en deux exemplaires à : \textcolor{vert}{} & le : \textcolor{vert}{} \\ + \end{tabularx}\\ \begin{tabularx}{\linewidth}{@{}X@{}@{}X@{}} - Mme, M : \textcolor{vert}{} & - Date : \textcolor{vert}{}\\ - \end{tabularx}\\ - Adresse : \textcolor{vert}{}\\ + Le bénéficiaire du prêt : \textcolor{vert}{} & + Le loueur : \textcolor{vert}{}\\ + \end{tabularx}\\ + \normalsize(précéder la signature de la mention « lu et approuvé ») \end{document} setPrenom_nom('Jean Némar')->setAdresse('10, rue des douves')->setCode_client('464653476')->setCommentaires('un peu chiant'); -$Client->create(); - -// même chose avec un tableau en entrée au lieu d'écrire toutes les méthodes -$input = ['prenom_nom' => 'Eva Casquer', 'adresse' => "2, place d'Écosse", 'code_client' => '958465875', 'commentaires' => 'bonne vache à lait']; -$Client->hydrate($input); -$Client->create(); - -$input = ['prenom_nom' => 'Eva Paparla', 'commentaires' => 'grosse nunuche']; -$Client->hydrate($input); -$Client->update(2); - -$Client->delete(3); - -//$Date = new Dates; - - require('view/Zenity.php'); // commande système zenity require('view/zenity_setup.php'); // texte dans les fenêtres ET instanciation (un objet = une commande) require('Latex.php'); // générer le code LaTeX -// injection de variables dans le document -// problème à régler: et si je veux faire une deuxième facture? -//~ include('latex_templates/devis.php'); -//~ include('latex_templates/facture.php'); -//~ include('latex_templates/enveloppe_recto.php'); -//~ include('latex_templates/enveloppe_verso.php'); -//~ include('latex_templates/location.php'); +/* SYNTAXE BDD */ +// chaînage de méthodes +//~ $Client->setPrenom_nom('Jean Némar')->setAdresse('10, rue des douves')->setCode_client('464653476')->setCommentaires('un peu chiant'); +//~ $Client->create(); + +// tableau en entrée +//~ $input = ['prenom_nom' => 'Eva Casquer', 'adresse' => "2, place d'Écosse", 'code_client' => '958465875', 'commentaires' => 'bonne vache à lait']; +//~ $Client->hydrate($input); +//~ $Client->create(); + +//~ $input = ['prenom_nom' => 'Eva Paparla', 'commentaires' => 'grosse nunuche']; +//~ $Client->hydrate($input); +//~ $Client->update(2); + +//~ $Client->delete(3); // boucle principale $boucle = true; while($boucle) { - // menu principal + // niveau 1: menu principal $choix_niv1 = exec($MenuPrincipal->get()); - // enregistrement - if($choix_niv1 === $menu_principal_entrees[0]) // = Nouvelle prestation + // Nouvelle prestation + if($choix_niv1 === $menu_principal_entrees[0]) { - // est ce que le client est déjà dans la base? - if(exec($QuestionNouveauClient->get()) === 0) // $? = 0 signifie oui + $Client = new Clients; + $id_client_connu = false; + + // niveau 2: est ce que le client est déjà dans la base? + if(exec($QuestionNouveauClient->get()) == '0') // $? = 0 signifie oui, double égal == pour le transtypage { - // saisie du nom du client et recherche - $client_saisie = exec($RechercheClient->get()); + echo "debug: recherche souhaitée\n"; - // sélection parmi les résultats - $ResultatsRechercheClient->setEntries(recherche_client($client_saisie)); - $choix_niv2 = exec($ResultatsRechercheClient->get()); - if($choix_niv2 !== '') + // niveau 3: saisie du nom du client + $client_saisie = exec($RechercheClient->get()); + if($client_saisie !== '') { - echo "client trouvé\n"; + echo "debug: recherche effectuée\n"; + + $ResultatsRechercheClient->setEntries(rechercheClient($client_saisie)); // recherche silencieuse + + // niveau 4: sélection parmi les résultats + $choix_niv4 = exec($ResultatsRechercheClient->get()); + if($choix_niv4 !== '') + { + echo "debug: client sélectionné\n"; + $id_client_connu = true; + } + else + { + echo "debug: client pas trouvé ou pas sélectionné\n"; + } } - else // chaîne vide + else { - echo "client pas trouvé\n"; - exec($NouveauClient->get()); - - // enregistrement dans la BDD - + echo "debug: recherche annulée ou saisie vide\n"; } - - // récupération des infos dans la BDD - } else { - echo "nouveau client\n"; - exec($NouveauClient->get()); - - // enregistrement dans la BDD - + echo "debug: nouveau client\n"; } - // choix type comptable: devis, facture, cesu - $choix_niv2 = exec($MenuEnregistrement->get()); - $continuer = true; - if($choix_niv2 === $menu_enregistrement_entrees[0]) - { - // - } - elseif($choix_niv2 === $menu_enregistrement_entrees[1]) + // niveau 2: on n'a pas cherché OU on n'a pas trouvé + if(!$id_client_connu) { - // - } - elseif($choix_niv2 === $menu_enregistrement_entrees[2]) - { - // - } - elseif($choix_niv2 === $menu_enregistrement_entrees[3]) - { - // - } - else - { - $continuer = false; // retour menu principal + $id_client_connu = enregistrementNouveauClient($Client, $NouveauClient); } - // 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"'); + // niveau 2: type comptable d'enregistrement: devis, facture, cesu ou pas de prestation + if($id_client_connu) + { + $choix_niv2 = exec($MenuEnregistrement->get()); + $continuer = true; + if($choix_niv2 === $menu_enregistrement_entrees[0]) + { + // + } + elseif($choix_niv2 === $menu_enregistrement_entrees[1]) + { + // + } + elseif($choix_niv2 === $menu_enregistrement_entrees[2]) + { + // + } + elseif($choix_niv2 === $menu_enregistrement_entrees[3]) + { + // + } + else + { + $continuer = false; // retour menu principal + } + + if($continuer) + { + //niveau 3: détail de la prestation + $Date = new Dates(exec($Calendrier->get())); + $Objet->setDate($Date->getTimestamp()); // enregistrement du timestamp en BDD + + 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 + //~ $latex_path = '../data/latex/'; // noms de variables dans le config.php + //~ $file_name = 'devis.tex'; + //~ $template = 'devis'; // vaut 'devis' ou 'enveloppe_recto' ou 'enveloppe_verso' ou 'facture' ou 'location' + //~ $latex = getLatexFromTemplate($template); + //~ file_put_contents($latex_path . $file_name, $latex); // injection des variables & écriture du fichier + //~ $pdf_path = '../data/pdf/'; + //~ latexToPdf($latex_path, $file_name, $pdf_path); + + // 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"'); + } } + unset($Client); // suppression de la dernière référence (normallement) } - elseif($choix_niv1 === $menu_principal_entrees[1]) // = Modifier un enregistrement - {} + // Modifier un enregistrement + elseif($choix_niv1 === $menu_principal_entrees[1]) + { + // niveau 2: + } - elseif($choix_niv1 === $menu_principal_entrees[2]) // = Fichier clients + // Fichier clients + elseif($choix_niv1 === $menu_principal_entrees[2]) { // quel affichage? un grand tableau avec zenity? une page web? un document LaTeX? } @@ -202,15 +223,15 @@ while($boucle) $choix_niv2 = exec($MenuCommunication->get()); if($choix_niv2 === $menu_communication_entrees[0]) // = Flyer (nécessite gimp) { - exec(window_app_command($image_editor, $flyer)); + exec(windowAppCommand($image_editor, $flyer)); } elseif($choix_niv2 === $menu_communication_entrees[1]) // = Carte de visite (nécessite scribus) { - exec(window_app_command($publishing, $business_card)); + exec(windowAppCommand($publishing, $business_card)); } elseif($choix_niv2 === $menu_communication_entrees[2]) // = Explorateur de fichiers { - exec(window_app_command($file_explorer, $pub)); + exec(windowAppCommand($file_explorer, $pub)); } else { @@ -223,7 +244,7 @@ while($boucle) { if($sqlitebrowser_enable) { - exec(window_app_command($sqlite_gui, $db_place)); + exec(windowAppCommand($sqlite_gui, $db_place)); } else { diff --git a/src/model/CESU.php b/src/model/CESU.php index 4679da2..28a54a8 100644 --- a/src/model/CESU.php +++ b/src/model/CESU.php @@ -12,10 +12,7 @@ class CESU extends Model private $duree_travail; private $salaire; - public function __construct() - { - $this->table = self::TABLE; // => Model::$table - } + use ModelChildren; // setters public function setID(int $value) diff --git a/src/model/Clients.php b/src/model/Clients.php index 1256458..816cff3 100644 --- a/src/model/Clients.php +++ b/src/model/Clients.php @@ -10,10 +10,7 @@ class Clients extends Model public $code_client; public $commentaires; - public function __construct() - { - $this->table = strtolower(__CLASS__); // simple parce que la classe a le nom de la table - } + use ModelChildren; // renseigne parent::table //~ public function set(string $variable, $value) //~ { @@ -47,4 +44,12 @@ class Clients extends Model $this->commentaires = $value; return($this); } + + + public function newRow(array $entry) + { + $this->hydrate(['prenom_nom' => $entry[0], 'adresse' => $entry[1], 'code_client' => $entry[2], 'commentaires' => $entry[3]]); + $this->create(); + $this->setIdFromLastInsertID(); + } } diff --git a/src/model/DevisFactures.php b/src/model/DevisFactures.php index be733dd..218ebfe 100644 --- a/src/model/DevisFactures.php +++ b/src/model/DevisFactures.php @@ -19,10 +19,7 @@ class DevisFactures extends Model private $deplacement; private $total_HT; - public function __construct() - { - $this->table = strtolower(__CLASS__); - } + use ModelChildren; // setters public function setID(int $value) diff --git a/src/model/Locations.php b/src/model/Locations.php index 2aa175a..b788d43 100644 --- a/src/model/Locations.php +++ b/src/model/Locations.php @@ -15,10 +15,7 @@ class Locations extends Model private $loyer_mensuel; private $total_HT; - public function __construct() - { - $this->table = strtolower(__CLASS__); - } + use ModelChildren; // setters public function setID(int $value) diff --git a/src/model/Model.php b/src/model/Model.php index ad9e6c7..9effbe7 100644 --- a/src/model/Model.php +++ b/src/model/Model.php @@ -3,7 +3,7 @@ class Model extends DB { - private $db; // instance de PDO + protected $db; // instance de PDO protected $table; // <= enfant //static protected $tableStructure; @@ -12,7 +12,6 @@ class Model extends DB $this->db = parent::getInstance(); // connexion } - // setters (plusieurs en même temps) public function hydrate(array $data) // $data = tableau associatif en entrée: nom_du_champ => valeur { @@ -51,7 +50,7 @@ class Model extends DB } - // méthodes CRUD qui marchent (les spécifiques sont dans les classes enfant) + // méthodes CRUD // create INSERT public function create() // = write @@ -79,17 +78,17 @@ class Model extends DB // read SELECT - public function readAll() + public function readAll() // obtenir une table { $query = $this->execQuery('SELECT * FROM ' . $this->table . ';'); // fonctionne aussi sans le point virgule dans le SQL!! return($query->fetchAll()); } - public function findById(int $id) + public function findById(int $id) // obtenir une entrée avec son ID { return($this->execQuery('SELECT * FROM ' . $this->table . ' WHERE id = ' . $id)->fetch()); } - public function find(array $criteria) + public function find(array $criteria) // obtenir une entrée avec un tableau associatif 'champ' => 'valeur' { $fields = []; $values = []; @@ -140,7 +139,6 @@ class Model extends DB // DBStructure::${self::$tableStructure} permet de nommer une variable statique de classe static public function createTables() { - //~ var_dump(StructTablesDB::$structureOfTables); foreach(StructTablesDB::$structureOfTables as $tableName => $oneTable) { //var_dump(StructTablesDB::${self::$tableStructure}); => propriété statique de classe dans une variable @@ -156,7 +154,5 @@ class Model extends DB parent::getInstance()->exec($query); // merci singleton! } - - } } diff --git a/src/model/Prestations.php b/src/model/Prestations.php index 4f58d70..32f9768 100644 --- a/src/model/Prestations.php +++ b/src/model/Prestations.php @@ -13,10 +13,7 @@ class Prestations extends Model private $mode_paiement; private $commentaires; - public function __construct() - { - $this->table = strtolower(__CLASS__); - } + use ModelChildren; // setters public function setID(int $value) diff --git a/src/model/StructTablesDB.php b/src/model/StructTablesDB.php index cf6de5d..ee4baf1 100644 --- a/src/model/StructTablesDB.php +++ b/src/model/StructTablesDB.php @@ -10,10 +10,10 @@ class StructTablesDB // la table prestations est liée à la table clients // les tables devis_factures, cesu et locations sont liées à la table prestations 'clients' => ['ID' => 'INTEGER', 'prenom_nom' => 'TEXT', 'adresse' => 'TEXT', 'code_client' => 'TEXT', 'commentaires' => 'TEXT'], - 'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'combientieme_fois' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'], + 'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'combientieme_fois' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type_presta' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'], 'devisfactures' => ['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' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL'], 'cesu' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'duree_travail' => 'TEXT', 'salaire' => 'REAL'], - 'locations' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'nature_bien' => 'TEXT', 'modele' => 'TEXT', 'valeur' => 'REAL', 'etat_des_lieux_debut' => 'TEXT', 'etat_des_lieux_fin' => 'TEXT', 'duree_location' => 'TEXT', 'loyer_mensuel' => 'REAL', 'total_HT' => 'REAL'] + 'locations' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'designation' => 'TEXT', 'modele_description' => 'TEXT', 'valeur' => 'REAL', 'etat_des_lieux_debut' => 'TEXT', 'etat_des_lieux_fin' => 'TEXT', 'duree_location' => 'INTEGER', 'loyer_mensuel' => 'REAL', 'loyers_encaisse' => 'INTEGER', 'caution' => 'INTEGER'] ]; // les types de variables de sqlite sont peu nombreux et autorisent un typage automatique diff --git a/src/model/traits.php b/src/model/traits.php new file mode 100644 index 0000000..43d9b7f --- /dev/null +++ b/src/model/traits.php @@ -0,0 +1,16 @@ +table = strtolower(__CLASS__); + } + + public function setIdFromLastInsertID() // à faire juste après l'écriture d'une nouvelle entrée + { + $this->db = parent::getInstance(); + $this->ID = $this->db->lastInsertId(); // méthode de PDO + } +} diff --git a/src/view/Zenity.php b/src/view/Zenity.php index a04b794..04c9221 100644 --- a/src/view/Zenity.php +++ b/src/view/Zenity.php @@ -13,7 +13,7 @@ abstract class ZenityCmd protected $width = 300; protected $height = 200; // recalculée en fonction du contenu, vaut au minimum 150 - protected function __construct($text, array $rows = []) // $rows est optionnel + protected function __construct(string $text, array $rows = []) // $rows est optionnel { $this->text = $text; $this->rows= $rows; @@ -31,7 +31,7 @@ abstract class ZenityCmd class ZenityList extends ZenityCmd { - public function __construct($text, array $rows) + public function __construct(string $text, array $rows) { $this->command_type = ' --list'; parent::__construct($text, $rows); @@ -39,15 +39,17 @@ class ZenityList extends ZenityCmd $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); + self::oneColumnZenityList($this->rows); } - public function set_entries($rows_set) // variable renseignée après la construction + // cas ou $this->rows est renseignée après + public function setEntries(array $rows_set) { $this->rows = $rows_set; } - private function one_column_zenity_list($rows) + // cas où on veut une seule colonne + private function oneColumnZenityList(array $rows) { $output = ' --column=""'; foreach($rows as $entry) @@ -56,6 +58,8 @@ class ZenityList extends ZenityCmd } $this->command .= $output; } + + // cas où on veut plusieurs colonnes, le remplissage est horizontal, oui c'est tordu! } class ZenityQuestion extends ZenityCmd @@ -70,6 +74,8 @@ class ZenityQuestion extends ZenityCmd } } +// note: le formulaire renvoie une chaine avecdes pipes | entre les zones de texte (qui peuvent être vides) +// si on clique sur 'Annuler', renvoie une chaine vide class ZenityForms extends ZenityCmd { public function __construct($text, array $rows) @@ -77,10 +83,10 @@ class ZenityForms extends ZenityCmd $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); + self::entriesZenityForms($this->rows); } - private function entries_zenity_forms($entries) + private function entriesZenityForms($entries) { $output = ''; foreach($entries as $one_entry) diff --git a/src/view/zenity_setup.php b/src/view/zenity_setup.php index 2f55cf2..503ae71 100644 --- a/src/view/zenity_setup.php +++ b/src/view/zenity_setup.php @@ -7,7 +7,7 @@ $menu_principal_text = "Gestion d'une micro-entreprise"; $menu_principal_entrees = ["Nouvelle prestation", "Modifier enregistrement", "Fichier clients", "Créer/imprimer un document", "Communication", "Base de données"]; $question_nouveau_client_text = "Ce client figure t\'il déjà dans le fichier clients?"; $menu_enregistrement_text = "Type d\'enregistrement?"; -$menu_enregistrement_entrees = ["Devis", "Facture", "CESU", "Pas de prestation"]; +$menu_enregistrement_entrees = ["Devis", "Facture", "CESU", "Prestation non vendue"]; $menu_documents_text = "Création de documents LaTeX"; $menu_documents_entrees = ["Devis", "Facture", "Lettre avec adresse", "Livre des recettes", "Registre des achats", "Bilan annuel"]; $menu_communication_text = "Imprimer un support de communication"; @@ -15,7 +15,7 @@ $menu_communication_entrees = ["Flyer (nécessite gimp)", "Carte de visite (néc $recherche_client_text = "Recherche d'un client avec son nom ou son code client"; $resultats_recherche_client_text = "Résultats de la recherche, sélectionner un client"; $nouveau_client_text = "Nouveau client"; -$nouveau_client_entrees = ["Prénom Nom:", "Adresse:", "Code client, type: J.P.Duchmol"]; +$nouveau_client_entrees = ["Prénom Nom:", "Adresse:", "Code client, exemple: J.P.Duchmol", "Commentaires"]; $calendar_text = 'Nouvelle prestation étape 1/3 - Choisir une date'; $formulaire_text = 'Nouvelle prestation 2/3 - Détail des travaux'; $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):",]; diff --git "a/structure base de donn\303\251es.ods" "b/structure base de donn\303\251es.ods" index 12d7af6..703487c 100644 Binary files "a/structure base de donn\303\251es.ods" and "b/structure base de donn\303\251es.ods" differ -- cgit v1.2.3