# Phase 8: Payments and Invoice Actions - Completion Log

## Date Completed
2026-03-26

## Summary

Implemented Admin V2 checkout operations on top of the unified workstation:
- wallet settlement for draft orders
- cash and POS desk settlement
- Stripe and NowPayments payment link generation
- payment link + QR delivery by email
- invoice generation, send, and regeneration from the same V2 workflow

This phase is wired directly in `OrdersPage` and backed by dedicated Admin V2 actions for payment and invoice orchestration.

## Created / Modified Files

- `app/Actions/AdminV2/Payments/PayOrderWithWalletAction.php`
- `app/Actions/AdminV2/Payments/MarkOrderAsPaidByDeskAction.php`
- `app/Actions/AdminV2/Payments/CreateOrderPaymentLinkAction.php`
- `app/Actions/AdminV2/Payments/SendOrderPaymentLinkAction.php`
- `app/Actions/AdminV2/Invoices/GenerateOrRefreshOrderInvoiceAction.php`
- `app/Actions/AdminV2/Invoices/SendOrderInvoiceAction.php`
- `app/Filament/V2/Pages/OrdersPage.php`
- `resources/views/filament/v2/pages/orders.blade.php`
- `tests/Feature/Filament/AdminV2OrdersPageTest.php`

## Migrations

- None.

## Tests Added / Updated

- `tests/Feature/Filament/AdminV2OrdersPageTest.php`
  - validates desk settlement (cash) from V2 workstation
  - validates NowPayments link generation and payment-link email sending
  - validates invoice generate/send/regenerate flow from V2 workstation

## Verification

- `php artisan test tests/Feature/Filament/AdminV2OrdersPageTest.php --testdox` (pass)
- `php artisan test tests/Feature/Filament/AdminV2ShellTest.php --testdox` (pass)
- `php artisan test tests/Feature/Filament/AdminV2CardexCoreTest.php --testdox` (pass)
- `./vendor/bin/phpstan analyse --memory-limit=-1 --no-progress app/Actions/AdminV2/Payments/PayOrderWithWalletAction.php app/Actions/AdminV2/Payments/MarkOrderAsPaidByDeskAction.php app/Actions/AdminV2/Payments/CreateOrderPaymentLinkAction.php app/Actions/AdminV2/Payments/SendOrderPaymentLinkAction.php app/Actions/AdminV2/Invoices/GenerateOrRefreshOrderInvoiceAction.php app/Actions/AdminV2/Invoices/SendOrderInvoiceAction.php app/Filament/V2/Pages/OrdersPage.php tests/Feature/Filament/AdminV2OrdersPageTest.php` (pass)
- `./vendor/bin/pint app/Actions/AdminV2/Payments/PayOrderWithWalletAction.php app/Actions/AdminV2/Payments/MarkOrderAsPaidByDeskAction.php app/Actions/AdminV2/Payments/CreateOrderPaymentLinkAction.php app/Actions/AdminV2/Payments/SendOrderPaymentLinkAction.php app/Actions/AdminV2/Invoices/GenerateOrRefreshOrderInvoiceAction.php app/Actions/AdminV2/Invoices/SendOrderInvoiceAction.php app/Filament/V2/Pages/OrdersPage.php resources/views/filament/v2/pages/orders.blade.php tests/Feature/Filament/AdminV2OrdersPageTest.php` (pass)

## Risks / Deviations

- Stripe link generation is implemented in the same path as NowPayments, but current automated coverage exercises the NowPayments branch only.
- Cash/POS flows are designed for desk settlement without mandatory media upload in V2 (receipt media handling remains available in API manager endpoints).
