import os
import subprocess
from jinja2 import Environment, FileSystemLoader

# Customer data payload matching our jinja variables
customer_data = {
    "account_number": "C-998877665544",
    "invoice_date": "15/04/2026",
    "invoice_number": "SINV-0000999999",
    "client_name": "Jean Tremblay - Tremblay Avocats",
    "client_address_line1": "123 Rue de la Justice",
    "client_address_line2": "Sherbrooke, QC J1H 4G9",
    
    "current_charges_locations": [
        {
            "name": "123 Rue de la Justice, Sherbrooke",
            "items": [
                {
                    "description": "Fibre Affaires 50M/50M Illimité",
                    "qty": 1,
                    "unit_price": "109.95",
                    "amount": "109.95",
                    "is_credit": False
                },
                {
                    "description": "Location modem Giga",
                    "qty": 1,
                    "unit_price": "15.00",
                    "amount": "15.00",
                    "is_credit": False
                },
                {
                    "description": "Rabais fidélité",
                    "qty": 1,
                    "unit_price": "-10.00",
                    "amount": "-10.00",
                    "is_credit": True
                }
            ],
            "subtotal": "114.95"
        }
    ],
    
    "subtotal_before_taxes": "114.95",
    "tps_amount": "5.75",
    "tvq_amount": "11.47",
    "total_taxes": "17.22",
    "current_charges_total": "132.17",
    
    "current_page": "1",
    "total_pages": "1",
    
    "prev_invoice_date": "15/03/2026",
    "prev_invoice_total": "132.17",
    "recent_payments": [
        {
            "date": "16/04/2026",
            "amount": "132.17"
        }
    ],
    "remaining_balance": "0.00",
    
    "due_date": "15/05/2026",
    "total_amount_due": "0.00",
    "qr_code_base64": "" # Leaving blank so the template falls back to the "QR" placeholder
}

def main():
    # Setup rendering
    script_dir = os.path.dirname(os.path.abspath(__file__))
    env = Environment(loader=FileSystemLoader(script_dir))
    template = env.get_template('invoice_preview.jinja')
    
    # Render HTML
    html_output = template.render(customer_data)
    
    import time
    timestamp = int(time.time())
    
    # Save the rendered HTML temporarily
    temp_html_path = os.path.join(script_dir, f'rendered_jinja_invoice_{timestamp}.html')
    with open(temp_html_path, 'w', encoding='utf-8') as f:
        f.write(html_output)
        
    print(f"Generated HTML at {temp_html_path}")
    
    # Generate PDF via Chrome Headless
    pdf_path = os.path.join(script_dir, f'rendered_jinja_invoice_{timestamp}.pdf')
    chrome_path = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
    cmd = [
        chrome_path,
        "--headless",
        "--no-pdf-header-footer",
        f"--print-to-pdf={pdf_path}",
        temp_html_path
    ]
    
    print("Running Chrome to generate PDF...")
    subprocess.run(cmd, check=True)
    print(f"Success! Jinja data has been injected and PDF is ready at: {pdf_path}")

if __name__ == "__main__":
    main()
