Exemple #1
0
 public static function get_finance_recurring_items($hook, $search)
 {
     /**
      * next_due_date
      * url
      * type (i or e)
      * amount
      * currency_id
      * days
      * months
      * years
      * last_transaction_finance_id
      * account_name
      * categories
      * finance_recurring_id
      */
     // find any unpaid invoices.
     $invoices = self::get_invoices(array('date_paid' => '0000-00-00'));
     $return = array();
     foreach ($invoices as $invoice) {
         // filter out invoices that haven't been sent yet? probably should...
         //$invoice = self::get_invoice($invoice['invoice_id']);
         if (isset($invoice['date_cancel']) && $invoice['date_cancel'] != '0000-00-00') {
             continue;
         }
         // check if this invoice is part of a subscription, put in some additional info for this subscriptions
         // 'recurring_text'
         if ($invoice['member_id']) {
             $member_name = module_member::link_open($invoice['member_id'], true);
         } else {
             if ($invoice['customer_id']) {
                 $member_name = module_customer::link_open($invoice['customer_id'], true);
             } else {
                 $member_name = _l('N/A');
             }
         }
         $recurring_text = _l('Payment from %s', $member_name);
         if (class_exists('module_subscription', false) && isset($invoice['invoice_subscription_ids'])) {
             $sql = "SELECT sh.*, s.name FROM `" . _DB_PREFIX . "subscription_history` sh LEFT JOIN `" . _DB_PREFIX . "subscription` s USING (subscription_id) WHERE sh.invoice_id = " . (int) $invoice['invoice_id'] . "";
             $res = qa1($sql);
             if ($res) {
                 $subscription_name = module_subscription::link_open($res['subscription_id'], true, $res);
                 $recurring_text = _l('Payment from %s on subscription %s', $member_name, $subscription_name);
             }
         }
         if (!isset($invoice['c_total_amount_due'])) {
             $invoice = module_invoice::get_invoice($invoice['invoice_id']);
             $invoice['c_total_amount_due'] = $invoice['total_amount_due'];
         }
         $return[$invoice['invoice_id']] = array('next_due_date' => $invoice['date_due'] && $invoice['date_due'] != '0000-00-00' ? $invoice['date_due'] : $invoice['date_created'], 'url' => module_invoice::link_open($invoice['invoice_id'], true, $invoice), 'type' => 'i', 'amount' => $invoice['c_total_amount_due'], 'currency_id' => $invoice['currency_id'], 'days' => 0, 'months' => 0, 'years' => 0, 'last_transaction_finance_id' => 0, 'account_name' => '', 'categories' => '', 'finance_recurring_id' => 0, 'recurring_text' => $recurring_text);
     }
     // find any automatically renewing invoices.
     $invoices = self::get_invoices(array('renewing' => 1));
     foreach ($invoices as $invoice) {
         // filter out invoices that haven't been sent yet? probably should...
         //$invoice = self::get_invoice($invoice['invoice_id']);
         if (isset($invoice['date_cancel']) && $invoice['date_cancel'] != '0000-00-00') {
             continue;
         }
         // check if this invoice is part of a subscription, put in some additional info for this subscriptions
         // 'recurring_text'
         if ($invoice['member_id']) {
             $member_name = module_member::link_open($invoice['member_id'], true);
         } else {
             if ($invoice['customer_id']) {
                 $member_name = module_customer::link_open($invoice['customer_id'], true);
             } else {
                 $member_name = _l('N/A');
             }
         }
         if ($invoice['renew_auto']) {
             $recurring_text = _l('Automatically Renewing invoice for %s', $member_name);
         } else {
             $recurring_text = _l('Manually Renewing invoice for %s', $member_name);
         }
         if (!isset($invoice['c_total_amount'])) {
             $invoice = module_invoice::get_invoice($invoice['invoice_id']);
             $invoice['c_total_amount'] = $invoice['total_amount'];
         }
         $return[] = array('next_due_date' => date('Y-m-d', strtotime('+' . module_config::c('invoice_due_days', 30) . ' days', strtotime($invoice['date_renew']))), 'url' => module_invoice::link_open($invoice['invoice_id'], true, $invoice), 'type' => 'i', 'amount' => $invoice['c_total_amount'], 'currency_id' => $invoice['currency_id'], 'days' => 0, 'months' => 0, 'years' => 0, 'last_transaction_finance_id' => 0, 'account_name' => '', 'categories' => '', 'finance_recurring_id' => 0, 'recurring_text' => $recurring_text);
     }
     return $return;
 }
Exemple #2
0
 public static function get_finance_recurring_items($hook, $search)
 {
     /**
      * next_due_date
      * url
      * type (i or e)
      * amount
      * currency_id
      * days
      * months
      * years
      * last_transaction_finance_id
      * account_name
      * categories
      * finance_recurring_id
      */
     // find list of all members.
     // then go through and fine list of all upcoming subscription payments.
     // add these ones (and future ones up to (int)module_config::c('finance_recurring_months',6) months from todays date.
     $end_date = isset($search['date_to']) && !empty($search['date_to']) ? strtotime(input_date($search['date_to'])) : strtotime("+" . (int) module_config::c('finance_recurring_months', 6) . ' months');
     /*$sql = "SELECT s.*, sm.*";
       $sql .= " FROM `"._DB_PREFIX."subscription_member` sm ";
       $sql .= " LEFT JOIN `"._DB_PREFIX."subscription` s USING (subscription_id)";
       $sql .= " WHERE sm.`deleted` = 0";
       $members =  qa($sql);
       $sql = "SELECT s.*, sc.*";
       $sql .= " FROM `"._DB_PREFIX."subscription_customer` sc ";
       $sql .= " LEFT JOIN `"._DB_PREFIX."subscription` s USING (subscription_id)";
       $sql .= " WHERE sc.`deleted` = 0";
       $customers =  qa($sql);
       $items = array_merge($members,$customers);*/
     //$members = module_member::ge
     $sql = "SELECT s.*, so.*";
     $sql .= " FROM `" . _DB_PREFIX . "subscription_owner` so ";
     $sql .= " LEFT JOIN `" . _DB_PREFIX . "subscription` s USING (subscription_id)";
     $sql .= " WHERE so.`deleted` = 0";
     $sql .= " GROUP BY `owner_table`, `owner_id`";
     $items = qa($sql);
     //$members = module_member::get_members(array());
     $return = array();
     foreach ($items as $member) {
         $subscriptions = module_subscription::get_subscriptions_by($member['owner_table'], $member['owner_id']);
         /*if(isset($member['member_id']) && $member['member_id']){
         
                     }else if(isset($member['customer_id']) && $member['customer_id']){
                         $subscriptions = module_subscription::get_subscriptions_by_customer($member['customer_id']);
                     }else{
                         $subscriptions = array();
                     }*/
         foreach ($subscriptions as $subscription) {
             $time = strtotime($subscription['next_generation_date'] ? $subscription['next_generation_date'] : $subscription['next_due_date']);
             if (!$time) {
                 continue;
             }
             switch ($member['owner_table']) {
                 case 'customer':
                     $type = 'customer';
                     $member_name = module_customer::link_open($member['owner_id'], true);
                     $subscription_invoices = self::get_subscription_history($subscription['subscription_id'], $member['owner_table'], $member['owner_id']);
                     break;
                 case 'website':
                     $type = 'website';
                     $member_name = module_website::link_open($member['owner_id'], true);
                     $subscription_invoices = self::get_subscription_history($subscription['subscription_id'], $member['owner_table'], $member['owner_id']);
                     break;
                 case 'member':
                     $type = 'member';
                     $member_name = module_member::link_open($member['owner_id'], true);
                     $subscription_invoices = self::get_subscription_history($subscription['subscription_id'], $member['owner_table'], $member['owner_id']);
                     break;
                 default:
                     $subscription_invoices = array();
                     $member_name = 'unknown2';
                     $type = 'unknown2';
             }
             $subscription_name = module_subscription::link_open($subscription['subscription_id'], true);
             foreach ($subscription_invoices as $subscription_invoice_id => $subscription_invoice) {
                 if ($subscription_invoice['invoice_id']) {
                     $subscription_invoices[$subscription_invoice_id] = array_merge($subscription_invoice, module_invoice::get_invoice($subscription_invoice['invoice_id'], 2));
                 }
             }
             $original = true;
             $c = 0;
             while ($time < $end_date) {
                 if ($c++ > 200) {
                     break;
                 }
                 $next_time = 0;
                 if (!$subscription['days'] && !$subscription['months'] && !$subscription['years']) {
                     // it's a once off..
                     // add it to the list but dont calculate the next one.
                 } else {
                     if (!$original) {
                         // work out when the next one will be.
                         $next_time = self::_calculate_next_time($time, $subscription);
                         $time = $next_time;
                     } else {
                         $original = false;
                         // it's the original one.
                         $next_time = $time;
                     }
                 }
                 if ($next_time) {
                     // don't show it here if an invoice has already been generated.
                     // because invoice will already be in the list as outstanding
                     foreach ($subscription_invoices as $subscription_invoice) {
                         if (isset($subscription_invoice['date_create']) && $subscription_invoice['date_create'] == date('Y-m-d', $next_time)) {
                             //echo 'match';
                             continue 2;
                         }
                     }
                     $return[] = array('next_due_date' => date('Y-m-d', $next_time), 'url' => _l('Subscription: %s', $member_name), 'type' => 'i', 'amount' => $subscription['amount'], 'currency_id' => $subscription['currency_id'], 'days' => $subscription['days'], 'months' => $subscription['months'], 'years' => $subscription['years'], 'last_transaction_finance_id' => 0, 'account_name' => '', 'categories' => '', 'finance_recurring_id' => 0, 'last_transaction_text' => '(see member page)', 'end_date' => '0000-00-00', 'start_date' => $subscription['start_date'], 'recurring_text' => _l('Payment from %s %s on subscription %s', $type, $member_name, $subscription_name));
                 }
             }
         }
     }
     return $return;
 }
<form action="" method="post">

<?php 
$search_bar = array('elements' => array('name' => array('title' => _l('Names, Phone or Email:'), 'field' => array('type' => 'text', 'name' => 'search[generic]', 'value' => isset($search['generic']) ? $search['generic'] : ''))));
if (class_exists('module_group', false) && module_member::can_i('view', 'Member Groups')) {
    $search_bar['elements']['group'] = array('title' => _l('Group:'), 'field' => array('type' => 'select', 'name' => 'search[group_id]', 'value' => isset($search['group_id']) ? $search['group_id'] : '', 'options' => module_group::get_groups('member'), 'options_array_id' => 'name'));
}
if (class_exists('module_newsletter', false)) {
    $search_bar['elements']['group'] = array('title' => _l('Newsletter:'), 'field' => array('type' => 'select', 'name' => 'search[group_id2]', 'value' => isset($search['group_id2']) ? $search['group_id2'] : '', 'options' => module_group::get_groups('newsletter_subscription'), 'options_array_id' => 'name'));
}
echo module_form::search_bar($search_bar);
$table_manager = module_theme::new_table_manager();
$columns = array();
$columns['member_name'] = array('title' => 'Member Name', 'callback' => function ($member) {
    echo module_member::link_open($member['member_id'], true);
}, 'cell_class' => 'row_action');
$columns['member_business'] = array('title' => 'Business', 'callback' => function ($member) {
    echo htmlspecialchars($member['business']);
});
$columns['member_phone'] = array('title' => 'Phone', 'callback' => function ($member) {
    echo htmlspecialchars($member['phone']);
});
$columns['member_mobile'] = array('title' => 'Mobile', 'callback' => function ($member) {
    echo htmlspecialchars($member['mobile']);
});
$columns['member_email'] = array('title' => 'Email Address', 'callback' => function ($member) {
    echo htmlspecialchars($member['email']);
});
if (class_exists('module_subscription', false)) {
    $columns['member_subscription'] = array('title' => 'Subscription', 'callback' => function ($member) {
        foreach ($total_unpaid as $id => $t) {
            $total_unpaid[$id] = dollar($t, true, $id);
        }
        ?>

            <tr>
                <td><?php 
        switch ($subscribed_customer['owner_table']) {
            case 'customer':
                echo module_customer::link_open($subscribed_customer['owner_id'], true);
                break;
            case 'website':
                echo module_website::link_open($subscribed_customer['owner_id'], true);
                break;
            case 'member':
                echo module_member::link_open($subscribed_customer['owner_id'], true);
                break;
        }
        ?>
</td>
                <td><?php 
        echo print_date($subscribed_customer['start_date']);
        ?>
</td>
                <td><?php 
        echo print_date($subscribed_customer['next_due_date']);
        ?>
</td>
                <td>
                    <?php 
        echo count($history);
        </td>
        <td>
            <?php 
    $total_members += count($subscription_report['members']);
    echo count($subscription_report['members']);
    ?>
 <br/>
            <ul>
                <?php 
    foreach ($subscription_report['members'] as $member_id => $member_data) {
        ?>

                    <li>
                        <?php 
        echo module_member::link_open($member_id, true);
        ?>
 (<?php 
        echo $member_data['received_payments'] . ' = ' . dollar($member_data['received_total']);
        ?>
)
                        <?php 
        if ($member_data['unpaid_payments'] > 0) {
            ?>

                            <strong><?php 
            echo $member_data['unpaid_payments'];
            ?>
 UNPAID! = <?php 
            echo dollar($member_data['unpaid_total']);
            ?>
 * Package Date: 2015-11-25 02:55:20 
 * IP Address: 67.79.165.254
 */
if ($subscription['subscription_owner_id']) {
    $subscription_owner = get_single('subscription_owner', 'subscription_owner_id', $subscription['subscription_owner_id']);
    if (count($subscription_owner)) {
        ob_start();
        ?>
	    <table border="0" cellspacing="0" cellpadding="2" class="tableclass tableclass_form tableclass_full">
	        <tbody>
	        <tr>
	            <td>
	                <?php 
        switch ($subscription_owner['owner_table']) {
            case 'member':
                $member_name = module_member::link_open($subscription_owner['owner_id'], true);
                break;
            case 'website':
                $member_name = module_website::link_open($subscription_owner['owner_id'], true);
                break;
            case 'customer':
                $member_name = module_customer::link_open($subscription_owner['owner_id'], true);
                break;
        }
        $subscription_name = module_subscription::link_open($subscription['subscription_id'], true);
        _e('This is a subscription payment for %s %s on the subscription: %s', $subscription_owner['owner_table'], $member_name, $subscription_name);
        ?>
	            </td>
	        </tr>
	        </tbody>
	    </table>