/** * (non-PHPdoc) * @see Tinebase_Controller_Record_Abstract::_inspectCreate() */ protected function _inspectUpdate(Tinebase_Record_Interface $_record) { $debitor = $_record->getForeignRecordBreakNull('debitor_id', Billing_Controller_Debitor::getInstance()); if ($_record->__get('is_return_debit') && $_record->__get('state') != 'GREEN') { if ($_record->getForeignId('debitor_id')) { $debitorId = $_record->getForeignId('debitor_id'); $amount = $_record->__get('payment_amount'); $returnDebitFee = $_record->__get('return_inquiry_fee'); try { $toReturnPayment = Billing_Controller_Payment::getInstance()->getDebitToReturn($debitorId, $amount, $returnDebitFee, 'DEBIT'); $returnPaymentId = $toReturnPayment->getId(); if ($returnPaymentId && $debitorId && $toReturnPayment->__get('is_cancelled') == false) { $_record->__set('state', 'GREEN'); $_record->__set('return_debit_base_payment_id', $returnPaymentId); } return; } catch (Exception $e) { $returnPaymentId = null; } } } if ($_record->__get('is_return_debit')) { return; } if ($debitor && $_record->__get('state') != 'GREEN') { $_record->__set('state', 'ORANGE'); } $op = $_record->getForeignRecordBreakNull('op_id', Billing_Controller_OpenItem::getInstance()); if ($op) { $_record->__set('state', 'GREEN'); } else { if ($debitor) { $openItems = Billing_Controller_OpenItem::getInstance()->getByDebitor($debitor->getId()); $openItem = $openItems->getFirstRecord(); if ($openItem) { $openItemId = $openItem->getId(); $opAmount = $openItem->__get('open_sum'); if (abs($amount) > abs($opAmount)) { $overpay = abs($amount) - abs($opAmount); } if ($overpay == 0) { $_record->__set('state', 'GREEN'); } } else { if ($_record->__get('overpay') == 'DONATION') { $_record->__set('state', 'GREEN'); } } } // means there are multiple assigned within GUI if ($_record->hasMultipleOpenItems()) { $_record->__set('state', 'GREEN'); } } //$_record->__set('job_nr', Tinebase_NumberBase_Controller::getInstance()->getNextNumber('job_nr')); }
/** * 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); } }