# ActivateCurrency

## Permission Scope

currency

## Overview

ActivateCurrency re-enables a previously deactivated currency, making it available for new transactions. This command supports scenarios where a temporarily suspended currency needs to be restored to active use, such as resuming operations in a market after a temporary exit.

## Business Rules

- Target currency must exist in the system
- Target currency must be in Inactive status
- Activating an already active currency returns success with no state change
- No impact on historical transactions that used this currency while inactive

## Process Flow

```mermaid
flowchart TD
    A[Receive activate request] --> B{Currency exists?}
    B -->|No| C[Return error: not found]
    B -->|Yes| D{Current status?}
    D -->|Active| E[Return success: already active]
    D -->|Inactive| F[Update status to Active]
    F --> G[Return activated currency]
```

## External Dependencies

- None

## Error Scenarios

- **CURRENCY_NOT_FOUND**: Referenced currency does not exist

## Test Cases

- throws when currency doesn't exist
- returns currency unchanged when already active
- activates inactive currency
