unclearItems($q,$roo); } if (!empty($q['set_clear'])) { $this->clearItems($q,$roo); } if (!empty($q['set_amount'])) { $this->adjAmount($q,$roo); } $roo->jerr("no data to sent"); } function unclearItems($q,$roo) { $data = json_decode($q['remove_clear']); $brids = array(); foreach($data as $row) { $bankrecitem = DB_DAtaObject::Factory('bankrecitem'); $bankrecitem->joinAddBankrec(); switch($row->altid * 1) { case 1: $bankrecitem->bankrecitem_source = 'GL'; $bankrecitem->bankrecitem_source_id = $row->id; break; default: $roo->jerr("fixme - not supported yet altid = ({$row->altid})"); } if (!$bankrecitem->find(true)) { $roo->jerr("could not find bankrec item"); } if (!$bankrecitem->bankrecitem_cleared) { $roo->jerr("not cleared?!"); } if ($bankrecitem->bankrecitem_bankrec_id_bankrec_posted) { $roo->jerr("already posted"); } if (!in_array($bankrecitem->bankrecitem_bankrec_id, $brids)) { $brids[] = $bankrecitem->bankrecitem_bankrec_id; } $old = clone($bankrecitem); $bankrecitem->bankrecitem_cleared = false; $bankrecitem->update($old); } foreach($brids as $brid) { $bankrec = DB_DataObject::factory('bankrec'); $bankrec->get($brid); $bankrec->updateTotals($roo); } $roo->jok("updated"); } function gltrans($roo) { if ($this->bankrecitem_source !='GL') { $roo->jerr("invalid reference"); } $gl = DB_DataObject::Factory('gltrans'); if (!$gl->get($this->bankrecitem_source_id)) { $roo->jerr("no source transaction"); } return $gl; } function adjAmount($q,$roo) { // user has entered a different value for the amount.. $bankrec = DB_DataObject::factory('bankrec'); $bankrec = $bankrec->lastForBankAcc($roo, $q['bankaccnt_id'], $q['sortdate']); $bankrecitem = DB_DAtaObject::Factory('bankrecitem'); switch($q['altid'] * 1) { case 1: $bankrecitem->bankrecitem_source = 'GL'; $bankrecitem->bankrecitem_source_id = $q['source_id']; break; default: $roo->jerr("fixme - not supported yet altid = ({$q['source_id']})"); } $bankrecitem->find(true); if ($bankrecitem->bankrecitem_cleared) { $roo->jerr("already cleared?! - unclear first."); } /// FIXME when we support other types.. $gl = $bankrecitem->gltrans($roo); $base = abs($gl->gltrans_amount); $new = abs($q['set_amount']); $rate = $new / $base; //$roo->jerr('rate : '. $rate . " base = $base, new= $new"); $old = clone($bankrecitem); $bankrecitem->setFrom(array( 'bankrecitem_bankrec_id' => $bankrec->pid(), 'bankrecitem_cleared' => false, 'bankrecitem_curr_rate' => $rate, 'bankrecitem_amount' => $new, // ignore negative +ve.. )); $bankrecitem->bankrecitem_id ? $bankrecitem->update($old) : $bankrecitem->insert(); $roo->jok("updated"); } function clearItems($q,$roo) { $bankrec = DB_DataObject::factory('bankrec'); $bankrec = $bankrec->lastForBankAcc($roo, $q['bankaccnt_id'], $q['sortdate']); $data = json_decode($q['set_clear']); foreach($data as $row) { $bankrecitem = DB_DAtaObject::Factory('bankrecitem'); switch($row->altid * 1) { case 1: $bankrecitem->bankrecitem_source = 'GL'; $bankrecitem->bankrecitem_source_id = $row->id; break; default: $roo->jerr("fixme - not supported yet altid = ({$row->altid})"); } $bankrecitem->find(true); if ($bankrecitem->bankrecitem_cleared) { $roo->jerr("already cleared?!"); } $old = clone($bankrecitem); $bankrecitem->setFrom(array( 'bankrecitem_bankrec_id' => $bankrec->pid(), 'bankrecitem_cleared' => true, 'bankrecitem_curr_rate' => $row->curr_rate, 'bankrecitem_amount' => abs($row->amount), // ignore negative +ve.. )); $bankrecitem->bankrecitem_id ? $bankrecitem->update($old) : $bankrecitem->insert(); } $bankrec->updateTotals($roo); $roo->jok("updated"); } function joinAddBankrec() { $this->_join .= " LEFT JOIN bankrec AS join_bankrecitem_bankrec_id_bankrec_id ON (join_bankrecitem_bankrec_id_bankrec_id.bankrec_id=bankrecitem.bankrecitem_bankrec_id) "; $bankrec = DB_DataObject::factory('bankrec'); $this->selectAs($bankrec, 'bankrecitem_bankrec_id_%s', 'join_bankrecitem_bankrec_id_bankrec_id'); } }