public function printDocs()
 {
     // print payments which are debit returns and have flag print inquiry
     $resultData = array();
     $filters = array(array('field' => 'is_return_debit', 'operator' => 'equals', 'value' => '1'), array('field' => 'print_inquiry', 'operator' => 'equals', 'value' => '1'), array('field' => 'inquiry_print_date', 'operator' => 'isnull', 'value' => ''));
     $objFilter = new Billing_Model_PaymentFilter($filters, 'AND');
     $paymentIds = Billing_Controller_Payment::getInstance()->search($objFilter, null, null, true);
     foreach ($paymentIds as $paymentId) {
         $payment = Billing_Controller_Payment::getInstance()->get($paymentId);
         // get base payment
         $basePayment = $payment->getForeignRecordBreakNull('return_debit_base_payment_id', Billing_Controller_Payment::getInstance());
         if ($basePayment) {
             $batchJobDta = $basePayment->getForeignRecordBreakNull('batch_job_dta_id', Billing_Controller_BatchJobDta::getInstance());
             if ($batchJobDta) {
                 $bankAccount = Billing_Api_BankAccount::getFromBatchJobDta($batchJobDta);
                 $debitor = $payment->getForeignRecord('debitor_id', Billing_Controller_Debitor::getInstance());
                 $contact = $debitor->getForeignRecord('contact_id', Addressbook_Controller_Contact::getInstance());
                 $data = array();
                 $dummyTextBlocks = null;
                 $data = array_merge($data, Addressbook_Custom_Template::getContactData(array('contact' => $contact, 'user' => Tinebase_Core::get(Tinebase_Core::USER), 'userContact' => Addressbook_Controller_Contact::getInstance()->getContactByUserId(Tinebase_Core::get(Tinebase_Core::USER)->getId())), $dummyTextBlocks));
                 $data = array_merge($data, array('bank_name' => $bankAccount->getBank(), 'account_name' => $bankAccount->getName(), 'account_nr' => $bankAccount->getNumber(), 'bank_code' => $bankAccount->getBankCode()));
                 $resultData[$contact->__get('n_fileas')] = $data;
                 $payment->__set('inquiry_print_date', new Zend_Date());
                 Billing_Controller_Payment::getInstance()->update($payment);
             }
         }
     }
     $outputFileName = 'Ruecklastschrift-Nachforschung-' . strftime('%d-%m-%Y %H-%M-%S') . '.pdf';
     $templateId = Tinebase_Core::getPreference('Billing')->getValue(Billing_Preference::TEMPLATE_DEBIT_RETURN_INQUIRY);
     ksort($resultData);
     Billing_Controller_PrintJobRecordData::getInstance()->export($resultData, $templateId, $outputFileName);
 }
Esempio n. 2
0
 /**
  * the singleton pattern
  *
  * @return SoEventManager_Controller_SoEvent
  */
 public static function getInstance()
 {
     if (self::$_instance === NULL) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
Esempio n. 3
0
 public function getReturnDebitBasePayment()
 {
     return $this->getForeignRecordBreakNull('return_debit_base_payment_id', Billing_Controller_Payment::getInstance());
 }
Esempio n. 4
0
 public function printReturnInquiry()
 {
     try {
         Billing_Controller_Payment::getInstance()->printReturnInquiry();
     } catch (Exception $e) {
         echo $e->__toString();
     }
 }
Esempio n. 5
0
 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;
 }
Esempio n. 6
0
 public function reversePayment($paymentId)
 {
     return Billing_Controller_Payment::getInstance()->reversePayment($paymentId)->toArray();
 }
Esempio n. 7
0
 public function bookPayments($payments)
 {
     //throw new Zend_Exception('Temporarily disabled');
     foreach ($payments as $payment) {
         if ($payment->hasAdditionalItem('donation')) {
             $donationData = $payment->getAdditionalItem('donation');
         } else {
             $donationData = null;
         }
         if ($payment->hasMultipleOpenItems()) {
             $additionalData = $payment->getAdditionalData();
             if ($payment->hasAdditionalItem('openItems')) {
                 $data = $payment->getAdditionalItem('openItems');
                 $donationData = $payment->getAdditionalItem('donation');
                 $payment->flatten();
                 $paymentRecord = $payment->toArray();
                 $paymentRecord['amount'] = $paymentRecord['payment_amount'];
                 Billing_Controller_OpenItem::getInstance()->payOpenItems($data, $paymentRecord, $donationData);
             }
         } else {
             $pExtract = clone $payment;
             $pExtract->flatten();
             $paymentRecord = $pExtract->toArray();
             $paymentO = Billing_Controller_Payment::getInstance()->getEmptyPayment();
             if (array_key_exists('id', $paymentRecord)) {
                 unset($paymentRecord['id']);
             }
             $paymentO->setFromArray($paymentRecord);
             $paymentO->__set('amount', $payment->__get('payment_amount'));
             $openItem = $payment->getForeignRecordBreakNull('op_id', Billing_Controller_OpenItem::getInstance());
             if ($openItem) {
                 if ($payment->__get('overpay') == 'DONATION' && !$payment->__get('is_return_debit') && $donationData) {
                     $opAmount = abs((double) $openItem->__get('open_sum'));
                     $pAmount = abs((double) $payment->__get('payment_amount'));
                     if ($pAmount > $opAmount) {
                         $donationAmount = $pAmount - $opAmount;
                         $payment2 = clone $paymentO;
                         $payment2->__set('id', null);
                         $payment2->__set('amount', $donationAmount);
                         $payment2->__set('erp_context_id', 'DONATOR');
                         $payment2 = Billing_Controller_Payment::getInstance()->create($payment2);
                         $paymentDebitor = $payment2->getForeignRecord('debitor_id', Billing_Controller_Debitor::getInstance());
                         $contactId = $paymentDebitor->getForeignId('contact_id');
                         if ($donationData) {
                             $campaignId = $donationData['campaign'];
                         } else {
                             $campaign = Donator_Controller_Campaign::getInstance()->getDefaultCampaign();
                             $campaignId = $campaign->getId();
                         }
                         $usage = 'Spende Adress-Nr: ' . $paymentDebitor->__get('debitor_nr');
                         $date = $payment->__get('payment_date');
                         $donation = Donator_Controller_FundMaster::getInstance()->donateByContactId($contactId, $donationAmount, $campaignId, $date, $usage, $payment2);
                         $paymentO->__set('amount', $pAmount - $donationAmount);
                     }
                 }
                 // in case of overpay
                 if ($paymentO->__get('amount') != 0) {
                     $paymentO = Billing_Controller_Payment::getInstance()->create($paymentO);
                     Billing_Controller_OpenItem::getInstance()->payOpenItem($openItem->getId(), $paymentO, abs((double) $openItem->__get('open_sum')));
                 }
             } else {
                 // can be donation or prepay of member fee
                 if ($payment->__get('is_return_debit')) {
                     $paymentO = Billing_Controller_Payment::getInstance()->create($paymentO);
                     // prepay member fee
                 } elseif ($payment->__get('overpay') == 'PREPAYMEMBERFEE') {
                     // do nothing else, payment is stored with context membership
                     // so balance is positive
                     $paymentO->__set('erp_context_id', 'MEMBERSHIP');
                     $paymentO = Billing_Controller_Payment::getInstance()->create($paymentO);
                 } else {
                     // donation
                     $paymentO->__set('erp_context_id', 'DONATOR');
                     //$paymentO = Billing_Controller_Payment::getInstance()->create($paymentO);
                     $donationData = $payment->getAdditionalItem('donation');
                     $donationAmount = abs((double) $payment->__get('payment_amount'));
                     $payment2 = clone $paymentO;
                     $payment2->__set('id', null);
                     $payment2->__set('amount', $donationAmount);
                     $payment2->__set('erp_context_id', 'DONATOR');
                     $payment2 = Billing_Controller_Payment::getInstance()->create($payment2);
                     $paymentDebitor = $payment2->getForeignRecord('debitor_id', Billing_Controller_Debitor::getInstance());
                     $contactId = $paymentDebitor->getForeignId('contact_id');
                     if ($donationData) {
                         $campaignId = $donationData['campaign'];
                     } else {
                         $campaign = Donator_Controller_Campaign::getInstance()->getDefaultCampaign();
                         $campaignId = $campaign->getId();
                     }
                     $usage = 'Spende Adress-Nr: ' . $paymentDebitor->__get('debitor_nr');
                     $date = $payment->__get('payment_date');
                     $donation = Donator_Controller_FundMaster::getInstance()->donateByContactId($contactId, $donationAmount, $campaignId, $date, $usage, $payment2);
                 }
             }
         }
     }
 }
Esempio n. 8
0
 public function payOpenItems($data, $paymentRecord, $donationData)
 {
     try {
         if (!is_array($data)) {
             $data = Zend_Json::decode($data);
         }
         if (!is_array($paymentRecord)) {
             $paymentRecord = Zend_Json::decode($paymentRecord);
         }
         if (!is_array($donationData)) {
             $donationData = Zend_Json::decode($donationData);
         }
         $payment = Billing_Controller_Payment::getInstance()->getEmptyPayment();
         if (array_key_exists('id', $paymentRecord)) {
             unset($paymentRecord['id']);
         }
         $payment->setFromArray($paymentRecord);
         $paymentAmount = $payment->__get('amount');
         $donationAmount = $donationData['donation_amount'];
         if (count($data) > 0) {
             if ($donationAmount > 0) {
                 $paymentAmount -= min($donationAmount, $paymentAmount);
                 $payment->__set('amount', $paymentAmount);
             }
             $payment = Billing_Controller_Payment::getInstance()->create($payment);
             $paymentId = $payment->getId();
             foreach ($data as $item) {
                 $this->payOpenItem($item['id'], $payment, $item['amount']);
                 $paymentAmount -= $item['amount'];
             }
         }
         // if donation should be made
         if (is_array($donationData) && array_key_exists('donation_amount', $donationData)) {
             if ($donationAmount > 0) {
                 $payment2 = clone $payment;
                 $payment2->__set('id', null);
                 $payment2->__set('amount', $donationAmount);
                 $payment2->__set('erp_context_id', 'DONATOR');
                 $payment2 = Billing_Controller_Payment::getInstance()->create($payment2);
                 $paymentDebitor = $payment2->getForeignRecord('debitor_id', Billing_Controller_Debitor::getInstance());
                 $contactId = $paymentDebitor->getForeignId('contact_id');
                 $campaignId = $donationData['campaign'];
                 $usage = 'Spende Adress-Nr: ' . $paymentDebitor->__get('debitor_nr');
                 $date = $payment->__get('payment_date');
                 $donation = Donator_Controller_FundMaster::getInstance()->donateByContactId($contactId, $donationAmount, $campaignId, $date, $usage, $payment2);
             }
         }
         return array('success' => true, 'payment' => $payment->toArray());
     } catch (Exception $e) {
         return array('success' => false, 'payment' => null, 'errorInfo' => $e->getTrace(), 'errorMessage' => $e->getMessage());
     }
 }
Esempio n. 9
0
 public function runBookingQueue($jobId, $dueDate)
 {
     set_time_limit(0);
     $job = Billing_Api_BatchJobManager::getInstance()->loadBatchJob($jobId);
     Billing_Api_BatchJobManager::getInstance()->startBatchJob();
     try {
         //$dueDate = '2014-03-11';
         $dueDate = new Zend_Date($dueDate);
         $db = Tinebase_Core::getDb();
         $tm = Tinebase_TransactionManager::getInstance();
         $tId = $tm->startTransaction($db);
         $data = $job->getData();
         $pagination = new Tinebase_Model_Pagination();
         $filters = array();
         // get all open items (for debit)
         // grouped by debitors
         $filters[] = array('field' => 'job_id', 'operator' => 'equals', 'value' => $job->getId());
         $filters[] = array('field' => 'action_state', 'operator' => 'equals', 'value' => 'EXPORTED');
         $filter = new Billing_Model_BatchJobDtaFilter($filters, 'AND');
         // count membership matching filters
         $batchJobDtaIds = $this->search($filter, new Tinebase_Model_Pagination(array('sort' => 'n_family', 'dir' => 'ASC')), false, true);
         foreach ($batchJobDtaIds as $batchJobDtaId) {
             $batchJobDta = $this->get($batchJobDtaId);
             // keep out item which are diffed
             if ($batchJobDta->__get('bank_valid') != 'YES' || abs((double) $batchJobDta->__get('total_sum')) == 0) {
                 continue;
             }
             //$bankAccount = Billing_Api_BankAccount::getFromBatchJobDta($batchJobDta);
             $bankAccount = $batchJobDta->getBankAccount();
             if (is_null($bankAccount)) {
                 continue;
             }
             $batchJobDtaItems = Billing_Controller_BatchJobDtaItem::getInstance()->getByBatchJobDtaId($batchJobDtaId);
             $usage = array();
             $contactNr = $batchJobDta->getForeignId('contact_id');
             $usage[] = 'Adr.Nr ' . $contactNr;
             $payment = Billing_Model_Payment::createDebitFromDta($batchJobDtaId, $batchJobDta->getForeignId('debitor_id'), new Zend_Date($dueDate), $batchJobDta->__get('total_sum'), 'DEBIT', 'ERP');
             $this->extractUsageFromDtaItems($batchJobDtaItems, $usage, $contexts, $aReceiptIds);
             $paymentAmount = $batchJobDta->getTotalSum();
             $sumOfPayment += $paymentAmount;
             if (is_array($usage)) {
                 $usage = join(' ', $usage);
             }
             // booking: LS-Verrechnung AN Forderungen
             $soll = Tinebase_Core::getPreference('Billing')->getValue(Billing_Preference::FIBU_KTO_DTA_SETTLE);
             $haben = Tinebase_Core::getPreference('Billing')->getValue(Billing_Preference::FIBU_KTO_DEBITOR);
             $payment->setCreditAccount($haben);
             $payment->setDebitAccount($soll);
             $countPos = count($batchJobDtaItems);
             $payment->setUsage('LS-Einzug Anz.Pos: ' . $countPos . ' Summe:' . number_format($batchJobDta->__get('total_sum'), 2) . ' ' . $usage);
             $payment = Billing_Controller_Payment::getInstance()->create($payment);
             foreach ($batchJobDtaItems as $batchJobDtaItem) {
                 $openItem = $batchJobDtaItem->getForeignRecordBreakNull('open_item_id', Billing_Controller_OpenItem::getInstance());
                 if ($openItem) {
                     $openItem->__set('banking_exp_date', new Zend_Date($dueDate));
                     Billing_Controller_OpenItem::getInstance()->payOpenItem($openItem->getId(), $payment, $openItem->__get('open_sum'));
                 }
             }
             $batchJobDta->__set('action_state', 'DONE');
             $batchJobDta->__set('process_datetime', Zend_Date::now());
             $batchJobDta->__set('processed_by_user', Tinebase_Core::get(Tinebase_Core::USER)->getId());
             $this->update($batchJobDta);
         }
         Billing_Api_BatchJobManager::getInstance()->finish();
         $tm->commitTransaction($tId);
     } catch (Exception $e) {
         $tm->rollback($tId);
         Billing_Api_BatchJobManager::getInstance()->finishError($e->__toString());
         return array('state' => 'failure', 'result' => null, 'errorInfo' => array('message' => $e->getMessage(), 'trace' => $e->getTrace()));
     }
 }