2.5 KiB
ClientFlow v3.2 — HTMX, validações e operação sem terminal
Esta versão é incremental em cima da v3.1. O objetivo é tornar o fluxo Jasmin/Packlink mais visível e operável pela UI, sem reescrever o dashboard inteiro.
Principais alterações
HTMX progressivo na oportunidade
A página de oportunidade passa a usar HTMX em blocos específicos:
- cartão Documentos Jasmin;
- cartão Produtos;
- ações de outbox associadas à oportunidade.
O comportamento esperado é:
[Criar orçamento]
→ cria item pending na outbox
→ atualiza apenas o cartão Documentos Jasmin
→ mostra estado pending/sent/failed
→ polling atualiza o cartão a cada 10 segundos
Isto reduz a sensação de que “não aconteceu nada” depois de clicar num botão.
Validação antes de criar orçamento
Antes de criar outbox jasmin.create_quotation, o sistema valida:
- oportunidade com cliente local associado;
- cliente com nome fiscal;
- cliente com NIF;
- morada/código postal/cidade quando ainda não existe
jasmin_customer_party_key; - pelo menos uma linha de produto ativa;
- todas as linhas com
jasmin_sales_itempreenchido; - preços unitários maiores que zero.
Se faltar algo, a UI mostra o erro diretamente no cartão Jasmin e não cria outbox inválida.
Produtos por HTMX
No cartão Produtos da oportunidade:
- adicionar produto atualiza apenas o cartão;
- remover produto atualiza apenas o cartão;
- total é recalculado no bloco;
- produtos sem
jasmin_sales_itemaparecem como bloqueio visual para orçamento.
Outbox visível na oportunidade
O cartão Documentos Jasmin mostra as ações recentes Jasmin relacionadas com a oportunidade:
create_quotation;convert_quotation_to_invoice;- estado
pending,sent,failed; - último erro;
- botão Reprocessar para itens
failed/pending.
Filtro de produtos sem Artigo Jasmin
Em /products, o filtro de estado ganhou a opção:
Ativos sem Artigo Jasmin
Serve para encontrar rapidamente produtos que ainda bloqueiam emissão de orçamento Jasmin.
Continuação recomendada
Para v3.3:
- Obter PDF de orçamento/fatura.
- Mostrar link/número real do documento quando o GET Jasmin devolver
documentType,serieeseriesNumber. - Adicionar ações HTMX em
/integrationspara testar Jasmin/Packlink. - Implementar painel de Packlink semelhante ao painel Jasmin.
- Refatorar
admin_dashboard.pyparaapp/admin_ui/pages/por etapas.