1. DayCalQueryResult 위젯 수정
# 날짜로 조회한 데이터를 표시하기 위한 위젯
# 기본적으로 DayCal 위젯과 거의 동일한 구조를 가짐
class DayCalQueryResult(QDialog):
submitted = Signal()
# 생성자
def __init__(self, parent, owner_values, other_values, result, today):
super().__init__(parent)
# 화주별 데이터, 기타 데이터, 결과 데이터, 조회날짜를 인자로 받아온다
self.owner_values = owner_values
self.other_values = other_values
self.result = result
self.save = QPushButton('저장')
self.save.clicked.connect(lambda: self.submitted.emit())
self.today = today
# 화주별 데이터를 기반으로 임시 화주 명단을 생성
self.owner_list = []
for values in self.owner_values:
self.owner_list.append(DayCalOwner(values.get_owner_name(), values.get_owner_type(), values.get_owner_id()))
# 입력 테이블 생성(화주별 데이터)
self.input_table = TableView()
self.data_model = DayCalTableModel(self, self.owner_list, self.owner_values)
self.input_table.setModel(self.data_model)
# 기타 테이블 생성(기타 데이터)
self.other_table = TableView()
self.other_data_model = DayCalOthersTableModel(self, self.other_values)
self.other_table.setModel(self.other_data_model)
# 결과 테이블 생성
self.result_table = TableView()
self.result_data_model = DayCalResultTableModel(self, self.result)
self.result_table.setModel(self.result_data_model)
self.init_ui()
# ui 초기화
def init_ui(self):
# 그리드 레이아웃
grid = QGridLayout()
# 테이블위젯 추가
grid.addWidget(self.input_table, 0, 0)
grid.addWidget(self.other_table, 1, 0)
grid.addWidget(self.result_table, 0, 1, 2, 1)
grid.addWidget(self.save, 2, 1)
grid.setRowStretch(0, 5)
grid.setColumnStretch(0, 5)
# 레이아웃 세팅
self.setLayout(grid)
# 초기 윈도우사이즈 설정
self.setGeometry(100, 100, 1446, 620)
# 스타일 설정
self.setStyleSheet("background-color: #FFFFFF")
# 타이틀 설정
self.setWindowTitle("일일정산서 계산서: " + self.today)
- save 버튼을 생성, 클릭시 submitted 시그널을 발생시키도록 설정
- 버튼을 레이아웃에 추가
2. date_query 함수 수정
# 날짜로 데이터 조회
def date_query(parent, tab):
date_select = DateSelect(parent)
date_select.show_modal()
if not date_select.canceled:
if tab == 0:
today = date_select.calendar.selectedDate().toString('yyyy-MM-dd')
result = DayCalQueryResult(parent, get_daycal_owner_values(today), get_daycal_other_values(today), get_daycal_result(today), today)
result.submitted.connect(save)
result.show()
- date_query 함수에서 DayCalQueryResult 위젯을 생성했을 때 submitted 시그널에 save 함수를 연결
- save 함수에서는 db 세션에 커밋을 실행하여 변경된 데이터를 저장
위 두가지 작업을 수행하는 것 만으로 간단하게 조회한 과거 데이터에 대한 수정기능을 구현할 수 있다.
다만, 화주의 경우 과거 데이터의 화주는 현재 화주 리스트 테이블과 일치하지 않기때문에 당연히 수정할 수 없다.
'개인 프로젝트 > Accounting Program' 카테고리의 다른 글
#21 디자인 변경 (0) | 2021.12.20 |
---|---|
#19 데이터 조회기능 구현 (0) | 2021.12.01 |
#18 저장기능 구현 (0) | 2021.11.25 |
#17 QTableView (0) | 2021.11.22 |
#16 화주 삭제, 화주 이름 변경 (0) | 2021.11.02 |