Múltiplos pilares por entrega + tela de preços só com pilares de preço
Consolidação — multi-pilar: - Uma entrega pode ter vários pilares ao mesmo tempo (Normal + Bônus + Retirada…), somando os valores. Toggles viraram multi-seleção (liga/desliga por pilar; classificar agora faz toggle, em massa só adiciona). - migration: unicidade passa de [consolidacao_id, tracking_id] para [consolidacao_id, tracking_id, tipo]. - classificadas_count/resumo contam entregas distintas (≥1 pilar). Configurações: - /admin/configuracoes lista só os pilares de PREÇO (empresa/notificações não são preço e saíram da tela). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -40,7 +40,8 @@ export default class extends Controller {
|
||||
tipo: tipo,
|
||||
motorista: this.motoristaValue
|
||||
})
|
||||
this.marcarToggleAtivo(tracking, tipo)
|
||||
// resp.ativo indica se o pilar ficou ligado ou desligado (toggle)
|
||||
this.setToggle(tracking, tipo, resp.ativo)
|
||||
this.atualizarResumo(resp)
|
||||
} catch (e) {
|
||||
alert("Erro ao classificar entrega. Tente novamente.")
|
||||
@@ -59,7 +60,7 @@ export default class extends Controller {
|
||||
motorista: this.motoristaValue,
|
||||
tracking_ids: [] // vazio = todas
|
||||
})
|
||||
this.linhaTargets.forEach(l => this.marcarToggleAtivo(l.dataset.tracking, tipo))
|
||||
this.linhaTargets.forEach(l => this.setToggle(l.dataset.tracking, tipo, true))
|
||||
this.atualizarResumo(resp)
|
||||
}
|
||||
|
||||
@@ -78,7 +79,7 @@ export default class extends Controller {
|
||||
motorista: this.motoristaValue,
|
||||
tracking_ids: ids
|
||||
})
|
||||
ids.forEach(id => this.marcarToggleAtivo(id, tipo))
|
||||
ids.forEach(id => this.setToggle(id, tipo, true))
|
||||
this.checkboxTargets.forEach(c => c.checked = false)
|
||||
this.atualizarResumo(resp)
|
||||
}
|
||||
@@ -99,18 +100,23 @@ export default class extends Controller {
|
||||
return resp.json()
|
||||
}
|
||||
|
||||
marcarToggleAtivo(tracking, tipo) {
|
||||
// Liga/desliga UM pilar (os demais pilares da entrega ficam como estão)
|
||||
setToggle(tracking, tipo, ativo) {
|
||||
const grupo = this.togglesTargets.find(t => t.dataset.tracking === tracking)
|
||||
if (!grupo) return
|
||||
grupo.querySelectorAll(".toggle-btn").forEach(b => {
|
||||
const ativo = b.dataset.tipo === tipo
|
||||
b.classList.toggle("ring-2", ativo)
|
||||
b.classList.toggle("ring-green-400", ativo)
|
||||
b.classList.toggle("scale-105", ativo)
|
||||
b.classList.toggle("opacity-50", !ativo)
|
||||
})
|
||||
|
||||
const btn = grupo.querySelector(`.toggle-btn[data-tipo="${tipo}"]`)
|
||||
if (btn) {
|
||||
btn.classList.toggle("ring-2", ativo)
|
||||
btn.classList.toggle("ring-green-400", ativo)
|
||||
btn.classList.toggle("scale-105", ativo)
|
||||
btn.classList.toggle("opacity-50", !ativo)
|
||||
}
|
||||
|
||||
// a linha está "classificada" se tiver qualquer pilar ligado
|
||||
const algumAtivo = grupo.querySelectorAll(".toggle-btn.ring-2").length > 0
|
||||
const linha = this.linhaTargets.find(l => l.dataset.tracking === tracking)
|
||||
if (linha) linha.dataset.classificada = "1"
|
||||
if (linha) linha.dataset.classificada = algumAtivo ? "1" : "0"
|
||||
}
|
||||
|
||||
atualizarResumo(dados) {
|
||||
|
||||
Reference in New Issue
Block a user