def natural_person(bot, update): update.message.reply_text('<b>Переходим к "РобоКассе"</b>', reply_markup=create_menu_keyboard(), parse_mode='HTML') update.message.reply_text( 'https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=findtheowner&InvId=0&Culture=ru&Encoding=utf-8&OutSum=500&SignatureValue=ac288b7d40a1747dbe687d74aff91323', reply_markup=create_menu_keyboard(), parse_mode='HTML')
def write_add_employee(bot, update): global is_add_employee is_add_employee = True update.message.reply_text( '<i><b>Используйте ";" для разделения требуемых параметров</b></i>', reply_markup=create_menu_keyboard(), parse_mode='HTML') update.message.reply_text( '<i><b>Напишите имя и ID сотрудника.\nПример: имя1;0123456789</b></i>', reply_markup=create_menu_keyboard(), parse_mode='HTML')
def write_proj_add_task(bot, update): global is_proj_add_task, is_add_task is_proj_add_task, is_add_task = True, True update.message.reply_text( '<i><b>Используйте ";" для разделения требуемых параметров</b></i>', reply_markup=create_menu_keyboard(), parse_mode='HTML') update.message.reply_text(''' <i><b>Напишите название задачи, описание задачи, имя сотрудника. Пример: задача1;описание1;имя1</b></i>''', reply_markup=create_menu_keyboard(), parse_mode='HTML')
def kpz_inn_preview(bot, update): # if len(update.message['text']) > 3: # global_function(bot, update) # return update.message.reply_text('<i><b>Здесь выводятся ИНН</b></i>', reply_markup=create_menu_keyboard(), parse_mode='HTML') kpz_db = DB('kpz.db') im = InnModel(kpz_db.get_connection()) for inn in im.get_all(): update.message.reply_text(f''' <i><b>ИНН: {inn[1]}</b></i> <i><b>Контакты Заказчика: {inn[2]}</b></i>''', reply_markup=create_menu_keyboard(), parse_mode='HTML')
def write_proj_delete_task(bot, update): global is_proj_delete_task, is_delete_task is_proj_delete_task, is_delete_task = True, True update.message.reply_text( '<i><b>Напишите название задачи, которую Вы хотели бы удалить в данном проекте</b></i>', reply_markup=create_menu_keyboard(), parse_mode='HTML')
def write_delete_task(bot, update): global is_delete_task is_delete_task = True update.message.reply_text( '<i><b>Напишите название проекта и название задачи</b></i>', reply_markup=create_menu_keyboard(), parse_mode='HTML')
def write_add_project(bot, update): global is_add_project is_add_project = True update.message.reply_text( '<i><b>Напишите название проекта.\nЗапрещаются специальные символы: !, `, @, №, $, %, &, ?, /, :, ;</b></i>', reply_markup=create_menu_keyboard(), parse_mode='HTML')
def consultation(bot, update): global is_consultation is_consultation = True update.message.reply_text( '<b>Опишите проблему и задайте вопрос.\nВАЖНО! Вы можете отправлять юридический вопрос как с файлом, так и без него. Если к Вашему вопросу прилагается какой-либо документ, прикреплять его необходимо вместе с текстовым сообщением!</b>', reply_markup=create_menu_keyboard(), parse_mode='HTML')
def kpz_juristic_questions(bot, update): update.message.reply_text('<i><b>Здесь выводятся вопросы</b></i>', parse_mode='HTML') kpz_db = DB('kpz.db') ktm = KpzTaskModel(kpz_db.get_connection()) fm = FileModel(kpz_db.get_connection()) for task in ktm.get_all(): update.message.reply_text(f''' <b>Юридический вопрос: <u>{task[1]}</u></b>\n <b>Контакты Заказчика: {task[3]}</b> <b>Файл:</b> {'Не прикреплен' if task[4] == -1 else '↓'}''', reply_markup=create_menu_keyboard(), parse_mode='HTML') try: new_file_name = get_uniq_filename(fm.get(task[4])[2], task[3][1:]) tg_doc = open( os.path.join(os.getcwd(), KPZ_FILES_DIR, new_file_name), 'rb') update.message.reply_document(tg_doc, filename=new_file_name, reply_markup=create_menu_keyboard()) except Exception as e: print('kpz_juristic_questions', e)
def task_preview(bot, update): tm = TaskModel(db.get_connection()) em = EmployeeModel(db.get_connection()) pm = ProjectModel(db.get_connection()) tasks = sorted(tm.get_all(), key=lambda t: t[5]) for task in tasks: update.message.reply_text(f''' <b>Задача: <u>{task[1]}</u></b> <b>Проект: {pm.get_name(task[4])}</b> <b>Описание: {task[2]}</b> <b>Сотрудник: {em.get(task[3])[1]}</b> <b>Время выполнения: {'-' if not task[5] else task[8]}</b> <b>Статус:</b> {'Выполнена' if task[5] else 'В процессе'}''', reply_markup=create_menu_keyboard(), parse_mode='HTML')
def global_function(bot, update): global is_juristic, is_consultation print(update) if is_consultation: is_consultation = False ktm = KpzTaskModel(db.get_connection()) username = update.message['chat']['username'] if not update.message.document: ktm.insert(update.message.text, '@' + username) send_email( BOSS_EMAIL_ADDRESS, f''' <b>Юридический вопрос: <u>{update.message.text}</u></b><br> <b>Контакты Заказчика: {'@'+username}</b>''') else: file_name = update.message.document.file_name file = update.message.document.get_file() file_id = file.file_id new_file_name = get_uniq_filename(file_name, username) file_path = os.path.join(os.getcwd(), KPZ_FILES_DIR, new_file_name) file.download(file_path) fm = FileModel(db.get_connection()) fm.insert(file_id, file_name) ktm.insert(update.message['caption'], '@' + username, file_id=fm.get_id(file_id)) send_email(BOSS_EMAIL_ADDRESS, f''' <b>Юридический вопрос: <u>{update.message['caption']}</u></b>\n <b>Контакты Заказчика: {'@' + username}</b>''', file=file_path) if is_juristic: is_juristic = False username = update.message['chat']['username'] inn = update.message.text im = InnModel(db.get_connection()) im.insert(inn, username) update.message.reply_text('<b>ИНН (ОГРН) записан</b>', reply_markup=create_menu_keyboard(), parse_mode='HTML')
def global_function(bot, update): # Отправляем http запрос global is_add_project, is_add_task, is_add_employee, is_delete_project, is_delete_task, is_delete_employee global projects_list, employee_list global latest_project, is_proj_add_task, is_proj_delete_task global is_report, is_report_employee, is_report_proj, r_d, l_d, task global is_time_selected, is_task_selected update.message.reply_text('<i><b>Команда выполнена</b></i>', reply_markup=create_menu_keyboard(), parse_mode='HTML') if update.message[ 'text'] in projects_list and not is_delete_project and not is_add_task and not is_add_project: project = update.message['text'] if is_report_proj: proj_report(update, l_d, r_d, project) else: update.message.reply_text( f"<i><b>Просмотр задач по проекту: {project}</b></i>", reply_markup=create_tasks_in_project_boss_keyboard(), parse_mode='HTML') project_preview(update, project) latest_project = update.message['text'] elif update.message['text'] in employee_list and not is_delete_employee: employee = update.message['text'] if is_report_employee: emp_report(update, l_d, r_d, employee) else: update.message.reply_text( f"<i><b>Просмотр задач сотрудника: {employee}</b></i>", reply_markup=create_tasks_in_project_boss_keyboard(), parse_mode='HTML') employee_preview(update, employee) elif is_add_project: is_add_project = False name = update.message['text'] projects_list.append(name) try: add_project(name) except ProjectAlreadyExist: update.message.reply_text("Проект уже существует") is_add_project = True elif is_add_task: is_add_task = False if is_proj_add_task: is_proj_add_task = False params = update.message['text'] name, description, emp_name = params.split(';') project_name = latest_project else: params = update.message['text'] name, description, emp_name, project_name = params.split(';') try: add_task(bot, name, description, emp_name, project_name, '@' + update.message['chat']['username']) except ProjectNotFound: update.message.reply_text("Проект не найден") is_add_task = True except UserNotFound: update.message.reply_text("Сотрудник не найден") is_add_task = True elif is_add_employee: is_add_employee = False params = update.message['text'] name, uid = params.split(';') try: add_employee(name, uid) employee_list.append(name) except UserAlreadyExist: update.message.reply_text("Пользователь уже существует") is_add_employee = True elif is_delete_project: is_delete_project = False name = update.message['text'] delete_project(name) del projects_list[projects_list.index(name)] elif is_delete_task: is_delete_task = False if is_proj_delete_task: is_proj_delete_task = False task_name = update.message['text'] project_name = latest_project else: params = update.message['text'] project_name, task_name = params.split(';') delete_task(project_name, task_name) elif is_delete_employee: is_delete_employee = False name = update.message['text'] delete_employee(name) del employee_list[employee_list.index(name)] elif is_task_selected: is_task_selected = False task = update.message['text'] update.message.reply_text( '<i><b>Введите время выполнения задачи.\nПример: 2:45, 3:00, 1:30.\nВАЖНО! Целое количество часов вводится также через двоеточние (1, 2, 3 часа будут записаны в виде "1:00", "2:00", "3:00" и т.д.)</b></i>', parse_mode='HTML') is_time_selected = True elif is_time_selected: is_time_selected = False time = update.message['text'] hours, minutes = time.split(':') if not hours.isdigit() or not minutes.isdigit(): is_time_selected = True update.message.reply_text( "<i><b>Введено некорректное значение времени</b></i>", parse_mode='HTML') else: project, name = task.split(': ') set_done(bot, name, project, time) elif is_report: is_report = False update.message.reply_text( '<i><b>Выберите тип отчёта</b></i>', reply_markup=create_report_employee_boss_keyboard(), parse_mode='HTML') l_string, r_string = update.message['text'].split('-') l_day, l_month, l_year = [int(el) for el in l_string.split('.')] r_day, r_month, r_year = [int(el) for el in r_string.split('.')] try: l_d = datetime.toordinal(datetime(l_year, l_month, l_day)) r_d = datetime.toordinal(datetime(r_year, r_month, r_day)) except ValueError: update.message.reply_text('<i><b>Некорректно введена дата</b></i>', reply_markup=create_menu_keyboard(), parse_mode='HTML') report(bot, update)
def juristic_person(bot, update): global is_juristic is_juristic = True update.message.reply_text('<b>Напишите свой ИНН (ОГРН)</b>', reply_markup=create_menu_keyboard(), parse_mode='HTML')