Исходящие: удаление черновика (кнопка в карточке и в журнале) — только в статусе draft, с снятием поручения QUIK МНП, если бумаги заблокированы

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-09-25 15:22:08 +03:00
parent 4b81862a90
commit 16bfedb85f
6 changed files with 140 additions and 3 deletions
+25
View File
@@ -153,3 +153,28 @@ func (r *MemoryRepository) EventsOf(dealID string) []Event {
copy(out, src)
return out
}
// ErrNotDraft — удалить можно только черновик (заявку, которая ещё не уходила в НРД).
var ErrNotDraft = errors.New("m2mcore: удалить можно только черновик")
// DraftDeleter — хранилище умеет удалять черновики (сделка в состоянии draft вместе с событиями).
type DraftDeleter interface {
DeleteDraft(ctx context.Context, id string) error
}
// DeleteDraft удаляет сделку, если она в состоянии draft.
func (r *MemoryRepository) DeleteDraft(_ context.Context, id string) error {
r.mu.Lock()
defer r.mu.Unlock()
d, ok := r.byID[id]
if !ok {
return ErrNotFound
}
if d.State != StateDraft {
return ErrNotDraft
}
delete(r.byID, id)
delete(r.byGUID, d.GUID)
delete(r.events, id)
return nil
}