<?php
// ============================================================
//  Payment overdue — Mailchimp Flow G
// ============================================================
//
//  Daily. Finds members with at least one unpaid invoice where
//  due_at has passed. Promotes those invoices to 'overdue' status
//  and fires the Payment Overdue lifecycle + journey.
//
//  Only fires once per member per run — we don't spam members
//  with multiple tags if they have multiple overdue invoices.
//
// ============================================================

require_once __DIR__ . '/_bootstrap.php';

$run_id = cron_begin('overdue');

// 1. Promote unpaid invoices past their due date to overdue
$promoted = db_exec(
    "UPDATE invoices
        SET status = 'overdue'
        WHERE status = 'unpaid' AND due_at < CURDATE()"
);
echo "  marked $promoted invoices as overdue\n";

// 2. Find affected members (distinct)
$members = db_all(
    "SELECT DISTINCT m.* FROM members m
       JOIN invoices i ON i.member_id = m.id
       WHERE i.status = 'overdue'
         AND m.status IN ('active', 'pending')"
);

$processed = 0;
foreach ($members as $m) {
    echo "  -> {$m['email']} (overdue invoices)\n";
    if (mc_event_payment_overdue($m)) {
        $processed++;
    }
}

cron_finish($run_id, 'ok', $processed, "promoted $promoted invoices");
