import flet as ft
import os
import sys

# Thêm thư mục gốc vào path để import core module
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from core.hkd_tax import calculate_hkd_tax, INDUSTRY_RATES
from core.reports.hkd_report import export_hkd_01_cnkd

def main(page: ft.Page):
    page.title = "Accountant Community - Flet Edition"
    page.theme_mode = ft.ThemeMode.DARK
    page.window_width = 500
    page.window_height = 700
    page.padding = 30
    page.scroll = "auto"

    # Mapping industry display to code
    industry_map = {
        "1.5% (Bán buôn, bán lẻ hàng hóa)": "nhom_1_5",
        "3% (Sản xuất, gia công, kinh doanh khác)": "nhom_3",
        "4.5% (Dịch vụ ăn uống, vận tải, có bao thầu vật tư)": "nhom_4_5",
        "7% (Dịch vụ thuần túy, lưu trú, không bao thầu vật tư)": "nhom_7",
        "10% (Cho thuê tài sản)": "nhom_10",
        "Tỷ lệ % tính thuế GTGT không xác định": "khong_xac_dinh"
    }

    # UI Elements
    title = ft.Text("Kế toán HKD Community", size=30, weight="bold", color="blue")
    revenue_input = ft.TextField(label="Doanh thu (VND)", placeholder="Nhập doanh thu...", prefix_text="₫ ")
    industry_dropdown = ft.Dropdown(
        label="Ngành nghề",
        options=[ft.dropdown.Option(k) for k in industry_map.keys()],
        value="1.5% (Bán buôn, bán lẻ hàng hóa)"
    )
    result_text = ft.Text(size=16)
    export_btn = ft.ElevatedButton("Xuất báo cáo 01/CNKD", icon=ft.icons.FILE_DOWNLOAD, disabled=True)

    last_result = {"data": None}

    def on_calculate(e):
        try:
            val = revenue_input.value.replace(",", "").replace(".", "")
            if not val: return
            
            revenue = float(val)
            industry_code = industry_map[industry_dropdown.value]
            
            res = calculate_hkd_tax(revenue, industry_code)
            last_result["data"] = res
            
            result_text.value = (
                f"--- KẾT QUẢ TÍNH THUẾ ---\n\n"
                f"Thuế GTGT ({res['gtgt_rate']}%): {res['gtgt_due']:,.0f}đ\n"
                f"Thuế TNCN ({res['tncn_rate']}%): {res['tncn_due']:,.0f}đ\n"
                f"Tổng phải nộp: {res['total_due']:,.0f}đ\n\n"
                f"Ghi chú: {res['note']}"
            )
            export_btn.disabled = False
            page.update()
        except ValueError:
            page.snack_bar = ft.SnackBar(ft.Text("Vui lòng nhập số hợp lệ!"))
            page.snack_bar.open = True
            page.update()

    def on_export(e):
        if last_result["data"]:
            path = export_hkd_01_cnkd(last_result["data"])
            page.snack_bar = ft.SnackBar(ft.Text(f"Đã xuất báo cáo tại: {path}"))
            page.snack_bar.open = True
            page.update()

    calculate_btn = ft.FilledButton("TÍNH TOÁN", on_click=on_calculate, expand=True)
    export_btn.on_click = on_export

    # Layout
    page.add(
        ft.Column(
            [
                title,
                ft.Divider(),
                revenue_input,
                industry_dropdown,
                ft.Row([calculate_btn]),
                ft.Container(
                    content=result_text,
                    padding=20,
                    bgcolor=ft.colors.SURFACE_VARIANT,
                    border_radius=10,
                ),
                ft.Row([export_btn], alignment="center"),
            ],
            spacing=20,
        )
    )

if __name__ == "__main__":
    ft.app(target=main)
