/** * the singleton pattern * * @return SoEventManager_Controller_SoEvent */ public static function getInstance() { if (self::$_instance === NULL) { self::$_instance = new self(); } return self::$_instance; }
public static function accountBookingToExternalArray(Billing_Model_AccountBooking $accountBooking, &$debSum, &$credSum) { $booking = $accountBooking->getForeignRecord('booking_id', Billing_Controller_Booking::getInstance()); //$accountSystem = $accountSystem->getForeignRecord('account_system_id', Billing_Controller_Booking::getInstance()); $debitorNr = ''; $debitor = $accountBooking->getForeignRecordBreakNull('debitor_id', Billing_Controller_Debitor::getInstance()); if ($debitor) { $debitorNr = $debitor->__get('debitor_nr'); } $contraBookings = $accountBooking->getContraBookings(); $aContraText = array(); foreach ($contraBookings as $contraBooking) { $accountSystem = $contraBooking->getForeignRecord('account_system_id', Billing_Controller_AccountSystem::getInstance()); $accountSystemNr = $accountSystem->__get('number') . ' (' . number_format($contraBooking->__get('value'), 2, ',', '.') . ') '; $aContraText[] = $accountSystemNr; } $strContraText = implode(',', $aContraText); $debSum += $accountBooking->__get('debit_value') ? $accountBooking->__get('debit_value') : 0; $credSum += (double) ($accountBooking->__get('credit_value') ? $accountBooking->__get('credit_value') : 0); $bDate = new Zend_Date($accountBooking->__get('booking_date')); $result = array('bnr' => $booking->__get('booking_nr'), 'receipt_nr' => $booking->__get('booking_receipt_nr'), 'usage' => $booking->__get('booking_text'), 'debitor_nr' => $debitorNr, 'contra_account' => $strContraText, 'date' => $bDate->toString('dd.MM.yyyy'), 'deb_value' => $accountBooking->__get('debit_value'), 'deb_value_f' => $accountBooking->__get('debit_value') != 0 ? number_format($accountBooking->__get('debit_value'), 2, ',', '.') : '', 'cred_value' => $accountBooking->__get('credit_value'), 'cred_value_f' => $accountBooking->__get('credit_value') != 0 ? number_format($accountBooking->__get('credit_value'), 2, ',', '.') : ''); return $result; }
public function printFibu($filters) { error_reporting(E_ALL); ini_set('display_errors', 'on'); try { $filters = $_REQUEST['filters']; $data = $_REQUEST['data']; $accountBookingFilters = $_REQUEST['accountBookingFilters']; Billing_Controller_AccountSystem::getInstance()->printFibu($filters, $data, $accountBookingFilters); } catch (Exception $e) { echo $e->__toString(); } }
public static function import($fileName) { $result = array('failcount' => 0, 'totalcount' => 0, 'duplicatecount' => 0, 'status' => 'success'); try { $reader = new Reader(); $statements = $reader->getStatements(file_get_contents($fileName)); foreach ($statements as $statement) { foreach ($statement->getTransactions() as $transaction) { //echo $transaction->getAmount() . "\n"; $amount = (double) $transaction->getAmount(); $description = $transaction->getDescription(); $accountNumber = $statement->getAccount()->getNumber(); //echo $accountNumber; $num = null; $debitorNr = null; $memberNr = null; $receiptNr = null; $context = 'ERP'; $cdesc = strtolower($description); $opNr = null; $openItemId = null; $debitorId = null; $opId = null; $type = null; $state = 'RED'; $opAmount = 0; $overpay = 0; if ($amount < 0) { $type = 'DEBIT'; } else { $type = 'CREDIT'; } if (strpos($cdesc, 'mitg') || strpos($cdesc, 'tgli') || strpos($cdesc, 'beitr')) { $context = 'MEMBERSHIP'; } elseif (strpos($cdesc, 'spend')) { $context = 'DONATOR'; } $isReturnDebit = false; if (strpos($cdesc, 'rueckbelast')) { $isReturnDebit = true; } $numDesc = $transaction->getDescriptionConcat(1, 7); $numDescCheck = strtolower($numDesc); $pos = strpos($numDescCheck, 'mitg'); if (!$pos) { $pos = strpos($numDescCheck, 'tgli'); } if (!pos) { $pos = strpos($numDescCheck, 'beitr'); } if (!pos) { $pos = strpos($numDescCheck, 'rech'); } if ($numDesc && $pos) { if (preg_match('/([0-9]{5,7})/', substr($numDesc, $pos), $match)) { $num = $match[1]; } } if ($num && !$isReturnDebit) { if (strpos($cdesc, 'rech')) { try { $receiptNr = $num; $receiptId = Billing_Controller_Receipt::getInstance()->getIdByProperty('invoice_nr', $num); $receipt = Billing_Controller_Receipt::getInstance()->get($receiptId); $context = $receipt->getForeignId('erp_context_id'); $order = $receipt->getForeignRecordBreakNull('order_id', Billing_Controller_Order::getInstance()); $debitor = $order->getForeignRecordBreakNull('debitor_id', Billing_Controller_Debitor::getInstance()); if ($debitor) { $debitorId = $debitor->getId(); $state = 'ORANGE'; $openItems = Billing_Controller_OpenItem::getInstance()->getByDebitor($debitorId); foreach ($openItems as $op) { if ($op->__get('state') != 'DONE') { $openItem = $op; break; } } //$openItem = $openItems->getFirstRecord(); $openItemId = $openItem->getId(); $opAmount = $openItem->__get('open_sum'); } if (abs($amount) > abs($opAmount)) { $overpay = abs($amount) - abs($opAmount); } if ($overpay == 0) { $state = 'GREEN'; } /*if((float)abs($openItem->__get('total_brutto')) == (float)abs($amount)){ $state = 'GREEN'; }*/ } catch (Exception $e) { } } elseif (strpos($cdesc, 'mitg')) { $memberNr = $num; try { $member = Membership_Controller_SoMember::getInstance()->getSoMemberByMemberNr($memberNr); $contactId = $member->getForeignId('contact_id'); $debitorId = Billing_Controller_Debitor::getInstance()->getIdByContactId($contactId); $state = 'ORANGE'; $openItems = Billing_Controller_OpenItem::getInstance()->getByDebitor($debitorId); foreach ($openItems as $op) { if ($op->__get('state') != 'DONE') { $openItem = $op; break; } } //$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) { $state = 'GREEN'; } } /*if((float)abs($openItem->__get('total_brutto')) == (float)abs($amount)){ $state = 'GREEN'; }*/ } catch (Exception $e) { } } else { try { $contactId = (int) trim($num); $debitorId = Billing_Controller_Debitor::getInstance()->getIdByContactId($contactId); $state = 'ORANGE'; $openItems = Billing_Controller_OpenItem::getInstance()->getByDebitor($debitorId); foreach ($openItems as $op) { if ($op->__get('state') != 'DONE') { $openItem = $op; break; } } // changed behviour: was only correct in first period :-/ //$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) { $state = 'GREEN'; } //if((float)abs($openItem->__get('total_brutto')) == (float)abs($amount)){ // $state = 'GREEN'; //} } catch (Exception $e) { } } } if ($isReturnDebit) { $returnDebitFee = (double) Tinebase_Core::getPreference('Billing')->getValue(Billing_Preference::DEBIT_RETURN_FEE); if ($num) { $contactId = (int) trim($num); $debitorId = null; try { $debitorId = Billing_Controller_Debitor::getInstance()->getIdByContactId($contactId); $state = 'ORANGE'; } catch (Exception $e) { $state = 'RED'; } try { $toReturnPayment = Billing_Controller_Payment::getInstance()->getDebitToReturn($debitorId, $amount, $returnDebitFee, 'DEBIT'); $returnPaymentId = $toReturnPayment->getId(); if ($returnPaymentId && $debitorId && $toReturnPayment->__get('is_cancelled') == false) { $state = 'GREEN'; } if ($toReturnPayment->__get('is_cancelled') == true) { $returnPaymentId = null; } } catch (Exception $e) { $returnPaymentId = null; } } } $id = md5($cdesc); try { $payment = Billing_Controller_MT940Payment::getInstance()->get($id); } catch (Exception $e) { $payment = Billing_Controller_MT940Payment::getInstance()->getEmptyMT940Payment(); $bankAccount = Billing_Controller_AccountSystem::getInstance()->getDefaultBankAccount(); $fordAccount = Billing_Controller_AccountSystem::getInstance()->getByNumber('14000'); if (!$isReturnDebit) { if ($type == 'DEBIT') { $payment->__set('account_system_id', $bankAccount->getId()); $payment->__set('account_system_id_haben', $fordAccount->getId()); } else { $payment->__set('account_system_id', $fordAccount->getId()); $payment->__set('account_system_id_haben', $bankAccount->getId()); } } else { $debitSettleAccount = Tinebase_Core::getPreference('Billing')->getValue(Billing_Preference::FIBU_KTO_DEBITOR); $payment->__set('account_system_id', $debitSettleAccount); $payment->__set('account_system_id_haben', $bankAccount->getId()); $payment->__set('is_return_debit', true); $payment->__set('print_inquiry', true); $payment->__set('set_accounts_banktransfer', true); $payment->__set('return_inquiry_fee', $returnDebitFee); $payment->__set('return_debit_base_payment_id', $returnPaymentId); } $payment->__set('id', $id); $payment->__set('erp_context_id', $context); if ($opNr) { $payment->__set('op_nr', $opNr); } if ($openItemId) { $payment->__set('op_id', $openItemId); $payment->__set('due_date', new Zend_Date($openItem->__get('due_date'))); $payment->__set('op_amount', $openItem->__get('total_brutto')); } if ($debitorId) { $payment->__set('debitor_id', $debitorId); } $payment->__set('type', $type); $payment->__set('payment_date', new Zend_Date($transaction->getBookDate()->format('Y-m-d H:i:s'))); $payment->__set('payment_amount', abs($amount)); $payment->__set('state', $state); $payment->__set('usage_payment', $description); $payment->__set('usage', $numDesc); $payment->__set('overpay_amount', $overpay); Billing_Controller_MT940Payment::getInstance()->create($payment); } } /*echo $statement->getOpeningBalance()->getAmount() . "\n"; foreach ($statement->getTransactions() as $transaction) { echo $transaction->getAmount() . "\n"; } echo $statement->getClosingBalance()->getAmount() . "\n";*/ } } catch (Exception $e) { Tinebase_Core::getLogger()->notice(__METHOD__ . '::' . __LINE__ . ' ' . 'TD-Import - Es trat ein Fehler auf. Nicht ausgeführt.' . print_r($e->__toString(), true)); $result['status'] = 'error'; $result['errorInfo'] = $e->getMessage(); $result['errorTrace'] = $e->getTrace(); } return $result; }
/** * Returns registry data of addressbook. * @see Tinebase_Application_Json_Abstract * * @return mixed array 'variable name' => 'data' */ public function getRegistryData() { $filter = new Tinebase_Model_ImportExportDefinitionFilter(array(array('field' => 'plugin', 'operator' => 'equals', 'value' => 'Billing_Import_BankCsv'))); $importDefinitions = Tinebase_ImportExportDefinition::getInstance()->search($filter); //print_r($importDefinitions); try { $defaultDefinitionArray = Tinebase_ImportExportDefinition::getInstance()->getByName('bank_import_csv')->toArray(); } catch (Tinebase_Exception_NotFound $tenf) { if (count($importDefinitions) > 0) { $defaultDefinitionArray = $importDefinitions->getFirstRecord()->toArray(); } else { Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' No import definitions found for Banks'); $defaultDefinitionArray = array(); } } $registryData = array('Order' => Billing_Controller_Order::getInstance()->getRegistryData(), 'StockLocation' => Billing_Controller_StockLocation::getInstance()->getRegistryData(), 'PaymentMethods' => $this->getPaymentMethodsAsSimpleArray(), 'Context' => $this->getContextsAsSimpleArray(), 'ArticleGroups' => Billing_Controller_ArticleGroup::getInstance()->getArticleGroupsAsSimpleArray(), 'DebitorGroups' => Billing_Controller_DebitorGroup::getInstance()->getDebitorGroupsAsSimpleArray(), 'ArticleSeriess' => Billing_Controller_ArticleSeries::getInstance()->getArticleSeriessAsSimpleArray(), 'AccountSystems' => Billing_Controller_AccountSystem::getInstance()->getAccountSystemsAsSimpleArray(), 'AccountClasss' => Billing_Controller_AccountClass::getInstance()->getAccountClasssAsSimpleArray(), 'defaultBankImportDefinition' => $defaultDefinitionArray, 'importDefinitions' => array('results' => $importDefinitions->toArray(), 'totalcount' => count($importDefinitions))); return $registryData; }
/** * get special options * * @param string $_value * @return array */ protected function _getSpecialOptions($_value) { $result = array(); switch ($_value) { case self::TEMPLATE_CALCULATION: case self::TEMPLATE_BID: case self::TEMPLATE_CONFIRM: case self::TEMPLATE_SHIPPING: case self::TEMPLATE_INVOICE: case self::TEMPLATE_POSINVOICE: case self::TEMPLATE_CREDIT: case self::TEMPLATE_MONITION: case self::TEMPLATE_MONITION2: case self::TEMPLATE_MONITION3: case self::TEMPLATE_QUERY: case self::TEMPLATE_OFFER: case self::TEMPLATE_ORDER: case self::TEMPLATE_INCINVOICE: case self::TEMPLATE_ARTICLE_SOLD: case self::TEMPLATE_DTA_DEBIT_PREPARE: case self::TEMPLATE_MONITION_PREPARE: case self::TEMPLATE_DEBIT_RETURN_INQUIRY: case self::TEMPLATE_ACCOUNT_STATEMENT: case self::TEMPLATE_SUM_SALDATION: case self::TEMPLATE_YEAR_TERMINATION1: case self::TEMPLATE_YEAR_TERMINATION2: $templates = DocManager_Controller_Template::getInstance()->getAll(); foreach ($templates as $template) { $result[] = array($template->getId(), $template->__get('name')); } break; case self::POS_DEFAULT_DEBITOR: $result[] = array(); /*$debitors = Billing_Controller_Debitor::getInstance()->getAll(); foreach ($debitors as $debitor) { $result[] = array($debitor->getId(), $debitor->__get('debitor_nr')); }*/ break; case self::FIBU_KTO_DEBITOR: case self::FIBU_KTO_DTA_SETTLE: case self::FIBU_KTO_DTA_RETURN_FEE: $ktos = Billing_Controller_AccountSystem::getInstance()->getAll(); foreach ($ktos as $kto) { $result[] = array($kto->getId(), $kto->__get('number') . ' ' . $kto->__get('name')); } break; case self::DEBIT_RETURN_FEE: case self::MONITION_STAGE1: case self::MONITION_STAGE2: case self::MONITION_STAGE3: $result = array(); break; case self::FIBU_INSTANT_BOOK_BILLABLE: $result = array(array(0, 'Nein'), array(1, 'Ja')); break; case self::ACTIVE_CONTENT_TYPE: $result = array(array('Invoice', 'Rechnungen'), array('OpenItem', 'Offene Posten'), array('SepaMandate', 'Sepa-Mandate')); break; default: $result = parent::_getSpecialOptions($_value); } return $result; }