Nyitóképernyő (start_modul) statisztikái és az onnan elérhető modulok alapvető lekérdezései
A funkciók eléréséhez szükséges, hogy a felhasználóhoz "külső felhasználó" (
ukk.outer_person
rekord) tartozzon,
valamint tagja legyen az
ukk_user
[[UkkGroups][csoport]nak. Ettől való eltérést alább jelezzük.
Felvitel (utalványcsomagok)
Csak azon utalvány-csomagokat (
ukk.voucher_pack
)listázzuk, amelyek a kérésen (
ukk.request_offer
) keresztül az adott személyhez tartozik.
Alapja:
voucher_pack AS (
SELECT
count(*)
FROM ukk.simplelist_voucher_pack(now()) AS vp
JOIN ukk.simplelist_request_offer(now()) AS ro
ON (ro.demand_voucher_pack_id = vp.eid AND ro.outer_person_id = 111)
),
Befejezetlen utalványcsomagok (draft_pack
, fail_pack
)
A személy mindazon utalvány-csomagjai számítanak ide, amelyeknek az állapota piszkozat vagy hibás.
A felületen a szám háttere sárga. Amennyiben van benne hibás, úgy bordó!
count(vp.status = 'draft' OR NULL) AS draft_pack,
count(vp.status = 'fail' OR NULL) AS fail_pack,
Listázása:
WITH
voucher_pack AS (
SELECT
pvt.voucher_pack_id AS eid,
vp.description,
sum(coalesce(pvt.par,0)) AS par
FROM ukk.simplelist_pack_voucher_type() AS pvt
JOIN ukk.simplelist_voucher_pack(now()) AS vp
ON (vp.eid = pvt.voucher_pack_id)
WHERE pvt.status != 'deleted'
GROUP BY pvt.voucher_pack_id, vp.description
) -- voucher_pack
SELECT
to_char(vp.creation_time, 'YYYY-MM-DD HH:MI') as voucher_pack_date,
vp.description,
vp.eid as voucher_pack_id,
'VP' || to_char(vp.eid,'FM0999999999') AS name,
vpar.par
FROM ukk.simplelist_voucher_pack(now()) AS vp
JOIN ukk.simplelist_request_offer(now()) AS ro
ON (ro.demand_voucher_pack_id = vp.eid)
JOIN ukk.simplelist_outer_person() AS op
ON (ro.outer_person_id = op.eid AND op.person_id = 17)
JOIN voucher_pack AS vpar
ON (vpar.eid = vp.eid)
WHERE vp.status = 'draft'
OR vp.status = 'fail';
Ellenőrzött utalványcsomagok (right_pack
)
A helyes (ellenőrzött) utalványcsomagok tartornak ide, amelyekhez kérés még nem készült,
azaz mindazon (saját) csomagok, melyek állapota aktív és a kérés állapota piszkozat.
A felületen a szám háttere zöld.
count((vp.status = 'active' AND ro.status = 'draft') OR NULL) AS right_pack,
Listázása:
WITH
voucher_pack AS (
SELECT
pvt.voucher_pack_id AS eid,
vp.description,
sum(coalesce(pvt.par,0)) AS par
FROM ukk.simplelist_pack_voucher_type() AS pvt
JOIN ukk.simplelist_voucher_pack(now()) AS vp
ON (vp.eid = pvt.voucher_pack_id)
WHERE pvt.status != 'deleted'
GROUP BY pvt.voucher_pack_id, vp.description
) -- voucher_pack
SELECT
to_char(vp.creation_time, 'YYYY-MM-DD HH:MI') as voucher_pack_date,
vp.description,
vp.eid as voucher_pack_id,
'VP' || to_char(vp.eid,'FM0999999999') AS name,
vpar.par
FROM ukk.simplelist_voucher_pack(now()) AS vp
JOIN ukk.simplelist_request_offer(now()) AS ro
ON (ro.demand_voucher_pack_id = vp.eid)
JOIN ukk.simplelist_outer_person() AS op
ON (ro.outer_person_id = op.eid AND op.person_id = 17)
JOIN voucher_pack AS vpar
ON (vpar.eid = vp.eid)
WHERE vp.status = 'active'
AND ro.status = 'draft';
Archívum (archive_pack
)
Az összes lezárt és törölt ajánlatkéréshez tartozó (saját) csomag listája.
A felületen a szám háttere kék.
count(ro.status = 'closed' OR ro.status = 'deleted' OR NULL) AS archive_pack,
Listázása:
WITH
voucher_pack AS (
SELECT
pvt.voucher_pack_id AS eid,
vp.description,
sum(coalesce(pvt.par,0)) AS par
FROM ukk.simplelist_pack_voucher_type() AS pvt
JOIN ukk.simplelist_voucher_pack(now()) AS vp
ON (vp.eid = pvt.voucher_pack_id)
WHERE pvt.status != 'deleted'
GROUP BY pvt.voucher_pack_id, vp.description
) -- voucher_pack
SELECT
to_char(vp.creation_time, 'YYYY-MM-DD HH:MI') as voucher_pack_date,
vp.description,
vp.eid as voucher_pack_id,
'VP' || to_char(vp.eid,'FM0999999999') AS name,
vpar.par, ro.status, ro.status, vp.status
FROM ukk.simplelist_voucher_pack(now()) AS vp
JOIN ukk.simplelist_request_offer(now()) AS ro
ON (ro.demand_voucher_pack_id = vp.eid)
JOIN ukk.simplelist_outer_person() AS op
ON (ro.outer_person_id = op.eid AND op.person_id = 17)
LEFT JOIN voucher_pack AS vpar
ON (vpar.eid = vp.eid)
WHERE ro.status = 'closed'
OR ro.status = 'deleted';
Ajánlatkérés
Az összes (saját) ajánlatkérés (
ukk.request_offer
) listája, a hozzá tartozó ajánlatok (
ukk.bid
) állapotának aggregációjával.
Alapja:
request_offer AS (
SELECT
count(*)
FROM
( SELECT
ro.status,
ro.modification_time,
array_agg(bid.status) AS bid_statuses
FROM ukk.simplelist_request_offer(now()) AS ro
LEFT JOIN ukk.simplelist_bid(now()) AS bid
ON (bid.request_offer_id = ro.eid)
WHERE ro.outer_person_id = 111
-- AND ro.status = 'active'
GROUP BY ro.eid, ro.status, ro.modification_time
) AS roff
),
Ajánlat nélküli kérések (unbidden_offer
)
Mindazon aktív kérések, amelyekhez nem tartozik aktív ajánlat (tehát törölt és elutasított tartozhat hozzá).
A felületen a szám háttere sárga.
count((roff.status = 'active' AND NOT(ARRAY['active']::varchar[] <@ roff.bid_statuses)) OR NULL) AS unbidden_offer,
Listázása:
SELECT
ro.request_offer_date,
ro.description,
request_offer_id,
'RO' || to_char(ro.eid,'FM0999999999') AS name,
par, -- névérték
voucher_pack_id, -- kéréshez tartozó csomag azonosítója
count_new_active_bid, -- kéréshez tartozó új aktív ajánlatok száma
count_old_active_bid, -- kéréshez tartozó régebbiŕ aktív ajánlatok száma
count_bid -- kéréshez tartozó ajánlatok száma
FROM ukk.speciallist_request_offer( 17, 24*60, 3, now() ) AS ro
WHERE ro.status = 'active'
AND NOT ro.has_active_bid;
Nyitott kérések (old_active_offer
, new_active_offer
).
Mindazon aktív kérések, amelyekhez tartozik aktív ajánlat.
Megkülönböztetjük az újabb (new_active_offer) és a hamarosan lejáró (old_active_offer) kéréseket.
A felületen a szám háttere zöld. Amennyiben van benne hamarosan lejáró kérés, úgy bordó!
count((roff.status = 'active' AND roff.modification_time + 222 * interval '1 minutes' <= now() AND ARRAY['active']::varchar[] <@ roff.bid_statuses OR NULL)) AS old_active_offer,
count((roff.status = 'active' AND roff.modification_time + 222 * interval '1 minutes' > now() AND ARRAY['active']::varchar[] <@ roff.bid_statuses OR NULL)) AS new_active_offer,
Listázása:
SELECT
ro.request_offer_date,
ro.description,
request_offer_id,
'RO' || to_char(ro.eid,'FM0999999999') AS name,
par, -- névérték
voucher_pack_id, -- kéréshez tartozó csomag azonosítója
count_new_active_bid, -- kéréshez tartozó új aktív ajánlatok száma
count_old_active_bid, -- kéréshez tartozó régebbiŕ aktív ajánlatok száma
count_bid -- kéréshez tartozó ajánlatok száma
FROM ukk.speciallist_request_offer( 17, 24*60, 3, now() ) AS ro
WHERE ro.status = 'active'
AND ro.has_active_bid;
Lezárt ajánlatkérések (closed_offer
).
Az elfogadott ÉS lezárt ajánlattal rendelkező, lezárt állapotú ajánlatkérések.
A felületen a szám háttere kék.
count((roff.status = 'closed' AND ARRAY['closed']::varchar[] <@ roff.bid_statuses) OR NULL) AS closed_offer
Listázása:
SELECT
ro.request_offer_date,
ro.description,
request_offer_id,
'RO' || to_char(ro.eid,'FM0999999999') AS name,
par, -- névérték
voucher_pack_id, -- kéréshez tartozó csomag azonosítója
count_new_active_bid, -- kéréshez tartozó új aktív ajánlatok száma
count_old_active_bid, -- kéréshez tartozó régebbiŕ aktív ajánlatok száma
count_bid -- kéréshez tartozó ajánlatok száma
FROM ukk.speciallist_request_offer( 17, 24*60, 3, now() ) AS ro
WHERE ro.status = 'closed'
AND has_closed_bid;
Ajánlat kezelés
A saját kéréseimre érkező összes ajánlat listázása.
Alapja:
bid AS (
SELECT
count(*)
FROM ukk.simplelist_bid(now()) AS bid
JOIN ukk.simplelist_request_offer(now()) AS ro
ON (ro.eid = bid.request_offer_id AND ro.outer_person_id = 1)
),
Nyitott kérésekre kapott ajánlatok (old_open_bid
, new_open_bid
).
A számláló a nyitott (elfogadott ajánlattal nem rendelkező, aktív) kérésekre érkezett ajánlatok számát tartalmazza.
A számláló NEM tartalmazza a hamarosan lejáró nyitott kérések ajánlatait!
Új ajánlatnak tekintjük a konfigurációban beállított értéknél nem régebbi aktív ajánlatokat.
A felületen a szám háttere sárga. Amennyiben van új ajánlat, úgy bordó!
count((bid.status = 'active' AND ro.modification_time + 222 * interval '1 minutes' <= now()) OR NULL) AS old_open_bid,
count((bid.status = 'active' AND ro.modification_time + 222 * interval '1 minutes' > now()) OR NULL) AS new_open_bid,
Listázása:
SELECT
ro.request_offer_date,
ro.description,
request_offer_id,
'RO' || to_char(ro.eid,'FM0999999999') AS name,
par, -- névérték
voucher_pack_id, -- kéréshez tartozó csomag azonosítója
count_new_active_bid, -- kéréshez tartozó új aktív ajánlatok száma
count_old_active_bid, -- kéréshez tartozó régebbiŕ aktív ajánlatok száma
count_bid -- kéréshez tartozó ajánlatok száma
FROM ukk.speciallist_request_offer( 17, 24*60, 3, now() ) AS ro
WHERE ro.status = 'active'
AND has_active_bid
AND NOT is_warning_time;
Hamarosan lejáró kérésekre kapott ajánlatok (old_urgent_bid
, new_urgent_bid
).
A számláló a hamarosan lejáró (X napnál régebbi kérésekhez tartozó) nyitott (elfogadott ajánlattal nem rendelkező, aktív) (saját) kérésekre érkezett ajánlatok számát tartalmazza.
Megkülönböztetjük az újabb (new_urgent_bid) és a hamarosan lejáró (old_urgent_bid) kéréseket.
A felületen a szám háttere zöld. Amennyiben van új ajánlat, úgy bordó!
count((ro.modification_time + _WarningLimit * interval '1 day' <= _WhenTime AND bid.status = 'active' AND ro.modification_time + _NewLimit * interval '1 minutes' <= _WhenTime) OR NULL) AS old_urgent_bid,
count((ro.modification_time + _WarningLimit * interval '1 day' <= _WhenTime AND bid.status = 'active' AND ro.modification_time + _NewLimit * interval '1 minutes' > _WhenTime) OR NULL) AS new_urgent_bid,
Listázása:
SELECT
ro.request_offer_date,
ro.description,
request_offer_id,
'RO' || to_char(ro.eid,'FM0999999999') AS name,
par, -- névérték
voucher_pack_id, -- kéréshez tartozó csomag azonosítója
count_new_active_bid, -- kéréshez tartozó új aktív ajánlatok száma
count_old_active_bid, -- kéréshez tartozó régebbiŕ aktív ajánlatok száma
count_bid -- kéréshez tartozó ajánlatok száma
FROM ukk.speciallist_request_offer( 17, 24*60, 3, now() ) AS ro
WHERE ro.status = 'active'
AND has_active_bid
AND is_warning_time;
Folyamatban lévő ügyletek (done_ongoing_bid
, waiting_ongoing_bid
).
Az aktív állapotú (saját) kérésekhez tartozó,
elfogadott
állapotú ajánlatok száma.
A felületen a szám háttere kék.
count(ro.status = 'closed' AND bid.status = 'accepted' OR NULL) AS done_ongoing_bid,
count(ro.status = 'active' AND bid.status = ANY(ARRAY['accepted','closed']) OR NULL) AS waiting_ongoing_bid,
Listázása:
SELECT
ro.request_offer_date,
ro.description,
request_offer_id,
'RO' || to_char(ro.eid,'FM0999999999') AS name,
par, -- névérték
voucher_pack_id, -- kéréshez tartozó csomag azonosítója
count_new_active_bid, -- kéréshez tartozó új aktív ajánlatok száma
count_old_active_bid, -- kéréshez tartozó régebbiŕ aktív ajánlatok száma
count_bid -- kéréshez tartozó ajánlatok száma
FROM ukk.speciallist_request_offer( 17, 24*60, 3, now() ) AS ro
WHERE ( ro.status = 'closed' AND has_accepted_bid )
OR ( ro.status = 'active' AND ( has_accepted_bid OR has_closed_bid ));
Ajánlatadás
A saját ajánlatok kezelése (speciális jogkör szükséges:
ukk_member
csoport).
Alapja:
WITH
request_offer AS (
SELECT
ro.eid,
ro.status,
coalesce(ro.modification_time, ro.creation_time) AS request_time
FROM ukk.simplelist_request_offer(_WhenTime) AS ro
WHERE ro.status = ANY(ARRAY['active','closed'])
AND ro.outer_person_id != myOuterPersonID
), -- request_offer
bid AS (
SELECT
bid.request_offer_id,
cast(count(bid.status = ANY(ARRAY['active','accepted','closed']) OR NULL) AS integer) AS count_bid,
cast(count((bid.outer_person_id = myOuterPersonID AND bid.status = 'rejected') OR NULL) AS integer) AS count_my_rejected_bid,
max(coalesce(bid.modification_time, bid.creation_time)) AS bid_last_modification_time,
array_agg(DISTINCT bid.status ORDER BY bid.status) As bid_statuses
FROM ukk.simplelist_bid(_WhenTime) AS bid
WHERE bid.status != 'deleted'
GROUP BY bid.request_offer_id
), -- bid
mybid AS (
SELECT
mybid.eid,
mybid.status,
mybid.request_offer_id
FROM ukk.simplelist_bid(_WhenTime) AS mybid
WHERE mybid.outer_person_id = myOuterPersonID
AND mybid.status = ANY(ARRAY['active','acceptedŕ'])
) -- mybid
SELECT
count(*)
FROM request_offer AS ro
LEFT JOIN mybid AS mybid
ON (mybid.request_offer_id = ro.eid)
LEFT JOIN bid AS bid
ON (bid.request_offer_id = ro.eid)
Ajánlatra váró kérések (old_biddable_offer
, new_biddable_offer
).
Mindazon kérések száma, amelyek nyitottak (és NEM folyamatban lévőek) és nincs rá aktív ajánlatom.
Új kérés mindezeken belül, ha Y percnél újabb.
A felületen a szám háttere sárga. Amennyiben van benne nyitott kérés, úgy bordó!
count((ro.request_time + _NewLimit * interval '1 minutes' <= _WhenTime AND ro.status = 'active' AND mybid.status IS NULL AND (bid.bid_statuses IS NULL OR NOT cast(ARRAY['accepted'] AS varchar[]) <@ bid.bid_statuses)) OR NULL) AS old_biddable_offer,
count((ro.request_time + _NewLimit * interval '1 minutes' > _WhenTime AND ro.status = 'active' AND mybid.status IS NULL AND (bid.bid_statuses IS NULL OR NOT cast(ARRAY['accepted'] AS varchar[]) <@ bid.bid_statuses)) OR NULL) AS new_biddable_offer,
Listázása:
SELECT
ro.request_offer_date,
request_offer_id,
'RO' || to_char(ro.eid,'FM0999999999') AS name,
request_par AS par, -- névérték
voucher_pack_id, -- kéréshez tartozó csomag azonosítója
bid_id,
bid_status,
bid_par
FROM ukk.speciallist_bid( 17, now() ) AS ro
WHERE ro.status = 'active'
AND NOT ro.has_accepted_bid
AND NOT ro.has_closed_bid
AND ro.bid_status != 'active';
Élő ajánlataim (old_pending_bid
, new_pending_bid
).
Mindazon kérések száma, amelyek nyitottak (és NEM folyamatban lévőek) és tartozik hozzá aktív ajánlatom.
A felületen a szám háttere szürke.
count((ro.request_time + _WarningLimit * interval '1 day' > _WhenTime AND ro.status = 'active' AND mybid.status = 'active') OR NULL) AS old_pending_bid,
count((ro.request_time + _WarningLimit * interval '1 day' <= _WhenTime AND ro.status = 'active' AND mybid.status = 'active') OR NULL) AS new_pending_bid,
Listázása:
SELECT
ro.request_offer_date,
request_offer_id,
'RO' || to_char(ro.eid,'FM0999999999') AS name,
request_par AS par, -- névérték
voucher_pack_id, -- kéréshez tartozó csomag azonosítója
bid_id,
bid_status,
bid_par
FROM ukk.speciallist_bid( 17, now() ) AS ro
WHERE ro.status = 'active'
AND NOT ro.has_accepted_bid
AND NOT ro.has_closed_bid
AND ro.bid_status = 'active';
Elfogadott ajánlataim (done_accepted_bid
, waiting_accepted_bid
).
Mindazon kérések száma, amelyek folyamatban lévőek és a felhasználó ajánlata az elfogadott.
A felületen a szám háttere zöld.
count((ro.status = 'active' AND mybid.status = ANY(ARRAY['accepted','closed']) OR NULL) AS done_accepted_bid,
count((ro.status = 'closed' AND mybid.status = 'accepted') OR NULL) AS waiting_accepted_bid,
Listázása:
SELECT
ro.request_offer_date,
request_offer_id,
'RO' || to_char(ro.eid,'FM0999999999') AS name,
request_par AS par, -- névérték
voucher_pack_id, -- kéréshez tartozó csomag azonosítója
bid_id,
bid_status,
bid_par
FROM ukk.speciallist_bid( 17, now() ) AS ro
WHERE ro.bid_status = 'accepted'
OR (ro.status = 'active' AND ro.bid_status = 'closed');
Lezárt ajánlataim (accepted_closed_bid
, rejected_closed_bid
).
Mindazon ajánlatom, amely nem aktív.
A felületen a szám háttere kék.
count((ro.status = 'closed' AND mybid.status = 'closed') OR NULL) AS accepted_closed_bid
Listázása:
SELECT
ro.request_offer_date,
request_offer_id,
'RO' || to_char(ro.eid,'FM0999999999') AS name,
request_par AS par, -- névérték
voucher_pack_id, -- kéréshez tartozó csomag azonosítója
bid_id,
bid_status,
bid_par
FROM ukk.speciallist_bid( 17, now() ) AS ro
WHERE ro.status = 'closed'
AND ro.bid_status = 'closed';
A teljes kérés futtatása
SELECT * FROM ukk.stats_of_request_offer(
17, -- _PersonID integer, -- az aktuális felhasználóhoz tartozó személy azonosítója
24*60, -- _NewLimit integer, -- ennyi percnél újabb kérést tekintünk újnak
3, -- _WarningLimit integer, -- ennyi nap után tekintjük a kérést hamarosan lejárónak
now() -- _WhenTime timestamp with time zone -- a kért időpont
);