# Reimbursement Request

- Module key: `ReimbursementRequest`
- Category: `Accounting/Finance`
- Path: `app/Modules/ReimbursementRequest`

## Ringkasan

Reimbursement Request berada di kategori Accounting/Finance. Modul ini memiliki 14 definisi route, 1 controller, 2 model, dan 1 view. Database module terdeteksi pada tabel: `reimbursement_requests`, `reimbursement_attachments`.

## Flowchart

```mermaid
flowchart TD
    A[User / Operator] --> B[Menu Reimbursement Request]
    B --> C[Routes: 14]
    C --> D[Controllers: 1]
    D --> E[Views: 1]
    D --> F[(Tables: 2<br/>reimbursement_requests<br/>reimbursement_attachments)]
    D --> G[Validation / Business Rules]
    G --> F
    F --> H[Report / Export / Audit]
```


## Routes

- `Route::middleware(['auth', 'ip.block', 'menu.access'])->group(function () {`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::prefix('reimbursement-request')->name('reimbursement_request.')->group(function () {`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::get('/', [ReimbursementRequestController::class, 'index'])->name('index');`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::get('refs', [ReimbursementRequestController::class, 'refs'])->name('refs');`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::get('data', [ReimbursementRequestController::class, 'data'])->name('data');`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::post('/', [ReimbursementRequestController::class, 'store'])->name('store');`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::put('{id}', [ReimbursementRequestController::class, 'update'])->name('update');`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::delete('{id}', [ReimbursementRequestController::class, 'destroy'])->name('destroy');`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::post('{id}/submit', [ReimbursementRequestController::class, 'submit'])->name('submit');`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::post('{id}/approve', [ReimbursementRequestController::class, 'approve'])->name('approve');`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::post('{id}/reject', [ReimbursementRequestController::class, 'reject'])->name('reject');`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::get('{id}/attachments', [ReimbursementRequestController::class, 'attachments'])->name('attachments');`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::post('{id}/attachments', [ReimbursementRequestController::class, 'uploadAttachment'])->name('upload_attachment');`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`
- `Route::delete('{id}/attachments/{attId}', [ReimbursementRequestController::class, 'deleteAttachment'])->name('delete_attachment');`  
  File: `app/Modules/ReimbursementRequest/routes/web.php`

## Controllers

- `app/Modules/ReimbursementRequest/Http/Controllers/ReimbursementRequestController.php`

## Models

- `app/Modules/ReimbursementRequest/Models/ReimbursementAttachmentModel.php`
- `app/Modules/ReimbursementRequest/Models/ReimbursementRequestModel.php`

## Views

- `app/Modules/ReimbursementRequest/Resources/views/index.blade.php`

## Database / Migration

### `reimbursement_requests`
- Actions: `create`
- Columns: 16
  - `request_no:string`
  - `karyawan_id:unsignedBigInteger`
  - `approval_flow_id:unsignedBigInteger`
  - `approval_request_id:unsignedBigInteger`
  - `request_date:date`
  - `amount:decimal`
  - `category:string`
  - `notes:text`
  - `status:string`
  - `created_by:unsignedBigInteger`
  - `approved_by:unsignedBigInteger`
  - `approved_at:timestamp`
  - `rejected_reason:text`
  - `is_active:boolean`
  - `karyawan_id:index`
  - `status:index`
- Migrations:
  - `app/Modules/ReimbursementRequest/Database/migrations/2026_03_27_132200_create_reimbursement_requests_table.php`
### `reimbursement_attachments`
- Actions: `create`
- Columns: 7
  - `reimbursement_request_id:unsignedBigInteger`
  - `file_path:string`
  - `file_name:string`
  - `mime:string`
  - `size_bytes:unsignedBigInteger`
  - `uploaded_by:unsignedBigInteger`
  - `reimbursement_request_id:index`
- Migrations:
  - `app/Modules/ReimbursementRequest/Database/migrations/2026_03_27_132210_create_reimbursement_attachments_table.php`
