Pular para o conteúdo principal

BeautyService (Servico de Estetica)

O BeautyService representa um servico individual dentro de um agendamento, rastreando a execucao e pagamento.

Descricao

Cada BeautyService e uma instancia de um SaleService (tipo de servico) executado para um pet especifico. Ele pode ser criado diretamente no agendamento ou vir de uma venda ja realizada.

Dados

Informacoes do Servico

CampoTipoObrigatorioDescricao
nameTextoAutoNome do servico (copiado do SaleService)
statusSelecaoSimEstado do servico
time_in_minutesNumeroSimDuracao em minutos
priceMonetarioSimValor do servico

Rastreamento

CampoTipoDescricao
paidBooleanoSe esta pago
purchasedBooleanoSe foi comprado via pacote

Relacionamentos

Pertence a

EntidadeObrigatorioDescricao
AccountSimConta do petshop
StoreSimFilial
BeautyAppointmentSimAgendamento pai
SaleServiceSimTipo de servico
PetSimPet atendido
CustomerSimCliente
CartItemNaoItem de venda (se vendido)
SaleNaoVenda associada

Ciclo de Vida

Estados

StatusDescricao
availableDisponivel para agendamento
scheduledAgendado em um BeautyAppointment
doneServico executado
purchasedComprado (pacote), aguardando agendamento

Origem dos Servicos

Criado no Agendamento

  1. Usuario seleciona servicos ao criar agendamento
  2. BeautyService criado com status "available" ou "scheduled"
  3. Nao esta vinculado a venda inicialmente

Vindo de Venda (PDV)

  1. Cliente compra servico no PDV
  2. Venda e paga
  3. BeautyService criado com status "available"
  4. Servico fica disponivel para agendamento

Vindo de Pacote

  1. Cliente compra pacote de servicos
  2. Cria um BeautyService para cada item do pacote
  3. Status = "purchased"
  4. Servico pode ser agendado posteriormente

Integracao com Venda

Geracao de Venda no Checkout

Quando agendamento muda para "checkout":

  1. Busca servicos nao pagos
  2. Cria ou atualiza venda
  3. Cria CartItem para cada servico
  4. Vincula BeautyService ao CartItem e Sale

Pagamento

Quando venda e paga:

  1. BeautyService recebe paid = true
  2. CartItem recebe status "paid"

Calculo de Duracao

No Agendamento

agendamento.service_time = sum(beauty_services.time_in_minutes)
agendamento.end_time = date_time + (service_time / 1440) dias

Multiplos Servicos

Servicos sao executados sequencialmente, tempo total e a soma.

Sincronizacao de Status

Quando BeautyAppointment muda de status:

  1. Se muda para "checkout": todos BeautyServices mudam para "done"
  2. Status do servico acompanha o agendamento

Cancelamento

Ao Cancelar Agendamento

  • Servicos pagos: voltam para status "purchased" (podem ser reagendados)
  • Servicos nao pagos: sao destruidos

Ao Voltar para Scheduled

  • Servicos desvinculados da venda
  • CartItems destruidos
  • Venda vazia e destruida

Validacoes

CampoRegra
sale_service_idObrigatorio
time_in_minutesObrigatorio, maior que 0
priceObrigatorio, maior ou igual a 0

Automacoes

Ao Criar

  1. Copia dados do SaleService (nome, preco, tempo)
  2. Define status inicial

Ao Atualizar

  1. Sincroniza status com agendamento
  2. Atualiza flag "paid" baseado no pagamento

Escopos

EscopoDescricao
availableDisponiveis para agendamento
scheduledJa agendados
doneExecutados
paidPagos
pendingNao pagos