コード例 #1
0
 /**
  * the singleton pattern
  *
  * @return SoEventManager_Controller_SoEvent
  */
 public static function getInstance()
 {
     if (self::$_instance === NULL) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
コード例 #2
0
 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;
 }
コード例 #3
0
ファイル: Http.php プロジェクト: carriercomm/Billing-5
 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();
     }
 }
コード例 #4
0
ファイル: MT940.php プロジェクト: carriercomm/Billing-5
 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;
 }
コード例 #5
0
ファイル: Json.php プロジェクト: carriercomm/Billing-5
 /**
  * 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;
 }
コード例 #6
0
ファイル: Preference.php プロジェクト: carriercomm/Billing-5
 /**
  * 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;
 }