fluig/Ginseng_chamados/datasets/dsPostPedidoCompra.js
2025-08-26 14:12:50 -03:00

92 lines
2.9 KiB
JavaScript

function createDataset(fields, constraints, sortFields) {
var dataset = DatasetBuilder.newDataset();
criarEstrutura(dataset);
try {
log.info("🚀 Iniciando dsPostPedidoCompra");
// Captura os parâmetros via constraints
var estabelecimento = trim(getParametro(constraints, "estabelecimento"));
var numeroPedido = trim(getParametro(constraints, "numeroPedido"));
var dataAbertura = trim(getParametro(constraints, "dataAbertura"));
var fornecedor = trim(getParametro(constraints, "fornecedor"));
var condPagamento = trim(getParametro(constraints, "condPagamentoIndica"));
var userCompras = trim(getParametro(constraints, "userValidacaoCompras"));
// Monta o payload
var payload = {
"C7_FILIAL": estabelecimento,
"C7_NUM": numeroPedido,
"C7_EMISSAO": dataAbertura,
"C7_FORNECE": fornecedor,
"C7_LOJA": "01",
"C7_COND": condPagamento,
"C7_CONTATO": userCompras,
"C7_FILENT": estabelecimento,
"C7_TPFRETE": "C",
"C7_FRETE": "0",
"C7_ITENS": [fornecedor] // você pode ajustar isso para ser um array com objetos, se necessário
};
log.info("📤 Payload: " + JSON.stringify(payload));
// Monta a chamada para o serviço
var data = {
companyId: "01",
serviceCode: "Integrador Pedido de compra",
endpoint: "/REST/PEDIDO/",
method: "post",
timeoutService: "100",
params: payload,
headers: {
'Content-Type': 'application/json'
}
};
var clientService = fluigAPI.getAuthorizeClientService();
var response = clientService.invoke(JSON.stringify(data));
var result = response.getResult();
log.info("✅ Retorno da API: " + result);
if (!result || result.indexOf("ERRO") !== -1) {
throw result || "Erro desconhecido na integração.";
}
dataset.addRow(["SUCESSO", result]);
} catch (e) {
var erro = "❌ Erro: " + e.message;
log.error("[dsPostPedidoCompra] " + erro);
dataset.addRow(["FALHA", erro]);
}
return dataset;
}
// Criação das colunas
function criarEstrutura(dataset) {
dataset.addColumn("STATUS", DatasetFieldType.STRING);
dataset.addColumn("RETORNO", DatasetFieldType.STRING);
}
// Função para buscar parâmetro nas constraints
function getParametro(constraints, campo) {
var valor = "";
if (constraints && constraints.length > 0) {
for each (var c in constraints) {
if (c.getFieldName().trim().toUpperCase() === campo.trim().toUpperCase()) {
valor = c.getInitialValue();
break;
}
}
}
return valor;
}
// Trim com segurança
function trim(valor) {
if (!valor) return "";
return valor.trim();
}