objects = array(); $query = 'select distinct id_invoice from rent_invoices join rent_accounts_invoices on account_invoice_num_invoice = id_invoice join rent_accounts on id_account = account_invoice_num_account'; $query .= $this->_get_query_filters(); $result = pmb_mysql_query($query); if (pmb_mysql_num_rows($result)) { while($row = pmb_mysql_fetch_object($result)) { $this->objects[] = new rent_invoice($row->id_invoice); } $this->pager['nb_results'] = count($this->objects); } $this->messages = ""; } /** * Initialisation des filtres de recherche */ public function init_filters($filters=array()) { $id_entity = entites::getSessionBibliId(); $query = exercices::listByEntite($id_entity); $result = pmb_mysql_query($query); $id_exercice = 0; if($result && pmb_mysql_num_rows($result)) { $id_exercice = pmb_mysql_result($result, 0, 'id_exercice'); } $this->filters = array( 'id_entity' => $id_entity, 'id_exercice' => $id_exercice, 'id_type' => '', 'num_publisher' => '', 'num_supplier' => '', 'num_pricing_system' => '', 'status' => 0, 'date_start' => '', 'date_end' => '' ); foreach ($this->filters as $key => $val){ if(isset($_SESSION['rent_'.$this->objects_type.'_filter'][$key])) { $this->filters[$key] = $_SESSION['rent_'.$this->objects_type.'_filter'][$key]; } } if(count($filters)){ foreach ($filters as $key => $val){ $this->filters[$key]=$val; } } } /** * Filtres provenant du formulaire */ public function set_filters_from_form() { global $invoices_search_form_entities; global $invoices_search_form_exercices; global $invoices_search_form_types; global $invoices_search_form_num_publisher; global $invoices_search_form_num_supplier; global $invoices_search_form_status; global $invoices_search_form_date_start; global $invoices_search_form_date_end; if(isset($invoices_search_form_entities)) { $this->filters['id_entity'] = $invoices_search_form_entities*1; } if(isset($invoices_search_form_exercices)) { $this->filters['id_exercice'] = $invoices_search_form_exercices*1; } if(isset($invoices_search_form_types)) { $this->filters['id_type'] = $invoices_search_form_types; } if(isset($invoices_search_form_num_publisher)) { $this->filters['num_publisher'] = $invoices_search_form_num_publisher*1; } if(isset($invoices_search_form_num_supplier)) { $this->filters['num_supplier'] = $invoices_search_form_num_supplier*1; } if(isset($invoices_search_form_status)) { $this->filters['status'] = $invoices_search_form_status*1; } if(isset($invoices_search_form_date_start)) { $this->filters['date_start'] = stripslashes($invoices_search_form_date_start); } if(isset($invoices_search_form_date_end)) { $this->filters['date_end'] = stripslashes($invoices_search_form_date_end); } //Sauvegarde des filtres en session $this->set_filter_in_session(); } /** * Affichage du formulaire de recherche */ public function get_search_form() { global $msg, $charset; global $rent_invoices_search_form_tpl; $search_form = $rent_invoices_search_form_tpl; $search_form = str_replace('!!form_title!!', htmlentities($msg['search'], ENT_QUOTES, $charset).' : '.htmlentities($msg['acquisition_rent_invoices'], ENT_QUOTES, $charset), $search_form); $search_form = str_replace('!!selector_entities!!', entites::getBibliHtmlSelect(SESSuserid, $this->filters['id_entity'], false, array('id' => 'invoices_search_form_entities', 'name' => 'invoices_search_form_entities', 'onchange'=>'account_load_exercices(this.value);')), $search_form); $search_form = str_replace('!!selector_exercices!!', static::gen_selector_exercices($this->filters['id_entity'], 'invoices', $this->filters['id_exercice']), $search_form); $invoice_types = new marc_select('rent_account_type', 'invoices_search_form_types', $this->filters['id_type'], '', 0, $msg['acquisition_account_type_select_all']); $search_form = str_replace('!!selector_types!!', $invoice_types->display, $search_form); $search_form = str_replace('!!num_publisher!!', $this->filters['num_publisher'], $search_form); if($this->filters['num_publisher']) { $publisher = new editeur($this->filters['num_publisher']); $search_form = str_replace('!!publisher!!', $publisher->display, $search_form); } else { $search_form = str_replace('!!publisher!!', '', $search_form); } $search_form = str_replace('!!num_supplier!!', $this->filters['num_supplier'], $search_form); if($this->filters['num_supplier']) { $supplier = new entites($this->filters['num_supplier']); $search_form = str_replace('!!supplier!!', $supplier->raison_sociale, $search_form); } else { $search_form = str_replace('!!supplier!!', '', $search_form); } $search_form = str_replace('!!selector_status!!', $this->get_selector_status($this->filters['status']), $search_form); $search_form = str_replace('!!date_start!!', $this->filters['date_start'], $search_form); $search_form = str_replace('!!date_end!!', $this->filters['date_end'], $search_form); $search_form = str_replace('!!json_filters!!', json_encode($this->filters), $search_form); $search_form = str_replace('!!page!!', $this->pager['page'], $search_form); $search_form = str_replace('!!nb_per_page!!', $this->pager['nb_per_page'], $search_form); $search_form = str_replace('!!pager!!', json_encode($this->pager), $search_form); $search_form = str_replace('!!messages!!', $this->get_messages(), $search_form); return $search_form; } protected function get_selector_status($status=0){ global $msg; return ''; } /** * Filtre SQL */ protected function _get_query_filters() { $filter_query = ''; $this->set_filters_from_form(); $filters = array(); $filters[] = 'account_num_exercice = "'.$this->filters['id_exercice'].'"'; if($this->filters['id_type']) { $filters [] = 'account_type = "'.$this->filters['id_type'].'"'; } if($this->filters['num_publisher']) { $filters [] = 'account_num_publisher = "'.$this->filters['num_publisher'].'"'; } if($this->filters['num_supplier']) { $filters [] = 'account_num_supplier = "'.$this->filters['num_supplier'].'"'; } if($this->filters['num_pricing_system']) { $filters [] = 'account_num_pricing_system = "'.$this->filters['num_pricing_system'].'"'; } if($this->filters['status']) { $filters [] = 'invoice_status = "'.$this->filters['status'].'"'; } if($this->filters['date_start']) { $filters [] = 'invoice_date >= "'.$this->filters['date_start'].'"'; } if($this->filters['date_end']) { $filters [] = 'invoice_date <= "'.$this->filters['date_end'].' 23:59:59"'; } $filter_query .= ' where '.implode(' and ', $filters); return $filter_query; } /** * Fonction de callback * @param invoice $a * @param invoice $b */ protected function _compare_objects($a, $b) { global $sort_by; if($sort_by) { switch($sort_by) { case 'num_user' : return strcmp($a->get_user()->prenom.' '.$a->get_user()->nom, $b->get_user()->prenom.' '.$b->get_user()->nom); break; case 'num_publisher' : return strcmp((count($a->get_accounts()) ? $a->get_accounts()[0]->get_publisher()->display : ''), (count($b->get_accounts()) ? $b->get_accounts()[0]->get_publisher()->display : '')); break; case 'num_supplier' : return strcmp((count($a->get_accounts()) ? $a->get_accounts()[0]->get_supplier()->raison_sociale : ''), (count($b->get_accounts()) ? $b->get_accounts()[0]->get_supplier()->raison_sociale : '')); break; case 'id' : return $this->intcmp($a->get_id(), $b->get_id()); break; default : return strcmp($a->{'get_'.$sort_by}(), $b->{'get_'.$sort_by}()); break; } } } /** * Liste des décomptes */ public function get_display_content_list() { global $id_bibli; $display = ''; $parity=1; if(count($this->objects)) { $marclist = new marc_list('rent_destination'); foreach ($this->objects as $invoice) { if ($parity % 2) { $pair_impair = "even"; } else { $pair_impair = "odd"; } $parity++; $td_javascript= " onmouseover=\"this.className='surbrillance'\" onmouseout=\"this.className='$pair_impair'\" onmousedown=\"document.location='./acquisition.php?categ=rent&sub=invoices&action=edit&id_bibli=".$id_bibli."&id=".$invoice->get_id()."';\" "; $display .= "