Compare OrderDate as real dates (dd.MM.yyyy storage broke across month boundaries) and bump AssemblyVersion so desktop picks up the Gitea release.
Co-authored-by: Cursor <cursoragent@cursor.com>
Store client markup on each Consignee so it survives restarts and price refresh; show only name and address in the selection dialog with a wider window.
Co-authored-by: Cursor <cursoragent@cursor.com>
Apply available buyer/price-list/region discounts to summary.price on download, keep consignee carts separate, and harden SQLite startup/migrations.
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist last successful login only, show active pharmacy in the status bar, and keep settings compact at the bottom-right.
Co-authored-by: Cursor <cursoragent@cursor.com>
Перевести desktop-клиент на работу с текущими buyer orders и локальным SQLite-кешем, чтобы отправка заказов и синхронизация документов работали с уже развернутым сервером без старых MSSQL-зависимостей.
Co-authored-by: Cursor <cursoragent@cursor.com>
## Summary
- Реальный прогресс загрузки прайса 0–100%: по байтам при скачивании,
затем по позициям при обработке и сохранении в БД
- Настройка папки экспорта накладных и CSV-экспорт из контекстного меню
## Test plan
- [ ] Запустить обновление прайса и убедиться, что полоска идёт от 0 до
100 с текстом «сколько / сколько»
- [ ] В авторизации задать папку экспорта накладных
- [ ] Экспортировать накладную в CSV через контекстное меню
Users can choose the export directory in auth settings; right-click on an invoice saves a UTF-8 CSV into that folder.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show marquee while waiting for the API and determinate progress while saving rows so the UI no longer looks frozen.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prompt for Location ID after login, move cart delete there, refine price-list Backspace navigation, and log every API failure with stack and response body.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show names on the left and dosages on the right after selection, then open supplier offers for the chosen pair. Persist TradeName/Dosage on download and avoid crashes when rebinding or pressing Escape.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enable Получить накладную for sent orders, build local invoices without refusals, and stop the tab close menu from covering dedicated grid menus. Also fix price-list Backspace search and refresh the Release dist binaries.
Co-authored-by: Cursor <cursoragent@cursor.com>
Harden UCPriceList number parsing and selection handling after download, guard ModernDataGridView row header autosize, and refresh price list from menu load action.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add ModernTabControl/SplitContainer for cart UI without system borders, fix button corner artifacts and dialog text contrast, and use TitleBarTop green for auth header in light mode.
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist theme choice in settings, fix grid row colors on theme switch, and apply DWM caption styling to the main window and authorization dialog.
Co-authored-by: Cursor <cursoragent@cursor.com>
Right-click closes active or targeted document tabs, fix order items header overlap, and align the price-list search clear button with centered × glyph.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wrap selectors on narrow windows, cap text and combo widths on wide layouts, and move the comment button to a new row when space is tight.
Co-authored-by: Cursor <cursoragent@cursor.com>
Apply Primary gradient to «Обновить с сервера» after text is set, restore compact clear buttons on FOrders, and skip focus cues on icon-only controls.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add status footer with logged-in user, improve FOrders filters layout, migrate dialogs to ModernButton, and extend theming with Fluent Win11 palette and auto button styles.
Co-authored-by: Cursor <cursoragent@cursor.com>
WinForms app with Elfisa.UI, API integration, order workflow, invoices/refusals sync, and production-ready fixes from the desktop roadmap.
Co-authored-by: Cursor <cursoragent@cursor.com>