Changes between Initial Version and Version 1 of UseCase0008PrototypeImplementation


Ignore:
Timestamp:
09/25/26 01:32:40 (6 days ago)
Author:
223306
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCase0008PrototypeImplementation

    v1 v1  
     1= Use-case 0008 Implementation - Купување книги =
     2
     3'''Иницирачки актер:''' Купувач
     4
     5'''Други актери:''' Нема
     6
     7== Опис ==
     8
     9Најавениот купувач може да избере книга и количина и да изврши купување. Системот ја проверува достапната количина на залиха, ја пресметува вкупната цена, креира нова нарачка, ја евидентира купената книга и плаќањето и ја намалува количината на книгата на залиха. По успешно завршување на купувањето, корисникот добива потврда за нарачката.
     10
     11== Сценарио ==
     12
     131. Најавениот купувач ја отвора страницата со детали за книгата што сака да ја купи. На страницата се прикажуваат податоците за книгата, цената, изборот на количина и копчето „Купи ја книгата“.
     14
     15[[Image(UseCase0008_1.png, width=800)]]
     16
     172. Купувачот ја избира саканата количина. Во прототипот може да се избере количина од 1 до 5 примероци.
     18
     19[[Image(UseCase0008_2.png, width=800)]]
     20
     213. По притискање на копчето „Купи ја книгата“, системот прво ја презема цената и моменталната количина на залиха за избраната книга.
     22
     23Се користи следната SQL наредба:
     24
     25{{{
     26#!sql
     27SELECT cena, kolicina_na_zaliha
     28FROM project.knigi
     29WHERE kniga_id = %s;
     30}}}
     31
     32Системот проверува дали има доволно примероци на залиха за избраната количина. Потоа вкупната цена се пресметува како цена на книгата помножена со избраната количина.
     33
     344. Ако има доволно примероци на залиха, системот креира нова нарачка за најавениот корисник.
     35
     36Се користи следната SQL наредба:
     37
     38{{{
     39#!sql
     40INSERT INTO project.naracki
     41    (datum, status, vkupna_cena, korisnik_id)
     42VALUES
     43    (CURRENT_TIMESTAMP, %s, %s, %s)
     44RETURNING naracka_id;
     45}}}
     46
     47Статусот на успешно креираната нарачка се поставува на `ZAVRSENA`.
     48
     495. Системот ја поврзува избраната книга со креираната нарачка и ја зачувува избраната количина и единечната цена.
     50
     51Се користи следната SQL наредба:
     52
     53{{{
     54#!sql
     55INSERT INTO project.sodrzi
     56    (naracka_id, kniga_id, kolicina, edinechna_cena)
     57VALUES
     58    (%s, %s, %s, %s);
     59}}}
     60
     616. Системот го евидентира плаќањето за креираната нарачка.
     62
     63Се користи следната SQL наредба:
     64
     65{{{
     66#!sql
     67INSERT INTO project.plakanja
     68    (datum, iznos, nacin_na_plakjanje, status, naracka_id)
     69VALUES
     70    (CURRENT_TIMESTAMP, %s, %s, %s, %s);
     71}}}
     72
     73Во прототипот начинот на плаќање е `KARTICKA`, а статусот на успешно плаќање е `USPESNO`.
     74
     757. По успешното купување, системот ја намалува количината на книгата на залиха за бројот на купени примероци.
     76
     77Се користи следната SQL наредба:
     78
     79{{{
     80#!sql
     81UPDATE project.knigi
     82SET kolicina_na_zaliha = kolicina_na_zaliha - %s
     83WHERE kniga_id = %s;
     84}}}
     85
     868. Сите промени се потврдуваат во базата на податоци. Доколку се појави грешка во текот на купувањето, промените се поништуваат.
     87
     88По успешно купување, системот го пренасочува корисникот кон страницата со потврда за успешно извршената нарачка.
     89
     90[[Image(UseCase0008_3.png, width=800)]]
     91
     929. Корисникот може да ја отвори страницата „Мои нарачки“, каде што се прикажуваат неговите претходни купувања.
     93
     94За прикажување на нарачките на најавениот корисник се користи следната SQL наредба:
     95
     96{{{
     97#!sql
     98SELECT
     99    n.naracka_id,
     100    n.datum,
     101    n.status,
     102    n.vkupna_cena,
     103    k.naslov,
     104    s.kolicina,
     105    s.edinechna_cena
     106FROM project.naracki n
     107JOIN project.sodrzi s
     108    ON n.naracka_id = s.naracka_id
     109JOIN project.knigi k
     110    ON s.kniga_id = k.kniga_id
     111WHERE n.korisnik_id = %s
     112ORDER BY n.datum DESC;
     113}}}
     114
     115[[Image(UseCase0008_4.png, width=800)]]