request->param('id'); $io = ORM::factory('invoice'); $tm = 'list_'.$mode; if (! method_exists($io,$tm)) throw new Kohana_Exception('Unknown Task List command :command',array(':command'=>$mode)); $total = $numinv = 0; $duelist = View::factory('invoice/task/'.$tm.'_head'); foreach ($io->$tm() as $t) { $duelist .= View::factory('invoice/task/'.$tm.'_body') ->set('io',$t); $numinv++; $total += $t->due(); } $duelist .= View::factory('invoice/task/'.$tm.'_foot'); // Send our email $et = Email_Template::instance('task_invoice_list_overdue'); // @todo Update this to be dynamic $et->to = array('account'=>array(1,68)); $et->variables = array( 'TABLE'=>$duelist, 'NUM_INV'=>$numinv, 'TOTAL'=>$total, ); $et->send(); $output = sprintf('List (%s) sent to: %s',$mode,implode(',',array_keys($et->to))); $this->response->body($output); } public function action_remind_due() { // @todo This should go in a config somewhere $days = 5; $io = ORM::factory('invoice'); $key = 'remind_due'; foreach ($io->list_due(time()+86400*$days) as $io) { // If we have already sent a reminder, we'll skip to the next one. if ($io->remind($key) AND (is_null($x=$this->request->param('id')) OR $x != 'again')) continue; // Send our email $et = Email_Template::instance('task_invoice_'.$key); $et->to = array('account'=>array($io->account_id)); $et->variables = array( 'DUE'=>$io->due(TRUE), 'DUE_DATE'=>$io->display('due_date'), 'FIRST_NAME'=>$io->account->first_name, 'INV_NUM'=>$io->refnum(), 'INV_URL'=>URL::site('user/invoice/view/'.$io->id,'http'), 'SITE_NAME'=>Config::sitename(), ); // @todo Record email log id if possible. if ($et->send()) $io->set_remind($key,time()); } $this->response->body(_('Due Reminders Sent.')); } public function action_remind_overdue() { $io = ORM::factory('invoice'); $notice = $this->request->param('id'); $x = NULL; if (preg_match('/:/',$notice)) list($notice,$x) = explode(':',$notice); switch ($notice) { case 1: // @todo This should go in a config somewhere $days = 2; break; case 2: // @todo This should go in a config somewhere $days = 7; break; case 3: // @todo This should go in a config somewhere $days = 21; break; default: $this->response->body(_('Unknown Remind Period: ').$notice); return; } $key = 'remind_overdue_'.$notice; $template = 'task_invoice_'.$key; foreach ($io->list_overdue_billing(time()-86400*$days,FALSE) as $io) { // If we have already sent a reminder, we'll skip to the next one. if ($io->remind($key) AND (is_null($x) OR $x != 'again')) continue; // Send our email $et = Email_Template::instance('task_invoice_'.$key); $et->to = array('account'=>array($io->account_id)); $et->variables = array( 'DUE'=>$io->due(TRUE), 'DUE_DATE'=>$io->display('due_date'), 'EMAIL'=>'accounts@graytech.net.au', // @todo This should come from a config. 'FIRST_NAME'=>$io->account->first_name, 'INV_NUM'=>$io->refnum(), 'INV_URL'=>URL::site('user/invoice/view/'.$io->id,'http'), 'LATE_FEE'=>'5.50', // @todo This should come from a config file. 'PAYMENTS_TABLE'=>$io->account->payment->list_recent_table(), 'SITE_NAME'=>Config::sitename(), ); // @todo Record email log id if possible. if ($et->send()) $io->set_remind($key,time()); } $this->response->body(_('Overdue Reminders Sent: ').$notice); } } ?>