#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Invoice StudioSoft — RSIA Kendangsari (Rp 2.000.000)
Template mengikuti spek final invoice StudioSoft (gaya Invoice_110/109).
"""
from PIL import Image, ImageDraw, ImageFont

W, H = 1240, 1754  # A4 @ 150dpi
SAFE = 90
SAFE_BOTTOM = 59

BG = (255, 255, 255)
BLUE = (30, 64, 175)
DARK = (15, 23, 42)
BODY = (71, 85, 105)
GRAY = (100, 116, 139)
LIGHT = (241, 245, 249)
LINE = (203, 213, 225)

X0, X1 = SAFE, W - SAFE

def font(name, size):
    return ImageFont.truetype("fonts/%s.ttf" % name, size)

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

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

logo = Image.open("assets_studiosoft_logo.png").convert("RGBA")
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 = 200
logo_h = int(logo.height * logo_w / logo.width)
logo = logo.resize((logo_w, logo_h), Image.LANCZOS)
img.paste(logo, (X0, 75), logo)

d.text((X1, 60), "INVOICE", font=font("Poppins-Bold", 56), fill=(255, 255, 255), anchor="ra")
d.text((X1, 138), "No. INV/2026/0111", font=font("Poppins-Regular", 25), fill=(219, 234, 254), anchor="ra")
d.text((X1, 182), "Surabaya, 15 Agustus 2026", font=font("Poppins-Regular", 21), fill=(219, 234, 254), anchor="ra")

# ---- From / Bill To ----
y = 320
col2x = X0 + 520
d.text((X0, y), "DARI", font=font("Poppins-Bold", 20), fill=GRAY)
d.text((X0, y + 34), "StudioSoft", font=font("Poppins-Bold", 32), fill=DARK)
for i, t in enumerate(["Jl. Mangga 3 E-346 B, Surabaya",
                       "Email: halo@studiosoft.id",
                       "WA: 0819-3500-0624"]):
    d.text((X0, y + 88 + i * 33), t, font=font("Poppins-Regular", 22), fill=BODY)

d.text((col2x, y), "KEPADA", font=font("Poppins-Bold", 20), fill=GRAY)
d.text((col2x, y + 34), "RSIA Kendangsari", font=font("Poppins-Bold", 32), fill=DARK)
for i, t in enumerate(["Jl. Raya Kendangsari No. 2, Surabaya", "Jawa Timur", "Telepon: (031) 841 7152"]):
    d.text((col2x, y + 88 + i * 33), t, font=font("Poppins-Regular", 22), fill=BODY)

# ---- Table: NO | DESKRIPSI ----
ty = 680
d.rectangle([X0, ty, X1, ty + 60], fill=LIGHT)
d.text((X0 + 20, ty + 16), "NO", font=font("Poppins-Bold", 24), fill=DARK)
d.text((X0 + 130, ty + 16), "DESKRIPSI", font=font("Poppins-Bold", 24), fill=DARK)

items_desc = [
    "Digital Marketing & Maintenance Bulanan",
]
ry = ty + 60
for i, desc in enumerate(items_desc, 1):
    d.line([X0, ry, X1, ry], fill=LINE)
    d.text((X0 + 20, ry + 20), str(i), font=font("Poppins-Regular", 22), fill=BODY)
    d.text((X0 + 130, ry + 20), desc, font=font("Poppins-Regular", 22), fill=DARK)
    ry += 62
d.line([X0, ry, X1, ry], fill=LINE)

# ---- Total ----
ty2 = ry + 30
kiri_total = X1 - 520
d.rectangle([kiri_total, ty2, X1, ty2 + 86], fill=LIGHT)
d.text((kiri_total + 20, ty2 + 25), "TOTAL", font=font("Poppins-Bold", 26), fill=DARK)
d.text((X1 - 28, ty2 + 23), "Rp 2.000.000", font=font("Poppins-Bold", 26), fill=BLUE, anchor="ra")

# ---- Payment ----
fy = max(H - SAFE_BOTTOM - 330, ty2 + 86 + 45)
d.text((X0, fy), "PEMBAYARAN", font=font("Poppins-Bold", 20), fill=GRAY)
d.text((X0, fy + 36), "Transfer ke (a.n. Uky Yanuhandoko):", font=font("Poppins-SemiBold", 22), fill=DARK)
bank_lines = [
    "1. BCA 6750379638   (Rungkut Mapan, Surabaya)",
    "2. Mandiri 142-00-1068384-4   (Bratang Binangun, Surabaya)",
]
for i, t in enumerate(bank_lines):
    d.text((X0, fy + 78 + i * 34), t, font=font("Poppins-Regular", 21), fill=BODY)

# ---- Signature ----
d.text((X1 - 320, fy), "Hormat kami,", font=font("Poppins-Regular", 22), fill=BODY)
try:
    ttd = Image.open("ttd_uky.png").convert("RGBA")
    ttd.thumbnail((260, 120), Image.LANCZOS)
    img.paste(ttd, (X1 - 320, fy + 30), ttd)
except Exception:
    pass
d.line([X1 - 320, fy + 180, X1 - 40, fy + 180], fill=LINE)
d.text((X1 - 320, fy + 195), "StudioSoft", font=font("Poppins-Bold", 26), fill=DARK)

png_out = "Invoice_111_RSIA_Kendangsari.png"
img.save(png_out)
pdf_out = "Invoice_111_RSIA_Kendangsari.pdf"
img_rgb = img.convert("RGB")
img_rgb.save(pdf_out, "PDF", resolution=150.0)
print("OK ->", png_out)
print("OK ->", pdf_out)
