\section{Analiza sistemului informatic}

Analiza sistemului informatic existent stabilește regulile după care se desfășoară activitatea și fluxul unei comenzi: cine generează datele, cum sunt prelucrate și ce documente rezultă, de la primirea clientului până la încasare și raportare.

\subsection{Descrierea procedurilor și a regulilor de gestiune}

Funcționarea restaurantului și, implicit, logica aplicației se bazează pe un set de reguli de gestiune care descriu relațiile dintre entitățile sistemului:

\begin{itemize}[leftmargin=1.4em,itemsep=2pt]
  \item un \textbf{client} poate plasa, în timp, una sau mai multe comenzi; o comandă aparține întotdeauna unui singur client;
  \item fiecare \textbf{comandă} este preluată de un singur \textbf{angajat} cu rol de chelner, însă un chelner poate prelua mai multe comenzi în cursul unei zile;
  \item o comandă conține \textbf{unul sau mai multe produse}, fiecare cu o cantitate proprie; aceeași comandă poate include același produs o singură dată, cu cantitatea aferentă;
  \item un \textbf{produs} din meniu poate apărea în mai multe comenzi diferite; legătura dintre comenzi și produse se realizează prin liniile de comandă (detaliile comenzii);
  \item fiecare comandă trece prin mai multe \textbf{stări}: \emph{În preparare}, \emph{Servită}, \emph{Achitată} și, eventual, \emph{Anulată};
  \item pentru fiecare produs se înregistrează \textbf{prețul unitar la momentul comenzii}, astfel încât o modificare ulterioară a prețului din meniu să nu altereze valoarea comenzilor deja încasate;
  \item personalul de coordonare generează periodic \textbf{rapoarte de sinteză} privind vânzările pe chelner, pe produs și pe client, utile în deciziile de aprovizionare și de personal.
\end{itemize}

\subsection{Analiza funcțională}

Analiza funcțională identifică unitățile organizatorice implicate în procesul gestionat, prelucrările (procesele) pe care le execută fiecare și documentele rezultate. Această corespondență este sintetizată în tabelul funcțional, iar succesiunea operațiunilor este redată în diagrama funcțională.

\subsubsection{Tabelul funcțional}

Tabelul funcțional (Tabelul~\ref{tab:functional}) pune în corespondență fiecare unitate organizatorică a restaurantului cu procesele pe care le realizează și cu documentele de intrare/ieșire asociate.

\begin{table}[H]
\caption{Tabelul funcțional al sistemului informatic}
\label{tab:functional}
\begin{center}
\renewcommand{\arraystretch}{1.3}
\begin{tabular}{>{\raggedright\arraybackslash}p{3.2cm} >{\raggedright\arraybackslash}p{6.2cm} >{\raggedright\arraybackslash}p{4.6cm}}
\toprule
\textbf{Unitate organizatorică} & \textbf{Procese / prelucrări} & \textbf{Documente} \\
\midrule
Client &
Solicită meniul; alege produsele; plasează comanda; achită nota &
Comandă; notă de plată \\
\addlinespace
Chelner (sala de servire) &
Preia comanda; o introduce în sistem; asociază produsele și cantitățile; actualizează starea; servește &
Comandă înregistrată; bon de comandă \\
\addlinespace
Bucătărie (bucătar-șef, bucătari) &
Primește comanda; pregătește produsele; confirmă finalizarea preparării &
Listă de preparare \\
\addlinespace
Casier (casierie) &
Calculează valoarea comenzii; încasează; marchează comanda drept achitată &
Notă de plată; situația încasărilor \\
\addlinespace
Manager (conducere) &
Urmărește vânzările; analizează performanța; decide aprovizionarea și personalul &
Rapoarte de sinteză (vânzări, performanță) \\
\bottomrule
\end{tabular}
\end{center}
{\sursa{proiecție proprie}}
\end{table}

\subsubsection{Diagrama funcțională}

Diagrama funcțională (Fig.~\ref{fig:fluxfunctional}) ilustrează fluxul informației în cadrul procesării unei comenzi, de la primirea clientului în sală până la generarea rapoartelor de sinteză pentru conducere.

\begin{figure}[H]\centering
\begin{tikzpicture}[
  font=\footnotesize,
  node distance=6mm and 9mm,
  proc/.style={draw,rounded corners=2pt,align=center,fill=gray!8,minimum height=9mm,minimum width=24mm,inner sep=3pt},
  io/.style={draw,trapezium,trapezium left angle=70,trapezium right angle=110,align=center,fill=gray!4,minimum height=8mm,inner sep=3pt},
  fl/.style={-{Latex[length=2mm]}}]
  \node[io] (cl) {Client\\(comandă)};
  \node[proc,right=of cl] (ch) {Chelner:\\preia și\\înregistrează};
  \node[proc,right=of ch] (db) {Sistem:\\comandă +\\detalii};
  \node[proc,below=of db] (buc) {Bucătărie:\\preparare};
  \node[proc,left=of buc] (serv) {Servire la\\masă};
  \node[proc,left=of serv] (cas) {Casierie:\\încasare};
  \node[io,below=of cas] (rap) {Manager:\\rapoarte};
  \draw[fl] (cl) -- (ch);
  \draw[fl] (ch) -- (db);
  \draw[fl] (db) -- (buc);
  \draw[fl] (buc) -- (serv);
  \draw[fl] (serv) -- (cas);
  \draw[fl] (cas) -- (rap);
\end{tikzpicture}
\caption{Diagrama funcțională a procesării unei comenzi}
\label{fig:fluxfunctional}
\end{figure}

Nodul central al fluxului este sistemul informatic (baza de date), în care se înregistrează comanda și liniile sale; de aici, datele sunt folosite la preparare, servire, încasare și raportare.
