Files
clientflow_backend/docs/CLIENTFLOW_V4926_8_2_NOTES.md
2026-06-09 22:55:58 +01:00

1.8 KiB

ClientFlow v4926.8.2

Objetivo

Evitar que uma oportunidade associe/importa um orçamento Jasmin antigo, fechado, convertido ou anulado quando existe um orçamento/proforma aberto mais recente para o mesmo cliente fiscal.

Alterações

  • Classificação de ciclo de vida dos documentos Jasmin a partir de payload.record:
    • documentStatusDescription
    • documentStatus
    • documentLineStatusDescription
    • statusWasCompleted
    • isDeleted
    • isDraft
  • Candidatos Jasmin agora são ordenados por:
    1. aberto/válido primeiro;
    2. quotation/proforma antes de invoice;
    3. data/série mais recente;
    4. score de match fiscal.
  • Documentos fechados/convertidos/anulados aparecem apenas como auditoria e o botão fica desativado.
  • link_and_import_jasmin_candidate_async rejeita importação de candidato não aberto/válido.
  • Novo botão na UI: Sincronizar Jasmin para buscar documentos recentes antes de escolher candidato.
  • Novo botão na UI: Substituir atual, para trocar um orçamento/proforma importado por engano por um candidato aberto mais recente.
  • Novo script de inspeção:
    • scripts/inspect_jasmin_candidates_for_opportunity.py
  • Novo script de reparação:
    • scripts/replace_jasmin_document_for_opportunity.py

Operação segura

Para diagnosticar:

PYTHONPATH=. python scripts/inspect_jasmin_candidates_for_opportunity.py \
  --opportunity-id <OPPORTUNITY_ID> \
  --sync \
  --days 30

Para substituir por um candidato válido:

PYTHONPATH=. python scripts/replace_jasmin_document_for_opportunity.py \
  --opportunity-id <OPPORTUNITY_ID> \
  --item-id <RECONCILIATION_ITEM_ID> \
  --dry-run

PYTHONPATH=. python scripts/replace_jasmin_document_for_opportunity.py \
  --opportunity-id <OPPORTUNITY_ID> \
  --item-id <RECONCILIATION_ITEM_ID>