Ejemplo n.º 1
0
async def task_sign(call: CallbackQuery):
    # await call.answer(cache_time = 60)
    # print("task_sign id = {}".format(call.from_user.id))
    user_id = call.from_user.id
    enquiry = Enquiry(user_id)
    entities = enquiry.get_entities_for_paying("УПД подписан", "Нет")
    bonus = 0
    count_entities = 0
    for entity in entities:
        bonus += int(entity["f81291"])
        count_entities += 1
    # print("entities = {}".format(entities))
    # print("bonus = {}".format(bonus))
    summary_message = "Исполнитель <b>{}</b> запросил выплату в размере <b>{}</b> рублей по следующим заявкам, в количестве <b>{}</b> шт.".format(
        entities[0]["f79831"], bonus, count_entities)

    for manager in MANAGERS:
        await bot.send_message(manager, summary_message)
        for entity in entities:
            # print(format_enquiry_for_paying(entity))
            await bot.send_message(manager, format_enquiry_for_paying(entity))

    await call.answer(
        "Запрос на выплату в размере {} рублей по заявкам, в количестве {} шт. - отправлен"
        .format(bonus, count_entities),
        show_alert=True)  #, cache_time = 120
Ejemplo n.º 2
0
async def callback_paginator_for_paying(call: CallbackQuery,
                                        state: FSMContext):
    # print(f'callback_paginator  for paying -> {str(call.from_user.id)}')
    await state.reset_state(with_data=False)
    call_data = call.data
    state_name = ""
    # print(f"call_data = {call_data}")
    if call_data == 'signed':
        page = 1
        state_name = get_state_name(str(call_data))
        enquiries = Enquiry(call.from_user.id)
        # fetching data from DB
        entities = enquiries.get_entities_for_paying(state_name, "Нет")
        await state.update_data(request_data=entities,
                                state_name=state_name,
                                call_data=call_data)
        data_state = await state.get_data()
        request_data = data_state.get("request_data")
    # print(f"request_data = {request_data}")
    else:
        data_state = await state.get_data()
        request_data = data_state.get("request_data")
        # print(f"request_data = {request_data}")
        page = int(call.data.split('&')[1])
    # print(f'page={str(page)}')
    paginator = InlineKeyboardPaginator(
        0 if request_data is None else len(request_data),
        current_page=int(page),
        data_pattern='page&{page}')

    if len(request_data) if request_data is not None else 0 > 0:
        if data_state.get("call_data") == 'signed':
            paginator.add_after(
                InlineKeyboardButton(
                    text="{}  Запросить выплату для всех выполненных заявок".
                    format(emojize(":bell:")),
                    callback_data="task_sign&{}".format(request_data[
                        page - 1]["id"] if len(request_data) > 0 else [])))

    paginator.add_after(
        InlineKeyboardButton("{}  Назад".format(
            emojize(":leftwards_arrow_with_hook:")),
                             callback_data="choice_buttons"))
    await call.message.edit_text(format_enquiry_for_paying(
        request_data[page - 1] if len(request_data) > 0 else []),
                                 reply_markup=paginator.markup)