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

+ Recent posts