예제 #1
0
async def set_date_from_text(message:Message, state:FSMContext):
    data_state = await state.get_data()

    await bot.delete_message (
        chat_id=message.chat.id,
        message_id=data_state['message_to_delete']
    )
    await bot.delete_message (
        chat_id=message.chat.id,
        message_id=message.message_id
    )

    match = re.fullmatch(r'\d\d\.\d\d', message.text)

    if match:
        changed_request = data_state['changed_request']

        is_changed = True
        new_date = message.text

        changed_request[10] = message.chat.username
        changed_request[0] = new_date

        await state.update_data(is_changed=is_changed)
        await state.update_data(changed_request=changed_request)

        all_changes_data = data_state['all_changes_data']

        if 'date' not in all_changes_data:
            all_changes_data.append('date')
            await state.update_data(all_changes_data=all_changes_data)

        text = get_data_chosen_request(changed_request) + \
        '\n\n Выберите изменение:'

        await message.answer (
            text,
            reply_markup=create_kb_change_request(changed_request, is_changed)
        )

        await Processing.change_request_menu.set()

        return

    else:
        result = await message.answer (
            'Неправильный формат даты.' + \
            ' Попробуйте еще раз ввести в формате чч.мм.\n' + \
            '(пример для 11 ноября: 11.11)'
        )

        await state.update_data(message_to_delete=result.message_id)
        await Processing.typing_coustom_date.set()

        return
예제 #2
0
async def set_date_from_text(message: Message, state: FSMContext):
    data_state = await state.get_data()

    await bot.delete_message(chat_id=message.chat.id,
                             message_id=data_state['message_to_delete'])
    await bot.delete_message(chat_id=message.chat.id,
                             message_id=message.message_id)

    match = re.fullmatch(r'\d\d\d\d', message.text)

    if match:
        changed_request = data_state['changed_request']

        is_changed = True
        new_numb = message.text

        changed_request[10] = message.chat.username
        changed_request[2] = new_numb

        await state.update_data(is_changed=is_changed)
        await state.update_data(changed_request=changed_request)

        all_changes_data = data_state['all_changes_data']

        if 'numb' not in all_changes_data:
            all_changes_data.append('numb')
            await state.update_data(all_changes_data=all_changes_data)

        text = get_data_chosen_request(changed_request) + \
        '\n\n Выберите изменение:'

        await message.answer(text,
                             reply_markup=create_kb_change_request(
                                 changed_request, is_changed))

        await Processing.change_request_menu.set()

        return

    else:
        result = await message.answer(
            'Неправильный формат номера заявки.' + ' ' +
            'Попробуйте еще раз ввести в формате XXXX.\n(Например: 1546)')
        await state.update_data(message_to_delete=result.message_id)
        await Processing.new_request_id.set()

        return
예제 #3
0
async def close__sum_set(message: Message, state: FSMContext):
    data_state = await state.get_data()

    await bot.delete_message(chat_id=message.chat.id,
                             message_id=data_state['message_to_delete'])
    await bot.delete_message(chat_id=message.chat.id,
                             message_id=message.message_id)

    try:
        which_sum_change__amount = int(message.text)

        if which_sum_change__amount < 0:
            raise ValueError('f**k off')
        which_sum_change__amount = str(which_sum_change__amount)

    except Exception as e:
        await message.answer(
            text='Изменение заявки отменено. Формат суммы не правильный.',
            reply_markup=create_kb_coustom_main_menu(message.chat.id))

        await state.finish()

        return

    await state.update_data(which_sum_change__amount=which_sum_change__amount)

    data_state = await state.get_data()

    which_sum_change__sign = data_state['which_sum_change__sign']
    currency = data_state['which_sum_change__currency']

    if which_sum_change__sign == 'minus':
        sum = '-' + which_sum_change__amount
    else:
        sum = which_sum_change__amount

    changed_request = data_state['changed_request']

    if currency == 'rub':
        changed_request[5] = sum

    if currency == 'usd':
        changed_request[6] = sum

    if currency == 'eur':
        changed_request[7] = sum

    is_changed = True

    await state.update_data(is_changed=is_changed)
    await state.update_data(changed_request=changed_request)

    all_changes_data = data_state['all_changes_data']

    if 'sum' not in all_changes_data:
        all_changes_data.append('sum')
        await state.update_data(all_changes_data=all_changes_data)

    text = get_data_chosen_request(changed_request) + \
    '\n\n Выберите изменение:'

    await message.answer(text,
                         reply_markup=create_kb_change_request(
                             changed_request, is_changed))

    await Processing.change_request_menu.set()

    return
async def chosen_request_menu(call: CallbackQuery, state: FSMContext):
    '''
    > отложить на выдачу (для доставки, кэшина, обмена)
    > принято частично (для приема кэша, снятия с карт, обмена)
    > закрыть заявку
    > сообщение
    > изменить заявку
    > добавить пропуск
    > добавить комментарий
    > распаковать
    > отменить заявку
    > назад
    > главное меню
    '''
    await call.answer()
    await call.message.delete()

    data_btn = cb_chosen_requests.parse(call.data)

    if data_btn['type_btn'] == 'to_ready_for_give':
        # сбрасываем имя пользователя в текущей заявке
        data_state = await state.get_data()
        chosen_request = data_state['chosen_request']
        chosen_request[10] = '0'
        await state.update_data(chosen_request=chosen_request)
        # сбрасываем имя пользователя чтобы не отображалось
        ###################################################

        data_state = await state.get_data()
        chosen_request = data_state['chosen_request']

        rub, usd, eur = get_minus_FGH(chosen_request)

        if not rub == '': rub = rub + '\n'
        if not usd == '': usd = usd + '\n'

        await call.message.answer(
            text=
            f'Откладываем на выдачу полные суммы по заявке:\n{rub}{usd}{eur}\nили корректировать суммы?',
            reply_markup=create_kb_what_sum()
            # > скорректировать
            # > подтвердить
            # > вернуться к заявке
            # > назад - главное меню
        )

        await Processing.enter_reserve_to_ready_menu.set()

        return

    elif data_btn['type_btn'] == 'recived_chunck':
        # сбрасываем имя пользователя в текущей заявке
        data_state = await state.get_data()
        chosen_request = data_state['chosen_request']
        chosen_request[10] = '0'
        await state.update_data(chosen_request=chosen_request)
        # сбрасываем имя пользователя чтобы не отображалось
        ###################################################

        data_state = await state.get_data()
        chosen_request = data_state['chosen_request']

        await call.message.answer(
            text='Какая из исходных сумм по заявке принята частично?',
            reply_markup=create_kb_sum_correct_chunk(chosen_request)
            # > rub
            # > usd
            # > eur
            # > назад - главное меню
        )
        await Processing.enter_correct_sum_chunk_menu.set()

        return

    elif data_btn['type_btn'] == 'close_request':
        # L(11) - "Исполнено"
        # P(15) - Дата и время исполнения
        # K(10) - Исполнитель - имя исполнителя из телеги
        data_state = await state.get_data()
        chosen_request = data_state['chosen_request']

        text = get_text_before_close_request(chosen_request)
        # text = get_values_MNO_or_FGH_ifMNO_is_empty(chosen_request)

        await call.message.answer(
            text=text,
            reply_markup=create_kb_confirm_close_request(chosen_request)
            # > подтверждаю!
            # > закрыть с другой суммой
            # > скорректировать синие
            # > вернуться к заявке
            # > назад - главное меню
        )
        await Processing.close_request_menu.set()

        return

    elif data_btn['type_btn'] == 'message_to':
        data_state = await state.get_data()
        chosen_request = data_state['chosen_request']

        text = get_text_message_to(chosen_request)

        await call.message.answer(text=text,
                                  reply_markup=create_kb_message_keyboard())
        await Processing.message_processing.set()

        return

    elif data_btn['type_btn'] == 'change_request':
        data_state = await state.get_data()

        chosen_request = data_state['chosen_request']
        is_changed = False

        await state.update_data(changed_request=chosen_request)
        await state.update_data(is_changed=is_changed)
        await state.update_data(all_changes_data=[])

        text = get_data_chosen_request(chosen_request) + \
        '\n\n Выберите изменение:'

        await call.message.answer(text,
                                  reply_markup=create_kb_change_request(
                                      chosen_request, is_changed))

        await Processing.change_request_menu.set()

        return

    elif data_btn['type_btn'] == 'add_permit':
        result = await call.message.answer(
            'Введите Ф.И.О. которые будут добавленны')
        await state.update_data(message_to_delete=result.message_id)
        await Processing.add_permit.set()
        # ---> add_permit_message_handler <---

    elif data_btn['type_btn'] == 'add_comment':
        result = await call.message.answer(
            text='Напишите коментарий:', reply_markup=create_kb_back_button())
        await state.update_data(message_to_delete=result.message_id)

        await Processing.add_another_comment.set()
        # ---> ./change_request/change_request_menu

        return

    elif data_btn['type_btn'] == 'unpack':
        data_state = await state.get_data()
        chosen_request = data_state['chosen_request']
        username = call.message.chat.username
        chosen_request[10] = username
        chosen_request[11] = 'В обработке'
        chosen_request[12] = '0'
        chosen_request[13] = '0'
        chosen_request[14] = '0'
        chosen_request[16] = '0'
        req_id = chosen_request[1]
        chosen_request[9] = updating_log('UNPACK', username, chosen_request)

        result = await call.message.answer_sticker(
            'CAACAgIAAxkBAAL9pmBTBOfTdmX0Vi66ktpCQjUQEbHZAAIGAAPANk8Tx8qi9LJucHYeBA'
        )

        try:
            sheet.replace_row(chosen_request)
            current_requests,\
            in_processing_requests,\
            ready_to_give_requests =\
            sheet.get_numbs_processing_and_ready_requests()

        except Exception as e:
            print(e)
            await call.message.answer_sticker(
                'CAACAgIAAxkBAAL9rGBTCImgCvHJBZ-doEYr2jkvs6UEAAIaAAPANk8TgtuwtTwGQVceBA'
            )
            await call.message.answer(
                text='Не удалось соединиться с гугл таблицей...',
                reply_markup=create_kb_coustom_main_menu(call.message.chat.id))
            await state.finish()

            return

        await bot.delete_message(chat_id=call.message.chat.id,
                                 message_id=result.message_id)
        await state.update_data(current_requests=current_requests)

        persone = all_emoji['персона']
        text_notify_unpack = get_data_request_unpack(chosen_request)
        text_notify_unpack = text_notify_unpack + f'⚙️ Распаковано в обработку\n{persone}@{username}'

        await notify_someone(text_notify_unpack, 'admin', 'changer',
                             'executor')
        await notify_in_group_chat(text_notify_unpack)

        for request in current_requests:

            if req_id == request[1]:
                await state.update_data(chosen_request=request)

                break

        data_state = await state.get_data()
        chosen_request = data_state['chosen_request']
        text = get_data_chosen_request(chosen_request)

        await call.message.answer(
            text=text,
            reply_markup=create_kb_chosen_request(request)
            # > принято частично (для приема кэша, снятия с карт, обмена)
            # > отложить на выдачу (для доставки, кэшина, обмена)
            # > закрыть заявку
            # > сообщение
            # > изменить заявку
            # > отменить заявку
            # > назад главное меню
        )
        await Processing.enter_chosen_request_menu.set()

        return

    elif data_btn['type_btn'] == 'cancel_request':
        await call.message.answer(
            text='Отменить заявку?',
            reply_markup=create_kb_confirm_cancel_request())
        await Processing.confirm_cancel_request.set()
        # to confirm_cancel_requeest.py

        return

    elif data_btn['type_btn'] == 'show_log':
        data_state = await state.get_data()
        chosen_request = data_state['chosen_request']

        data_log = chosen_request[9]

        if data_log == 0 or data_log == '0':
            beauty_text_log = 'лог для этой заявки отсутствует'
        else:
            beauty_text_log = beauty_text_log_builder(data_log)

        await call.message.answer(text=beauty_text_log,
                                  reply_markup=create_kb_under_log())

        await Processing.request_log.set()

        return

    elif data_btn['type_btn'] == 'back':
        data_state = await state.get_data()

        in_processing_requests = data_state['in_processing_requests']
        ready_to_give_requests = data_state['ready_to_give_requests']

        await call.message.answer('Текущие заявки:',
                                  reply_markup=create_kb_current_requests(
                                      in_processing_requests,
                                      ready_to_give_requests))

        await Processing.chosen_request.set()

        return

    elif data_btn['type_btn'] == 'main_menu':
        await call.message.answer(
            text='Выход из меню "В РАБОТЕ". Используйте главное меню.',
            reply_markup=create_kb_coustom_main_menu(call.message.chat.id))

        await state.finish()

        return
예제 #5
0
async def set_date_from_buttons (
    call:CallbackQuery, state:FSMContext
):
    await call.answer()
    await call.message.delete()

    data_state = await state.get_data()

    changed_request = data_state['changed_request']

    if call.data == 'set_tomorrow_date':
        tomorrow_date = (
            datetime.now() + timedelta(days=1)
        ).strftime("%d.%m")

        is_changed = True

        changed_request[0] = tomorrow_date
        changed_request[10] = call.message.chat.username
        
        await state.update_data(is_changed=is_changed)
        await state.update_data(changed_request=changed_request)

        all_changes_data = data_state['all_changes_data']

        if 'date' not in all_changes_data:
            all_changes_data.append('date')
            await state.update_data(all_changes_data=all_changes_data)

        text = get_data_chosen_request(changed_request) + \
        '\n\n Выберите изменение:'

        await call.message.answer (
            text,
            reply_markup=create_kb_change_request(changed_request, is_changed)
        )

        await Processing.change_request_menu.set()

        return

    elif call.data == 'set_after_tomorrow_date':
        after_tomorrow_date = (
            datetime.now() + timedelta(days=2)
        ).strftime("%d.%m")

        is_changed = True

        changed_request[10] = call.message.chat.username
        changed_request[0] = after_tomorrow_date

        await state.update_data(is_changed=is_changed)
        await state.update_data(changed_request=changed_request)

        all_changes_data = data_state['all_changes_data']

        if 'date' not in all_changes_data:
            all_changes_data.append('date')
            await state.update_data(all_changes_data=all_changes_data)

        text = get_data_chosen_request(changed_request) + \
        '\n\n Выберите изменение:'

        await call.message.answer (
            text,
            reply_markup=create_kb_change_request(changed_request, is_changed)
        )

        await Processing.change_request_menu.set()

        return

    elif call.data == 'enter_coustom_date':
        result = await call.message.answer('Введите дату в формате ЧЧ.ММ')

        await state.update_data(message_to_delete=result.message_id)
        await Processing.typing_coustom_date.set()

        return

    elif call.data == 'back':
        data_state = await state.get_data()

        changed_request = data_state['changed_request']
        is_changed = data_state['is_changed']

        text = get_data_chosen_request(changed_request) + \
        '\n\n Выберите изменение:'
        
        await call.message.answer (
            text,
            reply_markup=create_kb_change_request(changed_request, is_changed)
        )

        await Processing.change_request_menu.set()

        return

    elif call.data == 'main_menu':
        await call.message.answer (
            text='Выход из меню "В РАБОТЕ". Используйте главное меню.',
            reply_markup=create_kb_coustom_main_menu(call.message.chat.id)
        )

        await state.finish()
        
        return
예제 #6
0
async def set_date_from_buttons(call: CallbackQuery, state: FSMContext):
    '''
    > выдача                 issuing_office
    > прием                  cash_recive
    > доставка               delivery
    > обмен                  exchange
    > кэшин                  cash_in
    > снятие с карт          cash_out
    > документы              documents
    > назад                  back
    > главное меню           main_menu
    '''
    await call.answer()
    await call.message.delete()

    if call.data == 'issuing_office':
        new_request_type = 'выдача'

    elif call.data == 'cash_recive':
        new_request_type = 'прием'

    elif call.data == 'delivery':
        new_request_type = 'доставка'

    elif call.data == 'exchange':
        new_request_type = 'обмен'

    elif call.data == 'cash_in':
        new_request_type = 'кэшин'

    elif call.data == 'cash_out':
        new_request_type = 'снятие с карт'

    elif call.data == 'documents':
        new_request_type = 'документы'

    elif call.data == 'back':
        data_state = await state.get_data()

        changed_request = data_state['changed_request']
        is_changed = data_state['is_changed']

        text = get_data_chosen_request(changed_request) + \
        '\n\n Выберите изменение:'

        await call.message.answer(text,
                                  reply_markup=create_kb_change_request(
                                      changed_request, is_changed))

        await Processing.change_request_menu.set()

        return

    elif call.data == 'main_menu':
        await call.message.answer(
            text='Выход из меню "В РАБОТЕ". Используйте главное меню.',
            reply_markup=create_kb_coustom_main_menu(call.message.chat.id))
        await state.finish()

        return

    data_state = await state.get_data()

    is_changed = True
    changed_request = data_state['changed_request']

    changed_request[3] = new_request_type
    # changed_request[5] = '0'
    # changed_request[6] = '0'
    # changed_request[7] = '0'
    # changed_request[11] = 'В обработке'
    # changed_request[12] = '0'
    # changed_request[13] = '0'
    # changed_request[14] = '0'
    # changed_request[16] = '0'

    await state.update_data(is_changed=is_changed)
    await state.update_data(changed_request=changed_request)

    all_changes_data = data_state['all_changes_data']

    if 'request_type' not in all_changes_data:
        all_changes_data.append('request_type')
        await state.update_data(all_changes_data=all_changes_data)

    text = get_data_chosen_request(changed_request) + \
    '\n\n Выберите изменение:'

    await call.message.answer(text,
                              reply_markup=create_kb_change_request(
                                  changed_request, is_changed))

    await Processing.change_request_menu.set()

    return