public function editPricesObject($a_show_delete = false)
 {
     /** 
      * @var $ilToolbar ilToolbarGUI
      * */
     global $ilToolbar;
     if ($a_show_delete == false) {
         unset($_SESSION['price_ids']);
     }
     $_SESSION['price_ids'] = $_SESSION['price_ids'] ? $_SESSION['price_ids'] : array();
     if (!$_GET['pobject_id']) {
         ilUtil::sendInfo($this->lng->txt('paya_no_object_selected'));
         $this->objectsObject();
         return true;
     }
     $this->ctrl->setParameter($this, 'pobject_id', (int) $_GET['pobject_id']);
     $ilToolbar->addButton($this->lng->txt('back'), $this->ctrl->getLinkTarget($this, 'objects'));
     $ilToolbar->addButton($this->lng->txt('paya_edit_details'), $this->ctrl->getLinkTarget($this, 'editDetails'));
     $ilToolbar->addButton($this->lng->txt('paya_edit_prices'), $this->ctrl->getLinkTarget($this, 'editPrices'));
     $ilToolbar->addButton($this->lng->txt('pay_edit_abstract'), $this->ctrl->getLinkTargetByClass(array('ilshoppagegui'), 'edit'));
     $this->__initPaymentObject((int) $_GET['pobject_id']);
     $this->tpl->addBlockfile('ADM_CONTENT', 'adm_content', 'tpl.main_view.html', 'Services/Payment');
     $price_obj = new ilPaymentPrices((int) $_GET['pobject_id']);
     $standard_prices = array();
     $extension_prices = array();
     $standard_prices = $price_obj->getPrices();
     $extension_prices = $price_obj->getExtensionPrices();
     $prices = array_merge($standard_prices, $extension_prices);
     // No prices created
     if (!count($prices)) {
         ilUtil::sendInfo($this->lng->txt('paya_no_price_available'));
         $ilToolbar->addButton($this->lng->txt('paya_add_price'), $this->ctrl->getLinkTarget($this, 'addPrice'));
         return true;
     }
     // Show confirm delete
     if ($a_show_delete) {
         $oConfirmationGUI = new ilConfirmationGUI();
         // set confirm/cancel commands
         $oConfirmationGUI->setFormAction($this->ctrl->getFormAction($this, "performDeletePrice"));
         $oConfirmationGUI->setHeaderText($this->lng->txt("paya_sure_delete_selected_prices"));
         $oConfirmationGUI->setCancel($this->lng->txt("cancel"), "editPrices");
         $oConfirmationGUI->setConfirm($this->lng->txt("confirm"), "performDeletePrice");
         foreach ($prices as $price) {
             $delete_row = '';
             $tmp_price = '';
             if (in_array($price['price_id'], $_SESSION['price_ids'])) {
                 switch ($price['price_type']) {
                     case ilPaymentPrices::TYPE_DURATION_DATE:
                         include_once './Services/Calendar/classes/class.ilDatePresentation.php';
                         $tmp_price = ilDatePresentation::formatDate(new ilDate($price['duration_from'], IL_CAL_DATE)) . ' - ' . ilDatePresentation::formatDate(new ilDate($price['duration_until'], IL_CAL_DATE));
                         break;
                     case ilPaymentPrices::TYPE_DURATION_MONTH:
                         $tmp_price = $price['duration'] . ' ' . $this->lng->txt('paya_months');
                         break;
                     case ilPaymentPrices::TYPE_UNLIMITED_DURATION:
                         $tmp_price = $this->lng->txt('unlimited_duration');
                         break;
                 }
                 $delete_row .= '' . $tmp_price . '  ->  ' . ilFormat::_getLocalMoneyFormat($price['price']) . ' ' . $this->genSetData->get('currency_unit');
                 $oConfirmationGUI->addItem('', $delete_row, $delete_row);
             }
         }
         $this->tpl->setVariable('CONFIRMATION', $oConfirmationGUI->getHTML());
         return true;
     }
     // Fill table cells
     /** 
      * @var object $tpl ilTemplate 
      */
     $tpl = new ilTemplate('tpl.table.html', true, true);
     // set table header
     $tpl->setCurrentBlock('tbl_form_header');
     $tpl->setVariable('FORMACTION', $this->ctrl->getFormAction($this));
     $tpl->parseCurrentBlock();
     $counter = 0;
     $data = array();
     foreach ($prices as $price) {
         $data[$counter]['price_id'] = ilUtil::formCheckBox(in_array($price['price_id'], $_SESSION['price_ids']) ? 1 : 0, 'price_ids[]', $price['price_id']);
         switch ($price['price_type']) {
             case ilPaymentPrices::TYPE_DURATION_MONTH:
                 $data[$counter]['duration'] = $price['duration'] . ' ' . $this->lng->txt('paya_months');
                 break;
             case ilPaymentPrices::TYPE_DURATION_DATE:
                 $data[$counter]['duration'] = ilDatePresentation::formatDate(new ilDate($price['duration_from'], IL_CAL_DATE)) . ' - ' . ilDatePresentation::formatDate(new ilDate($price['duration_until'], IL_CAL_DATE));
                 break;
             case ilPaymentPrices::TYPE_UNLIMITED_DURATION:
                 $data[$counter]['duration'] = $this->lng->txt('unlimited_duration');
                 break;
         }
         $data[$counter]['price'] = ilFormat::_getLocalMoneyFormat($price['price']);
         $data[$counter]['currency_unit'] = $this->genSetData->get('currency_unit');
         $data[$counter]['extension'] = ilUtil::formCheckBox($price['extension'] ? 1 : 0, 'extension_ids[]', (int) $price['price_id'], true);
         $this->ctrl->setParameter($this, "price_id", $price['price_id']);
         $data[$counter]['edit'] = "<div class=\"il_ContainerItemCommands\"><a class=\"il_ContainerItemCommand\" href=\"" . $this->ctrl->getLinkTarget($this, "editPrice") . "\">" . $this->lng->txt("edit") . "</a></div>";
         ++$counter;
     }
     $this->__editPricesTable($data);
     return true;
 }
 public function showStatistics()
 {
     global $rbacsystem, $ilToolbar, $ilObjDataCache;
     // MINIMUM ACCESS LEVEL = 'read'
     /*	if(!$rbacsystem->checkAccess('read', $this->getRefId()))
     		{
     			$this->ilias->raiseError($this->lng->txt('msg_no_perm_read'),$this->ilias->error_obj->MESSAGE);
     		}
     	*/
     $ilToolbar->addButton($this->lng->txt('paya_add_customer'), $this->ctrl->getLinkTarget($this, 'showObjectSelector'));
     if (!$_POST['show_filter'] && $_POST['updateView'] == '1') {
         $this->resetFilter();
     } else {
         if ($_POST['updateView'] == 1) {
             $_SESSION['pay_statistics']['show_filter'] = $_POST['show_filter'];
             $_SESSION['pay_statistics']['updateView'] = true;
             $_SESSION['pay_statistics']['until_check'] = $_POST['until_check'];
             $_SESSION['pay_statistics']['from_check'] = $_POST['from_check'];
             $_SESSION['pay_statistics']['transaction_type'] = isset($_POST['transaction_type']) ? $_POST['transaction_type'] : '';
             $_SESSION['pay_statistics']['transaction_value'] = isset($_POST['transaction_value']) ? $_POST['transaction_value'] : '';
             $_SESSION['pay_statistics']['filter_title_id'] = (int) $_POST['filter_title_id'];
             if ($_SESSION['pay_statistics']['from_check'] == '1') {
                 $_SESSION['pay_statistics']['from']['date']['d'] = $_POST['from']['date']['d'];
                 $_SESSION['pay_statistics']['from']['date']['m'] = $_POST['from']['date']['m'];
                 $_SESSION['pay_statistics']['from']['date']['y'] = $_POST['from']['date']['y'];
             } else {
                 $_SESSION['pay_statistics']['from']['date']['d'] = '';
                 $_SESSION['pay_statistics']['from']['date']['m'] = '';
                 $_SESSION['pay_statistics']['from']['date']['y'] = '';
             }
             if ($_SESSION['pay_statistics']['until_check'] == '1') {
                 $_SESSION['pay_statistics']['til']['date']['d'] = $_POST['til']['date']['d'];
                 $_SESSION['pay_statistics']['til']['date']['m'] = $_POST['til']['date']['m'];
                 $_SESSION['pay_statistics']['til']['date']['y'] = $_POST['til']['date']['y'];
             } else {
                 $_SESSION['pay_statistics']['til']['date']['d'] = '';
                 $_SESSION['pay_statistics']['til']['date']['m'] = '';
                 $_SESSION['pay_statistics']['til']['date']['y'] = '';
             }
             $_SESSION['pay_statistics']['payed'] = $_POST['payed'];
             $_SESSION['pay_statistics']['access'] = $_POST['access'];
             $_SESSION['pay_statistics']['pay_method'] = $_POST['pay_method'];
             $_SESSION['pay_statistics']['customer'] = isset($_POST['customer']) ? $_POST['customer'] : '';
             $_SESSION['pay_statistics']['vendor'] = isset($_POST['vendor']) ? $_POST['vendor'] : '';
         }
     }
     $this->tpl->addBlockfile('ADM_CONTENT', 'adm_content', 'tpl.main_view.html', 'Services/Payment');
     include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
     // FILTER FORM
     $filter_form = new ilPropertyFormGUI();
     $filter_form->setFormAction($this->ctrl->getFormAction($this));
     $filter_form->setTitle($this->lng->txt('pay_filter'));
     $filter_form->setId('formular');
     $filter_form->setTableWidth('100 %');
     $o_hide_check = new ilCheckBoxInputGUI($this->lng->txt('show_filter'), 'show_filter');
     $o_hide_check->setValue(1);
     $o_hide_check->setChecked($_SESSION['pay_statistics']['show_filter'] ? 1 : 0);
     $o_hidden = new ilHiddenInputGUI('updateView');
     $o_hidden->setValue(1);
     $o_hidden->setPostVar('updateView');
     $o_hide_check->addSubItem($o_hidden);
     $o_transaction_type = new ilSelectInputGUI();
     $trans_option = array($this->lng->txt('pay_starting'), $this->lng->txt('pay_ending'));
     $trans_value = array('0', '1');
     $o_transaction_type->setTitle($this->lng->txt('paya_transaction'));
     $o_transaction_type->setOptions($trans_option);
     $o_transaction_type->setValue($_SESSION['pay_statistics']['transaction_type']);
     $o_transaction_type->setPostVar('transaction_type');
     $o_hide_check->addSubItem($o_transaction_type);
     $o_transaction_val = new ilTextInputGUI();
     $o_transaction_val->setValue($_SESSION['pay_statistics']['transaction_value']);
     $o_transaction_val->setPostVar('transaction_value');
     $o_hide_check->addSubItem($o_transaction_val);
     $o_customer = new ilTextInputGUI();
     $o_customer->setTitle($this->lng->txt('paya_customer'));
     $o_customer->setValue($_SESSION['pay_statistics']['customer']);
     $o_customer->setPostVar('customer');
     $o_hide_check->addSubItem($o_customer);
     $o_vendor = new ilTextInputGUI();
     $o_vendor->setTitle($this->lng->txt('paya_vendor'));
     $o_vendor->setValue($_SESSION['pay_statistics']['vendor']);
     $o_vendor->setPostVar('vendor');
     $o_hide_check->addSubItem($o_vendor);
     $o_from_check = new ilCheckBoxInputGUI($this->lng->txt('pay_order_date_from'), 'from_check');
     $o_from_check->setValue(1);
     $o_from_check->setChecked($_SESSION['pay_statistics']['from_check'] ? 1 : 0);
     $o_date_from = new ilDateTimeInputGUI();
     $o_date_from->setPostVar('from');
     $_POST['from'] = $_SESSION['pay_statistics']['from'];
     if ($_SESSION['pay_statistics']['from_check'] == '1') {
         $o_date_from->checkInput();
     }
     $o_from_check->addSubItem($o_date_from);
     $o_hide_check->addSubItem($o_from_check);
     $o_until_check = new ilCheckBoxInputGUI($this->lng->txt('pay_order_date_til'), 'until_check');
     $o_until_check->setValue(1);
     $o_until_check->setChecked($_SESSION['pay_statistics']['until_check'] ? 1 : 0);
     $o_date_until = new ilDateTimeInputGUI();
     $o_date_until->setPostVar('til');
     $_POST['til'] = $_SESSION['pay_statistics']['til'];
     if ($_SESSION['pay_statistics']['until_check'] == '1') {
         $o_date_until->checkInput();
     }
     $o_until_check->addSubItem($o_date_until);
     $o_hide_check->addSubItem($o_until_check);
     // title filter
     $this->__initBookingObject();
     $title_options['all'] = $this->lng->txt('pay_all');
     $unique_titles = $this->booking_obj->getUniqueTitles();
     if (is_array($unique_titles) && count($unique_titles)) {
         foreach ($unique_titles as $ref_id) {
             $title_options[$ref_id] = $ilObjDataCache->lookupTitle($ilObjDataCache->lookupObjId($ref_id));
         }
     }
     $o_object_title = new ilSelectInputGUI();
     $o_object_title->setTitle($this->lng->txt('title'));
     $o_object_title->setOptions($title_options);
     $o_object_title->setValue($_SESSION["pay_statistics"]["filter_title_id"]);
     $o_object_title->setPostVar('filter_title_id');
     $o_hide_check->addSubItem($o_object_title);
     $o_payed = new ilSelectInputGUI();
     $payed_option = array('all' => $this->lng->txt('pay_all'), '1' => $this->lng->txt('yes'), '0' => $this->lng->txt('no'));
     $o_payed->setTitle($this->lng->txt('paya_payed'));
     $o_payed->setOptions($payed_option);
     $o_payed->setValue($_SESSION['pay_statistics']['payed']);
     $o_payed->setPostVar('payed');
     $o_hide_check->addSubItem($o_payed);
     $o_access = new ilSelectInputGUI();
     $access_option = array('all' => $this->lng->txt('pay_all'), '1' => $this->lng->txt('yes'), '0' => $this->lng->txt('no'));
     $o_access->setTitle($this->lng->txt('paya_access'));
     $o_access->setOptions($access_option);
     $o_access->setValue($_SESSION['pay_statistics']['access']);
     $o_access->setPostVar('access');
     $o_hide_check->addSubItem($o_access);
     $o_paymethod = new ilSelectInputGUI();
     $o_paymethod->setTitle($this->lng->txt('payment_system'));
     $o_paymethod->setOptions(ilPayMethods::getPayMethodsOptions('all'));
     $o_paymethod->setValue($_SESSION['pay_statistics']['pay_method']);
     $o_paymethod->setPostVar('pay_method');
     $o_hide_check->addSubItem($o_paymethod);
     $filter_form->addCommandButton('showStatistics', $this->lng->txt('pay_update_view'));
     $filter_form->addCommandButton('resetFilter', $this->lng->txt('pay_reset_filter'));
     $filter_form->addItem($o_hide_check);
     $this->tpl->setVariable('FORM', $filter_form->getHTML());
     // STATISTICS TABLE
     $this->__initBookingObject();
     if (!count($bookings = $this->booking_obj->getBookings())) {
         ilUtil::sendInfo($this->lng->txt('paya_no_bookings'));
         return true;
     }
     #		$this->__showButton('excelExport',$this->lng->txt('excel_export'));
     include_once 'Services/User/classes/class.ilObjUser.php';
     $object_title_cache = array();
     $user_title_cache = array();
     $counter = 0;
     foreach ($bookings as $booking) {
         if (array_key_exists($booking['ref_id'], $object_title_cache)) {
             $tmp_obj = $object_title_cache[$booking['ref_id']];
         } else {
             $tmp_obj = ilObject::_lookupTitle(ilObject::_lookupObjId($booking['ref_id']));
             $object_title_cache[$booking['ref_id']] = $tmp_obj;
         }
         if (array_key_exists($booking['b_vendor_id'], $user_title_cache)) {
             $tmp_vendor = $user_title_cache[$booking['b_vendor_id']];
         } else {
             $tmp_vendor = ilObjUser::_lookupLogin($booking['b_vendor_id']);
             $user_title_cache[$booking['b_vendor_id']] = $tmp_vendor;
         }
         if (array_key_exists($booking['customer_id'], $user_title_cache)) {
             $tmp_purchaser = $user_title_cache[$booking['customer_id']];
         } else {
             $tmp_purchaser = ilObjUser::_lookupLogin($booking['customer_id']);
             $user_title_cache[$booking['customer_id']] = $tmp_purchaser;
         }
         $transaction = $booking['transaction_extern'];
         $str_paymethod = ilPayMethods::getStringByPaymethod($booking['b_pay_method']);
         $transaction .= " (" . $str_paymethod . ")";
         $f_result[$counter]['transaction'] = $transaction;
         $f_result[$counter]['object_title'] = $tmp_obj != '' ? $tmp_obj : $this->lng->txt('object_deleted');
         $f_result[$counter]['vendor'] = $tmp_vendor != '' ? '[' . $tmp_vendor . ']' : $this->lng->txt('user_deleted');
         $f_result[$counter]['customer'] = $tmp_purchaser != '' ? '[' . $tmp_purchaser . ']' : $this->lng->txt('user_deleted');
         $f_result[$counter]['order_date'] = ilDatePresentation::formatDate(new ilDateTime($booking['order_date'], IL_CAL_UNIX));
         if ($booking['duration'] == 0) {
             $booking['duration'] = $this->lng->txt('unlimited_duration');
         }
         $f_result[$counter]['duration'] = $booking['duration'];
         $f_result[$counter]['price'] = ilFormat::_getLocalMoneyFormat($booking['price']) . ' ' . $booking['currency_unit'];
         $f_result[$counter]['discount'] = $booking['discount'] . ' ' . $booking['currency_unit'];
         $payed_access = $booking['payed'] ? $this->lng->txt('yes') : $this->lng->txt('no');
         $payed_access .= '/';
         $payed_access .= $booking['access_granted'] ? $this->lng->txt('yes') : $this->lng->txt('no');
         $f_result[$counter]['payed_access'] = $payed_access;
         $this->ctrl->setParameter($this, "booking_id", $booking['booking_id']);
         $link_change = "<div class=\"il_ContainerItemCommands\"><a class=\"il_ContainerItemCommand\" href=\"" . $this->ctrl->getLinkTarget($this, "editStatistic") . "\">" . $this->lng->txt("edit") . "</a></div>";
         $f_result[$counter]['edit'] = $link_change;
         unset($tmp_obj);
         unset($tmp_vendor);
         unset($tmp_purchaser);
         ++$counter;
     }
     return $this->__showStatisticTable($f_result);
 }