<?php defined('SYSPATH') or die('No direct access allowed.'); /** * Send Reseller Admins a list of overdue invoices. * * @package Invoice * @category Tasks * @author Deon George * @copyright (c) 2009-2013 Open Source Billing * @license http://dev.osbill.net/license.html */ class Task_Invoice_Listoverdue extends Minion_Task { protected function _execute(array $params) { $overdue = ORM::factory('Invoice')->list_overdue(NULL,FALSE); $rtms = $invoices = array(); foreach ($overdue as $io) $invoices[$io->account->rtm_id][] = $io; // Work out which suppliers should be notified. foreach (array_keys($invoices) as $rtm_id) foreach (ORM::factory('RTM')->suppliers(ORM::factory('RTM',$rtm_id)) as $rtmo) if (empty($rtms[$rtmo->id])) $rtms[$rtmo->id] = $rtmo; // Send an email to each supplier, with their list of overdue invoices. foreach ($rtms as $rtmo) { $output = ''; $output .= sprintf('Hi, %s, here are the outstanding invoices of your customers.',$rtmo->name)."\n\n"; $rtmp = array(); foreach ($rtmo->agents($rtmo) as $artmo) { // If we have included this reseller ID or there are no invoices if (in_array($artmo->id,$rtmp) OR empty($invoices[$artmo->id])) continue; array_push($rtmp,$artmo->id); $rtm_invoices = array(); $total = 0; foreach ($invoices[$artmo->id] as $o) { array_push($rtm_invoices,$o); $total += $o->due(); } $output .= View::factory('invoice/task/listoverdue')->set('rtmo',$artmo)->set('o',$rtm_invoices); } // Send our email $et = Email_Template::instance('task_invoice_list_overdue'); $et->to = array('account'=>$rtmo->peers()); $et->variables = array( 'TABLE'=>$output, 'NUM_INV'=>count($rtm_invoices), 'TOTAL'=>$total, ); $et->send(); } } } ?>