Manuais
PHC GO Como codificar tarefas para não gerar tarefas repetidas
 
Se o seu Add-on possui código para gerar Tarefas, existe a probabilidade desses registos ficarem repetidos com outros registos já existentes, o que é uma situação pouco agradável, pois para além de aumentar o ruído visual no painel das tarefas, com o tempo pode tornar-se confuso devido ao número elevado de registos repetidos.

Para responder a esta situação a Framework do PHC GO tem a possibilidade de definir via código se as tarefas criadas devem ser criadas repetidas ou não.

Assim, existe um campo Code (*) na entidade das Tarefas, que não tem representação gráfica no ecrã (apenas visível via SQL) e foram incorporadas duas funções no SDK:

    GetTaskByCode - esta função recebe o código para verificar se já existe alguma tarefa com um determinado código.

    CreateTaskByAddon - esta função recebe a tarefa e um booleano (true/false) se podemos ou não criar tarefas repetidas. Por defeito está sempre com o valor a false.
sticky_note_2Notas

(*) o campo Code serve para o developer definir um código de identificação único de uma tarefa, de forma a não se repetir com o código de outras tarefas. Se existirem tarefas com o mesmo código pode haver o risco de não serem apresentadas em simultâneo.
Mas, nada melhor do que mostrar alguns exemplos práticos que passamos a descrever:

Exemplo 1 - Código para criar tarefa via SDK validando sempre que a tarefa existe

Objetivo: Com o seguinte código estamos a criar uma tarefa, usando a função CreateTaskByAddon no SDK. Esta função aceita dois parâmetros, a tarefa que está a ser criada e o booleano se podemos ou não criar tarefas repetidas. Como podemos ver no exemplo abaixo estamos a passar o itemTaskVO que é a tarefa que estamos a criar e o valor False, ou seja, não podemos criar tarefas repetidas pelo que sempre que corremos este código só vamos atualizar a informação da tarefa existente com esse código.

Dim itemTaskVO As TasksVO = GenericVO.GetNewInstance(Of TasksVO)

itemTaskVO.summary = "Tarefa 1"
itemTaskVO.startdate = Utils.Dates.TimeZoneDate
itemTaskVO.enddate = Utils.Dates.TimeZoneDate
itemTaskVO.whocreated = appManagement.UserInfo.userStamp
itemTaskVO.description = "Descrição da tarefa 1"
itemTaskVO.code = "CODE_Tarefa1"

Dim itemTaskConnections As TaskConnectionsVO = GenericVO.GetNewInstance(Of TaskConnectionsVO)()
itemTaskConnections.tasksstamp = itemTaskVO.tasksstamp
itemTaskConnections.ParentVO = itemTaskVO
itemTaskConnections.summaryentity = "Vai alterando a descrição da ligação"
itemTaskVO.tc.Add(itemTaskConnections)

SDK.TASKS.CreateTaskByAddon(itemTaskVO, False)


Exemplo 2 - Código para criar tarefa save direto no biz não validando que a tarefa existe

Objetivo: Com o seguinte código estamos a criar uma tarefa, usando a função CreateTaskByAddon no SDK. Esta função aceita dois parâmetros, a tarefa que está a ser criada e o booleano se podemos ou não criar tarefas repetidas. No exemplo abaixo estamos a passar o itemTaskVO que é a tarefa que estamos a criar e o valor True, ou seja, podemos criar tarefas repetidas pelo que sempre que corremos este código vamos estar a criar uma tarefa nova.

Dim itemTaskVO As TasksVO = GenericVO.GetNewInstance(Of TasksVO)

itemTaskVO.summary = "Tarefa 2"
itemTaskVO.startdate = Utils.Dates.TimeZoneDate
itemTaskVO.enddate = Utils.Dates.TimeZoneDate
itemTaskVO.whocreated = appManagement.UserInfo.userStamp
itemTaskVO.description = "Descrição da tarefa 2"
itemTaskVO.code = "CODE_Tarefa2"

Dim itemTaskConnections As TaskConnectionsVO = GenericVO.GetNewInstance(Of TaskConnectionsVO)()
itemTaskConnections.tasksstamp = itemTaskVO.tasksstamp
itemTaskConnections.ParentVO = itemTaskVO
itemTaskConnections.summaryentity = "Vai alterando a descrição da ligação"
itemTaskVO.tc.Add(itemTaskConnections)

SDK.TASKS.CreateTaskByAddon(itemTaskVO, True)


Exemplo 3 - Código para para validar se já existe uma tarefa com um determinado código

Vamos usar como exemplo um código de uma tarefa criada anteriormente.
Esta função retorna a tarefa que contenha esse código.

return SDK.Tasks.GetTaskByCode("CODE_Tarefa2")