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