Phase 115 complete (vertical slice "zamowienie z NIP -> faktura PDF"):
- Task 1: InvoiceRepository + InvoiceService (dual-flow orchestrator) +
InvoiceIssueException + FakturowniaApiClient::createInvoice + buildPdfUrl
- Task 2: InvoiceController + OrdersController::toggleInvoiceRequested +
OrdersRepository::setInvoiceRequested + auto-import invoice_requested z
Allegro (invoice.required) i shopPRO (5-key flexible parser) + show.php
(toggle w zakladce Platnosci + warunkowy przycisk Wystaw fakture)
- Task 3: Lista wystawionych /settings/accounting/invoices/issued z filtrami
+ invoice_preview + invoice_pdf Dompdf template + hub link
- Task 3b (dodany): NIP lookup przez MF Biala Lista (publiczne API, bez
rejestracji) — MfWhitelistApiClient w src/Core/Http/ + /api/nip/lookup +
przycisk "Pobierz z GUS" w formularzu
Auto-fixes podczas smoke testu (5):
- GUS endpoint Fakturowni nie istnial (HTML 404 -> "json is not valid");
switch na MF Biala Liste
- PHP 8.5 curl_close() deprecation wycieka HTML przed JSON; usuniete z
MfWhitelistApiClient i FakturowniaApiClient (3 miejsca)
- Fakturownia 422 payment_to_kind_days (nieistniejace pole) -> usuniete
- Generic "error" w 422 -> parser plaskuje errors: {pole: [...]} +
error_log z 1000 znakow raw body
- Fakturownia security odrzuca seller_*/department_id jako "create new
department"; usuniete z payloadu (Fakturownia uzywa danych konta)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
84 lines
3.5 KiB
Markdown
84 lines
3.5 KiB
Markdown
# Project State
|
|
|
|
## Project Reference
|
|
|
|
See: .paul/PROJECT.md (updated 2026-05-07)
|
|
|
|
**Core value:** Sprzedawca moze obslugiwac zamowienia ze wszystkich kanalow sprzedazy i nadawac przesylki bez przelaczania sie miedzy platformami.
|
|
**Current focus:** v3.7 Invoices — Phase 113 + 114 shipped; nastepna faza 115 (wystawianie faktury z zamowienia) do zaplanowania
|
|
|
|
## Current Position
|
|
|
|
Milestone: v3.7 Invoices (Fakturownia integration) — In progress
|
|
Phase: 116 of TBD (TBD — kandydaci v3.7 lub przejscie na kolejny milestone) — Not started
|
|
Plan: pending
|
|
Status: Phase 115 closed; transition done; ready to plan kolejna faze
|
|
Last activity: 2026-05-10 — UNIFY 115-01 complete + transition: PROJECT.md/ROADMAP.md/changelog zaktualizowane
|
|
|
|
Progress:
|
|
- Milestone v3.7: [██████░░░░] ~55% (Phase 113 + 114 + 115 zamkniete; kandydaci: XLSX invoices export, INVOICE-IDEMP-115, invoice.created event, curl_close shopPRO backfill)
|
|
- Phase 115: [██████████] 100% — Complete
|
|
|
|
## Loop Position
|
|
|
|
Current loop state:
|
|
```
|
|
v3.7 milestone:
|
|
Phase 113 (Fakturownia Integration Foundation): Complete
|
|
Phase 114 (Accounting Configs Refactor): Complete
|
|
Phase 115 (Wystawianie faktury z zamowienia): Complete
|
|
Phase 116 (TBD): not started
|
|
```
|
|
|
|
```
|
|
PLAN ──▶ APPLY ──▶ UNIFY
|
|
✓ ✓ ✓ [Phase 115 closed; ready for Phase 116 plan]
|
|
```
|
|
|
|
## Session Continuity
|
|
|
|
Last session: 2026-05-10
|
|
Stopped at: Phase 115 transition complete (PROJECT.md + ROADMAP.md updated, SUMMARY zapisany, changelog zaktualizowany)
|
|
Next action: /paul:plan dla kolejnej fazy (v3.7 kandydaci: XLSX export listy faktur, INVOICE-IDEMP-115, invoice.created automation event, lub backfill `curl_close()` w shopPRO)
|
|
Resume file: .paul/phases/115-invoice-from-order/115-01-SUMMARY.md
|
|
|
|
## Git State
|
|
|
|
Last commit: 6129042 feat(114): accounting configs refactor + invoice configs CRUD
|
|
Branch: main
|
|
Feature branches merged: none
|
|
|
|
## Pending Actions
|
|
|
|
- **Phase 113-01 (smoke test wykonany przez usera 2026-05-10):** OK
|
|
- Manualne testy AC-1..AC-7 dla Phase 112 na zywej bazie (XAMPP online)
|
|
- Backfill zamowienia #882 — operator robi recznie po wdrozeniu (poza zakresem planu)
|
|
- Uruchom migracje gdy XAMPP online: `php bin/migrate.php` (delivery_statuses)
|
|
- Recznie odtworzyc istniejace reguly automatyzacji z grupowymi kluczami (BREAKING z 108-02)
|
|
|
|
## Deferred to Next Milestones
|
|
|
|
- Phase 68 - Code Deduplication Refactor (0/2 Planning, nigdy nie rozpoczety)
|
|
- STAT-NET - netto shopPRO z API lub z `order_items.tax_rate` (`.paul/TODO.md`)
|
|
- Mobile Orders List / Mobile Order Details / Mobile Settings (TBD z poprzedniego roadmapu)
|
|
- sonar-scanner - skan dla phase 105, 106, 107, 108 nie zostal uruchomiony (skill gap odnotowany)
|
|
- INDEX-106-01 - indeksy DB dla query `customer_returned_count`: `order_addresses(order_id, address_type)`, `shipment_packages(order_id, delivery_status)` (gdy dataset >50k wierszy)
|
|
|
|
## Skill Audit (Phase 108)
|
|
|
|
| Expected | Invoked | Notes |
|
|
|----------|---------|-------|
|
|
| sonar-scanner (required) | o | Wymagany po APPLY 108-01 i 108-02 - odlozony |
|
|
|
|
## Skill Audit (Phase 110)
|
|
|
|
| Expected | Invoked | Notes |
|
|
|----------|---------|-------|
|
|
| sonar-scanner (required) | yes | Skan uruchomiony po APPLY; raport wyslany do SonarQube. |
|
|
|
|
## Phase 110 Notes
|
|
|
|
- Local HTTP verification blocked by MySQL/XAMPP connection refused.
|
|
- PHPUnit not run: `composer` unavailable in PATH and `vendor/` absent.
|
|
- Sonar issue import to `DOCS/todo.md` not performed because SonarQube MCP/resources are unavailable in this session.
|