Beispiel #1
0
 protected function get_persons_graph_drilldown_json($person_id, $filter_orderby)
 {
     $operations = new Operation();
     $operations->select('*');
     $operations->where_related_person('id', (int) $person_id);
     $operations->order_by('created', 'asc');
     $operations->include_related('product_quantity');
     $operations->include_related('product_quantity/product');
     $operations->include_related('service_usage');
     $operations->include_related('service_usage/service');
     $operations->get_iterated();
     $series = array();
     $days = array();
     $days_plus_amount = array();
     $days_minus_amount = array();
     $current_day_index = '';
     foreach ($operations as $operation) {
         $day_index = date('d.m.Y', strtotime($operation->created));
         if ($day_index != $current_day_index) {
             $days_plus_amount[$day_index] = 0;
             $days_minus_amount[$day_index] = 0;
             $days[] = $day_index;
             $current_day_index = $day_index;
         }
         if ($operation->type == Operation::TYPE_ADDITION && (int) $operation->amount > 0) {
             $days_plus_amount[$day_index] += (double) $operation->amount;
         } elseif ($operation->type == Operation::TYPE_SUBTRACTION) {
             if ($operation->subtraction_type == Operation::SUBTRACTION_TYPE_DIRECT && (double) $operation->amount > 0) {
                 $days_minus_amount[$day_index] += (double) $operation->amount;
             } elseif ($operation->subtraction_type == Operation::SUBTRACTION_TYPE_PRODUCTS && !is_null($operation->product_quantity_id) && !is_null($operation->product_quantity_product_id) && (double) $operation->product_quantity_quantity * (double) $operation->product_quantity_price > 0) {
                 $days_minus_amount[$day_index] += (double) $operation->product_quantity_quantity * (double) $operation->product_quantity_price;
             } elseif ($operation->subtraction_type == Operation::SUBTRACTION_TYPE_SERVICES && !is_null($operation->service_usage_id) && !is_null($operation->service_usage_service_id) && (double) $operation->service_usage_quantity * (double) $operation->service_usage_price > 0) {
                 $days_minus_amount[$day_index] += (double) $operation->service_usage_quantity * (double) $operation->service_usage_price;
             }
         }
     }
     $total_plus = 0;
     $total_minus = 0;
     $series_item_start = new stdClass();
     $series_item_start->name = 'Začiatok sústredenia';
     $series_item_start->y = 0;
     $series[] = $series_item_start;
     if (count($days) > 0) {
         foreach ($days as $day) {
             $series_item = new stdClass();
             $series_item->name = $day;
             if ($filter_orderby == 'amount_left') {
                 $total_plus += $days_plus_amount[$day];
                 $total_minus += $days_minus_amount[$day];
                 $series_item->y = $total_plus - $total_minus;
             } elseif ($filter_orderby == 'amount_acquired') {
                 $series_item->y = $days_plus_amount[$day];
             } else {
                 $series_item->y = $days_minus_amount[$day];
             }
             if ($series_item->y > 0 || $filter_orderby == 'amount_left') {
                 $series[] = $series_item;
             }
         }
     }
     $series_item_end = new stdClass();
     $series_item_end->name = 'Koniec sústredenia';
     $series_item_end->y = 0;
     $series[] = $series_item_end;
     return $series;
 }
 public function transactions($person_id = NULL, $page_size = 20, $page = 1)
 {
     if (is_null($person_id)) {
         add_error_flash_message('Osoba sa nenašla.');
         redirect(site_url('operations'));
     }
     $person = new Person();
     $person->where('admin', 0);
     $person->get_by_id((int) $person_id);
     if (!$person->exists()) {
         add_error_flash_message('Osoba sa nenašla.');
         redirect(site_url('operations'));
     }
     $operations = new Operation();
     $operations->where_related_person($person);
     $operations->include_related('admin', array('name', 'surname'));
     $operations->include_related('workplace', 'title');
     $operations->order_by('created', 'desc');
     $operations->get_paged_iterated($page, $page_size);
     $this->parser->parse('web/controllers/operations/transactions.tpl', array('person' => $person, 'operations' => $operations, 'title' => 'Administrácia / LEDCOIN / Prehľad transakcií / ' . $person->name . ' ' . $person->surname, 'back_url' => site_url('operations'), 'form' => $this->get_transaction_pagination_form($operations->paged)));
 }