Opis skrócony przypadków użycia
===============================


Aktorzy procesu i ich cele
--------------------------

Aktor              | Cel
-------------------|------------------------------
Kelner             | <ul> <li>zarządzanie zamówieniami</li> <li>dodanie niestandardowej potrawy do zamówienia</li> <li>sprawdzenie możliwości przygotowania potrawy (czy wystarczy na nią składników)</li> <li>śledzenie statusu zamówienia</li> </ul>
Kasjer             | <ul> <li>przyjmowanie płatności</li> </ul>
Kucharz            | <ul> <li>przyjmowanie i wydawanie zamówień</li> <li>wgląd w zamówienia</li> </ul>
Pracownik Spiżarni | <ul> <li>aktualizacja stanu spiżarni</li> </ul>


Słownik
-------

Hasło                  |Opis
-----------------------|-----------------------------
Kasa                   | Terminal przyjmujący zapłaty.
TK                     | Terminal Kelnera.
Kuchnia                | Terminal w kuchni.
Spiżarnia              | Terminal w spiżarni.
Zamówienie             | Lista potraw zamówionych przez klienta
Potrawa                | Danie z konkretną listą składników oraz dostępnymi dodatkami. 
Potrawa Niestandardowa | Potrawa ze zmodyfikowanymi składnikami.
Dodatek                | Coś, co możesz dodać do potrawy.


Przypadki użycia
----------------

### Use case 1: Zarządzanie zamówieniami

Klient wymienia potrawy, jakie pragnie zamówić z
menu restauracji. Kelner, korzystając z TK, tworzy 
nowe zamówienie i dodaje do niego potrawy wymienione 
przez klienta. Po złożeniu zamówienia, kelner może 
(na życzenie klienta) dodawać nowe potrawy oraz 
modyfikować lub usuwać wybrane istniejące w zamówieniu 
potrawy. Nowe potrawy można dodawać do momentu zapłaty 
za zamówienie. Usuwać lub modyfikować daną potrawę 
z zamówienia można do momentu, aż nie rozpocznie 
się przyrządzanie tej konkretnej potrawy w kuchni. 
Potrawy zawarte w zamówieniu są serwowane. Po posiłku 
klient płaci za potrawy, jakie znajdują się w zamówieniu 
i opuszcza restaurację.

### Use case 2: Dodanie potrawy niestandardowej

Klient opisuje niestandardową potrawę, jaką chce 
zamówić. Po kolei podaje składniki i dodatki, z 
jakich chce, aby ta potrawa się składała. Kelner
za pomocą TK tworzy potrawę niestandardową i
dodaje do niej wszystkie składniki i dodatki które,
wymienił klient. Koszt potrawy jest określony na 
podstawie składników i dodatków, z jakich ta potrawa
się składa. Kelner zatwierdza dodanie potrawy 
niestandardowej i staje się ona częścią zamówienia.

### Use case 3: Sprawdzanie możliwości przygotowania potrawy

Kelner przyjmuje zamówienie od klienta. W TK przy każdej potrawie kelner ma informacje na temat dostępności składników
potrawy. Kelner zapisuje tylko dania, które są dostępne (mają wszystkie potrzebne składniki w spiżarni) i tylko je
przekazuje do kuchni.

### Use case 4: Śledzenie statusu zamówienia

Kelner przez cały proces obsługi klienta może sprawdzić stan jego zamówienia w TK. Zamówienia mają swoje stany,
które opisują, jaki jest etap realizacji zamówienia klienta. Po przyjęciu zamówienia i przekazaniu go do kuchni
TK wyświetla informacje o zrealizowaniu danego zamówienia. Kelner może odebrać gotowe zamówienie z kuchni
i zanieść je klientowi.

### Use case 5: Przyjmowanie i wydawanie zamówień

Kucharz zaczyna przygotowywać zamówienie. Zmienia jego status na 'przyjęte' poprzez terminal w kuchni.
Kucharz kończy przygotowywać zamówienie. Zmienia jego status na 'gotowe', tym samym wydając zamówienie.

### Use case 6: Wgląd w zamówienia

Kucharz ma na terminalu w kuchni listę zamówień. Klikając w dowolny jej element, może zapoznać się ze składem
danego zamówienia — t.j. listą potraw.

### Use case 7: Aktualizacja stanu spiżarni

Nowa dostawa produktów spożywczych trafia do spiżarni. Pracownik spiżarni weryfikuje zgodność faktury z zawartością dostawy.
Za pomocą terminala, wprowadza do systemu dostarczoną ilość każdego z przyjętych produktów. 
System dodaje te wartości do aktualnego stanu spiżarni i zapisuje go.

### Use case 8: Przyjęcie płatności

Klient podchodzi do kasy w celu opłacenia spożytego wcześniej zamówienia. Informuje kasjera o numerze stolika, przy którym siedział. 
Kasjer, za pomocą terminala, wprowadza numer stolika do systemu. Na tej podstawie system identyfikuje zamówienie oraz wyświetla należną kwotę. 
Klient wybiera jeden z dostępnych sposobów realizowania płatności. System weryfikuje i zapisuje płatność, 
komunikując się w razie potrzeby z odpowiednimi systemami zewnętrznymi. Klient otrzymuje paragon i odchodzi od kasy.