class DialogPagamento(QDialog):
    def __init__(self, prestadores_ativos, dados_pagamento=None, parent=None):
        super().__init__(parent)
        self.setWindowTitle("Lançar Pagamento")
        self.setFixedSize(400, 300)
        layout = QFormLayout()

        self.combo_prestador = QComboBox()
        for p in prestadores_ativos:
            self.combo_prestador.addItem(p[1], p[0])

        self.input_competencia = QLineEdit()
        self.input_valor_pago = QLineEdit()
        self.data_pagamento = QDateEdit()
        self.data_pagamento.setCalendarPopup(True)
        self.data_pagamento.setDate(QDate.currentDate())
        self.input_observacao = QLineEdit()
        self.combo_status = QComboBox()
        self.combo_status.addItems(["Pago", "Parcial", "Não pago"])

        layout.addRow("Prestador:", self.combo_prestador)
        layout.addRow("Competência (MM/AAAA):", self.input_competencia)
        layout.addRow("Valor Pago (R$):", self.input_valor_pago)
        layout.addRow("Data Pagamento:", self.data_pagamento)
        layout.addRow("Observação:", self.input_observacao)
        layout.addRow("Status:", self.combo_status)

        btn_salvar = QPushButton("Salvar")
        btn_salvar.clicked.connect(self.accept)
        layout.addRow(btn_salvar)
        self.setLayout(layout)

        if dados_pagamento:
            self.combo_prestador.setCurrentIndex(
                self.combo_prestador.findData(dados_pagamento["id_prestador"]))
            self.input_competencia.setText(dados_pagamento["competencia"])
            self.input_valor_pago.setText(str(dados_pagamento["valor_pago"]))
            data_pgto = datetime.strptime(dados_pagamento["data_pagamento"], "%Y-%m-%d")
            self.data_pagamento.setDate(data_pgto.date())
            self.input_observacao.setText(dados_pagamento["observacao"])
            self.combo_status.setCurrentText(dados_pagamento["status_pagamento"])

    def get_data(self):
        return {
            "id_prestador": self.combo_prestador.currentData(),
            "competencia": self.input_competencia.text().strip(),
            "valor_pago": float(self.input_valor_pago.text().replace(",", ".") or 0),
            "data_pagamento": self.data_pagamento.date().toString("yyyy-MM-dd"),
            "observacao": self.input_observacao.text().strip(),
            "status_pagamento": self.combo_status.currentText()
        }