feat(экспорт): второй лист «Все позиции» — полная выгрузка, включая очередь
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+25
@@ -487,6 +487,31 @@ def export_xlsx():
|
||||
for i, w in enumerate(widths, 1):
|
||||
ws.column_dimensions[ws.cell(row=1, column=i).column_letter].width = w
|
||||
ws.freeze_panes = "A2"
|
||||
|
||||
# Второй лист — ВСЕ активные позиции как есть (включая очередь верификации),
|
||||
# чтобы выгрузка была полной: первый лист — чистый каталог, второй — всё сырьё.
|
||||
ws2 = wb.create_sheet("Все позиции")
|
||||
ws2.append(["Услуга (как в прайсе)", "Сопоставлено со справочником", "Специальность",
|
||||
"Клиника", "Цена резидент, ₸", "Цена нерезидент, ₸", "Прайс от", "Статус"])
|
||||
for cell in ws2[1]:
|
||||
cell.font = head_font
|
||||
cell.fill = head_fill
|
||||
sql_all = """SELECT pi.service_name_raw, s.name_ru AS matched, s.specialty, p.name AS partner,
|
||||
pi.price_resident, pi.price_nonresident, pi.effective_date,
|
||||
CASE WHEN pi.service_id IS NULL THEN 'в очереди' ELSE 'сопоставлено' END st
|
||||
FROM price_item pi
|
||||
JOIN partner p ON pi.partner_id = p.partner_id
|
||||
LEFT JOIN service s ON pi.service_id = s.service_id
|
||||
WHERE pi.is_active = 1
|
||||
ORDER BY pi.service_name_raw"""
|
||||
with db() as conn:
|
||||
for r in conn.execute(sql_all):
|
||||
ws2.append([r["service_name_raw"], r["matched"], r["specialty"], r["partner"],
|
||||
r["price_resident"], r["price_nonresident"], r["effective_date"], r["st"]])
|
||||
for i, w in enumerate([40, 40, 20, 24, 16, 18, 12, 14], 1):
|
||||
ws2.column_dimensions[ws2.cell(row=1, column=i).column_letter].width = w
|
||||
ws2.freeze_panes = "A2"
|
||||
|
||||
buffer = BytesIO()
|
||||
wb.save(buffer)
|
||||
return Response(
|
||||
|
||||
Reference in New Issue
Block a user