---
phase: 40-remove-order-list-bulk-print
plan: 01
subsystem: ui
tags: [orders, printing, cleanup, routing]
requires:
  - phase: 19-ui-integration
    provides: bulk print from orders list and print queue API wiring
provides:
  - removal of bulk print action from /orders/list
  - removal of /api/print/jobs/bulk endpoint and dead backend code
affects: [orders-list, printing-api, technical-docs]
tech-stack:
  added: [none]
  patterns: [feature decommission cleanup]
key-files:
  created:
    - .paul/phases/40-remove-order-list-bulk-print/40-01-SUMMARY.md
  modified:
    - src/Modules/Orders/OrdersController.php
    - resources/views/orders/list.php
    - src/Modules/Printing/PrintApiController.php
    - src/Modules/Printing/PrintJobRepository.php
    - routes/web.php
    - DOCS/ARCHITECTURE.md
    - DOCS/TECH_CHANGELOG.md
    - DOCS/todo.md
key-decisions:
  - "Bulk print from order list deprecated in favor of single-print flow"
  - "Proceed with APPLY via override without sonar-scanner (logged risk)"
patterns-established:
  - "When decommissioning features, remove UI + route + controller + repository references"
duration: 12min
started: 2026-03-25T22:17:00+01:00
completed: 2026-03-25T22:32:00+01:00
---

# Phase 40 Plan 01: Remove Order List Bulk Print Summary

**Usunieto mechanizm bulk print z listy zamowien, pozostawiajac druk pojedynczej etykiety i API klienta Windows bez regresji.**

## Performance

| Metric | Value |
|--------|-------|
| Duration | 12 min |
| Started | 2026-03-25T22:17:00+01:00 |
| Completed | 2026-03-25T22:32:00+01:00 |
| Tasks | 3 completed |
| Files modified | 11 |

## Acceptance Criteria Results

| Criterion | Status | Notes |
|-----------|--------|-------|
| AC-1: Brak akcji bulk print na liscie zamowien | Pass | Usuniety przycisk `Drukuj etykiety` i JS bulk request z `orders/list.php`. |
| AC-2: Mechanizm bulk print wycofany z backendu | Pass | Usunieta trasa `/api/print/jobs/bulk`, metoda kontrolera i martwa metoda repozytorium. |
| AC-3: Dokumentacja i TODO aktualne | Pass | `DOCS/ARCHITECTURE.md`, `DOCS/TECH_CHANGELOG.md`, `DOCS/todo.md` zaktualizowane; punkt 40 oznaczony jako wykonany. |

## Accomplishments

- Oczyszczono UI listy zamowien z akcji bulk print i powiazanej logiki JS.
- Oczyszczono backend drukowania z endpointu i kodu dedykowanego bulk print.
- Zaktualizowano dokumentacje techniczna i status zadania 40 w TODO.

## Verification Results

- `C:\xampp\php\php.exe -l src/Modules/Orders/OrdersController.php` -> PASS
- `C:\xampp\php\php.exe -l src/Modules/Printing/PrintApiController.php` -> PASS
- `C:\xampp\php\php.exe -l src/Modules/Printing/PrintJobRepository.php` -> PASS
- `C:\xampp\php\php.exe -l routes/web.php` -> PASS
- `rg -n "js-bulk-print-labels|/api/print/jobs/bulk|bulkCreateJobs|findPackagesWithLabelsByOrderIds" src resources/views routes` -> PASS (brak wynikow)

## Files Created/Modified

| File | Change | Purpose |
|------|--------|---------|
| `.paul/phases/40-remove-order-list-bulk-print/40-01-SUMMARY.md` | Created | Podsumowanie UNIFY planu 40-01 |
| `src/Modules/Orders/OrdersController.php` | Modified | Usuniecie przycisku bulk print z `header_actions` |
| `resources/views/orders/list.php` | Modified | Usuniecie front-endowego mechanizmu bulk print |
| `src/Modules/Printing/PrintApiController.php` | Modified | Usuniecie `bulkCreateJobs()` |
| `src/Modules/Printing/PrintJobRepository.php` | Modified | Usuniecie martwej metody pomocniczej bulk print |
| `routes/web.php` | Modified | Usuniecie trasy `POST /api/print/jobs/bulk` |
| `DOCS/ARCHITECTURE.md` | Modified | Aktualizacja opisu flow listy zamowien |
| `DOCS/TECH_CHANGELOG.md` | Modified | Wpis changelog dla fazy 40 |
| `DOCS/todo.md` | Modified | Oznaczenie punktu 40 jako wykonany |
| `.paul/STATE.md` | Modified | Aktualizacja APPLY/UNIFY i decyzji override |
| `.paul/ROADMAP.md` | Modified | Status fazy 40 jako complete |

## Decisions Made

| Decision | Rationale | Impact |
|----------|-----------|--------|
| Usunac bulk print z listy zamowien end-to-end | Wymaganie biznesowe z TODO #40 i uproszczenie flow | Brak akcji masowej na `/orders/list`, mniejsza zlozonosc kodu |
| Wykonac APPLY z override dla wymaganego `sonar-scanner` | Uzytkownik jawnie potwierdzil override | Ryzyko quality-check przeniesione do kolejnego etapu (odnotowane w STATE) |

## Deviations from Plan

### Summary

| Type | Count | Impact |
|------|-------|--------|
| Auto-fixed | 1 | Niski - poprawa sposobu edycji pliku z powodu problemu kodowania |
| Scope additions | 0 | Brak |
| Deferred | 1 | Niski - sonar przeniesiony poza APPLY |

**Total impact:** Minimalny, bez scope creep funkcjonalnego.

### Auto-fixed Issues

1. `apply_patch` nie dopasowal bloku JS w `orders/list.php` z powodu artefaktow kodowania; blok zostal bezpiecznie usuniety przez precyzyjna zamiane regex w PowerShell.

### Deferred Items

- `sonar-scanner` (required in SPECIAL-FLOWS) nieuruchomiony w APPLY 40-01 na podstawie jawnego `override`; decyzja wpisana do `STATE.md`.

## Next Phase Readiness

**Ready:**
- Faza 40 domknieta technicznie i dokumentacyjnie.
- Kod gotowy do planowania/wykonania fazy 41.

**Concerns:**
- Warto uruchomic `sonar-scanner` przy kolejnym domknieciu loopa, aby zamknac gap quality.

**Blockers:**
- None.

---
*Phase: 40-remove-order-list-bulk-print, Plan: 01*
*Completed: 2026-03-25*
