import csv
import io
from datetime import date


from typing import List
def build_kopramandiri_csv(
    transfer_date: date,
    company,
    rows: List[dict],
) -> str:
    """
    Build Kopramandiri bulk-transfer CSV.

    Header row:
        P,YYYYMMDD,<company_account>,<count>,<total>,

    Detail row per employee:
        <account_number>,<name>,<city>,<district>,<province>,IDR,<amount>,
        Trf InHouse,YYYYMMDD,<relationship>,,,,,,,Y,<email>,
    """
    output = io.StringIO()
    writer = csv.writer(
        output,
        quoting=csv.QUOTE_NONE,
        escapechar="\\",
        lineterminator="\n",
    )

    date_str = transfer_date.strftime("%Y%m%d")
    total_amount = sum(r["amount"] for r in rows)
    employee_count = len(rows)

    # Header row
    writer.writerow([
        "P",
        date_str,
        company.account_number or "",
        str(employee_count),
        str(total_amount),
        "",
    ])

    # Detail rows
    for row in rows:
        writer.writerow([
            row["account_number"],
            row["name"],
            company.city or "",
            company.district or "",
            company.province or "",
            "IDR",
            str(row["amount"]),
            "Trf InHouse",
            date_str,
            company.relationship_type or "IBU",
            "", "", "", "", "", "",
            "Y",
            company.email or "",
            "",
        ])

    return output.getvalue()
