일부 수정
This commit is contained in:
parent
2e1cec850b
commit
d6dd20b170
2
build.py
2
build.py
|
|
@ -17,4 +17,4 @@ for folder in folders_to_delete:
|
||||||
|
|
||||||
# 디버깅용 : main.spec
|
# 디버깅용 : main.spec
|
||||||
# 배포용 : AutoPercenty.spec
|
# 배포용 : AutoPercenty.spec
|
||||||
call(['pyinstaller', 'delv.spec'])
|
call(['pyinstaller', 'delv_py.spec'])
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,12 @@
|
||||||
|
[Settings]
|
||||||
|
maxweightset = 25
|
||||||
|
maxlengthset = 100
|
||||||
|
maxvolumeset = 160
|
||||||
|
addfeeinterval = 5
|
||||||
|
addfeesetting = 20
|
||||||
|
addfee = 5000
|
||||||
|
fontsize = 14
|
||||||
|
weightinterval = 0.5
|
||||||
|
setsavesetting = True
|
||||||
|
favoritedelv = 넥스트위해평택해운(배송비)
|
||||||
|
|
||||||
127
delv.py
127
delv.py
|
|
@ -1,4 +1,6 @@
|
||||||
import sys
|
import sys
|
||||||
|
import configparser
|
||||||
|
import os
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import logging
|
import logging
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
|
|
@ -7,17 +9,25 @@ from PyQt5.QtGui import QFont
|
||||||
import re
|
import re
|
||||||
from src.toggleSwitch import ToggleSwitch # toggleSwitch.py 파일에서 ToggleSwitch 클래스를 임포트
|
from src.toggleSwitch import ToggleSwitch # toggleSwitch.py 파일에서 ToggleSwitch 클래스를 임포트
|
||||||
from src.logger_module import setup_logger
|
from src.logger_module import setup_logger
|
||||||
import logging
|
import ctypes
|
||||||
|
|
||||||
|
def minimize_console():
|
||||||
|
""" 콘솔 창을 최소화하는 함수 """
|
||||||
|
hwnd = ctypes.windll.kernel32.GetConsoleWindow()
|
||||||
|
if hwnd != 0:
|
||||||
|
ctypes.windll.user32.ShowWindow(hwnd, 6) # SW_MINIMIZE
|
||||||
|
|
||||||
|
|
||||||
class DeliveryFeeCalculator(QtWidgets.QWidget):
|
class DeliveryFeeCalculator(QtWidgets.QWidget):
|
||||||
def __init__(self, logger):
|
def __init__(self, logger):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.logger = logger
|
self.logger = logger
|
||||||
|
self.config = configparser.ConfigParser()
|
||||||
|
self.config_path = 'config.ini'
|
||||||
|
|
||||||
self.maxWeightSet = 25
|
self.maxWeightSet = 25
|
||||||
self.maxLengthSet = 100
|
self.maxLengthSet = 100
|
||||||
self.maxVolumeSet = 155
|
self.maxVolumeSet = 160
|
||||||
self.currentMaxLength = 1
|
self.currentMaxLength = 1
|
||||||
self.roundVolume = 1
|
self.roundVolume = 1
|
||||||
self.currentWeight = 1
|
self.currentWeight = 1
|
||||||
|
|
@ -55,49 +65,78 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
|
||||||
self.setComboBox()
|
self.setComboBox()
|
||||||
|
|
||||||
def initSettings(self):
|
def initSettings(self):
|
||||||
self.settings = QtCore.QSettings('When_Ride_Mycar_Tanya', 'DeliveryFeeCalculator')
|
# self.settings = QtCore.QSettings('When_Ride_Mycar_Tanya', 'DeliveryFeeCalculator')
|
||||||
self.loadSettings()
|
self.loadSettings()
|
||||||
|
|
||||||
def loadSettings(self):
|
def loadSettings(self):
|
||||||
self.maxWeightSet = self.settings.value('maxWeightSet', 25, type=int)
|
""" 설정 파일을 불러옵니다. """
|
||||||
self.maxLengthSet = self.settings.value('maxLengthSet', 100, type=int)
|
if not os.path.exists(self.config_path):
|
||||||
self.maxVolumeSet = self.settings.value('maxVolumeSet', 155, type=int)
|
self.create_default_settings()
|
||||||
self.addFeeInterval = self.settings.value('addFeeInterval', 5, type=int)
|
self.config.read(self.config_path)
|
||||||
self.addFeeSetting = self.settings.value('addFeeSetting', 20, type=int)
|
|
||||||
self.addFee = self.settings.value('addFee', 0, type=int)
|
self.maxWeightSet = self.config.getint('Settings', 'maxWeightSet', fallback=25)
|
||||||
self.fontSize = self.settings.value('fontSize', 14, type=int)
|
self.maxLengthSet = self.config.getint('Settings', 'maxLengthSet', fallback=100)
|
||||||
self.weightInterval = self.settings.value('weightInterval', 0.5, type=float)
|
self.maxVolumeSet = self.config.getint('Settings', 'maxVolumeSet', fallback=160)
|
||||||
self.setSaveSetting = self.settings.value('setSaveSetting', False, type=bool)
|
self.addFeeInterval = self.config.getint('Settings', 'addFeeInterval', fallback=5)
|
||||||
self.favoriteDelv = self.settings.value('favoriteDelv', "노빠꾸해운(배송비)", type=str)
|
self.addFeeSetting = self.config.getint('Settings', 'addFeeSetting', fallback=20)
|
||||||
|
self.addFee = self.config.getint('Settings', 'addFee', fallback=1000)
|
||||||
|
self.fontSize = self.config.getint('Settings', 'fontSize', fallback=14)
|
||||||
|
self.weightInterval = self.config.getfloat('Settings', 'weightInterval', fallback=0.5)
|
||||||
|
self.setSaveSetting = self.config.getboolean('Settings', 'setSaveSetting', fallback=False)
|
||||||
|
self.favoriteDelv = self.config.get('Settings', 'favoriteDelv', fallback="노빠꾸해운(배송비)")
|
||||||
|
|
||||||
def saveSettings(self):
|
def saveSettings(self):
|
||||||
self.settings.setValue('maxWeightSet', self.maxWeightSet)
|
""" 설정을 config.ini 파일에 저장합니다. """
|
||||||
self.settings.setValue('maxLengthSet', self.maxLengthSet)
|
if not self.config.has_section('Settings'):
|
||||||
self.settings.setValue('maxVolumeSet', self.maxVolumeSet)
|
self.config.add_section('Settings')
|
||||||
self.settings.setValue('addFeeInterval', self.addFeeInterval)
|
|
||||||
self.settings.setValue('addFeeSetting', self.addFeeSetting)
|
self.config.set('Settings', 'maxWeightSet', str(self.maxWeightSet))
|
||||||
self.settings.setValue('addFee', self.addFee)
|
self.config.set('Settings', 'maxLengthSet', str(self.maxLengthSet))
|
||||||
self.settings.setValue('fontSize', self.fontSize)
|
self.config.set('Settings', 'maxVolumeSet', str(self.maxVolumeSet))
|
||||||
self.settings.setValue('weightInterval', self.weightInterval)
|
self.config.set('Settings', 'addFeeInterval', str(self.addFeeInterval))
|
||||||
self.settings.setValue('setSaveSetting', self.setSaveSetting)
|
self.config.set('Settings', 'addFeeSetting', str(self.addFeeSetting))
|
||||||
self.settings.setValue('favoriteDelv', self.favoriteDelv)
|
self.config.set('Settings', 'addFee', str(self.addFee))
|
||||||
|
self.config.set('Settings', 'fontSize', str(self.fontSize))
|
||||||
|
self.config.set('Settings', 'weightInterval', str(self.weightInterval))
|
||||||
|
self.config.set('Settings', 'setSaveSetting', str(self.setSaveSetting))
|
||||||
|
self.config.set('Settings', 'favoriteDelv', str(self.favoriteDelv))
|
||||||
|
|
||||||
|
with open(self.config_path, 'w') as configfile:
|
||||||
|
self.config.write(configfile)
|
||||||
|
|
||||||
def loadWindowSettings(self):
|
def create_default_settings(self):
|
||||||
# 윈도우 위치와 크기 설정을 불러옵니다
|
""" 기본 설정을 생성합니다. """
|
||||||
self.resize(self.settings.value("windowSize", QtCore.QSize(400, 300)))
|
self.config['Settings'] = {
|
||||||
self.move(self.settings.value("windowPosition", QtCore.QPoint(50, 50)))
|
'maxWeightSet': '25',
|
||||||
|
'maxLengthSet': '100',
|
||||||
|
'maxVolumeSet': '160',
|
||||||
|
'addFeeInterval': '5',
|
||||||
|
'addFeeSetting': '20',
|
||||||
|
'addFee': '1000',
|
||||||
|
'fontSize': '14',
|
||||||
|
'weightInterval': '0.5',
|
||||||
|
'setSaveSetting': 'False',
|
||||||
|
'favoriteDelv': "노빠꾸해운(배송비)"
|
||||||
|
}
|
||||||
|
with open(self.config_path, 'w') as configfile:
|
||||||
|
self.config.write(configfile)
|
||||||
|
|
||||||
def saveWindowSettings(self):
|
# def loadWindowSettings(self):
|
||||||
# 윈도우 위치와 크기 설정을 저장합니다
|
# # 윈도우 위치와 크기 설정을 불러옵니다
|
||||||
self.settings.setValue("windowSize", self.size())
|
# self.resize(self.settings.value("windowSize", QtCore.QSize(400, 300)))
|
||||||
self.settings.setValue("windowPosition", self.pos())
|
# self.move(self.settings.value("windowPosition", QtCore.QPoint(50, 50)))
|
||||||
|
|
||||||
|
# def saveWindowSettings(self):
|
||||||
|
# # 윈도우 위치와 크기 설정을 저장합니다
|
||||||
|
# self.settings.setValue("windowSize", self.size())
|
||||||
|
# self.settings.setValue("windowPosition", self.pos())
|
||||||
|
|
||||||
def closeEvent(self, event):
|
def closeEvent(self, event):
|
||||||
# 종료 이벤트가 발생할 때 설정 저장
|
# 종료 이벤트가 발생할 때 설정 저장
|
||||||
if self.setSaveSetting:
|
if self.setSaveSetting:
|
||||||
logger.debug("설정값 저장")
|
logger.debug("설정값 저장")
|
||||||
self.saveSettings()
|
self.saveSettings()
|
||||||
self.saveWindowSettings()
|
# self.saveWindowSettings()
|
||||||
else:
|
else:
|
||||||
logger.debug("설정값 저장하지 않음")
|
logger.debug("설정값 저장하지 않음")
|
||||||
|
|
||||||
|
|
@ -373,9 +412,9 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
|
||||||
if sheet.endswith('(배송비)'):
|
if sheet.endswith('(배송비)'):
|
||||||
self.comboBox.addItem(sheet)
|
self.comboBox.addItem(sheet)
|
||||||
|
|
||||||
logging.info('Excel file loaded successfully.')
|
logger.debug('Excel file loaded successfully.')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"Error loading Excel file: {e}")
|
logger.error(f"Error loading Excel file: {e}")
|
||||||
QtWidgets.QMessageBox.critical(self, "Error", "Failed to load the Excel file.")
|
QtWidgets.QMessageBox.critical(self, "Error", "Failed to load the Excel file.")
|
||||||
|
|
||||||
def processSheet(self, df, sheet_name, key):
|
def processSheet(self, df, sheet_name, key):
|
||||||
|
|
@ -388,7 +427,7 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
|
||||||
fee = int(fee_str)
|
fee = int(fee_str)
|
||||||
records.append({key: value, '배송비': fee})
|
records.append({key: value, '배송비': fee})
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
logging.error(f"Error converting values in row {index} of sheet {sheet_name}: {e}")
|
logger.error(f"Error converting values in row {index} of sheet {sheet_name}: {e}")
|
||||||
continue
|
continue
|
||||||
self.deliveryFees[sheet_name] = records
|
self.deliveryFees[sheet_name] = records
|
||||||
|
|
||||||
|
|
@ -403,9 +442,9 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
|
||||||
def updateDeliveryFee(self):
|
def updateDeliveryFee(self):
|
||||||
try:
|
try:
|
||||||
weight = self.weightInput.value()
|
weight = self.weightInput.value()
|
||||||
logger.debug(f"현재 선택된 무게 : {weight}")
|
# logger.debug(f"현재 선택된 무게 : {weight}")
|
||||||
selected_sheet = self.comboBox.currentText()
|
selected_sheet = self.comboBox.currentText()
|
||||||
logger.debug(f"현재 선택된 시트 : {selected_sheet}")
|
# logger.debug(f"현재 선택된 시트 : {selected_sheet}")
|
||||||
fees = self.deliveryFees.get(selected_sheet, [])
|
fees = self.deliveryFees.get(selected_sheet, [])
|
||||||
fee = 0
|
fee = 0
|
||||||
# 가능한 모든 무게를 리스트로 가져오고 정렬
|
# 가능한 모든 무게를 리스트로 가져오고 정렬
|
||||||
|
|
@ -435,7 +474,7 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
|
||||||
else:
|
else:
|
||||||
self.deliveryFeeLabel.setText(f'배송비: {int(fee): ,}원')
|
self.deliveryFeeLabel.setText(f'배송비: {int(fee): ,}원')
|
||||||
|
|
||||||
logger.debug(f"배송비 deliveryFeeLabel에 업데이트: {int(fee): ,}원")
|
# logger.debug(f"배송비 deliveryFeeLabel에 업데이트: {int(fee): ,}원")
|
||||||
|
|
||||||
# 폰트와 밑줄 설정
|
# 폰트와 밑줄 설정
|
||||||
font = QFont()
|
font = QFont()
|
||||||
|
|
@ -447,7 +486,7 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
|
||||||
self.additionalFee()
|
self.additionalFee()
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.debug(f"Error updating delivery fee: {e}")
|
logger.error(f"Error updating delivery fee: {e}")
|
||||||
self.deliveryFeeLabel.setText("배송비 업데이트 중 오류 발생")
|
self.deliveryFeeLabel.setText("배송비 업데이트 중 오류 발생")
|
||||||
|
|
||||||
def updateAdditionalDeliveryFee(self):
|
def updateAdditionalDeliveryFee(self):
|
||||||
|
|
@ -513,7 +552,7 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
|
||||||
self.additionalFeeLabel.setText(f'경동 택배비[{price_source}]: {fee}')
|
self.additionalFeeLabel.setText(f'경동 택배비[{price_source}]: {fee}')
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.debug(f"Error updating Additional delivery fee: {e}")
|
logger.error(f"Error updating Additional delivery fee: {e}")
|
||||||
self.additionalFeeLabel.setText("배송비 업데이트 중 오류 발생")
|
self.additionalFeeLabel.setText("배송비 업데이트 중 오류 발생")
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -529,8 +568,8 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
|
||||||
if self.favoriteDelv:
|
if self.favoriteDelv:
|
||||||
index = self.comboBox.findText(self.favoriteDelv)
|
index = self.comboBox.findText(self.favoriteDelv)
|
||||||
logger.debug(f"저장된 배대지가 존재함: {self.favoriteDelv}")
|
logger.debug(f"저장된 배대지가 존재함: {self.favoriteDelv}")
|
||||||
if index >= 0:
|
if index >= 0:
|
||||||
self.comboBox.setCurrentIndex(index)
|
self.comboBox.setCurrentIndex(index)
|
||||||
else:
|
else:
|
||||||
logger.debug("저장된 배대지가 엑셀시트에 존재하지 않습니다.")
|
logger.debug("저장된 배대지가 엑셀시트에 존재하지 않습니다.")
|
||||||
|
|
||||||
|
|
@ -661,8 +700,10 @@ class DeliveryFeeCalculator(QtWidgets.QWidget):
|
||||||
self.setComboBox()
|
self.setComboBox()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
minimize_console()
|
||||||
|
|
||||||
app = QtWidgets.QApplication(sys.argv)
|
app = QtWidgets.QApplication(sys.argv)
|
||||||
logger = setup_logger('default_logger', 'delivery_calc.log', level=logging.DEBUG)
|
logger = setup_logger('default_logger', 'delivery_calc.log', level=logging.INFO)
|
||||||
ex = DeliveryFeeCalculator(logger)
|
ex = DeliveryFeeCalculator(logger)
|
||||||
ex.show()
|
ex.show()
|
||||||
sys.exit(app.exec_())
|
sys.exit(app.exec_())
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,12 @@
|
||||||
|
|
||||||
a = Analysis(
|
a = Analysis(
|
||||||
['delv.py'],
|
['delv.py'],
|
||||||
pathex=[],
|
pathex=['H:\\py\\delvfee'],
|
||||||
binaries=[],
|
binaries=[],
|
||||||
datas=[],
|
datas=[],
|
||||||
hiddenimports=[],
|
hiddenimports=[
|
||||||
|
'sip', 'jinja2'
|
||||||
|
],
|
||||||
hookspath=[],
|
hookspath=[],
|
||||||
hooksconfig={},
|
hooksconfig={},
|
||||||
runtime_hooks=[],
|
runtime_hooks=[],
|
||||||
|
|
@ -21,12 +23,12 @@ exe = EXE(
|
||||||
a.scripts,
|
a.scripts,
|
||||||
[],
|
[],
|
||||||
exclude_binaries=True,
|
exclude_binaries=True,
|
||||||
name='delv',
|
name='Deliver_Calc',
|
||||||
debug=False,
|
debug=False,
|
||||||
bootloader_ignore_signals=False,
|
bootloader_ignore_signals=False,
|
||||||
strip=False,
|
strip=False,
|
||||||
upx=True,
|
upx=True,
|
||||||
console=False,
|
console=True,
|
||||||
disable_windowed_traceback=False,
|
disable_windowed_traceback=False,
|
||||||
argv_emulation=False,
|
argv_emulation=False,
|
||||||
target_arch=None,
|
target_arch=None,
|
||||||
|
|
@ -41,5 +43,5 @@ coll = COLLECT(
|
||||||
strip=False,
|
strip=False,
|
||||||
upx=True,
|
upx=True,
|
||||||
upx_exclude=[],
|
upx_exclude=[],
|
||||||
name='delv',
|
name='Deliver_Calc',
|
||||||
)
|
)
|
||||||
Loading…
Reference in New Issue