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");
}
