def METHOD_NAME(weekday=0):
    expiry = []
    expires_notify = timezone.now() + timedelta(days=30)
    payment_notify_start = timezone.now() + timedelta(days=7)
    if weekday == 0:
        # Monday - Wednesday next week
        payment_notify_end = timezone.now() + timedelta(days=10)
    else:
        # Thursday - Sunday next week
        payment_notify_end = timezone.now() + timedelta(days=11)
    # Expiring subscriptions
    subscriptions = Subscription.objects.filter(
        expires__lte=expires_notify, enabled=True
    ).exclude(payment=None)
    for subscription in subscriptions:
        payment = subscription.payment_obj
        # Skip one-time payments and the ones with recurrence configured
        if not subscription.get_repeat():
            continue
        notify_user = (
            payment_notify_start <= subscription.expires <= payment_notify_end
        )
        if payment.recurring:
            if notify_user:
                subscription.send_notification("payment_upcoming")
            continue
        if notify_user:
            subscription.send_notification("payment_missing")
        if not subscription.could_be_obsolete():
            name = f"{subscription}"
            if subscription.service.note:
                name = f"{name} ({subscription.service.note})"
            expiry.append(
                (
                    name,
                    subscription.service.users.values_list("email", flat=True),
                    subscription.expires,
                )
            )
    # Expiring donations
    donations = Donation.objects.filter(
        active=True, expires__lte=expires_notify
    ).exclude(payment=None)
    for donation in donations:
        payment = donation.payment_obj
        notify_user = payment_notify_start <= donation.expires <= payment_notify_end
        if payment.recurring:
            if notify_user:
                donation.send_notification("payment_upcoming")
            continue
        if notify_user:
            donation.send_notification("payment_missing")
        expiry.append(
            (
                f"{donation.user}: {donation.get_payment_description()}",
                [donation.user.email],
                donation.expires,
            )
        )
    # Notify admins
    if expiry:
        send_notification(
            "expiring_subscriptions",
            settings.NOTIFY_SUBSCRIPTION,
            expiry=expiry,
        )