/** * 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); }
/** * (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()); } }
/** * (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()); } }
/** * (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); }
/** * * 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()); } }
/** * * 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()); } }
/** * (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')); }
/** * (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; } }
/** * * 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()); } }
/** * 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); } }
/** * 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')); }
/** * (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()); } }