Hi Fabian,
I used this customization on detail_cr_wf.htmpl. When you click on the approval or reject button, the status of the task automatically change, and then you click save.
Take a look on the entire code of my detail_cr_wf.htmpl:
<PDM_IF 0>
detail_iss_wf_ro.htmpl
WHEN PRESENTED:
When we need to display a detail of a single Workflow Task
INTENT:
Display the detail info for the Workflow Task
VARIABLES:
string image The location of the image directory as specified in
in the config file.
object iss_wf args The Workflow Task object we are displaying.
See $NX_ROOT/bopcfg/majic/cm.maj for the
definition of attributes for 'OBJECT iss_wf'
</PDM_IF>
<html lang="pt_BR"><head>
<PDM_PRAGMA RELEASE=110>
<PDM_INCLUDE FILE=styles.htmpl>
<script language="JavaScript">
var hdrTitle = "Detalhes do fluxo de trabalho da solicitação/incidente/problema";
var hdrTitleUpd = "Atualizar fluxo de trabalho da solicitação/incidente/problema";
var hdrTitleNew = "Criar fluxo de trabalho de solicitação/incidente/problema";
</script>
<PDM_INCLUDE FILE=std_head.htmpl >
<script>
var argHumantouchLog = "$args.KEEP.humantouch_log";
var argPersistentID = "$args.persistent_id";
var argCstID = "$cst.id";
var argRefNum = "$args.ref_num";
var argID = "$args.id";
var rptName = new Array("issuesum.rpt", "issuedtl.rpt");
var argSearchSqlClause = "id = $args.id";
var formEnduser = new Array("main_form","requestor");
</script>
<script language="JavaScript" src="$CAisd/scripts/sitemods.js"></script>
<script language="JavaScript" src="$CAisd/scripts/detail_form.js"></script>
<script language="JavaScript" src="$CAisd/scripts/arrow_button.js"></script>
<script language="JavaScript" src="$CAisd/scripts/check_submit.js"></script>
<script language="JavaScript" src="$CAisd/scripts/img_link.js"></script>
<script language="JavaScript" src="$CAisd/scripts/val_type.js"></script>
<script language="JavaScript" src="$CAisd/scripts/attevts.js"></script>
<script language="JavaScript">
argPersistentID = "$args.persistent_id";
function unloadActions()
{
if ( _dtl.edit )
unload_check();
}
//Customizado
function z_salvaStatusSolesp()
{
if("$args.KEEP.status_code" =="APP")
{
document.main_form.elements['SET.status'].value='APP';
//document.main_form.submit();
}
else if("$args.KEEP.status_code" =="REJ")
document.main_form.elements['SET.status'].value='REJ';
document.main_form.elements['SET.description'].focus();
}
function z_defineStatus(status)
{
var frm = document.forms["zSolespForm"];
frm.elements["KEEP.status_code"].value = status;
document.zSolespForm.submit();
}
</script>
</head>
<!-- Customizado -->
<PDM_IF "$args.KEEP.aprovado" == "1" && "$prop.form_name_3" == "edit">
<body class="detailro" onload="z_salvaStatusSolesp()" onunload="unloadActions()">
<PDM_ELSE>
<body class="detailro" onunload="unloadActions()">
</PDM_IF>
<PDM_INCLUDE FILE=std_body.htmpl filename="Fluxo de trabalho da solicitação">
<center>
<!-- Customizado -->
<PDM_IF "$prop.form_name_3" != "edit">
<FORM NAME="zSolespForm">
<INPUT TYPE=HIDDEN NAME=OP VALUE=UPDATE>
<INPUT TYPE=HIDDEN NAME=FACTORY VALUE=cr_wf>
<INPUT TYPE=HIDDEN NAME=PERSID VALUE="$args.persistent_id">
<INPUT TYPE=HIDDEN NAME=KEEP.aprovado VALUE="1">
<input TYPE=HIDDEN NAME=DESCRIPTION>
<input TYPE=HIDDEN NAME=KEEP.status_code>
<INPUT TYPE=HIDDEN NAME=NEXT_PERSID VALUE="$args.persistent_id">
<INPUT TYPE=HIDDEN NAME=SET.id VALUE="$args.id">
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
docWriteln('<INPUT TYPE=HIDDEN NAME=SID VALUE='+cfgSID+'>');
docWriteln('<INPUT TYPE=HIDDEN NAME=FID VALUE='+cfgFID+'>');
//document.write("<INPUT TYPE=HIDDEN NAME=KEEP.aprovadkko VALUE=\"0\">");
</SCRIPT>
</FORM>
</PDM_IF>
<input type="hidden" name="FACTORY" value="cr_wf">
<PDM_IF "$prop.form_name_3" == "edit">
<input type="hidden" name="OP" value="UPDATE">
<PDM_IF 0 == $args.id>
<SPAN class="labeltext">Você não tem permissão para criar um fluxo de trabalho</SPAN>
<PDM_ELSE>
<PDM_IF $args.id>
<input type="hidden" name="SET.id" value="$args.id">
</PDM_IF>
</PDM_IF>
</PDM_IF>
<script language="JavaScript">
<PDM_MACRO name=dtlForm button=false factory=cr_wf>
<PDM_IF "$prop.form_name_3" == "edit">
<PDM_MACRO name=btnStartRow>
<PDM_MACRO name=button Caption="Salvar[S]" Func="detailSave()" hotkey_name="Save[S]" ID=btn001 Width=120>
<PDM_MACRO name=button Caption="Cancelar[n]" btnType=negative Func="cancel_update('$prop.form_name_2','$args.id','$args.NEXT_PERSID')" hotkey_name="Cancel[n]" ID=btncncl Width=120>
<PDM_MACRO name=button Caption="Redefinir[R]" Func="pdm_reset()" hotkey_name="Reset[R]" ID=btn003 Width=120>
<PDM_MACRO name=btnEndRow>
</PDM_IF>
</script>
<PDM_IF "$prop.form_name_3" == "ro">
<script type="text/javascript">
<PDM_MACRO name=btnStartRow>
//Customizado - Cria botões
function allow_wf_edit() {
if ("$args.status.allow_task_update" == "1") {
return true;
}
if ("$args.status.task_complete" == "1" && reopen_id != 0) {
var has_reopen = false;
<PDM_LIST SOURCE=args.behavior_templates PREFIX=list WHERE=" " FACTORY=bhvtpl>
if($list.context_attrval==reopen_id) { has_reopen=true; }
</PDM_LIST>
if (has_reopen) {
return true;
}
}
return false;
}
if (allow_wf_edit() && "$args.status.code" != "WAIT" && "$args.status.code" != "REOPWAIT" && cfgMOPreviewMode == 0)
{
var fieldset = "<td>";
if ( _browser.isIe )
fieldset += "<fieldset>";
else
fieldset += "<fieldset class=firefox_fieldset>";
var legend = "Ações";
docWriteln(fieldset + "<legend class=button_legend>" + legend + "</legend>");
<PDM_MACRO name=btnStartRow>
<PDM_MACRO name=button Caption="Aprovar" Func="z_defineStatus('APP');" hotkey_name="APR" ID="APRSOLESP" Tooltip="Aprovar SOLESP">
<PDM_MACRO name=button Caption="Rejeitar" Func="z_defineStatus('REJ');" hotkey_name="REJ" ID="REJSOLESP" Tooltip="Rejeitar SOLESP">
docWriteln("</fieldset></td></tr></table>");
}
</script>
<PDM_IF $UserAuth \> 1>
<PDM_FORM NAME="frmDTLRO">
<input type="hidden" name="FACTORY" value="cr_wf">
<input type="hidden" name="SET.id" value="$args.id">
<input type="hidden" name="OP">
<script language="JavaScript">
if (allow_wf_edit()) {
var fieldset = "<td>";
if ( _browser.isIe )
fieldset += "<fieldset>";
else
fieldset += "<fieldset class=firefox_fieldset>";
var legend = "Ações";
docWriteln(fieldset + "<legend class=button_legend>" + legend + "</legend>");
<PDM_MACRO name=btnStartRow>
<PDM_MACRO name=button Caption="Aprovar" Func="z_defineStatus('APP');" hotkey_name="APR" ID="APRSOLESP" Tooltip="Aprovar SOLESP">
<PDM_MACRO name=button Caption="Rejeitar" Func="z_defineStatus('REJ');" hotkey_name="REJ" ID="REJSOLESP" Tooltip="Rejeitar SOLESP">
docWriteln("</fieldset></td></tr></table>");
}
</script>
</PDM_FORM>
</PDM_IF>
<script language="JavaScript">
<PDM_MACRO name=button Caption="Histórico de eventos" Func="show_evt('cr_wf', 'atev', $args.id)" hotkey_name="Event History" ID=SHOW_EVT_HISTORY Width=120>
<PDM_MACRO name=btnEndRow>
</script>
</PDM_IF>
<script>
<PDM_MACRO name=dtlStart>
<PDM_MACRO name=dtlStartRow>
<PDM_MACRO name=dtlReadonly hdr="Tarefa" attr=task.sym>
<PDM_MACRO name=dtlLookup hdr="Concluída por" attr=done_by colspan=2>
<PDM_MACRO name=dtlDate hdr="Data de conclusão real" attr=completion_date>
<PDM_MACRO name=dtlStartRow>
<PDM_MACRO name=dtlReadonly hdr="Sequência" attr=sequence>
<PDM_MACRO name=dtlStartExpRow label="Informações do chamado" colspan="5" exp_rows="1,2,3,4" form_name="detail_cr_wf">
<PDM_MACRO name=dtlStartRow>
<PDM_IF "$prop.form_name_3" == "edit">
<PDM_MACRO name=dtlReadonly hdr="Status" attr=status colspan=2>
<PDM_MACRO name=dtlStartRow>
detailRowHdr("Status", 1 , "$args.REQUIRED_status");
var item = '<PDM_SELECT NAME=SET.status ESC_STYLE=HTML FACTORY=tskstat WF_FAC_FOR_TSKSTAT=wf SELECTED="$args.status" SELECTED_SYM="$args.status.COMMON_NAME">';
var ins_pos = item.indexOf("NAME=");
if (ins_pos > 0)
{
_dtl.tabIndex++;
item = item.substring(0, ins_pos) + " tabindex=" + _dtl.tabIndex + " " + item.substring(ins_pos, item.length);
}
detailSetRowData(item);
<PDM_MACRO name=dtlReadonly hdr="Nº da solicitação" attr=cr.ref_num>
<PDM_ELSE>
<PDM_MACRO name=dtlStartRow>
<PDM_MACRO name=dtlLookupReadonly hdr="Nº da solicitação" attr=cr>
<PDM_MACRO name=dtlReadonly hdr="Usuário solicitante" attr="cr.customer.combo_name" colspan="2">
<PDM_MACRO name=dtlStartRow>
<PDM_MACRO name=dtlReadonly hdr="Categoria" attr=cr.category.sym colspan=4>
<PDM_MACRO name=dtlStartRow>
<PDM_MACRO name=dtlReadonly hdr="Descrição do chamado" attr=cr.description colspan=4>
</PDM_IF>
<PDM_MACRO name=dtlStartRow>
<PDM_MACRO name=dtlTextbox hdr="Comentário adicional" attr=description colspan=4 keeplinks=yes rows=4 size=70 spellchk=yes>
<PDM_MACRO name=dtlEndTable>
</script>
<PDM_MACRO name=dtlEnd>
<PDM_MACRO name=startNotebook hdr=wf_nb>
<PDM_INCLUDE FILE=std_footer.htmpl>
</body>
</html>
<PDM_WSP>