/** * (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 create of one record * * @param Tinebase_Record_Interface $_record the update record * @param Tinebase_Record_Interface $_oldRecord the current persistent record * @return void */ protected function _inspectCreate($_record, $_oldRecord) { $_record->__set('payment_date', new Zend_Date($_record->__get('payment_date'))); $order = $_record->getForeignRecordBreakNull('order_id', Billing_Controller_Order::getInstance()); if (!$_record->__get('erp_context_id') && $order) { $_record->__set('erp_context_id', $order->__get('erp_context_id')); } $this->handleReturnDebit($_record); }