Plenty Orders Integration (service_omni): New endpoint POST /plenty/orders fetches and stores all Plenty orders for a given day (paginated, statusId=7); POST /plenty/orders/range backfills a full date range
Profit Tab (Statistics): New "Profits" tab in the Statistics page with a cron scheduler (daily auto-fetch of yesterday's Plenty orders) and a manual date range import panel
Profit Cron Job: New cron endpoints POST /statistics/profit/cron/start|stop and GET /statistics/profit/cron/status — runs daily at 06:00 to fetch yesterday's orders from Plenty
Plenty orders are parsed into a flat denormalized model (PlentyOrderLine) for direct Metabase consumption — one row per article line with all order-level fields included
Plenty_Manager.search_orders() now handles full pagination and returns typed List[PlentyOrderLine] directly
Plenty unpaid orders are now detected during parsing (properties typeId=4). Orders not fullyPaid are queued in a new plenty_pending_orders table and re-checked automatically for up to 7 days; a retry runner re-fetches orders by orderIds and moves newly-paid orders into the main plenty_orders table.
Fixed a bug in rituals monitor (service_omni) where discord webhooks were sent twice per item
Fixed cron registration/restore issue in Sellerlogic: task registration keys now match DB job names so scheduled jobs (e.g. the reprice job) are correctly restored on startup instead of being skipped.
Fixed serialization in Sellerlogicget_credentials: credential id values are now converted to strings before returning, avoiding Pydantic UUID serialization warnings in logs.