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
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
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
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
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