/** * inspect update of one record * * @param Tinebase_Record_Interface $_record the update record * @param Tinebase_Record_Interface $_oldRecord the current persistent record * @return void */ protected function _inspectUpdate($_record, $_oldRecord) { if ($_record->__get('order_id')) { $order = $_record->getForeignRecord('order_id', Billing_Controller_Order::getInstance()); if ($order->__get('payment_state') != $_record->__get('payment_state')) { $order->__set('payment_state', $_record->__get('payment_state')); Billing_Controller_Order::getInstance()->update($order); } } $openItem = null; if ($_record->__get('payment_state') == 'PAYED') { try { $openItem = Billing_Controller_OpenItem::getInstance()->getByReceiptId($_record->getId()); if ($openItem->__get('state') != 'DONE') { $openItem->__set('state', 'DONE'); $openItem->__set('open_sum', 0); $openItem->__set('payed_sum', $_record->__get('total_brutto')); $openItem->__set('payment_method_id', $_record->getForeignId('payment_method_id')); } } catch (Exception $e) { // silent failure, as open item might not exist already } } if ($_record->isCancelled()) { if (is_null($openItem)) { $openItem = Billing_Controller_OpenItem::getInstance()->getByReceiptId($_record->getId()); } $openItem->__set('is_cancelled', true); $reversionReceiptId = $_record->getForeignId('reversion_record_id'); try { $reversionOpenItem = Billing_Controller_OpenItem::getInstance()->getByReceiptId($reversionReceiptId); $openItem->__set('open_sum', $openItem->__get('total_brutto') + $reversionOpenItem->__get('total_brutto')); $openItem->__set('payed_sum', -1 * $reversionOpenItem->__get('payed_sum')); $openItem->__set('reversion_record_id', $reversionOpenItem->getId()); } catch (Exception $e) { //failure OK: open item for reversion record might not already exist // will be set in on of the next update calls, as soon, the open item exists. } } if (!$_record->getForeignIdBreakNull('payment_method_id')) { $_record->__set('payment_method_id', 'BANKTRANSFER'); } if ($openItem) { if (!$openItem->getForeignIdBreakNull('payment_method_id')) { $openItem->__set('payment_method_id', 'BANKTRANSFER'); } Billing_Controller_OpenItem::getInstance()->update($openItem); } }
/** * (non-PHPdoc) * @see Tinebase_Controller_Record_Abstract::_inspectCreate() */ protected function _inspectUpdate(Tinebase_Record_Interface $_record) { //$receipt = $_record->getForeignRecord('receipt_id', Billing_Controller_Receipt::getInstance()); if (!$_record->getForeignIdBreakNull('payment_method_id')) { $_record->__set('payment_method_id', 'BANKTRANSFER'); } }