From 2a443b9fce720334f81e5f3a9d84edc577fa77c0 Mon Sep 17 00:00:00 2001 From: Andrey Seligenenko Date: Thu, 3 Jul 2025 11:54:06 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D1=83=D1=87=D0=BD=D0=B0=D1=8F=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=87=D0=B0=20=D1=87=D0=B5=D0=BA?= =?UTF-8?q?=D0=BE=D0=B2=20=D1=81=20=D0=B3=D1=80=D0=B0=D1=84=D0=B8=D1=87?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D0=B8=D0=BC=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D1=84=D0=B5=D0=B9=D1=81=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GUI/app.py | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 GUI/app.py diff --git a/GUI/app.py b/GUI/app.py new file mode 100644 index 0000000..bbc4640 --- /dev/null +++ b/GUI/app.py @@ -0,0 +1,130 @@ +import tkinter as tk +from tkcalendar import DateEntry +from datetime import datetime +import json, requests + +# Функция обработки выбора варианта +def on_select(): + global ID + selected_value = var.get() + + # Варианты значений для разных выборов + values = { + 1: [('7381440800374463','ad06d608-b690-11ed-87bd-0cc47ab40806','Самара_Кирова_виваленде')], + 2: [('9961440300763405','030c75c2-2f29-11eb-119f-0cc47ab40806','Волгоград_Энгельса')], + 3: [('9961440300902043','d4fff292-2f2a-11eb-119f-0cc47ab40806','Волжский_Ленина')], + 4: [('7381440900835933','ee3baf4d-d98d-11e6-b191-e83935b036c7','Новороссийск')], + 5: [('9961440300902580','33bbe69c-2f2b-11eb-119f-0cc47ab40806','Камышин_Некрасова')], + 6: [('7381440900836108','b50bc5a3-12e1-11e5-9265-e83935b036c7','Краснодар_Привокзальная')], + 7: [('9961440300515155','e33636ce-2f29-11eb-119f-0cc47ab40806','Волгоград_Авиаторов')], + 8: [('7381440900834264','691807dd-2629-11e9-993e-f06a44526bea','Волгоград_Еременко')], + 9: [('9961440300902408','13f3b7e6-2f2a-11eb-119f-0cc47ab40806','Волгоград_Аллея_Героев')], + 10: [('7381440900836042','147c9228-3d13-11ef-94eb-8a456ecaea20','Крымск_Синева')] + } + + if selected_value in values: + ID = values[selected_value] + execute_logic() + else: + result_label.config(text="Ошибка! Не выбран вариант.") + +# Логика программы (пример) +def execute_logic(): + CurDate = date_entry.get_date().strftime('%Y-%m-%d') + message = f'Выбранная дата: {CurDate}\nЗначение ID: {ID[0][1]}' + result_label.config(text=message) + print(ID[0]) + taxcom = ID[0] + fn = taxcom[0] + salepoint = taxcom[1] + data = {"salepoint": salepoint} + data = json.dumps(data, ensure_ascii=False).encode('utf8') + # result = requests.post('https://1c.maverik.ru/bso_maverik/hs/exchange/GetTaxcomCredentials', data=data, verify=False, allow_redirects=False, auth=('robot', 's38*Cqy2L*PB')) + print(fn, salepoint) + headers = { + "Content-Type": "application/json", + "Integrator-ID": "BFFFC47E-38BB-4845-8399-7C2F5AB11A3C" + } + data = { + "Login": "kassa@ip-tr.ru", + "Password": "123456" + } + result = requests.post('https://api-lk-ofd.taxcom.ru/API/v2/Login', headers=headers, data=json.dumps(data), timeout=(20, 240)) + sessionToken = result.json()['sessionToken'] + headers = { + "Content-Type":"application/json", + "Session-Token": f"{sessionToken}" + } + print('Autorezation') + print(result.text) + try: + print('check 1') + result = requests.get(f"https://api-lk-ofd.taxcom.ru/API/v2/ShiftList?fn={fn}&begin={CurDate}T00:00:00&end={CurDate}T23:59:59", headers=headers, timeout=(20, 240)) + print(result.text) + shiftNumber = result.json()['records'][0]['shiftNumber'] + fnFactoryNumber = result.json()['records'][0]['fnFactoryNumber'] + except Exception as e: + print(e) + if manual_entry.get(): + shiftNumber = manual_entry.get() + print('Номер смены: ', shiftNumber) + result = requests.get(f'https://api-lk-ofd.taxcom.ru/API/v2/DocumentList?fn={fn}&shift={shiftNumber}&type=3', headers=headers, timeout=(20, 240)) + # result = requests.get(f'https://api-lk-ofd.taxcom.ru/API/v2/DocumentList?fn={fn}&shift=127&type=3', headers=headers, timeout=(20, 240)) + cheks = result.json()['records'] + print(cheks) + data = {"salepoint": salepoint, + "res": str(cheks)} + data = json.dumps(data, ensure_ascii=False).encode('utf-8') + print('54') + # print(ID[0]) + result = requests.post('https://1c.maverik.ru/bso_maverik/hs/exchange/saveTaxcomDocs', data=data, allow_redirects=False, auth=('robot', 's38*Cqy2L*PB')) + print(result.text) + print(fn, salepoint, taxcom[2]) + result_1c_label.config(text=f"Результата: {result.text}") + +# Создание окна приложения +root = tk.Tk() +root.title("Загрузка чеков ИП") +root.geometry("400x450") + +# Выбор даты +tk.Label(root, text='Выберите дату:').pack(pady=10) +# date_entry = DateEntry(root, selectmode='day', year=2025, month=5, day=15) +date_entry = DateEntry(root) +date_entry.pack(pady=10) + +# Переменная для хранения выбранного варианта +var = tk.IntVar() + +# Список радиокнопок для выбора варианта +options = [ + ("Самара_Кирова_виваленде", 1), + ("Волгоград_Энгельса", 2), + ("Волжский_Ленина", 3), + ("Новороссийск", 4), + ("Камышин_Некрасова", 5), + ("Краснодар_Привокзальная", 6), + ("Волгоград_Авиаторов", 7), + ("Волгоград_Еременко", 8), + ("Волгоград_Аллея_Героев", 9), + ("Крымск_Синева", 10) +] +for option_text, value in options: + tk.Radiobutton(root, text=option_text, variable=var, value=value, command=on_select).pack(anchor=tk.W) + +label_manual = tk.Label(root, text="Ручной ввод смены:") +# label_manual.pack(pady=15) +label_manual.pack(fill=['none', '0', '20', 'both']) +manual_entry = tk.Entry(root) +manual_entry.pack(pady=0) +print(manual_entry) + +# Метка результата +result_label = tk.Label(root, text='', font=('Arial', 12)) +result_label.pack(pady=0) + +# Метка результата +result_1c_label = tk.Label(root, text='', font=('Arial', 12)) +result_1c_label.pack(pady=0) + +root.mainloop() \ No newline at end of file