Files
ACORE/templates/pages/purchases.html
T
lokses c3f56f8a3e Portal redesign from template, real-data pages, test suite, Celery config
- templates: new shell from ACORE-template (mobile sidebar + bottom nav,
  themes, wallpaper, user dropdown), Django-ized nav with push-url;
  login rebranding; ACORE-template/ gitignored
- new pages wired to real data: databases (Directory types/counts),
  it-support (Ticket create form + my tickets), dashboard (live counters),
  structure (departments with head heuristic + pharmacy staffing status);
  static mockups for news/tasks/email/chat/purchases/hr-portal/help
- tests: 57 tests — ad_connector (ldap3 MOCK_SYNC client, sync scenarios,
  signals, mapping page), mattermost_connector (sync on mocks, bare-except
  regression), core (pages smoke, tickets, directories, tree rebuild)
- celery: add missing acore/celery.py app + CELERY_* settings (broker from
  env, eager mode without broker locally); wrap signal .delay calls so an
  unreachable broker no longer breaks employee saves

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 22:41:46 +03:00

132 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<div class="page-content">
<div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:1.5rem;">
<div>
<h1 style="font-size:1.25rem; font-weight:500; color:var(--color-foreground);">Закупівлі</h1>
<p style="font-size:0.875rem; color:var(--color-muted-foreground); margin-top:0.25rem;">Управління замовленнями та постачальниками</p>
</div>
<button class="btn btn-primary" style="display:inline-flex; align-items:center; gap:0.375rem;">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" x2="12" y1="5" y2="19"/><line x1="5" x2="19" y1="12" y2="12"/></svg>
Нове замовлення
</button>
</div>
<!-- Статистика -->
<div style="display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; margin-bottom:1.5rem;">
<div class="stat-card">
<div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:0.75rem;">
<span style="font-size:0.75rem; font-weight:500; color:var(--color-muted-foreground); text-transform:uppercase; letter-spacing:0.05em;">Відкриті</span>
<div style="width:2rem; height:2rem; border-radius:0.5rem; background:hsl(205 80% 55% / 0.12); color:hsl(205 80% 45%); display:flex; align-items:center; justify-content:center;">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="8" cy="21" r="1"/><circle cx="19" cy="21" r="1"/><path d="M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12"/></svg>
</div>
</div>
<div style="font-size:1.5rem; font-weight:700; color:var(--color-foreground);">14</div>
<div style="font-size:0.75rem; color:var(--color-muted-foreground); margin-top:0.25rem;">замовлень</div>
</div>
<div class="stat-card">
<div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:0.75rem;">
<span style="font-size:0.75rem; font-weight:500; color:var(--color-muted-foreground); text-transform:uppercase; letter-spacing:0.05em;">В дорозі</span>
<div style="width:2rem; height:2rem; border-radius:0.5rem; background:hsl(38 92% 50% / 0.12); color:hsl(38 80% 35%); display:flex; align-items:center; justify-content:center;">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 17H3a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v3"/><rect width="7" height="7" x="14" y="10" rx="1"/><circle cx="17.5" cy="17.5" r="2.5"/><circle cx="7.5" cy="17.5" r="2.5"/></svg>
</div>
</div>
<div style="font-size:1.5rem; font-weight:700; color:var(--color-foreground);">6</div>
<div style="font-size:0.75rem; color:var(--color-muted-foreground); margin-top:0.25rem;">відправлень</div>
</div>
<div class="stat-card">
<div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:0.75rem;">
<span style="font-size:0.75rem; font-weight:500; color:var(--color-muted-foreground); text-transform:uppercase; letter-spacing:0.05em;">Виконано</span>
<div style="width:2rem; height:2rem; border-radius:0.5rem; background:hsl(152 55% 45% / 0.12); color:hsl(152 55% 35%); display:flex; align-items:center; justify-content:center;">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"/></svg>
</div>
</div>
<div style="font-size:1.5rem; font-weight:700; color:var(--color-foreground);">38</div>
<div style="font-size:0.75rem; color:var(--color-muted-foreground); margin-top:0.25rem;">цього місяця</div>
</div>
<div class="stat-card">
<div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:0.75rem;">
<span style="font-size:0.75rem; font-weight:500; color:var(--color-muted-foreground); text-transform:uppercase; letter-spacing:0.05em;">Сума</span>
<div style="width:2rem; height:2rem; border-radius:0.5rem; background:hsl(0 72% 44% / 0.1); color:hsl(0 72% 38%); display:flex; align-items:center; justify-content:center;">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 1v22M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg>
</div>
</div>
<div style="font-size:1.5rem; font-weight:700; color:var(--color-foreground);">₴ 1.24M</div>
<div style="font-size:0.75rem; color:var(--color-muted-foreground); margin-top:0.25rem;">квітень 2026</div>
</div>
</div>
<!-- Таблиця замовлень -->
<div style="background:var(--color-card); border-radius:0.75rem; border:1px solid var(--color-border); box-shadow:0 1px 2px rgb(0 0 0/0.05); overflow:hidden;">
<div style="padding:0.875rem 1.25rem; border-bottom:1px solid var(--color-border); display:flex; align-items:center; justify-content:space-between;">
<span style="font-size:0.8125rem; font-weight:500; color:var(--color-foreground);">Поточні замовлення</span>
<select class="input" style="width:10rem; font-size:0.8125rem; padding:0.3125rem 0.625rem;">
<option>Всі статуси</option>
<option>Очікує</option>
<option>Підтверджено</option>
<option>В дорозі</option>
<option>Отримано</option>
</select>
</div>
<table style="width:100%; border-collapse:collapse;">
<thead>
<tr style="background:var(--color-muted);">
<th style="padding:0.625rem 1.25rem; text-align:left; font-size:0.75rem; font-weight:600; color:var(--color-muted-foreground); text-transform:uppercase; letter-spacing:0.04em;">№ Замовлення</th>
<th style="padding:0.625rem 1rem; text-align:left; font-size:0.75rem; font-weight:600; color:var(--color-muted-foreground); text-transform:uppercase; letter-spacing:0.04em;">Постачальник</th>
<th style="padding:0.625rem 1rem; text-align:left; font-size:0.75rem; font-weight:600; color:var(--color-muted-foreground); text-transform:uppercase; letter-spacing:0.04em;">Категорія</th>
<th style="padding:0.625rem 1rem; text-align:left; font-size:0.75rem; font-weight:600; color:var(--color-muted-foreground); text-transform:uppercase; letter-spacing:0.04em;">Сума</th>
<th style="padding:0.625rem 1rem; text-align:left; font-size:0.75rem; font-weight:600; color:var(--color-muted-foreground); text-transform:uppercase; letter-spacing:0.04em;">Дата</th>
<th style="padding:0.625rem 1rem; text-align:left; font-size:0.75rem; font-weight:600; color:var(--color-muted-foreground); text-transform:uppercase; letter-spacing:0.04em;">Статус</th>
<th style="padding:0.625rem 1rem;"></th>
</tr>
</thead>
<tbody>
<tr class="tr-hover">
<td style="padding:0.875rem 1.25rem; font-size:0.8125rem; font-weight:500; color:var(--color-foreground);">ЗМ-2026-0142</td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-foreground);">БаДМ Україна</td>
<td style="padding:0.875rem 1rem;"><span class="badge badge-info">Медикаменти</span></td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-foreground);">₴ 84 520</td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-muted-foreground);">16.04.2026</td>
<td style="padding:0.875rem 1rem;"><span class="badge badge-warning">В дорозі</span></td>
<td style="padding:0.875rem 1rem; text-align:right;"><button class="btn btn-ghost" style="font-size:0.75rem; padding:0.25rem 0.625rem;">Деталі</button></td>
</tr>
<tr class="tr-hover">
<td style="padding:0.875rem 1.25rem; font-size:0.8125rem; font-weight:500; color:var(--color-foreground);">ЗМ-2026-0141</td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-foreground);">Оптіма Фарм</td>
<td style="padding:0.875rem 1rem;"><span class="badge badge-info">Медикаменти</span></td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-foreground);">₴ 127 300</td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-muted-foreground);">15.04.2026</td>
<td style="padding:0.875rem 1rem;"><span class="badge badge-success">Отримано</span></td>
<td style="padding:0.875rem 1rem; text-align:right;"><button class="btn btn-ghost" style="font-size:0.75rem; padding:0.25rem 0.625rem;">Деталі</button></td>
</tr>
<tr class="tr-hover">
<td style="padding:0.875rem 1.25rem; font-size:0.8125rem; font-weight:500; color:var(--color-foreground);">ЗМ-2026-0140</td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-foreground);">МедТек ТОВ</td>
<td style="padding:0.875rem 1rem;"><span class="badge badge-muted">Обладнання</span></td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-foreground);">₴ 43 800</td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-muted-foreground);">14.04.2026</td>
<td style="padding:0.875rem 1rem;"><span class="badge badge-info">Підтверджено</span></td>
<td style="padding:0.875rem 1rem; text-align:right;"><button class="btn btn-ghost" style="font-size:0.75rem; padding:0.25rem 0.625rem;">Деталі</button></td>
</tr>
<tr class="tr-hover">
<td style="padding:0.875rem 1.25rem; font-size:0.8125rem; font-weight:500; color:var(--color-foreground);">ЗМ-2026-0139</td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-foreground);">Фармако</td>
<td style="padding:0.875rem 1rem;"><span class="badge badge-info">Медикаменти</span></td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-foreground);">₴ 92 150</td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-muted-foreground);">12.04.2026</td>
<td style="padding:0.875rem 1rem;"><span class="badge badge-muted">Очікує</span></td>
<td style="padding:0.875rem 1rem; text-align:right;"><button class="btn btn-ghost" style="font-size:0.75rem; padding:0.25rem 0.625rem;">Деталі</button></td>
</tr>
<tr class="tr-hover">
<td style="padding:0.875rem 1.25rem; font-size:0.8125rem; font-weight:500; color:var(--color-foreground); border-bottom:none;">ЗМ-2026-0138</td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-foreground); border-bottom:none;">CleanPro</td>
<td style="padding:0.875rem 1rem; border-bottom:none;"><span class="badge badge-muted">Госптовари</span></td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-foreground); border-bottom:none;">₴ 18 600</td>
<td style="padding:0.875rem 1rem; font-size:0.8125rem; color:var(--color-muted-foreground); border-bottom:none;">10.04.2026</td>
<td style="padding:0.875rem 1rem; border-bottom:none;"><span class="badge badge-success">Отримано</span></td>
<td style="padding:0.875rem 1rem; text-align:right; border-bottom:none;"><button class="btn btn-ghost" style="font-size:0.75rem; padding:0.25rem 0.625rem;">Деталі</button></td>
</tr>
</tbody>
</table>
</div>
</div>