fluig/compras_digital/workflow/scripts/Solicitação de compras V2.servicetask82.js
2026-03-01 17:27:48 -03:00

97 lines
3.3 KiB
JavaScript

function toProtheusDate(d) {
if (!d) return "";
if (d.indexOf("/") > -1) {
var parts = d.split("/");
return parts[2] + parts[1] + parts[0]; // dd/MM/yyyy -> yyyyMMdd
}
if (d.indexOf("-") > -1) {
return d.replace(/-/g, ""); // yyyy-MM-dd -> yyyyMMdd
}
return d; // já está no formato certo
}
function hojeProtheus() {
var d = new Date();
var yyyy = d.getFullYear();
var mm = d.getMonth() + 1;
var dd = d.getDate();
if (mm < 10) mm = "0" + mm;
if (dd < 10) dd = "0" + dd;
return "" + yyyy + mm + dd; // yyyyMMdd
}
function servicetask82(attempt, message) {
log.info("🚀 Iniciando servicetask82");
var qtdItens = hAPI.getChildrenIndexes("tbItens");
log.info("📦 Total de itens na tabela: " + qtdItens.length);
var itens = [];
for (var i = 0; i < qtdItens.length; i++) {
var index = qtdItens[i];
var item = {
"C1_PRODUTO": String(hAPI.getCardValue("Codproduto___" + index)),
"C1_QUANT": Number(hAPI.getCardValue("qtd___" + index)),
"C1_DATPRF": toProtheusDate(String(hAPI.getCardValue("dataNec___" + index)))
};
itens.push(item);
log.info("📌 Item adicionado: " + JSON.stringify(item));
}
var payload = {
"C1_SOLICIT": String(hAPI.getCardValue("usuarioSolicitante")),
"C1_EMISSAO": hojeProtheus(),
"C1_FILENT": String(hAPI.getCardValue("filialProtheus")).trim(),
"C1_OBS": String(hAPI.getCardValue("observacoes")),
"itens": itens
};
log.info("📦 Payload montado:");
log.info(JSON.stringify(payload));
var data1 = {
companyId: '1',
serviceCode: 'Postprod',
endpoint: '/rest/UF_MATA110',
method: 'post',
timeoutService: '100',
params: payload, // objeto puro
headers: {
'Content-Type': 'application/json'
}
};
try {
var clientService = fluigAPI.getAuthorizeClientService();
var response = clientService.invoke(JSON.stringify(data1)); // SEMPRE stringify aqui
log.info("📬 Resposta da API Protheus:");
log.dir(response);
if (response && response.getResult()) {
var result = JSON.parse(response.getResult());
if (result.sucesso) {
hAPI.setCardValue("numeroSCProtheus", result.C1_NUM || "");
hAPI.setCardValue("statusSCProtheus", "SC cadastrada com sucesso");
hAPI.setCardValue("solicitanteSCProtheus", result.C1_SOLICIT || "");
hAPI.setCardValue("emissaoSCProtheus", result.C1_EMISSAO || "");
hAPI.setCardValue("qtdItensSCProtheus", String(result.quantidade_itens || ""));
hAPI.setCardValue("dataCadastroSCProtheus", result.data_cadastro || "");
hAPI.setCardValue("horaCadastroSCProtheus", result.hora_cadastro || "");
} else {
hAPI.setCardValue("statusSCProtheus", "Erro: " + result.erro);
throw "Erro Protheus: " + result.message;
}
} else {
throw "Sem resposta da API Protheus";
}
} catch (e) {
log.error("❌ Erro ao enviar SC para o Protheus: " + e);
throw e;
}
log.info("🏁 Finalização da servicetask82");
}