Produção make-to-order no Drupal Commerce: de uma folha de cálculo a um módulo contrib
Na Josefinas, cada par de sapatos é feito à mão em Portugal depois de a encomenda ser colocada. Não há armazém com stock acabado: a cliente compra, e um atelier começa a trabalhar. Durante anos, a ponte entre "encomenda paga" e "encomenda enviada" foi uma folha de cálculo partilhada. Dizia o que havia para produzir, quem estava a fazer o quê, e quando estaria pronto. E vivia completamente fora da loja: sem ligação às encomendas reais, sem estados, sem histórico, e sem forma de saber onde se perdia tempo.
Substituímos essa folha por um módulo Drupal. Gere a produção da Josefinas há meses e hoje entregamo-lo à comunidade: o Commerce Make-to-Order está disponível no drupal.org, com release estável 1.0.0.
O que faz
O Commerce Make-to-Order acrescenta uma camada de produção ao Drupal Commerce. Make-to-order (também escrito made-to-order ou build-to-order; em português, produção por encomenda) significa produzir apenas depois de receber a encomenda do cliente, em vez de manter stock pré-feito. Quando uma encomenda chega a um estado configurável (por exemplo, paga), o módulo cria uma MTO order por cada artigo: uma ordem de produção que a equipa acompanha da fila até à conclusão.
Cada ordem de produção corre um workflow State Machine desenhado para ateliers reais: Draft, Queued, Waiting for Materials, In Production, Quality Check, Rework, Completed, Canceled. Um chumbo no controlo de qualidade não volta silenciosamente para produção: passa por um estado próprio de Rework e regressa ao Quality Check, para que a taxa de aprovação à primeira e o retrabalho sejam mensuráveis em vez de invisíveis.
À volta desse núcleo está o que uma equipa de produção precisa no dia a dia:
- Numeração das ordens via Commerce Number Pattern (MTO-2026-00042)
- Atribuição a membros da equipa, prioridades e datas-limite com destaque de atrasos
- Data estimada de conclusão, calculada automaticamente por configuração
- Notas internas, notas de transição e notas de equipa com notificação opcional por email
- Timeline de atividade e histórico completo de estados com tempos por estado
- Dashboard de analytics de produção: gargalos, desempenho por pessoa, esperas por materiais, métricas de QC, entregas dentro do prazo
Fechar o ciclo com a loja
A parte interessante é o que acontece quando a produção termina. O módulo oferece dois modos de integração com a encomenda Commerce:
- Sincronização de estado: quando todas as ordens de produção de uma encomenda ficam completas, a encomenda transita diretamente (por exemplo, de Processing para Shipped).
- Integração com envios: com o Commerce Shipping, as ordens de produção ligam-se ao envio criado no checkout, e quando a última fica completa a encomenda é promovida a um estado "pronta a enviar". A equipa de expedição acrescenta tracking, divide envios se necessário, e envia.
A automação tem um limite importante, aprendido em produção: os hold states. Alguns estados da encomenda representam uma decisão humana deliberada, como uma cliente que pediu para não enviar já. É configurável que estados a promoção automática nunca pode atropelar; nesses casos o módulo regista uma nota na encomenda e deixa a decisão a uma pessoa.
Batalhado em produção, depois publicado
Isto não é uma v1 construída em abstrato. O módulo geriu centenas de ordens de produção reais na Josefinas antes da primeira release pública. Publicá-lo significou generalizar o que era específico do site (os hold states passaram a configuração por tipo, as integrações passaram a opcionais), acrescentar cobertura de testes própria contra os workflows do core do Drupal Commerce, e limpar tudo aos standards do drupal.org.
E funciona em conjunto com o resto do nosso trabalho contrib: com o Commerce Order Amend, alterar uma encomenda já colocada mantém as ordens de produção sincronizadas com os artigos alterados.
Como obter
composer require drupal/commerce_make_to_order:^1.0
Requer Drupal 10 ou 11, Commerce 2.x ou 3.x e State Machine. O Commerce Shipping é opcional, para o modo de integração com envios.
Se geres uma loja onde as coisas se fazem depois de se venderem (mobiliário, moda, print on demand, qualquer produção artesanal), gostávamos de saber como encaixa no teu fluxo. A issue queue está aberta.