Ручная передача чеков с графическим интерфейсом
This commit is contained in:
130
GUI/app.py
Normal file
130
GUI/app.py
Normal 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()
|
||||
Reference in New Issue
Block a user