O objetivo deste post é exemplificar como definir o responsável por uma atividade via Ponto de Entrada, onde iremos considerar informações do formulário para decidir quem será o responsável, como por exemplo uma autorização de compras.

No formulário teremos o campo txtValor.
No sistema teremos os usuários [email protected], [email protected] e [email protected]
Ao salvar e enviar a atividade de processo, “Solicitação de Compra”, deverá ser enviada para a atividade “Análise da solicitação”, se o valor for abaixo de 100,00 deverá ser analisado pela pessoa1, caso seja entre 100,00 e 1.000,00 será analisado pela pessoa2, e acima de 1.000,00 será analisado pela pessoa3.

No PHP, vamos criar uma classe específica para esta customização em [Diretório Next BP]/webservice/especificos/Analise_Solicitacao_Compra.php

Nesta classe vamos declarar a função “definir_aprovador” que será posteriormente chamada por um ponto de entrada. Vamos utilizar esta mesma classe para definir constantes com o id de cada atividade do processo, para identificarmos se a atividade que está sendo salva e enviada é a “Solicitação de Compra”.

<?php
use \Sys\Basic;

class Analise_Solicitacao_Compra {

    // para descobrir o ID da atividade realize um select na tabela processo_atividade
    const ANALISE_SOLICITACAO_COMPRA_ID_ATIVIDADE_ANALISE = 62;

    public static function definir_aprovador(&$solicitacao_atividade_model) {
        
        // verifico se a atividade que está sendo iniciada é a atividade de análise
        if ($solicitacao_atividade_model->processo_atividade_id == self::ANALISE_SOLICITACAO_COMPRA_ID_ATIVIDADE_ANALISE) {
            
            // obtenho valor do campo do formulário
            $txtValor = \Sys\Util::valor_campo_formulario($solicitacao_atividade_model->formulario, 'txtValor');

            // instancio o DAO de usuário
            $usuario_dao = Basic::LoadDAO('Usuario', true);

            // verifico os valores para definir quem é o responsável
            if ($txtValor <= 100) {
                $solicitacao_atividade_model->responsavel_id = $usuario_dao->popular_por_email('[email protected]')->id;
            }
            else if ($txtValor > 100 && $txtValor <= 1000) {
                $solicitacao_atividade_model->responsavel_id = $usuario_dao->popular_por_email('[email protected]')->id;
            }
            else if ($txtValor > 1000) {
                $solicitacao_atividade_model->responsavel_id = $usuario_dao->popular_por_email('[email protected]')->id;
            }

        }

    }

}

Após criar a classe acima, vamos editar o ponto de entrada [Diretório Next BP]/webservice/pe/Solicitacao_Atividade_Nova.pe.php, caso ele ainda não exista renomeie o arquivo Solicitacao_Atividade_Nova.pe.php.sample. Para mais informações sobre pontos de entrada leia nosso manual.

No ponto de entrada vamos adicionar o “require” de nossa classe e a chamada da função definir_aprovador.

<?php require_once 'especificos/Analise_Solicitacao_Compra.php'; function solicitacao_atividade_nova_antes($solicitacao_atividade_model) { // ação antes de criar a nova atividade // $solicitacao_atividade_model->observacoes = 'Exemplo PE solicitacao_atividade_nova_antes';

    Analise_Solicitacao_Compra::definir_aprovador($solicitacao_atividade_model);
};

function solicitacao_atividade_nova_depois($solicitacao_atividade_model) {
    // ação depois de salvar
    // print_r($solicitacao_atividade_model);
};

Para sucesso do código acima, é fundamental definir permissão de leitura ou edição na atividade “Análise da solicitação”, caso contrário não conseguiremos obter o txtValor informado anteriormente na atividade “Solicitação de Compra”.