---
phase: 87-shipment-delete
plan: 01
subsystem: shipments
tags: [php, shipment-packages, crud, ui]

requires: []
provides:
  - Usuwanie przesylek z poziomu szczegolow zamowienia
affects: []

tech-stack:
  added: []
  patterns: [OrderProAlerts.confirm for destructive actions]

key-files:
  created: []
  modified:
    - src/Modules/Shipments/ShipmentPackageRepository.php
    - src/Modules/Shipments/ShipmentController.php
    - routes/web.php
    - resources/views/orders/show.php

key-decisions:
  - "Hard delete z bazy (bez soft-delete) — spójne z resztą systemu"
  - "Usuwanie tylko lokalnego rekordu, bez kasowania z API przewoźnika"

patterns-established: []

duration: ~5min
started: 2026-04-08T00:00:00Z
completed: 2026-04-08T00:00:00Z
---

# Phase 87 Plan 01: Shipment Delete Summary

**Usuwanie przesyłek z zakładki Przesyłki w szczegółach zamówienia z potwierdzeniem OrderProAlerts.confirm**

## Performance

| Metric | Value |
|--------|-------|
| Duration | ~5min |
| Tasks | 2 completed |
| Files modified | 4 |

## Acceptance Criteria Results

| Criterion | Status | Notes |
|-----------|--------|-------|
| AC-1: Przycisk usuwania widoczny przy przesyłce | Pass | Kolumna Akcje z przyciskiem "Usun" btn--danger |
| AC-2: Potwierdzenie przed usunięciem | Pass | OrderProAlerts.confirm z fallback na native confirm |
| AC-3: Usunięcie przesyłki po potwierdzeniu | Pass | DELETE z DB, cleanup etykiety, activity log, flash + redirect |

## Accomplishments

- Endpoint POST `/orders/{id}/shipment/{packageId}/delete` z walidacją CSRF i owner check
- Cleanup pliku etykiety z dysku przy usunięciu
- Activity log `shipment_deleted` z tracking number i provider info
- Przycisk "Usun" z dialogiem potwierdzenia w tabeli przesyłek

## Files Created/Modified

| File | Change | Purpose |
|------|--------|---------|
| `src/Modules/Shipments/ShipmentPackageRepository.php` | Modified | Metoda `delete(int $id): void` |
| `src/Modules/Shipments/ShipmentController.php` | Modified | Metoda `delete()` — CSRF, owner check, label cleanup, activity log |
| `routes/web.php` | Modified | Route POST `/orders/{id}/shipment/{packageId}/delete` |
| `resources/views/orders/show.php` | Modified | Kolumna Akcje, przycisk Usun, JS confirm handler |

## Decisions Made

| Decision | Rationale | Impact |
|----------|-----------|--------|
| Hard delete (nie soft-delete) | Spójne z resztą systemu, brak potrzeby historii usuniętych | Prostsze, activity log zachowuje ślad |
| Brak kasowania z API przewoźnika | Usuwamy tylko lokalny rekord; przesyłka u przewoźnika istnieje niezależnie | Bezpieczne — nie wpływa na realną przesyłkę |
| Fallback na native confirm | Na wypadek gdyby OrderProAlerts nie był załadowany | Robustność |

## Deviations from Plan

None — plan executed exactly as written.

## Issues Encountered

None.

## Next Phase Readiness

**Ready:**
- Funkcjonalność usuwania przesyłek kompletna i gotowa do użycia

**Concerns:**
- None

**Blockers:**
- None

---
*Phase: 87-shipment-delete, Plan: 01*
*Completed: 2026-04-08*
