Caros,
Estou criando uma função com hAPI.getCardData(process), na qual ele percorra os campos das nota fiscal pegando as substring das 4 primeiras posições do código do produto ( 01.08.0043) que no caso é a definição do grupo daquele produto, porém ao usar uma função do java script que se chama filter, ele dá o erro dizendo que não reconhece. No navegador a função funciona normalmente porém no ECM ele não reconhece a função filter. Dadndo erro conforme a imagem em anexo!
Segue o script:
function RepassaDiretoriaPrd(){
log.info("#1");
var process = getValue("WKNumProces");
cardData = hAPI.getCardData(process);
var keys = cardData.keySet().toArray();
for (var key in keys) {
var field = keys[key];
if (field.indexOf("Codigoprd") > -1) {
var name = cardData.get(field);
var index = field.replace("Codigoprd", "");
var nomedoitem = cardData.get("NomeItem_" + index);
var StrGrupoBensUm = "01.05"; // Sintetico Material de Bens permanentes - Imobilizado
var StrGrupoBensDois = "01.08"; // Sintetico imobilizados
var GrupoPrdImob = cardData.get("Codigoprd_" + index).filter(function(windowValue) {
if(windowValue) {
return (windowValue.substring(0, StrGrupoBensUm.length) === StrGrupoBensUm);
log.info("#2" +(windowValue.substring(0, StrGrupoBensUm.length) === StrGrupoBensUm));
}
});
}
}
}
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
Bom dia,
Se eu não me engano, o filter() é uma função do objeto Array do JS, e o getCardData() retorna um mapa.
Você pode iterar o retorno do getCardData() pra criar um array e então usar o filter, se a função filter() é suportada pelo Rhino é pra funcionar.
Não funcionou, então eu mudei a forma de realizar esse filtro no mapa, usando o básico
Caros,
Encontrei uma solução já que o filter deu erro, por não reconhecer o objeto de iteração do GetCardData. Esse contorno funcionou , apesar de ser muito simples.
Esse meu script percorre os campos do formulário precisamente o código do produto da nota, uso um dataset do RM buscando os produtos do ERP Linha RM. Após percorrer os codigos do produto eu procuro pelo grupos de ativos imobilizados representados pela posição 01.08 e 01.05. Na atividade "Exclusivo do Processo" uso para direcionar para o papel Diretoria se S= Sim e N=Não para o papel Comprador.
Abraço e Obrigado a todos.
function RepassaDiretoriaPrd(){
log.info("TOTVS#1");
var process = getValue("WKNumProces");
log.info("TOTVS#2"+process);
cardData = hAPI.getCardData(process);
log.info("TOTVS #3"+cardData);
var keys = cardData.keySet().toArray();
log.info("TOTVS#4"+keys);
for (var key in keys) {
var field = keys[key];
log.info("TOTVS#5"+field);
if (field.indexOf("Codigoprd___") > -1) {
log.info("TOTVS#6"+field);
var name = cardData.get(field);
log.info("TOTVS#7"+name);
var index = field.replace("Codigoprd___", "");
log.info("TOTVS#8"+index);
var nomedoitem = cardData.get("NomeItem___" + index);
log.info("TOTVS#9"+nomedoitem);
var retorno = "N";
if ((cardData.get("Codigoprd___" + index).substring(0,5) == "01.08") ||
(cardData.get("Codigoprd___" + index).substring(0,5) == "01.05")) {
retorno="S";
log.info("TOTVS #10 "+retorno);
}
return retorno;
log.info("TOTVS#11 "+retorno);
}
}
}