Ручная передача чеков с графическим интерфейсом

This commit is contained in:
2025-07-03 11:54:06 +03:00
parent b4b8e1b7c7
commit 2a443b9fce

130
GUI/app.py Normal file
View File

@ -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()