53 lines
1.8 KiB
Markdown
53 lines
1.8 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
PYTHONPATH=. python scripts/inspect_jasmin_candidates_for_opportunity.py \
|
|
--opportunity-id <OPPORTUNITY_ID> \
|
|
--sync \
|
|
--days 30
|
|
```
|
|
|
|
Para substituir por um candidato válido:
|
|
|
|
```bash
|
|
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>
|
|
```
|