country_mode in database/ payment options

This commit is contained in:
Vladless
2025-12-10 12:44:27 +03:00
parent 82c664fa68
commit 54c8b8cee9
10 changed files with 196 additions and 91 deletions
+8 -4
View File
@@ -2,6 +2,7 @@ from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from aiogram.utils.keyboard import InlineKeyboardBuilder
from ..panel.keyboard import AdminPanelCallback, build_admin_back_btn
from core.settings.money_config import get_currency_mode
from .settings_config import (
BUTTON_TITLES,
MODES_TITLES,
@@ -192,12 +193,14 @@ def build_settings_money_kb(money_state: dict[str, object]) -> InlineKeyboardMar
).pack(),
)
mode = str(money_state.get("CURRENCY_MODE") or "RUB").upper()
if mode not in ("RUB", "USD", "RUB+USD"):
mode = "RUB"
mode, one_screen = get_currency_mode()
if mode == "RUB+USD" and one_screen:
mode_text = "RUB+USD (одним экраном)"
else:
mode_text = mode
builder.button(
text=f"Режим валют: {mode}",
text=f"Режим валют: {mode_text}",
callback_data=AdminPanelCallback(
action="settings_money_currency",
page=0,
@@ -214,3 +217,4 @@ def build_settings_money_kb(money_state: dict[str, object]) -> InlineKeyboardMar
)
return builder.as_markup()
+14 -4
View File
@@ -137,19 +137,21 @@ async def open_currency_mode_menu(callback: CallbackQuery) -> None:
money_config = MONEY_CONFIG
mode = str(money_config.get("CURRENCY_MODE") or "RUB").upper()
if mode not in ("RUB", "USD", "RUB+USD"):
if mode not in ("RUB", "USD", "RUB+USD", "RUB+USD_ONE_SCREEN"):
mode = "RUB"
text = (
"Выберите режим валют:\n\n"
"• RUB — все цены только в рублях;\n"
"• USD — все цены только в долларах;\n"
"• RUB+USD — мультивалюта, оба варианта."
"• RUB+USD — мультивалюта, выбор валюты перед оплатой;\n"
"• RUB+USD (одним экраном) — мультивалюта, все кассы на одном экране."
)
rub_checked = mode == "RUB"
usd_checked = mode == "USD"
multi_checked = mode == "RUB+USD"
multi_one_screen_checked = mode == "RUB+USD_ONE_SCREEN"
keyboard = InlineKeyboardMarkup(
inline_keyboard=[
@@ -169,6 +171,12 @@ async def open_currency_mode_menu(callback: CallbackQuery) -> None:
callback_data=AdminPanelCallback(action="settings_money_currency_set", page=3).pack(),
),
],
[
InlineKeyboardButton(
text=("✅ RUB+USD (одним экраном)" if multi_one_screen_checked else "RUB+USD (одним экраном)"),
callback_data=AdminPanelCallback(action="settings_money_currency_set", page=4).pack(),
),
],
[
InlineKeyboardButton(
text="Назад",
@@ -190,7 +198,7 @@ async def set_currency_mode(
) -> None:
mode_index = callback_data.page
if mode_index not in (1, 2, 3):
if mode_index not in (1, 2, 3, 4):
await callback.answer("Некорректный выбор", show_alert=True)
return
@@ -198,8 +206,10 @@ async def set_currency_mode(
new_mode = "RUB"
elif mode_index == 2:
new_mode = "USD"
else:
elif mode_index == 3:
new_mode = "RUB+USD"
else:
new_mode = "RUB+USD_ONE_SCREEN"
money_config = MONEY_CONFIG.copy()
money_config["CURRENCY_MODE"] = new_mode