Saltar para o conteúdo
PMPaulo Mota
Voltar à demo

Como foi feito

Ficha de viatura, por dentro

Como as datas da revisão e da IPO se calculam a partir do histórico.

01

O problema

O cliente esquece a revisão e a IPO, e a oficina só se lembra quando ele aparece. A ficha guarda o histórico e daí tira as próximas datas, sem ninguém as escrever à mão.

02

O modelo

A viatura guarda a data da primeira matrícula, os quilómetros e as intervenções. A última revisão é a intervenção mais recente marcada como revisão.

TabelaPara que serve
vehiclesMatrícula, modelo, combustível, cliente, quilómetros e data da primeira matrícula.
jobsCada intervenção: data, quilómetros, descrição, valor e se conta como revisão.
remindersQuando foi enviado o último lembrete, para não repetir.
03

As regras das datas

Revisão: um ano ou 15 000 km depois da última, o que vier primeiro. IPO de ligeiros: aos 4 anos, depois de 2 em 2 até aos 8, e a partir daí todos os anos.

ts
// Revisão: um ano ou 15 000 km depois da última, o que vier primeiro.
export function nextService(v) {
  const last = lastService(v) ?? { date: v.firstReg, km: 0 };
  const dueKm = last.km + 15_000;
  const date = v.km >= dueKm ? today() : addYears(last.date, 1);
  return { date, km: dueKm };
}
04

O que faria diferente em produção

Os lembretes sairiam por SMS através de um fornecedor, com registo de envio e um limite para não incomodar o cliente duas vezes na mesma semana.

ts
// IPO de ligeiros: aos 4 anos, de 2 em 2 até aos 8, depois todos os anos.
export function nextIpo(v) {
  const due = [4, 6, 8, ...range(9, 40)].map(y => addYears(v.firstReg, y));
  const last = lastIpo(v);
  return due.find(d => !last || d > last.date);
}