Ola amigos. Estou com a seguinte duvida, hoje eu tenho um processo de requisição ao armazém Dentro dele listo todos os produtos e informo o centro de custo destino para que o gestor do mesmo aprove. Isso eu já consegui fazer, porem existe mais um detalhe, antes desta verificação tenho que confirmar se nesta lista existe produtos de um determinado grupo "21". Isso serve para que separar estes produtos do grupo "21" e mandar para uma determinada atividade. e os produtos restantes entrar na minha logica e mandar para os gestores. Alguma ideia de como a logica deve ser alterada, estou meio perdido aqui.
function servicetask10(attempt, message) {
log.warn("####### Service TASK 10");
var numProcessoPai = getValue("WKNumProces");
usuarioCorrente = getValue("WKUser");
emailUsuarioCorrente = fluigAPI.getUserService().getCurrent().getEmail();
var servico = ServiceManager.getService("ECMWorkflow");
var serviceHelper = servico.getBean();
var service = serviceHelper.instantiate('WSFluig.ECMWorkflowEngineServiceService');
var request = service.getWorkflowEngineServicePort();
var indexes = hAPI.getChildrenIndexes("table_Produtos");
var total = 0;
var gestores = new java.util.ArrayList();
for (var i = 0; i < indexes.length; i++) {
if(!gestores.contains(hAPI.getCardValue("email_gestor___" + indexes[i]))){
gestores.add(hAPI.getCardValue("email_gestor___" + indexes[i]));
}
}
var iterador = gestores.size();
ObjFactory = serviceHelper.instantiate('WSFluig.ObjectFactory');
var ProcessAttachmentDtoArray = ObjFactory.createProcessAttachmentDtoArray();
var ProcessTaskAppointmentDtoArray = ObjFactory.createProcessTaskAppointmentDtoArray();
for(i = 0; i < iterador; i++) {
var listaColleagueId = '';
var contador = 0;
var email_gestores = gestores.get(i);
var email_gestores_array = email_gestores.split(';');
var colleagueIds = ObjFactory.createStringArray();
for(x = 0; x < email_gestores_array.length; x++) {
var c1 = DatasetFactory.createConstraint("mail", email_gestores_array[x], email_gestores_array[x], ConstraintType.MUST);
var constraints = new Array(c1);
var dataset = DatasetFactory.getDataset("colleague", null, constraints, null);
if (dataset.rowsCount > 0) {
colleagueIds.getItem().add(dataset.getValue(0, "colleaguePK.colleagueId")); //responsavel
if (listaColleagueId == '') {
listaColleagueId = dataset.getValue(0, "colleaguePK.colleagueId");
} else {
listaColleagueId += ','+dataset.getValue(0, "colleaguePK.colleagueId");
}
}
}
log.info('******** listaColleagueId ************* '+ listaColleagueId);
log.info('******** email_gestores ************* '+ email_gestores);
var cardData = ObjFactory.createStringArrayArray();
for (var j = 0; j < indexes.length; j++) {
log.info('******** email_gestor___ ************* '+ hAPI.getCardValue("email_gestor___" + indexes[j]));
if(email_gestores == hAPI.getCardValue("email_gestor___" + indexes[j])){
cardData.getItem().add(incluiCampo(ObjFactory, "CP_MAT", hAPI.getCardValue("CP_MAT")));
cardData.getItem().add(incluiCampo(ObjFactory, "email_gestor", hAPI.getCardValue("email_gestor___" + indexes[j])));
cardData.getItem().add(incluiCampo(ObjFactory, "email_solicitante", emailUsuarioCorrente));
cardData.getItem().add(incluiCampo(ObjFactory, "id_gestor", listaColleagueId));
cardData.getItem().add(incluiCampo(ObjFactory, "funcionarioZOOM", hAPI.getCardValue("funcionarioZOOM")));
var produto = hAPI.getCardValue("produtoZOOM___" + indexes[j]);
var codigoprod = hAPI.getCardValue("CP_COD___" + indexes[j]);
var unmedida = hAPI.getCardValue("unidademedidaZOOM___" + indexes[j]);
var armazem = hAPI.getCardValue("CP_ARMAZEM___" + indexes[j]);
var quantidadeprod = hAPI.getCardValue("CP_QUANT___" + indexes[j]);
var ctt_custo = hAPI.getCardValue("ctt_custo___" + indexes[j]);
cardData.getItem().add(incluiCampo(ObjFactory, "produtoZOOM___" +indexes[j],produto));
cardData.getItem().add(incluiCampo(ObjFactory, "CP_COD___" +indexes[j],codigoprod));
cardData.getItem().add(incluiCampo(ObjFactory, "unidademedidaZOOM___" +indexes[j],unmedida));
cardData.getItem().add(incluiCampo(ObjFactory, "CP_ARMAZEM___" +indexes[j],armazem));
cardData.getItem().add(incluiCampo(ObjFactory, "CP_QUANT___" +indexes[j],quantidadeprod));
cardData.getItem().add(incluiCampo(ObjFactory, "ctt_custo___" +indexes[j],ctt_custo));
}
}
var userId = usuarioCorrente; //quem inicia
var ativDestino = 5;
var codEmpresa = 1; //trocar no ambiente produção
var retorno = request.startProcess("usuario", "senha", codEmpresa, 'Solicitação ao Armazem Aprovador', ativDestino, colleagueIds, 'processo iniciado pelo processo pai nº '+numProcessoPai, userId, true, ProcessAttachmentDtoArray, cardData, ProcessTaskAppointmentDtoArray, false);
log.warn("####### INICIO iProcess ####### ");
var iProcess = "";
for (var j = 0; j < retorno.getItem().size(); j++) {
var item = retorno.getItem().get(j).getItem();
var key = item.get(0);
var value = item.get(1);
if (key == "iProcess") {
iProcess = value;
log.info("Solitação :" + iProcess);
log.warn("####### GRAVA NO FORMULARIO ####### ");
hAPI.setCardValue("nSolicitafilho", iProcess);
log.warn("####### GRAVA NO FORMULARIO FIM ####### ");
}
}
log.warn("####### FIM iProcess ####### ");
}
}
function incluiCampo(ObjFactory, nomeCampo, valorCampo) {
var field = ObjFactory.createStringArray();
field.getItem().add(nomeCampo); // nome do campo.
field.getItem().add(valorCampo); // valor do campo.
return field;
}
FORM
<html>
<head>
<link rel="stylesheet" type="text/css" href="/style-guide/css/fluig-style-guide.min.css">
<script src="/portal/resources/js/jquery/jquery.js"></script>
<script src="/portal/resources/js/jquery/jquery-ui.min.js"></script>
<script src="/portal/resources/js/mustache/mustache-min.js"></script>
<script src="/style-guide/js/fluig-style-guide.min.js"></script>
<script type="text/javascript" src="/webdesk/vcXMLRPC.js"></script>
<script type="text/javascript" src="/webdesk/vcXMLRPC.js"></script>
<script type="text/javascript" src="setSelectedZoomItem.js" charset="utf-8"></script>
<script>
function verificarDigito(campo) {
campo.value = campo.value.replace(/,/g, '.').replace(/[^0-9.,]/g, '').replace(/(\..*)\./g, '$1');
}
function formatar(campo, casasDecimais) {
campo.value = parseFloat(campo.value).toFixed(casasDecimais);
}
</script>
</head>
<body>
<div class="fluig-style-guide">
<form name="form" role="form">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title" align="center"><strong>Requisição Almoxarifado</strong></h3>
</div>
</div>
<div class="panel panel-primary" id="pn_DadosSolicitacao" name="pn_DadosSolicitacao">
<div class="panel-heading">Informacoes da socilitação</div>
<div class="panel-body">
<div class="row">
<div class="col-md-4">
<label class="control-label"> Nome Funcionario<FONT COLOR="red">*</FONT> </label>
<input placeholder="Pesquise a Matricula" type="zoom" id="funcionarioZOOM"
name="funcionarioZOOM" data-zoom="{
'displayKey':'RA_NOME',
'datasetId':'ds_funcionariosSA',
'maximumSelectionLength':'1',
'filterValues': '',
'placeholder':'',
'fields':[
{
'field':'RA_MAT',
'label':'Matricula'
},{
'field':'RA_NOME',
'label':'Nome',
'standard':'true',
'search':'true'
},{
'field':'CTT_DESC01',
'label':'Centro de Custo',
'search':'true'
}
]
}" />
</div>
<div class="col-md-2" id="matriculadiv" name="matriculadiv">
<label for="ramal">Matrícula <FONT COLOR="red">*</FONT></label>
<input name="CP_MAT" id="CP_MAT" class="form-control">
</div>
<div class="col-md-2" id="centroCustoFuncdiv" name="centroCustoFuncdiv">
<label for="ramal">Codigo Centro Custo <FONT COLOR="red">*</FONT></label>
<input name="CTT_CUSTO_ID" id="CTT_CUSTO_ID" class="form-control">
</div>
<div class="col-md-2" id="centroCustoFuncdiv" name="centroCustoFuncdiv">
<label for="ramal">Centro de Custo Funcionario <FONT COLOR="red">*</FONT></label>
<input name="CTT_DESC01" id="CTT_DESC01" class="form-control">
</div>
<div class="col-md-2">
<label for="ramal">Nº Filha<FONT COLOR="red">*</FONT></label>
<input name="nSolicitafilho" id="nSolicitafilho" class="form-control" readonly="true">
</div>
</div>
</div>
</div>
<div class="panel panel-primary" id="pn_Produtos" name="pn_Produtos">
<div class="panel-heading">Produtos</div>
<div class="panel-body">
<div class="row">
<div>
<table class="table table-striped" id="table_Produtos" tablename="table_Produtos"
addbuttonlabel="Adicionar produto" onclick="childAdd()" onblur="maskCelular"
nodeletebutton="false" deletebuttonid=""
deleteicon="/ecm_resources/resources/assets/images/delete_24_Original.png">
<thead>
<colgroup>
<col width="4%">
<col width="27%">
<col width="1%">
<col width="15%">
<!-- <col width="10%"> -->
<col width="10%">
<col width="10%">
<col width="20%">
</colgroup>
<tr>
<th>Produto <FONT COLOR="red">*</FONT>
</th>
<th type="hidden">
</th>
<!-- <th>Unidade Medida <FONT COLOR="red">*</FONT>
</th> -->
<th>Qtd <FONT COLOR="red">*</FONT>
</th>
<th>Qtd Disp.<FONT COLOR="red">*</FONT>
</th>
<th>Armazém <FONT COLOR="red">*</FONT>
</th>
<th>Grupo <FONT COLOR="red">*</FONT>
</th>
<th>Centro de Custo Destino <FONT COLOR="red">*</FONT>
</th>
</tr>
</thead>
<tbody>
<tr detail="true" detailname="tbProdutos">
<td>
<input type="zoom" class="form-control" id="produtoZOOM" name="produtoZOOM"
title="produtoZOOM" onchange="" style=""
data-zoom="{'displayKey':'B1_DESC','datasetId':'dsProdutosSA','maximumSelectionLength':'1','filterValues': '','placeholder':'','fields':[{'field':'B1_COD','label':'Codigo'},{'field':'B1_DESC','label':'Descricao','standard':'true','search':'true'}]}" />
</td>
<td>
<input type="hidden" id="CP_COD" name="CP_COD"
class="form-control change-qtde change-valor" />
</td>
<!-- <td>
<input type="zoom" class="form-control" id="unidademedidaZOOM"
name="unidademedidaZOOM" title="unidademedidaZOOM" onchange="" style=""
data-zoom="{'displayKey':'NOME','datasetId':'ds_UnidadeDeMeida','maximumSelectionLength':'1','filterValues': '','placeholder':'','fields':[{'field':'NOME','label':'Unid.Medid'}]}" />
</td> -->
<td>
<input id="CP_QUANT " name="CP_QUANT"
class="form-control change-qtde change-valor" type="text" mask="#0.000"
onkeyup="verificarDigito(this)" onblur="formatar(this, 3)" />
</td>
<td>
<input id="CP_QTDISP" name="CP_QTDISP"
class="form-control change-qtde change-valor" type="text" readonly="true"/>
</td>
<td>
<input id="CP_ARMAZEM " name="CP_ARMAZEM"
class="form-control change-qtde change-valor" type="text" />
</td>
<td>
<input id="CP_GRUPO " name="CP_GRUPO"
class="form-control change-qtde change-valor" type="text" />
</td>
<td>
<input placeholder="Pesquise o C.Custo" type="zoom" id="ctt_custo"
name="ctt_custo"
data-zoom="{'displayKey':'CTT_CUSTO','datasetId':'dsCentroDeCustoSA','fields':[{'field':'CTT_CUSTO','label':'Codigo'},{'field':'CTT_DESC01','label':'Descricao','standard':'true','search':'true'}]}" />
<input type="hidden" name="email_gestor" id="email_gestor">
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</form>
</div>
</body>
</html>