0578bfc2ae
update
2026-05-11 20:22:04 +02:00
2b4d843ae0
Merge branch 'main' of https://git.project-pro.pl/Project-Pro/orderPRO
2026-05-11 00:09:26 +02:00
ee1c5e5cfd
update
2026-05-11 00:09:23 +02:00
33ee1a1cf5
feat(115): wystawianie faktury z zamowienia (lokalne + delegowane Fakturownia)
...
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 >
2026-05-10 23:34:50 +02:00
6129042ff6
feat(114): accounting configs refactor + invoice configs CRUD
...
Phase 114 complete (v3.7 Invoices):
- /settings/accounting jako hub-rozdroze (Paragony / Faktury)
- /settings/accounting/receipts + /invoices osobne podstrony list i edycji
- InvoiceConfigRepository + Controller (CRUD z walidacja delegacji)
- Seed Domyslny VAT (NOT EXISTS idempotent)
- invoice-config-form.js (toggle is_delegated -> integration_id)
- confirm-delete.js (globalny modul OrderProAlerts.confirm)
- Legacy aliasy starych endpointow /settings/accounting/save|toggle|delete
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-10 22:32:29 +02:00
2382018739
feat(113): fakturownia integration foundation
...
Phase 113 complete (v3.7 Invoices):
- DB: invoices, invoice_configs, invoice_number_counters, fakturownia_integration_settings + orders.invoice_requested
- FakturowniaIntegrationRepository (multi-account via integrations.type='fakturownia')
- FakturowniaApiClient (testConnection; createInvoice/downloadPdf STUBs)
- IntegrationsRepository::updateTestResult() (reusable test-result writer)
- /settings/integrations/fakturownia (list + edit + test + delete)
- Karta Fakturownia w hubie /settings/integrations
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-10 22:11:55 +02:00
26a1e67c6d
update
2026-05-08 15:28:26 +02:00
322b23b7be
update
2026-05-07 23:35:18 +02:00
782a291210
feat(112): re-import data protection — delta-only re-import + project_generated preservation
...
Phase 112 / Plan 112-01 complete (v3.6):
- OrderImportRepository::upsertOrderAggregate split into create vs re-import paths
- replaceAddresses/Items/Notes/Shipments/StatusHistory invoked only on first import
- new updateOrderDelta() narrows UPDATE to status_code (cond.), payment_status,
total_paid, is_canceled_by_buyer, source_updated_at, payload_json, fetched_at
- source-side cancellation override (is_canceled_by_buyer=1 OR pull status_code='anulowane')
- identical-payload no-op guard via normalizePayloadJson()
- fixes case #882 : order_items.id stable, project_generated (Phase 97) preserved
- Phase 111 payment.status_changed emit retained without regression
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-07 23:22:37 +02:00
0e457aed38
update
2026-05-07 15:24:05 +02:00
1069ccb85e
update
2026-05-06 20:35:26 +02:00
cc07508006
update
2026-05-05 23:35:45 +02:00
5cf531d718
feat(111): payment transition event for Allegro+shopPRO re-import
...
Re-import zamowienia wykrywa tranzycje payment_status 0/1->2 i emituje
payment.status_changed, dzieki czemu chain reguly automatyzacji #7 zmienia
status na w_realizacji.
- OrderImportRepository: rozdzielenie paymentTransition (event 0/1->2) i
statusOverwriteAllowed (preservacja status_code z Phase 62)
- AllegroOrderImportService + ShopproOrdersSyncService: emit
payment.status_changed na re-imporcie (gate !wasCreated && wasPaymentTransition)
- bin/backfill_payment_transition_111.php: jednorazowy CLI dla zamowien
payment_status=2 && status_code='nieoplacone' (Allegro + shopPRO)
- Naprawa luki znalezionej w analizie zamowienia #864
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-05 23:35:14 +02:00
0da0241ebf
update
2026-05-05 12:59:44 +02:00
3aab40a35e
Merge branch 'main' of https://git.project-pro.pl/Project-Pro/orderPRO
2026-05-05 00:00:57 +02:00
a403a715e8
upate
2026-05-05 00:00:40 +02:00
1589cf29fa
update
2026-05-05 00:00:31 +02:00
fd63409bd9
update
2026-05-04 23:58:52 +02:00
9ff59f3f0d
update
2026-04-30 21:33:48 +02:00
61f10a688d
update
2026-04-29 15:14:18 +02:00
0b4ffb7146
feat(110): statistics summary
...
Phase 110 complete:
- add Statistics -> Podsumowanie page
- add monthly order count and value charts per integration plus total
- use Chart.js with table fallback and 04-2026 default history start
- update PAUL and DOCS technical documentation
2026-04-28 22:48:31 +02:00
1156ce046c
upadte
2026-04-28 22:17:25 +02:00
6d3dba89ed
feat(109): checkbox multiselect filters
...
Phase 109 complete:
- Add checkbox dropdown enhancement for statistics multi-select filters
- Preserve GET contract for channels[] and status_groups[]
- Update PAUL plan context to read .paul/codebase docs
Co-Authored-By: Codex <noreply@openai.com >
2026-04-28 22:15:04 +02:00
1009957fff
updaate
2026-04-28 15:09:48 +02:00
3f5784d8eb
update
2026-04-27 22:10:57 +02:00
0063402897
feat(108): delivery status management
...
Phase 108 complete (v3.2 milestone):
Plan 108-01 — Delivery Status DB & CRUD:
- Tabela delivery_statuses z seedem 11 statusow systemowych
- DeliveryStatusRepository (CRUD + per-request static cache)
- DeliveryStatus::setRepository() — DB fallback dla static final class
- Panel /settings/delivery-statuses (zakladki Statusy + Mapowanie)
- Sidebar przebudowany: Statusy zamowien + Statusy przesylek
Plan 108-02 — Automation Dropdowns z DB + UI Refactor:
- Dropdowny automatyzacji ladowane z DB (warunek shipment_status + akcja update_shipment_status)
- Walidacja przez DeliveryStatus::getAllStatuses()
- Osobna podstrona formularza CRUD (delivery-status-form.php)
- Lista uproszczona: rename Terminal -> Koncowy, usunieta kolumna Typ
- BREAKING: drop backward compat dla starych grupowych kluczy automatyzacji
- Bug fix: path params w DeliveryStatusesController via \$request->input('id')
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-27 22:10:24 +02:00
d8daf61de6
feat(107-automation-email-send-once): idempotent send-once per order for email automation
...
Phase 107 complete:
- New table automation_email_once_deliveries with UNIQUE KEY (rule_id, action_id, order_id)
- AutomationEmailOnceRepository: wasSent() / markSent() with ON DUPLICATE KEY guard
- AutomationService: send_once_per_order flag — mark only on successful send
- Checkbox "Wyslij tylko raz dla tego zamowienia" in rule form (edit + new action JS)
- 2 unit tests added; 3/3 passing (49 assertions)
Milestone v3.1 Operational Enhancements: COMPLETE (2/2 phases)
Co-Authored-By: Claude <noreply@anthropic.com >
2026-04-27 21:19:29 +02:00
5aca41750c
update
2026-04-27 15:02:06 +02:00
32d7ae9ceb
update
2026-04-27 12:17:21 +02:00
34dac15494
update
2026-04-26 21:55:49 +02:00
f5c5201a2f
chore: move TODO to .paul/codebase/todo.md
2026-04-26 21:55:32 +02:00
c3b68d5228
chore: add TODO(DELIVERY-STATUS-MGMT) - manage normalized statuses from panel
2026-04-26 21:54:24 +02:00
69f180a185
feat: add picked_up normalized delivery status (odebrana przez kuriera)
2026-04-26 21:52:58 +02:00
ca7540d374
chore: rename codebase map files to lowercase
2026-04-26 21:41:04 +02:00
b1b2cc5827
chore: generate codebase map in .paul/codebase/
...
INDEX, STACK, ARCHITECTURE, CONVENTIONS, TESTING, INTEGRATIONS, CONCERNS
2026-04-26 21:39:12 +02:00
4b998ea5be
update
2026-04-25 21:31:50 +02:00
4931c55338
update
2026-04-24 18:55:13 +02:00
bc80024d4a
update
2026-04-23 14:18:28 +02:00
c73b2fe9f6
update
2026-04-22 22:54:26 +02:00
cd1ea4a9db
update
2026-04-22 19:22:12 +02:00
8f43d0b8d9
update
2026-04-22 13:21:14 +02:00
8ef527e9ab
update
2026-04-21 18:05:44 +02:00
cea92469f9
update
2026-04-20 23:17:25 +02:00
fd1e23eb26
update
2026-04-19 22:43:02 +02:00
10cba24727
update
2026-04-19 00:10:58 +02:00
42efc857de
update
2026-04-17 19:15:55 +02:00
567e888664
feat(104-apaczka-weekend-delivery): Apaczka Paczka w Weekend dla paczkomatow InPost
...
Phase 104 complete:
- Backend: ApaczkaShipmentService::buildOptionsPayload() mapuje weekend_delivery -> option[19] = 1 w payloadzie API Apaczka v2
- Stala OPTION_KEYS jako rozszerzalne mapowanie pole formularza -> id opcji Apaczki
- Frontend: checkbox "Dostawa w weekend (sobota)" w prepare.php widoczny tylko dla supplier=INPOST + paczkomat (door_to_point=1 lub point_to_point=1)
- JS toggle oparty na atrybutach data-supplier/data-paczkomat z resetem stanu
- 3 nowe testy jednostkowe pokrywajace mapowanie buildOptionsPayload (phpunit OK 11/11)
- Hotfix integracyjny po UAT: ShipmentController::create() nie przekazywal pola weekend_delivery z requestu do formData providera (root cause: reczna lista pol w controllerze)
- Dokumentacja zaktualizowana (DOCS/ARCHITECTURE.md, DOCS/TECH_CHANGELOG.md)
DEFER-104-01: rozwazyc test integracyjny pelnego flow controller -> service lub refactor na request->all().
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-17 09:03:44 +02:00
3d61d3b2df
update
2026-04-16 23:19:11 +02:00
0e8f246d6f
update
2026-04-14 20:36:20 +02:00
e15b4ccf45
update
2026-04-13 22:31:06 +02:00