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):
|
for i, w in enumerate(widths, 1):
|
||||||
ws.column_dimensions[ws.cell(row=1, column=i).column_letter].width = w
|
ws.column_dimensions[ws.cell(row=1, column=i).column_letter].width = w
|
||||||
ws.freeze_panes = "A2"
|
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()
|
buffer = BytesIO()
|
||||||
wb.save(buffer)
|
wb.save(buffer)
|
||||||
return Response(
|
return Response(
|
||||||
|
|||||||
Reference in New Issue
Block a user