wiki:UseCaseScen1

Креирање на нарачка

Актери

Потрошувач

Чекор 1 - Најава на системот

Корисникот се најавува на системот со внесување на својот email и лозинка. Лозинката во позадина се хешира и таа се проверува во базата.

select user_id as userId,
                           user_name as userName,
                           user_surname as userSurname,
                           user_pass as userPassword,
                           user_email as userEmail,
                           user_mobile as userMobile,
                           user_salt as userSalt,
                           user_active as userActive,
                           user_image as userImage,
                           user_role as userRole,
                           clazz_
                    from users
                    where user_email = ?1

Чекор 2 - Dashboard

Овде на почетната страна корисникот ќе има приказ на своите активни нарачки и активни достави доколку има.

Листање на активни нарачки
select *
from orders o
where o.customer_id=curr_usr_id and o.order_status_id between 2 and 6

Статусите на нарачки со id меѓу 2 и 6 се: Pending, Confirmed, Processing, Shipped, Out for Delivery

Листање на активни достави
select del.del_id as id,
                           del.del_date_created as dateCreated,
                           del.del_date as deliveryDate,
                           del.del_start_km as delStartKm,
                           del.del_end_km as delEndKm,
                           to_char(d.del_start_time, 'HH24:MI:22') as delStartTime,
                           to_char(d.del_end_time, 'HH24:MI:SS') as delEndTime,
                           del.d_status_id as dStatusId,
                           ds.d_status_name as delStatus,
                           v.veh_id as vehId,
                           dr.user_id as driverId,
                           u.user_name as driverName,
                           u.user_image as driverImage
                    from delivery del
                        join orders o on o.del_id=del.del_id
                        join delivery d on o.del_id = d.del_id
                        join delivery_status ds on d.d_status_id=ds.d_status_id
                        join vehicle v on v.veh_id=d.veh_id
                        join driver dr on dr.veh_id=v.veh_id
                        join users u on u.user_id=dr.user_id
                    where o.cust_id=:customer and del.d_status_id <> 4;

Статус на достава број 4 е Delivered, односно, тука се листат сите достави на моменталниот корисник кои се со статус различен од Delivered.

Чекор 3 - Корисникот клика на копчето Направи нарачка

По клик на копчето корисникот е пренасочен кон форма каде ја пополнува со посакуваните продукти и нивната количина. Тука нема листање на ништо првично во формата.

Тука во моделот се праќаат листи на категории, артикли, произведувачи и единки од секој артикл во магацинот од регионот на корисникот.

Вчитување на корисник и магацин на моменталниот корисник
-- Вчитување на корисник:
select u.user_id as id,
                           u.user_name as firstName,
                           u.user_surname as lastName,
                           u.user_email as email,
                           u.user_mobile as phone,
                           u.user_image as image,
                           u.city_id as cityId,
                           c.city_name as cityName,
                           r.region_name as regionName,
                           u.user_role as role,
                           clazz_ as clazz_,
                           u.user_active as userActive
                    from users u
                    join city c on u.city_id = c.city_id
                    join region r on c.region_id = r.region_id
                    where user_email = ?1;

-- Вчитување на магацин:
with reg as (
                         select r.*
                         from city c1 join region r on c1.region_id = r.region_id
                         where c1.city_id = :city
                     )
                     select w.wh_id as id,
                            w.wh_adr as address,
                            c.city_id as cityId,
                            c.city_name as cityName,
                            r1.region_id as regionId,
                            r1.region_name as regionName
                     from warehouse w
                     join city c on c.city_id = w.city_id
                     join reg r1 on r1.region_id = c.region_id
                     where c.region_id = r1.region_id
Категории во магацинот
select ctg_id as id,
       ctg_name as name
from category
Артикли во магацинот
with stock as (
                        select a.art_id,
                               count(au.unit_id) as quantity
                        from article a
                        join price p on a.art_id = p.art_id
                        join unit_price up on p.price_id = up.price_id
                        join article_unit au on up.unit_id = au.unit_id
                        group by a.art_id
                    )
                    select a.art_id as id,
                           a.art_name as name,
                           m.man_name as manufacturer,
                           st.quantity as quantity,
                           m.man_id as manufacturerId,
                           p.price as price,
                           c.ctg_name as category,
                           c.ctg_id as categoryId,
                           a.art_weight as weight,
                           a.art_image as image
                    from article a
                    join stock st on st.art_id=a.art_id
                    join manufacturer m on a.man_id = m.man_id
                    join category c on a.ctg_id = c.ctg_id
                    join price p on a.art_id = p.art_id
                    join unit_price up on p.price_id = up.price_id
                    join article_unit au on up.unit_id = au.unit_id
                    join warehouse w on w.wh_id = au.wh_id
                    where w.wh_id = ?1
Произведувачи на артикли во магацинот
select m.man_id as id,
       m.man_name as name,
       m.man_adr as address,
       m.man_mobile as phone,
       m.man_email as email
from manufacturer m
Единки од артикли во магацинот
select au.unit_id as id,
                            au.unit_expiration_date as expiryDate,
                            au.unit_serial_number as serialNo,
                            au.unit_batch_number as batchNo,
                            au.unit_manufacture_date as manufactureDate,
                            au.unit_cost_price as costPrice,
                            a.art_id as artId,
                            a.art_name as artName,
                            au.wh_id as whId,
                            r.region_name as whRegion,
                            c.city_name as whCity,
                            au.ord_id as ordId,
                            u.user_email as customerEmail
                    from article_unit au
                    join warehouse wh on au.wh_id = wh.wh_id
                    join city c on wh.city_id = c.city_id
                    join region r on c.region_id = r.region_id
                    join unit_price up on au.unit_id = up.unit_id
                    join price p on up.price_id = p.price_id
                    join article a on p.art_id = a.art_id
                    join orders o on au.ord_id = o.ord_id
                    join customer cust on o.cust_id = cust.user_id
                    join users u on cust.user_id = u.user_id

Чекор 4 - Пополнување на форма

Тука корисникот може да пристапи на два начини.

  • Да пребарува низ сите продукти со пишување во поле за пребарување или
  • Да пребарува по категории, производители со селектирање од листа/drop-down мени.
Пребарување по име на продукт со внесување на букви/збор

Ова се прави со JavaScript со тоа што сите продукти се вчитуваат од тој магацин.

Пребарување по листање на категории или производители

Ова се прави со JavaScript со тоа што сите категории и производители се вчитуваат.

Чекор 5 - Креирање на нарачката во позадина

По одбирање на производот, корисникот одбира посакувана количина и одбира дали сака да добие профактура со нарачката, клика на копчето Креирај ја нарачката. По ова се креира нарачка во базата.

Креирање на нарачка
insert into orders (ord_date, ord_sum, ord_fulfillment_date, ord_comment, o_status_id, cust_id, del_id, pf_id)
values (?1,?2,?3,?4,?5,?6,?7,?8)
Се добива нарачката од листа на нарачки за корисникот и се додава нејзиниот примарен клуч за секој тип на одбран артикл
-- За секој одбран артикл се добиваат единките артикли во магацинот и на првите 
select au.unit_id as id,
                           au.unit_expiration_date as expiryDate,
                           au.unit_serial_number as serialNo,
                           au.unit_batch_number as batchNo,
                           au.unit_manufacture_date as manufactureDate,
                           au.unit_cost_price as costPrice,
                           a.art_id as artId,
                           au.wh_id as whId,
                           au.ord_id as ordId
                    from article_unit au
                    join unit_price up on au.unit_id = up.unit_id
                    join price p on up.price_id = p.price_id
                    join article a on p.art_id = a.art_id
                    where au.wh_id = ?2 and a.art_id = ?1

-- Според одбраната количина од тој артикл на толку единки ѝм се додава примарниот клуч на новокреираната нарачка
update article_unit
set unit_expiration_date = ?2, unit_serial_number = ?3, unit_batch_number = ?4,unit_manufacture_date = ?5,unit_cost_price = ?6,wh_id = ?7,ord_id = ?8
where unit_id=?1
Доколку корисникот одбрал профактура, се креира профактурата и нејзиниот примарен клуч се додава на нарачката.
insert into pro_forma(pf_deadline, pf_date_created, pf_status_id)
values (?1,?2,?3)
Last modified 7 days ago Last modified on 02/15/25 16:02:02
Note: See TracWiki for help on using the wiki.