Beispiel #1
0
 /**
  * (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'));
 }
Beispiel #2
0
 /**
  * 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);
 }