Version 4 (modified by 7 days ago) ( diff ) | ,
---|
Креирање на нарачка
Актери
Потрошувач
Чекор 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)