from PIL import Image, ImageDraw, ImageFont

W, H = 1240, 1754  # A4 @ 150dpi
BG = (255, 255, 255)
BLUE = (30, 64, 175)
BLUE_DARK = (23, 48, 130)
DARK = (15, 23, 42)
BODY = (71, 85, 105)
GRAY = (100, 116, 139)
LIGHT = (241, 245, 249)
LINE = (203, 213, 225)

def font(name, size):
    return ImageFont.truetype(f"fonts/{name}.ttf", size)

img = Image.new("RGB", (W, H), BG)
d = ImageDraw.Draw(img)

# ---- Header band ----
d.rectangle([0, 0, W, 230], fill=BLUE)

# Logo StudioSoft (left) with transparent bg -> paste onto blue
logo = Image.open("assets_studiosoft_logo.png").convert("RGBA")
# white logo: recolor non-transparent pixels to white for contrast on blue
lpix = logo.load()
for x in range(logo.width):
    for y in range(logo.height):
        r, g, b, a = lpix[x, y]
        if a > 0:
            lpix[x, y] = (255, 255, 255, a)
logo_w = 220
logo_h = int(logo.height * logo_w / logo.width)
logo = logo.resize((logo_w, logo_h), Image.LANCZOS)
img.paste(logo, (70, 70), logo)

# Invoice title (right)
d.text((W - 90, 55), "INVOICE", font=font("Poppins-Bold", 58), fill=(255, 255, 255), anchor="ra")
d.text((W - 90, 140), "No. INV/2026/0001", font=font("Poppins-Regular", 26), fill=(219, 234, 254), anchor="ra")
d.text((W - 90, 185), "Surabaya, 3 Agustus 2026", font=font("Poppins-Regular", 22), fill=(219, 234, 254), anchor="ra")

# ---- From / Bill To ----
y = 300
d.text((70, y), "DARI", font=font("Poppins-Bold", 22), fill=GRAY)
d.text((70, y + 38), "StudioSoft", font=font("Poppins-Bold", 34), fill=DARK)
for i, t in enumerate(["Jl. Contoh Raya No. 88, Surabaya 60111",
                       "Email: halo@studiosoft.id",
                       "WA: 0819-3500-0624"]):
    d.text((70, y + 96 + i * 36), t, font=font("Poppins-Regular", 23), fill=BODY)

# Bill to on right column
bx = W - 560
d.text((bx, y), "KEPADA", font=font("Poppins-Bold", 22), fill=GRAY)
d.text((bx, y + 38), "Nama Klien / Perusahaan", font=font("Poppins-Bold", 34), fill=DARK)
for i, t in enumerate(["Alamat Klien",
                       "Kota, Provinsi",
                       "Telepon Klien"]):
    d.text((bx, y + 96 + i * 36), t, font=font("Poppins-Regular", 23), fill=BODY)

# ---- Table ----
ty = 660
d.rectangle([70, ty, W - 70, ty + 64], fill=LIGHT)
head = [(80, "NO"), (220, "DESKRIPSI"), (720, "QTY"), (920, "HARGA"), (1170, "JUMLAH")]
for x, t in head:
    d.text((x, ty + 18), t, font=font("Poppins-Bold", 25), fill=DARK, anchor="la")

items = [
    ("1", "Jasa Pembuatan Website Company Profile", "1", "Rp 5.000.000", "Rp 5.000.000"),
    ("2", "Desain Logo & Identitas Visual", "1", "Rp 1.500.000", "Rp 1.500.000"),
    ("3", "Optimasi SEO On-Page", "1", "Rp 1.000.000", "Rp 1.000.000"),
    ("4", "Maintenance Bulanan", "3", "Rp 500.000", "Rp 1.500.000"),
]
ry = ty + 64
for no, desc, qty, harga, jml in items:
    d.line([70, ry, W - 70, ry], fill=LINE)
    d.text((80, ry + 22), no, font=font("Poppins-Regular", 23), fill=BODY)
    d.text((220, ry + 22), desc, font=font("Poppins-Regular", 23), fill=DARK)
    d.text((720, ry + 22), qty, font=font("Poppins-Regular", 23), fill=BODY)
    d.text((920, ry + 22), harga, font=font("Poppins-Regular", 23), fill=BODY)
    d.text((1165, ry + 22), jml, font=font("Poppins-Bold", 23), fill=DARK, anchor="ra")
    ry += 66
d.line([70, ry, W - 70, ry], fill=LINE)

# Total row
ry += 4
d.rectangle([W - 480, ry, W - 70, ry + 80], fill=LIGHT)
d.text((W - 460, ry + 24), "TOTAL", font=font("Poppins-Bold", 26), fill=DARK)
d.text((W - 95, ry + 22), "Rp 9.000.000", font=font("Poppins-Bold", 26), fill=BLUE, anchor="ra")

# ---- Payment info ----
fy = 1480
d.text((70, fy), "PEMBAYARAN", font=font("Poppins-Bold", 22), fill=GRAY)
d.text((70, fy + 42), "Transfer ke:", font=font("Poppins-Regular", 23), fill=BODY)
d.text((70, fy + 84), "BCA 123-456-7890  a.n. StudioSoft", font=font("Poppins-SemiBold", 23), fill=DARK)

# ---- Signature ----
d.text((W - 460, fy + 40), "Hormat kami,", font=font("Poppins-Regular", 23), fill=BODY)
d.line([W - 460, fy + 220, W - 120, fy + 220], fill=LINE)
d.text((W - 460, fy + 236), "StudioSoft", font=font("Poppins-Bold", 27), fill=DARK)

img.save("contoh_invoice_studiosoft_v2.png")
print("OK v2")
