A rotina que desenvolvi no botão de ação da TGFCAB consiste em um script JavaScript para transferir produtos de um local para outro, utilizando as configurações da TOP informada no cabeçalho da nota. A expectativa é que, ao preencher campos básicos como CODPROD, QTDNEG, CODLOCALORIG e CODLOCALDEST, o sistema complete automaticamente os demais dados do item, assim como ocorre na interface padrão do SankhyaOm. No entanto, esse preenchimento automático não está acontecendo. Acredito que seja necessário invocar algum serviço interno responsável por essa lógica. Gostaria de saber como posso proceder nesse caso e, principalmente, como posso identificar esse serviço utilizando as ferramentas de desenvolvedor da própria plataforma.

exemplo: var recImposto = newJava(“br.com.sankhya.modelcore.comercial.impostos.ImpostosHelpper”);
Script:
var recImposto = newJava(“br.com.sankhya.modelcore.comercial.impostos.ImpostosHelpper”);
var tipoOperacao = getParam(“CODTIPOPER”);
var simpleDateFormat = newJava(“java.text.SimpleDateFormat”);
simpleDateFormat.applyPattern(“dd/MM/yyyy”);
var dataAtual = simpleDateFormat.format(new Date());
// Criar cabeçalho da nota
var notaTransf = novaLinha(“TGFCAB”);
notaTransf.setCampo(“CODEMP”, 2);
notaTransf.setCampo(“CODCENCUS”, 80801);
notaTransf.setCampo(“NUMNOTA”, 0);
notaTransf.setCampo(“DTNEG”, dataAtual);
notaTransf.setCampo(“CODEMPNEGOC”, 2);
notaTransf.setCampo(“CODPARC”, 6118);
notaTransf.setCampo(“CODTIPOPER”, 1300);
notaTransf.setCampo(“CODTIPVENDA”, 0);
notaTransf.setCampo(“CODNAT”, 1020601);
notaTransf.save();
// Consulta de produtos
var consultaProdutos = getQuery();
consultaProdutos.nativeSelect(
“SELECT NVL(COPIA.CODPROD, CONTAGEM.CODPROD) CODPROD, " +
" PRO.DESCRPROD PRODUTO, " +
" PAR.CODPARC, " +
" NVL(COPIA.COPIA, 0) COPIA, " +
" NVL(CONTAGEM.CONTAGEM, 0) CONTAGEM, " +
" NVL(COPIA.COPIA, 0) - NVL(CONTAGEM.CONTAGEM, 0) SALDO_2560 " +
“FROM (” +
" SELECT CTE.CODPROD, CTE.QTDEST COPIA, CTE.CODPARC, CTE.SEQUENCIA, " +
" CTE.DTCONTAGEM, CTE.CODEMP, CTE.CODVOL, CTE.CONTROLE " +
" FROM TGFCTE CTE " +
" WHERE CTE.DTCONTAGEM = ‘21/05/2025’ " +
" AND CTE.SEQUENCIA = 1 " +
" AND CTE.CODEMP = 2 " +
" AND CTE.CODLOCAL = 2560” +
“) COPIA " +
“FULL JOIN (” +
" SELECT CTE.CODPROD, CTE.QTDEST CONTAGEM, CTE.CODPARC, CTE.SEQUENCIA, " +
" CTE.DTCONTAGEM, CTE.CODEMP, CTE.CODVOL, CTE.CONTROLE " +
" FROM TGFCTE CTE " +
" WHERE CTE.DTCONTAGEM = ‘22/05/2025’ " +
" AND CTE.SEQUENCIA = 2 " +
" AND CTE.CODEMP = 2 " +
" AND CTE.CODLOCAL = 2560” +
") CONTAGEM ON CONTAGEM.CODPROD = COPIA.CODPROD " +
"INNER JOIN TGFPRO PRO ON PRO.CODPROD = NVL(COPIA.CODPROD, CONTAGEM.CODPROD) " +
"INNER JOIN TGFPAR PAR ON PAR.CODPARC = PRO.CODPARCFORN " +
“WHERE NVL(COPIA.COPIA, 0) - NVL(CONTAGEM.CONTAGEM, 0) >= 0 " +
" AND NVL(CONTAGEM.CONTAGEM, 0) > 0”
);
// Sequência inicial
var consultaSequenciaMaxima = getQuery();
consultaSequenciaMaxima.nativeSelect(
"SELECT MAX(SEQUENCIA) AS MAX_SEQUENCIA FROM TGFITE WHERE NUNOTA = " + notaTransf.getCampo(“NUNOTA”)
);
var sequenciaMaxima = 0;
if (consultaSequenciaMaxima.next()) {
sequenciaMaxima = consultaSequenciaMaxima.getInt(“MAX_SEQUENCIA”) || 0;
}
// Loop de inclusão dos itens
while (consultaProdutos.next()) {
sequenciaMaxima++;
var codprod = consultaProdutos.getInt("CODPROD");
var qtde = consultaProdutos.getBigDecimal("CONTAGEM");
var codvol = "UN";
var itemNota = novaLinha("TGFITE");
itemNota.setCampo("NUNOTA", notaTransf.getCampo("NUNOTA"));
itemNota.setCampo("SEQUENCIA", sequenciaMaxima);
itemNota.setCampo("CODPROD", codprod);
itemNota.setCampo("QTDNEG", qtde);
itemNota.setCampo("CODLOCALORIG", 2560);
itemNota.setCampo("CODLOCALDEST", 9120);
itemNota.setCampo("CODVOL", codvol);
itemNota.setCampo("CONTROLE", " ");
itemNota.setCampo("USOPROD", "R");
itemNota.save();
}