Adição de mais um preço 'Termo especial'
This commit is contained in:
@@ -1,17 +1,18 @@
|
||||
// app/javascript/controllers/apontamento_termo_controller.js
|
||||
// Stimulus — Entrega de termo. Lança um lote de N termos para o motorista da tela.
|
||||
// Entrega sem NF nem código de rastreio: só a quantidade (stepper − N +), a um
|
||||
// preço fixo configurável.
|
||||
// Stimulus — Entrega de termo. Lança lotes de termos (normal e/ou especial) para
|
||||
// o motorista da tela. Entrega sem NF nem código de rastreio: só as quantidades
|
||||
// (um stepper − N + por tipo), cada tipo a um preço fixo configurável.
|
||||
|
||||
import { Controller } from "@hotwired/stimulus"
|
||||
|
||||
export default class extends Controller {
|
||||
static targets = ["modal", "quantidade", "erro", "veiculo"]
|
||||
static targets = ["modal", "quantidade", "quantidadeEspecial", "erro", "veiculo"]
|
||||
static values = { apontarTermoUrl: String, motorista: String }
|
||||
|
||||
abrir() {
|
||||
this.erroTarget.classList.add("hidden")
|
||||
this.quantidadeTarget.value = "1"
|
||||
this.quantidadeEspecialTarget.value = "0"
|
||||
this.modalTarget.classList.remove("hidden")
|
||||
}
|
||||
|
||||
@@ -24,26 +25,39 @@ export default class extends Controller {
|
||||
if (event.target === this.modalTarget) this.fechar()
|
||||
}
|
||||
|
||||
// Stepper
|
||||
// Steppers (mínimo 0 em ambos; o envio exige ao menos 1 no total)
|
||||
mais() {
|
||||
this.quantidadeTarget.value = String(this.qtdAtual() + 1)
|
||||
this.quantidadeTarget.value = String(this.qtdAtual(this.quantidadeTarget) + 1)
|
||||
}
|
||||
|
||||
menos() {
|
||||
this.quantidadeTarget.value = String(Math.max(1, this.qtdAtual() - 1))
|
||||
this.quantidadeTarget.value = String(Math.max(0, this.qtdAtual(this.quantidadeTarget) - 1))
|
||||
}
|
||||
|
||||
qtdAtual() {
|
||||
const n = parseInt(this.quantidadeTarget.value, 10)
|
||||
return Number.isFinite(n) && n > 0 ? n : 1
|
||||
maisEspecial() {
|
||||
this.quantidadeEspecialTarget.value = String(this.qtdAtual(this.quantidadeEspecialTarget) + 1)
|
||||
}
|
||||
|
||||
menosEspecial() {
|
||||
this.quantidadeEspecialTarget.value = String(Math.max(0, this.qtdAtual(this.quantidadeEspecialTarget) - 1))
|
||||
}
|
||||
|
||||
qtdAtual(alvo) {
|
||||
const n = parseInt(alvo.value, 10)
|
||||
return Number.isFinite(n) && n > 0 ? n : 0
|
||||
}
|
||||
|
||||
async adicionar(event) {
|
||||
event?.preventDefault()
|
||||
|
||||
const quantidade = this.qtdAtual()
|
||||
const motorista = this.motoristaValue.trim()
|
||||
const quantidade = this.qtdAtual(this.quantidadeTarget)
|
||||
const quantidadeEspecial = this.qtdAtual(this.quantidadeEspecialTarget)
|
||||
const motorista = this.motoristaValue.trim()
|
||||
if (!motorista) { this.mostrarErro("Motorista não identificado."); return }
|
||||
if (quantidade + quantidadeEspecial < 1) {
|
||||
this.mostrarErro("Informe ao menos um termo (normal ou especial).")
|
||||
return
|
||||
}
|
||||
|
||||
const btn = event.currentTarget
|
||||
btn.disabled = true
|
||||
@@ -56,9 +70,10 @@ export default class extends Controller {
|
||||
"X-CSRF-Token": document.querySelector('meta[name="csrf-token"]').content
|
||||
},
|
||||
body: JSON.stringify({
|
||||
motorista: motorista,
|
||||
quantidade: quantidade,
|
||||
vehicle: this.hasVeiculoTarget ? this.veiculoTarget.value : ""
|
||||
motorista: motorista,
|
||||
quantidade: quantidade,
|
||||
quantidade_especial: quantidadeEspecial,
|
||||
vehicle: this.hasVeiculoTarget ? this.veiculoTarget.value : ""
|
||||
})
|
||||
})
|
||||
const data = await resp.json()
|
||||
|
||||
@@ -12,7 +12,7 @@ export default class extends Controller {
|
||||
"consolidarBtn", "consolidarHint",
|
||||
"contadorClassificadas", "contadorTotal", "contadorManuais", "manuaisInfo",
|
||||
"qtdNormal", "qtdRetirada", "qtdBonus", "qtdDesconto", "qtdExtraordinaria",
|
||||
"qtdTermo", "qtdManuais", "valorTotal"
|
||||
"qtdTermo", "qtdTermoEspecial", "qtdManuais", "valorTotal"
|
||||
]
|
||||
|
||||
static values = {
|
||||
@@ -187,6 +187,8 @@ export default class extends Controller {
|
||||
this.qtdExtraordinariaTarget.textContent = porTipo["extraordinaria"] || 0
|
||||
if (this.hasQtdTermoTarget)
|
||||
this.qtdTermoTarget.textContent = porTipo["termo"] || 0
|
||||
if (this.hasQtdTermoEspecialTarget)
|
||||
this.qtdTermoEspecialTarget.textContent = porTipo["termo_especial"] || 0
|
||||
|
||||
const valor = dados.valor_total || 0
|
||||
this.valorTotalTarget.textContent =
|
||||
|
||||
Reference in New Issue
Block a user