1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| \documentclass{article}
\usepackage{xstring}
\makeatletter
\newread\monfichier%
\newcount\pr@num%
\def\lignevide{\par}
\def\refprod#1{\csname refprod@#1\endcsname}
\def\textprod#1{\csname textprod@#1\endcsname}
\def\tarifprod#1{\csname tarifprod@#1\endcsname}
\def\textoptprod#1{\csname textoptprod@#1\endcsname}
\def\tarifoptprod#1{\csname tarifoptprod@#1\endcsname}
\def\prixprod#1{\csname prixprod@#1\endcsname}
\def\textequip#1{\csname textequip@#1\endcsname}
\def\tarifequip#1{\csname tarifequip@#1\endcsname}
\def\totalbase#1{\csname totalbase@#1\endcsname}
\def\textoptequipe@i#1{\csname textoptequipe@i@#1\endcsname}
\def\tarifoptequip#1{\csname tarifoptequip@#1\endcsname}
\def\textprod#1{\csname textprod@#1\endcsname}
\def\tarifoptequip@i#1{\csname tarifoptequip@i@#1\endcsname}
\def\lireligne#1 \@nil{%
\ifx\lireligne\@empty%
\else
\StrBefore[1]{#1}{,}[\refprod]%1
\StrBetween[1,2]{#1}{,}{,}[\textprod]%2
\StrBetween[2,3]{#1}{,}{,}[\tarifprod]%3
\StrBetween[3,4]{#1}{,}{,}[\textoptprod]%4
\StrBetween[4,5]{#1}{,}{,}[\tarifoptprod]%5
\StrBetween[5,6]{#1}{,}{,}[\prixprod]%6
\StrBetween[6,7]{#1}{,}{,}[\textequip]%7
\StrBetween[7,8]{#1}{,}{,}[\tarifequip]%8
\StrBetween[8,9]{#1}{,}{,}[\totalbase]%9
\StrBetween[9,10]{#1}{,}{,}[\textoptequipe]%10
\StrBetween[10,11]{#1}{,}{,}[\tarifoptequip]%11
\StrBetween[11,12]{#1}{,}{,}[\textoptequipe@i]%12
\StrBetween[12,13]{#1,}{,}{,}[\tarifoptequip@i]%13
\fi}
\def\readata#1{\def\nbligne{0}\pr@num=0%
\immediate\openin\monfichier=#1\relax
\loop\unless\ifeof\monfichier\read\monfichier to\ligne%
\ifeof\monfichier\else\ifx\ligne\lignevide\else\advance\pr@num by 1 %
\expandafter\lireligne\ligne\@nil
\expandafter\let\csname refprod@#1\the\pr@num\endcsname=\refprod%
\expandafter\let\csname textprod@#1\the\pr@num\endcsname=\textprod
\expandafter\let\csname tarifprod@#1\the\pr@num\endcsname=\tarifprod%3
\expandafter\let\csname textoptprod@#1\the\pr@num\endcsname=\textoptprod%4
\expandafter\let\csname tarifoptprod@#1\the\pr@num\endcsname=\tarifoptprod%5
\expandafter\let\csname prixprod@#1\the\pr@num\endcsname=\prixprod%6
\expandafter\let\csname textequip@#1\the\pr@num\endcsname=\textequip%7
\expandafter\let\csname tarifequip@#1\the\pr@num\endcsname=\tarifequip%8
\expandafter\let\csname totalbase@#1\the\pr@num\endcsname=\totalbase%9
\expandafter\let\csname textoptequipe@i@#1\the\pr@num\endcsname=\textoptequipe%10
\expandafter\let\csname tarifoptequip@#1\the\pr@num\endcsname=\tarifoptequip%11
\expandafter\let\csname textoptequipe@i@#1\the\pr@num\endcsname=\textoptequipe@i%12
\expandafter\let\csname tarifoptequip@i@#1\the\pr@num\endcsname=\tarifoptequip@i%13
\catalogue\fi\fi\repeat%
\immediate\closein\monfichier}
\newcommand{\resultat}[1]{\csname textprod@#1\endcsname}
\def\catalogue{%
\unless\ifnum\the\pr@num>2 %
\relax
\else
Le produit \refprod\ a pour description: \textprod\ et a pour tarif \tarifprod\ euro. Ce produit poss\`ede pour option : \textoptprod\ au prix de \tarifoptprod\ euros pour un prix total de \prixprod{}.\par
S'ajoute un \'equipement : \textequip au tarif de \tarifequip .\par Ce qui donne au final un prix total pour l'offre de base \totalbase euros.\par
Il est possible d'ajouter des options :
\begin{itemize}
\item \textoptequipe\ au prix de \tarifoptequip\ euro ;
\item \textoptequipe@i\ au prix de \tarifoptequip@i\ euro ;
\end{itemize}\bigskip
\fi}
\makeatother
\parindent=0pt
\begin{document}
\readata{matrice.csv}
\end{document} |
Partager