/**
 * afterProcessFinish.js — Exemplo: Workflow Aprovacao de Compras
 * 
 * Executa quando o processo e finalizado (chegou ao fim).
 * Uso: marcar situacao final, gravar data/hora de encerramento.
 * 
 * @param {string} processId - ID do processo finalizado
 */
function afterProcessFinish(processId) {
    hAPI.setCardValue("situacaoSolic", "Finalizado");
    hAPI.setCardValue("dtFimSolic", fnBuscarDataHora("data"));
    hAPI.setCardValue("hrFimSolic", fnBuscarDataHora("hora"));

    // Data em formato EN para ordenacao
    var dataFim = fnBuscarDataHora("data");
    var partes = dataFim.split("/");
    hAPI.setCardValue("dtFimSolic_EN", partes[2] + "-" + partes[1] + "-" + partes[0]);

    log.info("afterProcessFinish - Processo " + processId + " finalizado.");
}

/**
 * afterCancelProcess.js — Exemplo: Workflow Aprovacao de Compras
 * 
 * Executa quando o processo e cancelado por um usuario.
 * 
 * @param {string} colleagueId - Login de quem cancelou
 * @param {string} processId - ID do processo cancelado
 */
function afterCancelProcess(colleagueId, processId) {
    hAPI.setCardValue("situacaoSolic", "Cancelado");
    hAPI.setCardValue("dtFimSolic", fnBuscarDataHora("data"));
    hAPI.setCardValue("hrFimSolic", fnBuscarDataHora("hora"));
    hAPI.setCardValue("userCancelamento", colleagueId);

    log.info("afterCancelProcess - Processo " + processId + " cancelado por " + colleagueId);
}

/**
 * Helper: busca data ou hora atual do servidor
 */
function fnBuscarDataHora(tipo) {
    var agora = new java.util.Date();
    var formato;
    if (tipo == "data") {
        formato = new java.text.SimpleDateFormat("dd/MM/yyyy");
    } else {
        formato = new java.text.SimpleDateFormat("HH:mm");
    }
    return formato.format(agora);
}
