Esempio n. 1
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);
 }
Esempio n. 2
0
 /**
  * (non-PHPdoc)
  * @see Tinebase_Controller_Record_Abstract::_inspectCreate()
  */
 protected function _inspectCreate(Tinebase_Record_Interface $_record)
 {
     // check whether the article nr is set? -> then do not overwrite: maybe from export...
     if (!$_record->__get('article_nr')) {
         $_record->__set('article_nr', Tinebase_NumberBase_Controller::getInstance()->getNextNumber('article_nr'));
     }
     if (!$_record->__get('price2_vat_id')) {
         $vat0 = Billing_Controller_Vat::getInstance()->getByName(0);
         $_record->__set('price2_vat_id', $vat0->getId());
     }
 }
Esempio n. 3
0
 /**
  * (non-PHPdoc)
  * @see Tinebase_Controller_Record_Abstract::_inspectCreate()
  */
 protected function _inspectCreate(Tinebase_Record_Interface $_record)
 {
     $_record->__set('order_nr', Tinebase_NumberBase_Controller::getInstance()->getNextNumber('order_nr'));
     if (!$_record->__get('payment_method_id')) {
         $_record->__set('payment_method_id', Billing_Controller_PaymentMethod::getInstance()->getDefaultPaymentMethod()->getId());
     }
 }
Esempio n. 4
0
 /**
  * (non-PHPdoc)
  * @see Tinebase_Controller_Record_Abstract::_inspectCreate()
  */
 protected function _inspectCreate(Tinebase_Record_Interface $_record)
 {
     $stockLocationId = $_record->__get('stock_location_id');
     $articleId = $_record->__get('article_id');
     try {
         $articleSupply = $this->_articleSupplyController->getByStockLocationArticle($stockLocationId, $articleId);
     } catch (Exception $e) {
         $articleSupply = $this->_articleSupplyController->getEmptyArticleSupply();
         $articleSupply->__set('stock_location_id', $stockLocationId);
         $articleSupply->__set('article_id', $articleId);
         $articleSupply->__set('amount', 0);
         $this->_articleSupplyController->create($articleSupply);
     }
     $stockAmount = (double) $articleSupply->__get('amount');
     $articleSupply->__set('amount', $stockAmount + $this->calculateStockAmountChange($_record));
     $this->_articleSupplyController->update($articleSupply);
 }
Esempio n. 5
0
 /**
  * 
  * Append dependent records as contact or price_group
  * @param Tinebase_Record_Interface $record
  */
 protected function appendDependentRecords($record)
 {
     if ($record->__get('contact_id')) {
         $this->appendForeignRecordToRecord($record, 'contact_id', 'contact_id', 'id', Addressbook_Backend_Factory::factory(Addressbook_Backend_Factory::SQL));
     }
     if ($record->__get('bank_id')) {
         $this->appendForeignRecordToRecord($record, 'bank_id', 'bank_id', 'id', new Billing_Backend_Bank());
     }
 }
Esempio n. 6
0
 /**
  * 
  * Append dependent records as contact or price_group
  * @param Tinebase_Record_Interface $record
  */
 protected function appendDependentRecords($record)
 {
     if ($record->__get('contact_id')) {
         $this->appendForeignRecordToRecord($record, 'contact_id', 'contact_id', 'id', Addressbook_Backend_Factory::factory(Addressbook_Backend_Factory::SQL));
     }
     if ($record->__get('price_group_id')) {
         $this->appendForeignRecordToRecord($record, 'price_group_id', 'price_group_id', 'id', new Billing_Backend_PriceGroup());
     }
     if ($record->__get('debitor_group_id')) {
         $this->appendForeignRecordToRecord($record, 'debitor_group_id', 'debitor_group_id', 'id', new Billing_Backend_DebitorGroup());
     }
     if ($record->__get('vat_id')) {
         $this->appendForeignRecordToRecord($record, 'vat_id', 'vat_id', 'id', new Billing_Backend_Vat());
     }
 }
Esempio n. 7
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'));
 }
Esempio n. 8
0
 /**
  * (non-PHPdoc)
  * @see Tinebase_Controller_Record_Abstract::_inspectCreate()
  */
 protected function _inspectCreate(Tinebase_Record_Interface $_record)
 {
     $type = $_record->__get('type');
     switch ($type) {
         case SPQUERY:
             $_record->__set('supply_request_nr', Tinebase_NumberBase_Controller::getInstance()->getNextNumber('supply_request_nr'));
             break;
         case SPOFFER:
             $_record->__set('supply_offer_nr', Tinebase_NumberBase_Controller::getInstance()->getNextNumber('supply_offer_nr'));
             break;
         case SPORDER:
             $_record->__set('supply_order_nr', Tinebase_NumberBase_Controller::getInstance()->getNextNumber('supply_order_nr'));
             break;
         case SPINVOICE:
             $_record->__set('supply_inc_inv_nr', Tinebase_NumberBase_Controller::getInstance()->getNextNumber('supply_inc_inv_nr'));
             break;
     }
 }
Esempio n. 9
0
 /**
  * 
  * Append dependent records as contact or price_group
  * @param Tinebase_Record_Interface $record
  */
 protected function appendDependentRecords($record)
 {
     if ($record->__get('contact_id')) {
         $this->appendForeignRecordToRecord($record, 'contact_id', 'contact_id', 'id', Addressbook_Backend_Factory::factory(Addressbook_Backend_Factory::SQL));
     }
     if ($record->__get('bank_id')) {
         $this->appendForeignRecordToRecord($record, 'bank_id', 'bank_id', 'id', new Billing_Backend_Bank());
     }
     if ($record->__get('bank_account_id')) {
         $this->appendForeignRecordToRecord($record, 'bank_account_id', 'bank_account_id', 'id', new Billing_Backend_BankAccount());
     }
     if ($record->__get('sepa_mandate_id')) {
         $this->appendForeignRecordToRecord($record, 'sepa_mandate_id', 'sepa_mandate_id', 'id', new Billing_Backend_SepaMandate());
     }
     if ($record->__get('membership_id')) {
         $this->appendForeignRecordToRecord($record, 'membership_id', 'membership_id', 'id', new Membership_Backend_SoMember());
     }
     if ($record->__get('regular_donation_id')) {
         $this->appendForeignRecordToRecord($record, 'regular_donation_id', 'regular_donation_id', 'id', new Donator_Backend_RegularDonation());
     }
 }
Esempio n. 10
0
 /**
  * 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);
     }
 }
Esempio n. 11
0
 /**
  * inspect creation of one record
  * 
  * @param   Tinebase_Record_Interface $_record
  * @return  void
  */
 protected function _inspectCreate(Tinebase_Record_Interface $_record)
 {
     $contact = Addressbook_Controller_Contact::getInstance()->get($_record->__get('contact_id'));
     $debitor = Addressbook_Custom_Contact::getDebitorFromContact($contact);
     $_record->__set('debitor_nr', $debitor->__get('debitor_nr'));
     $_record->__set('price_group_id', $debitor->__get('price_group_id'));
 }
Esempio n. 12
0
 /**
  * (non-PHPdoc)
  * @see Tinebase_Controller_Record_Abstract::_inspectCreate()
  */
 protected function _inspectUpdate(Tinebase_Record_Interface $_record)
 {
     if (!$_record->__get('created_datetime')) {
         $_record->__set('created_datetime', Zend_Date::now());
     }
 }