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>
68 lines
3.4 KiB
Markdown
68 lines
3.4 KiB
Markdown
# ЭльФиСА — Электронная Фармация
|
||
|
||
|
||
|
||
WinForms-клиент «Электронная Фармация» с современным UI на базе библиотеки **Elfisa.UI** (тема **PharmaTrust**).
|
||
|
||
|
||
|
||
## Структура
|
||
|
||
|
||
|
||
```
|
||
|
||
src/
|
||
|
||
Elfisa.UI/ — UI-библиотека (ThemeManager, Modern* контролы)
|
||
|
||
ElectronicPharmacy/ — основное приложение (SQLite, API, бизнес-логика)
|
||
|
||
```
|
||
|
||
|
||
|
||
## Сборка
|
||
|
||
|
||
|
||
Требуется .NET SDK 9+ (или MSBuild 16+) и .NET Framework 4.7.2.
|
||
|
||
|
||
|
||
```powershell
|
||
|
||
dotnet build Elfisa.sln -c Release
|
||
|
||
```
|
||
|
||
|
||
|
||
Запуск:
|
||
|
||
|
||
|
||
```powershell
|
||
|
||
.\src\ElectronicPharmacy\bin\Release\Электронная` Фармация.exe
|
||
|
||
```
|
||
|
||
|
||
|
||
База `efClient.db` копируется в output (`Data\efClient.db` или рядом с exe). Путь задаётся через `AppConfig.SqliteDbPath`.
|
||
|
||
|
||
|
||
## Настройки
|
||
|
||
|
||
|
||
В диалоге **Авторизация** (и в `Settings`):
|
||
|
||
|
||
|
||
- **URL API** — базовый адрес сервера (по умолчанию из `AppConfig`)
|
||
|
||
- **Location ID** — UUID точки для отправки заказов
|
||
|
||
- **Region ID** — опциональный фильтр при загрузке прайса
|
||
|
||
|
||
|
||
Переменная окружения `ELF_API_BASE_URL` переопределяет URL API.
|
||
|
||
|
||
|
||
## Архив для заказчика
|
||
|
||
|
||
|
||
```powershell
|
||
|
||
.\dist\build-release.ps1
|
||
|
||
```
|
||
|
||
|
||
|
||
Создаёт `dist\Электронная-Фармация.zip` с Release-сборкой.
|
||
|
||
|
||
|
||
## Основной цикл (V2)
|
||
|
||
|
||
|
||
1. Старт → проверка БД → выбор грузополучателя → прайс-лист
|
||
|
||
2. **Загрузить** — прайс с API в SQLite, обновление открытых вкладок прайса
|
||
|
||
3. Фильтр поставщика, поиск, набор в корзину с проверкой остатка
|
||
|
||
4. **Сохранить заказ** — мин. сумма по поставщику, уникальный номер, грузополучатель в `Orders`
|
||
|
||
5. **Отправить** — POST `/api/buyer/orders`, статус `ОТПРАВЛЕН` только у отправленного заказа
|
||
|
||
6. **Заказы** — фильтры по статусу, поставщику, грузополучателю; отправка одного заказа
|
||
|
||
7. **Отказы / Накладные** — синхронизация с `/api/buyer/invoices`
|
||
|
||
|
||
|
||
## Приёмочный чек-лист
|
||
|
||
|
||
|
||
1. Старт → БД → выбор точки → прайс
|
||
|
||
2. Загрузить → прайс обновился, корзина очищена с предупреждением
|
||
|
||
3. Фильтр поставщика + поиск + количество + проверка остатка
|
||
|
||
4. Сохранить заказ (мин. сумма, корректный номер, грузополучатель)
|
||
|
||
5. Отправить → только выбранные заказы → статус / ошибка API
|
||
|
||
6. Журнал: фильтры, комментарий, удаление `НОВЫЙ`
|
||
|
||
7. Отказы: загрузка с API + детали позиций
|
||
|
||
8. Авторизация + `location_id` в настройках
|
||
|
||
9. Единый UI: `UiDialogs` / toast, без debug-панелей загрузки
|
||
|