# AIPT Transaction Management System Architecture

## System Overview Diagram

```mermaid
graph TB
    subgraph "Frontend Layer"
        A[AdminLTE Dashboard] --> B[Transaction Views]
        A --> C[Action Type Views]
        B --> D[Create Transaction]
        B --> E[Edit Transaction]
        B --> F[Transaction Reports]
        C --> G[Manage Action Types]
    end

    subgraph "Controller Layer"
        H[AccTransactionController] --> I[Transaction Management]
        J[ActionsTypeTransactionController] --> K[Action Type Management]
        I --> L[Multi-Module Support]
        I --> M[Approval Workflow]
        I --> N[Financial Processing]
        I --> O[Reporting & Export]
    end

    subgraph "Model Layer"
        P[AccTransaction] --> Q[Core Transaction Data]
        R[ActionsTypeTransaction] --> S[Transaction Type Config]
        T[AccTransactionsComments] --> U[Audit Trail]
        V[Department] --> W[Organizational Structure]
        X[User] --> Y[Role Management]
    end

    subgraph "Database Layer"
        Z[(acc_transactions)] --> AA[Financial Data]
        BB[(actions_type_transactions)] --> CC[Workflow Config]
        DD[(acc_transactions_comments)] --> EE[Comments & History]
        FF[(departments)] --> GG[Department Info]
        HH[(users)] --> II[User & Role Data]
    end

    subgraph "Integration Modules"
        JJ[Trademarks Module] --> KK[trade_mark_tickets]
        LL[Patents Module] --> MM[pt_patent_tkts]
        NN[Litigation Module] --> OO[li_cases]
    end

    subgraph "External Features"
        PP[Excel Export] --> QQ[Arabic Text Support]
        RR[Role-based Access] --> SS[Approval Workflow]
        TT[Multi-currency] --> UU[Financial Calculations]
    end

    A --> H
    A --> J
    H --> P
    J --> R
    P --> Z
    R --> BB
    H --> JJ
    H --> LL
    H --> NN
    I --> PP
    I --> RR
    I --> TT
```

## Data Flow Diagram

```mermaid
sequenceDiagram
    participant U as User
    participant C as Controller
    participant M as Model
    participant D as Database
    participant W as Workflow Engine

    U->>C: Create Transaction Request
    C->>M: Load Action Type
    M->>D: Query actions_type_transactions
    D-->>M: Return role_ranks config
    M-->>C: Return workflow definition
    C->>W: Initialize approval workflow
    W->>D: Create transaction with role_ranks
    D-->>W: Transaction created
    W-->>C: Success response
    C-->>U: Redirect to success page

    Note over U,W: Approval Process
    U->>C: Approve/Reject Request
    C->>W: Process approval
    W->>D: Update role_ranks status
    D-->>W: Status updated
    W->>D: Create approval comment
    W-->>C: Approval processed
    C-->>U: Update UI with new status
```

## Module Integration Architecture

```mermaid
graph LR
    subgraph "Core Transaction System"
        A[AccTransactionController]
        B[AccTransaction Model]
        C[Transaction Views]
    end

    subgraph "Trademarks Module"
        D[TradeMarkTicket Model]
        E[trade_mark_tickets table]
        F[Trademark Views]
    end

    subgraph "Patents Module"
        G[PatentTicket Model]
        H[pt_patent_tkts table]
        I[Patent Views]
    end

    subgraph "Litigation Module"
        J[LiCases Model]
        K[li_cases table]
        L[Litigation Views]
    end

    A --> D
    A --> G
    A --> J
    B --> E
    B --> H
    B --> K
    C --> F
    C --> I
    C --> L
```

## Approval Workflow System

```mermaid
stateDiagram-v2
    [*] --> Created: Transaction Created
    Created --> Pending: Role 1 Approval
    Pending --> Pending: Role 2 Approval
    Pending --> Pending: Role 3 Approval
    Pending --> Approved: All Roles Approved
    Pending --> Rejected: Any Role Rejects
    Approved --> [*]
    Rejected --> [*]

    note right of Pending
        Each role must approve in sequence
        User can only see transactions where
        all previous roles are approved
    end note
```

## Key Features Matrix

| Feature | Implementation | Technology |
|---------|---------------|------------|
| Multi-Module Support | Polymorphic relationships | Laravel Eloquent |
| Role-based Workflow | JSON role_ranks array | Custom logic |
| Financial Management | Multi-currency support | PHP calculations |
| Arabic Text Support | UTF-8 normalization | PhpSpreadsheet |
| Performance Optimization | Pre-fetching, pagination | Query optimization |
| Export Functionality | Excel with images | PhpSpreadsheet |
| Audit Trail | Comments system | Database logging |
| Security | Role-based access control | Laravel middleware |

## Database Schema Relationships

```mermaid
erDiagram
    acc_transactions ||--o{ acc_transactions_comments : has
    acc_transactions }o--|| departments : belongs_to
    acc_transactions }o--|| actions_type_transactions : has_type
    acc_transactions }o--|| users : created_by
    
    actions_type_transactions }o--|| departments : belongs_to
    
    departments ||--o{ users : has
    departments ||--o{ actions_type_transactions : has
    
    acc_transactions {
        int id PK
        string aiptref
        string clientref
        decimal value
        decimal value_usd
        json role_ranks
        string related_table
        int related_id
        boolean has_bills
    }
    
    actions_type_transactions {
        int id PK
        string name
        int department_id FK
        json role_ranks
        boolean has_bills
    }
    
    departments {
        int id PK
        string department_name
    }
    
    users {
        int id PK
        string name
        int role_id FK
        int department_id FK
    }
```

This architecture demonstrates a sophisticated, enterprise-level transaction management system with robust approval workflows, multi-module integration, and advanced features for intellectual property management.








