Log inRegister
You are here: UtalvanyKK » UkkStart

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
);