Przejdź do głównej zawartości

Zamykanie spraw podrzędnych

Zamykanie zadań podrzędnych gdy zamykane jest zadanie główne

Dział zatytułowany „Zamykanie zadań podrzędnych gdy zamykane jest zadanie główne”

Gdy mamy sprawę oraz sprawy podrzędne np zadanie i podzadania, częstym pytaniem jest „Jak zamknąć sprawy podrzędne gdy zamykamy sprawę główną?”

Założenia dla przykładu

  • Istnieją dwa procesy np Projekty oraz Zadania.
  • Z poziomu sprawy w procesie Projekty tworzymy wiele spraw w procesie Zadania i sprawy te są powiązane ze sprawą w procesie Projekty
  • Z poziomu sprawy w procesie Projekty chcemy zamknąć wszystkie powiązane z nią sprawy w procesie Zadania

Rozwiązanie

W procesie Projekty tworzymy regułę ręczną o następującej treści

_cases = FindCase("Zadania","CaseConnectedToCaseId",[CaseId]) ;foreachcase(_cases) {     CloseCase() } / tu wracamy do sprawy głównej i też ją zamykamy */CloseCase()

Zamykanie zadania głównego gdy zostaje zamknięte ostatnie zadanie podrzędne

Dział zatytułowany „Zamykanie zadania głównego gdy zostaje zamknięte ostatnie zadanie podrzędne”

Podobnym zagadnieniem, ale widzianym od strony spraw podrzędnych jest zamknięcie sprawy głównej gdy zostanie zamknięta ostania sprawa podrzędna.

Założenia dla przykładu

  • Istnieją dwa procesy np Projekty oraz Zadania.
  • Z poziomu sprawy w procesie Projekty tworzymy wiele spraw w procesie Zadania i sprawy te są powiązane ze sprawą w procesie Projekty
  • Z poziomu sprawy w procesie Zadania zamykamy pojedyncze zadanie, ale chcemy zamknąć Projekt gdy zostaną zamknięte wszystkie zadania z nim związane

Rozwiązanie

W procesie Zadania tworzymy regułę ręczną o następującej treści

_sprawaGłówna = [CaseConnectedToCaseId];_taSprawa = [CaseId];_zamknąćSprawęGłówna = false;forcase(_sprawaGłówna){   _sprawyPowiązane = FindCase("Zadania","CaseConnectedToCaseId",[CaseId],"OPEN")   if (_sprawyPowiązane == _taSprawa)   {      /* czyli jest tylko ta jedna, ostatnia sprawa do zamknięcia */      _zamknąćSprawęGłówna = true;   }}/* dla zachowania kolejności najpierw zamykamy tę sprawę podrzędną */CloseCase()/* i sprawę główną gdy była to ostatnia sprawa podrzędna do zamknięcia */if (_zamknąćSprawęGłówna == true){   forcase(_sprawaGłówna)   {      CloseCase()   }}