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 filial = String( hAPI.getCardValue("filialprotheus") || hAPI.getCardValue("filialProtheus") || hAPI.getCardValue("codigocentroCusto") || "" ).trim(); if (!filial) { throw "Campo PROTHEUS da filial não preenchido no formulário (filialprotheus)."; } log.info("🏬 Filial PROTHEUS enviada no C1_FILENT: " + filial); var payload = { "C1_SOLICIT": String(hAPI.getCardValue("usuarioSolicitante")), "C1_EMISSAO": hojeProtheus(), "C1_FILENT": filial, "C1_OBS": String(hAPI.getCardValue("observacoes")), "itens": itens }; log.info("📦 Payload montado:"); log.info(JSON.stringify(payload)); var data1 = { companyId: '1', serviceCode: 'Postprod', endpoint: '/UF_MATA110', method: 'post', timeoutService: '60000', 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:"); if (response) { log.info("HTTP status: " + response.getHttpStatusResult()); log.info("Body: " + response.getResult()); } 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("statusAtendimento", "Em andamento"); 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 { var erroMsg = result.erro || result.message || JSON.stringify(result); hAPI.setCardValue("statusSCProtheus", "Erro: " + erroMsg); hAPI.setCardValue("statusAtendimento", "Erro no envio"); throw "Erro Protheus: " + erroMsg; } } 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"); }