'multipart/form-data','class'=>'form-horizontal')); $result .= View::factory('payment/admin/addbulk/ezypay'); $result .= Form::close(); return $result; } /** * Process the uploaded files */ public function process() { // Process payment $payments = array(); foreach ($this->file('payment') as $line => $array) { // Field 4 has our account reference if (preg_match('/^'.Company::instance()->site(TRUE).'-/',$array[4]) AND $array[10] == 'Cleared') { $aid = preg_replace('/^'.Company::instance()->site(TRUE).'-/','',$array[4]); $po = ORM::factory('Payment'); $po->account_id = $aid; $po->total_amt = $array[7]; $po->checkout_data = array('transid'=>$array[2].':'.$array[3]); $po->date_payment = strtotime(str_replace('/','-',$array[8])); $sbo = ORM::factory('Service_Billing')->where('checkout_data','=',$array[3])->find(); if (! $sbo->loaded() OR $sbo->service->account_id != $aid) throw HTTP_Exception::factory(501,'No Service Billing Data for :aid (:pd)?',array(':aid'=>$aid,':pd'=>$array[3])); $po->checkout_id = $sbo->checkout_id; $payments[$array[3]] = $po; } } foreach ($this->file('transaction') as $line => $array) { // If we dont have a payment item for this fee, we'll continue. if (! isset($payments[$array[3]])) continue; // Our commission fees, which appear has Type 1 or 15 if (in_array($array[9],array(1,15))) $payments[$array[3]]->fees_amt = (float)$array[7]; } $total = $fees = 0; foreach ($payments as $po) { $po->save(); if (! $po->saved()) throw HTTP_Exception::factory(501,'Failed to Save Payment for :aid (:pd)?',array(':aid'=>$po->account_id,':pd'=>$po->checkout_data['transid'])); $total += $po->total_amt; $fees += $po->fees_amt; } $output = Table::factory() ->data($payments) ->columns(array( 'id'=>'ID', 'date_payment'=>'Date', 'checkout->display("name")'=>'Method', 'total_amt'=>'Amount', 'fees_amt'=>'Fees', 'account->accnum()'=>'Cust ID', 'account->name()'=>'Customer', )) ->prepend(array( 'id'=>array('url'=>URL::link('admin','payment/edit/')), )); return View::factory('payment/admin/addbulk/ezypay_processed') ->set('table',$output) ->set('fee',$fees) ->set('total',$total); } } ?>