103 lines
4.4 KiB
Python
103 lines
4.4 KiB
Python
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QTabWidget, QWidget, QFormLayout, QLineEdit, QPushButton, QHBoxLayout, QLabel
|
|
from utils.config import ConfigManager
|
|
|
|
class BusinessSettingsDialog(QDialog):
|
|
def __init__(self, config: ConfigManager):
|
|
super().__init__()
|
|
self.config = config
|
|
self.setWindowTitle('사업자 설정')
|
|
self.init_ui()
|
|
|
|
def init_ui(self):
|
|
layout = QVBoxLayout()
|
|
self.tab_widget = QTabWidget()
|
|
|
|
business_count = int(self.config.get('DEFAULT', 'business_count', fallback='0'))
|
|
for i in range(business_count):
|
|
self.add_business_tab(i, load=True)
|
|
|
|
layout.addWidget(self.tab_widget)
|
|
|
|
button_layout = QHBoxLayout()
|
|
add_button = QPushButton('사업자 추가')
|
|
add_button.clicked.connect(self.add_new_business_tab)
|
|
save_button = QPushButton('저장')
|
|
save_button.clicked.connect(self.save_settings)
|
|
cancel_button = QPushButton('취소')
|
|
cancel_button.clicked.connect(self.reject)
|
|
button_layout.addWidget(add_button)
|
|
button_layout.addWidget(save_button)
|
|
button_layout.addWidget(cancel_button)
|
|
|
|
layout.addLayout(button_layout)
|
|
self.setLayout(layout)
|
|
|
|
def add_business_tab(self, index, load=False):
|
|
tab = QWidget()
|
|
form_layout = QFormLayout()
|
|
tab.setLayout(form_layout)
|
|
|
|
alias = QLineEdit(self)
|
|
business_number = QLineEdit(self)
|
|
business_name = QLineEdit(self)
|
|
registration_date = QLineEdit(self)
|
|
contact_number = QLineEdit(self)
|
|
|
|
if load:
|
|
alias.setText(self.config.get(f'BUSINESS_{index}', 'alias', fallback=''))
|
|
business_number.setText(self.config.get(f'BUSINESS_{index}', 'business_number', fallback=''))
|
|
business_name.setText(self.config.get(f'BUSINESS_{index}', 'business_name', fallback=''))
|
|
registration_date.setText(self.config.get(f'BUSINESS_{index}', 'registration_date', fallback=''))
|
|
contact_number.setText(self.config.get(f'BUSINESS_{index}', 'contact_number', fallback=''))
|
|
|
|
form_layout.addRow('사업자 별칭:', alias)
|
|
form_layout.addRow('사업자 등록번호:', business_number)
|
|
form_layout.addRow('상호명:', business_name)
|
|
form_layout.addRow('등록 날짜:', registration_date)
|
|
form_layout.addRow('응대 전화번호:', contact_number)
|
|
|
|
self.tab_widget.addTab(tab, f'사업자 {index + 1}')
|
|
|
|
def add_new_business_tab(self):
|
|
business_count = self.tab_widget.count()
|
|
max_businesses = int(self.config.get('DEFAULT', 'max_businesses', fallback='5'))
|
|
|
|
if business_count >= max_businesses:
|
|
self.show_error_message(f'최대 {max_businesses}개의 사업자만 추가할 수 있습니다.')
|
|
return
|
|
|
|
self.add_business_tab(business_count)
|
|
|
|
def show_error_message(self, message):
|
|
error_dialog = QDialog(self)
|
|
error_dialog.setWindowTitle('에러')
|
|
error_layout = QVBoxLayout()
|
|
error_label = QLabel(message)
|
|
error_layout.addWidget(error_label)
|
|
error_button = QPushButton('확인')
|
|
error_button.clicked.connect(error_dialog.accept)
|
|
error_layout.addWidget(error_button)
|
|
error_dialog.setLayout(error_layout)
|
|
error_dialog.exec_()
|
|
|
|
def save_settings(self):
|
|
business_count = self.tab_widget.count()
|
|
self.config.set('DEFAULT', 'business_count', str(business_count))
|
|
|
|
for i in range(business_count):
|
|
tab = self.tab_widget.widget(i)
|
|
form_layout = tab.layout()
|
|
alias = form_layout.itemAt(0, QFormLayout.FieldRole).widget().text()
|
|
business_number = form_layout.itemAt(1, QFormLayout.FieldRole).widget().text()
|
|
business_name = form_layout.itemAt(2, QFormLayout.FieldRole).widget().text()
|
|
registration_date = form_layout.itemAt(3, QFormLayout.FieldRole).widget().text()
|
|
contact_number = form_layout.itemAt(4, QFormLayout.FieldRole).widget().text()
|
|
|
|
self.config.set(f'BUSINESS_{i}', 'alias', alias)
|
|
self.config.set(f'BUSINESS_{i}', 'business_number', business_number)
|
|
self.config.set(f'BUSINESS_{i}', 'business_name', business_name)
|
|
self.config.set(f'BUSINESS_{i}', 'registration_date', registration_date)
|
|
self.config.set(f'BUSINESS_{i}', 'contact_number', contact_number)
|
|
|
|
self.accept()
|