{"id":1084,"date":"2026-01-09T22:05:22","date_gmt":"2026-01-09T22:05:22","guid":{"rendered":"https:\/\/safratransportadora.com.br\/cotacao\/?page_id=1084"},"modified":"2026-01-09T22:13:25","modified_gmt":"2026-01-09T22:13:25","slug":"nova-cotacao-2","status":"publish","type":"page","link":"https:\/\/safratransportadora.com.br\/cotacao\/","title":{"rendered":"Nova Cota\u00e7\u00e3o"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1084\" class=\"elementor elementor-1084\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5f398e5 e-flex e-con-boxed e-con e-parent\" data-id=\"5f398e5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-623aae8 elementor-widget elementor-widget-shortcode\" data-id=\"623aae8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\r\n<nav class=\"nav-cotacao\">\r\n    <div class=\"nav-container\">\r\n        <a href=\"https:\/\/safratransportadora.com.br\/cotacao\/\" class=\"nav-logo\">AutoParts S\u00e3o Roque<\/a>\r\n        <input type=\"checkbox\" id=\"nav-check\">\r\n        <div class=\"nav-btn\">\r\n            <label for=\"nav-check\"><span><\/span><span><\/span><span><\/span><\/label>\r\n        <\/div>\r\n        <div class=\"nav-links\">\r\n            <a href=\"https:\/\/safratransportadora.com.br\/cotacao\/\">In\u00edcio<\/a>\r\n            <a href=\"https:\/\/safratransportadora.com.br\/cotacao\/listar-cotacoes-abertas\/\">Cota\u00e7\u00f5es Abertas<\/a>\r\n            <a href=\"https:\/\/safratransportadora.com.br\/cotacao\/resultado\/\">Resultados<\/a>\r\n            <a href=\"https:\/\/safratransportadora.com.br\/cotacao\/minha-conta\/\" class=\"btn-destaque\">Minha Conta<\/a>\r\n        <\/div>\r\n    <\/div>\r\n<\/nav>\r\n\r\n<style>\r\n\/* Estilos preservados *\/\r\n.nav-cotacao { background-color: #333; padding: 5px 0; font-family: sans-serif; margin-bottom: 15px; border-radius: 4px; }\r\n.nav-container { max-width: 1200px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; padding: 0 15px; }\r\n.nav-logo { color: #fff; font-size: 16px; font-weight: bold; text-decoration: none; }\r\n.nav-links { display: flex; gap: 8px; align-items: center; }\r\n.nav-links a { color: #efefef; text-decoration: none; font-size: 13px; padding: 6px 10px; transition: 0.3s; }\r\n.nav-links a:hover { color: #28a745; }\r\n.nav-links a.btn-destaque { background-color: #28a745; color: white; border-radius: 4px; font-weight: bold; }\r\n\r\n#wrapper-criacao-cotacao { background: #fff; padding: 15px; border: 1px solid #ddd; border-radius: 6px; font-family: sans-serif; }\r\n.form-header { margin: 0 0 15px 0; color: #333; border-bottom: 2px solid #0073aa; padding-bottom: 5px; font-size: 1.3em; }\r\n\r\n.secao-adicionar { background: #f1f1f1; padding: 10px; border-radius: 4px; margin-bottom: 15px; border: 1px solid #ddd; }\r\n.input-group { display: flex; gap: 8px; flex-wrap: wrap; align-items: flex-end; }\r\n.input-group div { display: flex; flex-direction: column; gap: 4px; }\r\n.input-group label { font-size: 11px; font-weight: bold; color: #666; }\r\n.input-group input { padding: 6px; border: 1px solid #ccc; border-radius: 3px; font-size: 0.9em; }\r\n\r\n\/* Tabela e Linha Separadora *\/\r\n#tabela_itens { border-collapse: collapse; margin-bottom: 15px; font-size: 0.85em; }\r\n#tabela_itens th { background: #444; color: #fff; padding: 6px; border: 1px solid #ddd; text-align: left; }\r\n#tabela_itens td { padding: 5px; border: 1px solid #ddd; vertical-align: middle; }\r\n.linha-separadora td { background-color: #e9ecef !important; padding: 2px !important; text-align: center; border: none !important; }\r\n.divisor-visual { height: 8px; background: repeating-linear-gradient(45deg, #ccc, #ccc 10px, #ddd 10px, #ddd 20px); border-radius: 2px; }\r\n\r\n.btn-remover { color: #dc3545; background: none; border: none; cursor: pointer; font-weight: bold; font-size: 1.1em; }\r\n.btn-publicar { background: #0073aa; color: #fff; padding: 12px; border: none; border-radius: 4px; cursor: pointer; font-weight: bold; width: 100%; font-size: 1em; margin-top: 10px; }\r\n<\/style>\r\n\r\n<div id=\"wrapper-criacao-cotacao\">\r\n    <h2 class=\"form-header\">\ud83d\ude80 Nova Solicita\u00e7\u00e3o de Cota\u00e7\u00e3o<\/h2>\r\n    \r\n    <div style=\"margin-bottom: 15px;\">\r\n        <label style=\"font-size: 0.9em;\"><strong>T\u00edtulo \/ Identifica\u00e7\u00e3o:<\/strong><\/label>\r\n        <input type=\"text\" id=\"cotacao_titulo\" style=\"width:100%; padding:8px; margin-top:4px; border: 1px solid #ccc; border-radius: 3px;\" placeholder=\"Ex: Manuten\u00e7\u00e3o Preventiva - Placa ABC-1234\">\r\n    <\/div>\r\n\r\n    <div class=\"secao-adicionar\">\r\n        <div class=\"input-group\">\r\n            <div>\r\n                <label>C\u00f3d. Pe\u00e7a<\/label>\r\n                <input type=\"text\" id=\"manual_codigo\" placeholder=\"C\u00f3d.\" style=\"width: 100px;\">\r\n            <\/div>\r\n            <div style=\"flex: 2; min-width: 180px;\">\r\n                <label>Descri\u00e7\u00e3o da Pe\u00e7a<\/label>\r\n                <input type=\"text\" id=\"manual_nome\" placeholder=\"Nome do Produto\">\r\n            <\/div>\r\n            <div>\r\n                <label>Qtd<\/label>\r\n                <input type=\"number\" id=\"manual_qtd\" value=\"1\" min=\"1\" style=\"width: 60px;\">\r\n            <\/div>\r\n            <button type=\"button\" id=\"btn_adicionar_manual\" style=\"background: #28a745; color: white; border: none; padding: 8px 15px; border-radius: 3px; cursor: pointer; font-weight: bold;\">+ Adicionar<\/button>\r\n            <button type=\"button\" id=\"btn_add_divisor\" style=\"background: #6c757d; color: white; border: none; padding: 8px 15px; border-radius: 3px; cursor: pointer; font-weight: bold;\">\u2795 Inserir Divisor<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <table id=\"tabela_itens\" width=\"100%\">\r\n        <thead>\r\n            <tr>\r\n                <th width=\"120\">C\u00f3digo<\/th>\r\n                <th>Descri\u00e7\u00e3o do Produto<\/th>\r\n                <th width=\"70\" style=\"text-align: center;\">Qtd<\/th>\r\n                <th width=\"40\" style=\"text-align: center;\">Excluir<\/th>\r\n            <\/tr>\r\n        <\/thead>\r\n        <tbody><\/tbody>\r\n    <\/table>\r\n\r\n    <button type=\"button\" id=\"btn_salvar_cotacao\" class=\"btn-publicar\">\r\n        \ud83d\udce4 PUBLICAR COTA\u00c7\u00c3O PARA TODOS FORNECEDORES\r\n    <\/button>\r\n<\/div>\r\n\r\n<script>\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    const tabelaBody = document.querySelector('#tabela_itens tbody');\r\n    const btnAddManual = document.getElementById('btn_adicionar_manual');\r\n    const btnAddDivisor = document.getElementById('btn_add_divisor');\r\n    \r\n    const inCodigo = document.getElementById('manual_codigo');\r\n    const inNome = document.getElementById('manual_nome');\r\n    const inQtd = document.getElementById('manual_qtd');\r\n\r\n    \/\/ 1. Fun\u00e7\u00e3o Adicionar Produto\r\n    function adicionarLinha(codigo, nome, qtd) {\r\n        if (!nome.trim()) { alert(\"Informe a descri\u00e7\u00e3o do produto.\"); inNome.focus(); return; }\r\n\r\n        let row = `<tr class=\"item-real\">\r\n            <td>\r\n                <input type=\"hidden\" class=\"item-codigo\" value=\"${codigo}\">\r\n                ${codigo || '<span style=\"color:#ccc\">N\/A<\/span>'}\r\n            <\/td>\r\n            <td>\r\n                <input type=\"hidden\" class=\"item-nome\" value=\"${nome}\">\r\n                <strong>${nome}<\/strong>\r\n            <\/td>\r\n            <td style=\"text-align:center;\">\r\n                <input type=\"number\" class=\"item-qtd\" value=\"${qtd}\" min=\"1\" style=\"width: 50px; text-align:center; padding: 2px;\">\r\n            <\/td>\r\n            <td style=\"text-align:center;\">\r\n                <button type=\"button\" class=\"btn-remover\" onclick=\"this.closest('tr').remove()\">\u00d7<\/button>\r\n            <\/td>\r\n        <\/tr>`;\r\n        \r\n        tabelaBody.insertAdjacentHTML('beforeend', row);\r\n        \r\n        \/\/ Reseta campos e volta foco para o c\u00f3digo\r\n        inCodigo.value = '';\r\n        inNome.value = '';\r\n        inQtd.value = '1';\r\n        inCodigo.focus();\r\n    }\r\n\r\n    \/\/ 2. Fun\u00e7\u00e3o Adicionar Divisor\r\n    function adicionarDivisor() {\r\n        let divisor = `<tr class=\"linha-separadora\">\r\n            <td colspan=\"4\">\r\n                <div class=\"divisor-visual\"><\/div>\r\n                <input type=\"hidden\" class=\"item-codigo\" value=\"DIVISOR\">\r\n                <input type=\"hidden\" class=\"item-nome\" value=\"--- SEPARADOR ---\">\r\n                <input type=\"hidden\" class=\"item-qtd\" value=\"0\">\r\n            <\/td>\r\n        <\/tr>`;\r\n        tabelaBody.insertAdjacentHTML('beforeend', divisor);\r\n    }\r\n\r\n    \/\/ 3. Eventos de Clique\r\n    btnAddManual.addEventListener('click', () => adicionarLinha(inCodigo.value, inNome.value, inQtd.value));\r\n    btnAddDivisor.addEventListener('click', adicionarDivisor);\r\n\r\n    \/\/ 4. Fluxo de Teclado (Enter)\r\n    \/\/ No campo c\u00f3digo, Enter vai para Nome\r\n    inCodigo.addEventListener('keypress', (e) => { if(e.key === 'Enter') inNome.focus(); });\r\n    \/\/ No campo nome, Enter vai para Qtd\r\n    inNome.addEventListener('keypress', (e) => { if(e.key === 'Enter') inQtd.focus(); });\r\n    \/\/ No campo Qtd, Enter executa o Adicionar e volta para C\u00f3digo\r\n    inQtd.addEventListener('keypress', (e) => { \r\n        if(e.key === 'Enter') {\r\n            e.preventDefault();\r\n            btnAddManual.click();\r\n        }\r\n    });\r\n\r\n    \/\/ 5. Envio AJAX\r\n    document.getElementById('btn_salvar_cotacao').addEventListener('click', function() {\r\n        const titulo = document.getElementById('cotacao_titulo').value;\r\n        const linhas = document.querySelectorAll('#tabela_itens tbody tr');\r\n        \r\n        if (!titulo || linhas.length === 0) {\r\n            alert('Erro: Defina um t\u00edtulo e adicione itens.');\r\n            return;\r\n        }\r\n\r\n        const btn = this;\r\n        btn.disabled = true;\r\n        btn.innerText = \"\u23f3 SALVANDO...\";\r\n\r\n        let fd = new FormData();\r\n        fd.append('action', 'criar_nova_cotacao'); \r\n        fd.append('titulo', titulo);\r\n\r\n        linhas.forEach(linha => {\r\n            fd.append('codigos[]', linha.querySelector('.item-codigo').value);\r\n            fd.append('nomes[]', linha.querySelector('.item-nome').value);\r\n            \/\/ Divisores enviam Qtd 0 para o banco ignorar se necess\u00e1rio\r\n            const inputQtd = linha.querySelector('.item-qtd');\r\n            fd.append('qtds[]', inputQtd ? inputQtd.value : 0);\r\n        });\r\n\r\n        fetch('https:\/\/safratransportadora.com.br\/cotacao\/wp-admin\/admin-ajax.php', { \r\n            method: 'POST', \r\n            body: fd,\r\n            headers: { 'X-Requested-With': 'XMLHttpRequest' }\r\n        })\r\n        .then(r => r.json())\r\n        .then(res => {\r\n            if(res.success) {\r\n                alert('\ud83d\ude80 Cota\u00e7\u00e3o publicada com sucesso!');\r\n                window.location.href = \"https:\/\/safratransportadora.com.br\/cotacao\/\";\r\n            } else {\r\n                alert('Erro: ' + res.data);\r\n                btn.disabled = false;\r\n                btn.innerText = \"\ud83d\udce4 PUBLICAR COTA\u00c7\u00c3O PARA TODOS FORNECEDORES\";\r\n            }\r\n        })\r\n        .catch(err => {\r\n            alert('Erro de conex\u00e3o. Verifique o console.');\r\n            btn.disabled = false;\r\n        });\r\n    });\r\n});\r\n<\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-1084","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/safratransportadora.com.br\/cotacao\/wp-json\/wp\/v2\/pages\/1084","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/safratransportadora.com.br\/cotacao\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/safratransportadora.com.br\/cotacao\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/safratransportadora.com.br\/cotacao\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/safratransportadora.com.br\/cotacao\/wp-json\/wp\/v2\/comments?post=1084"}],"version-history":[{"count":7,"href":"https:\/\/safratransportadora.com.br\/cotacao\/wp-json\/wp\/v2\/pages\/1084\/revisions"}],"predecessor-version":[{"id":1105,"href":"https:\/\/safratransportadora.com.br\/cotacao\/wp-json\/wp\/v2\/pages\/1084\/revisions\/1105"}],"wp:attachment":[{"href":"https:\/\/safratransportadora.com.br\/cotacao\/wp-json\/wp\/v2\/media?parent=1084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}