= 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_ != '' -- czy dokument JEST dołączony do sprawy i powiązany z innym 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.doc_id WHERE dv.doc_id = {DOC_ID} LIMIT 1 }}} -- 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 typu usr_ids[] SELECT ARRAY(SELECT o.orunid FROM orgtree_view o 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) -- -- P7. Przypisanie osoby zalogowanej SELECT ARRAY(SELECT o.orunid FROM orgtree_view o WHERE o.usr_id = {LOGGED_USR_ID}) }}} == 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 }}} == Zapytania do parametrów Akcji == Tworzenie dokumentu: {{{ Tworzenie wydania z dokumentu przyjęcia dctpid="17",dscrpt="Wydanie zewnętrzne",do="SQL::SELECT orunid FROM orgtree_view WHERE usr_id = {LOGGED_USER}" # tworzenie zamówienia z zapotrzebowania dctpid="41", dscrpt="Zamówienie do:{spller}",map="adddat=crtdat,dlvdat=orddat,acorid=acorid,spadid=spadid,pchaid=pchaid",state_="1" #przepisz pozycje z zapotrzebowania do zamówienia from__="SQL::SELECT doc_id FROM documents WHERE doc_id={DOC_ID}", to____="SQL::SELECT doc_id FROM documents WHERE rel_to={DOC_ID}" # przepisz pozycje z zapotrzebowania do istniejącego zamówienia from__="SQL::SELECT doc_id FROM documents WHERE doc_id={DOC_ID}", to____="{procedures.ZAMÓWIENIE}" # czy pozycje uzupełnione query="SELECT (SUM(CASE WHEN depnam = depsym THEN 1 ELSE 0 END))=0 FROM fk_elements WHERE doc_id={doc_id} AND is_del=FALSE", alert="Popraw pozycje zapotrzebowania", success="Pozycje poprawnie dodane" }}}