| Version 8 (modified by JP, 14 years ago) |
|---|
Przykłady workflow
W tym miejscu publikowane będą przykładowe kwerendy użyteczne przy budowaniu warunków, przekazywaniu parametrów do komend itp.
WARUNKI
-- W1. Sprawdzenie czy jest plik
-- Brak
SELECT NOT EXISTS(
SELECT doc_id FROM attachments WHERE doc_id =
(SELECT doc_id FROM documents WHERE procid = {PROCID}))
-- Jest
SELECT EXISTS(
SELECT doc_id FROM attachments WHERE doc_id =
(SELECT doc_id FROM documents WHERE procid = {PROCID}))
-- W2. Sprawdzenie czy są zamieszczone opinie kierowników
-- pobierane jako parametry z bpm_properties.id____ = 1
-- brak
SELECT count(*) = 0 FROM bpm_property_values
WHERE id____ IN (12,13,14)
AND procid = {PROCID}
AND value_ != ''
-- są
SELECT count(*) > 0 FROM bpm_property_values
WHERE id____ IN (12,13,14)
AND procid = {PROCID}
AND value_ != ''
-- Sprawdzenie czy dokument jest powiązany ze sprawą i dokumentem (zakładka powiązania) SELECT dlp.prc_id IS NOT NULL AND dld.doc_id IS NOT NULL FROM documents_view dv LEFT JOIN doc_link_proc dlp USING(doc_id) LEFT JOIN doc_link_doc dld ON dv.doc_id = dld.rel_to WHERE dv.doc_id = {DOC_ID}
PRZYPISANIA
-- P1. Przypisanie jako osoby tworzącej dokument
SELECT ARRAY[o.orunid] FROM orgtree_view o INNER JOIN documents d ON d.adduid = o.usr_id
WHERE d.procid = {PROCID}
--
-- P2. Przypisanie akceptanta (pobierany z właściwości)
SELECT ARRAY[orunid] FROM organization_units WHERE orunid = {procedures.AKCEPTANT CZŁONEK ZARZĄDU}
--
-- P3. Przypisanie osób które zaakceptowały określony etap (np. 44)
SELECT ARRAY[orunid] FROM stages WHERE ptstid = 44 AND procid = {PROCID}
--
-- P4. Przypisanie osoby odpowiedzialnej ze sprawy
SELECT ARRAY(SELECT o.orunid FROM processes p INNER JOIN orgtree_view o ON p.rspuid = o.usr_id WHERE prc_id = {PRC_ID})
--
-- P5. Przypisanie osób z parametru tablica userów (nie testowane)
SELECT ARRAY(SELECT o.orunid FROM orgtree_view WHERE o.usr_id IN ({procedures.OSOBY}))
--
-- P6. Przypisanie osoby odpowiedzialnej za MPK wpisane w fakturze (do etapu MULTI)
SELECT ARRAY (
SELECT CASE
WHEN x.ndetpe = 'POST' THEN x.orunid
WHEN x.ndetpe = 'ORGCELL' THEN (SELECT o2.orunid FROM orgtree_view o2 WHERE o2.prn_id = x.orunid LIMIT 1) END
FROM
(SELECT DISTINCT mpk.orunid, o.ndetpe FROM vatnote_costs
LEFT JOIN places_of_vcosts AS mpk USING (povcid)
LEFT JOIN orgtree_view AS o ON mpk.orunid = o.orunid
WHERE doc_id = {DOC_ID})
AS x)
KWERENDY DO PARAMETRU SELECT[]
-- Członkowie zarządu
SELECT orunid as value, fullnm || ' - ' || ndenam as caption FROM orgtree_view WHERE orunid IN (3,14,15,16)
== DYNAMICZNE WARTOŚCI PARAMETRÓW KOMEND ==
-- Utwórz komentarz
dscrpt="SQL::SELECT CASE WHEN (SELECT EXISTS(
SELECT value_
FROM bpm_property_values WHERE id____ = 20 AND sop_id = {SOP_ID})) THEN
(SELECT value_
FROM bpm_property_values WHERE id____ = 20 AND sop_id = {SOP_ID})
ELSE 'Bez uwag' END AS result
FROM stages WHERE sop_id = {SOP_ID}"
-- Utwórz przypomnienie w sprawie windykacyjnej
-- dla handlowca
usr_id="SQL::SELECT seller FROM vindication.vind_proc_view WHERE prc_id = {PRC_ID}",
start_="SQL::SELECT fxterm - interval '3 days' FROM vindication.vind_proc_view WHERE prc_id = {PRC_ID}",dscrpt="Uwaga! Za 3 dni mija termin zapłaty za wierzytelność"
--
-- Wszyscy pracownicy
SELECT orunid as value, fullnm || ' - ' || ndenam as caption FROM orgtree_view WHERE ndetpe = 'POST' AND is_del IS FALSE AND usr_id IS NOT NULL
