# edited by glg
from PySide6.QtCore import Signal
from PySide6.QtWidgets import (
    QFormLayout,
    QGroupBox,
    QLabel,
    QVBoxLayout,
    QWidget,
)


class PenjualanSettingsView(QWidget):
    setting_saved = Signal(dict)

    def __init__(self, controller, parent=None):
        super().__init__(parent)
        self.controller = controller
        self._build_ui()
        self._load_settings()

    def _build_ui(self):
        layout = QVBoxLayout(self)
        layout.setContentsMargins(8, 8, 8, 8)
        layout.setSpacing(10)

        usage_label = QLabel(
            "Pengaturan pajak penjualan saat ini dikunci:\n"
            "1. Mode transaksi selalu Termasuk PPN.\n"
            "2. Opsi Exclude tidak digunakan lagi.\n"
            "3. Persentase PPN tetap dapat disiapkan dari endpoint server (opsional)."
        )
        usage_label.setWordWrap(True)
        usage_label.setStyleSheet(
            "background-color: #f5f8fc; border: 1px solid #dbe5f0; "
            "padding: 8px; border-radius: 4px;"
        )
        layout.addWidget(usage_label)

        box = QGroupBox("Informasi PPN Penjualan")
        form = QFormLayout()
        form.setSpacing(8)

        self.mode_label = QLabel("Termasuk PPN")
        self.ppn_percent_label = QLabel("-")
        self.endpoint_status_label = QLabel("-")
        self.endpoint_url_label = QLabel("-")
        self.endpoint_url_label.setWordWrap(True)

        form.addRow(QLabel("Mode PPN Aktif:"), self.mode_label)
        form.addRow(QLabel("Persentase PPN Aktif:"), self.ppn_percent_label)
        form.addRow(QLabel("Endpoint PPN Server:"), self.endpoint_status_label)
        form.addRow(QLabel("URL Endpoint:"), self.endpoint_url_label)

        box.setLayout(form)
        layout.addWidget(box)
        layout.addStretch(1)

    def _load_settings(self):
        settings = self.controller.get_penjualan_ppn_settings() or {}
        percent = int(settings.get("percent") or 0)
        endpoint_ready = bool(settings.get("endpoint_ready"))
        endpoint_url = str(settings.get("endpoint_url") or "").strip()
        endpoint_reason = str(settings.get("endpoint_reason") or "").strip()

        self.mode_label.setText("Termasuk PPN")
        self.ppn_percent_label.setText(f"{percent}%")

        if endpoint_ready:
            self.endpoint_status_label.setText("Siap (configured)")
        else:
            reason_text = endpoint_reason if endpoint_reason else "belum dikonfigurasi"
            self.endpoint_status_label.setText(f"Belum siap ({reason_text})")

        self.endpoint_url_label.setText(endpoint_url if endpoint_url else "-")
